difftreelog
Merge pull request #858 from UniqueNetwork/feature/erc721bench
in: master
Feature/erc721bench
72 files changed
tests/.gitignorediffbeforeafterboth1/node_modules/1/node_modules/2properties.csv2properties.csv33erc721.csv4erc20.csvtests/src/benchmarks/mintFee/benchmark.tsdiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/index.tsdiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/README.mddiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/access/Ownable.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/ERC721.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/IERC721.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/IERC721Receiver.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/Address.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/Context.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/Counters.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/Strings.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/introspection/ERC165.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/introspection/IERC165.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/@openzeppelin/contracts/utils/math/Math.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/ZeppelinContract.soldiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/bin/ZeppelinContract.abidiffbeforeafterbothno changes
tests/src/benchmarks/mintFee/openZeppelin/bin/ZeppelinContract.bindiffbeforeafterbothno changes
tests/src/benchmarks/opsFee/index.tsdiffbeforeafterbothno changes
tests/src/benchmarks/utils/common.tsdiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/README.mddiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/access/Ownable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/governance/utils/IVotes.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/interfaces/IERC3156FlashBorrower.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/interfaces/IERC3156FlashLender.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/security/Pausable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/ERC20.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/IERC20.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/Context.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/Counters.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/Strings.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/cryptography/ECDSA.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/cryptography/EIP712.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/math/Math.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/@openzeppelin/contracts/utils/math/SafeCast.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/ZeppelinContract.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/bin/ZeppelinContract.abidiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC20/bin/ZeppelinContract.bindiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/README.mddiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/access/Ownable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/ERC721.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/IERC721.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/IERC721Receiver.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/Address.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/Context.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/Counters.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/Strings.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/introspection/ERC165.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/introspection/IERC165.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/@openzeppelin/contracts/utils/math/Math.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/ZeppelinContract.soldiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/bin/ZeppelinContract.abidiffbeforeafterbothno changes
tests/src/benchmarks/utils/openZeppelin/ERC721/bin/ZeppelinContract.bindiffbeforeafterbothno changes
tests/src/benchmarks/utils/types.tsdiffbeforeafterbothno changes
tests/src/eth/util/playgrounds/unique.dev.tsdiffbeforeafterboth16import {evmToAddress} from '@polkadot/util-crypto';16import {evmToAddress} from '@polkadot/util-crypto';17import {IKeyringPair} from '@polkadot/types/types';17import {IKeyringPair} from '@polkadot/types/types';181819import {DevUniqueHelper} from '../../../util/playgrounds/unique.dev';19import {ArrangeGroup, DevUniqueHelper} from '../../../util/playgrounds/unique.dev';202021import {ContractImports, CompiledContract, CrossAddress, NormalizedEvent, EthProperty} from './types';21import {ContractImports, CompiledContract, CrossAddress, NormalizedEvent, EthProperty} from './types';2222461 }461 }462}462}463463464export class FeeGas {465 fee: number | bigint = 0n;466467 gas: number | bigint = 0n;468469 public static async build(helper: EthUniqueHelper, fee: bigint): Promise<FeeGas> {470 const instance = new FeeGas();471 instance.fee = instance.convertToTokens(fee);472 instance.gas = await instance.convertToGas(fee, helper);473 return instance;474 }475476 private async convertToGas(fee: bigint, helper: EthUniqueHelper): Promise<bigint> {477 const gasPrice = BigInt(await helper.getWeb3().eth.getGasPrice());478 return fee / gasPrice;479 }480481 private convertToTokens(value: bigint, nominal = 1_000_000_000_000_000_000n): number {482 return Number((value * 1000n) / nominal) / 1000;483 }484}485486class EthArrangeGroup extends ArrangeGroup {487 helper: EthUniqueHelper;488489 constructor(helper: EthUniqueHelper) {490 super(helper);491 this.helper = helper;492 }493494 async calculcateFeeGas(payer: ICrossAccountId, promise: () => Promise<any>): Promise<FeeGas> {495 const fee = await this.calculcateFee(payer, promise);496 return await FeeGas.build(this.helper, fee);497 }498}464export class EthUniqueHelper extends DevUniqueHelper {499export class EthUniqueHelper extends DevUniqueHelper {465 web3: Web3 | null = null;500 web3: Web3 | null = null;466 web3Provider: WebsocketProvider | null = null;501 web3Provider: WebsocketProvider | null = null;471 ethNativeContract: NativeContractGroup;506 ethNativeContract: NativeContractGroup;472 ethContract: ContractGroup;507 ethContract: ContractGroup;473 ethProperty: EthPropertyGroup;508 ethProperty: EthPropertyGroup;474509 arrange: EthArrangeGroup;475 constructor(logger: { log: (msg: any, level: any) => void, level: any }, options: {[key: string]: any} = {}) {510 constructor(logger: { log: (msg: any, level: any) => void, level: any }, options: {[key: string]: any} = {}) {476 options.helperBase = options.helperBase ?? EthUniqueHelper;511 options.helperBase = options.helperBase ?? EthUniqueHelper;477512482 this.ethNativeContract = new NativeContractGroup(this);517 this.ethNativeContract = new NativeContractGroup(this);483 this.ethContract = new ContractGroup(this);518 this.ethContract = new ContractGroup(this);484 this.ethProperty = new EthPropertyGroup(this);519 this.ethProperty = new EthPropertyGroup(this);520 this.arrange = new EthArrangeGroup(this);521 super.arrange = this.arrange;485 }522 }486523487 getWeb3(): Web3 {524 getWeb3(): Web3 {tests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth186186187export class DevKaruraHelper extends DevAcalaHelper {}187export class DevKaruraHelper extends DevAcalaHelper {}188188189class ArrangeGroup {189export class ArrangeGroup {190 helper: DevUniqueHelper;190 helper: DevUniqueHelper;191191192 scheduledIdSlider = 0;192 scheduledIdSlider = 0;321 };321 };322322323 async calculcateFee(payer: ICrossAccountId, promise: () => Promise<any>): Promise<bigint> {323 async calculcateFee(payer: ICrossAccountId, promise: () => Promise<any>): Promise<bigint> {324 const address = payer.Substrate ? payer.Substrate : await this.helper.address.ethToSubstrate(payer.Ethereum!);324 const address = payer.Substrate ? payer.Substrate : this.helper.address.ethToSubstrate(payer.Ethereum!);325 let balance = await this.helper.balance.getSubstrate(address);325 let balance = await this.helper.balance.getSubstrate(address);326326327 await promise();327 await promise();