mirror of
https://github.com/zhigang1992/liquid-stacking.git
synced 2026-01-12 17:23:23 +08:00
fix: flexible guards, remove as-contract where possible, remove empty callback, remove unused imports
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
(begin
|
||||
(try! (contract-call? .lisa-dao set-extensions (list
|
||||
{extension: .lqstx-mint-endpoint, enabled: true}
|
||||
{extension: .lqstx-mint-registry, enabled: true}
|
||||
{extension: .lqstx-vault, enabled: true}
|
||||
{extension: .treasury, enabled: true}
|
||||
{extension: .fastpool-strategy-manager, enabled: true}
|
||||
|
||||
@@ -17,6 +17,3 @@
|
||||
(ok total-stx)
|
||||
)
|
||||
)
|
||||
|
||||
(define-public (callback (extension principal) (payload (buff 2048)))
|
||||
(ok true))
|
||||
@@ -111,11 +111,11 @@
|
||||
(sender tx-sender)
|
||||
(cycle (unwrap-panic (get-reward-cycle block-height)))
|
||||
(request-details { requested-by: sender, amount: amount, requested-at: cycle, status: PENDING })
|
||||
(request-id (as-contract (try! (contract-call? .lqstx-mint-registry set-mint-request u0 request-details)))))
|
||||
(request-id (try! (contract-call? .lqstx-mint-registry set-mint-request u0 request-details))))
|
||||
(try! (is-paused-or-fail))
|
||||
(try! (stx-transfer? amount sender .lqstx-vault))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-requests-pending-amount (+ (get-mint-requests-pending-amount) amount))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-requests-pending sender (unwrap-panic (as-max-len? (append (get-mint-requests-pending-or-default sender) request-id) u1000)))))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-requests-pending-amount (+ (get-mint-requests-pending-amount) amount)))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-requests-pending sender (unwrap-panic (as-max-len? (append (get-mint-requests-pending-or-default sender) request-id) u1000))))
|
||||
(print { type: "mint-request", id: request-id, details: request-details })
|
||||
(ok request-id)))
|
||||
|
||||
@@ -126,10 +126,10 @@
|
||||
(request-id-idx (try! (validate-mint-request request-id))))
|
||||
(try! (is-paused-or-fail))
|
||||
(try! (is-dao-or-extension))
|
||||
(as-contract (try! (contract-call? .token-lqstx dao-mint (get amount request-details) (get requested-by request-details))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-request request-id (merge request-details { status: FINALIZED }))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-requests-pending-amount (- (get-mint-requests-pending-amount) (get amount request-details)))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-requests-pending (get requested-by request-details) (pop mint-requests request-id-idx))))
|
||||
(try! (contract-call? .token-lqstx dao-mint (get amount request-details) (get requested-by request-details)))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-request request-id (merge request-details { status: FINALIZED })))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-requests-pending-amount (- (get-mint-requests-pending-amount) (get amount request-details))))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-requests-pending (get requested-by request-details) (pop mint-requests request-id-idx)))
|
||||
(ok true)))
|
||||
|
||||
(define-public (finalize-mint-many (request-ids (list 1000 uint)))
|
||||
@@ -143,10 +143,10 @@
|
||||
(try! (is-paused-or-fail))
|
||||
(asserts! (is-eq tx-sender (get requested-by request-details)) err-unauthorised)
|
||||
(asserts! (is-eq PENDING (get status request-details)) err-request-finalized-or-revoked)
|
||||
(as-contract (try! (contract-call? .lqstx-vault proxy-call .stx-transfer-proxy (unwrap-panic (to-consensus-buff? { ustx: (get amount request-details), recipient: (get requested-by request-details) })))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-request request-id (merge request-details { status: REVOKED }))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-requests-pending-amount (- (get-mint-requests-pending-amount) (get amount request-details)))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-mint-requests-pending (get requested-by request-details) (pop mint-requests request-id-idx))))
|
||||
(try! (contract-call? .lqstx-vault proxy-call .stx-transfer-proxy (unwrap-panic (to-consensus-buff? { ustx: (get amount request-details), recipient: (get requested-by request-details) }))))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-request request-id (merge request-details { status: REVOKED })))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-requests-pending-amount (- (get-mint-requests-pending-amount) (get amount request-details))))
|
||||
(try! (contract-call? .lqstx-mint-registry set-mint-requests-pending (get requested-by request-details) (pop mint-requests request-id-idx)))
|
||||
(ok true)))
|
||||
|
||||
(define-public (request-burn (amount uint) (rebase-trait <rebase-strategy-trait>))
|
||||
@@ -156,11 +156,11 @@
|
||||
(cycle (unwrap-panic (get-reward-cycle block-height)))
|
||||
(vlqstx-amount (contract-call? .token-vlqstx get-tokens-to-shares amount))
|
||||
(request-details { requested-by: sender, amount: amount, wrapped-amount: vlqstx-amount, requested-at: cycle, status: PENDING })
|
||||
(request-id (as-contract (try! (contract-call? .lqstx-mint-registry set-burn-request u0 request-details)))))
|
||||
(request-id (try! (contract-call? .lqstx-mint-registry set-burn-request u0 request-details))))
|
||||
(try! (is-paused-or-fail))
|
||||
(try! (contract-call? .token-vlqstx mint amount sender))
|
||||
(try! (contract-call? .token-vlqstx transfer vlqstx-amount sender .lqstx-mint-registry none))
|
||||
(as-contract (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)))))
|
||||
(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 })))))
|
||||
@@ -168,16 +168,16 @@
|
||||
(define-public (finalize-burn (request-id uint))
|
||||
(let (
|
||||
(request-details (try! (get-burn-request-or-fail request-id)))
|
||||
(transfer-vlqstx (as-contract (try! (contract-call? .lqstx-mint-registry transfer (get wrapped-amount request-details) tx-sender .token-vlqstx))))
|
||||
(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-dao-or-extension))
|
||||
(as-contract (try! (contract-call? .token-vlqstx burn (get wrapped-amount request-details) tx-sender)))
|
||||
(as-contract (try! (contract-call? .token-lqstx dao-burn (get vaulted-amount validation-data) tx-sender)))
|
||||
(as-contract (try! (contract-call? .lqstx-vault proxy-call .stx-transfer-proxy (unwrap-panic (to-consensus-buff? { ustx: (get vaulted-amount validation-data), recipient: (get requested-by request-details) })))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-burn-request request-id (merge request-details { status: FINALIZED }))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-burn-requests-pending (get requested-by request-details) (pop burn-requests (get request-id-idx validation-data)))))
|
||||
(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)))
|
||||
(try! (contract-call? .lqstx-vault proxy-call .stx-transfer-proxy (unwrap-panic (to-consensus-buff? { ustx: (get vaulted-amount validation-data), recipient: (get requested-by request-details) }))))
|
||||
(try! (contract-call? .lqstx-mint-registry set-burn-request request-id (merge request-details { status: FINALIZED })))
|
||||
(try! (contract-call? .lqstx-mint-registry set-burn-requests-pending (get requested-by request-details) (pop burn-requests (get request-id-idx validation-data))))
|
||||
(ok true)))
|
||||
|
||||
(define-public (finalize-burn-many (request-ids (list 1000 uint)))
|
||||
@@ -192,16 +192,13 @@
|
||||
(try! (is-paused-or-fail))
|
||||
(asserts! (is-eq PENDING (get status request-details)) err-request-finalized-or-revoked)
|
||||
(asserts! (is-eq tx-sender (get requested-by request-details)) err-unauthorised)
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry transfer (get wrapped-amount request-details) tx-sender .token-vlqstx)))
|
||||
(as-contract (try! (contract-call? .token-vlqstx burn (get wrapped-amount request-details) tx-sender)))
|
||||
(as-contract (try! (contract-call? .token-lqstx transfer lqstx-amount tx-sender (get requested-by request-details) none)))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-burn-request request-id (merge request-details { status: REVOKED }))))
|
||||
(as-contract (try! (contract-call? .lqstx-mint-registry set-burn-requests-pending (get requested-by request-details) (pop burn-requests request-id-idx))))
|
||||
(try! (contract-call? .lqstx-mint-registry transfer (get wrapped-amount request-details) (as-contract tx-sender) .token-vlqstx))
|
||||
(try! (contract-call? .token-vlqstx burn (get wrapped-amount request-details) (as-contract tx-sender)))
|
||||
(try! (contract-call? .token-lqstx transfer lqstx-amount (as-contract tx-sender) (get requested-by request-details) none))
|
||||
(try! (contract-call? .lqstx-mint-registry set-burn-request request-id (merge request-details { status: REVOKED })))
|
||||
(try! (contract-call? .lqstx-mint-registry set-burn-requests-pending (get requested-by request-details) (pop burn-requests request-id-idx)))
|
||||
(ok true)))
|
||||
|
||||
(define-public (callback (extension principal) (payload (buff 2048)))
|
||||
(ok true))
|
||||
|
||||
(define-private (check-err (result (response bool uint)) (prior (response bool uint)))
|
||||
(match prior
|
||||
ok-value result
|
||||
|
||||
@@ -30,6 +30,3 @@
|
||||
(as-contract (contract-call? proxy proxy-call payload))
|
||||
)
|
||||
)
|
||||
|
||||
(define-public (callback (extension principal) (payload (buff 2048)))
|
||||
(ok true))
|
||||
@@ -1,5 +1,3 @@
|
||||
(impl-trait .extension-trait.extension-trait)
|
||||
|
||||
(define-constant err-unauthorised (err u1000))
|
||||
|
||||
(define-map authorised-managers principal bool)
|
||||
@@ -33,7 +31,3 @@
|
||||
(ok (map-set authorised-managers who enabled))
|
||||
)
|
||||
)
|
||||
|
||||
(define-public (callback (sender principal) (memo (buff 2048)))
|
||||
(ok true)
|
||||
)
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 2048))))
|
||||
(begin
|
||||
(asserts! (is-eq sender tx-sender) err-unauthorised)
|
||||
(asserts! (or (is-eq tx-sender sender) (is-eq contract-caller sender)) err-unauthorised)
|
||||
(try! (ft-transfer? lqstx (get-tokens-to-shares amount) sender recipient))
|
||||
(print { type: "transfer", amount: amount, sender: sender, recipient: recipient, memo: memo })
|
||||
(ok true)))
|
||||
|
||||
@@ -38,20 +38,20 @@
|
||||
|
||||
(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 2048))))
|
||||
(begin
|
||||
(asserts! (is-eq sender tx-sender) err-unauthorised)
|
||||
(asserts! (or (is-eq tx-sender sender) (is-eq contract-caller sender)) err-unauthorised)
|
||||
(try! (ft-transfer? vlqstx amount sender recipient))
|
||||
(print { type: "transfer", amount: amount, sender: sender, recipient: recipient, memo: memo })
|
||||
(ok true)))
|
||||
|
||||
(define-public (mint (amount uint) (recipient principal))
|
||||
(begin
|
||||
(asserts! (is-eq recipient tx-sender) err-unauthorised)
|
||||
(asserts! (or (is-eq tx-sender recipient) (is-eq contract-caller recipient)) err-unauthorised)
|
||||
(try! (ft-mint? vlqstx (get-tokens-to-shares amount) recipient))
|
||||
(contract-call? .token-lqstx transfer amount recipient (as-contract tx-sender) none)))
|
||||
|
||||
(define-public (burn (amount uint) (sender principal))
|
||||
(begin
|
||||
(asserts! (is-eq sender tx-sender) err-unauthorised)
|
||||
(asserts! (or (is-eq tx-sender sender) (is-eq contract-caller sender)) err-unauthorised)
|
||||
(as-contract (try! (contract-call? .token-lqstx transfer (get-shares-to-tokens amount) tx-sender sender none)))
|
||||
(ft-burn? vlqstx amount sender)))
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
;; @returns (response bool uint)/ error
|
||||
(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 2048))))
|
||||
(begin
|
||||
(asserts! (is-eq sender tx-sender) ERR-NOT-AUTHORIZED)
|
||||
(asserts! (or (is-eq tx-sender sender) (is-eq contract-caller sender)) ERR-NOT-AUTHORIZED)
|
||||
(contract-call? .token-lqstx transfer (/ (* amount (pow u10 (unwrap-panic (get-base-decimals)))) (pow-decimals)) sender recipient memo)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
import {
|
||||
deserializeTransaction,
|
||||
// broadcastTransaction,
|
||||
getNonce,
|
||||
addressToString,
|
||||
broadcastTransaction,
|
||||
TxBroadcastResult,
|
||||
} from "@stacks/transactions";
|
||||
// import { bytesToHex } from '@stacks/common';
|
||||
import { getNetwork, getStacksAddress } from "./config.ts";
|
||||
import { readPlan, verboseLog } from "./utils.ts";
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ const prepareTest = () =>
|
||||
Cl.contractPrincipal(simnet.deployer, contracts.boot),
|
||||
],
|
||||
simnet.deployer,
|
||||
),
|
||||
),
|
||||
]);
|
||||
|
||||
const requestMint = () =>
|
||||
@@ -66,7 +66,7 @@ const requestBurn = (payload: Buffer) =>
|
||||
Cl.uint(100e6)
|
||||
],
|
||||
manager
|
||||
),
|
||||
),
|
||||
tx.callPublicFn(
|
||||
contracts.rebase1,
|
||||
'rebase',
|
||||
@@ -175,13 +175,13 @@ describe(contracts.endpoint, () => {
|
||||
const blocksToMine = Number(simnet.callReadOnlyFn(contracts.endpoint, 'get-first-stacks-block-in-reward-cycle', [Cl.uint(cycle + 1n)], user).result.value) - simnet.blockHeight;
|
||||
simnet.mineEmptyBlocks(blocksToMine); // go to the next cycle
|
||||
simnet.mineEmptyBlocks(144); // mint-delay
|
||||
|
||||
|
||||
const payload = simnet.callReadOnlyFn(
|
||||
contracts.strategy,
|
||||
'create-payload',
|
||||
[Cl.uint(100e6)],
|
||||
manager
|
||||
).result.buffer;
|
||||
).result.buffer;
|
||||
const responses = requestBurn(payload);
|
||||
expect(responses[0].result).toBeOk(Cl.uint(0));
|
||||
expect(responses[1].result).toBeOk(Cl.bool(true));
|
||||
@@ -204,7 +204,7 @@ describe(contracts.endpoint, () => {
|
||||
'create-payload',
|
||||
[Cl.uint(100e6)],
|
||||
manager
|
||||
).result.buffer;
|
||||
).result.buffer;
|
||||
const burnResponses = requestBurn(payload);
|
||||
expect(burnResponses[0].result).toBeOk(Cl.uint(0));
|
||||
expect(burnResponses[1].result).toBeOk(Cl.bool(true));
|
||||
@@ -226,7 +226,7 @@ describe(contracts.endpoint, () => {
|
||||
'rebase',
|
||||
[],
|
||||
oracle
|
||||
),
|
||||
),
|
||||
tx.callPublicFn(
|
||||
contracts.rebase1,
|
||||
'finalize-burn',
|
||||
@@ -244,7 +244,7 @@ describe(contracts.endpoint, () => {
|
||||
expect(responses[1].result).toBeOk(Cl.uint(100e6));
|
||||
expect(responses[2].result).toBeOk(Cl.bool(true));
|
||||
expect(responses[3].result).toBeErr(Cl.uint(1007));
|
||||
|
||||
|
||||
});
|
||||
|
||||
it('can revoke burn', () => {
|
||||
@@ -261,7 +261,7 @@ describe(contracts.endpoint, () => {
|
||||
'create-payload',
|
||||
[Cl.uint(100e6)],
|
||||
manager
|
||||
).result.buffer;
|
||||
).result.buffer;
|
||||
const burnResponses = requestBurn(payload);
|
||||
expect(burnResponses[0].result).toBeOk(Cl.uint(0));
|
||||
expect(burnResponses[1].result).toBeOk(Cl.bool(true));
|
||||
@@ -277,7 +277,7 @@ describe(contracts.endpoint, () => {
|
||||
Cl.uint(100e6)
|
||||
],
|
||||
manager
|
||||
),
|
||||
),
|
||||
tx.callPublicFn(
|
||||
contracts.endpoint,
|
||||
'revoke-burn',
|
||||
@@ -356,7 +356,7 @@ describe(contracts.endpoint, () => {
|
||||
'finalize-mint',
|
||||
[Cl.uint(1)],
|
||||
bot
|
||||
),
|
||||
),
|
||||
tx.callPublicFn(
|
||||
contracts.endpoint,
|
||||
'request-burn',
|
||||
|
||||
Reference in New Issue
Block a user