From 46985b3430639fcdaf9e08a46f5c35ba60050aa6 Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 11:06:32 -0700 Subject: [PATCH 01/13] fix: increase default proposal bond, fixes #37 --- contracts/dao/extensions/aibtc-action-proposals-v2.clar | 2 +- contracts/dao/extensions/aibtc-core-proposals-v2.clar | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/dao/extensions/aibtc-action-proposals-v2.clar b/contracts/dao/extensions/aibtc-action-proposals-v2.clar index 6904221..827a097 100644 --- a/contracts/dao/extensions/aibtc-action-proposals-v2.clar +++ b/contracts/dao/extensions/aibtc-action-proposals-v2.clar @@ -55,7 +55,7 @@ (define-data-var concludedProposalCount uint u0) ;; total number of concluded proposals (define-data-var executedProposalCount uint u0) ;; total number of executed proposals (define-data-var lastProposalCreated uint u0) ;; block height of last proposal created -(define-data-var proposalBond uint u100000000000) ;; proposal bond amount, starts at 1000 DAO tokens (8 decimals) +(define-data-var proposalBond uint u250000000000) ;; action proposal bond, default 2,500 DAO tokens w/ 8 decimals ;; data maps ;; diff --git a/contracts/dao/extensions/aibtc-core-proposals-v2.clar b/contracts/dao/extensions/aibtc-core-proposals-v2.clar index abade68..8b204e3 100644 --- a/contracts/dao/extensions/aibtc-core-proposals-v2.clar +++ b/contracts/dao/extensions/aibtc-core-proposals-v2.clar @@ -55,7 +55,7 @@ (define-data-var concludedProposalCount uint u0) ;; total number of concluded proposals (define-data-var executedProposalCount uint u0) ;; total number of executed proposals (define-data-var lastProposalCreated uint u0) ;; block height of last proposal created -(define-data-var proposalBond uint u100000000000) ;; proposal bond amount, starts at 1000 DAO tokens (8 decimals) +(define-data-var proposalBond uint u25000000000000) ;; core proposal bond, default 250,000 DAO tokens w/ 8 decimals ;; data maps ;; (define-map Proposals From 6985f9cadfd6d47ebf25b2d59634a42bd5bcf34b Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 11:07:06 -0700 Subject: [PATCH 02/13] fix: update tests, types, and utlities to match --- tests/dao-types.ts | 2 +- .../aibtc-core-proposals-v2.test.ts | 29 ++++++++++--------- tests/test-utilities.ts | 8 ++--- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/tests/dao-types.ts b/tests/dao-types.ts index 90cdf2a..5ac10bb 100644 --- a/tests/dao-types.ts +++ b/tests/dao-types.ts @@ -133,7 +133,7 @@ export type VoteSettings = { votingPeriod: number; votingQuorum: number; votingThreshold: number; - votingBond: number; + votingBond: bigint; }; type VotableContracts = diff --git a/tests/dao/extensions/aibtc-core-proposals-v2.test.ts b/tests/dao/extensions/aibtc-core-proposals-v2.test.ts index 0317f58..48d0d69 100644 --- a/tests/dao/extensions/aibtc-core-proposals-v2.test.ts +++ b/tests/dao/extensions/aibtc-core-proposals-v2.test.ts @@ -50,6 +50,9 @@ const ErrCode = CoreProposalV2ErrCode; // generic context for creating proposals const memoContext = "Can pass up to 1024 characters for additional context."; +// default price for getting dao tokens from dex +const defaultPriceInSbtc = 100000; // 0.001 sbtc + // helper for getting start block for proposals const getProposalStartBlock = (burnBlockHeight: number): number => { return burnBlockHeight + coreProposalV2VoteSettings.votingDelay; @@ -206,7 +209,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -237,7 +240,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -325,7 +328,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -401,7 +404,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -440,7 +443,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -484,7 +487,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -587,7 +590,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -628,7 +631,7 @@ describe(`public functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -859,7 +862,7 @@ describe(`read-only functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // construct DAO @@ -953,7 +956,7 @@ describe(`read-only functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); // get dao tokens for address1, increases liquid tokens @@ -1064,7 +1067,7 @@ describe(`read-only functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); @@ -1245,7 +1248,7 @@ describe(`read-only functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 1000 + defaultPriceInSbtc ); expect(daoTokensReceipt.result).toBeOk(Cl.bool(true)); dbgLog(simnet.blockHeight, { titleBefore: "after dao tokens receipt" }); @@ -1393,7 +1396,7 @@ describe(`read-only functions: ${ContractType.DAO_CORE_PROPOSALS_V2}`, () => { tokenContractAddress, tokenDexContractAddress, deployer, - 10000 + defaultPriceInSbtc ).result; expect(daoTokensResult).toBeOk(Cl.bool(true)); // arrange part 2 diff --git a/tests/test-utilities.ts b/tests/test-utilities.ts index 38eb0c2..bc99df2 100644 --- a/tests/test-utilities.ts +++ b/tests/test-utilities.ts @@ -60,28 +60,28 @@ export const VOTING_CONFIG: VotingConfig = { votingPeriod: 144, // 144 Bitcoin blocks (~1 days) votingQuorum: 95, // 95% of liquid supply must participate votingThreshold: 95, // 95% of votes must be in favor - votingBond: 0, // no bond + votingBond: 0n, // no bond }, [ContractType.DAO_CORE_PROPOSALS_V2]: { votingDelay: 432, // 3 x 144 Bitcoin blocks (~3 days) votingPeriod: 432, // 3 x 144 Bitcoin blocks (~3 days) votingQuorum: 25, // 25% of liquid supply must participate votingThreshold: 90, // 90% of votes must be in favor - votingBond: 100000000000, // 1000 DAO token, 8 decimals + votingBond: 25000000000000n, // 250,000 DAO token, 8 decimals }, [ContractType.DAO_ACTION_PROPOSALS]: { votingDelay: 0, // no delay votingPeriod: 144, // 144 Bitcoin blocks (~1 days) votingQuorum: 66, // 66% of liquid supply must participate votingThreshold: 66, // 66% of votes must be in favor - votingBond: 0, // no bond + votingBond: 0n, // no bond }, [ContractType.DAO_ACTION_PROPOSALS_V2]: { votingDelay: 144, // 1 x 144 Bitcoin blocks (~3 days) votingPeriod: 288, // 2 x 144 Bitcoin blocks (~2 days) votingQuorum: 15, // 15% of liquid supply must participate votingThreshold: 66, // 66% of votes must be in favor - votingBond: 100000000000, // 1000 DAO token, 8 decimals + votingBond: 250000000000n, // 2,500 DAO token, 8 decimals }, }; From 95c6e0f465b8fc838f38a44c2df97a1f5cb95d52 Mon Sep 17 00:00:00 2001 From: "Jason Schrader (aider)" Date: Fri, 18 Apr 2025 11:40:11 -0700 Subject: [PATCH 03/13] Docs: Create AIBTC DAO platform consistency analysis report --- aibtc-dao-consistency-report.md | 130 ++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 aibtc-dao-consistency-report.md diff --git a/aibtc-dao-consistency-report.md b/aibtc-dao-consistency-report.md new file mode 100644 index 0000000..68a2130 --- /dev/null +++ b/aibtc-dao-consistency-report.md @@ -0,0 +1,130 @@ +# AIBTC DAO Platform Consistency Analysis + +## 1. Error Code Definitions + +### Inconsistency: +- Some contracts use `ERR_` prefix (most common) +- Some use full words like `INPUT_ERROR` (in `aibtc-onchain-messaging.clar`) +- Some use shorter forms like `ERR_UNAUTHORIZED` vs `ERR_NOT_DAO_OR_EXTENSION` + +### Recommendation: +Standardize all error codes with the `ERR_` prefix followed by a descriptive name in uppercase with underscores. + +## 2. Print Event Notifications + +### Inconsistency: +- Most contracts use a structured format with `notification` and `payload` fields +- The payload structure varies between contracts +- Some print events include more fields than others for similar actions + +### Recommendation: +Standardize the print event structure across all contracts: +``` +(print { + notification: "[action-name]", + payload: { + // Consistent set of fields based on action type + } +}) +``` + +## 3. Function Naming Conventions + +### Inconsistency: +- Some functions use hyphenated names (`set-payment-address`) +- Similar functions have different names across contracts (e.g., `toggle-resource` vs `allow-asset`) +- Some functions have inconsistent verb usage (e.g., `get-` vs direct noun) + +### Recommendation: +Standardize function naming with consistent verbs: +- Use `get-` prefix for all read-only functions +- Use `set-` prefix for state-changing functions that update a single value +- Use consistent action verbs (`add-`, `remove-`, `toggle-`, etc.) + +## 4. Variable Naming + +### Inconsistency: +- Some variables use camelCase (`lastWithdrawalBlock`) +- Others use kebab-case in function parameters +- Inconsistent abbreviations (e.g., `pmt` vs `payment`) + +### Recommendation: +Standardize on kebab-case for all function parameters and consistent abbreviations throughout. + +## 5. Constants Naming + +### Inconsistency: +- Some constants use `CFG_` prefix (`CFG_PAYMENT_TOKEN`) +- Others use descriptive names without prefixes (`VOTING_DELAY`) +- Some use `SELF` while others use `TREASURY` for contract principal + +### Recommendation: +Standardize constant naming: +- Use all uppercase with underscores +- Use consistent prefixes for similar types of constants +- Standardize on `SELF` for the contract principal reference + +## 6. Data Structure Consistency + +### Inconsistency: +- Different naming conventions for similar data structures across contracts +- Inconsistent field names in similar data structures +- Varying approaches to optional fields + +### Recommendation: +Create consistent data structure templates for common concepts (proposals, resources, etc.) and use them across all contracts. + +## 7. Specific Inconsistencies Found + +### Payment Processor Contracts +- Three nearly identical implementations (`aibtc-payment-processor-dao.clar`, `aibtc-payment-processor-stx.clar`, `aibtc-payment-processor-sbtc.clar`) with minor differences +- Inconsistent handling of payment methods + +### Timed Vault Contracts +- Similar inconsistencies between `aibtc-timed-vault-dao.clar`, `aibtc-timed-vault-stx.clar`, and `aibtc-timed-vault-sbtc.clar` +- Different default values for similar concepts + +### Proposal Contracts +- Inconsistent approach between `aibtc-action-proposals-v2.clar` and `aibtc-core-proposals-v2.clar` +- Different voting parameter names and structures + +### Treasury Contract +- Inconsistent approach to asset management compared to other resource management + +## 8. Documentation Style + +### Inconsistency: +- Some contracts have detailed headers with version, title, summary +- Others have minimal or no documentation +- Inconsistent inline commenting style + +### Recommendation: +Standardize documentation with: +- Consistent header format for all contracts +- Standard sections for traits, constants, data vars, etc. +- Consistent inline commenting style + +## 9. Error Handling Patterns + +### Inconsistency: +- Some functions use `try!` for authorization checks +- Others use `asserts!` directly +- Inconsistent error propagation + +### Recommendation: +Standardize error handling patterns: +- Use `try!` consistently for authorization and external calls +- Use `asserts!` for validation checks +- Consistent approach to error propagation + +## 10. Authorization Checks + +### Inconsistency: +- Some contracts check `is-dao-or-extension` at the beginning +- Others perform checks later in the function +- Inconsistent implementation of the check itself + +### Recommendation: +Standardize authorization checks: +- Always perform them at the beginning of functions +- Use consistent implementation across all contracts From f32c45002c758392eef3dcca69530e36a62ac04e Mon Sep 17 00:00:00 2001 From: "Jason Schrader (aider)" Date: Fri, 18 Apr 2025 11:47:44 -0700 Subject: [PATCH 04/13] refactor: Standardize error codes across contracts and tests --- contracts/dao/extensions/aibtc-onchain-messaging.clar | 8 ++++---- contracts/dao/extensions/aibtc-token-owner.clar | 4 ++-- contracts/dao/extensions/aibtc-treasury.clar | 4 ++-- tests/error-codes.ts | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/contracts/dao/extensions/aibtc-onchain-messaging.clar b/contracts/dao/extensions/aibtc-onchain-messaging.clar index 263eeef..999801c 100644 --- a/contracts/dao/extensions/aibtc-onchain-messaging.clar +++ b/contracts/dao/extensions/aibtc-onchain-messaging.clar @@ -9,8 +9,8 @@ ;; constants ;; -(define-constant INPUT_ERROR (err u4000)) -(define-constant ERR_UNAUTHORIZED (err u4001)) +(define-constant ERR_INVALID_INPUT (err u4000)) +(define-constant ERR_NOT_DAO_OR_EXTENSION (err u4001)) ;; public functions @@ -21,7 +21,7 @@ (define-public (send (msg (string-ascii 1048576)) (isFromDao bool)) (begin (and isFromDao (try! (is-dao-or-extension))) - (asserts! (> (len msg) u0) INPUT_ERROR) + (asserts! (> (len msg) u0) ERR_INVALID_INPUT) ;; print the message as the first event (print msg) ;; print the envelope info for the message @@ -43,6 +43,6 @@ (define-private (is-dao-or-extension) (ok (asserts! (or (is-eq tx-sender .aibtc-base-dao) - (contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED + (contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_NOT_DAO_OR_EXTENSION )) ) diff --git a/contracts/dao/extensions/aibtc-token-owner.clar b/contracts/dao/extensions/aibtc-token-owner.clar index 2ebc152..68ca1a6 100644 --- a/contracts/dao/extensions/aibtc-token-owner.clar +++ b/contracts/dao/extensions/aibtc-token-owner.clar @@ -10,7 +10,7 @@ ;; constants ;; -(define-constant ERR_UNAUTHORIZED (err u7000)) +(define-constant ERR_NOT_DAO_OR_EXTENSION (err u7000)) ;; public functions ;; @@ -45,6 +45,6 @@ (define-private (is-dao-or-extension) (ok (asserts! (or (is-eq tx-sender .aibtc-base-dao) - (contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED + (contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_NOT_DAO_OR_EXTENSION )) ) diff --git a/contracts/dao/extensions/aibtc-treasury.clar b/contracts/dao/extensions/aibtc-treasury.clar index 8b7ef17..8c53885 100644 --- a/contracts/dao/extensions/aibtc-treasury.clar +++ b/contracts/dao/extensions/aibtc-treasury.clar @@ -13,7 +13,7 @@ ;; constants ;; -(define-constant ERR_UNAUTHORIZED (err u6000)) +(define-constant ERR_NOT_DAO_OR_EXTENSION (err u6000)) (define-constant ERR_UNKNOWN_ASSSET (err u6001)) (define-constant TREASURY (as-contract tx-sender)) @@ -213,7 +213,7 @@ (define-private (is-dao-or-extension) (ok (asserts! (or (is-eq tx-sender .aibtc-base-dao) - (contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED + (contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_NOT_DAO_OR_EXTENSION )) ) diff --git a/tests/error-codes.ts b/tests/error-codes.ts index 6eaaf2c..ff767ef 100644 --- a/tests/error-codes.ts +++ b/tests/error-codes.ts @@ -90,8 +90,8 @@ export enum CoreProposalV2ErrCode { } export enum OnchainMessagingErrCode { - INPUT_ERROR = 4000, - ERR_UNAUTHORIZED, + ERR_INVALID_INPUT = 4000, + ERR_NOT_DAO_OR_EXTENSION, } export enum PaymentProcessorErrCode { @@ -112,12 +112,12 @@ export enum PaymentProcessorErrCode { } export enum TreasuryErrCode { - ERR_UNAUTHORIZED = 6000, + ERR_NOT_DAO_OR_EXTENSION = 6000, ERR_UNKNOWN_ASSSET, } export enum TokenOwnerErrCode { - ERR_UNAUTHORIZED = 7000, + ERR_NOT_DAO_OR_EXTENSION = 7000, } export enum DaoCharterErrCode { From c3b99d5b3ac4077f70a7ea2f550e2cbfccb7a484 Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 12:00:38 -0700 Subject: [PATCH 05/13] fix: update error code refs in tests --- .../dao/extensions/aibtc-onchain-messaging.test.ts | 2 +- tests/dao/extensions/aibtc-treasury.test.ts | 14 +++++++------- ...ibtc-action-proposals-set-proposal-bond.test.ts | 2 +- .../proposals/aibtc-base-add-new-extension.test.ts | 2 +- .../proposals/aibtc-base-disable-extension.test.ts | 2 +- .../proposals/aibtc-base-enable-extension.test.ts | 2 +- ...-base-replace-extension-proposal-voting.test.ts | 2 +- .../proposals/aibtc-base-replace-extension.test.ts | 2 +- .../aibtc-core-proposals-set-proposal-bond.test.ts | 2 +- .../aibtc-dao-charter-set-dao-charter.test.ts | 2 +- .../proposals/aibtc-onchain-messaging-send.test.ts | 2 +- .../proposals/aibtc-pmt-dao-add-resource.test.ts | 2 +- .../aibtc-pmt-dao-set-payment-address.test.ts | 2 +- .../aibtc-pmt-dao-toggle-resource-by-name.test.ts | 2 +- .../aibtc-pmt-dao-toggle-resource.test.ts | 2 +- .../proposals/aibtc-pmt-sbtc-add-resource.test.ts | 2 +- .../aibtc-pmt-sbtc-set-payment-address.test.ts | 2 +- .../aibtc-pmt-sbtc-toggle-resource-by-name.test.ts | 2 +- .../aibtc-pmt-sbtc-toggle-resource.test.ts | 2 +- .../proposals/aibtc-pmt-stx-add-resource.test.ts | 2 +- .../aibtc-pmt-stx-set-payment-address.test.ts | 2 +- .../aibtc-pmt-stx-toggle-resource-by-name.test.ts | 2 +- .../aibtc-pmt-stx-toggle-resource.test.ts | 2 +- ...tc-timed-vault-dao-initialize-new-vault.test.ts | 2 +- ...ault-dao-override-last-withdrawal-block.test.ts | 2 +- ...ibtc-timed-vault-dao-set-account-holder.test.ts | 2 +- ...c-timed-vault-dao-set-withdrawal-amount.test.ts | 2 +- ...c-timed-vault-dao-set-withdrawal-period.test.ts | 2 +- .../aibtc-timed-vault-dao-withdraw.test.ts | 2 +- ...c-timed-vault-sbtc-initialize-new-vault.test.ts | 2 +- ...ult-sbtc-override-last-withdrawal-block.test.ts | 2 +- ...btc-timed-vault-sbtc-set-account-holder.test.ts | 2 +- ...-timed-vault-sbtc-set-withdrawal-amount.test.ts | 2 +- ...-timed-vault-sbtc-set-withdrawal-period.test.ts | 2 +- .../aibtc-timed-vault-sbtc-withdraw.test.ts | 2 +- ...tc-timed-vault-stx-initialize-new-vault.test.ts | 2 +- ...ault-stx-override-last-withdrawal-block.test.ts | 2 +- ...ibtc-timed-vault-stx-set-account-holder.test.ts | 2 +- ...c-timed-vault-stx-set-withdrawal-amount.test.ts | 2 +- ...c-timed-vault-stx-set-withdrawal-period.test.ts | 2 +- .../aibtc-timed-vault-stx-withdraw.test.ts | 2 +- .../aibtc-token-owner-set-token-uri.test.ts | 2 +- .../aibtc-token-owner-transfer-ownership.test.ts | 2 +- .../proposals/aibtc-treasury-allow-asset.test.ts | 2 +- .../proposals/aibtc-treasury-allow-assets.test.ts | 2 +- .../proposals/aibtc-treasury-delegate-stx.test.ts | 2 +- .../proposals/aibtc-treasury-disable-asset.test.ts | 2 +- .../aibtc-treasury-revoke-delegation.test.ts | 2 +- .../proposals/aibtc-treasury-withdraw-ft.test.ts | 2 +- .../proposals/aibtc-treasury-withdraw-nft.test.ts | 2 +- .../proposals/aibtc-treasury-withdraw-stx.test.ts | 2 +- 51 files changed, 57 insertions(+), 57 deletions(-) diff --git a/tests/dao/extensions/aibtc-onchain-messaging.test.ts b/tests/dao/extensions/aibtc-onchain-messaging.test.ts index 53a617e..cb1e97d 100644 --- a/tests/dao/extensions/aibtc-onchain-messaging.test.ts +++ b/tests/dao/extensions/aibtc-onchain-messaging.test.ts @@ -47,7 +47,7 @@ describe(`extension: ${ContractType.DAO_MESSAGING}`, () => { [Cl.stringAscii(message), Cl.bool(true)], address1 ); - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("send() succeeds if called by a DAO proposal with isFromDao true", () => { diff --git a/tests/dao/extensions/aibtc-treasury.test.ts b/tests/dao/extensions/aibtc-treasury.test.ts index 9261d20..fc64ba5 100644 --- a/tests/dao/extensions/aibtc-treasury.test.ts +++ b/tests/dao/extensions/aibtc-treasury.test.ts @@ -40,7 +40,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("allow-assets() fails if caller is not DAO or extension", () => { @@ -68,7 +68,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("withdraw-stx() fails if caller is not DAO or extension", () => { @@ -85,7 +85,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("withdraw-ft() fails if caller is not DAO or extension", () => { @@ -106,7 +106,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("withdraw-nft() fails if caller is not DAO or extension", () => { @@ -127,7 +127,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("delegate-stx() fails if caller is not DAO or extension", () => { @@ -144,7 +144,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); it("revoke-delegate-stx() fails if caller is not DAO or extension", () => { @@ -159,7 +159,7 @@ describe(`extension: ${contractName}`, () => { ); // Assert - expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_UNAUTHORIZED)); + expect(receipt.result).toBeErr(Cl.uint(ErrCode.ERR_NOT_DAO_OR_EXTENSION)); }); }); diff --git a/tests/dao/proposals/aibtc-action-proposals-set-proposal-bond.test.ts b/tests/dao/proposals/aibtc-action-proposals-set-proposal-bond.test.ts index b757d8e..1f03020 100644 --- a/tests/dao/proposals/aibtc-action-proposals-set-proposal-bond.test.ts +++ b/tests/dao/proposals/aibtc-action-proposals-set-proposal-bond.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-action-proposals-set-proposal-bond"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-base-add-new-extension.test.ts b/tests/dao/proposals/aibtc-base-add-new-extension.test.ts index 1cd4a34..4d2f96e 100644 --- a/tests/dao/proposals/aibtc-base-add-new-extension.test.ts +++ b/tests/dao/proposals/aibtc-base-add-new-extension.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-base-add-new-extension"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-base-disable-extension.test.ts b/tests/dao/proposals/aibtc-base-disable-extension.test.ts index 1545bbb..2f3d554 100644 --- a/tests/dao/proposals/aibtc-base-disable-extension.test.ts +++ b/tests/dao/proposals/aibtc-base-disable-extension.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-base-disable-extension"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-base-enable-extension.test.ts b/tests/dao/proposals/aibtc-base-enable-extension.test.ts index 89e7c4e..74f89b5 100644 --- a/tests/dao/proposals/aibtc-base-enable-extension.test.ts +++ b/tests/dao/proposals/aibtc-base-enable-extension.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-base-enable-extension"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-base-replace-extension-proposal-voting.test.ts b/tests/dao/proposals/aibtc-base-replace-extension-proposal-voting.test.ts index 5893c8d..6720c2f 100644 --- a/tests/dao/proposals/aibtc-base-replace-extension-proposal-voting.test.ts +++ b/tests/dao/proposals/aibtc-base-replace-extension-proposal-voting.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-base-replace-extension"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly before dao is initialized", () => { diff --git a/tests/dao/proposals/aibtc-base-replace-extension.test.ts b/tests/dao/proposals/aibtc-base-replace-extension.test.ts index 5893c8d..6720c2f 100644 --- a/tests/dao/proposals/aibtc-base-replace-extension.test.ts +++ b/tests/dao/proposals/aibtc-base-replace-extension.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-base-replace-extension"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly before dao is initialized", () => { diff --git a/tests/dao/proposals/aibtc-core-proposals-set-proposal-bond.test.ts b/tests/dao/proposals/aibtc-core-proposals-set-proposal-bond.test.ts index 17e5c7f..364dff3 100644 --- a/tests/dao/proposals/aibtc-core-proposals-set-proposal-bond.test.ts +++ b/tests/dao/proposals/aibtc-core-proposals-set-proposal-bond.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-core-proposals-set-proposal-bond"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-dao-charter-set-dao-charter.test.ts b/tests/dao/proposals/aibtc-dao-charter-set-dao-charter.test.ts index ad4dc50..36cc125 100644 --- a/tests/dao/proposals/aibtc-dao-charter-set-dao-charter.test.ts +++ b/tests/dao/proposals/aibtc-dao-charter-set-dao-charter.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-dao-charter-set-dao-charter"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-onchain-messaging-send.test.ts b/tests/dao/proposals/aibtc-onchain-messaging-send.test.ts index f3bcff9..e641e1e 100644 --- a/tests/dao/proposals/aibtc-onchain-messaging-send.test.ts +++ b/tests/dao/proposals/aibtc-onchain-messaging-send.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-onchain-messaging-send"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-dao-add-resource.test.ts b/tests/dao/proposals/aibtc-pmt-dao-add-resource.test.ts index f5715d3..303e17e 100644 --- a/tests/dao/proposals/aibtc-pmt-dao-add-resource.test.ts +++ b/tests/dao/proposals/aibtc-pmt-dao-add-resource.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-dao-add-resource"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-dao-set-payment-address.test.ts b/tests/dao/proposals/aibtc-pmt-dao-set-payment-address.test.ts index 4258890..46d62a8 100644 --- a/tests/dao/proposals/aibtc-pmt-dao-set-payment-address.test.ts +++ b/tests/dao/proposals/aibtc-pmt-dao-set-payment-address.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-dao-set-payment-address"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-dao-toggle-resource-by-name.test.ts b/tests/dao/proposals/aibtc-pmt-dao-toggle-resource-by-name.test.ts index b38a3dc..a261e50 100644 --- a/tests/dao/proposals/aibtc-pmt-dao-toggle-resource-by-name.test.ts +++ b/tests/dao/proposals/aibtc-pmt-dao-toggle-resource-by-name.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-dao-toggle-resource-by-name"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-dao-toggle-resource.test.ts b/tests/dao/proposals/aibtc-pmt-dao-toggle-resource.test.ts index 9cfdabb..33a4c8e 100644 --- a/tests/dao/proposals/aibtc-pmt-dao-toggle-resource.test.ts +++ b/tests/dao/proposals/aibtc-pmt-dao-toggle-resource.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-dao-toggle-resource"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-sbtc-add-resource.test.ts b/tests/dao/proposals/aibtc-pmt-sbtc-add-resource.test.ts index 85bec04..e2bbe13 100644 --- a/tests/dao/proposals/aibtc-pmt-sbtc-add-resource.test.ts +++ b/tests/dao/proposals/aibtc-pmt-sbtc-add-resource.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-sbtc-add-resource"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-sbtc-set-payment-address.test.ts b/tests/dao/proposals/aibtc-pmt-sbtc-set-payment-address.test.ts index eedf3d7..f0f2689 100644 --- a/tests/dao/proposals/aibtc-pmt-sbtc-set-payment-address.test.ts +++ b/tests/dao/proposals/aibtc-pmt-sbtc-set-payment-address.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-sbtc-set-payment-address"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource-by-name.test.ts b/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource-by-name.test.ts index 3065d5c..2d7247c 100644 --- a/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource-by-name.test.ts +++ b/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource-by-name.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-sbtc-toggle-resource-by-name"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource.test.ts b/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource.test.ts index ffff134..e75dacc 100644 --- a/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource.test.ts +++ b/tests/dao/proposals/aibtc-pmt-sbtc-toggle-resource.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-sbtc-toggle-resource"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-stx-add-resource.test.ts b/tests/dao/proposals/aibtc-pmt-stx-add-resource.test.ts index e00fdd4..de682c6 100644 --- a/tests/dao/proposals/aibtc-pmt-stx-add-resource.test.ts +++ b/tests/dao/proposals/aibtc-pmt-stx-add-resource.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-stx-add-resource"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-stx-set-payment-address.test.ts b/tests/dao/proposals/aibtc-pmt-stx-set-payment-address.test.ts index 06f864a..e06d877 100644 --- a/tests/dao/proposals/aibtc-pmt-stx-set-payment-address.test.ts +++ b/tests/dao/proposals/aibtc-pmt-stx-set-payment-address.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-stx-set-payment-address"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-stx-toggle-resource-by-name.test.ts b/tests/dao/proposals/aibtc-pmt-stx-toggle-resource-by-name.test.ts index 086490f..d21650e 100644 --- a/tests/dao/proposals/aibtc-pmt-stx-toggle-resource-by-name.test.ts +++ b/tests/dao/proposals/aibtc-pmt-stx-toggle-resource-by-name.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-stx-toggle-resource-by-name"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-pmt-stx-toggle-resource.test.ts b/tests/dao/proposals/aibtc-pmt-stx-toggle-resource.test.ts index ece2783..a7dd8b8 100644 --- a/tests/dao/proposals/aibtc-pmt-stx-toggle-resource.test.ts +++ b/tests/dao/proposals/aibtc-pmt-stx-toggle-resource.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-pmt-stx-toggle-resource"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-dao-initialize-new-vault.test.ts b/tests/dao/proposals/aibtc-timed-vault-dao-initialize-new-vault.test.ts index 01bb242..0378811 100644 --- a/tests/dao/proposals/aibtc-timed-vault-dao-initialize-new-vault.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-dao-initialize-new-vault.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-dao-initialize-new-vault"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-dao-override-last-withdrawal-block.test.ts b/tests/dao/proposals/aibtc-timed-vault-dao-override-last-withdrawal-block.test.ts index 9eece44..1afff8c 100644 --- a/tests/dao/proposals/aibtc-timed-vault-dao-override-last-withdrawal-block.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-dao-override-last-withdrawal-block.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-dao-override-last-withdrawal-block"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-dao-set-account-holder.test.ts b/tests/dao/proposals/aibtc-timed-vault-dao-set-account-holder.test.ts index e1f7172..f27e900 100644 --- a/tests/dao/proposals/aibtc-timed-vault-dao-set-account-holder.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-dao-set-account-holder.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-dao-set-account-holder"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-amount.test.ts b/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-amount.test.ts index 02a8758..c2dbd58 100644 --- a/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-amount.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-amount.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-dao-set-withdrawal-amount"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-period.test.ts b/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-period.test.ts index d3ebdfb..c8b1ffa 100644 --- a/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-period.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-dao-set-withdrawal-period.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-dao-set-withdrawal-period"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-dao-withdraw.test.ts b/tests/dao/proposals/aibtc-timed-vault-dao-withdraw.test.ts index 7b982b0..48bba51 100644 --- a/tests/dao/proposals/aibtc-timed-vault-dao-withdraw.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-dao-withdraw.test.ts @@ -7,7 +7,7 @@ const accounts = simnet.getAccounts(); const deployer = accounts.get("deployer")!; const contractAddress = `${deployer}.${ContractProposalType.DAO_TIMED_VAULT_DAO_WITHDRAW}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${ContractProposalType.DAO_TIMED_VAULT_DAO_WITHDRAW}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-sbtc-initialize-new-vault.test.ts b/tests/dao/proposals/aibtc-timed-vault-sbtc-initialize-new-vault.test.ts index aee4e94..237ee3a 100644 --- a/tests/dao/proposals/aibtc-timed-vault-sbtc-initialize-new-vault.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-sbtc-initialize-new-vault.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-sbtc-initialize-new-vault"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-sbtc-override-last-withdrawal-block.test.ts b/tests/dao/proposals/aibtc-timed-vault-sbtc-override-last-withdrawal-block.test.ts index 96ce215..41106ac 100644 --- a/tests/dao/proposals/aibtc-timed-vault-sbtc-override-last-withdrawal-block.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-sbtc-override-last-withdrawal-block.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-sbtc-override-last-withdrawal-block"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-sbtc-set-account-holder.test.ts b/tests/dao/proposals/aibtc-timed-vault-sbtc-set-account-holder.test.ts index b639e68..7316c6a 100644 --- a/tests/dao/proposals/aibtc-timed-vault-sbtc-set-account-holder.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-sbtc-set-account-holder.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-sbtc-set-account-holder"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-amount.test.ts b/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-amount.test.ts index e816ec7..9e917f0 100644 --- a/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-amount.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-amount.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-sbtc-set-withdrawal-amount"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-period.test.ts b/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-period.test.ts index 3b2fb10..7393a8d 100644 --- a/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-period.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-sbtc-set-withdrawal-period.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-sbtc-set-withdrawal-period"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-sbtc-withdraw.test.ts b/tests/dao/proposals/aibtc-timed-vault-sbtc-withdraw.test.ts index 521136a..4ad21dc 100644 --- a/tests/dao/proposals/aibtc-timed-vault-sbtc-withdraw.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-sbtc-withdraw.test.ts @@ -7,7 +7,7 @@ const accounts = simnet.getAccounts(); const deployer = accounts.get("deployer")!; const contractAddress = `${deployer}.${ContractProposalType.DAO_TIMED_VAULT_SBTC_WITHDRAW}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${ContractProposalType.DAO_TIMED_VAULT_SBTC_WITHDRAW}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-stx-initialize-new-vault.test.ts b/tests/dao/proposals/aibtc-timed-vault-stx-initialize-new-vault.test.ts index 1d67d3e..2f22723 100644 --- a/tests/dao/proposals/aibtc-timed-vault-stx-initialize-new-vault.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-stx-initialize-new-vault.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-stx-initialize-new-vault"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { //dbgLog(`core proposal: ${contractName}`); diff --git a/tests/dao/proposals/aibtc-timed-vault-stx-override-last-withdrawal-block.test.ts b/tests/dao/proposals/aibtc-timed-vault-stx-override-last-withdrawal-block.test.ts index 700ba11..ce89afd 100644 --- a/tests/dao/proposals/aibtc-timed-vault-stx-override-last-withdrawal-block.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-stx-override-last-withdrawal-block.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-stx-override-last-withdrawal-block"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-stx-set-account-holder.test.ts b/tests/dao/proposals/aibtc-timed-vault-stx-set-account-holder.test.ts index 8b22ee2..e892e3f 100644 --- a/tests/dao/proposals/aibtc-timed-vault-stx-set-account-holder.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-stx-set-account-holder.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-stx-set-account-holder"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-amount.test.ts b/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-amount.test.ts index eae35f7..e564b0a 100644 --- a/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-amount.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-amount.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-stx-set-withdrawal-amount"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-period.test.ts b/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-period.test.ts index ebb5432..d8095ed 100644 --- a/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-period.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-stx-set-withdrawal-period.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-timed-vault-stx-set-withdrawal-period"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-timed-vault-stx-withdraw.test.ts b/tests/dao/proposals/aibtc-timed-vault-stx-withdraw.test.ts index 410ec2b..f68a8cc 100644 --- a/tests/dao/proposals/aibtc-timed-vault-stx-withdraw.test.ts +++ b/tests/dao/proposals/aibtc-timed-vault-stx-withdraw.test.ts @@ -7,7 +7,7 @@ const accounts = simnet.getAccounts(); const deployer = accounts.get("deployer")!; const contractAddress = `${deployer}.${ContractProposalType.DAO_TIMED_VAULT_STX_WITHDRAW}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${ContractProposalType.DAO_TIMED_VAULT_STX_WITHDRAW}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-token-owner-set-token-uri.test.ts b/tests/dao/proposals/aibtc-token-owner-set-token-uri.test.ts index 69fc30d..c84d9ac 100644 --- a/tests/dao/proposals/aibtc-token-owner-set-token-uri.test.ts +++ b/tests/dao/proposals/aibtc-token-owner-set-token-uri.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-token-owner-set-token-uri"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-token-owner-transfer-ownership.test.ts b/tests/dao/proposals/aibtc-token-owner-transfer-ownership.test.ts index 9d7d8a5..fdc60f6 100644 --- a/tests/dao/proposals/aibtc-token-owner-transfer-ownership.test.ts +++ b/tests/dao/proposals/aibtc-token-owner-transfer-ownership.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-token-owner-transfer-ownership"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-allow-asset.test.ts b/tests/dao/proposals/aibtc-treasury-allow-asset.test.ts index 75081df..988812e 100644 --- a/tests/dao/proposals/aibtc-treasury-allow-asset.test.ts +++ b/tests/dao/proposals/aibtc-treasury-allow-asset.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-allow-asset"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-allow-assets.test.ts b/tests/dao/proposals/aibtc-treasury-allow-assets.test.ts index 8eb2af9..3629f97 100644 --- a/tests/dao/proposals/aibtc-treasury-allow-assets.test.ts +++ b/tests/dao/proposals/aibtc-treasury-allow-assets.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-allow-assets"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-delegate-stx.test.ts b/tests/dao/proposals/aibtc-treasury-delegate-stx.test.ts index f87ba8a..57ad41a 100644 --- a/tests/dao/proposals/aibtc-treasury-delegate-stx.test.ts +++ b/tests/dao/proposals/aibtc-treasury-delegate-stx.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-delegate-stx"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-disable-asset.test.ts b/tests/dao/proposals/aibtc-treasury-disable-asset.test.ts index 82f59c0..ea0b3fd 100644 --- a/tests/dao/proposals/aibtc-treasury-disable-asset.test.ts +++ b/tests/dao/proposals/aibtc-treasury-disable-asset.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-disable-asset"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-revoke-delegation.test.ts b/tests/dao/proposals/aibtc-treasury-revoke-delegation.test.ts index d6fd566..226a7a6 100644 --- a/tests/dao/proposals/aibtc-treasury-revoke-delegation.test.ts +++ b/tests/dao/proposals/aibtc-treasury-revoke-delegation.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-revoke-delegation"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-withdraw-ft.test.ts b/tests/dao/proposals/aibtc-treasury-withdraw-ft.test.ts index 44665f4..c617c7f 100644 --- a/tests/dao/proposals/aibtc-treasury-withdraw-ft.test.ts +++ b/tests/dao/proposals/aibtc-treasury-withdraw-ft.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-withdraw-ft"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-withdraw-nft.test.ts b/tests/dao/proposals/aibtc-treasury-withdraw-nft.test.ts index 4ed1db1..b4556ae 100644 --- a/tests/dao/proposals/aibtc-treasury-withdraw-nft.test.ts +++ b/tests/dao/proposals/aibtc-treasury-withdraw-nft.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-withdraw-nft"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(TreasuryErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(TreasuryErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { diff --git a/tests/dao/proposals/aibtc-treasury-withdraw-stx.test.ts b/tests/dao/proposals/aibtc-treasury-withdraw-stx.test.ts index b37f5e3..bded8df 100644 --- a/tests/dao/proposals/aibtc-treasury-withdraw-stx.test.ts +++ b/tests/dao/proposals/aibtc-treasury-withdraw-stx.test.ts @@ -7,7 +7,7 @@ const deployer = accounts.get("deployer")!; const contractName = "aibtc-treasury-withdraw-stx"; const contractAddress = `${deployer}.${contractName}`; -const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_UNAUTHORIZED); +const expectedErr = Cl.uint(OnchainMessagingErrCode.ERR_NOT_DAO_OR_EXTENSION); describe(`core proposal: ${contractName}`, () => { it("execute() fails if called directly", () => { From b31cfd500769680c42087af1a57749a2dd62b517 Mon Sep 17 00:00:00 2001 From: "Jason Schrader (aider)" Date: Fri, 18 Apr 2025 12:07:37 -0700 Subject: [PATCH 06/13] refactor: Standardize contractCaller and txSender in print event payloads --- .../dao/extensions/aibtc-action-proposals-v2.clar | 10 +++++----- contracts/dao/extensions/aibtc-core-proposals-v2.clar | 10 +++++----- contracts/dao/extensions/aibtc-timed-vault-sbtc.clar | 10 ++++++---- contracts/dao/extensions/aibtc-timed-vault-stx.clar | 10 ++++++---- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/contracts/dao/extensions/aibtc-action-proposals-v2.clar b/contracts/dao/extensions/aibtc-action-proposals-v2.clar index 827a097..e6ee2bc 100644 --- a/contracts/dao/extensions/aibtc-action-proposals-v2.clar +++ b/contracts/dao/extensions/aibtc-action-proposals-v2.clar @@ -107,8 +107,8 @@ notification: "set-proposal-bond", payload: { amount: amount, - caller: contract-caller, - sender: tx-sender + contractCaller: contract-caller, + txSender: tx-sender } }) ;; set the proposal bond amount @@ -146,7 +146,7 @@ proposalId: newId, action: actionContract, parameters: parameters, - caller: contract-caller, + contractCaller: contract-caller, creator: tx-sender, bond: bondAmount, createdAt: createdAt, @@ -204,7 +204,7 @@ notification: "vote-on-proposal", payload: { proposalId: proposalId, - caller: contract-caller, + contractCaller: contract-caller, voter: tx-sender, amount: senderBalance } @@ -256,7 +256,7 @@ (print { notification: "conclude-proposal", payload: { - caller: contract-caller, + contractCaller: contract-caller, concludedBy: tx-sender, bond: (get bond proposalRecord), proposalId: proposalId, diff --git a/contracts/dao/extensions/aibtc-core-proposals-v2.clar b/contracts/dao/extensions/aibtc-core-proposals-v2.clar index 8b204e3..0141669 100644 --- a/contracts/dao/extensions/aibtc-core-proposals-v2.clar +++ b/contracts/dao/extensions/aibtc-core-proposals-v2.clar @@ -104,8 +104,8 @@ notification: "set-proposal-bond", payload: { amount: amount, - caller: contract-caller, - sender: tx-sender + contractCaller: contract-caller, + txSender: tx-sender } }) ;; set the proposal bond amount @@ -139,7 +139,7 @@ notification: "create-proposal", payload: { proposal: proposalContract, - caller: contract-caller, + contractCaller: contract-caller, creator: tx-sender, bond: bondAmount, createdAt: createdAt, @@ -195,7 +195,7 @@ notification: "vote-on-proposal", payload: { proposal: proposalContract, - caller: contract-caller, + contractCaller: contract-caller, voter: tx-sender, amount: senderBalance } @@ -244,7 +244,7 @@ (print { notification: "conclude-proposal", payload: { - caller: contract-caller, + contractCaller: contract-caller, concludedBy: tx-sender, bond: (get bond proposalRecord), proposal: proposalContract, diff --git a/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar b/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar index 87a80aa..3429a81 100644 --- a/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar +++ b/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar @@ -79,8 +79,9 @@ notification: "deposit", payload: { amount: amount, - caller: contract-caller, - recipient: SELF + contractCaller: contract-caller, + recipient: SELF, + txSender: tx-sender } }) (contract-call? 'STV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RJ5XDY2.sbtc-token transfer amount tx-sender SELF none) @@ -100,8 +101,9 @@ notification: "withdraw", payload: { amount: (var-get withdrawalAmount), - caller: contract-caller, - recipient: (var-get accountHolder) + contractCaller: contract-caller, + recipient: (var-get accountHolder), + txSender: tx-sender } }) (as-contract (contract-call? 'STV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RJ5XDY2.sbtc-token transfer (var-get withdrawalAmount) SELF (var-get accountHolder) none)) diff --git a/contracts/dao/extensions/aibtc-timed-vault-stx.clar b/contracts/dao/extensions/aibtc-timed-vault-stx.clar index 0fd4035..7072036 100644 --- a/contracts/dao/extensions/aibtc-timed-vault-stx.clar +++ b/contracts/dao/extensions/aibtc-timed-vault-stx.clar @@ -75,8 +75,9 @@ notification: "deposit", payload: { amount: amount, - caller: contract-caller, - recipient: SELF + contractCaller: contract-caller, + recipient: SELF, + txSender: tx-sender } }) (stx-transfer? amount contract-caller SELF) @@ -96,8 +97,9 @@ notification: "withdraw", payload: { amount: (var-get withdrawalAmount), - caller: contract-caller, - recipient: (var-get accountHolder) + contractCaller: contract-caller, + recipient: (var-get accountHolder), + txSender: tx-sender } }) (as-contract (stx-transfer? (var-get withdrawalAmount) SELF (var-get accountHolder))) From b96729088d85b22d4b165865bc41454a4ac35740 Mon Sep 17 00:00:00 2001 From: "Jason Schrader (aider)" Date: Fri, 18 Apr 2025 12:09:03 -0700 Subject: [PATCH 07/13] refactor: Standardize contractCaller and txSender in print event payloads --- .../extensions/aibtc-action-proposals.clar | 6 ++- .../dao/extensions/aibtc-core-proposals.clar | 6 ++- .../dao/extensions/aibtc-dao-charter.clar | 4 +- .../extensions/aibtc-onchain-messaging.clar | 4 +- .../aibtc-payment-processor-dao.clar | 2 +- .../dao/extensions/aibtc-timed-vault-dao.clar | 10 +++-- contracts/dao/extensions/aibtc-treasury.clar | 40 ++++++++++--------- 7 files changed, 43 insertions(+), 29 deletions(-) diff --git a/contracts/dao/extensions/aibtc-action-proposals.clar b/contracts/dao/extensions/aibtc-action-proposals.clar index c7a3859..dcaed7d 100644 --- a/contracts/dao/extensions/aibtc-action-proposals.clar +++ b/contracts/dao/extensions/aibtc-action-proposals.clar @@ -93,6 +93,7 @@ proposalId: newId, action: action, parameters: parameters, + contractCaller: contract-caller, creator: tx-sender, liquidTokens: liquidTokens, startBlockStx: block-height, @@ -143,6 +144,7 @@ notification: "vote-on-proposal", payload: { proposalId: proposalId, + contractCaller: contract-caller, voter: tx-sender, amount: senderBalance } @@ -179,7 +181,9 @@ notification: "conclude-proposal", payload: { proposalId: proposalId, - passed: votePassed + passed: votePassed, + contractCaller: contract-caller, + txSender: tx-sender } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-core-proposals.clar b/contracts/dao/extensions/aibtc-core-proposals.clar index 32f45a6..4c60162 100644 --- a/contracts/dao/extensions/aibtc-core-proposals.clar +++ b/contracts/dao/extensions/aibtc-core-proposals.clar @@ -91,6 +91,7 @@ notification: "create-proposal", payload: { proposal: proposalContract, + contractCaller: contract-caller, creator: tx-sender, liquidTokens: liquidTokens, startBlockStx: block-height, @@ -139,6 +140,7 @@ notification: "vote-on-proposal", payload: { proposal: proposalContract, + contractCaller: contract-caller, voter: tx-sender, amount: senderBalance } @@ -174,7 +176,9 @@ notification: "conclude-proposal", payload: { proposal: proposalContract, - passed: votePassed + passed: votePassed, + contractCaller: contract-caller, + txSender: tx-sender } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-dao-charter.clar b/contracts/dao/extensions/aibtc-dao-charter.clar index 9526a49..41c65cb 100644 --- a/contracts/dao/extensions/aibtc-dao-charter.clar +++ b/contracts/dao/extensions/aibtc-dao-charter.clar @@ -69,8 +69,8 @@ payload: { burnHeight: burn-block-height, createdAt: stacks-block-height, - caller: contract-caller, - sender: tx-sender, + contractCaller: contract-caller, + txSender: tx-sender, dao: SELF, charter: charter, inscriptionId: inscriptionId, diff --git a/contracts/dao/extensions/aibtc-onchain-messaging.clar b/contracts/dao/extensions/aibtc-onchain-messaging.clar index 999801c..d654df7 100644 --- a/contracts/dao/extensions/aibtc-onchain-messaging.clar +++ b/contracts/dao/extensions/aibtc-onchain-messaging.clar @@ -28,10 +28,10 @@ (print { notification: "send", payload: { - caller: contract-caller, + contractCaller: contract-caller, height: stacks-block-height, isFromDao: isFromDao, - sender: tx-sender, + txSender: tx-sender, } }) (ok true) diff --git a/contracts/dao/extensions/aibtc-payment-processor-dao.clar b/contracts/dao/extensions/aibtc-payment-processor-dao.clar index 4cb6eb1..381de75 100644 --- a/contracts/dao/extensions/aibtc-payment-processor-dao.clar +++ b/contracts/dao/extensions/aibtc-payment-processor-dao.clar @@ -129,7 +129,7 @@ contractCaller: contract-caller, oldAddress: (var-get paymentAddress), newAddress: newAddress, - txSender: tx-sender, + txSender: tx-sender } }) ;; set new payment address diff --git a/contracts/dao/extensions/aibtc-timed-vault-dao.clar b/contracts/dao/extensions/aibtc-timed-vault-dao.clar index 5c760bf..fce9fc8 100644 --- a/contracts/dao/extensions/aibtc-timed-vault-dao.clar +++ b/contracts/dao/extensions/aibtc-timed-vault-dao.clar @@ -79,8 +79,9 @@ notification: "deposit", payload: { amount: amount, - caller: contract-caller, - recipient: SELF + contractCaller: contract-caller, + recipient: SELF, + txSender: tx-sender } }) (contract-call? .aibtc-token transfer amount tx-sender SELF none) @@ -100,8 +101,9 @@ notification: "withdraw", payload: { amount: (var-get withdrawalAmount), - caller: contract-caller, - recipient: (var-get accountHolder) + contractCaller: contract-caller, + recipient: (var-get accountHolder), + txSender: tx-sender } }) (as-contract (contract-call? .aibtc-token transfer (var-get withdrawalAmount) SELF (var-get accountHolder) none)) diff --git a/contracts/dao/extensions/aibtc-treasury.clar b/contracts/dao/extensions/aibtc-treasury.clar index 8c53885..ab93fe9 100644 --- a/contracts/dao/extensions/aibtc-treasury.clar +++ b/contracts/dao/extensions/aibtc-treasury.clar @@ -37,7 +37,9 @@ notification: "allow-asset", payload: { enabled: enabled, - token: token + token: token, + contractCaller: contract-caller, + txSender: tx-sender } }) (ok (map-set AllowedAssets token enabled)) @@ -60,9 +62,9 @@ notification: "deposit-stx", payload: { amount: amount, - caller: contract-caller, + contractCaller: contract-caller, recipient: TREASURY, - sender: tx-sender + txSender: tx-sender } }) (stx-transfer? amount tx-sender TREASURY) @@ -78,9 +80,9 @@ payload: { amount: amount, assetContract: (contract-of ft), - caller: contract-caller, + contractCaller: contract-caller, recipient: TREASURY, - sender: tx-sender + txSender: tx-sender } }) (contract-call? ft transfer amount tx-sender TREASURY none) @@ -95,9 +97,9 @@ notification: "deposit-nft", payload: { assetContract: (contract-of nft), - caller: contract-caller, + contractCaller: contract-caller, recipient: TREASURY, - sender: tx-sender, + txSender: tx-sender, tokenId: id } }) @@ -113,9 +115,9 @@ notification: "withdraw-stx", payload: { amount: amount, - caller: contract-caller, + contractCaller: contract-caller, recipient: recipient, - sender: tx-sender + txSender: tx-sender } }) (as-contract (stx-transfer? amount TREASURY recipient)) @@ -131,9 +133,9 @@ notification: "withdraw-ft", payload: { assetContract: (contract-of ft), - caller: contract-caller, + contractCaller: contract-caller, recipient: recipient, - sender: tx-sender + txSender: tx-sender } }) (as-contract (contract-call? ft transfer amount TREASURY recipient none)) @@ -149,9 +151,9 @@ notification: "withdraw-nft", payload: { assetContract: (contract-of nft), - caller: contract-caller, + contractCaller: contract-caller, recipient: recipient, - sender: tx-sender, + txSender: tx-sender, tokenId: id } }) @@ -167,9 +169,9 @@ notification: "delegate-stx", payload: { amount: maxAmount, - caller: contract-caller, + contractCaller: contract-caller, delegate: to, - sender: tx-sender + txSender: tx-sender } }) (match (as-contract (contract-call? 'SP000000000000000000002Q6VF78.pox-4 delegate-stx maxAmount to none none)) @@ -186,8 +188,8 @@ (print { notification: "revoke-delegate-stx", payload: { - caller: contract-caller, - sender: tx-sender + contractCaller: contract-caller, + txSender: tx-sender } }) (match (as-contract (contract-call? 'SP000000000000000000002Q6VF78.pox-4 revoke-delegate-stx)) @@ -223,7 +225,9 @@ notification: "allow-asset", payload: { enabled: (get enabled item), - token: (get token item) + token: (get token item), + contractCaller: contract-caller, + txSender: tx-sender } }) (map-set AllowedAssets (get token item) (get enabled item)) From 7d359fd22dbc513925885bc174b434d01ab17ee0 Mon Sep 17 00:00:00 2001 From: "Jason Schrader (aider)" Date: Fri, 18 Apr 2025 12:22:56 -0700 Subject: [PATCH 08/13] feat: Enhance print event payloads with additional fields --- .../extensions/aibtc-action-proposals-v2.clar | 7 ++++++- .../dao/extensions/aibtc-action-proposals.clar | 7 +++++-- .../extensions/aibtc-core-proposals-v2.clar | 7 ++++++- .../dao/extensions/aibtc-core-proposals.clar | 7 +++++-- .../dao/extensions/aibtc-dao-charter.clar | 1 + .../extensions/aibtc-onchain-messaging.clar | 1 + .../dao/extensions/aibtc-timed-vault-dao.clar | 5 ++++- .../dao/extensions/aibtc-timed-vault-sbtc.clar | 5 ++++- .../dao/extensions/aibtc-timed-vault-stx.clar | 5 ++++- .../dao/extensions/aibtc-token-owner.clar | 18 ++++++++++++++++++ contracts/dao/extensions/aibtc-treasury.clar | 12 ++++++++---- 11 files changed, 62 insertions(+), 13 deletions(-) diff --git a/contracts/dao/extensions/aibtc-action-proposals-v2.clar b/contracts/dao/extensions/aibtc-action-proposals-v2.clar index e6ee2bc..df3a9e5 100644 --- a/contracts/dao/extensions/aibtc-action-proposals-v2.clar +++ b/contracts/dao/extensions/aibtc-action-proposals-v2.clar @@ -153,6 +153,10 @@ startBlock: startBlock, endBlock: endBlock, liquidTokens: liquidTokens, + votingPeriod: VOTING_PERIOD, + votingQuorum: VOTING_QUORUM, + votingThreshold: VOTING_THRESHOLD, + votingDelay: VOTING_DELAY } }) ;; create the proposal @@ -206,7 +210,8 @@ proposalId: proposalId, contractCaller: contract-caller, voter: tx-sender, - amount: senderBalance + amount: senderBalance, + vote: vote } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-action-proposals.clar b/contracts/dao/extensions/aibtc-action-proposals.clar index dcaed7d..d5747af 100644 --- a/contracts/dao/extensions/aibtc-action-proposals.clar +++ b/contracts/dao/extensions/aibtc-action-proposals.clar @@ -98,7 +98,9 @@ liquidTokens: liquidTokens, startBlockStx: block-height, startBlock: burn-block-height, - endBlock: (+ burn-block-height VOTING_PERIOD) + endBlock: (+ burn-block-height VOTING_PERIOD), + votingPeriod: VOTING_PERIOD, + votingQuorum: VOTING_QUORUM } }) ;; create the proposal @@ -146,7 +148,8 @@ proposalId: proposalId, contractCaller: contract-caller, voter: tx-sender, - amount: senderBalance + amount: senderBalance, + vote: vote } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-core-proposals-v2.clar b/contracts/dao/extensions/aibtc-core-proposals-v2.clar index 0141669..90a1936 100644 --- a/contracts/dao/extensions/aibtc-core-proposals-v2.clar +++ b/contracts/dao/extensions/aibtc-core-proposals-v2.clar @@ -146,6 +146,10 @@ startBlock: startBlock, endBlock: endBlock, liquidTokens: liquidTokens, + votingPeriod: VOTING_PERIOD, + votingQuorum: VOTING_QUORUM, + votingThreshold: VOTING_THRESHOLD, + votingDelay: VOTING_DELAY } }) ;; create the proposal @@ -197,7 +201,8 @@ proposal: proposalContract, contractCaller: contract-caller, voter: tx-sender, - amount: senderBalance + amount: senderBalance, + vote: vote } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-core-proposals.clar b/contracts/dao/extensions/aibtc-core-proposals.clar index 4c60162..75dceb0 100644 --- a/contracts/dao/extensions/aibtc-core-proposals.clar +++ b/contracts/dao/extensions/aibtc-core-proposals.clar @@ -96,7 +96,9 @@ liquidTokens: liquidTokens, startBlockStx: block-height, startBlock: burn-block-height, - endBlock: (+ burn-block-height VOTING_PERIOD) + endBlock: (+ burn-block-height VOTING_PERIOD), + votingPeriod: VOTING_PERIOD, + votingQuorum: VOTING_QUORUM } }) ;; create the proposal @@ -142,7 +144,8 @@ proposal: proposalContract, contractCaller: contract-caller, voter: tx-sender, - amount: senderBalance + amount: senderBalance, + vote: vote } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-dao-charter.clar b/contracts/dao/extensions/aibtc-dao-charter.clar index 41c65cb..5ea9179 100644 --- a/contracts/dao/extensions/aibtc-dao-charter.clar +++ b/contracts/dao/extensions/aibtc-dao-charter.clar @@ -73,6 +73,7 @@ txSender: tx-sender, dao: SELF, charter: charter, + previousCharter: (var-get daoCharter), inscriptionId: inscriptionId, version: newVersion } diff --git a/contracts/dao/extensions/aibtc-onchain-messaging.clar b/contracts/dao/extensions/aibtc-onchain-messaging.clar index d654df7..9cf79bb 100644 --- a/contracts/dao/extensions/aibtc-onchain-messaging.clar +++ b/contracts/dao/extensions/aibtc-onchain-messaging.clar @@ -32,6 +32,7 @@ height: stacks-block-height, isFromDao: isFromDao, txSender: tx-sender, + messageLength: (len msg) } }) (ok true) diff --git a/contracts/dao/extensions/aibtc-timed-vault-dao.clar b/contracts/dao/extensions/aibtc-timed-vault-dao.clar index fce9fc8..668f078 100644 --- a/contracts/dao/extensions/aibtc-timed-vault-dao.clar +++ b/contracts/dao/extensions/aibtc-timed-vault-dao.clar @@ -103,7 +103,10 @@ amount: (var-get withdrawalAmount), contractCaller: contract-caller, recipient: (var-get accountHolder), - txSender: tx-sender + txSender: tx-sender, + withdrawalPeriod: (var-get withdrawalPeriod), + lastWithdrawalBlock: (var-get lastWithdrawalBlock), + newLastWithdrawalBlock: burn-block-height } }) (as-contract (contract-call? .aibtc-token transfer (var-get withdrawalAmount) SELF (var-get accountHolder) none)) diff --git a/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar b/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar index 3429a81..4606cce 100644 --- a/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar +++ b/contracts/dao/extensions/aibtc-timed-vault-sbtc.clar @@ -103,7 +103,10 @@ amount: (var-get withdrawalAmount), contractCaller: contract-caller, recipient: (var-get accountHolder), - txSender: tx-sender + txSender: tx-sender, + withdrawalPeriod: (var-get withdrawalPeriod), + lastWithdrawalBlock: (var-get lastWithdrawalBlock), + newLastWithdrawalBlock: burn-block-height } }) (as-contract (contract-call? 'STV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RJ5XDY2.sbtc-token transfer (var-get withdrawalAmount) SELF (var-get accountHolder) none)) diff --git a/contracts/dao/extensions/aibtc-timed-vault-stx.clar b/contracts/dao/extensions/aibtc-timed-vault-stx.clar index 7072036..4d6e1a7 100644 --- a/contracts/dao/extensions/aibtc-timed-vault-stx.clar +++ b/contracts/dao/extensions/aibtc-timed-vault-stx.clar @@ -99,7 +99,10 @@ amount: (var-get withdrawalAmount), contractCaller: contract-caller, recipient: (var-get accountHolder), - txSender: tx-sender + txSender: tx-sender, + withdrawalPeriod: (var-get withdrawalPeriod), + lastWithdrawalBlock: (var-get lastWithdrawalBlock), + newLastWithdrawalBlock: burn-block-height } }) (as-contract (stx-transfer? (var-get withdrawalAmount) SELF (var-get accountHolder))) diff --git a/contracts/dao/extensions/aibtc-token-owner.clar b/contracts/dao/extensions/aibtc-token-owner.clar index 68ca1a6..15a582d 100644 --- a/contracts/dao/extensions/aibtc-token-owner.clar +++ b/contracts/dao/extensions/aibtc-token-owner.clar @@ -25,6 +25,15 @@ (try! (is-dao-or-extension)) ;; update token uri (try! (as-contract (contract-call? .aibtc-token set-token-uri value))) + ;; print event + (print { + notification: "set-token-uri", + payload: { + contractCaller: contract-caller, + txSender: tx-sender, + value: value + } + }) (ok true) ) ) @@ -36,6 +45,15 @@ (try! (is-dao-or-extension)) ;; transfer ownership (try! (as-contract (contract-call? .aibtc-token set-contract-owner new-owner))) + ;; print event + (print { + notification: "transfer-ownership", + payload: { + contractCaller: contract-caller, + txSender: tx-sender, + newOwner: new-owner + } + }) (ok true) ) ) diff --git a/contracts/dao/extensions/aibtc-treasury.clar b/contracts/dao/extensions/aibtc-treasury.clar index ab93fe9..8a08c3f 100644 --- a/contracts/dao/extensions/aibtc-treasury.clar +++ b/contracts/dao/extensions/aibtc-treasury.clar @@ -64,7 +64,8 @@ amount: amount, contractCaller: contract-caller, recipient: TREASURY, - txSender: tx-sender + txSender: tx-sender, + balance: (stx-get-balance TREASURY) } }) (stx-transfer? amount tx-sender TREASURY) @@ -117,7 +118,8 @@ amount: amount, contractCaller: contract-caller, recipient: recipient, - txSender: tx-sender + txSender: tx-sender, + balance: (stx-get-balance TREASURY) } }) (as-contract (stx-transfer? amount TREASURY recipient)) @@ -135,7 +137,8 @@ assetContract: (contract-of ft), contractCaller: contract-caller, recipient: recipient, - txSender: tx-sender + txSender: tx-sender, + amount: amount } }) (as-contract (contract-call? ft transfer amount TREASURY recipient none)) @@ -154,7 +157,8 @@ contractCaller: contract-caller, recipient: recipient, txSender: tx-sender, - tokenId: id + tokenId: id, + amount: u1 } }) (as-contract (contract-call? nft transfer id TREASURY recipient)) From 0597c9bc2913f8318d81a433ef225a0131156ac5 Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 12:40:11 -0700 Subject: [PATCH 09/13] fix: restore v1 proposal contracts to prev state --- .../dao/extensions/aibtc-action-proposals.clar | 13 +++---------- contracts/dao/extensions/aibtc-core-proposals.clar | 13 +++---------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/contracts/dao/extensions/aibtc-action-proposals.clar b/contracts/dao/extensions/aibtc-action-proposals.clar index d5747af..c7a3859 100644 --- a/contracts/dao/extensions/aibtc-action-proposals.clar +++ b/contracts/dao/extensions/aibtc-action-proposals.clar @@ -93,14 +93,11 @@ proposalId: newId, action: action, parameters: parameters, - contractCaller: contract-caller, creator: tx-sender, liquidTokens: liquidTokens, startBlockStx: block-height, startBlock: burn-block-height, - endBlock: (+ burn-block-height VOTING_PERIOD), - votingPeriod: VOTING_PERIOD, - votingQuorum: VOTING_QUORUM + endBlock: (+ burn-block-height VOTING_PERIOD) } }) ;; create the proposal @@ -146,10 +143,8 @@ notification: "vote-on-proposal", payload: { proposalId: proposalId, - contractCaller: contract-caller, voter: tx-sender, - amount: senderBalance, - vote: vote + amount: senderBalance } }) ;; update the proposal record @@ -184,9 +179,7 @@ notification: "conclude-proposal", payload: { proposalId: proposalId, - passed: votePassed, - contractCaller: contract-caller, - txSender: tx-sender + passed: votePassed } }) ;; update the proposal record diff --git a/contracts/dao/extensions/aibtc-core-proposals.clar b/contracts/dao/extensions/aibtc-core-proposals.clar index 75dceb0..32f45a6 100644 --- a/contracts/dao/extensions/aibtc-core-proposals.clar +++ b/contracts/dao/extensions/aibtc-core-proposals.clar @@ -91,14 +91,11 @@ notification: "create-proposal", payload: { proposal: proposalContract, - contractCaller: contract-caller, creator: tx-sender, liquidTokens: liquidTokens, startBlockStx: block-height, startBlock: burn-block-height, - endBlock: (+ burn-block-height VOTING_PERIOD), - votingPeriod: VOTING_PERIOD, - votingQuorum: VOTING_QUORUM + endBlock: (+ burn-block-height VOTING_PERIOD) } }) ;; create the proposal @@ -142,10 +139,8 @@ notification: "vote-on-proposal", payload: { proposal: proposalContract, - contractCaller: contract-caller, voter: tx-sender, - amount: senderBalance, - vote: vote + amount: senderBalance } }) ;; update the proposal record @@ -179,9 +174,7 @@ notification: "conclude-proposal", payload: { proposal: proposalContract, - passed: votePassed, - contractCaller: contract-caller, - txSender: tx-sender + passed: votePassed } }) ;; update the proposal record From e2fde7caac9f3bdb935a7742b8cdedb5ee044d88 Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 13:01:57 -0700 Subject: [PATCH 10/13] fix: match format in #63 --- contracts/dao/token/aibtc-token.clar | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/contracts/dao/token/aibtc-token.clar b/contracts/dao/token/aibtc-token.clar index b49624e..34a09c3 100644 --- a/contracts/dao/token/aibtc-token.clar +++ b/contracts/dao/token/aibtc-token.clar @@ -7,7 +7,7 @@ (define-constant ERR-NOT-AUTHORIZED u401) (define-constant ERR-NOT-OWNER u402) -(define-fungible-token SYMBOL MAX) ;; <%= it.token_symbol %> +(define-fungible-token SYMBOL-AIBTC-DAO MAX) ;; <%= it.token_symbol %> (define-constant MAX u100000000000000000) ;; <%= it.token_max_supply %> (define-data-var contract-owner principal .aibtc-token-owner) ;; <%= it.token_owner %> (define-data-var token-uri (optional (string-utf8 256)) (some u"<%= it.token_uri %>")) @@ -17,7 +17,7 @@ (begin (asserts! (is-eq tx-sender sender) (err ERR-NOT-AUTHORIZED)) (and (is-some memo) (is-some (print memo))) - (ft-transfer? SYMBOL amount sender recipient) ;; <%= it.token_symbol %> + (ft-transfer? SYMBOL-AIBTC-DAO amount sender recipient) ;; <%= it.token_symbol %> ) ) @@ -37,15 +37,15 @@ ) (define-read-only (get-balance (account principal)) - (ok (ft-get-balance SYMBOL account)) ;; <%= it.token_symbol %> + (ok (ft-get-balance SYMBOL-AIBTC-DAO account)) ;; <%= it.token_symbol %> ) (define-read-only (get-name) - (ok "NAME") ;; <%= it.token_name %> + (ok "SYMBOL-AIBTC-DAO") ;; <%= it.token_name %> ) (define-read-only (get-symbol) - (ok "SYMBOL") ;; <%= it.token_symbol %> + (ok "SYMBOL-AIBTC-DAO") ;; <%= it.token_symbol %> ) (define-read-only (get-decimals) @@ -53,7 +53,7 @@ ) (define-read-only (get-total-supply) - (ok (ft-get-supply SYMBOL)) ;; <%= it.token_symbol %> + (ok (ft-get-supply SYMBOL-AIBTC-DAO)) ;; <%= it.token_symbol %> ) (define-read-only (get-token-uri) @@ -92,14 +92,14 @@ (begin ;; ft distribution - (try! (ft-mint? SYMBOL (/ (* MAX u80) u100) .aibtc-treasury)) ;; 80% treasury SPVMS254T8Q0RXQP95Y01T7KBHZV91X88CDK48QH - (try! (ft-mint? SYMBOL (/ (* MAX u16) u100) .aibtc-token-dex)) ;; 16% dex SPVMS254T8Q0RXQP95Y01T7KBHZV91X88CDK48QH - (try! (ft-mint? SYMBOL (/ (* MAX u4) u100) .aibtc-pre-dex)) ;; 4% pre-launch SPVMS254T8Q0RXQP95Y01T7KBHZV91X88CDK48QH + (try! (ft-mint? SYMBOL-AIBTC-DAO (/ (* MAX u80) u100) .aibtc-treasury)) ;; 80% treasury SPVMS254T8Q0RXQP95Y01T7KBHZV91X88CDK48QH + (try! (ft-mint? SYMBOL-AIBTC-DAO (/ (* MAX u16) u100) .aibtc-token-dex)) ;; 16% dex SPVMS254T8Q0RXQP95Y01T7KBHZV91X88CDK48QH + (try! (ft-mint? SYMBOL-AIBTC-DAO (/ (* MAX u4) u100) .aibtc-pre-dex)) ;; 4% pre-launch SPVMS254T8Q0RXQP95Y01T7KBHZV91X88CDK48QH (print { type: "faktory-trait-v1", name: "NAME", ;; <%= it.token_name %> - symbol: "SYMBOL", ;; <%= it.token_symbol %> + symbol: "SYMBOL-AIBTC-DAO", ;; <%= it.token_symbol %> token-uri: u"<%= it.token_uri %>", tokenContract: (as-contract tx-sender), supply: MAX, From 70876a79f1bccaf0cf9174f2abf7e7f8e685c14d Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 13:04:07 -0700 Subject: [PATCH 11/13] fix: udpate tests to support new symbol --- tests/aibtc-user-agent-account.test.ts | 4 ++-- tests/dao/token/aibtc-token.test.ts | 2 +- tests/test-utilities.ts | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/aibtc-user-agent-account.test.ts b/tests/aibtc-user-agent-account.test.ts index 00bd751..984e616 100644 --- a/tests/aibtc-user-agent-account.test.ts +++ b/tests/aibtc-user-agent-account.test.ts @@ -64,7 +64,7 @@ function setupAccount(sender: string, satsAmount: number = 1000000) { // get our balances from the assets map const balancesMap = simnet.getAssetsMap(); dbgLog(balancesMap); - const aibtcKey = ".aibtc-token.SYMBOL"; + const aibtcKey = ".aibtc-token.SYMBOL-AIBTC-DAO"; const sbtcKey = ".sbtc-token.sbtc-token"; const stxKey = "STX"; const deployerBalances = { @@ -1556,7 +1556,7 @@ describe(`public functions: ${contractName}`, () => { // get our balances from the assets map const balancesMap = simnet.getAssetsMap(); dbgLog(balancesMap); - const aibtcKey = ".aibtc-token.SYMBOL"; + const aibtcKey = ".aibtc-token.SYMBOL-AIBTC-DAO"; const sbtcKey = ".sbtc-token.sbtc-token"; const stxKey = "STX"; const accountBalances = { diff --git a/tests/dao/token/aibtc-token.test.ts b/tests/dao/token/aibtc-token.test.ts index 24bf08f..b9b2bd8 100644 --- a/tests/dao/token/aibtc-token.test.ts +++ b/tests/dao/token/aibtc-token.test.ts @@ -17,6 +17,6 @@ describe(`token: ${contractName}`, () => { [], deployer ).result; - expect(result).toBeOk(Cl.stringAscii("SYMBOL")); + expect(result).toBeOk(Cl.stringAscii("SYMBOL-AIBTC-DAO")); }); }); diff --git a/tests/test-utilities.ts b/tests/test-utilities.ts index bc99df2..156efc5 100644 --- a/tests/test-utilities.ts +++ b/tests/test-utilities.ts @@ -202,7 +202,8 @@ export function fundVoters( const getDaoTokensEvent = getDaoTokensReceipt.events.find( (eventRecord) => eventRecord.event === "ft_transfer_event" && - eventRecord.data?.asset_identifier === `${tokenContractAddress}::SYMBOL` + eventRecord.data?.asset_identifier === + `${tokenContractAddress}::SYMBOL-AIBTC-DAO` ); expect(getDaoTokensEvent).toBeDefined(); const daoTokensAmount = parseInt(getDaoTokensEvent!.data.amount); From b08383ddfb91f29354936e0dba5e935296d60bd8 Mon Sep 17 00:00:00 2001 From: "Jason Schrader (aider)" Date: Fri, 18 Apr 2025 13:05:32 -0700 Subject: [PATCH 12/13] test: Add tests for read-only functions in the token contract --- tests/dao/token/aibtc-token.test.ts | 70 +++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/tests/dao/token/aibtc-token.test.ts b/tests/dao/token/aibtc-token.test.ts index b9b2bd8..539880e 100644 --- a/tests/dao/token/aibtc-token.test.ts +++ b/tests/dao/token/aibtc-token.test.ts @@ -1,5 +1,6 @@ import { Cl } from "@stacks/transactions"; import { describe, expect, it } from "vitest"; +import { ResponseOkCV } from "@stacks/stacks-transactions"; const accounts = simnet.getAccounts(); const deployer = accounts.get("deployer")!; @@ -8,6 +9,8 @@ const address2 = accounts.get("wallet_2")!; const contractName = "aibtc-token"; const contractAddress = `${deployer}.${contractName}`; +const tokenOwnerAddress = `${deployer}.aibtc-token-owner`; +const treasuryAddress = `${deployer}.aibtc-treasury`; describe(`token: ${contractName}`, () => { it("get-symbol() should return the token symbol", () => { @@ -19,4 +22,71 @@ describe(`token: ${contractName}`, () => { ).result; expect(result).toBeOk(Cl.stringAscii("SYMBOL-AIBTC-DAO")); }); + + it("get-name() should return the token name", () => { + const result = simnet.callReadOnlyFn( + contractAddress, + "get-name", + [], + deployer + ).result; + expect(result).toBeOk(Cl.stringAscii("SYMBOL-AIBTC-DAO")); + }); + + it("get-decimals() should return the token decimals", () => { + const result = simnet.callReadOnlyFn( + contractAddress, + "get-decimals", + [], + deployer + ).result; + expect(result).toBeOk(Cl.uint(8)); + }); + + it("get-total-supply() should return the total supply", () => { + const expectedTotalSupply = 100000000000000000n; + const result = simnet.callReadOnlyFn( + contractAddress, + "get-total-supply", + [], + deployer + ).result; + expect(result).toBeOk(Cl.uint(expectedTotalSupply)); + }); + + it("get-token-uri() should return the token URI", () => { + const result = simnet.callReadOnlyFn( + contractAddress, + "get-token-uri", + [], + deployer + ).result; + // The token URI is set in the contract initialization + expect(result).toBeOk(Cl.some(Cl.stringUtf8(""))); + }); + + it("get-balance() should return the balance for an account", () => { + // Check treasury balance (should have 80% of total supply) + const totalSupply = 100000000000000000n; + const expectedTreasuryBalance = (totalSupply * 80n) / 100n; + + const treasuryBalanceResult = simnet.callReadOnlyFn( + contractAddress, + "get-balance", + [Cl.principal(treasuryAddress)], + deployer + ).result; + + expect(treasuryBalanceResult).toBeOk(Cl.uint(expectedTreasuryBalance)); + + // Check a user with no balance + const userBalanceResult = simnet.callReadOnlyFn( + contractAddress, + "get-balance", + [Cl.principal(address1)], + deployer + ).result; + + expect(userBalanceResult).toBeOk(Cl.uint(0)); + }); }); From efd17222c13b41784a12251f9ffe1cd2967ce66b Mon Sep 17 00:00:00 2001 From: Jason Schrader Date: Fri, 18 Apr 2025 13:08:43 -0700 Subject: [PATCH 13/13] fix: adjust uri result, formatting cleanup --- tests/dao/token/aibtc-token.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/dao/token/aibtc-token.test.ts b/tests/dao/token/aibtc-token.test.ts index 539880e..5e985f4 100644 --- a/tests/dao/token/aibtc-token.test.ts +++ b/tests/dao/token/aibtc-token.test.ts @@ -62,23 +62,23 @@ describe(`token: ${contractName}`, () => { deployer ).result; // The token URI is set in the contract initialization - expect(result).toBeOk(Cl.some(Cl.stringUtf8(""))); + expect(result).toBeOk(Cl.some(Cl.stringUtf8("<%= it.token_uri %>"))); // template placeholder }); it("get-balance() should return the balance for an account", () => { // Check treasury balance (should have 80% of total supply) const totalSupply = 100000000000000000n; const expectedTreasuryBalance = (totalSupply * 80n) / 100n; - + const treasuryBalanceResult = simnet.callReadOnlyFn( contractAddress, "get-balance", [Cl.principal(treasuryAddress)], deployer ).result; - + expect(treasuryBalanceResult).toBeOk(Cl.uint(expectedTreasuryBalance)); - + // Check a user with no balance const userBalanceResult = simnet.callReadOnlyFn( contractAddress, @@ -86,7 +86,7 @@ describe(`token: ${contractName}`, () => { [Cl.principal(address1)], deployer ).result; - + expect(userBalanceResult).toBeOk(Cl.uint(0)); }); });