From 5fc14af81f31212cbd8be12e9be118b61b3d5e3a Mon Sep 17 00:00:00 2001 From: danielailie Date: Wed, 29 Jan 2025 13:52:33 +0200 Subject: [PATCH 1/4] Mark all legacy method as deprecated and update code to use the new aproach --- src/abi/interaction.local.net.spec.ts | 5 +- src/abi/interaction.spec.ts | 114 ++++++++++-------- src/abi/interaction.ts | 2 +- src/abi/smartContract.spec.ts | 20 +-- src/abi/smartContract.ts | 6 +- .../smartContractResults.local.net.spec.ts | 8 +- src/testutils/mockNetworkProvider.ts | 4 +- src/testutils/utils.ts | 8 +- src/tokens.ts | 8 +- src/transaction.local.net.spec.ts | 17 ++- src/transaction.spec.ts | 78 +++++++----- src/transaction.ts | 62 +++++----- 12 files changed, 181 insertions(+), 151 deletions(-) diff --git a/src/abi/interaction.local.net.spec.ts b/src/abi/interaction.local.net.spec.ts index cbe33c11..44fe1a1a 100644 --- a/src/abi/interaction.local.net.spec.ts +++ b/src/abi/interaction.local.net.spec.ts @@ -483,8 +483,7 @@ describe("test smart contract interactor", function () { const transaction = options.transaction; const wallet = options.wallet; - const serialized = transaction.serializeForSigning(); - const signature = await wallet.signer.sign(serialized); - transaction.applySignature(signature); + const transactionComputer = new TransactionComputer(); + transaction.signature = await wallet.signer.sign(transactionComputer.computeBytesForSigning(transaction)); } }); diff --git a/src/abi/interaction.spec.ts b/src/abi/interaction.spec.ts index af32410b..1741424f 100644 --- a/src/abi/interaction.spec.ts +++ b/src/abi/interaction.spec.ts @@ -12,6 +12,7 @@ import { } from "../testutils"; import { Token, TokenTransfer } from "../tokens"; import { Transaction } from "../transaction"; +import { TransactionComputer } from "../transactionComputer"; import { ContractFunction } from "./function"; import { Interaction } from "./interaction"; import { SmartContract } from "./smartContract"; @@ -21,7 +22,7 @@ describe("test smart contract interactor", function () { let dummyAddress = new Address("erd1qqqqqqqqqqqqqpgqak8zt22wl2ph4tswtyc39namqx6ysa2sd8ss4xmlj3"); let provider = new MockNetworkProvider(); let alice: TestWallet; - + const transactionComputer = new TransactionComputer(); before(async function () { ({ alice } = await loadTestWallets()); }); @@ -38,10 +39,10 @@ describe("test smart contract interactor", function () { .withGasLimit(20000000n) .buildTransaction(); - assert.deepEqual(transaction.getReceiver(), dummyAddress); - assert.equal(transaction.getValue().toString(), "1000000000000000000"); - assert.equal(transaction.getNonce(), 7n); - assert.equal(transaction.getGasLimit().valueOf(), 20000000n); + assert.deepEqual(transaction.receiver, dummyAddress); + assert.equal(transaction.value.toString(), "1000000000000000000"); + assert.equal(transaction.nonce, 7n); + assert.equal(transaction.gasLimit, 20000000n); }); it("should set transfers (payments) on contract calls (transfer and execute)", async function () { @@ -74,7 +75,7 @@ describe("test smart contract interactor", function () { .withSingleESDTTransfer(TokenFoo(10)) .buildTransaction(); - assert.equal(transaction.getData().toString(), `ESDTTransfer@${hexFoo}@0a@${hexDummyFunction}`); + assert.equal(transaction.data.toString(), `ESDTTransfer@${hexFoo}@0a@${hexDummyFunction}`); // Meta ESDT (special SFT), single transaction = new Interaction(contract, dummyFunction, []) @@ -82,10 +83,10 @@ describe("test smart contract interactor", function () { .withSingleESDTNFTTransfer(LKMEX(123456, "123456000000000000000")) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `ESDTNFTTransfer@${hexLKMEX}@01e240@06b14bd1e6eea00000@${hexContractAddress}@${hexDummyFunction}`, ); @@ -95,10 +96,10 @@ describe("test smart contract interactor", function () { .withSender(alice) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `ESDTNFTTransfer@${hexLKMEX}@01e240@06b14bd1e6eea00000@${hexContractAddress}@${hexDummyFunction}`, ); @@ -108,10 +109,10 @@ describe("test smart contract interactor", function () { .withSingleESDTNFTTransfer(nonFungibleToken(1)) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `ESDTNFTTransfer@${hexNFT}@01@01@${hexContractAddress}@${hexDummyFunction}`, ); @@ -121,10 +122,10 @@ describe("test smart contract interactor", function () { .withSender(alice) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `ESDTNFTTransfer@${hexNFT}@01@01@${hexContractAddress}@${hexDummyFunction}`, ); @@ -134,10 +135,10 @@ describe("test smart contract interactor", function () { .withMultiESDTNFTTransfer([TokenFoo(3), TokenBar(3140)]) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `MultiESDTNFTTransfer@${hexContractAddress}@02@${hexFoo}@@03@${hexBar}@@0c44@${hexDummyFunction}`, ); @@ -147,10 +148,10 @@ describe("test smart contract interactor", function () { .withSender(alice) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `MultiESDTNFTTransfer@${hexContractAddress}@02@${hexFoo}@@03@${hexBar}@@0c44@${hexDummyFunction}`, ); @@ -160,10 +161,10 @@ describe("test smart contract interactor", function () { .withMultiESDTNFTTransfer([nonFungibleToken(1), nonFungibleToken(42)]) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); assert.equal( - transaction.getData().toString(), + transaction.data.toString(), `MultiESDTNFTTransfer@${hexContractAddress}@02@${hexNFT}@01@01@${hexNFT}@2a@01@${hexDummyFunction}`, ); @@ -173,8 +174,8 @@ describe("test smart contract interactor", function () { .withSender(alice) .buildTransaction(); - assert.equal(transaction.getSender().toBech32(), alice.toBech32()); - assert.equal(transaction.getReceiver().toBech32(), alice.toBech32()); + assert.equal(transaction.sender.toBech32(), alice.toBech32()); + assert.equal(transaction.receiver.toBech32(), alice.toBech32()); }); it("should create transaction, with ABI, with transfer & execute", async function () { @@ -246,24 +247,24 @@ describe("test smart contract interactor", function () { // Execute, do not wait for execution let transaction = interaction.withSender(alice.address).withNonce(0n).buildTransaction(); - transaction.setSender(alice.address); - transaction.applySignature(await alice.signer.sign(transaction.serializeForSigning())); + transaction.sender = alice.address; + transaction.signature = await alice.signer.sign(transactionComputer.computeBytesForSigning(transaction)); let hash = await provider.sendTransaction(transaction); - assert.equal(transaction.getNonce().valueOf(), 0n); - assert.equal(transaction.getData().toString(), "getUltimateAnswer"); + assert.equal(transaction.nonce, 0n); + assert.equal(transaction.data.toString(), "getUltimateAnswer"); assert.equal(hash, "3579ad09099feb9755c860ddd225251170806d833342e912fccdfe2ed5c3a364"); transaction = interaction.withNonce(1n).buildTransaction(); - transaction.setSender(alice.address); - transaction.applySignature(await alice.signer.sign(transaction.serializeForSigning())); + transaction.sender = alice.address; + transaction.signature = await alice.signer.sign(transactionComputer.computeBytesForSigning(transaction)); hash = await provider.sendTransaction(transaction); - assert.equal(transaction.getNonce(), 1n); + assert.equal(transaction.nonce, 1n); assert.equal(hash, "ad513ce7c5d371d30e48f073326899766736eac1ac231d847d45bc3facbcb496"); // Execute, and wait for execution transaction = interaction.withNonce(2n).buildTransaction(); - transaction.setSender(alice.address); - transaction.applySignature(await alice.signer.sign(transaction.serializeForSigning())); + transaction.sender = alice.address; + transaction.signature = await alice.signer.sign(transactionComputer.computeBytesForSigning(transaction)); provider.mockGetTransactionWithAnyHashAsNotarizedWithOneResult("@6f6b@2bs", "getUltimateAnswer"); hash = await provider.sendTransaction(transaction); let responseExecute = await controller.awaitCompletedExecute(hash); @@ -312,7 +313,9 @@ describe("test smart contract interactor", function () { .withChainID("mock") .buildTransaction(); - incrementTransaction.applySignature(await alice.signer.sign(incrementTransaction.serializeForSigning())); + incrementTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(incrementTransaction), + ); provider.mockGetTransactionWithAnyHashAsNotarizedWithOneResult("@6f6b@08", "increment"); let hash = await provider.sendTransaction(incrementTransaction); let responseExecute = await controller.awaitCompletedExecute(hash); @@ -326,16 +329,22 @@ describe("test smart contract interactor", function () { .withChainID("mock") .buildTransaction(); - decrementTransaction.applySignature(await alice.signer.sign(decrementTransaction.serializeForSigning())); + decrementTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(decrementTransaction), + ); await provider.sendTransaction(decrementTransaction); // Decrement #2 decrementTransaction = decrementInteraction.withNonce(16n).buildTransaction(); - decrementTransaction.applySignature(await alice.signer.sign(decrementTransaction.serializeForSigning())); + decrementTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(decrementTransaction), + ); await provider.sendTransaction(decrementTransaction); // Decrement #3 decrementTransaction = decrementInteraction.withNonce(17n).buildTransaction(); - decrementTransaction.applySignature(await alice.signer.sign(decrementTransaction.serializeForSigning())); + decrementTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(decrementTransaction), + ); provider.mockGetTransactionWithAnyHashAsNotarizedWithOneResult("@6f6b@05", "decrement"); hash = await provider.sendTransaction(decrementTransaction); responseExecute = await controller.awaitCompletedExecute(hash); @@ -376,16 +385,15 @@ describe("test smart contract interactor", function () { .withChainID("mock") .buildTransaction(); - startTransaction.applySignature(await alice.signer.sign(startTransaction.serializeForSigning())); + startTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(startTransaction), + ); provider.mockGetTransactionWithAnyHashAsNotarizedWithOneResult("@6f6b", "start"); let hash = await provider.sendTransaction(startTransaction); let response = await controller.awaitCompletedExecute(hash); - assert.equal( - startTransaction.getData().toString(), - "start@6c75636b79@6c75636b792d746f6b656e@01@@@0100000001@@", - ); + assert.equal(startTransaction.data.toString(), "start@6c75636b79@6c75636b792d746f6b656e@01@@@0100000001@@"); assert.isTrue(response.returnCode == "ok"); assert.isTrue(response.values.length == 0); @@ -396,13 +404,15 @@ describe("test smart contract interactor", function () { .withChainID("mock") .buildTransaction(); - statusTransaction.applySignature(await alice.signer.sign(statusTransaction.serializeForSigning())); + statusTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(statusTransaction), + ); provider.mockGetTransactionWithAnyHashAsNotarizedWithOneResult("@6f6b@01", "status"); hash = await provider.sendTransaction(startTransaction); response = await controller.awaitCompletedExecute(hash); - assert.equal(statusTransaction.getData().toString(), "status@6c75636b79"); + assert.equal(statusTransaction.data.toString(), "status@6c75636b79"); assert.isTrue(response.returnCode == "ok"); assert.isTrue(response.values.length == 1); assert.deepEqual(response.values[0]!.valueOf(), { name: "Running", fields: [] }); @@ -414,8 +424,8 @@ describe("test smart contract interactor", function () { .withChainID("mock") .buildTransaction(); - getLotteryInfoTransaction.applySignature( - await alice.signer.sign(getLotteryInfoTransaction.serializeForSigning()), + getLotteryInfoTransaction.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(getLotteryInfoTransaction), ); provider.mockGetTransactionWithAnyHashAsNotarizedWithOneResult( "@6f6b@0000000b6c75636b792d746f6b656e000000010100000000000000005fc2b9dbffffffff00000001640000000a140ec80fa7ee88000000", @@ -423,7 +433,7 @@ describe("test smart contract interactor", function () { ); hash = await provider.sendTransaction(startTransaction); response = await controller.awaitCompletedExecute(hash); - assert.equal(getLotteryInfoTransaction.getData().toString(), "getLotteryInfo@6c75636b79"); + assert.equal(getLotteryInfoTransaction.data.toString(), "getLotteryInfo@6c75636b79"); assert.isTrue(response.returnCode == "ok"); assert.isTrue(response.values.length == 1); diff --git a/src/abi/interaction.ts b/src/abi/interaction.ts index 4f33f363..b9ac422c 100644 --- a/src/abi/interaction.ts +++ b/src/abi/interaction.ts @@ -21,7 +21,7 @@ interface ISmartContractWithinInteraction { } /** - * Legacy component. Use "SmartContractTransactionsFactory" (for transactions) or "SmartContractQueriesController" (for queries), instead. + * @deprecated component. Use "SmartContractTransactionsFactory" (for transactions) or "SmartContractQueriesController" (for queries), instead. * * Interactions can be seen as mutable transaction & query builders. * diff --git a/src/abi/smartContract.spec.ts b/src/abi/smartContract.spec.ts index d197518e..501db6e3 100644 --- a/src/abi/smartContract.spec.ts +++ b/src/abi/smartContract.spec.ts @@ -21,6 +21,7 @@ describe("test contract", () => { let provider = new MockNetworkProvider(); let chainID = "test"; let alice: TestWallet; + const computer = new TransactionComputer(); before(async function () { ({ alice } = await loadTestWallets()); @@ -58,7 +59,7 @@ describe("test contract", () => { await alice.sync(provider); deployTransaction.nonce = alice.account.nonce; - assert.equal(deployTransaction.getData().valueOf().toString(), "01020304@0500@0100"); + assert.equal(deployTransaction.data.toString(), "01020304@0500@0100"); assert.equal(deployTransaction.gasLimit, 1000000n); assert.equal(deployTransaction.nonce, 42n); @@ -70,11 +71,10 @@ describe("test contract", () => { ); // Sign the transaction - deployTransaction.applySignature(await alice.signer.sign(deployTransaction.serializeForSigning())); + deployTransaction.signature = await alice.signer.sign(computer.computeBytesForSigning(deployTransaction)); // Now let's broadcast the deploy transaction, and wait for its execution. let hash = await provider.sendTransaction(deployTransaction); - const computer = new TransactionComputer(); const hashString = computer.computeTransactionHash(deployTransaction); await Promise.all([ @@ -125,15 +125,15 @@ describe("test contract", () => { callTransactionTwo.nonce = alice.account.nonce; assert.equal(callTransactionOne.nonce, 42n); - assert.equal(callTransactionOne.getData().valueOf().toString(), "helloEarth@05@0123"); + assert.equal(callTransactionOne.data.toString(), "helloEarth@05@0123"); assert.equal(callTransactionOne.gasLimit, 150000n); assert.equal(callTransactionTwo.nonce, 43n); - assert.equal(callTransactionTwo.getData().valueOf().toString(), "helloMars@05@0123"); + assert.equal(callTransactionTwo.data.toString(), "helloMars@05@0123"); assert.equal(callTransactionTwo.gasLimit, 1500000n); // Sign transactions, broadcast them - callTransactionOne.applySignature(await alice.signer.sign(callTransactionOne.serializeForSigning())); - callTransactionTwo.applySignature(await alice.signer.sign(callTransactionTwo.serializeForSigning())); + callTransactionOne.signature = await alice.signer.sign(computer.computeBytesForSigning(callTransactionOne)); + callTransactionTwo.signature = await alice.signer.sign(computer.computeBytesForSigning(callTransactionTwo)); let hashOne = await provider.sendTransaction(callTransactionOne); let hashTwo = await provider.sendTransaction(callTransactionTwo); @@ -166,7 +166,7 @@ describe("test contract", () => { let watcher = new TransactionWatcher(provider); let contract = new SmartContract(); - contract.setAddress(Address.fromBech32("erd1qqqqqqqqqqqqqpgq3ytm9m8dpeud35v3us20vsafp77smqghd8ss4jtm0q")); + contract.setAddress(Address.newFromBech32("erd1qqqqqqqqqqqqqpgq3ytm9m8dpeud35v3us20vsafp77smqghd8ss4jtm0q")); let deployTransaction = contract.upgrade({ code: Code.fromBuffer(Buffer.from([1, 2, 3, 4])), @@ -182,12 +182,12 @@ describe("test contract", () => { await alice.sync(provider); deployTransaction.nonce = alice.account.nonce; - assert.equal(deployTransaction.getData().valueOf().toString(), "upgradeContract@01020304@0100"); + assert.equal(deployTransaction.data.toString(), "upgradeContract@01020304@0100"); assert.equal(deployTransaction.gasLimit, 1000000n); assert.equal(deployTransaction.nonce, 42n); // Sign the transaction - deployTransaction.applySignature(await alice.signer.sign(deployTransaction.serializeForSigning())); + deployTransaction.signature = await alice.signer.sign(computer.computeBytesForSigning(deployTransaction)); // Now let's broadcast the deploy transaction, and wait for its execution. let hash = await provider.sendTransaction(deployTransaction); diff --git a/src/abi/smartContract.ts b/src/abi/smartContract.ts index 624ada69..322132c5 100644 --- a/src/abi/smartContract.ts +++ b/src/abi/smartContract.ts @@ -220,7 +220,7 @@ export class SmartContract implements ISmartContract { isPayableBySmartContract: metadataAsJson.payableBySc, }); - transaction.setChainID(chainID); + transaction.chainID = chainID; transaction.value = value ?? 0n; transaction.gasPrice = gasPrice ?? BigInt(TRANSACTION_MIN_GAS_PRICE); @@ -255,8 +255,8 @@ export class SmartContract implements ISmartContract { arguments: args, }); - transaction.setChainID(chainID); - transaction.setValue(value); + transaction.chainID = chainID; + transaction.value = value; transaction.gasPrice = gasPrice ?? BigInt(TRANSACTION_MIN_GAS_PRICE); return transaction; diff --git a/src/abi/smartContractResults.local.net.spec.ts b/src/abi/smartContractResults.local.net.spec.ts index 89ffcd14..29703453 100644 --- a/src/abi/smartContractResults.local.net.spec.ts +++ b/src/abi/smartContractResults.local.net.spec.ts @@ -14,7 +14,7 @@ describe("fetch transactions from local testnet", function () { let provider = createLocalnetProvider(); let watcher: TransactionWatcher; let parser: SmartContractTransactionsOutcomeParser; - + const transactionComputer = new TransactionComputer(); before(async function () { ({ alice } = await loadTestWallets()); watcher = new TransactionWatcher({ @@ -55,8 +55,10 @@ describe("fetch transactions from local testnet", function () { caller: alice.address, }); - transactionIncrement.setNonce(alice.account.nonce); - transactionIncrement.applySignature(await alice.signer.sign(transactionIncrement.serializeForSigning())); + transactionIncrement.nonce = alice.account.nonce; + transactionIncrement.signature = await alice.signer.sign( + transactionComputer.computeBytesForSigning(transactionIncrement), + ); alice.account.incrementNonce(); diff --git a/src/testutils/mockNetworkProvider.ts b/src/testutils/mockNetworkProvider.ts index 5dfd1333..0a147d21 100644 --- a/src/testutils/mockNetworkProvider.ts +++ b/src/testutils/mockNetworkProvider.ts @@ -228,8 +228,8 @@ export class MockNetworkProvider implements INetworkProvider { this.mockPutTransaction( computer.computeTransactionHash(transaction), new TransactionOnNetwork({ - sender: transaction.getSender(), - receiver: transaction.getReceiver(), + sender: transaction.sender, + receiver: transaction.receiver, data: Buffer.from(transaction.data), status: new TransactionStatus("pending"), }), diff --git a/src/testutils/utils.ts b/src/testutils/utils.ts index 96de9e70..bca35a36 100644 --- a/src/testutils/utils.ts +++ b/src/testutils/utils.ts @@ -2,6 +2,7 @@ import * as fs from "fs"; import { PathLike } from "fs"; import { AbiRegistry, Code, SmartContract, TypedValue } from "../abi"; import { Transaction } from "../transaction"; +import { TransactionComputer } from "../transactionComputer"; import { TransactionWatcher } from "../transactionWatcher"; import { getAxios } from "../utils"; import { TestWallet } from "./wallets"; @@ -25,12 +26,13 @@ export async function prepareDeployment(obj: { deployer: deployer.address, }); + const computer = new TransactionComputer(); let nonce = deployer.account.getNonceThenIncrement(); let contractAddress = SmartContract.computeAddress(deployer.address, nonce); - transaction.setNonce(nonce); - transaction.setSender(deployer.address); + transaction.nonce = nonce; + transaction.sender = deployer.address; contract.setAddress(contractAddress); - transaction.applySignature(await deployer.signer.sign(transaction.serializeForSigning())); + transaction.signature = await deployer.signer.sign(computer.computeBytesForSigning(transaction)); return transaction; } diff --git a/src/tokens.ts b/src/tokens.ts index 6e7776bd..11c670ba 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -33,22 +33,22 @@ export class TokenTransfer { readonly amount: bigint; /** - * Legacy field. Use "token.identifier" instead. + * @deprecated field. Use "token.identifier" instead. */ readonly tokenIdentifier: string; /** - * Legacy field. Use "token.nonce" instead. + * @deprecated field. Use "token.nonce" instead. */ readonly nonce: number; /** - * Legacy field. Use "amount" instead. + * @deprecated field. Use "amount" instead. */ readonly amountAsBigInteger: BigNumber; /** - * Legacy field. The number of decimals is not a concern of "sdk-core". + * @deprecated field. The number of decimals is not a concern of "sdk-core". * For formatting and parsing amounts, use "sdk-dapp" or "bignumber.js" directly. */ readonly numDecimals: number; diff --git a/src/transaction.local.net.spec.ts b/src/transaction.local.net.spec.ts index 8e77a987..07871ed7 100644 --- a/src/transaction.local.net.spec.ts +++ b/src/transaction.local.net.spec.ts @@ -13,7 +13,7 @@ import { TransferTransactionsFactory } from "./transfers/transferTransactionsFac describe("test transaction", function () { let alice: TestWallet, bob: TestWallet; - + const transactionComputer = new TransactionComputer(); before(async function () { ({ alice, bob } = await loadTestWallets()); }); @@ -56,9 +56,9 @@ describe("test transaction", function () { await bob.sync(provider); let initialBalanceOfBob = new BigNumber((await bob.getBalance(provider)).toString()); - transactionOne.setNonce(alice.account.nonce); + transactionOne.nonce = alice.account.nonce; alice.account.incrementNonce(); - transactionTwo.setNonce(alice.account.nonce); + transactionTwo.nonce = alice.account.nonce; await signTransaction({ transaction: transactionOne, wallet: alice }); await signTransaction({ transaction: transactionTwo, wallet: alice }); @@ -98,7 +98,7 @@ describe("test transaction", function () { await bob.sync(provider); let initialBalanceOfBob = new BigNumber((await bob.getBalance(provider)).toString()); - transactionOne.setNonce(alice.account.nonce); + transactionOne.nonce = alice.account.nonce; await signTransaction({ transaction: transactionOne, wallet: alice }); const hashOne = await provider.sendTransaction(transactionOne); await watcher.awaitCompleted(hashOne); @@ -137,8 +137,8 @@ describe("test transaction", function () { chainID: network.chainID, }); - transactionOne.setNonce(alice.account.nonce); - transactionTwo.setNonce(alice.account.nonce); + transactionOne.nonce = alice.account.nonce; + transactionTwo.nonce = alice.account.nonce; await signTransaction({ transaction: transactionOne, wallet: alice }); await signTransaction({ transaction: transactionTwo, wallet: alice }); @@ -168,7 +168,6 @@ describe("test transaction", function () { }); transaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); transaction.signature = await alice.signer.sign(transactionComputer.computeBytesForSigning(transaction)); const txHash = await provider.sendTransaction(transaction); @@ -187,8 +186,8 @@ describe("test transaction", function () { const transaction = options.transaction; const wallet = options.wallet; - const serialized = transaction.serializeForSigning(); + const serialized = transactionComputer.computeBytesForSigning(transaction); const signature = await wallet.signer.sign(serialized); - transaction.applySignature(signature); + transaction.signature = signature; } }); diff --git a/src/transaction.spec.ts b/src/transaction.spec.ts index 6640aef7..20136033 100644 --- a/src/transaction.spec.ts +++ b/src/transaction.spec.ts @@ -78,10 +78,12 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "3f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503", ); assert.equal( @@ -102,10 +104,12 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "f9e8c1caf7f36b99e7e76ee1118bf71b55cde11a2356e2b3adf15f4ad711d2e1982469cbba7eb0afbf74e8a8f78e549b9410cd86eeaa88fcba62611ac9f6e30e", ); assert.equal( @@ -198,7 +202,7 @@ describe("test transaction", async () => { }); assert.throws(() => { - transaction.serializeForSigning(); + transactionComputer.computeBytesForSigning(transaction); }, `Non-empty transaction options requires transaction version >= ${MIN_TRANSACTION_VERSION_THAT_SUPPORTS_OPTIONS}`); }); @@ -214,10 +218,12 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "b45f22e9f57a6df22670fcc3566723a0711a05ac2547456de59fd222a54940e4a1d99bd414897ccbf5c02a842ad86e638989b7f4d30edd26c99a8cd1eb092304", ); assert.equal( @@ -238,10 +244,12 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "01f05aa8cb0614e12a94ab9dcbde5e78370a4e05d23ef25a1fb9d5fcf1cb3b1f33b919cd8dafb1704efb18fa233a8aa0d3344fb6ee9b613a7d7a403786ffbd0a", ); assert.equal( @@ -263,10 +271,12 @@ describe("test transaction", async () => { version: 1, }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "dfa3e9f2fdec60dcb353bac3b3435b4a2ff251e7e98eaf8620f46c731fc70c8ba5615fd4e208b05e75fe0f7dc44b7a99567e29f94fcd91efac7e67b182cd2a04", ); assert.equal( @@ -286,10 +296,12 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "3f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503", ); assert.equal( @@ -297,7 +309,7 @@ describe("test transaction", async () => { "1359fb9d5b0b47ca9f3b4adce6e4a524fa74099dd4732743b9226774a4cb0ad8", ); - const result = transaction.serializeForSigning(); + const result = transactionComputer.computeBytesForSigning(transaction); assert.isFalse(result.toString().includes("options")); }); @@ -312,10 +324,12 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "3f08a1dd64fbb627d10b048e0b45b1390f29bb0e457762a2ccb710b029f299022a67a4b8e45cf62f4314afec2e56b5574c71e38df96cc41fae757b7ee5062503", ); assert.equal( @@ -323,7 +337,7 @@ describe("test transaction", async () => { "1359fb9d5b0b47ca9f3b4adce6e4a524fa74099dd4732743b9226774a4cb0ad8", ); - const result = transaction.serializeForSigning(); + const result = transactionComputer.computeBytesForSigning(transaction); assert.isFalse(result.toString().includes("options")); }); @@ -331,18 +345,20 @@ describe("test transaction", async () => { const transaction = new Transaction({ nonce: 204n, value: 1000000000000000000n, - sender: Address.fromBech32("erd1k2s324ww2g0yj38qn2ch2jwctdy8mnfxep94q9arncc6xecg3xaq6mjse8"), - receiver: Address.fromBech32("erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"), + sender: Address.newFromBech32("erd1k2s324ww2g0yj38qn2ch2jwctdy8mnfxep94q9arncc6xecg3xaq6mjse8"), + receiver: Address.newFromBech32("erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"), senderUsername: "carol", receiverUsername: "alice", gasLimit: 50000n, chainID: "T", }); - transaction.applySignature(await wallets.carol.signer.sign(transaction.serializeForSigning())); + transaction.signature = await wallets.carol.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); assert.equal( - transaction.getSignature().toString("hex"), + Buffer.from(transaction.signature).toString("hex"), "51e6cd78fb3ab4b53ff7ad6864df27cb4a56d70603332869d47a5cf6ea977c30e696103e41e8dddf2582996ad335229fdf4acb726564dbc1a0bc9e705b511f06", ); assert.equal( @@ -393,7 +409,7 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - const fee = transaction.computeFee(networkConfig); + const fee = transactionComputer.computeTransactionFee(transaction, networkConfig); assert.equal(fee.toString(), "50000000000000"); }); @@ -436,7 +452,7 @@ describe("test transaction", async () => { chainID: "local-testnet", }); - let fee = transaction.computeFee(networkConfig); + let fee = transactionComputer.computeTransactionFee(transaction, networkConfig); assert.equal(fee.toString(), "62000100000000"); }); @@ -470,7 +486,7 @@ describe("test transaction", async () => { }); const plainObject = transaction.toPlainObject(); - const restoredTransaction = Transaction.fromPlainObject(plainObject); + const restoredTransaction = Transaction.newFromPlainObject(plainObject); assert.deepEqual(restoredTransaction, transaction); }); @@ -482,7 +498,7 @@ describe("test transaction", async () => { gasLimit: 50000n, chainID: "local-testnet", }); - assert.equal(tx1.getValue().toString(), "123456789000000000000000000000"); + assert.equal(tx1.value.toString(), "123456789000000000000000000000"); const tx2 = new Transaction({ value: 123456789000000000000000000000n, @@ -491,7 +507,7 @@ describe("test transaction", async () => { gasLimit: 50000n, chainID: "local-testnet", }); - assert.equal(tx2.getValue().toString(), "123456789000000000000000000000"); + assert.equal(tx2.value.toString(), "123456789000000000000000000000"); const tx3 = new Transaction({ value: BigInt("123456789000000000000000000000"), @@ -500,7 +516,7 @@ describe("test transaction", async () => { gasLimit: 50000n, chainID: "local-testnet", }); - assert.equal(tx3.getValue().toString(), "123456789000000000000000000000"); + assert.equal(tx3.value.toString(), "123456789000000000000000000000"); }); it("checks correctly the version and options of the transaction", async () => { @@ -588,8 +604,10 @@ describe("test transaction", async () => { version: 2, options: 2, }); - transaction.applySignature(await wallets.alice.signer.sign(transaction.serializeForSigning())); - transaction.applyGuardianSignature(transaction.getSignature()); + transaction.signature = await wallets.alice.signer.sign( + transactionComputer.computeBytesForSigning(transaction), + ); + transaction.guardianSignature = transaction.signature; assert.isTrue(transaction.isGuardedTransaction()); }); @@ -756,7 +774,7 @@ describe("test transaction", async () => { const restoredTransaction = Transaction.newFromPlainObject(plainObject); assert.deepEqual(plainObject, transaction.toPlainObject()); - assert.deepEqual(restoredTransaction, Transaction.fromPlainObject(plainObject)); + assert.deepEqual(restoredTransaction, Transaction.newFromPlainObject(plainObject)); assert.deepEqual(restoredTransaction, transaction); assert.deepEqual(plainObject, { nonce: 90, diff --git a/src/transaction.ts b/src/transaction.ts index 110ca981..c6e68505 100644 --- a/src/transaction.ts +++ b/src/transaction.ts @@ -139,14 +139,14 @@ export class Transaction { } /** - * Legacy method, use the "nonce" property instead. + * @deprecated method, use the "nonce" property instead. */ getNonce(): bigint { return this.nonce; } /** - * Legacy method, use the "nonce" property instead. + * @deprecated method, use the "nonce" property instead. * Sets the account sequence number of the sender. Must be done prior signing. */ setNonce(nonce: bigint) { @@ -154,147 +154,147 @@ export class Transaction { } /** - * Legacy method, use the "value" property instead. + * @deprecated method, use the "value" property instead. */ getValue(): bigint { return this.value; } /** - * Legacy method, use the "value" property instead. + * @deprecated method, use the "value" property instead. */ setValue(value: bigint) { this.value = value; } /** - * Legacy method, use the "sender" property instead. + * @deprecated method, use the "sender" property instead. */ getSender(): Address { return this.sender; } /** - * Legacy method, use the "sender" property instead. + * @deprecated method, use the "sender" property instead. */ setSender(sender: Address) { this.sender = sender; } /** - * Legacy method, use the "receiver" property instead. + * @deprecated method, use the "receiver" property instead. */ getReceiver(): Address { return this.receiver; } /** - * Legacy method, use the "senderUsername" property instead. + * @deprecated method, use the "senderUsername" property instead. */ getSenderUsername(): string { return this.senderUsername; } /** - * Legacy method, use the "senderUsername" property instead. + * @deprecated method, use the "senderUsername" property instead. */ setSenderUsername(senderUsername: string) { this.senderUsername = senderUsername; } /** - * Legacy method, use the "receiverUsername" property instead. + * @deprecated method, use the "receiverUsername" property instead. */ getReceiverUsername(): string { return this.receiverUsername; } /** - * Legacy method, use the "receiverUsername" property instead. + * @deprecated method, use the "receiverUsername" property instead. */ setReceiverUsername(receiverUsername: string) { this.receiverUsername = receiverUsername; } /** - * Legacy method, use the "guardian" property instead. + * @deprecated method, use the "guardian" property instead. */ getGuardian(): Address { return this.guardian; } /** - * Legacy method, use the "gasPrice" property instead. + * @deprecated method, use the "gasPrice" property instead. */ getGasPrice(): bigint { return this.gasPrice; } /** - * Legacy method, use the "gasPrice" property instead. + * @deprecated method, use the "gasPrice" property instead. */ setGasPrice(gasPrice: bigint) { this.gasPrice = gasPrice; } /** - * Legacy method, use the "gasLimit" property instead. + * @deprecated method, use the "gasLimit" property instead. */ getGasLimit(): bigint { return this.gasLimit; } /** - * Legacy method, use the "gasLimit" property instead. + * @deprecated method, use the "gasLimit" property instead. */ setGasLimit(gasLimit: bigint) { this.gasLimit = gasLimit; } /** - * Legacy method, use the "data" property instead. + * @deprecated method, use the "data" property instead. */ getData(): Uint8Array { return this.data; } /** - * Legacy method, use the "chainID" property instead. + * @deprecated method, use the "chainID" property instead. */ getChainID(): string { return this.chainID; } /** - * Legacy method, use the "chainID" property instead. + * @deprecated method, use the "chainID" property instead. */ setChainID(chainID: string) { this.chainID = chainID; } /** - * Legacy method, use the "version" property instead. + * @deprecated method, use the "version" property instead. */ getVersion(): number { return this.version; } /** - * Legacy method, use the "version" property instead. + * @deprecated method, use the "version" property instead. */ setVersion(version: number) { this.version = version; } /** - * Legacy method, use the "options" property instead. + * @deprecated method, use the "options" property instead. */ getOptions(): number { return this.options; } /** - * Legacy method, use the "options" property instead. + * @deprecated method, use the "options" property instead. * * Question for review: check how the options are set by sdk-dapp, wallet, ledger, extension. */ @@ -303,28 +303,28 @@ export class Transaction { } /** - * Legacy method, use the "signature" property instead. + * @deprecated method, use the "signature" property instead. */ getSignature(): Buffer { return Buffer.from(this.signature); } /** - * Legacy method, use the "guardianSignature" property instead. + * @deprecated method, use the "guardianSignature" property instead. */ getGuardianSignature(): Buffer { return Buffer.from(this.guardianSignature); } /** - * Legacy method, use the "guardian" property instead. + * @deprecated method, use the "guardian" property instead. */ setGuardian(guardian: Address) { this.guardian = guardian; } /** - * Legacy method, use "TransactionComputer.computeBytesForSigning()" instead. + * @deprecated method, use "TransactionComputer.computeBytesForSigning()" instead. * Serializes a transaction to a sequence of bytes, ready to be signed. * This function is called internally by signers. */ @@ -373,7 +373,7 @@ export class Transaction { } /** - * Legacy method, use "Transaction.newFromPlainObject()" instead. + * @deprecated method, use "Transaction.newFromPlainObject()" instead. * Converts a plain object transaction into a Transaction Object. * * @param plainObjectTransaction Raw data of a transaction, usually obtained by calling toPlainObject() @@ -412,7 +412,7 @@ export class Transaction { } /** - * Legacy method, use the "signature" property instead. + * @deprecated method, use the "signature" property instead. * Applies the signature on the transaction. * * @param signature The signature, as computed by a signer. @@ -422,7 +422,7 @@ export class Transaction { } /** - * Legacy method, use the "guardianSignature" property instead. + * @deprecated method, use the "guardianSignature" property instead. * Applies the guardian signature on the transaction. * * @param guardianSignature The signature, as computed by a signer. @@ -440,7 +440,7 @@ export class Transaction { } /** - * Legacy method, use "TransactionComputer.computeTransactionFee()" instead. + * @deprecated method, use "TransactionComputer.computeTransactionFee()" instead. * * Computes the current transaction fee based on the {@link NetworkConfig} and transaction properties * @param networkConfig {@link NetworkConfig} From caa7bc321b31c16653e73deb3fd33cc7cf6601ef Mon Sep 17 00:00:00 2001 From: danielailie Date: Wed, 29 Jan 2025 13:55:16 +0200 Subject: [PATCH 2/4] Update code to use new methods and not the deprecated one --- src/abi/smartContract.spec.ts | 8 ++++---- src/wallet/userSigner.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/abi/smartContract.spec.ts b/src/abi/smartContract.spec.ts index 501db6e3..5dd1ddc2 100644 --- a/src/abi/smartContract.spec.ts +++ b/src/abi/smartContract.spec.ts @@ -227,8 +227,8 @@ describe("test contract", () => { ], }); - const callerAddress = Address.fromBech32("erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"); - const contractAddress = Address.fromBech32("erd1qqqqqqqqqqqqqpgqaxa53w6uk43n6dhyt2la6cd5lyv32qn4396qfsqlnk"); + const callerAddress = Address.newFromBech32("erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"); + const contractAddress = Address.newFromBech32("erd1qqqqqqqqqqqqqpgqaxa53w6uk43n6dhyt2la6cd5lyv32qn4396qfsqlnk"); const contract = new SmartContract({ abi, @@ -296,8 +296,8 @@ describe("test contract", () => { ], }); - const callerAddress = Address.fromBech32("erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"); - const contractAddress = Address.fromBech32("erd1qqqqqqqqqqqqqpgqaxa53w6uk43n6dhyt2la6cd5lyv32qn4396qfsqlnk"); + const callerAddress = Address.newFromBech32("erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th"); + const contractAddress = Address.newFromBech32("erd1qqqqqqqqqqqqqpgqaxa53w6uk43n6dhyt2la6cd5lyv32qn4396qfsqlnk"); const contract = new SmartContract({ abi, diff --git a/src/wallet/userSigner.ts b/src/wallet/userSigner.ts index a74518ff..6163e9dc 100644 --- a/src/wallet/userSigner.ts +++ b/src/wallet/userSigner.ts @@ -36,7 +36,7 @@ export class UserSigner { * Gets the address of the signer. */ getAddress(hrp?: string): Address { - const bech32 = this.secretKey.generatePublicKey().toAddress(hrp).bech32(); + const bech32 = this.secretKey.generatePublicKey().toAddress(hrp).toBech32(); return Address.newFromBech32(bech32); } } From 3e3117c9177da1c4fbc2a59845d48f3459cae6b1 Mon Sep 17 00:00:00 2001 From: danielailie Date: Wed, 29 Jan 2025 15:08:17 +0200 Subject: [PATCH 3/4] Code review follow up --- src/abi/interaction.local.net.spec.ts | 5 +---- src/abi/interaction.spec.ts | 1 + src/abi/interaction.ts | 2 +- src/abi/smartContract.local.net.spec.ts | 5 +---- src/abi/smartContractResults.local.net.spec.ts | 2 +- src/networkProviders/apiNetworkProvider.dev.net.spec.ts | 4 +--- src/networkProviders/proxyNetworkProvider.dev.net.spec.ts | 6 ++---- src/transaction.local.net.spec.ts | 4 ++-- 8 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/abi/interaction.local.net.spec.ts b/src/abi/interaction.local.net.spec.ts index 44fe1a1a..5457a208 100644 --- a/src/abi/interaction.local.net.spec.ts +++ b/src/abi/interaction.local.net.spec.ts @@ -19,6 +19,7 @@ import { ManagedDecimalValue } from "./typesystem"; describe("test smart contract interactor", function () { let provider = createLocalnetProvider(); let alice: TestWallet; + const transactionComputer = new TransactionComputer(); before(async function () { ({ alice } = await loadTestWallets()); @@ -46,7 +47,6 @@ describe("test smart contract interactor", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); @@ -283,7 +283,6 @@ describe("test smart contract interactor", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); @@ -385,7 +384,6 @@ describe("test smart contract interactor", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); @@ -483,7 +481,6 @@ describe("test smart contract interactor", function () { const transaction = options.transaction; const wallet = options.wallet; - const transactionComputer = new TransactionComputer(); transaction.signature = await wallet.signer.sign(transactionComputer.computeBytesForSigning(transaction)); } }); diff --git a/src/abi/interaction.spec.ts b/src/abi/interaction.spec.ts index 1741424f..efec69ce 100644 --- a/src/abi/interaction.spec.ts +++ b/src/abi/interaction.spec.ts @@ -23,6 +23,7 @@ describe("test smart contract interactor", function () { let provider = new MockNetworkProvider(); let alice: TestWallet; const transactionComputer = new TransactionComputer(); + before(async function () { ({ alice } = await loadTestWallets()); }); diff --git a/src/abi/interaction.ts b/src/abi/interaction.ts index b9ac422c..83594696 100644 --- a/src/abi/interaction.ts +++ b/src/abi/interaction.ts @@ -21,7 +21,7 @@ interface ISmartContractWithinInteraction { } /** - * @deprecated component. Use "SmartContractTransactionsFactory" (for transactions) or "SmartContractQueriesController" (for queries), instead. + * @deprecated component. Use "SmartContractTransactionsFactory" (for transactions) or "SmartContractController" (for queries), instead. * * Interactions can be seen as mutable transaction & query builders. * diff --git a/src/abi/smartContract.local.net.spec.ts b/src/abi/smartContract.local.net.spec.ts index 559108a8..09af4f94 100644 --- a/src/abi/smartContract.local.net.spec.ts +++ b/src/abi/smartContract.local.net.spec.ts @@ -29,6 +29,7 @@ describe("test on local testnet", function () { let provider = createLocalnetProvider(); let watcher: TransactionWatcher; let parser: SmartContractTransactionsOutcomeParser; + const transactionComputer = new TransactionComputer(); before(async function () { ({ alice, bob, carol } = await loadTestWallets()); @@ -61,7 +62,6 @@ describe("test on local testnet", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); @@ -146,7 +146,6 @@ describe("test on local testnet", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); @@ -224,7 +223,6 @@ describe("test on local testnet", function () { arguments: [new U32Value(10000)], }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); @@ -327,7 +325,6 @@ describe("test on local testnet", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); diff --git a/src/abi/smartContractResults.local.net.spec.ts b/src/abi/smartContractResults.local.net.spec.ts index 29703453..5f320b9c 100644 --- a/src/abi/smartContractResults.local.net.spec.ts +++ b/src/abi/smartContractResults.local.net.spec.ts @@ -15,6 +15,7 @@ describe("fetch transactions from local testnet", function () { let watcher: TransactionWatcher; let parser: SmartContractTransactionsOutcomeParser; const transactionComputer = new TransactionComputer(); + before(async function () { ({ alice } = await loadTestWallets()); watcher = new TransactionWatcher({ @@ -99,7 +100,6 @@ describe("fetch transactions from local testnet", function () { }); deployTransaction.nonce = BigInt(alice.account.nonce.valueOf()); - const transactionComputer = new TransactionComputer(); deployTransaction.signature = await alice.signer.sign( Buffer.from(transactionComputer.computeBytesForSigning(deployTransaction)), ); diff --git a/src/networkProviders/apiNetworkProvider.dev.net.spec.ts b/src/networkProviders/apiNetworkProvider.dev.net.spec.ts index b63c5cfe..96af455d 100644 --- a/src/networkProviders/apiNetworkProvider.dev.net.spec.ts +++ b/src/networkProviders/apiNetworkProvider.dev.net.spec.ts @@ -11,6 +11,7 @@ import { ApiNetworkProvider } from "./apiNetworkProvider"; describe("ApiNetworkProvider Tests", function () { const apiProvider = new ApiNetworkProvider("https://devnet-api.multiversx.com"); + const transactionComputer = new TransactionComputer(); it("should fetch network configuration", async () => { const result = await apiProvider.getNetworkConfig(); @@ -282,7 +283,6 @@ describe("ApiNetworkProvider Tests", function () { it("should simulate transaction", async () => { const bob = await loadTestWallet("bob"); - const transactionComputer = new TransactionComputer(); let transaction = new Transaction({ sender: bob.address, receiver: bob.address, @@ -334,7 +334,6 @@ describe("ApiNetworkProvider Tests", function () { it("should estimate transaction cost", async function () { const bob = await loadTestWallet("bob"); - const transactionComputer = new TransactionComputer(); const transaction = new Transaction({ sender: bob.address, receiver: bob.address, @@ -351,7 +350,6 @@ describe("ApiNetworkProvider Tests", function () { it("should send and await for completed transaction", async function () { this.timeout(30000); const bob = await loadTestWallet("bob"); - const transactionComputer = new TransactionComputer(); let transaction = new Transaction({ sender: bob.address, receiver: bob.address, diff --git a/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts b/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts index 07ac7878..b7d19626 100644 --- a/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts +++ b/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts @@ -11,7 +11,7 @@ import { ProxyNetworkProvider } from "./proxyNetworkProvider"; describe("ProxyNetworkProvider Tests", function () { const proxy = new ProxyNetworkProvider("https://devnet-gateway.multiversx.com"); - + const transactionComputer = new TransactionComputer(); it("should fetch network configuration", async () => { const result = await proxy.getNetworkConfig(); assert.equal(result.chainID, "D"); @@ -282,7 +282,7 @@ describe("ProxyNetworkProvider Tests", function () { it("should simulate transaction", async () => { const bob = await loadTestWallet("bob"); - const transactionComputer = new TransactionComputer(); + let transaction = new Transaction({ sender: bob.address, receiver: bob.address, @@ -334,7 +334,6 @@ describe("ProxyNetworkProvider Tests", function () { it("should estimate transaction cost", async function () { const bob = await loadTestWallet("bob"); - const transactionComputer = new TransactionComputer(); const transaction = new Transaction({ sender: bob.address, receiver: bob.address, @@ -351,7 +350,6 @@ describe("ProxyNetworkProvider Tests", function () { it("should send and await for completed transaction", async function () { this.timeout(50000); const bob = await loadTestWallet("bob"); - const transactionComputer = new TransactionComputer(); let transaction = new Transaction({ sender: bob.address, receiver: bob.address, diff --git a/src/transaction.local.net.spec.ts b/src/transaction.local.net.spec.ts index 07871ed7..8f1abc82 100644 --- a/src/transaction.local.net.spec.ts +++ b/src/transaction.local.net.spec.ts @@ -14,6 +14,7 @@ import { TransferTransactionsFactory } from "./transfers/transferTransactionsFac describe("test transaction", function () { let alice: TestWallet, bob: TestWallet; const transactionComputer = new TransactionComputer(); + before(async function () { ({ alice, bob } = await loadTestWallets()); }); @@ -56,8 +57,7 @@ describe("test transaction", function () { await bob.sync(provider); let initialBalanceOfBob = new BigNumber((await bob.getBalance(provider)).toString()); - transactionOne.nonce = alice.account.nonce; - alice.account.incrementNonce(); + transactionOne.nonce = alice.account.getNonceThenIncrement(); transactionTwo.nonce = alice.account.nonce; await signTransaction({ transaction: transactionOne, wallet: alice }); From 64d3b40d6123aec1b0f4a3fa6cac7eb8fc0d5612 Mon Sep 17 00:00:00 2001 From: danielailie Date: Wed, 29 Jan 2025 15:15:31 +0200 Subject: [PATCH 4/4] Add new line and update comments --- src/abi/interaction.ts | 2 +- src/networkProviders/proxyNetworkProvider.dev.net.spec.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/abi/interaction.ts b/src/abi/interaction.ts index 83594696..e673de3f 100644 --- a/src/abi/interaction.ts +++ b/src/abi/interaction.ts @@ -21,7 +21,7 @@ interface ISmartContractWithinInteraction { } /** - * @deprecated component. Use "SmartContractTransactionsFactory" (for transactions) or "SmartContractController" (for queries), instead. + * @deprecated component. Use "SmartContractTransactionsFactory" or "SmartContractController", instead. * * Interactions can be seen as mutable transaction & query builders. * diff --git a/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts b/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts index b7d19626..fc68c1bf 100644 --- a/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts +++ b/src/networkProviders/proxyNetworkProvider.dev.net.spec.ts @@ -12,6 +12,7 @@ import { ProxyNetworkProvider } from "./proxyNetworkProvider"; describe("ProxyNetworkProvider Tests", function () { const proxy = new ProxyNetworkProvider("https://devnet-gateway.multiversx.com"); const transactionComputer = new TransactionComputer(); + it("should fetch network configuration", async () => { const result = await proxy.getNetworkConfig(); assert.equal(result.chainID, "D");