Skip to content

Commit 4fcc613

Browse files
authored
fix(sdk-coin-ton): fix withdraw amount to base unit
2 parents bd5fe3c + f1ea9cb commit 4fcc613

File tree

4 files changed

+100
-80
lines changed

4 files changed

+100
-80
lines changed

modules/sdk-coin-ton/src/lib/transaction.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ export class Transaction extends BaseTransaction {
112112
const withdrawAmount = payload.substring(24);
113113
payloadCell.bits.writeUint(parseInt(WITHDRAW_OPCODE, 16), 32);
114114
payloadCell.bits.writeUint(parseInt(queryId, 16), 64);
115-
payloadCell.bits.writeCoins(TonWeb.utils.toNano(withdrawAmount));
115+
payloadCell.bits.writeCoins(new BN(withdrawAmount));
116116
} else {
117117
payloadCell.bits.writeUint(0, 32);
118118
payloadCell.bits.writeString(payload);
@@ -316,7 +316,7 @@ export class Transaction extends BaseTransaction {
316316
payload = new TextDecoder().decode(payloadBytes);
317317
} else if (opcode === 4096) {
318318
const queryId = order.loadUint(64).toNumber();
319-
withdrawAmount = (order.loadCoins().toNumber() / 1e9).toString();
319+
withdrawAmount = order.loadCoins().toNumber().toString();
320320
payload = WITHDRAW_OPCODE + queryId.toString(16).padStart(16, '0') + withdrawAmount;
321321
this.transactionType = TransactionType.SingleNominatorWithdraw;
322322
} else {

modules/sdk-coin-ton/test/resources/ton.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,20 @@ export const signedSendTransaction = {
5252
},
5353
};
5454

55-
export const signedTransferTransaction = {
56-
tx: 'te6cckEBAgEAugAB4YgANk3QfSfW3PrGRiBaolJGaRREphqOMSBd5rAGj1yJ88gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU1NGLsotvRwAAAAMAAcAQCHQgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr5zEtAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAQ7msoAg2I8aq',
55+
export const signedSingleNominatorWithdrawTransaction = {
56+
tx: 'te6cckECGAEAA8MAAuGIADZN0H0n1tz6xkYgWqJSRmkURKYajjEgXeawBo9cifPIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmpoxdJlgLSAAAAAAADgEXAgE0AhYBFP8A9KQT9LzyyAsDAgEgBBECAUgFCALm0AHQ0wMhcbCSXwTgItdJwSCSXwTgAtMfIYIQcGx1Z70ighBkc3RyvbCSXwXgA/pAMCD6RAHIygfL/8nQ7UTQgQFA1yH0BDBcgQEI9ApvoTGzkl8H4AXTP8glghBwbHVnupI4MOMNA4IQZHN0crqSXwbjDQYHAHgB+gD0BDD4J28iMFAKoSG+8uBQghBwbHVngx6xcIAYUATLBSbPFlj6Ahn0AMtpF8sfUmDLPyDJgED7AAYAilAEgQEI9Fkw7UTQgQFA1yDIAc8W9ADJ7VQBcrCOI4IQZHN0coMesXCAGFAFywVQA88WI/oCE8tqyx/LP8mAQPsAkl8D4gIBIAkQAgEgCg8CAVgLDAA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA0OABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AABG4yX7UTQ1wsfgAWb0kK29qJoQICga5D6AhhHDUCAhHpJN9KZEM5pA+n/mDeBKAG3gQFImHFZ8xhAT48oMI1xgg0x/TH9MfAvgju/Jk7UTQ0x/TH9P/9ATRUUO68qFRUbryogX5AVQQZPkQ8qP4ACSkyMsfUkDLH1Iwy/9SEPQAye1U+A8B0wchwACfbFGTINdKltMH1AL7AOgw4CHAAeMAIcAC4wABwAORMOMNA6TIyx8Syx/L/xITFBUAbtIH+gDU1CL5AAXIygcVy//J0Hd0gBjIywXLAiLPFlAF+gIUy2sSzMzJc/sAyEAUgQEI9FHypwIAcIEBCNcY+gDTP8hUIEeBAQj0UfKnghBub3RlcHSAGMjLBcsCUAbPFlAE+gIUy2oSyx/LP8lz+wACAGyBAQjXGPoA0z8wUiSBAQj0WfKnghBkc3RycHSAGMjLBcsCUAXPFlAD+gITy2rLHxLLP8lz+wAACvQAye1UAFEAAAAAKamjF8DDudwJkyEh7jUbJEjFCjriVxsSlRJFyF872V1eegb4QACPQgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr6A613oAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAHA0/PoUC5EIEyWuPg==',
5757
txBounceable:
58-
'te6cckEBAgEAugAB4YgANk3QfSfW3PrGRiBaolJGaRREphqOMSBd5rAGj1yJ88gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU1NGLsotvRwAAAAMAAcAQCHYgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr5zEtAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAQ7msoAhFP9Yn',
59-
txId: 'GUD-auBCZ3PJFfAPkSfeqe8rj2OiHMTXudH4IEWdDgo=',
60-
txIdBounceable: 'GUD-auBCZ3PJFfAPkSfeqe8rj2OiHMTXudH4IEWdDgo=',
61-
signable: 'cX/GEZo6PX0rrw35kBsOk91u0CyWEzASSjM0yzfAHp4=',
62-
bounceableSignable: 'cX/GEZo6PX0rrw35kBsOk91u0CyWEzASSjM0yzfAHp4=',
58+
'te6cckECGAEAA8MAAuGIADZN0H0n1tz6xkYgWqJSRmkURKYajjEgXeawBo9cifPIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmpoxdJlgLSAAAAAAADgEXAgE0AhYBFP8A9KQT9LzyyAsDAgEgBBECAUgFCALm0AHQ0wMhcbCSXwTgItdJwSCSXwTgAtMfIYIQcGx1Z70ighBkc3RyvbCSXwXgA/pAMCD6RAHIygfL/8nQ7UTQgQFA1yH0BDBcgQEI9ApvoTGzkl8H4AXTP8glghBwbHVnupI4MOMNA4IQZHN0crqSXwbjDQYHAHgB+gD0BDD4J28iMFAKoSG+8uBQghBwbHVngx6xcIAYUATLBSbPFlj6Ahn0AMtpF8sfUmDLPyDJgED7AAYAilAEgQEI9Fkw7UTQgQFA1yDIAc8W9ADJ7VQBcrCOI4IQZHN0coMesXCAGFAFywVQA88WI/oCE8tqyx/LP8mAQPsAkl8D4gIBIAkQAgEgCg8CAVgLDAA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA0OABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AABG4yX7UTQ1wsfgAWb0kK29qJoQICga5D6AhhHDUCAhHpJN9KZEM5pA+n/mDeBKAG3gQFImHFZ8xhAT48oMI1xgg0x/TH9MfAvgju/Jk7UTQ0x/TH9P/9ATRUUO68qFRUbryogX5AVQQZPkQ8qP4ACSkyMsfUkDLH1Iwy/9SEPQAye1U+A8B0wchwACfbFGTINdKltMH1AL7AOgw4CHAAeMAIcAC4wABwAORMOMNA6TIyx8Syx/L/xITFBUAbtIH+gDU1CL5AAXIygcVy//J0Hd0gBjIywXLAiLPFlAF+gIUy2sSzMzJc/sAyEAUgQEI9FHypwIAcIEBCNcY+gDTP8hUIEeBAQj0UfKnghBub3RlcHSAGMjLBcsCUAbPFlAE+gIUy2oSyx/LP8lz+wACAGyBAQjXGPoA0z8wUiSBAQj0WfKnghBkc3RycHSAGMjLBcsCUAXPFlAD+gITy2rLHxLLP8lz+wAACvQAye1UAFEAAAAAKamjF8DDudwJkyEh7jUbJEjFCjriVxsSlRJFyF872V1eegb4QACPYgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr6A613oAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAHA0/PoUC5EIBDddHQ==',
59+
txId: 'n1rr-QL61WZ7UJN7ESH2iPQO7toTy9WLqXoSIG1JtXg=',
60+
txIdBounceable: 'n1rr-QL61WZ7UJN7ESH2iPQO7toTy9WLqXoSIG1JtXg=',
61+
signable: 'SA4LoRhKDTiba8MKm0ECBAaiWqh2YtejttmfMzvNw14=',
62+
bounceableSignable: 'SA4LoRhKDTiba8MKm0ECBAaiWqh2YtejttmfMzvNw14=',
6363
recipient: {
6464
address: 'EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG',
65-
amount: '10000000',
65+
amount: '123400000',
6666
},
6767
recipientBounceable: {
6868
address: 'UQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBX1aD',
69-
amount: '10000000',
69+
amount: '123400000',
7070
},
7171
};

modules/sdk-coin-ton/test/unit/singleNominatorWithdrawBuilder.ts

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,21 @@ import TonWeb from 'tonweb';
99

1010
describe('Ton Single Nominator Withdraw Builder', () => {
1111
const factory = new TransactionBuilderFactory(coins.get('tton'));
12+
const singleNominatorWithdrawAmount = '932178112330000';
1213
it('should build a unsigned withdraw tx', async function () {
13-
const txId = 'wxaFRG6b7Fhw91Al3JY-zbvl9Mjr-P0NuLvoGYyS5FI='.replace(/\//g, '_').replace(/\+/g, '-');
14+
const txId = 'n1rr-QL61WZ7UJN7ESH2iPQO7toTy9WLqXoSIG1JtXg='.replace(/\//g, '_').replace(/\+/g, '-');
1415
const txBuilder = factory.getSingleNominatorWithdrawBuilder();
1516
txBuilder.sender(testData.sender.address);
1617
txBuilder.sequenceNumber(0);
1718
txBuilder.publicKey(testData.sender.publicKey);
1819
txBuilder.expireTime(1234567890);
1920
txBuilder.send(testData.recipients[0]);
20-
txBuilder.setWithdrawAmount('1');
21+
txBuilder.setWithdrawAmount(singleNominatorWithdrawAmount);
2122
txBuilder.setWithdrawMessage();
2223
const tx = await txBuilder.build();
2324
should.equal(tx.type, TransactionType.SingleNominatorWithdraw);
2425
should.equal(tx.toJson().bounceable, false);
25-
should.equal(tx.toJson().withdrawAmount, '1');
26+
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
2627
tx.inputs.length.should.equal(1);
2728
tx.inputs[0].should.deepEqual({
2829
address: testData.sender.address,
@@ -37,27 +38,27 @@ describe('Ton Single Nominator Withdraw Builder', () => {
3738
});
3839
tx.id.should.equal(txId);
3940
const rawTx = tx.toBroadcastFormat();
40-
console.log(rawTx);
41+
factory.from(rawTx);
4142
rawTx.should.equal(
42-
'te6cckECGAEAA8AAAuGIADZN0H0n1tz6xkYgWqJSRmkURKYajjEgXeawBo9cifPIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmpoxdJlgLSAAAAAAADgEXAgE0AhYBFP8A9KQT9LzyyAsDAgEgBBECAUgFCALm0AHQ0wMhcbCSXwTgItdJwSCSXwTgAtMfIYIQcGx1Z70ighBkc3RyvbCSXwXgA/pAMCD6RAHIygfL/8nQ7UTQgQFA1yH0BDBcgQEI9ApvoTGzkl8H4AXTP8glghBwbHVnupI4MOMNA4IQZHN0crqSXwbjDQYHAHgB+gD0BDD4J28iMFAKoSG+8uBQghBwbHVngx6xcIAYUATLBSbPFlj6Ahn0AMtpF8sfUmDLPyDJgED7AAYAilAEgQEI9Fkw7UTQgQFA1yDIAc8W9ADJ7VQBcrCOI4IQZHN0coMesXCAGFAFywVQA88WI/oCE8tqyx/LP8mAQPsAkl8D4gIBIAkQAgEgCg8CAVgLDAA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA0OABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AABG4yX7UTQ1wsfgAWb0kK29qJoQICga5D6AhhHDUCAhHpJN9KZEM5pA+n/mDeBKAG3gQFImHFZ8xhAT48oMI1xgg0x/TH9MfAvgju/Jk7UTQ0x/TH9P/9ATRUUO68qFRUbryogX5AVQQZPkQ8qP4ACSkyMsfUkDLH1Iwy/9SEPQAye1U+A8B0wchwACfbFGTINdKltMH1AL7AOgw4CHAAeMAIcAC4wABwAORMOMNA6TIyx8Syx/L/xITFBUAbtIH+gDU1CL5AAXIygcVy//J0Hd0gBjIywXLAiLPFlAF+gIUy2sSzMzJc/sAyEAUgQEI9FHypwIAcIEBCNcY+gDTP8hUIEeBAQj0UfKnghBub3RlcHSAGMjLBcsCUAbPFlAE+gIUy2oSyx/LP8lz+wACAGyBAQjXGPoA0z8wUiSBAQj0WfKnghBkc3RycHSAGMjLBcsCUAXPFlAD+gITy2rLHxLLP8lz+wAACvQAye1UAFEAAAAAKamjF8DDudwJkyEh7jUbJEjFCjriVxsSlRJFyF872V1eegb4QACJQgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr6A613oAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAEO5rKAIFYXIKQ=='
43+
'te6cckECGAEAA8MAAuGIADZN0H0n1tz6xkYgWqJSRmkURKYajjEgXeawBo9cifPIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmpoxdJlgLSAAAAAAADgEXAgE0AhYBFP8A9KQT9LzyyAsDAgEgBBECAUgFCALm0AHQ0wMhcbCSXwTgItdJwSCSXwTgAtMfIYIQcGx1Z70ighBkc3RyvbCSXwXgA/pAMCD6RAHIygfL/8nQ7UTQgQFA1yH0BDBcgQEI9ApvoTGzkl8H4AXTP8glghBwbHVnupI4MOMNA4IQZHN0crqSXwbjDQYHAHgB+gD0BDD4J28iMFAKoSG+8uBQghBwbHVngx6xcIAYUATLBSbPFlj6Ahn0AMtpF8sfUmDLPyDJgED7AAYAilAEgQEI9Fkw7UTQgQFA1yDIAc8W9ADJ7VQBcrCOI4IQZHN0coMesXCAGFAFywVQA88WI/oCE8tqyx/LP8mAQPsAkl8D4gIBIAkQAgEgCg8CAVgLDAA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA0OABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AABG4yX7UTQ1wsfgAWb0kK29qJoQICga5D6AhhHDUCAhHpJN9KZEM5pA+n/mDeBKAG3gQFImHFZ8xhAT48oMI1xgg0x/TH9MfAvgju/Jk7UTQ0x/TH9P/9ATRUUO68qFRUbryogX5AVQQZPkQ8qP4ACSkyMsfUkDLH1Iwy/9SEPQAye1U+A8B0wchwACfbFGTINdKltMH1AL7AOgw4CHAAeMAIcAC4wABwAORMOMNA6TIyx8Syx/L/xITFBUAbtIH+gDU1CL5AAXIygcVy//J0Hd0gBjIywXLAiLPFlAF+gIUy2sSzMzJc/sAyEAUgQEI9FHypwIAcIEBCNcY+gDTP8hUIEeBAQj0UfKnghBub3RlcHSAGMjLBcsCUAbPFlAE+gIUy2oSyx/LP8lz+wACAGyBAQjXGPoA0z8wUiSBAQj0WfKnghBkc3RycHSAGMjLBcsCUAXPFlAD+gITy2rLHxLLP8lz+wAACvQAye1UAFEAAAAAKamjF8DDudwJkyEh7jUbJEjFCjriVxsSlRJFyF872V1eegb4QACPQgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr6A613oAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAHA0/PoUC5EIEyWuPg=='
4344
);
4445
});
4546

4647
it('should build a unsigned withdraw tx with bounceable flag', async function () {
47-
const txId = '2RHws_jhf1eEKQnl1VjepktDI_Y40to2GqFwEwsdneU='.replace(/\//g, '_').replace(/\+/g, '-');
48+
const txId = 'YS3RFHZx_SKyanFNjGlvtDmx6I02deAQUJUSyVP9rag='.replace(/\//g, '_').replace(/\+/g, '-');
4849
const txBuilder = factory.getSingleNominatorWithdrawBuilder();
4950
txBuilder.sender(testData.sender.address);
5051
txBuilder.sequenceNumber(0);
5152
txBuilder.publicKey(testData.sender.publicKey);
5253
txBuilder.expireTime(1234567890);
5354
txBuilder.send(testData.recipients[0]);
54-
txBuilder.setWithdrawAmount('1');
55+
txBuilder.setWithdrawAmount(singleNominatorWithdrawAmount);
5556
txBuilder.setWithdrawMessage();
5657
txBuilder.bounceable(true);
5758
const tx = await txBuilder.build();
5859
should.equal(tx.type, TransactionType.SingleNominatorWithdraw);
5960
should.equal(tx.toJson().bounceable, true);
60-
should.equal(tx.toJson().withdrawAmount, '1');
61+
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
6162
tx.inputs.length.should.equal(1);
6263
tx.inputs[0].should.deepEqual({
6364
address: testData.sender.address,
@@ -72,58 +73,63 @@ describe('Ton Single Nominator Withdraw Builder', () => {
7273
});
7374
tx.id.should.equal(txId);
7475
const rawTx = tx.toBroadcastFormat();
75-
console.log(rawTx);
7676
rawTx.should.equal(
77-
'te6cckECGAEAA8AAAuGIADZN0H0n1tz6xkYgWqJSRmkURKYajjEgXeawBo9cifPIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmpoxdJlgLSAAAAAAADgEXAgE0AhYBFP8A9KQT9LzyyAsDAgEgBBECAUgFCALm0AHQ0wMhcbCSXwTgItdJwSCSXwTgAtMfIYIQcGx1Z70ighBkc3RyvbCSXwXgA/pAMCD6RAHIygfL/8nQ7UTQgQFA1yH0BDBcgQEI9ApvoTGzkl8H4AXTP8glghBwbHVnupI4MOMNA4IQZHN0crqSXwbjDQYHAHgB+gD0BDD4J28iMFAKoSG+8uBQghBwbHVngx6xcIAYUATLBSbPFlj6Ahn0AMtpF8sfUmDLPyDJgED7AAYAilAEgQEI9Fkw7UTQgQFA1yDIAc8W9ADJ7VQBcrCOI4IQZHN0coMesXCAGFAFywVQA88WI/oCE8tqyx/LP8mAQPsAkl8D4gIBIAkQAgEgCg8CAVgLDAA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA0OABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AABG4yX7UTQ1wsfgAWb0kK29qJoQICga5D6AhhHDUCAhHpJN9KZEM5pA+n/mDeBKAG3gQFImHFZ8xhAT48oMI1xgg0x/TH9MfAvgju/Jk7UTQ0x/TH9P/9ATRUUO68qFRUbryogX5AVQQZPkQ8qP4ACSkyMsfUkDLH1Iwy/9SEPQAye1U+A8B0wchwACfbFGTINdKltMH1AL7AOgw4CHAAeMAIcAC4wABwAORMOMNA6TIyx8Syx/L/xITFBUAbtIH+gDU1CL5AAXIygcVy//J0Hd0gBjIywXLAiLPFlAF+gIUy2sSzMzJc/sAyEAUgQEI9FHypwIAcIEBCNcY+gDTP8hUIEeBAQj0UfKnghBub3RlcHSAGMjLBcsCUAbPFlAE+gIUy2oSyx/LP8lz+wACAGyBAQjXGPoA0z8wUiSBAQj0WfKnghBkc3RycHSAGMjLBcsCUAXPFlAD+gITy2rLHxLLP8lz+wAACvQAye1UAFEAAAAAKamjF8DDudwJkyEh7jUbJEjFCjriVxsSlRJFyF872V1eegb4QACJYgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr6A613oAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAEO5rKAI8DKNSw=='
77+
'te6cckECGAEAA8MAAuGIADZN0H0n1tz6xkYgWqJSRmkURKYajjEgXeawBo9cifPIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmpoxdJlgLSAAAAAAADgEXAgE0AhYBFP8A9KQT9LzyyAsDAgEgBBECAUgFCALm0AHQ0wMhcbCSXwTgItdJwSCSXwTgAtMfIYIQcGx1Z70ighBkc3RyvbCSXwXgA/pAMCD6RAHIygfL/8nQ7UTQgQFA1yH0BDBcgQEI9ApvoTGzkl8H4AXTP8glghBwbHVnupI4MOMNA4IQZHN0crqSXwbjDQYHAHgB+gD0BDD4J28iMFAKoSG+8uBQghBwbHVngx6xcIAYUATLBSbPFlj6Ahn0AMtpF8sfUmDLPyDJgED7AAYAilAEgQEI9Fkw7UTQgQFA1yDIAc8W9ADJ7VQBcrCOI4IQZHN0coMesXCAGFAFywVQA88WI/oCE8tqyx/LP8mAQPsAkl8D4gIBIAkQAgEgCg8CAVgLDAA9sp37UTQgQFA1yH0BDACyMoHy//J0AGBAQj0Cm+hMYAIBIA0OABmtznaiaEAga5Drhf/AABmvHfaiaEAQa5DrhY/AABG4yX7UTQ1wsfgAWb0kK29qJoQICga5D6AhhHDUCAhHpJN9KZEM5pA+n/mDeBKAG3gQFImHFZ8xhAT48oMI1xgg0x/TH9MfAvgju/Jk7UTQ0x/TH9P/9ATRUUO68qFRUbryogX5AVQQZPkQ8qP4ACSkyMsfUkDLH1Iwy/9SEPQAye1U+A8B0wchwACfbFGTINdKltMH1AL7AOgw4CHAAeMAIcAC4wABwAORMOMNA6TIyx8Syx/L/xITFBUAbtIH+gDU1CL5AAXIygcVy//J0Hd0gBjIywXLAiLPFlAF+gIUy2sSzMzJc/sAyEAUgQEI9FHypwIAcIEBCNcY+gDTP8hUIEeBAQj0UfKnghBub3RlcHSAGMjLBcsCUAbPFlAE+gIUy2oSyx/LP8lz+wACAGyBAQjXGPoA0z8wUiSBAQj0WfKnghBkc3RycHSAGMjLBcsCUAXPFlAD+gITy2rLHxLLP8lz+wAACvQAye1UAFEAAAAAKamjF8DDudwJkyEh7jUbJEjFCjriVxsSlRJFyF872V1eegb4QACPYgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr6A613oAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAHA0/PoUC5EIBDddHQ=='
7878
);
7979
});
8080

8181
it('should build a withdraw from rawTx', async function () {
82-
const txBuilder = factory.from(testData.signedTransferTransaction.tx);
82+
const txBuilder = factory.from(testData.signedSingleNominatorWithdrawTransaction.tx);
8383
const builtTx = await txBuilder.build();
8484
const jsonTx = builtTx.toJson();
8585
should.equal(builtTx.type, TransactionType.SingleNominatorWithdraw);
86-
should.equal(builtTx.signablePayload.toString('base64'), testData.signedTransferTransaction.signable);
87-
should.equal(builtTx.id, testData.signedTransferTransaction.txId);
86+
should.equal(
87+
builtTx.signablePayload.toString('base64'),
88+
testData.signedSingleNominatorWithdrawTransaction.signable
89+
);
90+
should.equal(builtTx.id, testData.signedSingleNominatorWithdrawTransaction.txId);
8891
const builder2 = factory.from(builtTx.toBroadcastFormat());
8992
const builtTx2 = await builder2.build();
9093
should.equal(builtTx2.type, TransactionType.SingleNominatorWithdraw);
91-
should.equal(builtTx.toBroadcastFormat(), testData.signedTransferTransaction.tx);
94+
should.equal(builtTx.toBroadcastFormat(), testData.signedSingleNominatorWithdrawTransaction.tx);
9295
builtTx.inputs.length.should.equal(1);
9396
builtTx.outputs.length.should.equal(1);
9497
jsonTx.sender.should.equal('EQAbJug-k-tufWMjEC1RKSM0iiJTDUcYkC7zWANHrkT55Fol');
9598
jsonTx.destination.should.equal('EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG');
96-
jsonTx.amount.should.equal('10000000');
97-
jsonTx.seqno.should.equal(6);
98-
jsonTx.expirationTime.should.equal(1695997582);
99-
jsonTx.withdrawAmount.should.equal('1');
99+
jsonTx.amount.should.equal('123400000');
100+
jsonTx.seqno.should.equal(0);
101+
jsonTx.expirationTime.should.equal(1234567890);
102+
jsonTx.withdrawAmount.should.equal(singleNominatorWithdrawAmount);
100103

101104
const builtTx3 = await txBuilder.bounceable(false).fromAddressBounceable(false).toAddressBounceable(false).build();
102-
txBuilder.from(testData.signedTransferTransaction.tx);
105+
txBuilder.from(testData.signedSingleNominatorWithdrawTransaction.tx);
103106
const jsonTx3 = builtTx3.toJson();
104107
should.equal(jsonTx3.bounceable, false);
105-
should.equal(builtTx3.signablePayload.toString('base64'), testData.signedTransferTransaction.bounceableSignable);
106-
should.equal(builtTx3.id, testData.signedTransferTransaction.txIdBounceable);
107-
should.equal(builtTx3.toBroadcastFormat(), testData.signedTransferTransaction.tx);
108+
should.equal(
109+
builtTx3.signablePayload.toString('base64'),
110+
testData.signedSingleNominatorWithdrawTransaction.bounceableSignable
111+
);
112+
should.equal(builtTx3.id, testData.signedSingleNominatorWithdrawTransaction.txIdBounceable);
113+
should.equal(builtTx3.toBroadcastFormat(), testData.signedSingleNominatorWithdrawTransaction.tx);
108114
jsonTx3.sender.should.equal('UQAbJug-k-tufWMjEC1RKSM0iiJTDUcYkC7zWANHrkT55Afg');
109115
jsonTx3.destination.should.equal('UQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBX1aD');
110-
jsonTx3.amount.should.equal('10000000');
111-
jsonTx3.seqno.should.equal(6);
112-
jsonTx3.expirationTime.should.equal(1695997582);
113-
jsonTx.withdrawAmount.should.equal('1');
116+
jsonTx3.amount.should.equal('123400000');
117+
jsonTx3.seqno.should.equal(0);
118+
jsonTx3.expirationTime.should.equal(1234567890);
119+
jsonTx.withdrawAmount.should.equal(singleNominatorWithdrawAmount);
114120
});
115121

116122
it('should parse a raw transaction and set flags', async function () {
117123
const factory = new TransactionBuilderFactory(coins.get('tton'));
118-
const txBuilder = factory.from(testData.signedTransferTransaction.tx);
119-
const txBuilderBounceable = factory.from(testData.signedTransferTransaction.txBounceable);
124+
const txBuilder = factory.from(testData.signedSingleNominatorWithdrawTransaction.tx);
125+
const txBuilderBounceable = factory.from(testData.signedSingleNominatorWithdrawTransaction.txBounceable);
120126

121127
const tx = await txBuilder.build();
122128
const txBounceable = await txBuilderBounceable.build();
123129
tx.toJson().bounceable.should.equal(false);
124-
should.equal(tx.toJson().withdrawAmount, '1');
130+
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
125131
txBounceable.toJson().bounceable.should.equal(true);
126-
should.equal(txBounceable.toJson().withdrawAmount, '1');
132+
should.equal(txBounceable.toJson().withdrawAmount, singleNominatorWithdrawAmount);
127133
});
128134

129135
xit('should build a signed withdraw tx and submit onchain', async function () {
@@ -162,7 +168,7 @@ describe('Ton Single Nominator Withdraw Builder', () => {
162168
should.equal(Buffer.from(signature).toString('hex'), Buffer.from(signature2).toString('hex'));
163169
await new Promise((resolve) => setTimeout(resolve, 2000));
164170
const result = await tonweb.provider.sendBoc(tx2.toBroadcastFormat());
165-
console.log(JSON.stringify(result));
171+
console.log(result);
166172
});
167173

168174
it('should build a signed withdraw tx using add signature', async function () {
@@ -201,7 +207,7 @@ describe('Ton Single Nominator Withdraw Builder', () => {
201207
const otherFormat = 'UQAWzEKcdnykvXfUNouqdS62tvrp32bCxuKS6eQrS6ISgZ8t';
202208
const amount = '100000000';
203209
txBuilder.send({ address, amount });
204-
txBuilder.setWithdrawAmount('1');
210+
txBuilder.setWithdrawAmount(singleNominatorWithdrawAmount);
205211
txBuilder.setWithdrawMessage();
206212
const tx = await txBuilder.build();
207213
should.equal(tx.type, TransactionType.SingleNominatorWithdraw);
@@ -219,11 +225,11 @@ describe('Ton Single Nominator Withdraw Builder', () => {
219225
});
220226
const txJson = tx.toJson();
221227
txJson.destination.should.equal(address);
222-
should.equal(tx.toJson().withdrawAmount, '1');
228+
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
223229
const builder2 = factory.from(tx.toBroadcastFormat());
224230
const tx2 = await builder2.build();
225231
const txJson2 = tx2.toJson();
226232
txJson2.destinationAlias.should.equal(otherFormat);
227-
should.equal(tx.toJson().withdrawAmount, '1');
233+
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
228234
});
229235
});

0 commit comments

Comments
 (0)