From 4b59cef6f08b2eedaf21e39f15b120c3f78554f2 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Tue, 19 Dec 2023 12:13:56 +0200 Subject: [PATCH 1/2] set default transaction version=2 and fix failing unit tests --- src/constants.ts | 3 +-- src/networkParams.spec.ts | 4 ++-- src/networkParams.ts | 4 ++-- src/proto/serializer.spec.ts | 25 +++++++++++-------- src/relayedTransactionV1Builder.spec.ts | 10 ++++---- src/relayedTransactionV2Builder.spec.ts | 2 +- src/smartcontracts/interaction.spec.ts | 4 ++-- src/testutils/wallets.ts | 2 +- src/transaction.spec.ts | 32 ++++++++++++------------- 9 files changed, 45 insertions(+), 41 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index f9350f03..c00f61a3 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -2,8 +2,7 @@ export const TRANSACTION_MIN_GAS_PRICE = 1000000000; export const TRANSACTION_OPTIONS_DEFAULT = 0; export const TRANSACTION_OPTIONS_TX_HASH_SIGN = 0b0001; export const TRANSACTION_OPTIONS_TX_GUARDED = 0b0010; -export const TRANSACTION_VERSION_DEFAULT = 1; -export const TRANSACTION_VERSION_WITH_OPTIONS = 2; +export const TRANSACTION_VERSION_DEFAULT = 2; export const ESDT_TRANSFER_GAS_LIMIT = 500000; export const ESDT_TRANSFER_FUNCTION_NAME = "ESDTTransfer"; export const ESDTNFT_TRANSFER_FUNCTION_NAME = "ESDTNFTTransfer"; diff --git a/src/networkParams.spec.ts b/src/networkParams.spec.ts index 2932b816..c217414e 100644 --- a/src/networkParams.spec.ts +++ b/src/networkParams.spec.ts @@ -1,6 +1,6 @@ import { assert } from "chai"; import { - TRANSACTION_OPTIONS_DEFAULT, TRANSACTION_OPTIONS_TX_GUARDED, TRANSACTION_OPTIONS_TX_HASH_SIGN, TRANSACTION_VERSION_DEFAULT, TRANSACTION_VERSION_WITH_OPTIONS + TRANSACTION_OPTIONS_DEFAULT, TRANSACTION_OPTIONS_TX_GUARDED, TRANSACTION_OPTIONS_TX_HASH_SIGN, TRANSACTION_VERSION_DEFAULT } from "./constants"; import { TransactionOptions, TransactionVersion } from "./networkParams"; @@ -17,7 +17,7 @@ describe("test transaction version", () => { const versionWithOptions = TransactionVersion.withTxOptions(); assert.equal(TRANSACTION_VERSION_DEFAULT, versionDefault.valueOf()); - assert.equal(TRANSACTION_VERSION_WITH_OPTIONS, versionWithOptions.valueOf()); + assert.equal(TRANSACTION_VERSION_DEFAULT, versionWithOptions.valueOf()); }); }); diff --git a/src/networkParams.ts b/src/networkParams.ts index 5a26bf08..24b8b701 100644 --- a/src/networkParams.ts +++ b/src/networkParams.ts @@ -1,4 +1,4 @@ -import { TRANSACTION_OPTIONS_DEFAULT, TRANSACTION_OPTIONS_TX_GUARDED, TRANSACTION_OPTIONS_TX_HASH_SIGN, TRANSACTION_VERSION_DEFAULT, TRANSACTION_VERSION_WITH_OPTIONS } from "./constants"; +import { TRANSACTION_OPTIONS_DEFAULT, TRANSACTION_OPTIONS_TX_GUARDED, TRANSACTION_OPTIONS_TX_HASH_SIGN, TRANSACTION_VERSION_DEFAULT } from "./constants"; import * as errors from "./errors"; export class TransactionVersion { @@ -31,7 +31,7 @@ export class TransactionVersion { * Creates a TransactionVersion object with the VERSION setting for enabling options */ static withTxOptions(): TransactionVersion { - return new TransactionVersion(TRANSACTION_VERSION_WITH_OPTIONS); + return new TransactionVersion(TRANSACTION_VERSION_DEFAULT); } valueOf(): number { diff --git a/src/proto/serializer.spec.ts b/src/proto/serializer.spec.ts index f6da42c5..174f8af2 100644 --- a/src/proto/serializer.spec.ts +++ b/src/proto/serializer.spec.ts @@ -26,10 +26,11 @@ describe("serialize transactions", () => { chainID: "local-testnet" }); - transaction.applySignature(new Signature("b56769014f2bdc5cf9fc4a05356807d71fcf8775c819b0f1b0964625b679c918ffa64862313bfef86f99b38cb84fcdb16fa33ad6eb565276616723405cd8f109")); + const signer = wallets.alice.signer; + transaction.applySignature(await signer.sign(transaction.serializeForSigning())); let buffer = serializer.serializeTransaction(transaction); - assert.equal(buffer.toString("hex"), "0859120200001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc0340d08603520d6c6f63616c2d746573746e657458016240b56769014f2bdc5cf9fc4a05356807d71fcf8775c819b0f1b0964625b679c918ffa64862313bfef86f99b38cb84fcdb16fa33ad6eb565276616723405cd8f109"); + assert.equal(buffer.toString("hex"), "0859120200001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc0340d08603520d6c6f63616c2d746573746e6574580262403f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503"); }); it("with data, no value", async () => { @@ -43,10 +44,11 @@ describe("serialize transactions", () => { chainID: "local-testnet" }); - transaction.applySignature(new Signature("e47fd437fc17ac9a69f7bf5f85bafa9e7628d851c4f69bd9fedc7e36029708b2e6d168d5cd652ea78beedd06d4440974ca46c403b14071a1a148d4188f6f2c0d")); + const signer = wallets.alice.signer; + transaction.applySignature(await signer.sign(transaction.serializeForSigning())); let buffer = serializer.serializeTransaction(transaction); - assert.equal(buffer.toString("hex"), "085a120200001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc034080f1044a0568656c6c6f520d6c6f63616c2d746573746e657458016240e47fd437fc17ac9a69f7bf5f85bafa9e7628d851c4f69bd9fedc7e36029708b2e6d168d5cd652ea78beedd06d4440974ca46c403b14071a1a148d4188f6f2c0d"); + assert.equal(buffer.toString("hex"), "085a120200001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc034080f1044a0568656c6c6f520d6c6f63616c2d746573746e657458026240f9e8c1caf7f36b99e7e76ee1118bf71b55cde11a2356e2b3adf15f4ad711d2e1982469cbba7eb0afbf74e8a8f78e549b9410cd86eeaa88fcba62611ac9f6e30e"); }); it("with data, with value", async () => { @@ -60,10 +62,11 @@ describe("serialize transactions", () => { chainID: "local-testnet" }); - transaction.applySignature(new Signature("9074789e0b4f9b2ac24b1fd351a4dd840afcfeb427b0f93e2a2d429c28c65ee9f4c288ca4dbde79de0e5bcf8c1a5d26e1b1c86203faea923e0edefb0b5099b0c")); + const signer = wallets.alice.signer; + transaction.applySignature(await signer.sign(transaction.serializeForSigning())); let buffer = serializer.serializeTransaction(transaction); - assert.equal(buffer.toString("hex"), "085b1209008ac7230489e800001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc0340a08d064a0c666f722074686520626f6f6b520d6c6f63616c2d746573746e6574580162409074789e0b4f9b2ac24b1fd351a4dd840afcfeb427b0f93e2a2d429c28c65ee9f4c288ca4dbde79de0e5bcf8c1a5d26e1b1c86203faea923e0edefb0b5099b0c"); + assert.equal(buffer.toString("hex"), "085b1209008ac7230489e800001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc0340a08d064a0c666f722074686520626f6f6b520d6c6f63616c2d746573746e657458026240b45f22e9f57a6df22670fcc3566723a0711a05ac2547456de59fd222a54940e4a1d99bd414897ccbf5c02a842ad86e638989b7f4d30edd26c99a8cd1eb092304"); }); it("with data, with large value", async () => { @@ -77,10 +80,11 @@ describe("serialize transactions", () => { chainID: "local-testnet" }); - transaction.applySignature(new Signature("39938d15812708475dfc8125b5d41dbcea0b2e3e7aabbbfceb6ce4f070de3033676a218b73facd88b1432d7d4accab89c6130b3abe5cc7bbbb5146e61d355b03")); + const signer = wallets.alice.signer; + transaction.applySignature(await signer.sign(transaction.serializeForSigning())); let buffer = serializer.serializeTransaction(transaction); - assert.equal(buffer.toString("hex"), "085c120e00018ee90ff6181f3761632000001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc0340a08d064a11666f722074686520737061636573686970520d6c6f63616c2d746573746e65745801624039938d15812708475dfc8125b5d41dbcea0b2e3e7aabbbfceb6ce4f070de3033676a218b73facd88b1432d7d4accab89c6130b3abe5cc7bbbb5146e61d355b03"); + assert.equal(buffer.toString("hex"), "085c120e00018ee90ff6181f3761632000001a208049d639e5a6980d1cd2392abcce41029cda74a1563523a202f09641cc2618f82a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e1388094ebdc0340a08d064a11666f722074686520737061636573686970520d6c6f63616c2d746573746e65745802624001f05aa8cb0614e12a94ab9dcbde5e78370a4e05d23ef25a1fb9d5fcf1cb3b1f33b919cd8dafb1704efb18fa233a8aa0d3344fb6ee9b613a7d7a403786ffbd0a"); }); it("with nonce = 0", async () => { @@ -113,9 +117,10 @@ describe("serialize transactions", () => { chainID: "T" }); - transaction.applySignature(new Signature("5966dd6b98fc5ecbcd203fa38fac7059ba5c17683099071883b0ad6697386769321d851388a99cb8b81aab625aa2d7e13621432dbd8ab334c5891cd7c7755200")) + const signer = wallets.carol.signer; + transaction.applySignature(await signer.sign(transaction.serializeForSigning())); const buffer = serializer.serializeTransaction(transaction); - assert.equal(buffer.toString("hex"), "08cc011209000de0b6b3a76400001a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e12205616c6963652a20b2a11555ce521e4944e09ab17549d85b487dcd26c84b5017a39e31a3670889ba32056361726f6c388094ebdc0340d08603520154580162405966dd6b98fc5ecbcd203fa38fac7059ba5c17683099071883b0ad6697386769321d851388a99cb8b81aab625aa2d7e13621432dbd8ab334c5891cd7c7755200"); + assert.equal(buffer.toString("hex"), "08cc011209000de0b6b3a76400001a200139472eff6886771a982f3083da5d421f24c29181e63888228dc81ca60d69e12205616c6963652a20b2a11555ce521e4944e09ab17549d85b487dcd26c84b5017a39e31a3670889ba32056361726f6c388094ebdc0340d086035201545802624051e6cd78fb3ab4b53ff7ad6864df27cb4a56d70603332869d47a5cf6ea977c30e696103e41e8dddf2582996ad335229fdf4acb726564dbc1a0bc9e705b511f06"); }); }); diff --git a/src/relayedTransactionV1Builder.spec.ts b/src/relayedTransactionV1Builder.spec.ts index 4d19bf9c..26534530 100644 --- a/src/relayedTransactionV1Builder.spec.ts +++ b/src/relayedTransactionV1Builder.spec.ts @@ -74,8 +74,8 @@ describe("test relayed v1 transaction builder", function () { relayedTxV1.applySignature(await alice.signer.sign(relayedTxV1.serializeForSigning())); assert.equal(relayedTxV1.getNonce().valueOf(), 2627); - assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414141415141414141414141414141414141414141414141414141414141432f2f383d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225a3256305132397564484a68593352446232356d6157633d222c227369676e6174757265223a2239682b6e6742584f5536776674315464437368534d4b3454446a5a32794f74686336564c576e3478724d5a706248427738677a6c6659596d362b766b505258303764634a562b4745635462616a7049692b5a5a5942773d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a317d"); - assert.equal(relayedTxV1.getSignature().toString("hex"), "c7d2c3b971f44eca676c10624d3c4319f8898af159f003e1e59f446cb75e5a294c9f0758d800e04d3daff11e67d20c4c1f85fd54aad6deb947ef391e6dd09d07"); + assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414141415141414141414141414141414141414141414141414141414141432f2f383d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225a3256305132397564484a68593352446232356d6157633d222c227369676e6174757265223a2272525455544858677a4273496e4f6e454b6b7869642b354e66524d486e33534948314673746f577352434c434b3258514c41614f4e704449346531476173624c5150616130566f364144516d4f2b52446b6f364a43413d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a327d"); + assert.equal(relayedTxV1.getSignature().toString("hex"), "128e7cdc14c2b9beee2f3ff7a7fa5d1f5ef31a654a0c92e223c90ab28265fa277d306f23a06536248cf9573e828017004fb639617fade4d68a37524aafca710d"); }); it("should compute relayed v1 transaction (with usernames)", async function () { @@ -110,8 +110,8 @@ describe("test relayed v1 transaction builder", function () { relayedTxV1.applySignature(await frank.signer.sign(relayedTxV1.serializeForSigning())); assert.equal(relayedTxV1.getNonce().valueOf(), 715); - assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3230382c2273656e646572223a227371455656633553486b6c45344a717864556e59573068397a536249533141586f3534786f32634969626f3d222c227265636569766572223a2241546c484c76396f686e63616d433877673970645168386b77704742356a6949496f3349484b594e6165453d222c2276616c7565223a313030303030303030303030303030303030302c226761735072696365223a313030303030303030302c226761734c696d6974223a35303030302c2264617461223a22222c227369676e6174757265223a22744d616d736b6f315a574b526663594e4b5673793463797879643335764b754844576a3548706172344167734c2b4a4e585642545a574c754467384867514254476d724a6b49443133637050614c55322f38626644513d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a312c22736e64557365724e616d65223a22593246796232773d222c22726376557365724e616d65223a22595778705932553d227d"); - assert.equal(relayedTxV1.getSignature().toString("hex"), "0fbab023085551b7c497e5c52f64df802cb518ebaac93f8897e5cca25a8aff447565fa96570f7b547f7c0d0fceb2c7d12bcb5f37fa92c79725d9b2c69039f00d"); + assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3230382c2273656e646572223a227371455656633553486b6c45344a717864556e59573068397a536249533141586f3534786f32634969626f3d222c227265636569766572223a2241546c484c76396f686e63616d433877673970645168386b77704742356a6949496f3349484b594e6165453d222c2276616c7565223a313030303030303030303030303030303030302c226761735072696365223a313030303030303030302c226761734c696d6974223a35303030302c2264617461223a22222c227369676e6174757265223a226a33427a6469554144325963517473576c65707663664a6f75657a48573063316b735a424a4d6339573167435450512b6870636759457858326f6f367a4b5654347464314b4b6f79783841526a346e336474576c44413d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a322c22736e64557365724e616d65223a22593246796232773d222c22726376557365724e616d65223a22595778705932553d227d"); + assert.equal(relayedTxV1.getSignature().toString("hex"), "3787d640e5a579e7977a4a1bcdd435ad11855632fa4a414a06fbf8355692d1a58d76ef0adbdd6ccd6bd3c329f36bd53c180d4873ec1a6c558e659aeb9ab92d00"); }); it("should compute guarded inner Tx - relayed v1 transaction", async function () { @@ -149,7 +149,7 @@ describe("test relayed v1 transaction builder", function () { assert.equal(relayedTxV1.getNonce().valueOf(), 2627); assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414146414b565841323879704877692f79693741364c64504b704f68464d386958513d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225a3256305132397564484a68593352446232356d6157633d222c227369676e6174757265223a224b4b78324f33383655725135416b4f465258307578327933446a384853334b373038487174344668377161557669424550716c45614e746e6158706a6f2f333651476d4a456934784435457a6c6f4f677a634d4442773d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a322c226f7074696f6e73223a322c22677561726469616e223a22486f714c61306e655733766843716f56696c70715372744c5673774939535337586d7a563868477450684d3d222c22677561726469616e5369676e6174757265223a227879344959697947326261496e376e7a507531317871424b6c4132714153676c526b7873797131785a417a3839635454697a6237425855305737374a44613679323370434f2f745355383777336358496652746642413d3d227d"); - assert.equal(relayedTxV1.getSignature().toString("hex"), "f3db6318406f01ef807f04039e33563f97c2eabc1c8a59b6e412429725f03242cba679c717b734cb06859ef8e14349edf1db5eb1a9b3d36697b922475ae7ea07"); + assert.equal(relayedTxV1.getSignature().toString("hex"), "54a7a3a45c43d3d5e94076160c189ed03740db770a2ca31e54687cdda972c01949fa2ba3b21782c130d4e0c05792a223f976329935063fb852692326bfc0fa0e"); }); it("should compute guarded inner tx and guarded relayed v1 transaction", async function () { diff --git a/src/relayedTransactionV2Builder.spec.ts b/src/relayedTransactionV2Builder.spec.ts index b0aabd51..62542ebd 100644 --- a/src/relayedTransactionV2Builder.spec.ts +++ b/src/relayedTransactionV2Builder.spec.ts @@ -86,7 +86,7 @@ describe("test relayed v2 transaction builder", function () { assert.equal(relayedTxV2.getNonce().valueOf(), 37); assert.equal( relayedTxV2.getData().toString(), - "relayedTxV2@000000000000000000010000000000000000000000000000000000000002ffff@0f@676574436f6e7472616374436f6e666967@b6c5262d9837853e2201de357c1cc4c9803988a42d7049d26b7785dd0ac2bd4c6a8804b6fd9cf845fe2c2a622774b1a2dbd0a417c9a0bc3f0563a85bd15e710a"); + "relayedTxV2@000000000000000000010000000000000000000000000000000000000002ffff@0f@676574436f6e7472616374436f6e666967@fc3ed87a51ee659f937c1a1ed11c1ae677e99629fae9cc289461f033e6514d1a8cfad1144ae9c1b70f28554d196bd6ba1604240c1c1dc19c959e96c1c3b62d0c"); }); }); diff --git a/src/smartcontracts/interaction.spec.ts b/src/smartcontracts/interaction.spec.ts index d5330865..8cc6157c 100644 --- a/src/smartcontracts/interaction.spec.ts +++ b/src/smartcontracts/interaction.spec.ts @@ -190,7 +190,7 @@ describe("test smart contract interactor", function () { assert.equal(transaction.getData().toString(), "getUltimateAnswer"); assert.equal( transaction.getHash().toString(), - "60d0956a8902c1179dce92d91bd9670e31b9a9cd07c1d620edb7754a315b4818" + "3579ad09099feb9755c860ddd225251170806d833342e912fccdfe2ed5c3a364" ); transaction = interaction.withNonce(1).buildTransaction(); @@ -200,7 +200,7 @@ describe("test smart contract interactor", function () { assert.equal(transaction.getNonce().valueOf(), 1); assert.equal( transaction.getHash().toString(), - "acd207c38f6c3341b18d8ef331fa07ba49615fa12d7610aad5d8495293049f24" + "ad513ce7c5d371d30e48f073326899766736eac1ac231d847d45bc3facbcb496" ); // Execute, and wait for execution diff --git a/src/testutils/wallets.ts b/src/testutils/wallets.ts index a77f1535..fefefb05 100644 --- a/src/testutils/wallets.ts +++ b/src/testutils/wallets.ts @@ -92,7 +92,7 @@ export class TestWallet { async sync(provider: IAccountFetcher) { let accountOnNetwork = await provider.getAccount(this.address); - await this.account.update(accountOnNetwork); + this.account.update(accountOnNetwork); return this; } } diff --git a/src/transaction.spec.ts b/src/transaction.spec.ts index f4c90c09..5062563e 100644 --- a/src/transaction.spec.ts +++ b/src/transaction.spec.ts @@ -52,8 +52,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("b56769014f2bdc5cf9fc4a05356807d71fcf8775c819b0f1b0964625b679c918ffa64862313bfef86f99b38cb84fcdb16fa33ad6eb565276616723405cd8f109", transaction.getSignature().toString("hex")); - assert.equal(transaction.getHash().toString(), "eb30c50c8831885ebcfac986d27e949ec02cf25676e22a009b7a486e5431ec2e"); + assert.equal(transaction.getSignature().toString("hex"), "3f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503"); + assert.equal(transaction.getHash().toString(), "1359fb9d5b0b47ca9f3b4adce6e4a524fa74099dd4732743b9226774a4cb0ad8"); }); it("with data, no value", async () => { @@ -69,8 +69,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("e47fd437fc17ac9a69f7bf5f85bafa9e7628d851c4f69bd9fedc7e36029708b2e6d168d5cd652ea78beedd06d4440974ca46c403b14071a1a148d4188f6f2c0d", transaction.getSignature().toString("hex")); - assert.equal(transaction.getHash().toString(), "95ed9ac933712d7d77721d75eecfc7896873bb0d746417153812132521636872"); + assert.equal(transaction.getSignature().toString("hex"), "f9e8c1caf7f36b99e7e76ee1118bf71b55cde11a2356e2b3adf15f4ad711d2e1982469cbba7eb0afbf74e8a8f78e549b9410cd86eeaa88fcba62611ac9f6e30e"); + assert.equal(transaction.getHash().toString(), "10a2bd6f9c358d2c9645368081999efd2a4cc7f24bdfdd75e8f57485fd702001"); }); it("with data, with opaque, unused options (the protocol ignores the options when version == 1)", async () => { @@ -104,8 +104,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("9074789e0b4f9b2ac24b1fd351a4dd840afcfeb427b0f93e2a2d429c28c65ee9f4c288ca4dbde79de0e5bcf8c1a5d26e1b1c86203faea923e0edefb0b5099b0c", transaction.getSignature().toString("hex")); - assert.equal(transaction.getHash().toString(), "af53e0fc86612d5068862716b5169effdf554951ecc89849b0e836eb0b63fa3e"); + assert.equal(transaction.getSignature().toString("hex"), "b45f22e9f57a6df22670fcc3566723a0711a05ac2547456de59fd222a54940e4a1d99bd414897ccbf5c02a842ad86e638989b7f4d30edd26c99a8cd1eb092304"); + assert.equal(transaction.getHash().toString(), "84125d7154d81a723642100bdf74e6df99f7c069c016d1e6bbeb408fd4e961bf"); }); it("with data, with large value", async () => { @@ -121,8 +121,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("39938d15812708475dfc8125b5d41dbcea0b2e3e7aabbbfceb6ce4f070de3033676a218b73facd88b1432d7d4accab89c6130b3abe5cc7bbbb5146e61d355b03", transaction.getSignature().toString("hex")); - assert.equal(transaction.getHash().toString(), "e4a6048d92409cfe50f12e81218cb92f39966c618979a693b8d16320a06061c1"); + assert.equal(transaction.getSignature().toString("hex"), "01f05aa8cb0614e12a94ab9dcbde5e78370a4e05d23ef25a1fb9d5fcf1cb3b1f33b919cd8dafb1704efb18fa233a8aa0d3344fb6ee9b613a7d7a403786ffbd0a"); + assert.equal(transaction.getHash().toString(), "321e1f1a0e3d06edade34fd0fdf3b4859e4328a73706a442c2439968a074113c"); }); it("with nonce = 0", async () => { @@ -139,7 +139,7 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("dfa3e9f2fdec60dcb353bac3b3435b4a2ff251e7e98eaf8620f46c731fc70c8ba5615fd4e208b05e75fe0f7dc44b7a99567e29f94fcd91efac7e67b182cd2a04", transaction.getSignature().toString("hex")); + assert.equal(transaction.getSignature().toString("hex"), "dfa3e9f2fdec60dcb353bac3b3435b4a2ff251e7e98eaf8620f46c731fc70c8ba5615fd4e208b05e75fe0f7dc44b7a99567e29f94fcd91efac7e67b182cd2a04"); assert.equal(transaction.getHash().toString(), "6ffa1a75f98aaf336bfb87ef13b9b5a477a017158285d34ee2a503668767e69e"); }); @@ -155,8 +155,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("b56769014f2bdc5cf9fc4a05356807d71fcf8775c819b0f1b0964625b679c918ffa64862313bfef86f99b38cb84fcdb16fa33ad6eb565276616723405cd8f109", transaction.getSignature().toString("hex")); - assert.equal(transaction.getHash().toString(), "eb30c50c8831885ebcfac986d27e949ec02cf25676e22a009b7a486e5431ec2e"); + assert.equal(transaction.getSignature().toString("hex"), "3f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503"); + assert.equal(transaction.getHash().toString(), "1359fb9d5b0b47ca9f3b4adce6e4a524fa74099dd4732743b9226774a4cb0ad8"); let result = transaction.serializeForSigning(); assert.isFalse(result.toString().includes("options")); @@ -174,8 +174,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - assert.equal("b56769014f2bdc5cf9fc4a05356807d71fcf8775c819b0f1b0964625b679c918ffa64862313bfef86f99b38cb84fcdb16fa33ad6eb565276616723405cd8f109", transaction.getSignature().toString("hex")); - assert.equal(transaction.getHash().toString(), "eb30c50c8831885ebcfac986d27e949ec02cf25676e22a009b7a486e5431ec2e"); + assert.equal(transaction.getSignature().toString("hex"), "3f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503"); + assert.equal(transaction.getHash().toString(), "1359fb9d5b0b47ca9f3b4adce6e4a524fa74099dd4732743b9226774a4cb0ad8"); let result = transaction.serializeForSigning(); assert.isFalse(result.toString().includes("options")); @@ -194,8 +194,8 @@ describe("test transaction construction", async () => { }); transaction.applySignature(await wallets.carol.signer.sign(transaction.serializeForSigning())); - assert.equal(transaction.getSignature().toString("hex"), "5966dd6b98fc5ecbcd203fa38fac7059ba5c17683099071883b0ad6697386769321d851388a99cb8b81aab625aa2d7e13621432dbd8ab334c5891cd7c7755200"); - assert.equal(transaction.getHash().toString(), "5728fadbc6c1024c4a0d5552eca44e80c182dc9077e58e31d599cf9496c96d1e"); + assert.equal(transaction.getSignature().toString("hex"), "51e6cd78fb3ab4b53ff7ad6864df27cb4a56d70603332869d47a5cf6ea977c30e696103e41e8dddf2582996ad335229fdf4acb726564dbc1a0bc9e705b511f06"); + assert.equal(transaction.getHash().toString(), "edc84d776bfd655ddbd6fce24a83e379496ac47890d00be9c8bb2c6666fa3fd8"); }); it("computes correct fee", () => { @@ -213,7 +213,7 @@ describe("test transaction construction", async () => { MinGasLimit: 10, GasPerDataByte: 1500, GasPriceModifier: 0.01, - ChainID: "T" + ChainID: "local-testnet" }; let fee = transaction.computeFee(networkConfig); From 0a3e425799e5a3c09248e6de6b54fa8c86ea5de0 Mon Sep 17 00:00:00 2001 From: Alexandru Popenta Date: Tue, 19 Dec 2023 19:31:36 +0200 Subject: [PATCH 2/2] sign transactions instead of hardcoding signatures --- src/relayedTransactionV1Builder.spec.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/relayedTransactionV1Builder.spec.ts b/src/relayedTransactionV1Builder.spec.ts index 26534530..68248b8d 100644 --- a/src/relayedTransactionV1Builder.spec.ts +++ b/src/relayedTransactionV1Builder.spec.ts @@ -135,7 +135,7 @@ describe("test relayed v1 transaction builder", function () { }); innerTx.applySignature(await bob.signer.sign(innerTx.serializeForSigning())); - innerTx.applyGuardianSignature(new Signature("c72e08622c86d9b6889fb9f33eed75c6a04a940daa012825464c6ccaad71640cfcf5c4d38b36fb0575345bbec90daeb2db7a423bfb5253cef0ddc5c87d1b5f04")); + innerTx.applyGuardianSignature(await grace.signer.sign(innerTx.serializeForSigning())); const builder = new RelayedTransactionV1Builder(); const relayedTxV1 = builder @@ -148,8 +148,8 @@ describe("test relayed v1 transaction builder", function () { relayedTxV1.applySignature(await alice.signer.sign(relayedTxV1.serializeForSigning())); assert.equal(relayedTxV1.getNonce().valueOf(), 2627); - assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414146414b565841323879704877692f79693741364c64504b704f68464d386958513d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225a3256305132397564484a68593352446232356d6157633d222c227369676e6174757265223a224b4b78324f33383655725135416b4f465258307578327933446a384853334b373038487174344668377161557669424550716c45614e746e6158706a6f2f333651476d4a456934784435457a6c6f4f677a634d4442773d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a322c226f7074696f6e73223a322c22677561726469616e223a22486f714c61306e655733766843716f56696c70715372744c5673774939535337586d7a563868477450684d3d222c22677561726469616e5369676e6174757265223a227879344959697947326261496e376e7a507531317871424b6c4132714153676c526b7873797131785a417a3839635454697a6237425855305737374a44613679323370434f2f745355383777336358496652746642413d3d227d"); - assert.equal(relayedTxV1.getSignature().toString("hex"), "54a7a3a45c43d3d5e94076160c189ed03740db770a2ca31e54687cdda972c01949fa2ba3b21782c130d4e0c05792a223f976329935063fb852692326bfc0fa0e"); + assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414146414b565841323879704877692f79693741364c64504b704f68464d386958513d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225a3256305132397564484a68593352446232356d6157633d222c227369676e6174757265223a224b4b78324f33383655725135416b4f465258307578327933446a384853334b373038487174344668377161557669424550716c45614e746e6158706a6f2f333651476d4a456934784435457a6c6f4f677a634d4442773d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a322c226f7074696f6e73223a322c22677561726469616e223a22486f714c61306e655733766843716f56696c70715372744c5673774939535337586d7a563868477450684d3d222c22677561726469616e5369676e6174757265223a222b5431526f4833625a792f54423177342b6a365155477258645637457577553073753948646551626453515269463953757a686d634b705463526d58595252366c534c6652394931624d7134674730436538363741513d3d227d"); + assert.equal(relayedTxV1.getSignature().toString("hex"), "39cff9d5100e290fbc7361cb6e2402261caf864257b4116f150e0c61e7869155dff8361fa5449431eb7a8ed847c01ba9b3b5ebafe5fac1a3d40c64829d827e00"); }); it("should compute guarded inner tx and guarded relayed v1 transaction", async function () { @@ -173,8 +173,7 @@ describe("test relayed v1 transaction builder", function () { }); innerTx.applySignature(await bob.signer.sign(innerTx.serializeForSigning())); - innerTx.applyGuardianSignature(new Signature("b12d08732c86d9b6889fb9f33eed65c6a04a960daa012825464c6ccaad71640cfcf5c4d38b36fb0575345bbec90daeb2db7a423bfb5253cef0ddc5c87d1b5f04")); - + innerTx.applyGuardianSignature(await grace.signer.sign(innerTx.serializeForSigning())); const builder = new RelayedTransactionV1Builder(); const relayedTxV1 = builder .setInnerTransaction(innerTx) @@ -187,10 +186,10 @@ describe("test relayed v1 transaction builder", function () { .build(); relayedTxV1.applySignature(await alice.signer.sign(relayedTxV1.serializeForSigning())); - relayedTxV1.applyGuardianSignature(new Signature("d32c08722c86d9b6889fb9f33eed65c6a04a970daa012825464c6ccaad71640cfcf5c4d38b36fb0575345bbec90daeb2db7a423bfb5253cef0ddc5c87d1b5f04")); + relayedTxV1.applyGuardianSignature(await frank.signer.sign(relayedTxV1.serializeForSigning())); assert.equal(relayedTxV1.getNonce().valueOf(), 2627); - assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414146414b565841323879704877692f79693741364c64504b704f68464d386958513d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225957526b546e5674596d5679222c227369676e6174757265223a223469724d4b4a656d724d375174344e7635487633544c44683775654779487045564c4371674a3677652f7a662b746a4933354975573452633458543451533433475333356158386c6a533834324a38426854645043673d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a322c226f7074696f6e73223a322c22677561726469616e223a22486f714c61306e655733766843716f56696c70715372744c5673774939535337586d7a563868477450684d3d222c22677561726469616e5369676e6174757265223a227353304963797947326261496e376e7a5075316c7871424b6c6732714153676c526b7873797131785a417a3839635454697a6237425855305737374a44613679323370434f2f745355383777336358496652746642413d3d227d"); - assert.equal(relayedTxV1.getSignature().toString("hex"), "15fe39045685625d0f1742e34ba7679d225d49fc1f1f2ab363b7e78beddb8d278d11f5658a0d0e996d28ba77c49bc6d614b62a4eb7e74f363546ecaa2a84d905"); + assert.equal(relayedTxV1.getData().toString(), "relayedTx@7b226e6f6e6365223a3139382c2273656e646572223a2267456e574f65576d6d413063306a6b71764d354241707a61644b46574e534f69417643575163776d4750673d222c227265636569766572223a22414141414141414141414146414b565841323879704877692f79693741364c64504b704f68464d386958513d222c2276616c7565223a302c226761735072696365223a313030303030303030302c226761734c696d6974223a36303030303030302c2264617461223a225957526b546e5674596d5679222c227369676e6174757265223a223469724d4b4a656d724d375174344e7635487633544c44683775654779487045564c4371674a3677652f7a662b746a4933354975573452633458543451533433475333356158386c6a533834324a38426854645043673d3d222c22636861696e4944223a2256413d3d222c2276657273696f6e223a322c226f7074696f6e73223a322c22677561726469616e223a22486f714c61306e655733766843716f56696c70715372744c5673774939535337586d7a563868477450684d3d222c22677561726469616e5369676e6174757265223a2270424754394e674a78307539624c56796b654d78786a454865374269696c37764932324a46676f32787a6e2f496e3032463769546563356b44395045324f747065386c475335412b532f4a36417762576834446744673d3d227d"); + assert.equal(relayedTxV1.getSignature().toString("hex"), "8ede1bbeed96b102344dffeac12c2592c62b7313cdeb132e8c8bf11d2b1d3bb8189d257a6dbcc99e222393d9b9ec77656c349dae97a32e68bdebd636066bf706"); }); });