Skip to content

Commit 87acbe2

Browse files
authored
Merge pull request #5873 from BitGo/eric/SC-1496-fix-walrus-request-withdraw-stake
fix(sdk-coin-sui): walrus request withdraw stake should have empty inputs and outputs
2 parents e51b1cd + 8def393 commit 87acbe2

File tree

3 files changed

+11
-25
lines changed

3 files changed

+11
-25
lines changed

modules/sdk-coin-sui/src/lib/utils.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,12 @@ export class Utils implements BaseUtils {
367367
});
368368
}
369369

370+
isWalrusRequestWithdrawStakeTx(tx: WalrusWithdrawStakeProgrammableTransaction): boolean {
371+
return tx.transactions
372+
.filter((transaction) => 'kind' in transaction && transaction.kind === 'MoveCall')
373+
.some(({ target }) => target.endsWith('::staking::request_withdraw_stake'));
374+
}
375+
370376
getWalrusWithdrawStakeRequests(tx: WalrusWithdrawStakeProgrammableTransaction): RequestWalrusWithdrawStake {
371377
let amount: number | undefined = undefined;
372378
let stakedWal: SuiObjectRef;

modules/sdk-coin-sui/src/lib/walrusWithdrawStakeTransaction.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ export class WalrusWithdrawStakeTransaction extends Transaction<WalrusWithdrawSt
195195
}
196196

197197
loadInputsAndOutputs(): void {
198-
if (!this._suiTransaction) {
198+
if (!this._suiTransaction || utils.isWalrusRequestWithdrawStakeTx(this._suiTransaction.tx)) {
199199
return;
200200
}
201201

modules/sdk-coin-sui/test/unit/transactionBuilder/walrusWithdrawBuilder.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,8 @@ describe('Walrus Withdraw Builder', () => {
3232

3333
assert(tx instanceof SuiTransaction);
3434
tx.type.should.equal(TransactionType.StakingDeactivate);
35-
tx.inputs.length.should.equal(1);
36-
tx.inputs[0].should.deepEqual({
37-
address: '0xee6dfc3da32e21541a2aeadfcd250f8a0a23bb7abda9c8988407fc32068c3746',
38-
value: testData.STAKING_AMOUNT.toString(),
39-
coin: 'tsui:wal',
40-
});
41-
tx.outputs.length.should.equal(1);
42-
tx.outputs[0].should.deepEqual({
43-
address: testData.sender.address,
44-
value: testData.STAKING_AMOUNT.toString(),
45-
coin: 'tsui:wal',
46-
});
35+
tx.inputs.length.should.equal(0);
36+
tx.outputs.length.should.equal(0);
4737

4838
const rawTx = tx.toBroadcastFormat();
4939
await assertRebuild(rawTx);
@@ -74,18 +64,8 @@ describe('Walrus Withdraw Builder', () => {
7464

7565
assert(tx instanceof SuiTransaction);
7666
tx.type.should.equal(TransactionType.StakingDeactivate);
77-
tx.inputs.length.should.equal(1);
78-
tx.inputs[0].should.deepEqual({
79-
address: '0xee6dfc3da32e21541a2aeadfcd250f8a0a23bb7abda9c8988407fc32068c3746',
80-
value: AMOUNT_UNKNOWN_TEXT,
81-
coin: 'tsui:wal',
82-
});
83-
tx.outputs.length.should.equal(1);
84-
tx.outputs[0].should.deepEqual({
85-
address: testData.sender.address,
86-
value: AMOUNT_UNKNOWN_TEXT,
87-
coin: 'tsui:wal',
88-
});
67+
tx.inputs.length.should.equal(0);
68+
tx.outputs.length.should.equal(0);
8969

9070
const rawTx = tx.toBroadcastFormat();
9171
await assertRebuild(rawTx);

0 commit comments

Comments
 (0)