Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions modules/sdk-coin-ton/src/lib/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export class Transaction extends BaseTransaction {
const withdrawAmount = payload.substring(24);
payloadCell.bits.writeUint(parseInt(WITHDRAW_OPCODE, 16), 32);
payloadCell.bits.writeUint(parseInt(queryId, 16), 64);
payloadCell.bits.writeCoins(TonWeb.utils.toNano(withdrawAmount));
payloadCell.bits.writeCoins(new BN(withdrawAmount));
} else {
payloadCell.bits.writeUint(0, 32);
payloadCell.bits.writeString(payload);
Expand Down Expand Up @@ -316,7 +316,7 @@ export class Transaction extends BaseTransaction {
payload = new TextDecoder().decode(payloadBytes);
} else if (opcode === 4096) {
const queryId = order.loadUint(64).toNumber();
withdrawAmount = (order.loadCoins().toNumber() / 1e9).toString();
withdrawAmount = order.loadCoins().toNumber().toString();
payload = WITHDRAW_OPCODE + queryId.toString(16).padStart(16, '0') + withdrawAmount;
this.transactionType = TransactionType.SingleNominatorWithdraw;
} else {
Expand Down
18 changes: 9 additions & 9 deletions modules/sdk-coin-ton/test/resources/ton.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,20 @@ export const signedSendTransaction = {
},
};

export const signedTransferTransaction = {
tx: 'te6cckEBAgEAugAB4YgANk3QfSfW3PrGRiBaolJGaRREphqOMSBd5rAGj1yJ88gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU1NGLsotvRwAAAAMAAcAQCHQgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr5zEtAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAQ7msoAg2I8aq',
export const signedSingleNominatorWithdrawTransaction = {
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==',
txBounceable:
'te6cckEBAgEAugAB4YgANk3QfSfW3PrGRiBaolJGaRREphqOMSBd5rAGj1yJ88gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU1NGLsotvRwAAAAMAAcAQCHYgAaRefBOjTi/hwqDjv+7I6nGj9WEAe3ls/rFuBEQvggr5zEtAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAQ7msoAhFP9Yn',
txId: 'GUD-auBCZ3PJFfAPkSfeqe8rj2OiHMTXudH4IEWdDgo=',
txIdBounceable: 'GUD-auBCZ3PJFfAPkSfeqe8rj2OiHMTXudH4IEWdDgo=',
signable: 'cX/GEZo6PX0rrw35kBsOk91u0CyWEzASSjM0yzfAHp4=',
bounceableSignable: 'cX/GEZo6PX0rrw35kBsOk91u0CyWEzASSjM0yzfAHp4=',
'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==',
txId: 'n1rr-QL61WZ7UJN7ESH2iPQO7toTy9WLqXoSIG1JtXg=',
txIdBounceable: 'n1rr-QL61WZ7UJN7ESH2iPQO7toTy9WLqXoSIG1JtXg=',
signable: 'SA4LoRhKDTiba8MKm0ECBAaiWqh2YtejttmfMzvNw14=',
bounceableSignable: 'SA4LoRhKDTiba8MKm0ECBAaiWqh2YtejttmfMzvNw14=',
recipient: {
address: 'EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG',
amount: '10000000',
amount: '123400000',
},
recipientBounceable: {
address: 'UQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBX1aD',
amount: '10000000',
amount: '123400000',
},
};
74 changes: 40 additions & 34 deletions modules/sdk-coin-ton/test/unit/singleNominatorWithdrawBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,21 @@ import TonWeb from 'tonweb';

describe('Ton Single Nominator Withdraw Builder', () => {
const factory = new TransactionBuilderFactory(coins.get('tton'));
const singleNominatorWithdrawAmount = '932178112330000';
it('should build a unsigned withdraw tx', async function () {
const txId = 'wxaFRG6b7Fhw91Al3JY-zbvl9Mjr-P0NuLvoGYyS5FI='.replace(/\//g, '_').replace(/\+/g, '-');
const txId = 'n1rr-QL61WZ7UJN7ESH2iPQO7toTy9WLqXoSIG1JtXg='.replace(/\//g, '_').replace(/\+/g, '-');
const txBuilder = factory.getSingleNominatorWithdrawBuilder();
txBuilder.sender(testData.sender.address);
txBuilder.sequenceNumber(0);
txBuilder.publicKey(testData.sender.publicKey);
txBuilder.expireTime(1234567890);
txBuilder.send(testData.recipients[0]);
txBuilder.setWithdrawAmount('1');
txBuilder.setWithdrawAmount(singleNominatorWithdrawAmount);
txBuilder.setWithdrawMessage();
const tx = await txBuilder.build();
should.equal(tx.type, TransactionType.SingleNominatorWithdraw);
should.equal(tx.toJson().bounceable, false);
should.equal(tx.toJson().withdrawAmount, '1');
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
tx.inputs.length.should.equal(1);
tx.inputs[0].should.deepEqual({
address: testData.sender.address,
Expand All @@ -37,27 +38,27 @@ describe('Ton Single Nominator Withdraw Builder', () => {
});
tx.id.should.equal(txId);
const rawTx = tx.toBroadcastFormat();
console.log(rawTx);
factory.from(rawTx);
rawTx.should.equal(
'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'
);
});

it('should build a unsigned withdraw tx with bounceable flag', async function () {
const txId = '2RHws_jhf1eEKQnl1VjepktDI_Y40to2GqFwEwsdneU='.replace(/\//g, '_').replace(/\+/g, '-');
const txId = 'YS3RFHZx_SKyanFNjGlvtDmx6I02deAQUJUSyVP9rag='.replace(/\//g, '_').replace(/\+/g, '-');
const txBuilder = factory.getSingleNominatorWithdrawBuilder();
txBuilder.sender(testData.sender.address);
txBuilder.sequenceNumber(0);
txBuilder.publicKey(testData.sender.publicKey);
txBuilder.expireTime(1234567890);
txBuilder.send(testData.recipients[0]);
txBuilder.setWithdrawAmount('1');
txBuilder.setWithdrawAmount(singleNominatorWithdrawAmount);
txBuilder.setWithdrawMessage();
txBuilder.bounceable(true);
const tx = await txBuilder.build();
should.equal(tx.type, TransactionType.SingleNominatorWithdraw);
should.equal(tx.toJson().bounceable, true);
should.equal(tx.toJson().withdrawAmount, '1');
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
tx.inputs.length.should.equal(1);
tx.inputs[0].should.deepEqual({
address: testData.sender.address,
Expand All @@ -72,58 +73,63 @@ describe('Ton Single Nominator Withdraw Builder', () => {
});
tx.id.should.equal(txId);
const rawTx = tx.toBroadcastFormat();
console.log(rawTx);
rawTx.should.equal(
'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'
);
});

it('should build a withdraw from rawTx', async function () {
const txBuilder = factory.from(testData.signedTransferTransaction.tx);
const txBuilder = factory.from(testData.signedSingleNominatorWithdrawTransaction.tx);
const builtTx = await txBuilder.build();
const jsonTx = builtTx.toJson();
should.equal(builtTx.type, TransactionType.SingleNominatorWithdraw);
should.equal(builtTx.signablePayload.toString('base64'), testData.signedTransferTransaction.signable);
should.equal(builtTx.id, testData.signedTransferTransaction.txId);
should.equal(
builtTx.signablePayload.toString('base64'),
testData.signedSingleNominatorWithdrawTransaction.signable
);
should.equal(builtTx.id, testData.signedSingleNominatorWithdrawTransaction.txId);
const builder2 = factory.from(builtTx.toBroadcastFormat());
const builtTx2 = await builder2.build();
should.equal(builtTx2.type, TransactionType.SingleNominatorWithdraw);
should.equal(builtTx.toBroadcastFormat(), testData.signedTransferTransaction.tx);
should.equal(builtTx.toBroadcastFormat(), testData.signedSingleNominatorWithdrawTransaction.tx);
builtTx.inputs.length.should.equal(1);
builtTx.outputs.length.should.equal(1);
jsonTx.sender.should.equal('EQAbJug-k-tufWMjEC1RKSM0iiJTDUcYkC7zWANHrkT55Fol');
jsonTx.destination.should.equal('EQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBXwtG');
jsonTx.amount.should.equal('10000000');
jsonTx.seqno.should.equal(6);
jsonTx.expirationTime.should.equal(1695997582);
jsonTx.withdrawAmount.should.equal('1');
jsonTx.amount.should.equal('123400000');
jsonTx.seqno.should.equal(0);
jsonTx.expirationTime.should.equal(1234567890);
jsonTx.withdrawAmount.should.equal(singleNominatorWithdrawAmount);

const builtTx3 = await txBuilder.bounceable(false).fromAddressBounceable(false).toAddressBounceable(false).build();
txBuilder.from(testData.signedTransferTransaction.tx);
txBuilder.from(testData.signedSingleNominatorWithdrawTransaction.tx);
const jsonTx3 = builtTx3.toJson();
should.equal(jsonTx3.bounceable, false);
should.equal(builtTx3.signablePayload.toString('base64'), testData.signedTransferTransaction.bounceableSignable);
should.equal(builtTx3.id, testData.signedTransferTransaction.txIdBounceable);
should.equal(builtTx3.toBroadcastFormat(), testData.signedTransferTransaction.tx);
should.equal(
builtTx3.signablePayload.toString('base64'),
testData.signedSingleNominatorWithdrawTransaction.bounceableSignable
);
should.equal(builtTx3.id, testData.signedSingleNominatorWithdrawTransaction.txIdBounceable);
should.equal(builtTx3.toBroadcastFormat(), testData.signedSingleNominatorWithdrawTransaction.tx);
jsonTx3.sender.should.equal('UQAbJug-k-tufWMjEC1RKSM0iiJTDUcYkC7zWANHrkT55Afg');
jsonTx3.destination.should.equal('UQA0i8-CdGnF_DhUHHf92R1ONH6sIA9vLZ_WLcCIhfBBX1aD');
jsonTx3.amount.should.equal('10000000');
jsonTx3.seqno.should.equal(6);
jsonTx3.expirationTime.should.equal(1695997582);
jsonTx.withdrawAmount.should.equal('1');
jsonTx3.amount.should.equal('123400000');
jsonTx3.seqno.should.equal(0);
jsonTx3.expirationTime.should.equal(1234567890);
jsonTx.withdrawAmount.should.equal(singleNominatorWithdrawAmount);
});

it('should parse a raw transaction and set flags', async function () {
const factory = new TransactionBuilderFactory(coins.get('tton'));
const txBuilder = factory.from(testData.signedTransferTransaction.tx);
const txBuilderBounceable = factory.from(testData.signedTransferTransaction.txBounceable);
const txBuilder = factory.from(testData.signedSingleNominatorWithdrawTransaction.tx);
const txBuilderBounceable = factory.from(testData.signedSingleNominatorWithdrawTransaction.txBounceable);

const tx = await txBuilder.build();
const txBounceable = await txBuilderBounceable.build();
tx.toJson().bounceable.should.equal(false);
should.equal(tx.toJson().withdrawAmount, '1');
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
txBounceable.toJson().bounceable.should.equal(true);
should.equal(txBounceable.toJson().withdrawAmount, '1');
should.equal(txBounceable.toJson().withdrawAmount, singleNominatorWithdrawAmount);
});

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

it('should build a signed withdraw tx using add signature', async function () {
Expand Down Expand Up @@ -201,7 +207,7 @@ describe('Ton Single Nominator Withdraw Builder', () => {
const otherFormat = 'UQAWzEKcdnykvXfUNouqdS62tvrp32bCxuKS6eQrS6ISgZ8t';
const amount = '100000000';
txBuilder.send({ address, amount });
txBuilder.setWithdrawAmount('1');
txBuilder.setWithdrawAmount(singleNominatorWithdrawAmount);
txBuilder.setWithdrawMessage();
const tx = await txBuilder.build();
should.equal(tx.type, TransactionType.SingleNominatorWithdraw);
Expand All @@ -219,11 +225,11 @@ describe('Ton Single Nominator Withdraw Builder', () => {
});
const txJson = tx.toJson();
txJson.destination.should.equal(address);
should.equal(tx.toJson().withdrawAmount, '1');
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
const builder2 = factory.from(tx.toBroadcastFormat());
const tx2 = await builder2.build();
const txJson2 = tx2.toJson();
txJson2.destinationAlias.should.equal(otherFormat);
should.equal(tx.toJson().withdrawAmount, '1');
should.equal(tx.toJson().withdrawAmount, singleNominatorWithdrawAmount);
});
});
Loading