From cbd021ad42b7ec0470e4e55c53c8f10ee7eaf20e Mon Sep 17 00:00:00 2001 From: Kyle Fang Date: Sun, 17 Mar 2024 09:31:50 +0800 Subject: [PATCH] feat: vendoring sip-010-trait for regtest --- Clarinet.toml | 4 +++ contracts/aux/lqstx-mint-registry.clar | 21 +++++++++------- contracts/deployed/lqstx-mint-endpoint.clar | 14 +++++++---- contracts/extensions/lqstx-mint-endpoint.clar | 4 +++ contracts/regtest-boot.clar | 10 ++++---- contracts/traits/sip-010-trait.clar | 25 +++++++++++++++++++ 6 files changed, 59 insertions(+), 19 deletions(-) create mode 100644 contracts/traits/sip-010-trait.clar diff --git a/Clarinet.toml b/Clarinet.toml index 64b4b32..87158f8 100644 --- a/Clarinet.toml +++ b/Clarinet.toml @@ -35,6 +35,10 @@ epoch = 2.4 path = "contracts/extensions/token-vesting.clar" epoch = 2.4 +[contracts.sip-010-trait] +path = "contracts/traits/sip-010-trait.clar" +epoch = 2.4 + [contracts.strategy-trait] path = "contracts/traits/strategy-trait.clar" epoch = 2.4 diff --git a/contracts/aux/lqstx-mint-registry.clar b/contracts/aux/lqstx-mint-registry.clar index ae4b603..58eb774 100644 --- a/contracts/aux/lqstx-mint-registry.clar +++ b/contracts/aux/lqstx-mint-registry.clar @@ -5,7 +5,10 @@ ;; lqstx-mint-registry ;; +;; __IF_MAINNET__ (use-trait sip-010-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait) +;; (use-trait sip-010-trait .sip-010-trait.sip-010-trait) +;; __ENDIF__ (define-constant err-unauthorised (err u1000)) (define-constant err-unknown-request-id (err u1008)) @@ -29,7 +32,7 @@ (define-read-only (is-dao-or-extension) (ok (asserts! (or (is-eq tx-sender .lisa-dao) (contract-call? .lisa-dao is-extension contract-caller)) err-unauthorised))) - + (define-read-only (get-mint-request-nonce) (var-get mint-request-nonce)) @@ -40,7 +43,7 @@ (ok (unwrap! (map-get? mint-requests request-id) err-unknown-request-id))) (define-read-only (get-burn-request-or-fail (request-id uint)) - (ok (unwrap! (map-get? burn-requests request-id) err-unknown-request-id))) + (ok (unwrap! (map-get? burn-requests request-id) err-unknown-request-id))) (define-read-only (get-mint-requests-pending-or-default (user principal)) (default-to (list ) (map-get? mint-requests-pending user))) @@ -71,29 +74,29 @@ ) (try! (is-dao-or-extension)) (map-set burn-requests id details) - (ok id))) + (ok id))) (define-public (set-mint-requests-pending (requested-by principal) (new-list (list 1000 uint))) - (begin + (begin (try! (is-dao-or-extension)) (ok (map-set mint-requests-pending requested-by new-list)))) (define-public (set-burn-requests-pending (requested-by principal) (new-list (list 1000 uint))) - (begin + (begin (try! (is-dao-or-extension)) (ok (map-set burn-requests-pending requested-by new-list)))) (define-public (set-mint-requests-pending-amount (new-amount uint)) - (begin + (begin (try! (is-dao-or-extension)) (ok (var-set mint-requests-pending-amount new-amount)))) (define-public (transfer (amount uint) (recipient principal) (token-trait )) - (begin + (begin (try! (is-dao-or-extension)) (as-contract (contract-call? token-trait transfer amount tx-sender recipient none)))) (define-public (stx-transfer (amount uint) (recipient principal)) - (begin + (begin (try! (is-dao-or-extension)) - (as-contract (stx-transfer? amount tx-sender recipient)))) \ No newline at end of file + (as-contract (stx-transfer? amount tx-sender recipient)))) diff --git a/contracts/deployed/lqstx-mint-endpoint.clar b/contracts/deployed/lqstx-mint-endpoint.clar index f8356e1..c4cdf1f 100644 --- a/contracts/deployed/lqstx-mint-endpoint.clar +++ b/contracts/deployed/lqstx-mint-endpoint.clar @@ -4,7 +4,11 @@ ;; ;; lqstx-mint-endpoint ;; + +;; __IF_MAINNET__ (use-trait sip-010-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait) +;; (use-trait sip-010-trait .sip-010-trait.sip-010-trait) +;; __ENDIF__ (use-trait rebase-strategy-trait .rebase-strategy-trait.rebase-strategy-trait) (define-constant err-unauthorised (err u1000)) @@ -82,7 +86,7 @@ ;; (some (contract-call? 'SP000000000000000000002Q6VF78.pox-3 current-pox-reward-cycle))) (if (>= stacks-height (var-get activation-block)) (some (/ (- stacks-height (var-get activation-block)) (var-get reward-cycle-length))) - none)) + none)) ;; @dev used for testing only (define-read-only (get-first-stacks-block-in-reward-cycle (reward-cycle uint)) @@ -98,12 +102,12 @@ ;; governance calls (define-public (set-use-whitelist (new-use bool)) - (begin + (begin (try! (is-dao-or-extension)) (ok (var-set use-whitelist new-use)))) (define-public (set-whitelisted (user principal) (new-whitelisted bool)) - (begin + (begin (try! (is-dao-or-extension)) (set-whitelisted-private user new-whitelisted))) @@ -189,7 +193,7 @@ (try! (contract-call? .lqstx-mint-registry set-burn-requests-pending sender (unwrap-panic (as-max-len? (append (get-burn-requests-pending-or-default sender) request-id) u1000)))) (match (contract-call? rebase-trait finalize-burn request-id) ok-value (ok { request-id: request-id, status: FINALIZED }) - err-value (begin (print { type: "burn-request", id: request-id, details: request-details, finalize-err: err-value }) (ok { request-id: request-id, status: PENDING }))))) + err-value (begin (print { type: "burn-request", id: request-id, details: request-details, finalize-err: err-value }) (ok { request-id: request-id, status: PENDING }))))) (define-public (finalize-burn (request-id uint)) (let ( @@ -197,7 +201,7 @@ (transfer-vlqstx (try! (contract-call? .lqstx-mint-registry transfer (get wrapped-amount request-details) (as-contract tx-sender) .token-vlqstx))) (burn-requests (get-burn-requests-pending-or-default (get requested-by request-details))) (validation-data (try! (validate-burn-request request-id)))) - (try! (is-paused-or-fail)) + (try! (is-paused-or-fail)) (try! (is-dao-or-extension)) (try! (contract-call? .token-vlqstx burn (get wrapped-amount request-details) (as-contract tx-sender))) (try! (contract-call? .token-lqstx dao-burn (get vaulted-amount validation-data) (as-contract tx-sender))) diff --git a/contracts/extensions/lqstx-mint-endpoint.clar b/contracts/extensions/lqstx-mint-endpoint.clar index ea295bf..2725804 100644 --- a/contracts/extensions/lqstx-mint-endpoint.clar +++ b/contracts/extensions/lqstx-mint-endpoint.clar @@ -4,7 +4,11 @@ ;; ;; lqstx-mint-endpoint-v1-01 ;; + +;; __IF_MAINNET__ (use-trait sip-010-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait) +;; (use-trait sip-010-trait .sip-010-trait.sip-010-trait) +;; __ENDIF__ (define-constant err-unauthorised (err u1000)) (define-constant err-paused (err u1001)) diff --git a/contracts/regtest-boot.clar b/contracts/regtest-boot.clar index d72d828..1a244b2 100644 --- a/contracts/regtest-boot.clar +++ b/contracts/regtest-boot.clar @@ -9,21 +9,21 @@ {extension: .lqstx-mint-endpoint, enabled: false} {extension: .lqstx-mint-endpoint-v1-01, enabled: true} {extension: .lisa-rebase, enabled: true} - {extension: .rebase-mock, enabled: true} + {extension: .rebase-1, enabled: true} {extension: .mock-strategy-manager, enabled: true} {extension: .lqstx-vault, enabled: true} - {extension: .operators, enabled: true} + {extension: .operators, enabled: true} ))) - + ;; Set initial operators (try! (contract-call? .operators set-operators (list - {operator: tx-sender, enabled: true} + {operator: tx-sender, enabled: true} {operator: 'ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM, enabled: true} {operator: 'ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND, enabled: true} {operator: 'ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB, enabled: true} ))) (try! (contract-call? .operators set-proposal-threshold 2)) - + (try! (contract-call? .lqstx-mint-endpoint-v1-01 set-paused false)) (try! (contract-call? .lqstx-mint-endpoint-v1-01 set-mint-delay u14)) (try! (contract-call? .mock-strategy-manager set-authorised-manager 'ST2QXSK64YQX3CQPC530K79XWQ98XFAM9W3XKEH3N true)) diff --git a/contracts/traits/sip-010-trait.clar b/contracts/traits/sip-010-trait.clar new file mode 100644 index 0000000..7c93652 --- /dev/null +++ b/contracts/traits/sip-010-trait.clar @@ -0,0 +1,25 @@ +;; https://explorer.hiro.so/txid/SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard +(define-trait sip-010-trait + ( + ;; Transfer from the caller to a new principal + (transfer (uint principal principal (optional (buff 34))) (response bool uint)) + + ;; the human readable name of the token + (get-name () (response (string-ascii 32) uint)) + + ;; the ticker symbol, or empty if none + (get-symbol () (response (string-ascii 32) uint)) + + ;; the number of decimals used, e.g. 6 would mean 1_000_000 represents 1 token + (get-decimals () (response uint uint)) + + ;; the balance of the passed principal + (get-balance (principal) (response uint uint)) + + ;; the current total supply (which does not need to be a constant) + (get-total-supply () (response uint uint)) + + ;; an optional URI that represents metadata of this token + (get-token-uri () (response (optional (string-utf8 256)) uint)) + ) +)