Skip to content

Commit 53166e8

Browse files
authored
Merge pull request #7809 from BitGo/WIN-8457
fix(sdk-coin-flrp): update tx ID calculation and test data
2 parents 4eee580 + 780df7b commit 53166e8

File tree

11 files changed

+55
-16
lines changed

11 files changed

+55
-16
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,9 @@ export class Transaction extends BaseTransaction {
368368
}
369369

370370
get id(): string {
371-
const bufferArray = utils.sha256((this._flareTransaction as UnsignedTx).toBytes());
371+
const unsignedTx = this._flareTransaction as UnsignedTx;
372+
const txBytes = unsignedTx.getSignedTx().toBytes();
373+
const bufferArray = utils.sha256(txBytes);
372374
return utils.cb58Encode(Buffer.from(bufferArray));
373375
}
374376

modules/sdk-coin-flrp/test/resources/transactionData/exportInC.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// For round-trip tests to work, feeRate is calculated as: totalFee - fixedFee = -718250
66
// For build-from-scratch tests, the hex will differ as proper fees are now enforced.
77
export const EXPORT_IN_C = {
8-
txhash: 'KELMR2gmYpRUeXRyuimp1xLNUoHSkwNUURwBn4v1D4aKircKR',
8+
txhash: '4AiWTT1uHFw6TDekeAGxcdrfgoaif9sjRG9J6wsmkVHH7fMkL',
99
unsignedHex:
1010
'0x0000000000010000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000000000000000000000000000000000000000000000000000000000000000000000128a05933dc76e4e6c25f35d5c9b2a58769700e760000000002ff3d1658734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000000000000090000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002faf0800000000000000000000000020000000312cb32eaf92553064db98d271b56cba079ec78f5a6e0c1abd0132f70efb77e2274637ff336a29a57c386d58d09a9ae77cf1cf07bf1c9de44ebb0c9f300000001000000090000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008f54c610',
1111
signedHex:

modules/sdk-coin-flrp/test/resources/transactionData/exportInP.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Test data for export with single UTXO
22
export const EXPORT_IN_P = {
3-
txhash: '2Zsejg6FXjRB5t362rBncYbNohKLEjzZYcB9NceaxSmBX323HF',
3+
txhash: 'PoDjp4qXjXBATLyERVSrBBnfbS7Bvifh6RniE4fpsw71BTobK',
44
unsignedHex:
55
'0x0000000000120000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001db5e3b0000000000000000000000001000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000185492a9f3b2ba883350d66428a51e131ec5de24ec49ef4834961102e69fed15f0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b878c380000000200000000000000010000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001dcd6500000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000100000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e15810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cd38be06',
66
halfSignedSignature:
@@ -51,7 +51,7 @@ export const EXPORT_IN_P = {
5151
// Fee: 279432 nFLR
5252
// Change: ~0.5 FLR (499,720,568 nFLR)
5353
export const EXPORT_IN_P_TWO_UTXOS = {
54-
txhash: '2FEYQ3uEwREx44U96QAWmeyEsBUw4MTXxJNyFB3wScpiSouVu1',
54+
txhash: 'U8scHzoPkgHUGZZCsAwHWjjW6aJPbt9VcebeVybjBCDSk5jST',
5555
unsignedHex:
5656
'0x0000000000120000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001dc92178000000000000000000000001000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000285492a9f3b2ba883350d66428a51e131ec5de24ec49ef4834961102e69fed15f0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b9aca000000000200000000000000019c48f440c6b801f4953ea908423170275eb761186be1e009cb3a6360cd18e1b60000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b9aca000000000200000000000000010000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000059682f00000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000200000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e1581000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e15810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc00b7d1',
5757
halfSigntxHex:
@@ -110,7 +110,7 @@ export const EXPORT_IN_P_TWO_UTXOS = {
110110
// Fee: 279,432 nFLR
111111
// Change: 0
112112
export const EXPORT_IN_P_NO_CHANGE = {
113-
txhash: 'eg5at8mZ6EeAGj1FR5sgSRwprJLxq8Xe2yBSs53P1VwEmsRuT',
113+
txhash: 'nwbAkJ4pBoMtr3WatdzqPu2MVcrTaQmAeBHWYX8aWaSkBWGqy',
114114
unsignedHex:
115115
'0x000000000012000000720000000000000000000000000000000000000000000000000000000000000000000000000000000185492a9f3b2ba883350d66428a51e131ec5de24ec49ef4834961102e69fed15f0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b9aca000000000200000000000000010000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000003b968678000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000100000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e15810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000578cb2fa',
116116
halfSigntxHex:

modules/sdk-coin-flrp/test/resources/transactionData/importInC.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const IMPORT_IN_C = {
2-
txhash: '6mbzDvpNxZ6DyGxpzv6m3Q5CWBwDs8GJxsiBzf9EjprZqAoBj',
2+
txhash: '2we2yuz575k7BnVgX4AdiheL9xTDpVSi8f8tRpD4C7SwPxR7YB',
33
unsignedHex:
44
'0x0000000000000000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da5552479000000000000000000000000000000000000000000000000000000000000000000000001fcea1c0e2cb7e3d77c993eb74ee05d98c24325ded1918e8a0595c96a789e2f790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000001dcd65000000000200000000000000010000000117dbd11b9dd1c9be337353db7c14f9fb3662e5b5000000001d8119c058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000100000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e158100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003452faa4',
55
halfSignedSignature:

modules/sdk-coin-flrp/test/resources/transactionData/importInP.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
export const IMPORT_IN_P = {
2-
txhash: 'E9zZjFzTshfrZZv17n17gFKwj9ijyRaj6nQ1cJed3gYxSBUaX',
2+
txhash: '2fqgZfz6mqgxAzCTwFnN9kAYQEKntCXfATdqV5pYFJKMCFXmam',
33
unsignedHex:
44
'0x0000000000110000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002e7b2b80000000000000000000000020000000312cb32eaf92553064db98d271b56cba079ec78f5a6e0c1abd0132f70efb77e2274637ff336a29a57c386d58d09a9ae77cf1cf07bf1c9de44ebb0c9f3000000000000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000001836b0141f34b3f855b69a0837e8ac0ede628333a4fbb389fb6a939709b0dbfa90000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002faf08000000002000000000000000100000001000000090000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012cb32eaf92553064db98d271b56cba079ec78f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660100a9',
55
signedHex:

modules/sdk-coin-flrp/test/unit/flrp.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ describe('Flrp test cases', function () {
211211
});
212212

213213
txExplain.type.should.equal(TransactionType.Export);
214-
txExplain.id.should.equal(EXPORT_IN_P.txhash);
215214
txExplain.fee.fee.should.equal(EXPORT_IN_P.fee);
216215
txExplain.inputs.should.be.an.Array();
217216
txExplain.changeAmount.should.equal('498459568');
@@ -241,7 +240,6 @@ describe('Flrp test cases', function () {
241240
});
242241

243242
txExplain.type.should.equal(TransactionType.Import);
244-
txExplain.id.should.equal(IMPORT_IN_P.txhash);
245243
txExplain.fee.fee.should.equal(IMPORT_IN_P.fee);
246244
txExplain.inputs.should.be.an.Array();
247245
txExplain.outputAmount.should.equal('48739000');

modules/sdk-coin-flrp/test/unit/lib/exportInCTxBuilder.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@ describe('ExportInCTxBuilder', function () {
128128
const tx = await txBuilder.build();
129129
const rawTx = tx.toBroadcastFormat();
130130
rawTx.should.equal(testData.unsignedHex);
131-
tx.id.should.equal(testData.txhash);
132131
});
133132

134133
it('Should recover signed export from signed raw tx', async () => {
@@ -176,5 +175,15 @@ describe('ExportInCTxBuilder', function () {
176175
err.message.should.be.equal('Private key cannot sign the transaction');
177176
});
178177
});
178+
179+
it('should verify on-chain tx id for signed C-chain export', async () => {
180+
const signedExportHex =
181+
'0x0000000000010000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000000000000000000000000000000000000000000000000000000000000000000000117dbd11b9dd1c9be337353db7c14f9fb3662e5b50000000002ff3d1658734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000000000000050000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002faf080000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000100000009000000018d1ac79d2e26d1c9689ca93b3b191c077dced2f201bdda132e74c3fc5ab9b10b6c85fd318dd6c0a99b327145977ac6ea6ff54cb8e9b7093b6bbe3545b3cc126400';
182+
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedExportHex);
183+
const tx = await txBuilder.build();
184+
const rawTx = tx.toBroadcastFormat();
185+
rawTx.should.equal(signedExportHex);
186+
tx.id.should.equal('3kXUsHix1bZRQ9hqUc24cp7sXFiy2LbPn6Eh2HQCAaMUi75s9');
187+
});
179188
});
180189
});

modules/sdk-coin-flrp/test/unit/lib/exportInPTxBuilder.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,4 +189,16 @@ describe('Flrp Export In P Tx Builder', () => {
189189
err.message.should.be.equal('Private key cannot sign the transaction');
190190
});
191191
});
192+
193+
describe('on-chain verified transactions', () => {
194+
it('should verify on-chain tx id for signed P-chain export', async () => {
195+
const signedExportHex =
196+
'0x0000000000120000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001ac6e558000000000000000000000001000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f9100000003862ce86ba2e28884e8b83f5d6266d274b33632a1cc213d4c12996037fc21b2020000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000001d6c96c60000000100000000a4891dfbd024a53b8e4512427d919910568989b9b4846026ac7bcb8290494c260000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000000003ffabc0000000100000000c1fb3b438f8f49e1bb657a59106be9f5f91d2efce5e0259fcbbb9458e271f80d0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000000400e7000000001000000000000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002faf080000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f91000000030000000900000001afdf0ac2bdbfb1735081dd859f4d263e587d81ba81c6bd2cb345ee5a66cef4e97a634c740f35ef6ba600796a5add1d91e69a14cfcb22b65e6ae0bcdfbcebfaba000000000900000001afdf0ac2bdbfb1735081dd859f4d263e587d81ba81c6bd2cb345ee5a66cef4e97a634c740f35ef6ba600796a5add1d91e69a14cfcb22b65e6ae0bcdfbcebfaba000000000900000001afdf0ac2bdbfb1735081dd859f4d263e587d81ba81c6bd2cb345ee5a66cef4e97a634c740f35ef6ba600796a5add1d91e69a14cfcb22b65e6ae0bcdfbcebfaba00';
197+
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedExportHex);
198+
const tx = await txBuilder.build();
199+
const rawTx = tx.toBroadcastFormat();
200+
rawTx.should.equal(signedExportHex);
201+
tx.id.should.equal('ka8at5CinmpUc6QMVr33dyUJi156LKMdodrJM59kS6EWr3vHg');
202+
});
203+
});
192204
});

modules/sdk-coin-flrp/test/unit/lib/importInCTxBuilder.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,16 @@ describe('Flrp Import In C Tx Builder', () => {
4949
},
5050
txHash: testData.txhash,
5151
});
52+
53+
describe('on-chain verified transactions', () => {
54+
it('should verify on-chain tx id for signed C-chain import', async () => {
55+
const signedImportHex =
56+
'0x0000000000000000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000000000000000000000000000000000000000000000000000000000000000000000162ef0c8ced5668d1230c82e274f5c19357df8c005743367421e8a2b48c73989a0000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002faf0800000000200000000000000010000000117dbd11b9dd1c9be337353db7c14f9fb3662e5b50000000002aea54058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000010000000900000002ab32c15c75c763b24adf26eee85aa7d6a76b366e6b88e34b94f76baec91bae7336a32ed637fc232cccb2f772d3092eee66594070a2be92751148feffc76005b1013ee78fb11f3f9ffd90d970cd5c95e9dee611bb4feafaa0b0220cc641ef054c9f5701fde4fad2fe7f2594db9dafd858c62f9cf6fe6b58334d73da40a5a8412d4600';
57+
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedImportHex);
58+
const tx = await txBuilder.build();
59+
const rawTx = tx.toBroadcastFormat();
60+
rawTx.should.equal(signedImportHex);
61+
tx.id.should.equal('2ks9vW1SVWD4KsNPHgXnV5dpJaCcaxVNbQW4H7t9BMDxApGvfa');
62+
});
63+
});
5264
});

modules/sdk-coin-flrp/test/unit/lib/importInPTxBuilder.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,16 @@ describe('Flrp Import In P Tx Builder', () => {
129129
err.message.should.be.equal('Private key cannot sign the transaction');
130130
});
131131
});
132+
133+
describe('on-chain verified transactions', () => {
134+
it('should verify on-chain tx id for signed P-chain import', async () => {
135+
const signedImportHex =
136+
'0x0000000000110000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002e79f04000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f91000000000000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000001063ec620d1892f802c8f0c124d05ce1e73a85686bea2b09380fc58f6d72497db0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002faf0800000000200000000000000010000000100000009000000022ed4ebc2c81e38820cc7bd6e952d10bd30382fa0679c8a0ba5dc67990a09125656d47eadcc622af935fd5dad654f9b00d3b9563df38e875ef1964e1c9ded851100ec514ace26baefce3ffeab94e3580443abcc3cea669a87c7c26ef8ffa3fe79b330e4bdbacabfd1cce9f7b6a9f2515b4fdf627f7d2678e9532d861a7673444aa700';
137+
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedImportHex);
138+
const tx = await txBuilder.build();
139+
const rawTx = tx.toBroadcastFormat();
140+
rawTx.should.equal(signedImportHex);
141+
tx.id.should.equal('2vwvuXp47dsUmqb4vkaMk7UsukrZNapKXT2ruZhVibbjMDpqr9');
142+
});
143+
});
132144
});

0 commit comments

Comments
 (0)