Skip to content

Commit

Permalink
Merge pull request #567 from multiversx/TOOL-373-mark-as-deprecated-a…
Browse files Browse the repository at this point in the history
…ll-legacy-functions

Tool 373 mark as deprecated all legacy functions
  • Loading branch information
danielailie authored Jan 29, 2025
2 parents 4555bb0 + 64d3b40 commit 66c042d
Show file tree
Hide file tree
Showing 16 changed files with 190 additions and 168 deletions.
8 changes: 2 additions & 6 deletions src/abi/interaction.local.net.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -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)),
);
Expand Down Expand Up @@ -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)),
);
Expand Down Expand Up @@ -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)),
);
Expand Down Expand Up @@ -483,8 +481,6 @@ 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);
transaction.signature = await wallet.signer.sign(transactionComputer.computeBytesForSigning(transaction));
}
});
113 changes: 62 additions & 51 deletions src/abi/interaction.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -21,6 +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());
Expand All @@ -38,10 +40,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 () {
Expand Down Expand Up @@ -74,18 +76,18 @@ 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, [])
.withSender(alice)
.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}`,
);

Expand All @@ -95,10 +97,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}`,
);

Expand All @@ -108,10 +110,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}`,
);

Expand All @@ -121,10 +123,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}`,
);

Expand All @@ -134,10 +136,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}`,
);

Expand All @@ -147,10 +149,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}`,
);

Expand All @@ -160,10 +162,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}`,
);

Expand All @@ -173,8 +175,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 () {
Expand Down Expand Up @@ -246,24 +248,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);
Expand Down Expand Up @@ -312,7 +314,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);
Expand All @@ -326,16 +330,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);
Expand Down Expand Up @@ -376,16 +386,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);

Expand All @@ -396,13 +405,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: [] });
Expand All @@ -414,16 +425,16 @@ 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",
"getLotteryInfo",
);
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);

Expand Down
2 changes: 1 addition & 1 deletion src/abi/interaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ interface ISmartContractWithinInteraction {
}

/**
* Legacy component. Use "SmartContractTransactionsFactory" (for transactions) or "SmartContractQueriesController" (for queries), instead.
* @deprecated component. Use "SmartContractTransactionsFactory" or "SmartContractController", instead.
*
* Interactions can be seen as mutable transaction & query builders.
*
Expand Down
5 changes: 1 addition & 4 deletions src/abi/smartContract.local.net.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -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)),
);
Expand Down Expand Up @@ -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)),
);
Expand Down Expand Up @@ -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)),
);
Expand Down Expand Up @@ -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)),
);
Expand Down
Loading

0 comments on commit 66c042d

Please sign in to comment.