Skip to content

Commit

Permalink
validate owner when create treasury or update treasury
Browse files Browse the repository at this point in the history
  • Loading branch information
m1n999999 committed Aug 3, 2024
1 parent 35e3f99 commit f7584f8
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 12 deletions.
16 changes: 13 additions & 3 deletions lib/lb_v2/treasury_validation.ak
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
use aiken/builtin
use aiken/dict
use aiken/hash
use aiken/transaction.{DatumHash, InlineDatum, NoDatum, Output}
use aiken/transaction.{DatumHash, InlineDatum, Input, NoDatum, Output}
use aiken/transaction/credential.{Address}
use aiken/transaction/value.{
AssetName, PolicyId, Value, ada_asset_name, ada_policy_id,
}
use lb_v2/types.{
Asset, CustomDatumHash, DatumMap, PenaltyConfig, PoolDatum, RDatumHash,
RInlineDatum, RNoDatum, TreasuryDatum, ValidatorHash,
Asset, CustomDatumHash, DatumMap, PenaltyConfig, PoolDatum, PubKeyHash,
RDatumHash, RInlineDatum, RNoDatum, TreasuryDatum, ValidatorHash,
}
use lb_v2/utils.{
amm_authen_policy_id, amm_factory_auth_asset_name, amm_pool_auth_asset_name,
create_pool_comission, default_burn_liquidity, max_base_fee_numerator,
max_penalty, min_base_fee_numerator, min_pool_allocation, one_month_ms,
treasury_auth_an, treasury_minimum_ada, two_day_ms,
}
use lb_v2/validation.{validate_authorize_by_owner}

pub fn validate_creating_treasury_out(
treasury_out: Output,
Expand All @@ -26,6 +28,8 @@ pub fn validate_creating_treasury_out(
factory_policy_id: PolicyId,
end_valid_time_range: Int,
datums: DatumMap,
extra_signatories: List<PubKeyHash>,
inputs: List<Input>,
) -> Bool {
expect Output {
value: treasury_out_value,
Expand Down Expand Up @@ -56,6 +60,7 @@ pub fn validate_creating_treasury_out(
total_penalty,
is_cancelled,
is_manager_collected,
owner: Address { payment_credential: owner_payment_credential, .. },
..
} = treasury_out_datum
let Asset { policy_id: base_asset_pid, asset_name: base_asset_an } =
Expand Down Expand Up @@ -130,6 +135,11 @@ pub fn validate_creating_treasury_out(
is_manager_collected == False,
// treasury value
treasury_out_value == expected_treasury_out_value,
validate_authorize_by_owner(
owner_payment_credential,
extra_signatories,
inputs,
),
}
}

Expand Down
12 changes: 6 additions & 6 deletions plutus.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions plutus.ts

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions src/build-tx.ts
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,15 @@ export class WarehouseBuilder {
);
}
},
() => {
const owner = treasuryDatum.owner;
if ("VerificationKeyCredential" in owner.paymentCredential) {
this.tx.addSigner(plutusAddress2Address("Preprod", owner));
} else {
// TODO: support cript hash
throw Error("Do not support Script owner")
}
},
);
return this;
}
Expand Down
2 changes: 2 additions & 0 deletions validators/factory.ak
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,8 @@ validator(
factory_policy_id: factory_hash,
end_valid_time_range: end_valid_time_range,
datums: datums,
extra_signatories: extra_signatories,
inputs: inputs,
),
// Mint Value must be correct!
mint_value == get_minting_treasury(
Expand Down
2 changes: 2 additions & 0 deletions validators/treasury.ak
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ validator {
factory_policy_id: factory_policy_id,
end_valid_time_range: end_valid_time_range,
datums: datums,
extra_signatories: extra_signatories,
inputs: inputs,
),
// mint nothing
mint_value == value.zero(),
Expand Down

0 comments on commit f7584f8

Please sign in to comment.