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: 3 additions & 1 deletion modules/sdk-coin-flrp/src/lib/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,9 @@ export class Transaction extends BaseTransaction {
}

get id(): string {
const bufferArray = utils.sha256((this._flareTransaction as UnsignedTx).toBytes());
const unsignedTx = this._flareTransaction as UnsignedTx;
const txBytes = unsignedTx.getSignedTx().toBytes();
const bufferArray = utils.sha256(txBytes);
return utils.cb58Encode(Buffer.from(bufferArray));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// For round-trip tests to work, feeRate is calculated as: totalFee - fixedFee = -718250
// For build-from-scratch tests, the hex will differ as proper fees are now enforced.
export const EXPORT_IN_C = {
txhash: 'KELMR2gmYpRUeXRyuimp1xLNUoHSkwNUURwBn4v1D4aKircKR',
txhash: '4AiWTT1uHFw6TDekeAGxcdrfgoaif9sjRG9J6wsmkVHH7fMkL',
unsignedHex:
'0x0000000000010000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000000000000000000000000000000000000000000000000000000000000000000000128a05933dc76e4e6c25f35d5c9b2a58769700e760000000002ff3d1658734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000000000000090000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002faf0800000000000000000000000020000000312cb32eaf92553064db98d271b56cba079ec78f5a6e0c1abd0132f70efb77e2274637ff336a29a57c386d58d09a9ae77cf1cf07bf1c9de44ebb0c9f300000001000000090000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008f54c610',
signedHex:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Test data for export with single UTXO
export const EXPORT_IN_P = {
txhash: '2Zsejg6FXjRB5t362rBncYbNohKLEjzZYcB9NceaxSmBX323HF',
txhash: 'PoDjp4qXjXBATLyERVSrBBnfbS7Bvifh6RniE4fpsw71BTobK',
unsignedHex:
'0x0000000000120000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001db5e3b0000000000000000000000001000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000185492a9f3b2ba883350d66428a51e131ec5de24ec49ef4834961102e69fed15f0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b878c380000000200000000000000010000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001dcd6500000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000100000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e15810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cd38be06',
halfSignedSignature:
Expand Down Expand Up @@ -51,7 +51,7 @@ export const EXPORT_IN_P = {
// Fee: 279432 nFLR
// Change: ~0.5 FLR (499,720,568 nFLR)
export const EXPORT_IN_P_TWO_UTXOS = {
txhash: '2FEYQ3uEwREx44U96QAWmeyEsBUw4MTXxJNyFB3wScpiSouVu1',
txhash: 'U8scHzoPkgHUGZZCsAwHWjjW6aJPbt9VcebeVybjBCDSk5jST',
unsignedHex:
'0x0000000000120000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001dc92178000000000000000000000001000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000285492a9f3b2ba883350d66428a51e131ec5de24ec49ef4834961102e69fed15f0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b9aca000000000200000000000000019c48f440c6b801f4953ea908423170275eb761186be1e009cb3a6360cd18e1b60000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b9aca000000000200000000000000010000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000059682f00000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000200000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e1581000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e15810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc00b7d1',
halfSigntxHex:
Expand Down Expand Up @@ -110,7 +110,7 @@ export const EXPORT_IN_P_TWO_UTXOS = {
// Fee: 279,432 nFLR
// Change: 0
export const EXPORT_IN_P_NO_CHANGE = {
txhash: 'eg5at8mZ6EeAGj1FR5sgSRwprJLxq8Xe2yBSs53P1VwEmsRuT',
txhash: 'nwbAkJ4pBoMtr3WatdzqPu2MVcrTaQmAeBHWYX8aWaSkBWGqy',
unsignedHex:
'0x000000000012000000720000000000000000000000000000000000000000000000000000000000000000000000000000000185492a9f3b2ba883350d66428a51e131ec5de24ec49ef4834961102e69fed15f0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000003b9aca000000000200000000000000010000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000003b968678000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000100000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e15810000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000578cb2fa',
halfSigntxHex:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const IMPORT_IN_C = {
txhash: '6mbzDvpNxZ6DyGxpzv6m3Q5CWBwDs8GJxsiBzf9EjprZqAoBj',
txhash: '2we2yuz575k7BnVgX4AdiheL9xTDpVSi8f8tRpD4C7SwPxR7YB',
unsignedHex:
'0x0000000000000000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da5552479000000000000000000000000000000000000000000000000000000000000000000000001fcea1c0e2cb7e3d77c993eb74ee05d98c24325ded1918e8a0595c96a789e2f790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000001dcd65000000000200000000000000010000000117dbd11b9dd1c9be337353db7c14f9fb3662e5b5000000001d8119c058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000100000009000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003329be7d01cd3ebaae6654d7327dd9f17a2e158100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003452faa4',
halfSignedSignature:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export const IMPORT_IN_P = {
txhash: 'E9zZjFzTshfrZZv17n17gFKwj9ijyRaj6nQ1cJed3gYxSBUaX',
txhash: '2fqgZfz6mqgxAzCTwFnN9kAYQEKntCXfATdqV5pYFJKMCFXmam',
unsignedHex:
'0x0000000000110000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002e7b2b80000000000000000000000020000000312cb32eaf92553064db98d271b56cba079ec78f5a6e0c1abd0132f70efb77e2274637ff336a29a57c386d58d09a9ae77cf1cf07bf1c9de44ebb0c9f3000000000000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000001836b0141f34b3f855b69a0837e8ac0ede628333a4fbb389fb6a939709b0dbfa90000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002faf08000000002000000000000000100000001000000090000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012cb32eaf92553064db98d271b56cba079ec78f50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000660100a9',
signedHex:
Expand Down
2 changes: 0 additions & 2 deletions modules/sdk-coin-flrp/test/unit/flrp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@ describe('Flrp test cases', function () {
});

txExplain.type.should.equal(TransactionType.Export);
txExplain.id.should.equal(EXPORT_IN_P.txhash);
txExplain.fee.fee.should.equal(EXPORT_IN_P.fee);
txExplain.inputs.should.be.an.Array();
txExplain.changeAmount.should.equal('498459568');
Expand Down Expand Up @@ -241,7 +240,6 @@ describe('Flrp test cases', function () {
});

txExplain.type.should.equal(TransactionType.Import);
txExplain.id.should.equal(IMPORT_IN_P.txhash);
txExplain.fee.fee.should.equal(IMPORT_IN_P.fee);
txExplain.inputs.should.be.an.Array();
txExplain.outputAmount.should.equal('48739000');
Expand Down
11 changes: 10 additions & 1 deletion modules/sdk-coin-flrp/test/unit/lib/exportInCTxBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,6 @@ describe('ExportInCTxBuilder', function () {
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(testData.unsignedHex);
tx.id.should.equal(testData.txhash);
});

it('Should recover signed export from signed raw tx', async () => {
Expand Down Expand Up @@ -176,5 +175,15 @@ describe('ExportInCTxBuilder', function () {
err.message.should.be.equal('Private key cannot sign the transaction');
});
});

it('should verify on-chain tx id for signed C-chain export', async () => {
const signedExportHex =
'0x0000000000010000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000000000000000000000000000000000000000000000000000000000000000000000117dbd11b9dd1c9be337353db7c14f9fb3662e5b50000000002ff3d1658734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000000000000050000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002faf080000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f910000000100000009000000018d1ac79d2e26d1c9689ca93b3b191c077dced2f201bdda132e74c3fc5ab9b10b6c85fd318dd6c0a99b327145977ac6ea6ff54cb8e9b7093b6bbe3545b3cc126400';
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedExportHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(signedExportHex);
tx.id.should.equal('3kXUsHix1bZRQ9hqUc24cp7sXFiy2LbPn6Eh2HQCAaMUi75s9');
});
});
});
12 changes: 12 additions & 0 deletions modules/sdk-coin-flrp/test/unit/lib/exportInPTxBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,4 +189,16 @@ describe('Flrp Export In P Tx Builder', () => {
err.message.should.be.equal('Private key cannot sign the transaction');
});
});

describe('on-chain verified transactions', () => {
it('should verify on-chain tx id for signed P-chain export', async () => {
const signedExportHex =
'0x0000000000120000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000007000000001ac6e558000000000000000000000001000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f9100000003862ce86ba2e28884e8b83f5d6266d274b33632a1cc213d4c12996037fc21b2020000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd00000005000000001d6c96c60000000100000000a4891dfbd024a53b8e4512427d919910568989b9b4846026ac7bcb8290494c260000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd0000000500000000003ffabc0000000100000000c1fb3b438f8f49e1bb657a59106be9f5f91d2efce5e0259fcbbb9458e271f80d0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000000400e7000000001000000000000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da55524790000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002faf080000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f91000000030000000900000001afdf0ac2bdbfb1735081dd859f4d263e587d81ba81c6bd2cb345ee5a66cef4e97a634c740f35ef6ba600796a5add1d91e69a14cfcb22b65e6ae0bcdfbcebfaba000000000900000001afdf0ac2bdbfb1735081dd859f4d263e587d81ba81c6bd2cb345ee5a66cef4e97a634c740f35ef6ba600796a5add1d91e69a14cfcb22b65e6ae0bcdfbcebfaba000000000900000001afdf0ac2bdbfb1735081dd859f4d263e587d81ba81c6bd2cb345ee5a66cef4e97a634c740f35ef6ba600796a5add1d91e69a14cfcb22b65e6ae0bcdfbcebfaba00';
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedExportHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(signedExportHex);
tx.id.should.equal('ka8at5CinmpUc6QMVr33dyUJi156LKMdodrJM59kS6EWr3vHg');
});
});
});
12 changes: 12 additions & 0 deletions modules/sdk-coin-flrp/test/unit/lib/importInCTxBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,16 @@ describe('Flrp Import In C Tx Builder', () => {
},
txHash: testData.txhash,
});

describe('on-chain verified transactions', () => {
it('should verify on-chain tx id for signed C-chain import', async () => {
const signedImportHex =
'0x0000000000000000007278db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000000000000000000000000000000000000000000000000000000000000000000000162ef0c8ced5668d1230c82e274f5c19357df8c005743367421e8a2b48c73989a0000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002faf0800000000200000000000000010000000117dbd11b9dd1c9be337353db7c14f9fb3662e5b50000000002aea54058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000010000000900000002ab32c15c75c763b24adf26eee85aa7d6a76b366e6b88e34b94f76baec91bae7336a32ed637fc232cccb2f772d3092eee66594070a2be92751148feffc76005b1013ee78fb11f3f9ffd90d970cd5c95e9dee611bb4feafaa0b0220cc641ef054c9f5701fde4fad2fe7f2594db9dafd858c62f9cf6fe6b58334d73da40a5a8412d4600';
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedImportHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(signedImportHex);
tx.id.should.equal('2ks9vW1SVWD4KsNPHgXnV5dpJaCcaxVNbQW4H7t9BMDxApGvfa');
});
});
});
12 changes: 12 additions & 0 deletions modules/sdk-coin-flrp/test/unit/lib/importInPTxBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,16 @@ describe('Flrp Import In P Tx Builder', () => {
err.message.should.be.equal('Private key cannot sign the transaction');
});
});

describe('on-chain verified transactions', () => {
it('should verify on-chain tx id for signed P-chain import', async () => {
const signedImportHex =
'0x0000000000110000007200000000000000000000000000000000000000000000000000000000000000000000000158734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000070000000002e79f04000000000000000000000002000000033329be7d01cd3ebaae6654d7327dd9f17a2e15817e918a5e8083ae4c9f2f0ed77055c24bf3665001c7324437c96c7c8a6a152da2385c1db5c3ab1f91000000000000000078db5c30bed04c05ce209179812850bbb3fe6d46d7eef3744d814c0da555247900000001063ec620d1892f802c8f0c124d05ce1e73a85686bea2b09380fc58f6d72497db0000000058734f94af871c3d131b56131b6fb7a0291eacadd261e69dfb42a9cdf6f7fddd000000050000000002faf0800000000200000000000000010000000100000009000000022ed4ebc2c81e38820cc7bd6e952d10bd30382fa0679c8a0ba5dc67990a09125656d47eadcc622af935fd5dad654f9b00d3b9563df38e875ef1964e1c9ded851100ec514ace26baefce3ffeab94e3580443abcc3cea669a87c7c26ef8ffa3fe79b330e4bdbacabfd1cce9f7b6a9f2515b4fdf627f7d2678e9532d861a7673444aa700';
const txBuilder = new TransactionBuilderFactory(coins.get('tflrp')).from(signedImportHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(signedImportHex);
tx.id.should.equal('2vwvuXp47dsUmqb4vkaMk7UsukrZNapKXT2ruZhVibbjMDpqr9');
});
});
});
6 changes: 0 additions & 6 deletions modules/sdk-coin-flrp/test/unit/lib/signFlowTestSuit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,13 @@ export default function signFlowTestSuit(data: signFlowTestSuitArgs): void {
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.unsignedTxHex);
tx.id.should.equal(data.txHash);
});

it('Should recover tx from raw tx', async () => {
const txBuilder = data.newTxFactory().from(data.unsignedTxHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.unsignedTxHex);
tx.id.should.equal(data.txHash);
});

it('Should create half signed tx for same values', async () => {
Expand All @@ -40,15 +38,13 @@ export default function signFlowTestSuit(data: signFlowTestSuitArgs): void {
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.halfSignedTxHex);
tx.id.should.equal(data.txHash);
});

it('Should recover half signed tx from raw tx', async () => {
const txBuilder = data.newTxFactory().from(data.halfSignedTxHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.halfSignedTxHex);
tx.id.should.equal(data.txHash);
});

it('Should half sign tx from unsigned raw tx', async () => {
Expand All @@ -57,15 +53,13 @@ export default function signFlowTestSuit(data: signFlowTestSuitArgs): void {
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.halfSignedTxHex);
tx.id.should.equal(data.txHash);
});

it('Should recover half signed tx from half signed raw tx', async () => {
const txBuilder = data.newTxFactory().from(data.halfSignedTxHex);
const tx = await txBuilder.build();
const rawTx = tx.toBroadcastFormat();
rawTx.should.equal(data.halfSignedTxHex);
tx.id.should.equal(data.txHash);
});

it('Should recover signed tx from signed raw tx', async () => {
Expand Down