Skip to content
This repository was archived by the owner on Mar 18, 2026. It is now read-only.

Commit f41fa2d

Browse files
authored
Merge pull request #66 from aibtcdev/fix/settings-and-revisions
updates and revisions
2 parents 154bd09 + efd1722 commit f41fa2d

69 files changed

Lines changed: 408 additions & 151 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

aibtc-dao-consistency-report.md

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# AIBTC DAO Platform Consistency Analysis
2+
3+
## 1. Error Code Definitions
4+
5+
### Inconsistency:
6+
- Some contracts use `ERR_` prefix (most common)
7+
- Some use full words like `INPUT_ERROR` (in `aibtc-onchain-messaging.clar`)
8+
- Some use shorter forms like `ERR_UNAUTHORIZED` vs `ERR_NOT_DAO_OR_EXTENSION`
9+
10+
### Recommendation:
11+
Standardize all error codes with the `ERR_` prefix followed by a descriptive name in uppercase with underscores.
12+
13+
## 2. Print Event Notifications
14+
15+
### Inconsistency:
16+
- Most contracts use a structured format with `notification` and `payload` fields
17+
- The payload structure varies between contracts
18+
- Some print events include more fields than others for similar actions
19+
20+
### Recommendation:
21+
Standardize the print event structure across all contracts:
22+
```
23+
(print {
24+
notification: "[action-name]",
25+
payload: {
26+
// Consistent set of fields based on action type
27+
}
28+
})
29+
```
30+
31+
## 3. Function Naming Conventions
32+
33+
### Inconsistency:
34+
- Some functions use hyphenated names (`set-payment-address`)
35+
- Similar functions have different names across contracts (e.g., `toggle-resource` vs `allow-asset`)
36+
- Some functions have inconsistent verb usage (e.g., `get-` vs direct noun)
37+
38+
### Recommendation:
39+
Standardize function naming with consistent verbs:
40+
- Use `get-` prefix for all read-only functions
41+
- Use `set-` prefix for state-changing functions that update a single value
42+
- Use consistent action verbs (`add-`, `remove-`, `toggle-`, etc.)
43+
44+
## 4. Variable Naming
45+
46+
### Inconsistency:
47+
- Some variables use camelCase (`lastWithdrawalBlock`)
48+
- Others use kebab-case in function parameters
49+
- Inconsistent abbreviations (e.g., `pmt` vs `payment`)
50+
51+
### Recommendation:
52+
Standardize on kebab-case for all function parameters and consistent abbreviations throughout.
53+
54+
## 5. Constants Naming
55+
56+
### Inconsistency:
57+
- Some constants use `CFG_` prefix (`CFG_PAYMENT_TOKEN`)
58+
- Others use descriptive names without prefixes (`VOTING_DELAY`)
59+
- Some use `SELF` while others use `TREASURY` for contract principal
60+
61+
### Recommendation:
62+
Standardize constant naming:
63+
- Use all uppercase with underscores
64+
- Use consistent prefixes for similar types of constants
65+
- Standardize on `SELF` for the contract principal reference
66+
67+
## 6. Data Structure Consistency
68+
69+
### Inconsistency:
70+
- Different naming conventions for similar data structures across contracts
71+
- Inconsistent field names in similar data structures
72+
- Varying approaches to optional fields
73+
74+
### Recommendation:
75+
Create consistent data structure templates for common concepts (proposals, resources, etc.) and use them across all contracts.
76+
77+
## 7. Specific Inconsistencies Found
78+
79+
### Payment Processor Contracts
80+
- Three nearly identical implementations (`aibtc-payment-processor-dao.clar`, `aibtc-payment-processor-stx.clar`, `aibtc-payment-processor-sbtc.clar`) with minor differences
81+
- Inconsistent handling of payment methods
82+
83+
### Timed Vault Contracts
84+
- Similar inconsistencies between `aibtc-timed-vault-dao.clar`, `aibtc-timed-vault-stx.clar`, and `aibtc-timed-vault-sbtc.clar`
85+
- Different default values for similar concepts
86+
87+
### Proposal Contracts
88+
- Inconsistent approach between `aibtc-action-proposals-v2.clar` and `aibtc-core-proposals-v2.clar`
89+
- Different voting parameter names and structures
90+
91+
### Treasury Contract
92+
- Inconsistent approach to asset management compared to other resource management
93+
94+
## 8. Documentation Style
95+
96+
### Inconsistency:
97+
- Some contracts have detailed headers with version, title, summary
98+
- Others have minimal or no documentation
99+
- Inconsistent inline commenting style
100+
101+
### Recommendation:
102+
Standardize documentation with:
103+
- Consistent header format for all contracts
104+
- Standard sections for traits, constants, data vars, etc.
105+
- Consistent inline commenting style
106+
107+
## 9. Error Handling Patterns
108+
109+
### Inconsistency:
110+
- Some functions use `try!` for authorization checks
111+
- Others use `asserts!` directly
112+
- Inconsistent error propagation
113+
114+
### Recommendation:
115+
Standardize error handling patterns:
116+
- Use `try!` consistently for authorization and external calls
117+
- Use `asserts!` for validation checks
118+
- Consistent approach to error propagation
119+
120+
## 10. Authorization Checks
121+
122+
### Inconsistency:
123+
- Some contracts check `is-dao-or-extension` at the beginning
124+
- Others perform checks later in the function
125+
- Inconsistent implementation of the check itself
126+
127+
### Recommendation:
128+
Standardize authorization checks:
129+
- Always perform them at the beginning of functions
130+
- Use consistent implementation across all contracts

contracts/dao/extensions/aibtc-action-proposals-v2.clar

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
(define-data-var concludedProposalCount uint u0) ;; total number of concluded proposals
5656
(define-data-var executedProposalCount uint u0) ;; total number of executed proposals
5757
(define-data-var lastProposalCreated uint u0) ;; block height of last proposal created
58-
(define-data-var proposalBond uint u100000000000) ;; proposal bond amount, starts at 1000 DAO tokens (8 decimals)
58+
(define-data-var proposalBond uint u250000000000) ;; action proposal bond, default 2,500 DAO tokens w/ 8 decimals
5959

6060
;; data maps
6161
;;
@@ -107,8 +107,8 @@
107107
notification: "set-proposal-bond",
108108
payload: {
109109
amount: amount,
110-
caller: contract-caller,
111-
sender: tx-sender
110+
contractCaller: contract-caller,
111+
txSender: tx-sender
112112
}
113113
})
114114
;; set the proposal bond amount
@@ -146,13 +146,17 @@
146146
proposalId: newId,
147147
action: actionContract,
148148
parameters: parameters,
149-
caller: contract-caller,
149+
contractCaller: contract-caller,
150150
creator: tx-sender,
151151
bond: bondAmount,
152152
createdAt: createdAt,
153153
startBlock: startBlock,
154154
endBlock: endBlock,
155155
liquidTokens: liquidTokens,
156+
votingPeriod: VOTING_PERIOD,
157+
votingQuorum: VOTING_QUORUM,
158+
votingThreshold: VOTING_THRESHOLD,
159+
votingDelay: VOTING_DELAY
156160
}
157161
})
158162
;; create the proposal
@@ -204,9 +208,10 @@
204208
notification: "vote-on-proposal",
205209
payload: {
206210
proposalId: proposalId,
207-
caller: contract-caller,
211+
contractCaller: contract-caller,
208212
voter: tx-sender,
209-
amount: senderBalance
213+
amount: senderBalance,
214+
vote: vote
210215
}
211216
})
212217
;; update the proposal record
@@ -256,7 +261,7 @@
256261
(print {
257262
notification: "conclude-proposal",
258263
payload: {
259-
caller: contract-caller,
264+
contractCaller: contract-caller,
260265
concludedBy: tx-sender,
261266
bond: (get bond proposalRecord),
262267
proposalId: proposalId,

contracts/dao/extensions/aibtc-core-proposals-v2.clar

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
(define-data-var concludedProposalCount uint u0) ;; total number of concluded proposals
5656
(define-data-var executedProposalCount uint u0) ;; total number of executed proposals
5757
(define-data-var lastProposalCreated uint u0) ;; block height of last proposal created
58-
(define-data-var proposalBond uint u100000000000) ;; proposal bond amount, starts at 1000 DAO tokens (8 decimals)
58+
(define-data-var proposalBond uint u25000000000000) ;; core proposal bond, default 250,000 DAO tokens w/ 8 decimals
5959
;; data maps
6060
;;
6161
(define-map Proposals
@@ -104,8 +104,8 @@
104104
notification: "set-proposal-bond",
105105
payload: {
106106
amount: amount,
107-
caller: contract-caller,
108-
sender: tx-sender
107+
contractCaller: contract-caller,
108+
txSender: tx-sender
109109
}
110110
})
111111
;; set the proposal bond amount
@@ -139,13 +139,17 @@
139139
notification: "create-proposal",
140140
payload: {
141141
proposal: proposalContract,
142-
caller: contract-caller,
142+
contractCaller: contract-caller,
143143
creator: tx-sender,
144144
bond: bondAmount,
145145
createdAt: createdAt,
146146
startBlock: startBlock,
147147
endBlock: endBlock,
148148
liquidTokens: liquidTokens,
149+
votingPeriod: VOTING_PERIOD,
150+
votingQuorum: VOTING_QUORUM,
151+
votingThreshold: VOTING_THRESHOLD,
152+
votingDelay: VOTING_DELAY
149153
}
150154
})
151155
;; create the proposal
@@ -195,9 +199,10 @@
195199
notification: "vote-on-proposal",
196200
payload: {
197201
proposal: proposalContract,
198-
caller: contract-caller,
202+
contractCaller: contract-caller,
199203
voter: tx-sender,
200-
amount: senderBalance
204+
amount: senderBalance,
205+
vote: vote
201206
}
202207
})
203208
;; update the proposal record
@@ -244,7 +249,7 @@
244249
(print {
245250
notification: "conclude-proposal",
246251
payload: {
247-
caller: contract-caller,
252+
contractCaller: contract-caller,
248253
concludedBy: tx-sender,
249254
bond: (get bond proposalRecord),
250255
proposal: proposalContract,

contracts/dao/extensions/aibtc-dao-charter.clar

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,11 @@
6969
payload: {
7070
burnHeight: burn-block-height,
7171
createdAt: stacks-block-height,
72-
caller: contract-caller,
73-
sender: tx-sender,
72+
contractCaller: contract-caller,
73+
txSender: tx-sender,
7474
dao: SELF,
7575
charter: charter,
76+
previousCharter: (var-get daoCharter),
7677
inscriptionId: inscriptionId,
7778
version: newVersion
7879
}

contracts/dao/extensions/aibtc-onchain-messaging.clar

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
;; constants
1111
;;
12-
(define-constant INPUT_ERROR (err u4000))
13-
(define-constant ERR_UNAUTHORIZED (err u4001))
12+
(define-constant ERR_INVALID_INPUT (err u4000))
13+
(define-constant ERR_NOT_DAO_OR_EXTENSION (err u4001))
1414

1515
;; public functions
1616

@@ -21,17 +21,18 @@
2121
(define-public (send (msg (string-ascii 1048576)) (isFromDao bool))
2222
(begin
2323
(and isFromDao (try! (is-dao-or-extension)))
24-
(asserts! (> (len msg) u0) INPUT_ERROR)
24+
(asserts! (> (len msg) u0) ERR_INVALID_INPUT)
2525
;; print the message as the first event
2626
(print msg)
2727
;; print the envelope info for the message
2828
(print {
2929
notification: "send",
3030
payload: {
31-
caller: contract-caller,
31+
contractCaller: contract-caller,
3232
height: stacks-block-height,
3333
isFromDao: isFromDao,
34-
sender: tx-sender,
34+
txSender: tx-sender,
35+
messageLength: (len msg)
3536
}
3637
})
3738
(ok true)
@@ -43,6 +44,6 @@
4344

4445
(define-private (is-dao-or-extension)
4546
(ok (asserts! (or (is-eq tx-sender .aibtc-base-dao)
46-
(contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
47+
(contract-call? .aibtc-base-dao is-extension contract-caller)) ERR_NOT_DAO_OR_EXTENSION
4748
))
4849
)

contracts/dao/extensions/aibtc-payment-processor-dao.clar

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
contractCaller: contract-caller,
130130
oldAddress: (var-get paymentAddress),
131131
newAddress: newAddress,
132-
txSender: tx-sender,
132+
txSender: tx-sender
133133
}
134134
})
135135
;; set new payment address

contracts/dao/extensions/aibtc-timed-vault-dao.clar

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@
7979
notification: "deposit",
8080
payload: {
8181
amount: amount,
82-
caller: contract-caller,
83-
recipient: SELF
82+
contractCaller: contract-caller,
83+
recipient: SELF,
84+
txSender: tx-sender
8485
}
8586
})
8687
(contract-call? .aibtc-token transfer amount tx-sender SELF none)
@@ -100,8 +101,12 @@
100101
notification: "withdraw",
101102
payload: {
102103
amount: (var-get withdrawalAmount),
103-
caller: contract-caller,
104-
recipient: (var-get accountHolder)
104+
contractCaller: contract-caller,
105+
recipient: (var-get accountHolder),
106+
txSender: tx-sender,
107+
withdrawalPeriod: (var-get withdrawalPeriod),
108+
lastWithdrawalBlock: (var-get lastWithdrawalBlock),
109+
newLastWithdrawalBlock: burn-block-height
105110
}
106111
})
107112
(as-contract (contract-call? .aibtc-token transfer (var-get withdrawalAmount) SELF (var-get accountHolder) none))

contracts/dao/extensions/aibtc-timed-vault-sbtc.clar

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@
7979
notification: "deposit",
8080
payload: {
8181
amount: amount,
82-
caller: contract-caller,
83-
recipient: SELF
82+
contractCaller: contract-caller,
83+
recipient: SELF,
84+
txSender: tx-sender
8485
}
8586
})
8687
(contract-call? 'STV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RJ5XDY2.sbtc-token transfer amount tx-sender SELF none)
@@ -100,8 +101,12 @@
100101
notification: "withdraw",
101102
payload: {
102103
amount: (var-get withdrawalAmount),
103-
caller: contract-caller,
104-
recipient: (var-get accountHolder)
104+
contractCaller: contract-caller,
105+
recipient: (var-get accountHolder),
106+
txSender: tx-sender,
107+
withdrawalPeriod: (var-get withdrawalPeriod),
108+
lastWithdrawalBlock: (var-get lastWithdrawalBlock),
109+
newLastWithdrawalBlock: burn-block-height
105110
}
106111
})
107112
(as-contract (contract-call? 'STV9K21TBFAK4KNRJXF5DFP8N7W46G4V9RJ5XDY2.sbtc-token transfer (var-get withdrawalAmount) SELF (var-get accountHolder) none))

contracts/dao/extensions/aibtc-timed-vault-stx.clar

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@
7575
notification: "deposit",
7676
payload: {
7777
amount: amount,
78-
caller: contract-caller,
79-
recipient: SELF
78+
contractCaller: contract-caller,
79+
recipient: SELF,
80+
txSender: tx-sender
8081
}
8182
})
8283
(stx-transfer? amount contract-caller SELF)
@@ -96,8 +97,12 @@
9697
notification: "withdraw",
9798
payload: {
9899
amount: (var-get withdrawalAmount),
99-
caller: contract-caller,
100-
recipient: (var-get accountHolder)
100+
contractCaller: contract-caller,
101+
recipient: (var-get accountHolder),
102+
txSender: tx-sender,
103+
withdrawalPeriod: (var-get withdrawalPeriod),
104+
lastWithdrawalBlock: (var-get lastWithdrawalBlock),
105+
newLastWithdrawalBlock: burn-block-height
101106
}
102107
})
103108
(as-contract (stx-transfer? (var-get withdrawalAmount) SELF (var-get accountHolder)))

0 commit comments

Comments
 (0)