diff --git a/docker/docker-compose.dev.stacks-blockchain.yml b/docker/docker-compose.dev.stacks-blockchain.yml index d61fa5525..c226fafb5 100644 --- a/docker/docker-compose.dev.stacks-blockchain.yml +++ b/docker/docker-compose.dev.stacks-blockchain.yml @@ -1,7 +1,7 @@ version: '3.7' services: stacks-blockchain: - image: 'hirosystems/stacks-api-e2e:stacks3.0-1360a17' + image: 'hirosystems/stacks-api-e2e:stacks3.0-4d11d85' restart: on-failure environment: STACKS_EVENT_OBSERVER: host.docker.internal:3700 diff --git a/docker/docker-compose.dev.stacks-krypton.yml b/docker/docker-compose.dev.stacks-krypton.yml index b51440286..acf25aefe 100644 --- a/docker/docker-compose.dev.stacks-krypton.yml +++ b/docker/docker-compose.dev.stacks-krypton.yml @@ -1,7 +1,7 @@ version: '3.7' services: stacks-blockchain: - image: 'hirosystems/stacks-api-e2e:stacks3.0-1360a17' + image: 'hirosystems/stacks-api-e2e:stacks3.0-4d11d85' ports: - '18443:18443' # bitcoin regtest JSON-RPC interface - '18444:18444' # bitcoin regtest p2p diff --git a/package-lock.json b/package-lock.json index 98c32b961..b64bd9e7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@stacks/common": "6.10.0", "@stacks/encryption": "6.13.1", "@stacks/network": "6.11.3", - "@stacks/stacking": "6.13.1", + "@stacks/stacking": "6.13.2", "@stacks/transactions": "6.11.3", "@types/express-list-endpoints": "4.0.1", "@types/lru-cache": "5.1.1", @@ -2932,9 +2932,9 @@ } }, "node_modules/@stacks/stacking": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@stacks/stacking/-/stacking-6.13.1.tgz", - "integrity": "sha512-X0NSV5V0ynOJ2SUymSa6mNVT0K/avplF1KGWNGbBFDXBOvDMYmRCGw6mv1qQDPFx3SR7fRWCajZS3YnR0TwY/g==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@stacks/stacking/-/stacking-6.13.2.tgz", + "integrity": "sha512-4h1UQuL2+Xdra9zMqzUElvKG9X9fenuNE7hD9sIqyxyLFxeQ7gRqczmTYPsmaj4wY5004JNj+efzGJ0VmpOcAA==", "dependencies": { "@noble/hashes": "1.1.5", "@scure/base": "1.1.1", diff --git a/package.json b/package.json index 398506068..dd58b3bc2 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "@stacks/common": "6.10.0", "@stacks/encryption": "6.13.1", "@stacks/network": "6.11.3", - "@stacks/stacking": "6.13.1", + "@stacks/stacking": "6.13.2", "@stacks/transactions": "6.11.3", "@types/express-list-endpoints": "4.0.1", "@types/lru-cache": "5.1.1", diff --git a/src/tests-2.5/pox-4-btc-address-formats.ts b/src/tests-2.5/pox-4-btc-address-formats.ts index 74d75a25e..e6e740829 100644 --- a/src/tests-2.5/pox-4-btc-address-formats.ts +++ b/src/tests-2.5/pox-4-btc-address-formats.ts @@ -48,7 +48,7 @@ describe.each([P2SH_P2WPKH, P2WPKH, P2WSH, P2TR])( let stackingClient: StackingClient; let signerPrivKey: StacksPrivateKey; let signerPubKey: string; - const cycleCount = 2; + const cycleCount = 1; const { btcAddr, btcAddrDecoded, btcAddrRegtest, btcDescriptor } = addressSetup(); @@ -184,8 +184,8 @@ describe.each([P2SH_P2WPKH, P2WPKH, P2WSH, P2TR])( test('stx unlocked - RPC balance', async () => { // Wait until account has unlocked (finished Stacking cycles) - const rpcAccount = await testEnv.client.getAccount(account.stacksAddress); - await standByUntilBurnBlock(rpcAccount.unlock_height + poxInfo.reward_phase_block_length); + await standByForPoxCycle(); + await standByForPoxCycle(); // Check that STX are no longer reported as locked by the RPC endpoints: await timeout(200); // make sure unlock was processed diff --git a/src/tests-2.5/pox-4-burnchain-delegate-stx.ts b/src/tests-2.5/pox-4-burnchain-delegate-stx.ts index befcf4a61..3d09462b5 100644 --- a/src/tests-2.5/pox-4-burnchain-delegate-stx.ts +++ b/src/tests-2.5/pox-4-burnchain-delegate-stx.ts @@ -357,8 +357,8 @@ describe('PoX-4 - Stack using Bitcoin-chain delegate ops', () => { '(define-public (delegate-stx (amount-ustx uint) (delegate-to principal) (until-burn-ht (optional uint)) (pox-addr (optional (tuple (hashbytes (buff 32)) (version (buff 1)))))))', function_args: [ { - hex: '0x010000000000000000000ffd1e7ab22000', - repr: 'u4500432000000000', + hex: '0x01000000000000000000066541116e8800', + repr: 'u1800180000000000', name: 'amount-ustx', type: 'uint', }, diff --git a/src/tests-2.5/pox-4-delegate-aggregation.ts b/src/tests-2.5/pox-4-delegate-aggregation.ts index 709bc1d95..b5c032aa1 100644 --- a/src/tests-2.5/pox-4-delegate-aggregation.ts +++ b/src/tests-2.5/pox-4-delegate-aggregation.ts @@ -16,11 +16,12 @@ import { import { stxToMicroStx } from '../helpers'; import { AnchorMode, + StacksPrivateKey, bufferCV, makeContractCall, + makeRandomPrivKey, makeSTXTokenTransfer, noneCV, - randomBytes, someCV, standardPrincipalCV, uintCV, @@ -35,6 +36,9 @@ import { } from 'stacks-encoding-native-js'; import { AddressStxBalanceResponse } from '@stacks/stacks-blockchain-api-types'; import * as assert from 'assert'; +import { hexToBytes } from '@stacks/common'; +import { StackingClient } from '@stacks/stacking'; +import { getPublicKeyFromPrivate } from '@stacks/encryption'; describe('PoX-4 - Delegate aggregation increase operations', () => { const seedKey = testnetKeys[4].secretKey; @@ -51,12 +55,20 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { let poxCycleAddressIndex: bigint; + let stackingClient: StackingClient; + let signerPrivKey: StacksPrivateKey; + let signerPubKey: string; + beforeAll(() => { seedAccount = accountFromKey(seedKey); // delegatorKey = ECPair.makeRandom({ compressed: true }).privateKey!.toString('hex'); // delegateeKey = ECPair.makeRandom({ compressed: true }).privateKey!.toString('hex'); delegatorAccount = accountFromKey(delegatorKey); delegateeAccount = accountFromKey(delegateeKey); + + stackingClient = new StackingClient(delegatorAccount.stxAddr, testEnv.stacksNetwork); + signerPrivKey = makeRandomPrivKey(); + signerPubKey = getPublicKeyFromPrivate(signerPrivKey.data); }); test('Import testing accounts to bitcoind', async () => { @@ -116,7 +128,8 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { }); test('Get pox-info', async () => { - // wait until the start of the next cycle so we have enough blocks within the cycle to perform the various txs + // wait until the start of the next cycle so we have enough blocks within the cycle to perform + // the various txs poxInfo = await standByForNextPoxCycle(); [contractAddress, contractName] = poxInfo.contract_id.split('.'); expect(contractName).toBe('pox-4'); @@ -175,6 +188,7 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { let amountDelegated: bigint; let amountStackedInitial: bigint; test('Perform delegate-stack-stx operation', async () => { + await standByForPoxCycle(); // get amount delegated const getDelegationInfo1 = await readOnlyFnCall< ClarityValueTuple<{ 'amount-ustx': ClarityValueUInt }> @@ -190,7 +204,7 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { const poxInfo2 = await testEnv.client.getPox(); const startBurnHt = poxInfo2.current_burnchain_block_height as number; - amountStackedInitial = amountDelegated - 2000n; + amountStackedInitial = amountDelegated - 20000n; const txFee = 10000n; const delegateStackStxTx = await makeContractCall({ @@ -203,7 +217,7 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { uintCV(amountStackedInitial), // amount-ustx delegateeAccount.poxAddrClar, // pox-addr uintCV(startBurnHt), // start-burn-ht - uintCV(1), // lock-period, + uintCV(6), // lock-period, ], network: testEnv.stacksNetwork, anchorMode: AnchorMode.OnChainOnly, @@ -236,7 +250,7 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { ); expect(res.results[0].data).toEqual( expect.objectContaining({ - lock_period: '1', + lock_period: '6', lock_amount: amountStackedInitial.toString(), }) ); @@ -250,8 +264,20 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { }); test('Perform stack-aggregation-commit-indexed - delegator commit to stacking operation', async () => { + await standByForPoxCycle(); const poxInfo2 = await testEnv.client.getPox(); const rewardCycle = BigInt(poxInfo2.next_cycle.id); + const signerSig = hexToBytes( + stackingClient.signPoxSignature({ + topic: 'agg-commit', + poxAddress: delegateeAccount.btcAddr, + rewardCycle: Number(rewardCycle), + period: 1, + signerPrivateKey: signerPrivKey, + maxAmount: amountStackedInitial, + authId: 0, + }) + ); const stackAggrCommitTx = await makeContractCall({ senderKey: delegatorAccount.secretKey, contractAddress, @@ -260,7 +286,10 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { functionArgs: [ delegateeAccount.poxAddrClar, // pox-addr uintCV(rewardCycle), // reward-cycle - bufferCV(randomBytes(33)), // signer-key + someCV(bufferCV(signerSig)), // signer-sig + bufferCV(hexToBytes(signerPubKey)), // signer-key + uintCV(amountStackedInitial.toString()), // max-amount + uintCV(0), // auth-id ], network: testEnv.stacksNetwork, anchorMode: AnchorMode.OnChainOnly, @@ -319,29 +348,6 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { Buffer.from(delegateStackIncreaseTx.serialize()) ); - // then commit to increased amount with call to `stack-aggregation-increase` - const poxInfo2 = await testEnv.client.getPox(); - const rewardCycle = BigInt(poxInfo2.next_cycle.id); - const stackAggrIncreaseTx = await makeContractCall({ - senderKey: delegatorAccount.secretKey, - contractAddress, - contractName, - functionName: 'stack-aggregation-increase', - functionArgs: [ - delegateeAccount.poxAddrClar, // pox-addr - uintCV(rewardCycle), // reward-cycle - uintCV(poxCycleAddressIndex), // reward-cycle-index - ], - network: testEnv.stacksNetwork, - anchorMode: AnchorMode.OnChainOnly, - fee: txFee, - validateWithAbi: false, - nonce: delegateStackIncreaseTx.auth.spendingCondition.nonce + 1n, - }); - const { txId: stackAggrIncreaseTxId } = await testEnv.client.sendTransaction( - Buffer.from(stackAggrIncreaseTx.serialize()) - ); - const delegateStackIncreaseDbTx = await standByForTxSuccess(delegateStackIncreaseTxId); const delegateStackIncreaseResult = decodeClarityValue< ClarityValueResponseOk< @@ -392,6 +398,45 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { }) ); + // then commit to increased amount with call to `stack-aggregation-increase` + const poxInfo2 = await testEnv.client.getPox(); + const maxAmount = amountStackedInitial + stxToDelegateIncrease; + const rewardCycle = BigInt(poxInfo2.next_cycle.id); + const signerSig = hexToBytes( + stackingClient.signPoxSignature({ + topic: 'agg-increase', + poxAddress: delegateeAccount.btcAddr, + rewardCycle: Number(rewardCycle), + period: 1, + signerPrivateKey: signerPrivKey, + maxAmount: maxAmount, + authId: 1, + }) + ); + const stackAggrIncreaseTx = await makeContractCall({ + senderKey: delegatorAccount.secretKey, + contractAddress, + contractName, + functionName: 'stack-aggregation-increase', + functionArgs: [ + delegateeAccount.poxAddrClar, // pox-addr + uintCV(rewardCycle), // reward-cycle + uintCV(poxCycleAddressIndex), // reward-cycle-index + someCV(bufferCV(signerSig)), // signer-sig + bufferCV(hexToBytes(signerPubKey)), // signer-key + uintCV(maxAmount.toString()), // max-amount + uintCV(1), // auth-id + ], + network: testEnv.stacksNetwork, + anchorMode: AnchorMode.OnChainOnly, + fee: txFee, + validateWithAbi: false, + nonce: delegateStackIncreaseTx.auth.spendingCondition.nonce + 1n, + }); + const { txId: stackAggrIncreaseTxId } = await testEnv.client.sendTransaction( + Buffer.from(stackAggrIncreaseTx.serialize()) + ); + // validate API endpoint balance state for account const apiBalance = await fetchGet( `/extended/v1/address/${delegateeAccount.stxAddr}/stx` @@ -421,7 +466,7 @@ describe('PoX-4 - Delegate aggregation increase operations', () => { }); test('Wait for current pox cycle to complete', async () => { - const poxStatus1 = await standByForPoxCycleEnd(); + const poxStatus1 = await standByForPoxCycle(); const poxStatus2 = await standByForPoxCycle(); console.log('___Wait for current pox cycle to complete___', { pox1: { height: poxStatus1.current_burnchain_block_height, ...poxStatus1.next_cycle }, diff --git a/src/tests-2.5/pox-4-delegate-revoked-stacking.ts b/src/tests-2.5/pox-4-delegate-revoked-stacking.ts index 5db3aea4f..4c361949e 100644 --- a/src/tests-2.5/pox-4-delegate-revoked-stacking.ts +++ b/src/tests-2.5/pox-4-delegate-revoked-stacking.ts @@ -1,11 +1,12 @@ -import { hexToBytes } from '@stacks/common'; -import { poxAddressToTuple } from '@stacks/stacking'; +import { StackingClient, poxAddressToTuple } from '@stacks/stacking'; import { AddressStxBalanceResponse } from '@stacks/stacks-blockchain-api-types'; import { AnchorMode, Cl, + StacksPrivateKey, bufferCV, makeContractCall, + makeRandomPrivKey, makeSTXTokenTransfer, noneCV, randomBytes, @@ -29,6 +30,8 @@ import { standByForTxSuccess, testEnv, } from '../test-utils/test-helpers'; +import { hexToBytes } from '@stacks/common'; +import { getPublicKeyFromPrivate } from '@stacks/encryption'; describe('PoX-4 - Delegate Revoked Stacking', () => { const seedKey = testnetKeys[4].secretKey; @@ -47,10 +50,18 @@ describe('PoX-4 - Delegate Revoked Stacking', () => { let contractAddress: string; let contractName: string; + let stackingClient: StackingClient; + let signerPrivKey: StacksPrivateKey; + let signerPubKey: string; + beforeAll(() => { seedAccount = accountFromKey(seedKey); POOL = accountFromKey(delegatorKey); STACKER = accountFromKey(delegateeKey); + + stackingClient = new StackingClient(POOL.stxAddr, testEnv.stacksNetwork); + signerPrivKey = makeRandomPrivKey(); + signerPubKey = getPublicKeyFromPrivate(signerPrivKey.data); }); test('Seed delegate accounts', async () => { @@ -292,7 +303,7 @@ describe('PoX-4 - Delegate Revoked Stacking', () => { expect.objectContaining({ name: 'revoke-delegate-stx', stacker: STACKER.stxAddr, - data: { delegate_to: POOL.stxAddr }, + data: expect.objectContaining({ delegate_to: POOL.stxAddr }), }) ); @@ -303,6 +314,7 @@ describe('PoX-4 - Delegate Revoked Stacking', () => { }); test('Try to perform delegate-stack-stx - while revoked', async () => { + await standByForPoxCycle(); poxInfo = await testEnv.client.getPox(); const startBurnHt = poxInfo.current_burnchain_block_height as number; @@ -413,7 +425,17 @@ describe('PoX-4 - Delegate Revoked Stacking', () => { test('Perform stack-aggregation-commit - delegator commit to stacking operation', async () => { poxInfo = await testEnv.client.getPox(); const rewardCycle = BigInt(poxInfo.next_cycle.id); - + const signerSig = hexToBytes( + stackingClient.signPoxSignature({ + topic: 'agg-commit', + poxAddress: STACKER.btcAddr, + rewardCycle: Number(rewardCycle), + period: 1, + signerPrivateKey: signerPrivKey, + maxAmount: DELEGATE_HALF_AMOUNT, + authId: 0, + }) + ); const stackAggrCommitTx = await makeContractCall({ senderKey: POOL.secretKey, contractAddress, @@ -422,7 +444,10 @@ describe('PoX-4 - Delegate Revoked Stacking', () => { functionArgs: [ STACKER.poxAddrClar, // pox-addr uintCV(rewardCycle), // reward-cycle - bufferCV(randomBytes(33)), // signer-key + someCV(bufferCV(signerSig)), // signer-sig + bufferCV(hexToBytes(signerPubKey)), // signer-key + uintCV(DELEGATE_HALF_AMOUNT.toString()), // max-amount + uintCV(0), // auth-id ], network: testEnv.stacksNetwork, anchorMode: AnchorMode.OnChainOnly, @@ -447,7 +472,6 @@ describe('PoX-4 - Delegate Revoked Stacking', () => { }); test('Wait for current two pox cycles to complete', async () => { - await standByForPoxCycleEnd(); await standByForPoxCycle(); await standByForPoxCycle(); }); diff --git a/src/tests-2.5/pox-4-delegate-stacking.ts b/src/tests-2.5/pox-4-delegate-stacking.ts index 463750473..ab965dc89 100644 --- a/src/tests-2.5/pox-4-delegate-stacking.ts +++ b/src/tests-2.5/pox-4-delegate-stacking.ts @@ -7,7 +7,6 @@ import { readOnlyFnCall, standByForNextPoxCycle, standByForPoxCycle, - standByForPoxCycleEnd, standByForTxSuccess, standByUntilBurnBlock, testEnv, @@ -15,11 +14,12 @@ import { import { stxToMicroStx } from '../helpers'; import { AnchorMode, + StacksPrivateKey, bufferCV, makeContractCall, + makeRandomPrivKey, makeSTXTokenTransfer, noneCV, - randomBytes, someCV, standardPrincipalCV, uintCV, @@ -27,6 +27,9 @@ import { import { ClarityValueTuple, ClarityValueUInt } from 'stacks-encoding-native-js'; import { AddressStxBalanceResponse } from '@stacks/stacks-blockchain-api-types'; import * as assert from 'assert'; +import { StackingClient } from '@stacks/stacking'; +import { getPublicKeyFromPrivate } from '@stacks/encryption'; +import { hexToBytes } from '@stacks/common'; describe('PoX-4 - Delegate Stacking operations', () => { const seedKey = testnetKeys[4].secretKey; @@ -43,10 +46,18 @@ describe('PoX-4 - Delegate Stacking operations', () => { let contractAddress: string; let contractName: string; + let stackingClient: StackingClient; + let signerPrivKey: StacksPrivateKey; + let signerPubKey: string; + beforeAll(() => { seedAccount = accountFromKey(seedKey); delegatorAccount = accountFromKey(delegatorKey); delegateeAccount = accountFromKey(delegateeKey); + + stackingClient = new StackingClient(delegatorAccount.stxAddr, testEnv.stacksNetwork); + signerPrivKey = makeRandomPrivKey(); + signerPubKey = getPublicKeyFromPrivate(signerPrivKey.data); }); test('Import testing accounts to bitcoind', async () => { @@ -191,6 +202,7 @@ describe('PoX-4 - Delegate Stacking operations', () => { test('Perform delegate-stack-stx operation', async () => { // get amount delegated + await standByForPoxCycle(); const getDelegationInfo1 = await readOnlyFnCall< ClarityValueTuple<{ 'amount-ustx': ClarityValueUInt }> >( @@ -393,8 +405,21 @@ describe('PoX-4 - Delegate Stacking operations', () => { }); test('Perform stack-aggregation-commit - delegator commit to stacking operation', async () => { + await standByForPoxCycle(); const poxInfo2 = await testEnv.client.getPox(); const rewardCycle = BigInt(poxInfo2.next_cycle.id); + const coreBalanceInfo = await testEnv.client.getAccount(delegateeAccount.stxAddr); + const signerSig = hexToBytes( + stackingClient.signPoxSignature({ + topic: 'agg-commit', + poxAddress: delegateeAccount.btcAddr, + rewardCycle: Number(rewardCycle), + period: 1, + signerPrivateKey: signerPrivKey, + maxAmount: coreBalanceInfo.locked, + authId: 0, + }) + ); const stackAggrCommitTx = await makeContractCall({ senderKey: delegatorAccount.secretKey, contractAddress, @@ -403,7 +428,10 @@ describe('PoX-4 - Delegate Stacking operations', () => { functionArgs: [ delegateeAccount.poxAddrClar, // pox-addr uintCV(rewardCycle), // reward-cycle - bufferCV(randomBytes(33)), // signer-key + someCV(bufferCV(signerSig)), // signer-sig + bufferCV(hexToBytes(signerPubKey)), // signer-key + uintCV(coreBalanceInfo.locked.toString()), // max-amount + uintCV(0), // auth-id ], network: testEnv.stacksNetwork, anchorMode: AnchorMode.OnChainOnly, @@ -429,7 +457,6 @@ describe('PoX-4 - Delegate Stacking operations', () => { }); test('Wait for current two pox cycles to complete', async () => { - await standByForPoxCycleEnd(); await standByForPoxCycle(); await standByForPoxCycle(); }); diff --git a/src/tests-2.5/pox-4-rosetta-btc-addr-types.ts b/src/tests-2.5/pox-4-rosetta-btc-addr-types.ts index eb142e0d2..a548faa33 100644 --- a/src/tests-2.5/pox-4-rosetta-btc-addr-types.ts +++ b/src/tests-2.5/pox-4-rosetta-btc-addr-types.ts @@ -1,7 +1,5 @@ import { timeout } from '@hirosystems/api-toolkit'; -import { bytesToHex } from '@stacks/common'; import { BurnchainRewardSlotHolderListResponse } from '@stacks/stacks-blockchain-api-types'; -import { randomBytes } from '@stacks/transactions'; import { testnetKeys } from '../api/routes/debug'; import { CoreRpcPoxInfo } from '../core-rpc/client'; import { DbTxStatus } from '../datastore/common'; @@ -9,6 +7,7 @@ import { getBitcoinAddressFromKey } from '../ec-helpers'; import { fetchGet, stackStxWithRosetta, + standByForPoxCycle, standByUntilBurnBlock, testEnv, } from '../test-utils/test-helpers'; @@ -30,7 +29,7 @@ describe.each(BTC_ADDRESS_CASES)( const account = testnetKeys[1]; let bitcoinAddress: string; - const cycleCount = 2; + const cycleCount = 1; const signerPrivKey = '929c9b8581473c67df8a21c2a4a12f74762d913dd39d91295ee96e779124bca9'; const signerPubKey = '033b67384665cbc3a36052a2d1c739a6cd1222cd451c499400c9d42e2041a56161'; @@ -72,13 +71,9 @@ describe.each(BTC_ADDRESS_CASES)( }); test('Validate reward set received', async () => { - for (let i = 0; i < cycleCount; i++) { - poxInfo = await testEnv.client.getPox(); - const nextCycleStart = poxInfo.next_cycle.reward_phase_start_block_height; - await standByUntilBurnBlock(nextCycleStart); // time to check reward sets after a few blocks - } - - await timeout(3000); // make sure rewards have been processed + await standByForPoxCycle(); + await standByForPoxCycle(); + await timeout(500); // make sure rewards have been processed poxInfo = await testEnv.client.getPox(); const rewardSlotHolders = await fetchGet( diff --git a/src/tests-2.5/pox-4-rosetta-segwit.ts b/src/tests-2.5/pox-4-rosetta-segwit.ts index 9a032e312..c1ad8e393 100644 --- a/src/tests-2.5/pox-4-rosetta-segwit.ts +++ b/src/tests-2.5/pox-4-rosetta-segwit.ts @@ -167,8 +167,9 @@ describe('PoX-4 - Rosetta - Stacking with segwit', () => { const burnBlockUnlockHeight = rpcAccountInfo.unlock_height + 1; // Wait until account has unlocked (finished Stacking cycles) - // (wait one more block due to test flakiness..) - await standByUntilBurnBlock(burnBlockUnlockHeight + 1); + await standByForPoxCycle(); + await standByForPoxCycle(); + await standByForPoxCycle(); // verify STX unlocked - stacks-node account RPC balance const coreNodeBalance = await testEnv.client.getAccount(account.stxAddr); diff --git a/stacks-blockchain/docker/Dockerfile b/stacks-blockchain/docker/Dockerfile index 26c7cd69c..691ad8905 100644 --- a/stacks-blockchain/docker/Dockerfile +++ b/stacks-blockchain/docker/Dockerfile @@ -1,5 +1,5 @@ # Pointed to stacks-blockchain `2.1.0.0.0` git tag -FROM --platform=linux/amd64 hirosystems/stacks-api-e2e:stacks3.0-1360a17 as build +FROM --platform=linux/amd64 hirosystems/stacks-api-e2e:stacks3.0-4d11d85 as build FROM --platform=linux/amd64 debian:bookworm