git.delta.rocks / unique-network / refs/commits / eca46d2aa5f2

difftreelog

feat added substrate calls for 721 benchmarks

PraetorP2023-02-02parent: #71f7602.patch.diff
in: master

2 files changed

modifiedtests/src/benchmarks/mintFee/benchmark.tsdiffbeforeafterboth
42 };42 };
43 });43 });
44
45const SUBS_PROPERTIES = Array(40)
46 .fill(0)
47 .map((_, i) => {
48 return {
49 key: `key_${i}`,
50 value: `value_${i}`,
51 };
52 });
4453
45const 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 );
636
637 res['mint'].substrate = convertToTokens((await helper.arrange.calculcateFee(
638 {Substrate: donor.address},
639 () => collection.mintToken(
640 donor,
641 {Ethereum: ethSigner},
642 ),
643 )));
644646
645 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 );
652
653 res['mint'].substrate = convertToTokens((await helper.arrange.calculcateFee(
654 {Substrate: donor.address},
655 () => collection.mintToken(
656 donor,
657 {Substrate: donor.address},
658 ),
659 )));
650660
651 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 )));
657667
661 () => evmContract.methods.mintWithTokenURI(ethSigner, 'Test URI').send(),671 () => evmContract.methods.mintWithTokenURI(ethSigner, 'Test URI').send(),
662 );672 );
673
674 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 )));
663682
664 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 );
694
695 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 )));
703
704 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 )));
675713
676 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 );
725
726 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});
687735
688 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 );
747
748 res['transferFromCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
749 {Substrate: donor.address},
750 () => collection.transferTokenFrom(donor, 3, {Substrate: subReceiver.address}, {Substrate: donor.address}),
751 )));
699752
700 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 );
758
759 res['burn'].substrate = convertToTokens((await helper.arrange.calculcateFee(
760 {Substrate: donor.address},
761 () => collection.burnToken(donor, 3),
762 )));
763
705764
706 res['approveCross'] =765 res['approveCross'] =
709 () => evmContract.methods.approveCross(crossReceiver, 2).send(),768 () => evmContract.methods.approveCross(crossReceiver, 2).send(),
710 );769 );
770
771 res['approveCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
772 {Substrate: donor.address},
773 () => collection.approveToken(donor, 4, {Substrate: subReceiver.address}),
774 )));
711775
712 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 );
781
782 res['burnFromCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
783 {Substrate: subReceiver.address},
784 () => collection.burnTokenFrom(subReceiver, 4, {Substrate: donor.address}),
785 )));
717786
718 res['setTokenPropertyPermissions'] =787 res['setTokenPropertyPermissions'] =
719 await helper.arrange.calculcateFeeGas(788 await helper.arrange.calculcateFeeGas(
727 ]).send(),796 ]).send(),
728 );797 );
798
799 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 )));
729807
730 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 );
825
826 res['setCollectionSponsorCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
827 {Substrate: donor.address},
828 () => collection.setSponsor(donor, subReceiver.address),
829 )));
830
831 res['confirmCollectionSponsorship'].substrate = convertToTokens((await helper.arrange.calculcateFee(
832 {Substrate: subReceiver.address},
833 () => collection.confirmSponsorship(subReceiver),
834 )));
835
836 res['removeCollectionSponsor'].substrate = convertToTokens((await helper.arrange.calculcateFee(
837 {Substrate: donor.address},
838 () => collection.removeSponsor(donor),
839 )));
747840
748 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 );
869
870 res['setCollectionLimit'].substrate = convertToTokens((await helper.arrange.calculcateFee(
871 {Substrate: donor.address},
872 () => collection.setLimits(donor, {accountTokenOwnershipLimit: 1000}),
873 )));
776874
777 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 );
890
891 res['addCollectionAdminCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
892 {Substrate: donor.address},
893 () => collection.addAdmin(donor, {Ethereum: ethReceiver}),
894 )));
895
896 res['removeCollectionAdminCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
897 {Substrate: donor.address},
898 () => collection.removeAdmin(donor, {Ethereum: ethReceiver}),
899 )));
792900
793 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 );
912
913 res['setCollectionNesting'].substrate = convertToTokens((await helper.arrange.calculcateFee(
914 {Substrate: donor.address},
915 () => collection.disableNesting(donor),
916 )));
917
918 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 )));
804930
805 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 );
936
937 res['setCollectionAccess'].substrate = convertToTokens((await helper.arrange.calculcateFee(
938 {Substrate: donor.address},
939 () => collection.setPermissions(donor, {access: 'AllowList'}),
940 )));
810941
811 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 );
953
954 res['addToCollectionAllowListCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
955 {Substrate: donor.address},
956 () => collection.addToAllowList(donor, {Ethereum: ethReceiver}),
957 )));
958
959 res['removeFromCollectionAllowListCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
960 {Substrate: donor.address},
961 () => collection.removeFromAllowList(donor, {Ethereum: ethReceiver}),
962 )));
822963
823 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 );
969
970 res['setCollectionMintMode'].substrate = convertToTokens((await helper.arrange.calculcateFee(
971 {Substrate: donor.address},
972 () => collection.setPermissions(donor, {mintMode: false}),
973 )));
828974
829 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 );
980
981 res['changeCollectionOwnerCross'].substrate = convertToTokens((await helper.arrange.calculcateFee(
982 {Substrate: donor.address},
983 () => collection.changeOwner(donor, subReceiver.address),
984 )));
834985
835 return res;986 return res;
836}987}
modifiedtests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth
322 };322 };
323323
324 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);
327327
328 await promise();328 await promise();