fix: flexible guards, remove as-contract where possible, remove empty callback, remove unused imports

This commit is contained in:
MarvinJanssen
2024-03-08 15:18:45 +01:00
parent 9fc3759427
commit b2265f478e
10 changed files with 40 additions and 56 deletions

View File

@@ -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}

View File

@@ -17,6 +17,3 @@
(ok total-stx)
)
)
(define-public (callback (extension principal) (payload (buff 2048)))
(ok true))

View File

@@ -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

View File

@@ -30,6 +30,3 @@
(as-contract (contract-call? proxy proxy-call payload))
)
)
(define-public (callback (extension principal) (payload (buff 2048)))
(ok true))

View File

@@ -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)
)

View File

@@ -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)))

View File

@@ -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)))

View File

@@ -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)
)
)

View File

@@ -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";

View File

@@ -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',