Skip to content

Commit 6f5de9b

Browse files
authored
Add relayer and guardian to controllers
Add relayer and guardian to controllers
2 parents 69438d1 + 7324c6d commit 6f5de9b

17 files changed

+283
-176
lines changed

package-lock.json

Lines changed: 9 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@multiversx/sdk-core",
3-
"version": "13.17.1",
3+
"version": "14.0.0-beta.0",
44
"description": "MultiversX SDK for JavaScript and TypeScript",
55
"author": "MultiversX",
66
"homepage": "https://multiversx.com",

src/abi/interaction.spec.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { SmartContractQueryResponse } from "../core/smartContractQuery";
66
import { Token, TokenTransfer } from "../core/tokens";
77
import { Transaction } from "../core/transaction";
88
import { SmartContractController } from "../smartContracts";
9-
import { loadAbiRegistry, MockNetworkProvider, setupUnitTestWatcherTimeouts } from "../testutils";
9+
import { loadAbiRegistry, MockNetworkProvider } from "../testutils";
1010
import { getTestWalletsPath } from "../testutils/utils";
1111
import { ContractFunction } from "./function";
1212
import { Interaction } from "./interaction";
@@ -204,8 +204,7 @@ describe("test smart contract interactor", function () {
204204
});
205205

206206
it("should interact with 'answer'", async function () {
207-
setupUnitTestWatcherTimeouts();
208-
207+
this.timeout(30000);
209208
let abiRegistry = await loadAbiRegistry("src/testdata/answer.abi.json");
210209
let contract = new SmartContract({ address: dummyAddress, abi: abiRegistry });
211210
let controller = new SmartContractController({ chainID: "D", networkProvider: provider, abi: abiRegistry });
@@ -270,8 +269,7 @@ describe("test smart contract interactor", function () {
270269
});
271270

272271
it("should interact with 'counter'", async function () {
273-
setupUnitTestWatcherTimeouts();
274-
272+
this.timeout(30000);
275273
let abi = await loadAbiRegistry("src/testdata/counter.abi.json");
276274
let contract = new SmartContract({ address: dummyAddress, abi: abi });
277275
let controller = new SmartContractController({ chainID: "D", networkProvider: provider, abi: abi });
@@ -339,8 +337,7 @@ describe("test smart contract interactor", function () {
339337
});
340338

341339
it("should interact with 'lottery-esdt'", async function () {
342-
setupUnitTestWatcherTimeouts();
343-
340+
this.timeout(30000);
344341
let abiRegistry = await loadAbiRegistry("src/testdata/lottery-esdt.abi.json");
345342
let contract = new SmartContract({ address: dummyAddress, abi: abiRegistry });
346343
let controller = new SmartContractController({ chainID: "D", networkProvider: provider, abi: abiRegistry });

src/abi/smartContract.local.net.spec.ts

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,23 @@ describe("test on local testnet", function () {
3434
bob = await Account.newFromPem(`${getTestWalletsPath()}/bob.pem`);
3535
carol = await Account.newFromPem(`${getTestWalletsPath()}/carol.pem`);
3636

37-
watcher = new TransactionWatcher({
38-
getTransaction: async (hash: string) => {
39-
return await provider.getTransaction(hash);
37+
watcher = new TransactionWatcher(
38+
{
39+
getTransaction: async (hash: string) => {
40+
return await provider.getTransaction(hash);
41+
},
4042
},
41-
});
43+
{
44+
pollingIntervalMilliseconds: 5000,
45+
timeoutMilliseconds: 50000,
46+
},
47+
);
4248
parser = new SmartContractTransactionsOutcomeParser();
4349
});
4450

4551
it("counter: should deploy, then simulate transactions using SmartContractTransactionsFactory", async function () {
4652
this.timeout(60000);
4753

48-
TransactionWatcher.DefaultPollingInterval = 5000;
49-
TransactionWatcher.DefaultTimeout = 50000;
50-
5154
let network = await provider.getNetworkConfig();
5255

5356
const config = new TransactionsFactoryConfig({ chainID: network.chainID });
@@ -121,9 +124,6 @@ describe("test on local testnet", function () {
121124
it("counter: should deploy, call and query contract using SmartContractTransactionsFactory", async function () {
122125
this.timeout(80000);
123126

124-
TransactionWatcher.DefaultPollingInterval = 5000;
125-
TransactionWatcher.DefaultTimeout = 50000;
126-
127127
let network = await provider.getNetworkConfig();
128128

129129
const config = new TransactionsFactoryConfig({ chainID: network.chainID });
@@ -187,9 +187,6 @@ describe("test on local testnet", function () {
187187
it("erc20: should deploy, call and query contract using SmartContractTransactionsFactory", async function () {
188188
this.timeout(60000);
189189

190-
TransactionWatcher.DefaultPollingInterval = 5000;
191-
TransactionWatcher.DefaultTimeout = 50000;
192-
193190
let network = await provider.getNetworkConfig();
194191

195192
const config = new TransactionsFactoryConfig({ chainID: network.chainID });
@@ -277,10 +274,6 @@ describe("test on local testnet", function () {
277274

278275
it("lottery: should deploy, call and query contract using SmartContractTransactionsFactory", async function () {
279276
this.timeout(60000);
280-
281-
TransactionWatcher.DefaultPollingInterval = 5000;
282-
TransactionWatcher.DefaultTimeout = 50000;
283-
284277
let network = await provider.getNetworkConfig();
285278
alice.nonce = (await provider.getAccount(alice.address)).nonce;
286279

src/abi/smartContract.spec.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@ import { Address } from "../core/address";
44
import { TransactionComputer } from "../core/transactionComputer";
55
import { TransactionStatus } from "../core/transactionStatus";
66
import { TransactionWatcher } from "../core/transactionWatcher";
7-
import {
8-
getTestWalletsPath,
9-
MarkCompleted,
10-
MockNetworkProvider,
11-
setupUnitTestWatcherTimeouts,
12-
Wait,
13-
} from "../testutils";
7+
import { getTestWalletsPath, MarkCompleted, MockNetworkProvider, Wait } from "../testutils";
148
import { Code } from "./code";
159
import { ContractFunction } from "./function";
1610
import { SmartContract } from "./smartContract";
@@ -41,8 +35,10 @@ describe("test contract", () => {
4135
});
4236

4337
it("should deploy", async () => {
44-
setupUnitTestWatcherTimeouts();
45-
let watcher = new TransactionWatcher(provider);
38+
let watcher = new TransactionWatcher(provider, {
39+
pollingIntervalMilliseconds: 42,
40+
timeoutMilliseconds: 42 * 42,
41+
});
4642

4743
let contract = new SmartContract();
4844
let deployTransaction = contract.deploy({
@@ -87,8 +83,10 @@ describe("test contract", () => {
8783
});
8884

8985
it("should call", async () => {
90-
setupUnitTestWatcherTimeouts();
91-
let watcher = new TransactionWatcher(provider);
86+
let watcher = new TransactionWatcher(provider, {
87+
pollingIntervalMilliseconds: 42,
88+
timeoutMilliseconds: 42 * 42,
89+
});
9290

9391
let contract = new SmartContract({
9492
address: new Address("erd1qqqqqqqqqqqqqpgqak8zt22wl2ph4tswtyc39namqx6ysa2sd8ss4xmlj3"),
@@ -154,8 +152,10 @@ describe("test contract", () => {
154152
});
155153

156154
it("should upgrade", async () => {
157-
setupUnitTestWatcherTimeouts();
158-
let watcher = new TransactionWatcher(provider);
155+
let watcher = new TransactionWatcher(provider, {
156+
pollingIntervalMilliseconds: 42,
157+
timeoutMilliseconds: 42 * 42,
158+
});
159159

160160
let contract = new SmartContract();
161161
contract.setAddress(Address.newFromBech32("erd1qqqqqqqqqqqqqpgq3ytm9m8dpeud35v3us20vsafp77smqghd8ss4jtm0q"));

src/abi/smartContractResults.local.net.spec.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,24 @@ describe("fetch transactions from local testnet", function () {
1717

1818
before(async function () {
1919
alice = await Account.newFromPem(`${getTestWalletsPath()}/alice.pem`);
20-
watcher = new TransactionWatcher({
21-
getTransaction: async (hash: string) => {
22-
return await provider.getTransaction(hash);
20+
watcher = new TransactionWatcher(
21+
{
22+
getTransaction: async (hash: string) => {
23+
return await provider.getTransaction(hash);
24+
},
2325
},
24-
});
26+
{
27+
pollingIntervalMilliseconds: 5000,
28+
timeoutMilliseconds: 50000,
29+
},
30+
);
2531

2632
parser = new SmartContractTransactionsOutcomeParser();
2733
});
2834

2935
it("counter smart contract", async function () {
3036
this.timeout(60000);
3137

32-
TransactionWatcher.DefaultPollingInterval = 5000;
33-
TransactionWatcher.DefaultTimeout = 50000;
34-
3538
let network = await provider.getNetworkConfig();
3639
alice.nonce = (await provider.getAccount(alice.address)).nonce;
3740

@@ -78,9 +81,6 @@ describe("fetch transactions from local testnet", function () {
7881
it("interact with counter smart contract using SmartContractTransactionsFactory", async function () {
7982
this.timeout(60000);
8083

81-
TransactionWatcher.DefaultPollingInterval = 5000;
82-
TransactionWatcher.DefaultTimeout = 50000;
83-
8484
let network = await provider.getNetworkConfig();
8585

8686
const config = new TransactionsFactoryConfig({ chainID: network.chainID });

src/accountManagement/accountController.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { IAccount } from "../accounts/interfaces";
2+
import { Address } from "../core";
23
import { Transaction } from "../core/transaction";
34
import { TransactionComputer } from "../core/transactionComputer";
45
import { TransactionsFactoryConfig } from "../core/transactionsFactoryConfig";
@@ -19,10 +20,12 @@ export class AccountController {
1920
async createTransactionForSavingKeyValue(
2021
sender: IAccount,
2122
nonce: bigint,
22-
options: SaveKeyValueInput,
23+
options: SaveKeyValueInput & { guardian?: Address; relayer?: Address },
2324
): Promise<Transaction> {
2425
const transaction = this.factory.createTransactionForSavingKeyValue(sender.address, options);
2526

27+
transaction.guardian = options.guardian ?? Address.empty();
28+
transaction.relayer = options.relayer ?? Address.empty();
2629
transaction.nonce = nonce;
2730
transaction.signature = await sender.sign(this.txComputer.computeBytesForSigning(transaction));
2831

@@ -32,28 +35,40 @@ export class AccountController {
3235
async createTransactionForSettingGuardian(
3336
sender: IAccount,
3437
nonce: bigint,
35-
options: SetGuardianInput,
38+
options: SetGuardianInput & { guardian?: Address; relayer?: Address },
3639
): Promise<Transaction> {
3740
const transaction = this.factory.createTransactionForSettingGuardian(sender.address, options);
3841

42+
transaction.guardian = options.guardian ?? Address.empty();
43+
transaction.relayer = options.relayer ?? Address.empty();
3944
transaction.nonce = nonce;
4045
transaction.signature = await sender.sign(this.txComputer.computeBytesForSigning(transaction));
4146

4247
return transaction;
4348
}
4449

45-
async createTransactionForGuardingAccount(sender: IAccount, nonce: bigint): Promise<Transaction> {
50+
async createTransactionForGuardingAccount(
51+
sender: IAccount,
52+
nonce: bigint,
53+
options: { relayer?: Address },
54+
): Promise<Transaction> {
4655
const transaction = this.factory.createTransactionForGuardingAccount(sender.address);
47-
56+
transaction.relayer = options.relayer ?? Address.empty();
4857
transaction.nonce = nonce;
4958
transaction.signature = await sender.sign(this.txComputer.computeBytesForSigning(transaction));
5059

5160
return transaction;
5261
}
5362

54-
async createTransactionForUnguardingAccount(sender: IAccount, nonce: bigint): Promise<Transaction> {
63+
async createTransactionForUnguardingAccount(
64+
sender: IAccount,
65+
nonce: bigint,
66+
options: { guardian: Address; relayer?: Address },
67+
): Promise<Transaction> {
5568
const transaction = this.factory.createTransactionForUnguardingAccount(sender.address);
5669

70+
transaction.guardian = options.guardian ?? Address.empty();
71+
transaction.relayer = options.relayer ?? Address.empty();
5772
transaction.nonce = nonce;
5873
transaction.signature = await sender.sign(this.txComputer.computeBytesForSigning(transaction));
5974

0 commit comments

Comments
 (0)