Skip to content

Commit 64dad86

Browse files
authored
Merge pull request #18 from aibtcdev/feat/add-remaining-actions
Add remaining action proposals
2 parents 86248e8 + edc179e commit 64dad86

9 files changed

+176
-7
lines changed

Clarinet.toml

+25
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@ epoch = 3.0
110110

111111
# dao actions (as extensions)
112112

113+
[contracts.aibtc-action-add-resource]
114+
path = 'contracts/dao/extensions/actions/aibtc-action-add-resource.clar'
115+
clarity_version = 2
116+
epoch = 3.0
117+
118+
[contracts.aibtc-action-allow-asset]
119+
path = 'contracts/dao/extensions/actions/aibtc-action-allow-asset.clar'
120+
clarity_version = 2
121+
epoch = 3.0
122+
113123
[contracts.aibtc-action-send-message]
114124
path = 'contracts/dao/extensions/actions/aibtc-action-send-message.clar'
115125
clarity_version = 2
@@ -120,6 +130,21 @@ path = 'contracts/dao/extensions/actions/aibtc-action-set-account-holder.clar'
120130
clarity_version = 2
121131
epoch = 3.0
122132

133+
[contracts.aibtc-action-set-withdrawal-amount]
134+
path = 'contracts/dao/extensions/actions/aibtc-action-set-withdrawal-amount.clar'
135+
clarity_version = 2
136+
epoch = 3.0
137+
138+
[contracts.aibtc-action-set-withdrawal-period]
139+
path = 'contracts/dao/extensions/actions/aibtc-action-set-withdrawal-period.clar'
140+
clarity_version = 2
141+
epoch = 3.0
142+
143+
[contracts.aibtc-action-toggle-resource-by-name]
144+
path = 'contracts/dao/extensions/actions/aibtc-action-toggle-resource-by-name.clar'
145+
clarity_version = 2
146+
epoch = 3.0
147+
123148
# dao proposals
124149

125150
[contracts.aibtc-bank-account-deposit-stx]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
(impl-trait .aibtcdev-dao-traits-v1.extension)
2+
(impl-trait .aibtcdev-dao-traits-v1.action)
3+
4+
(define-constant ERR_UNAUTHORIZED (err u10001))
5+
(define-constant ERR_INVALID_PARAMS (err u10002))
6+
7+
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
8+
9+
(define-public (run (parameters (buff 2048)))
10+
(let
11+
(
12+
(paramsTuple (unwrap! (from-consensus-buff?
13+
{ name: (string-utf8 50), description: (string-utf8 255), price: uint, url: (optional (string-utf8 255)) }
14+
parameters) ERR_INVALID_PARAMS))
15+
)
16+
(try! (is-dao-or-extension))
17+
(try! (contract-call? .aibtc-payments-invoices add-resource (get name paramsTuple) (get description paramsTuple) (get price paramsTuple) (get url paramsTuple)))
18+
(ok true)
19+
)
20+
)
21+
22+
(define-private (is-dao-or-extension)
23+
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
24+
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
25+
))
26+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
(impl-trait .aibtcdev-dao-traits-v1.extension)
2+
(impl-trait .aibtcdev-dao-traits-v1.action)
3+
4+
(define-constant ERR_UNAUTHORIZED (err u10001))
5+
(define-constant ERR_INVALID_PARAMS (err u10002))
6+
7+
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
8+
9+
(define-public (run (parameters (buff 2048)))
10+
(let
11+
(
12+
(asset (unwrap! (from-consensus-buff? principal parameters) ERR_INVALID_PARAMS))
13+
)
14+
(try! (is-dao-or-extension))
15+
(contract-call? .aibtc-treasury allow-asset asset true)
16+
)
17+
)
18+
19+
(define-private (is-dao-or-extension)
20+
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
21+
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
22+
))
23+
)

contracts/dao/extensions/actions/aibtc-action-send-message.clar

+6-3
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
88

99
(define-public (run (parameters (buff 2048)))
10-
(begin
10+
(let
11+
(
12+
(message (unwrap! (from-consensus-buff? (string-ascii 2043) parameters) ERR_INVALID_PARAMS))
13+
)
1114
(try! (is-dao-or-extension))
12-
(contract-call? .aibtc-onchain-messaging send (unwrap! (from-consensus-buff? (string-ascii 2043) parameters) ERR_INVALID_PARAMS) true)
15+
(contract-call? .aibtc-onchain-messaging send message true)
1316
)
1417
)
1518

1619
(define-private (is-dao-or-extension)
1720
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
1821
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
1922
))
20-
)
23+
)

contracts/dao/extensions/actions/aibtc-action-set-account-holder.clar

+6-3
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
88

99
(define-public (run (parameters (buff 2048)))
10-
(begin
10+
(let
11+
(
12+
(accountHolder (unwrap! (from-consensus-buff? principal parameters) ERR_INVALID_PARAMS))
13+
)
1114
(try! (is-dao-or-extension))
12-
(contract-call? .aibtc-bank-account set-account-holder (unwrap! (from-consensus-buff? principal parameters) ERR_INVALID_PARAMS))
15+
(contract-call? .aibtc-bank-account set-account-holder accountHolder)
1316
)
1417
)
1518

1619
(define-private (is-dao-or-extension)
1720
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
1821
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
1922
))
20-
)
23+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
(impl-trait .aibtcdev-dao-traits-v1.extension)
2+
(impl-trait .aibtcdev-dao-traits-v1.action)
3+
4+
(define-constant ERR_UNAUTHORIZED (err u10001))
5+
(define-constant ERR_INVALID_PARAMS (err u10002))
6+
(define-constant ERR_PARAMS_OUT_OF_RANGE (err u10003))
7+
8+
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
9+
10+
(define-public (run (parameters (buff 2048)))
11+
(let
12+
(
13+
(amount (unwrap! (from-consensus-buff? uint parameters) ERR_INVALID_PARAMS))
14+
)
15+
(try! (is-dao-or-extension))
16+
;; verify within limits for low quorum
17+
;; more than 0, less than 100 STX (100_000_000)
18+
(asserts! (and (> amount u0) (< amount u100000000)) ERR_INVALID_PARAMS)
19+
(contract-call? .aibtc-bank-account set-withdrawal-amount amount)
20+
)
21+
)
22+
23+
(define-private (is-dao-or-extension)
24+
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
25+
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
26+
))
27+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
(impl-trait .aibtcdev-dao-traits-v1.extension)
2+
(impl-trait .aibtcdev-dao-traits-v1.action)
3+
4+
(define-constant ERR_UNAUTHORIZED (err u10001))
5+
(define-constant ERR_INVALID_PARAMS (err u10002))
6+
(define-constant ERR_PARAMS_OUT_OF_RANGE (err u10003))
7+
8+
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
9+
10+
(define-public (run (parameters (buff 2048)))
11+
(let
12+
(
13+
(period (unwrap! (from-consensus-buff? uint parameters) ERR_INVALID_PARAMS))
14+
)
15+
(try! (is-dao-or-extension))
16+
;; verify within limits for low quorum
17+
;; more than 6 blocks (1hr), less than 1008 blocks (~1 week)
18+
(asserts! (and (> period u6) (< period u1008)) ERR_PARAMS_OUT_OF_RANGE)
19+
(contract-call? .aibtc-bank-account set-withdrawal-period period)
20+
)
21+
)
22+
23+
(define-private (is-dao-or-extension)
24+
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
25+
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
26+
))
27+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
(impl-trait .aibtcdev-dao-traits-v1.extension)
2+
(impl-trait .aibtcdev-dao-traits-v1.action)
3+
4+
(define-constant ERR_UNAUTHORIZED (err u10001))
5+
(define-constant ERR_INVALID_PARAMS (err u10002))
6+
7+
(define-public (callback (sender principal) (memo (buff 34))) (ok true))
8+
9+
(define-public (run (parameters (buff 2048)))
10+
(let
11+
(
12+
(resourceName (unwrap! (from-consensus-buff? (string-utf8 50) parameters) ERR_INVALID_PARAMS))
13+
)
14+
(try! (is-dao-or-extension))
15+
(contract-call? .aibtc-payments-invoices toggle-resource-by-name resourceName)
16+
)
17+
)
18+
19+
(define-private (is-dao-or-extension)
20+
(ok (asserts! (or (is-eq tx-sender .aibtcdev-base-dao)
21+
(contract-call? .aibtcdev-base-dao is-extension contract-caller)) ERR_UNAUTHORIZED
22+
))
23+
)

contracts/dao/proposals/aibtc-base-bootstrap-initialization.clar

+13-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
(define-public (execute (sender principal))
66
(begin
7-
;; set initial extensions list
7+
;; set initial dao extensions list
88
(try! (contract-call? .aibtcdev-base-dao set-extensions
99
(list
1010
{extension: .aibtc-action-proposals, enabled: true}
@@ -16,6 +16,18 @@
1616
{extension: .aibtc-treasury, enabled: true}
1717
)
1818
))
19+
;; set initial action proposals list
20+
(try! (contract-call? .aibtcdev-base-dao set-extensions
21+
(list
22+
{extension: .aibtc-action-add-resource, enabled: true}
23+
{extension: .aibtc-action-allow-asset, enabled: true}
24+
{extension: .aibtc-action-send-message, enabled: true}
25+
{extension: .aibtc-action-set-account-holder, enabled: true}
26+
{extension: .aibtc-action-set-withdrawal-amount, enabled: true}
27+
{extension: .aibtc-action-set-withdrawal-period, enabled: true}
28+
{extension: .aibtc-action-toggle-resource-by-name, enabled: true}
29+
)
30+
))
1931
;; initialize action proposals
2032
(try! (contract-call? .aibtc-action-proposals set-protocol-treasury .aibtc-treasury))
2133
;; initialize core proposals

0 commit comments

Comments
 (0)