Skip to content

Commit

Permalink
fix: wait ethereum transaction finalization after send
Browse files Browse the repository at this point in the history
  • Loading branch information
vklachkov committed Jan 21, 2025
1 parent b4d589d commit 6da19ed
Show file tree
Hide file tree
Showing 44 changed files with 933 additions and 814 deletions.
49 changes: 30 additions & 19 deletions js-packages/scripts/benchmarks/mintFee/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {createObjectCsvWriter} from 'csv-writer';
import {convertToTokens, createCollectionForBenchmarks, PERMISSIONS, PROPERTIES} from '../utils/common.js';
import {makeNames} from '@unique/test-utils/util.js';
import type {ContractImports} from '@unique/test-utils/eth/types.js';
import {sendAndWait} from '@unique/test-utils/eth/tx.js';

const {dirname} = makeNames(import.meta.url);

Expand Down Expand Up @@ -183,12 +184,15 @@ async function benchMintFee(
const evmProxyContractFee = await helper.arrange.calculcateFee(
{Ethereum: ethSigner},
async () => {
await proxyContract.methods
.mintToSubstrate(
helper.ethAddress.fromCollectionId(collection.collectionId),
substrateReceiver.addressRaw,
)
.send({from: ethSigner});
await sendAndWait(
helper.getWeb3(),
proxyContract.methods
.mintToSubstrate(
helper.ethAddress.fromCollectionId(collection.collectionId),
substrateReceiver.addressRaw,
),
{from: ethSigner},
);
},
);

Expand Down Expand Up @@ -323,11 +327,14 @@ async function benchMintWithProperties(
'nft',
);

await evmContract.methods.mintCross(
helper.ethCrossAccount.fromAddress(receiverEthAddress),
PROPERTIES.slice(0, setup.propertiesNumber),
)
.send({from: ethSigner});
await sendAndWait(
helper.getWeb3(),
evmContract.methods.mintCross(
helper.ethCrossAccount.fromAddress(receiverEthAddress),
PROPERTIES.slice(0, setup.propertiesNumber),
),
{from: ethSigner},
);
},
);

Expand All @@ -338,13 +345,15 @@ async function benchMintWithProperties(
ethSigner,
proxyContract.options.address,
async (collection) => {
await proxyContract.methods
.mintToSubstrateWithProperty(
await sendAndWait(
helper.getWeb3(),
proxyContract.methods.mintToSubstrateWithProperty(
helper.ethAddress.fromCollectionId(collection.collectionId),
susbstrateReceiver.addressRaw,
PROPERTIES.slice(0, setup.propertiesNumber),
)
.send({from: ethSigner});
),
{from: ethSigner},
);
},
);

Expand All @@ -355,13 +364,15 @@ async function benchMintWithProperties(
ethSigner,
proxyContract.options.address,
async (collection) => {
await proxyContract.methods
.mintToSubstrateBulkProperty(
await sendAndWait(
helper.getWeb3(),
proxyContract.methods.mintToSubstrateBulkProperty(
helper.ethAddress.fromCollectionId(collection.collectionId),
susbstrateReceiver.addressRaw,
PROPERTIES.slice(0, setup.propertiesNumber),
)
.send({from: ethSigner});
),
{from: ethSigner},
);
},
);

Expand Down
25 changes: 13 additions & 12 deletions js-packages/scripts/benchmarks/nesting/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {usingEthPlaygrounds} from '@unique/test-utils/eth/util.js';
import {sendAndWait} from '@unique/test-utils/eth/tx.js';
import {EthUniqueHelper} from '@unique/test-utils/eth/index.js';
import {readFile} from 'fs/promises';
import type {IKeyringPair} from '@polkadot/types/types';
Expand Down Expand Up @@ -106,7 +107,7 @@ async function measureRMRK(helper: EthUniqueHelper, donor: IKeyringPair) {

const rmrk = contract as any as RMRKNestableMintable;
const createTokenFor = async (receiver: string) => {
const tokenReceipt = await rmrk.methods.safeMint(receiver).send({from: ethSigner});
const tokenReceipt = await sendAndWait(helper.getWeb3(), rmrk.methods.safeMint(receiver) as any, {from: ethSigner});
return tokenReceipt.events!['Transfer'].returnValues.tokenId as number;
};

Expand All @@ -118,22 +119,22 @@ async function measureRMRK(helper: EthUniqueHelper, donor: IKeyringPair) {

const nestTransfer = await helper.arrange.calculcateFee({Ethereum: ethSigner}, async () => {
const addChildData = rmrk.methods.addChild(nestId, outerCollectionNestedId, []).encodeABI();
await relayer.methods.relay(addChildData).send({from: ethSigner});
await rmrk.methods.acceptChild(nestId, 0, relayerAddress, outerCollectionNestedId).send({from: ethSigner});
await sendAndWait(helper.getWeb3(), relayer.methods.relay(addChildData), {from: ethSigner});
await sendAndWait(helper.getWeb3(), rmrk.methods.acceptChild(nestId, 0, relayerAddress, outerCollectionNestedId) as any, {from: ethSigner});
});


const nestMint = await helper.arrange.calculcateFee({Ethereum: ethSigner}, async () => {
const nestMintData = rmrk.methods.nestMint(rmrk.options.address, nextTokenId, contractOwnedNestId).encodeABI();
await relayer.methods.relay(nestMintData).send({from: ethSigner});
await sendAndWait(helper.getWeb3(), relayer.methods.relay(nestMintData), {from: ethSigner});
const acceptNestedToken = rmrk.methods.acceptChild(contractOwnedNestId, 0, rmrk.options.address, nextTokenId).encodeABI();
await relayer.methods.relay(acceptNestedToken).send({from: ethSigner});
await sendAndWait(helper.getWeb3(), relayer.methods.relay(acceptNestedToken), {from: ethSigner});
});


const unnestToken = await helper.arrange.calculcateFee({Ethereum: ethSigner}, async () => {
const unnestData = rmrk.methods.transferChild(contractOwnedNestId, ethSigner, 0, 0, rmrk.options.address, nextTokenId, false, []).encodeABI();
await relayer.methods.relay(unnestData).send({from: ethSigner});
await sendAndWait(helper.getWeb3(), relayer.methods.relay(unnestData), {from: ethSigner});
});

return {mint: convertToTokens(nestMint), transfer: convertToTokens(nestTransfer), unnest: convertToTokens(unnestToken)};
Expand All @@ -144,25 +145,25 @@ async function measureEth(helper: EthUniqueHelper, donor: IKeyringPair) {
const {collectionId, contract} = await createNestingCollection(helper, owner);

// Create a token to be nested to
const mintingTargetNFTTokenIdResult = await contract.methods.mint(owner).send({from: owner});
const mintingTargetNFTTokenIdResult = await sendAndWait(helper.getWeb3(), contract.methods.mint(owner), {from: owner});
const targetNFTTokenId = mintingTargetNFTTokenIdResult.events.Transfer.returnValues.tokenId;
const targetNftTokenAddress = helper.ethAddress.fromTokenId(collectionId, targetNFTTokenId);

// Create a nested token
const nestMint = await helper.arrange.calculcateFee({Ethereum: owner}, async () => {
await contract.methods.mint(targetNftTokenAddress).send({from: owner});
await sendAndWait(helper.getWeb3(), contract.methods.mint(targetNftTokenAddress), {from: owner});
});

// Create a token to be nested and nest
const mintingSecondTokenIdResult = await contract.methods.mint(owner).send({from: owner});
const mintingSecondTokenIdResult = await sendAndWait(helper.getWeb3(), contract.methods.mint(owner), {from: owner});
const nestedTokenId = mintingSecondTokenIdResult.events.Transfer.returnValues.tokenId;

const nestTransfer = await helper.arrange.calculcateFee({Ethereum: owner}, async () => {
await contract.methods.transfer(targetNftTokenAddress, nestedTokenId).send({from: owner});
await sendAndWait(helper.getWeb3(), contract.methods.transfer(targetNftTokenAddress, nestedTokenId), {from: owner});
});

const unnestToken = await helper.arrange.calculcateFee({Ethereum: owner}, async () => {
await contract.methods.transferFrom(targetNftTokenAddress, owner, nestedTokenId).send({from: owner});
await sendAndWait(helper.getWeb3(), contract.methods.transferFrom(targetNftTokenAddress, owner, nestedTokenId), {from: owner});
});
return {mint: convertToTokens(nestMint), transfer: convertToTokens(nestTransfer), unnest: convertToTokens(unnestToken)};
}
Expand Down Expand Up @@ -205,7 +206,7 @@ const createNestingCollection = async (
const {collectionAddress, collectionId} = await helper.eth.createNFTCollection(owner, 'A', 'B', 'C');

const contract = helper.ethNativeContract.collection(collectionAddress, 'nft', owner);
await contract.methods.setCollectionNesting(true).send({from: owner});
await sendAndWait(helper.getWeb3(), contract.methods.setCollectionNesting(true), {from: owner});

return {collectionId, collectionAddress, contract};
};
Expand Down
Loading

0 comments on commit 6da19ed

Please sign in to comment.