difftreelog
feat added substrate calls for 721 benchmarks
in: master
2 files changed
tests/src/benchmarks/mintFee/benchmark.tsdiffbeforeafterboth42 };42 };43 });43 });4445const SUBS_PROPERTIES = Array(40)46 .fill(0)47 .map((_, i) => {48 return {49 key: `key_${i}`,50 value: `value_${i}`,51 };52 });445345const PERMISSIONS: ITokenPropertyPermission[] = PROPERTIES.map((p) => {54const PERMISSIONS: ITokenPropertyPermission[] = PROPERTIES.map((p) => {46 return {55 return {609): Promise<IFunctionFee> {618): Promise<IFunctionFee> {610 const res: IFunctionFee = {};619 const res: IFunctionFee = {};611 const donor = await privateKey('//Alice');620 const donor = await privateKey('//Alice');621 const [subReceiver] = await helper.arrange.createAccounts([10n], donor);612 const ethSigner = await helper.eth.createAccountWithBalance(donor, 100n);622 const ethSigner = await helper.eth.createAccountWithBalance(donor, 100n);613 const ethReceiver = await helper.eth.createAccountWithBalance(donor, 10n);623 const ethReceiver = await helper.eth.createAccountWithBalance(donor, 10n);614 const crossSigner = helper.ethCrossAccount.fromAddress(ethSigner);624 const crossSigner = helper.ethCrossAccount.fromAddress(ethSigner);634 () => evmContract.methods.mint(ethSigner).send(),644 () => evmContract.methods.mint(ethSigner).send(),635 );645 );636637 res['mint'].substrate = convertToTokens((await helper.arrange.calculcateFee(638 {Substrate: donor.address},639 () => collection.mintToken(640 donor,641 {Ethereum: ethSigner},642 ),643 )));644646645 res['mintCross'] =647 res['mintCross'] =646 await helper.arrange.calculcateFeeGas(648 await helper.arrange.calculcateFeeGas(647 {Ethereum: ethSigner},649 {Ethereum: ethSigner},648 () => evmContract.methods.mintCross(crossSigner, []).send(),650 () => evmContract.methods.mintCross(crossSigner, []).send(),649 );651 );652653 res['mint'].substrate = convertToTokens((await helper.arrange.calculcateFee(654 {Substrate: donor.address},655 () => collection.mintToken(656 donor,657 {Substrate: donor.address},658 ),659 )));650660651 res['mintCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(661 res['mintCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(652 {Substrate: donor.address},662 {Substrate: donor.address},653 () => collection.mintMultipleTokens(donor, [{663 () => collection.mintMultipleTokens(donor, [{654 owner: {Ethereum: ethSigner},664 owner: {Substrate: donor.address},655 }]),665 }]),656 )));666 )));657667661 () => evmContract.methods.mintWithTokenURI(ethSigner, 'Test URI').send(),671 () => evmContract.methods.mintWithTokenURI(ethSigner, 'Test URI').send(),662 );672 );673674 res['mintWithTokenURI'].substrate = convertToTokens((await helper.arrange.calculcateFee(675 {Substrate: donor.address},676 () => collection.mintToken(677 donor,678 {Ethereum: ethSigner},679 [{key: 'URI', value: 'Test URI'}],680 ),681 )));663682664 res['setProperties'] =683 res['setProperties'] =665 await helper.arrange.calculcateFeeGas(684 await helper.arrange.calculcateFeeGas(673 () => evmContract.methods.deleteProperties(1, [PROPERTIES[0].key]).send(),692 () => evmContract.methods.deleteProperties(1, [PROPERTIES[0].key]).send(),674 );693 );694695 res['setProperties'].substrate = convertToTokens((await helper.arrange.calculcateFee(696 {Substrate: donor.address},697 () => collection.setTokenProperties(698 donor,699 1,700 SUBS_PROPERTIES.slice(0, 1),701 ),702 )));703704 res['deleteProperties'].substrate = convertToTokens((await helper.arrange.calculcateFee(705 {Substrate: donor.address},706 () => collection.deleteTokenProperties(707 donor,708 1,709 SUBS_PROPERTIES.slice(0, 1)710 .map(p => p.key),711 ),712 )));675713676 res['transfer'] =714 res['transfer'] =677 await helper.arrange.calculcateFeeGas(715 await helper.arrange.calculcateFeeGas(685 () => evmContract.methods.transferCross(crossSigner, 1).send({from: ethReceiver}),723 () => evmContract.methods.transferCross(crossSigner, 1).send({from: ethReceiver}),686 );724 );725726 res['transferCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(727 {Substrate: donor.address},728 () => collection.transferToken(729 donor,730 3,731 {Substrate: subReceiver.address},732 ),733 )));734 await collection.approveToken(subReceiver, 3, {Substrate: donor.address});687735688 res['transferFrom'] =736 res['transferFrom'] =689 await helper.arrange.calculcateFeeGas(737 await helper.arrange.calculcateFeeGas(697 () => evmContract.methods.transferFromCross(crossReceiver, crossSigner, 1).send({from:ethReceiver}),745 () => evmContract.methods.transferFromCross(crossReceiver, crossSigner, 1).send({from:ethReceiver}),698 );746 );747748 res['transferFromCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(749 {Substrate: donor.address},750 () => collection.transferTokenFrom(donor, 3, {Substrate: subReceiver.address}, {Substrate: donor.address}),751 )));699752700 res['burn'] =753 res['burn'] =701 await helper.arrange.calculcateFeeGas(754 await helper.arrange.calculcateFeeGas(702 {Ethereum: ethSigner},755 {Ethereum: ethSigner},703 () => evmContract.methods.burn(1).send(),756 () => evmContract.methods.burn(1).send(),704 );757 );758759 res['burn'].substrate = convertToTokens((await helper.arrange.calculcateFee(760 {Substrate: donor.address},761 () => collection.burnToken(donor, 3),762 )));763705764706 res['approveCross'] =765 res['approveCross'] =709 () => evmContract.methods.approveCross(crossReceiver, 2).send(),768 () => evmContract.methods.approveCross(crossReceiver, 2).send(),710 );769 );770771 res['approveCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(772 {Substrate: donor.address},773 () => collection.approveToken(donor, 4, {Substrate: subReceiver.address}),774 )));711775712 res['burnFromCross'] =776 res['burnFromCross'] =713 await helper.arrange.calculcateFeeGas(777 await helper.arrange.calculcateFeeGas(714 {Ethereum: ethReceiver},778 {Ethereum: ethReceiver},715 () => evmContract.methods.burnFromCross(crossSigner, 2).send({from:ethReceiver}),779 () => evmContract.methods.burnFromCross(crossSigner, 2).send({from:ethReceiver}),716 );780 );781782 res['burnFromCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(783 {Substrate: subReceiver.address},784 () => collection.burnTokenFrom(subReceiver, 4, {Substrate: donor.address}),785 )));717786718 res['setTokenPropertyPermissions'] =787 res['setTokenPropertyPermissions'] =719 await helper.arrange.calculcateFeeGas(788 await helper.arrange.calculcateFeeGas(727 ]).send(),796 ]).send(),728 );797 );798799 res['setTokenPropertyPermissions'].substrate = convertToTokens((await helper.arrange.calculcateFee(800 {Substrate: donor.address},801 () => collection.setTokenPropertyPermissions(donor, [{key: 'url', permission: {802 tokenOwner: true,803 collectionAdmin: true,804 mutable: true,805 }}]),806 )));729807730 res['setCollectionSponsorCross'] =808 res['setCollectionSponsorCross'] =731 await helper.arrange.calculcateFeeGas(809 await helper.arrange.calculcateFeeGas(745 () => evmContract.methods.removeCollectionSponsor().send(),823 () => evmContract.methods.removeCollectionSponsor().send(),746 );824 );825826 res['setCollectionSponsorCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(827 {Substrate: donor.address},828 () => collection.setSponsor(donor, subReceiver.address),829 )));830831 res['confirmCollectionSponsorship'].substrate = convertToTokens((await helper.arrange.calculcateFee(832 {Substrate: subReceiver.address},833 () => collection.confirmSponsorship(subReceiver),834 )));835836 res['removeCollectionSponsor'].substrate = convertToTokens((await helper.arrange.calculcateFee(837 {Substrate: donor.address},838 () => collection.removeSponsor(donor),839 )));747840748 res['setCollectionProperties'] =841 res['setCollectionProperties'] =749 await helper.arrange.calculcateFeeGas(842 await helper.arrange.calculcateFeeGas(774 () => evmContract.methods.setCollectionLimit({field: CollectionLimitField.AccountTokenOwnership, value: {status: true, value: 1000}}).send(),867 () => evmContract.methods.setCollectionLimit({field: CollectionLimitField.AccountTokenOwnership, value: {status: true, value: 1000}}).send(),775 );868 );869870 res['setCollectionLimit'].substrate = convertToTokens((await helper.arrange.calculcateFee(871 {Substrate: donor.address},872 () => collection.setLimits(donor, {accountTokenOwnershipLimit: 1000}),873 )));776874777 const {collectionAddress} = await helper.eth.createCollection('nft', ethSigner, 'A', 'B', 'C');875 const {collectionAddress} = await helper.eth.createCollection('nft', ethSigner, 'A', 'B', 'C');778 const collectionWithEthOwner = await helper.ethNativeContract.collection(collectionAddress, 'nft', ethSigner, true);876 const collectionWithEthOwner = await helper.ethNativeContract.collection(collectionAddress, 'nft', ethSigner, true);790 () => collectionWithEthOwner.methods.removeCollectionAdminCross(crossReceiver).send(),888 () => collectionWithEthOwner.methods.removeCollectionAdminCross(crossReceiver).send(),791 );889 );890891 res['addCollectionAdminCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(892 {Substrate: donor.address},893 () => collection.addAdmin(donor, {Ethereum: ethReceiver}),894 )));895896 res['removeCollectionAdminCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(897 {Substrate: donor.address},898 () => collection.removeAdmin(donor, {Ethereum: ethReceiver}),899 )));792900793 res['setCollectionNesting'] =901 res['setCollectionNesting'] =794 await helper.arrange.calculcateFeeGas(902 await helper.arrange.calculcateFeeGas(802 () => evmContract.methods.setCollectionNesting(true, [collectionAddress]).send(),910 () => evmContract.methods.setCollectionNesting(true, [collectionAddress]).send(),803 );911 );912913 res['setCollectionNesting'].substrate = convertToTokens((await helper.arrange.calculcateFee(914 {Substrate: donor.address},915 () => collection.disableNesting(donor),916 )));917918 res['setCollectionNesting[]'].substrate = convertToTokens((await helper.arrange.calculcateFee(919 {Substrate: donor.address},920 () => collection.setPermissions(921 donor,922 {923 nesting: {924 tokenOwner: true,925 restricted: [collection.collectionId],926 },927 },928 ),929 )));804930805 res['setCollectionAcces'] =931 res['setCollectionAccess'] =806 await helper.arrange.calculcateFeeGas(932 await helper.arrange.calculcateFeeGas(807 {Ethereum: ethSigner},933 {Ethereum: ethSigner},808 () => evmContract.methods.setCollectionAccess(SponsoringMode.Allowlisted).send(),934 () => evmContract.methods.setCollectionAccess(1).send(),809 );935 );936937 res['setCollectionAccess'].substrate = convertToTokens((await helper.arrange.calculcateFee(938 {Substrate: donor.address},939 () => collection.setPermissions(donor, {access: 'AllowList'}),940 )));810941811 res['addToCollectionAllowListCross'] =942 res['addToCollectionAllowListCross'] =812 await helper.arrange.calculcateFeeGas(943 await helper.arrange.calculcateFeeGas(820 () => evmContract.methods.removeFromCollectionAllowListCross(crossReceiver).send(),951 () => evmContract.methods.removeFromCollectionAllowListCross(crossReceiver).send(),821 );952 );953954 res['addToCollectionAllowListCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(955 {Substrate: donor.address},956 () => collection.addToAllowList(donor, {Ethereum: ethReceiver}),957 )));958959 res['removeFromCollectionAllowListCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(960 {Substrate: donor.address},961 () => collection.removeFromAllowList(donor, {Ethereum: ethReceiver}),962 )));822963823 res['setCollectionMintMode'] =964 res['setCollectionMintMode'] =824 await helper.arrange.calculcateFeeGas(965 await helper.arrange.calculcateFeeGas(825 {Ethereum: ethSigner},966 {Ethereum: ethSigner},826 () => evmContract.methods.setCollectionMintMode(true).send(),967 () => evmContract.methods.setCollectionMintMode(true).send(),827 );968 );969970 res['setCollectionMintMode'].substrate = convertToTokens((await helper.arrange.calculcateFee(971 {Substrate: donor.address},972 () => collection.setPermissions(donor, {mintMode: false}),973 )));828974829 res['changeCollectionOwnerCross'] =975 res['changeCollectionOwnerCross'] =830 await helper.arrange.calculcateFeeGas(976 await helper.arrange.calculcateFeeGas(831 {Ethereum: ethSigner},977 {Ethereum: ethSigner},832 () => collectionWithEthOwner.methods.changeCollectionOwnerCross(crossReceiver).send(),978 () => collectionWithEthOwner.methods.changeCollectionOwnerCross(crossReceiver).send(),833 );979 );980981 res['changeCollectionOwnerCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(982 {Substrate: donor.address},983 () => collection.changeOwner(donor, subReceiver.address),984 )));834985835 return res;986 return res;836}987}tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth322 };322 };323323324 async calculcateFee(payer: ICrossAccountId, promise: () => Promise<any>): Promise<bigint> {324 async calculcateFee(payer: ICrossAccountId, promise: () => Promise<any>): Promise<bigint> {325 const address = payer.Substrate ? payer.Substrate : await this.helper.address.ethToSubstrate(payer.Ethereum!);325 const address = payer.Substrate ? payer.Substrate : this.helper.address.ethToSubstrate(payer.Ethereum!);326 let balance = await this.helper.balance.getSubstrate(address);326 let balance = await this.helper.balance.getSubstrate(address);327327328 await promise();328 await promise();