From f3e4b0b807d6a210bedbbc9a0c1d1eb865ede85e Mon Sep 17 00:00:00 2001 From: leovct Date: Tue, 7 Nov 2023 15:02:21 +0100 Subject: [PATCH] chore: update contracts --- .github/workflows/ci.yml | 21 + .gitmodules | 7 + cmd/loadtest/loadtest.go | 60 +- cmd/loadtest/uniswapv3.go | 2 +- cmd/loadtest/uniswapv3/deploy.go | 2 +- cmd/loadtest/uniswapv3/pool.go | 2 +- cmd/loadtest/uniswapv3/swap.go | 2 +- cmd/loadtest/uniswapv3/swapper.go | 2 +- cmd/rpcfuzz/usage.md | 2 +- contracts/.gitignore | 14 + contracts/README.md | 58 + contracts/foundry.toml | 12 + contracts/lib/openzeppelin-contracts | 1 + contracts/loadtester.go | 1819 ----------------- contracts/loadtester/LoadTester.abi | 1 - contracts/loadtester/LoadTester.bin | 1 - contracts/{ => src}/asm/README.md | 0 .../{ => src}/asm/blockhash-gas-loop.easm | 0 .../{ => src}/asm/delegate-call-loop.easm | 0 contracts/{ => src}/asm/deploy-call-loop.easm | 0 contracts/{ => src}/asm/deploy-header.easm | 0 contracts/{ => src}/asm/deploy.easm | 0 contracts/{ => src}/asm/fib-nostore.easm | 0 contracts/{ => src}/asm/fib.easm | 0 contracts/{ => src}/asm/noop-loop.easm | 0 contracts/{ => src}/asm/sstore-loop.easm | 0 contracts/src/loadtester/LoadTester.abi | 1422 +++++++++++++ contracts/src/loadtester/LoadTester.bin | 1 + contracts/{ => src}/loadtester/LoadTester.sol | 0 .../loadtester/helper.go} | 17 +- .../loadtester/loadTester.go} | 2 +- .../loadtester/precompiles.go} | 4 +- contracts/src/tokens/ERC20.abi | 328 +++ contracts/src/tokens/ERC20.bin | 1 + contracts/{ => src}/tokens/ERC20.go | 145 +- contracts/src/tokens/ERC20.sol | 14 + contracts/src/tokens/ERC721.abi | 471 +++++ contracts/src/tokens/ERC721.bin | 1 + contracts/{ => src}/tokens/ERC721.go | 358 ++-- contracts/src/tokens/ERC721.sol | 19 + .../{ => src}/uniswapv3/IUniswapV3Pool.abi | 0 .../{ => src}/uniswapv3/IUniswapV3Pool.go | 0 .../{ => src}/uniswapv3/IUniswapV3Pool.json | 0 .../{ => src}/uniswapv3/NFTDescriptor.abi | 0 .../{ => src}/uniswapv3/NFTDescriptor.bin | 0 .../{ => src}/uniswapv3/NFTDescriptor.go | 0 .../{ => src}/uniswapv3/NFTDescriptor.json | 0 .../uniswapv3/NonfungiblePositionManager.abi | 0 .../uniswapv3/NonfungiblePositionManager.bin | 0 .../uniswapv3/NonfungiblePositionManager.go | 0 .../uniswapv3/NonfungiblePositionManager.json | 0 .../NonfungibleTokenPositionDescriptor.abi | 0 .../NonfungibleTokenPositionDescriptor.bin | 0 .../NonfungibleTokenPositionDescriptor.go | 0 .../NonfungibleTokenPositionDescriptor.json | 0 contracts/{ => src}/uniswapv3/ProxyAdmin.abi | 0 contracts/{ => src}/uniswapv3/ProxyAdmin.bin | 0 contracts/{ => src}/uniswapv3/ProxyAdmin.go | 0 contracts/{ => src}/uniswapv3/ProxyAdmin.json | 0 contracts/{ => src}/uniswapv3/QuoterV2.abi | 0 contracts/{ => src}/uniswapv3/QuoterV2.bin | 0 contracts/{ => src}/uniswapv3/QuoterV2.go | 0 contracts/{ => src}/uniswapv3/QuoterV2.json | 0 contracts/{ => src}/uniswapv3/README.org | 0 .../{ => src}/uniswapv3/SwapRouter02.abi | 0 .../{ => src}/uniswapv3/SwapRouter02.bin | 0 contracts/{ => src}/uniswapv3/SwapRouter02.go | 0 .../{ => src}/uniswapv3/SwapRouter02.json | 0 contracts/{ => src}/uniswapv3/Swapper.abi | 0 contracts/{ => src}/uniswapv3/Swapper.bin | 0 contracts/{ => src}/uniswapv3/Swapper.go | 0 contracts/{ => src}/uniswapv3/Swapper.json | 0 contracts/{ => src}/uniswapv3/Swapper.sol | 0 contracts/{ => src}/uniswapv3/TickLens.abi | 0 contracts/{ => src}/uniswapv3/TickLens.bin | 0 contracts/{ => src}/uniswapv3/TickLens.go | 0 contracts/{ => src}/uniswapv3/TickLens.json | 0 .../uniswapv3/TransparentUpgradeableProxy.abi | 0 .../uniswapv3/TransparentUpgradeableProxy.bin | 0 .../uniswapv3/TransparentUpgradeableProxy.go | 0 .../TransparentUpgradeableProxy.json | 0 .../uniswapv3/UniswapInterfaceMulticall.abi | 0 .../uniswapv3/UniswapInterfaceMulticall.bin | 0 .../uniswapv3/UniswapInterfaceMulticall.go | 0 .../uniswapv3/UniswapInterfaceMulticall.json | 0 .../{ => src}/uniswapv3/UniswapV3Factory.abi | 0 .../{ => src}/uniswapv3/UniswapV3Factory.bin | 0 .../{ => src}/uniswapv3/UniswapV3Factory.go | 0 .../{ => src}/uniswapv3/UniswapV3Factory.json | 0 .../{ => src}/uniswapv3/UniswapV3Staker.abi | 0 .../{ => src}/uniswapv3/UniswapV3Staker.bin | 0 .../{ => src}/uniswapv3/UniswapV3Staker.go | 0 .../{ => src}/uniswapv3/UniswapV3Staker.json | 0 contracts/{ => src}/uniswapv3/V3Migrator.abi | 0 contracts/{ => src}/uniswapv3/V3Migrator.bin | 0 contracts/{ => src}/uniswapv3/V3Migrator.go | 0 contracts/{ => src}/uniswapv3/V3Migrator.json | 0 contracts/{ => src}/uniswapv3/WETH9.abi | 0 contracts/{ => src}/uniswapv3/WETH9.bin | 0 contracts/{ => src}/uniswapv3/WETH9.go | 0 contracts/{ => src}/uniswapv3/WETH9.json | 0 contracts/{ => src/yul}/test.yul | 0 contracts/tokens/ERC20/ERC20.abi | 1 - contracts/tokens/ERC20/ERC20.bin | 1 - contracts/tokens/ERC20/ERC20.sol | 83 - contracts/tokens/ERC20/IERC20.abi | 1 - contracts/tokens/ERC20/IERC20.bin | 0 contracts/tokens/ERC721/ERC721.abi | 1 - contracts/tokens/ERC721/ERC721.bin | 1 - contracts/tokens/ERC721/ERC721.sol | 210 -- contracts/tokens/ERC721/IERC165.abi | 1 - contracts/tokens/ERC721/IERC165.bin | 0 contracts/tokens/ERC721/IERC721.abi | 1 - contracts/tokens/ERC721/IERC721.bin | 0 contracts/tokens/ERC721/IERC721Receiver.abi | 1 - contracts/tokens/ERC721/IERC721Receiver.bin | 0 doc/polycli_rpcfuzz.md | 2 +- 117 files changed, 2676 insertions(+), 2416 deletions(-) create mode 100644 .gitmodules create mode 100644 contracts/.gitignore create mode 100644 contracts/README.md create mode 100644 contracts/foundry.toml create mode 160000 contracts/lib/openzeppelin-contracts delete mode 100644 contracts/loadtester.go delete mode 100644 contracts/loadtester/LoadTester.abi delete mode 100644 contracts/loadtester/LoadTester.bin rename contracts/{ => src}/asm/README.md (100%) rename contracts/{ => src}/asm/blockhash-gas-loop.easm (100%) rename contracts/{ => src}/asm/delegate-call-loop.easm (100%) rename contracts/{ => src}/asm/deploy-call-loop.easm (100%) rename contracts/{ => src}/asm/deploy-header.easm (100%) rename contracts/{ => src}/asm/deploy.easm (100%) rename contracts/{ => src}/asm/fib-nostore.easm (100%) rename contracts/{ => src}/asm/fib.easm (100%) rename contracts/{ => src}/asm/noop-loop.easm (100%) rename contracts/{ => src}/asm/sstore-loop.easm (100%) create mode 100644 contracts/src/loadtester/LoadTester.abi create mode 100644 contracts/src/loadtester/LoadTester.bin rename contracts/{ => src}/loadtester/LoadTester.sol (100%) rename contracts/{contracts.go => src/loadtester/helper.go} (94%) rename contracts/{loadtester/LoadTester.go => src/loadtester/loadTester.go} (81%) rename contracts/{precompiledContracts.go => src/loadtester/precompiles.go} (98%) create mode 100644 contracts/src/tokens/ERC20.abi create mode 100644 contracts/src/tokens/ERC20.bin rename contracts/{ => src}/tokens/ERC20.go (56%) create mode 100644 contracts/src/tokens/ERC20.sol create mode 100644 contracts/src/tokens/ERC721.abi create mode 100644 contracts/src/tokens/ERC721.bin rename contracts/{ => src}/tokens/ERC721.go (51%) create mode 100644 contracts/src/tokens/ERC721.sol rename contracts/{ => src}/uniswapv3/IUniswapV3Pool.abi (100%) rename contracts/{ => src}/uniswapv3/IUniswapV3Pool.go (100%) rename contracts/{ => src}/uniswapv3/IUniswapV3Pool.json (100%) rename contracts/{ => src}/uniswapv3/NFTDescriptor.abi (100%) rename contracts/{ => src}/uniswapv3/NFTDescriptor.bin (100%) rename contracts/{ => src}/uniswapv3/NFTDescriptor.go (100%) rename contracts/{ => src}/uniswapv3/NFTDescriptor.json (100%) rename contracts/{ => src}/uniswapv3/NonfungiblePositionManager.abi (100%) rename contracts/{ => src}/uniswapv3/NonfungiblePositionManager.bin (100%) rename contracts/{ => src}/uniswapv3/NonfungiblePositionManager.go (100%) rename contracts/{ => src}/uniswapv3/NonfungiblePositionManager.json (100%) rename contracts/{ => src}/uniswapv3/NonfungibleTokenPositionDescriptor.abi (100%) rename contracts/{ => src}/uniswapv3/NonfungibleTokenPositionDescriptor.bin (100%) rename contracts/{ => src}/uniswapv3/NonfungibleTokenPositionDescriptor.go (100%) rename contracts/{ => src}/uniswapv3/NonfungibleTokenPositionDescriptor.json (100%) rename contracts/{ => src}/uniswapv3/ProxyAdmin.abi (100%) rename contracts/{ => src}/uniswapv3/ProxyAdmin.bin (100%) rename contracts/{ => src}/uniswapv3/ProxyAdmin.go (100%) rename contracts/{ => src}/uniswapv3/ProxyAdmin.json (100%) rename contracts/{ => src}/uniswapv3/QuoterV2.abi (100%) rename contracts/{ => src}/uniswapv3/QuoterV2.bin (100%) rename contracts/{ => src}/uniswapv3/QuoterV2.go (100%) rename contracts/{ => src}/uniswapv3/QuoterV2.json (100%) rename contracts/{ => src}/uniswapv3/README.org (100%) rename contracts/{ => src}/uniswapv3/SwapRouter02.abi (100%) rename contracts/{ => src}/uniswapv3/SwapRouter02.bin (100%) rename contracts/{ => src}/uniswapv3/SwapRouter02.go (100%) rename contracts/{ => src}/uniswapv3/SwapRouter02.json (100%) rename contracts/{ => src}/uniswapv3/Swapper.abi (100%) rename contracts/{ => src}/uniswapv3/Swapper.bin (100%) rename contracts/{ => src}/uniswapv3/Swapper.go (100%) rename contracts/{ => src}/uniswapv3/Swapper.json (100%) rename contracts/{ => src}/uniswapv3/Swapper.sol (100%) rename contracts/{ => src}/uniswapv3/TickLens.abi (100%) rename contracts/{ => src}/uniswapv3/TickLens.bin (100%) rename contracts/{ => src}/uniswapv3/TickLens.go (100%) rename contracts/{ => src}/uniswapv3/TickLens.json (100%) rename contracts/{ => src}/uniswapv3/TransparentUpgradeableProxy.abi (100%) rename contracts/{ => src}/uniswapv3/TransparentUpgradeableProxy.bin (100%) rename contracts/{ => src}/uniswapv3/TransparentUpgradeableProxy.go (100%) rename contracts/{ => src}/uniswapv3/TransparentUpgradeableProxy.json (100%) rename contracts/{ => src}/uniswapv3/UniswapInterfaceMulticall.abi (100%) rename contracts/{ => src}/uniswapv3/UniswapInterfaceMulticall.bin (100%) rename contracts/{ => src}/uniswapv3/UniswapInterfaceMulticall.go (100%) rename contracts/{ => src}/uniswapv3/UniswapInterfaceMulticall.json (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Factory.abi (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Factory.bin (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Factory.go (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Factory.json (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Staker.abi (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Staker.bin (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Staker.go (100%) rename contracts/{ => src}/uniswapv3/UniswapV3Staker.json (100%) rename contracts/{ => src}/uniswapv3/V3Migrator.abi (100%) rename contracts/{ => src}/uniswapv3/V3Migrator.bin (100%) rename contracts/{ => src}/uniswapv3/V3Migrator.go (100%) rename contracts/{ => src}/uniswapv3/V3Migrator.json (100%) rename contracts/{ => src}/uniswapv3/WETH9.abi (100%) rename contracts/{ => src}/uniswapv3/WETH9.bin (100%) rename contracts/{ => src}/uniswapv3/WETH9.go (100%) rename contracts/{ => src}/uniswapv3/WETH9.json (100%) rename contracts/{ => src/yul}/test.yul (100%) delete mode 100644 contracts/tokens/ERC20/ERC20.abi delete mode 100644 contracts/tokens/ERC20/ERC20.bin delete mode 100644 contracts/tokens/ERC20/ERC20.sol delete mode 100644 contracts/tokens/ERC20/IERC20.abi delete mode 100644 contracts/tokens/ERC20/IERC20.bin delete mode 100644 contracts/tokens/ERC721/ERC721.abi delete mode 100644 contracts/tokens/ERC721/ERC721.bin delete mode 100644 contracts/tokens/ERC721/ERC721.sol delete mode 100644 contracts/tokens/ERC721/IERC165.abi delete mode 100644 contracts/tokens/ERC721/IERC165.bin delete mode 100644 contracts/tokens/ERC721/IERC721.abi delete mode 100644 contracts/tokens/ERC721/IERC721.bin delete mode 100644 contracts/tokens/ERC721/IERC721Receiver.abi delete mode 100644 contracts/tokens/ERC721/IERC721Receiver.bin diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c7aba86..e6a67d95 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,27 @@ jobs: - name: Run all the linter tools against code run: make lint + smart-contracts: + name: Build Smart Contracts + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + - name: Install dependencies + working-directory: contracts + run: forge install + - name: Run forge build + working-directory: contracts + run: | + forge --version + FOUNDRY_PROFILE=lite forge build --contracts ./src/loadtester/LoadTester.sol + forge build --skip LoadTester.sol + doc: name: Doc runs-on: ubuntu-latest diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..bcf917e6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,7 @@ +[submodule "contracts/lib/forge-std"] + path = contracts/lib/forge-std + url = https://github.com/foundry-rs/forge-std + +[submodule "contracts/lib/openzeppelin-contracts"] + path = contracts/lib/openzeppelin-contracts + url = https://github.com/OpenZeppelin/openzeppelin-contracts diff --git a/cmd/loadtest/loadtest.go b/cmd/loadtest/loadtest.go index 0ad9a70c..cdad1bd8 100644 --- a/cmd/loadtest/loadtest.go +++ b/cmd/loadtest/loadtest.go @@ -16,10 +16,9 @@ import ( "time" uniswapv3loadtest "github.com/maticnetwork/polygon-cli/cmd/loadtest/uniswapv3" - "github.com/maticnetwork/polygon-cli/contracts" - "github.com/maticnetwork/polygon-cli/contracts/tokens" + "github.com/maticnetwork/polygon-cli/contracts/src/loadtester" + "github.com/maticnetwork/polygon-cli/contracts/src/tokens" - "github.com/maticnetwork/polygon-cli/metrics" "github.com/maticnetwork/polygon-cli/rpctypes" "github.com/maticnetwork/polygon-cli/util" @@ -472,7 +471,7 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro // deploy and instantiate the load tester contract var ltAddr ethcommon.Address - var ltContract *contracts.LoadTester + var ltContract *loadtester.LoadTester if anyModeRequiresLoadTestContract(ltp.ParsedModes) || *inputLoadTestParams.ForceContractDeploy { ltAddr, ltContract, err = getLoadTestContract(ctx, c, tops, cops) if err != nil { @@ -659,11 +658,11 @@ func mainLoop(ctx context.Context, c *ethclient.Client, rpc *ethrpc.Client) erro return nil } -func getLoadTestContract(ctx context.Context, c *ethclient.Client, tops *bind.TransactOpts, cops *bind.CallOpts) (ltAddr ethcommon.Address, ltContract *contracts.LoadTester, err error) { +func getLoadTestContract(ctx context.Context, c *ethclient.Client, tops *bind.TransactOpts, cops *bind.CallOpts) (ltAddr ethcommon.Address, ltContract *loadtester.LoadTester, err error) { ltAddr = ethcommon.HexToAddress(*inputLoadTestParams.LtAddress) if *inputLoadTestParams.LtAddress == "" { - ltAddr, _, _, err = contracts.DeployLoadTester(tops, c) + ltAddr, _, _, err = loadtester.DeployLoadTester(tops, c) if err != nil { log.Error().Err(err).Msg("Failed to create the load testing contract. Do you have the right chain id? Do you have enough funds?") return @@ -671,7 +670,7 @@ func getLoadTestContract(ctx context.Context, c *ethclient.Client, tops *bind.Tr } log.Trace().Interface("contractaddress", ltAddr).Msg("Load test contract address") - ltContract, err = contracts.NewLoadTester(ltAddr, c) + ltContract, err = loadtester.NewLoadTester(ltAddr, c) if err != nil { log.Error().Err(err).Msg("Unable to instantiate new contract") return @@ -685,15 +684,13 @@ func getLoadTestContract(ctx context.Context, c *ethclient.Client, tops *bind.Tr } func getERC20Contract(ctx context.Context, c *ethclient.Client, tops *bind.TransactOpts, cops *bind.CallOpts) (erc20Addr ethcommon.Address, erc20Contract *tokens.ERC20, err error) { erc20Addr = ethcommon.HexToAddress(*inputLoadTestParams.ERC20Address) - shouldMint := false if *inputLoadTestParams.ERC20Address == "" { - erc20Addr, _, _, err = tokens.DeployERC20(tops, c, "ERC20TestToken", "T20") + erc20Addr, _, _, err = tokens.DeployERC20(tops, c) if err != nil { log.Error().Err(err).Msg("Unable to deploy ERC20 contract") return } - // if we're deploying a new ERC 20 we should mint tokens - shouldMint = true + // Tokens already minted and sent to the address of the deployer. } log.Trace().Interface("contractaddress", erc20Addr).Msg("ERC20 contract address") @@ -703,23 +700,6 @@ func getERC20Contract(ctx context.Context, c *ethclient.Client, tops *bind.Trans return } - err = blockUntilSuccessful(ctx, c, func() error { - _, err = erc20Contract.BalanceOf(cops, *inputLoadTestParams.FromETHAddress) - return err - }) - if err != nil { - return - } - - if !shouldMint { - return - } - _, err = erc20Contract.Mint(tops, metrics.UnitMegaether) - if err != nil { - log.Error().Err(err).Msg("There was an error minting ERC20") - return - } - err = blockUntilSuccessful(ctx, c, func() error { var balance *big.Int balance, err = erc20Contract.BalanceOf(cops, *inputLoadTestParams.FromETHAddress) @@ -923,10 +903,10 @@ func loadTestDeploy(ctx context.Context, c *ethclient.Client, nonce uint64) (t1 defer func() { t2 = time.Now() }() if *ltp.CallOnly { msg := transactOptsToCallMsg(tops) - msg.Data = ethcommon.FromHex(contracts.LoadTesterMetaData.Bin) + msg.Data = ethcommon.FromHex(loadtester.LoadTesterMetaData.Bin) _, err = c.CallContract(ctx, msg, nil) } else { - _, _, _, err = contracts.DeployLoadTester(tops, c) + _, _, _, err = loadtester.DeployLoadTester(tops, c) } return } @@ -939,9 +919,9 @@ func getCurrentLoadTestFunction() uint64 { if loadTestModeFunction == inputLoadTestParams.Mode { return *inputLoadTestParams.Function } - return contracts.GetRandomOPCode() + return loadtester.GetRandomOPCode() } -func loadTestFunction(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { +func loadTestFunction(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *loadtester.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams chainID := new(big.Int).SetUint64(*ltp.ChainID) @@ -962,19 +942,19 @@ func loadTestFunction(ctx context.Context, c *ethclient.Client, nonce uint64, lt if *ltp.CallOnly { tops.NoSend = true var tx *ethtypes.Transaction - tx, err = contracts.CallLoadTestFunctionByOpCode(f, ltContract, tops, *iterations) + tx, err = loadtester.CallLoadTestFunctionByOpCode(f, ltContract, tops, *iterations) if err != nil { return } msg := txToCallMsg(tx) _, err = c.CallContract(ctx, msg, nil) } else { - _, err = contracts.CallLoadTestFunctionByOpCode(f, ltContract, tops, *iterations) + _, err = loadtester.CallLoadTestFunctionByOpCode(f, ltContract, tops, *iterations) } return } -func loadTestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester, useSelectedAddress bool) (t1 time.Time, t2 time.Time, err error) { +func loadTestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *loadtester.LoadTester, useSelectedAddress bool) (t1 time.Time, t2 time.Time, err error) { var f int ltp := inputLoadTestParams @@ -984,7 +964,7 @@ func loadTestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, if useSelectedAddress { f = int(*ltp.Function) } else { - f = contracts.GetRandomPrecompiledContractAddress() + f = loadtester.GetRandomPrecompiledContractAddress() } tops, err := bind.NewKeyedTransactorWithChainID(privateKey, chainID) @@ -1000,19 +980,19 @@ func loadTestCallPrecompiledContracts(ctx context.Context, c *ethclient.Client, if *ltp.CallOnly { tops.NoSend = true var tx *ethtypes.Transaction - tx, err = contracts.CallPrecompiledContracts(f, ltContract, tops, *iterations, privateKey) + tx, err = loadtester.CallPrecompiledContracts(f, ltContract, tops, *iterations, privateKey) if err != nil { return } msg := txToCallMsg(tx) _, err = c.CallContract(ctx, msg, nil) } else { - _, err = contracts.CallPrecompiledContracts(f, ltContract, tops, *iterations, privateKey) + _, err = loadtester.CallPrecompiledContracts(f, ltContract, tops, *iterations, privateKey) } return } -func loadTestInc(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { +func loadTestInc(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *loadtester.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams chainID := new(big.Int).SetUint64(*ltp.ChainID) @@ -1043,7 +1023,7 @@ func loadTestInc(ctx context.Context, c *ethclient.Client, nonce uint64, ltContr return } -func loadTestStore(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *contracts.LoadTester) (t1 time.Time, t2 time.Time, err error) { +func loadTestStore(ctx context.Context, c *ethclient.Client, nonce uint64, ltContract *loadtester.LoadTester) (t1 time.Time, t2 time.Time, err error) { ltp := inputLoadTestParams chainID := new(big.Int).SetUint64(*ltp.ChainID) diff --git a/cmd/loadtest/uniswapv3.go b/cmd/loadtest/uniswapv3.go index 044e345c..fb035cce 100644 --- a/cmd/loadtest/uniswapv3.go +++ b/cmd/loadtest/uniswapv3.go @@ -14,7 +14,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/ethclient" uniswapv3loadtest "github.com/maticnetwork/polygon-cli/cmd/loadtest/uniswapv3" - "github.com/maticnetwork/polygon-cli/contracts/uniswapv3" + "github.com/maticnetwork/polygon-cli/contracts/src/uniswapv3" "github.com/rs/zerolog/log" ) diff --git a/cmd/loadtest/uniswapv3/deploy.go b/cmd/loadtest/uniswapv3/deploy.go index 5c950cf1..1d317b5e 100644 --- a/cmd/loadtest/uniswapv3/deploy.go +++ b/cmd/loadtest/uniswapv3/deploy.go @@ -11,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethclient" - "github.com/maticnetwork/polygon-cli/contracts/uniswapv3" + "github.com/maticnetwork/polygon-cli/contracts/src/uniswapv3" "github.com/rs/zerolog/log" ) diff --git a/cmd/loadtest/uniswapv3/pool.go b/cmd/loadtest/uniswapv3/pool.go index e34fcc8c..659dbb4b 100644 --- a/cmd/loadtest/uniswapv3/pool.go +++ b/cmd/loadtest/uniswapv3/pool.go @@ -10,7 +10,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethclient" - "github.com/maticnetwork/polygon-cli/contracts/uniswapv3" + "github.com/maticnetwork/polygon-cli/contracts/src/uniswapv3" "github.com/rs/zerolog/log" ) diff --git a/cmd/loadtest/uniswapv3/swap.go b/cmd/loadtest/uniswapv3/swap.go index 15300c3a..d24472dd 100644 --- a/cmd/loadtest/uniswapv3/swap.go +++ b/cmd/loadtest/uniswapv3/swap.go @@ -5,7 +5,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - "github.com/maticnetwork/polygon-cli/contracts/uniswapv3" + "github.com/maticnetwork/polygon-cli/contracts/src/uniswapv3" "github.com/rs/zerolog/log" ) diff --git a/cmd/loadtest/uniswapv3/swapper.go b/cmd/loadtest/uniswapv3/swapper.go index 0200073c..b7fa3b69 100644 --- a/cmd/loadtest/uniswapv3/swapper.go +++ b/cmd/loadtest/uniswapv3/swapper.go @@ -10,7 +10,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/ethclient" - "github.com/maticnetwork/polygon-cli/contracts/uniswapv3" + "github.com/maticnetwork/polygon-cli/contracts/src/uniswapv3" "github.com/rs/zerolog/log" ) diff --git a/cmd/rpcfuzz/usage.md b/cmd/rpcfuzz/usage.md index 4f118147..4409bf22 100644 --- a/cmd/rpcfuzz/usage.md +++ b/cmd/rpcfuzz/usage.md @@ -63,7 +63,7 @@ $ cast send \ --rpc-url localhost:8545 \ --json \ --create \ - "$(cat ./contracts/tokens/ERC20/ERC20.bin)" | jq + "$(cat ./contracts/src/tokens/ERC20.bin)" | jq ``` Once this has been completed this will be the address of the contract: `0x6fda56c57b0acadb96ed5624ac500c0429d59429`. diff --git a/contracts/.gitignore b/contracts/.gitignore new file mode 100644 index 00000000..85198aaa --- /dev/null +++ b/contracts/.gitignore @@ -0,0 +1,14 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env diff --git a/contracts/README.md b/contracts/README.md new file mode 100644 index 00000000..b24671c3 --- /dev/null +++ b/contracts/README.md @@ -0,0 +1,58 @@ +# Contracts + +Smart contracts used to perform different types of tests: + +- `LoadTester` to call various opcodes, precompiles, and store random data. +- `Tokens` to perform ERC20 transfers or ERC721 mints for example. +- `UniswapV3` to deploy the full UniswapV3 contract suite and perform some swaps. +- Other: `asm` and `yul`, contracts written in other languages than Solidity. + +## LoadTester + +Generate go bindings for the `LoadTester` contract. + +```sh +$ FOUNDRY_PROFILE=lite forge build --contracts ./src/loadtester/LoadTester.sol \ + && cat ./out/LoadTester.sol/LoadTester.json| jq -r '.abi' > ./src/loadtester/LoadTester.abi \ + && cat ./out/LoadTester.sol/LoadTester.json| jq -r '.bytecode.object' > ./src/loadtester/LoadTester.bin \ + && abigen \ + --abi ./src/loadtester/LoadTester.abi \ + --bin ./src/loadtester/LoadTester.bin \ + --pkg loadtester \ + --type loadTester \ + --out ./src/loadtester/loadTester.go +``` + +## Tokens + +Generate go bindings for the `ERC20` contract. + +```sh +$ forge build --contracts ./src/tokens/ERC20.sol \ + && cat ./out/ERC20.sol/ERC20.json| jq -r '.abi' > ./src/tokens/ERC20.abi \ + && cat ./out/ERC20.sol/ERC20.json| jq -r '.bytecode.object' > ./src/tokens/ERC20.bin \ + && abigen \ + --abi ./src/tokens/ERC20.abi \ + --bin ./src/tokens/ERC20.bin \ + --pkg tokens \ + --type ERC20 \ + --out ./src/tokens/ERC20.go +``` + +Generate go bindings for the `ERC721` contract. + +```sh +$ forge build --contracts ./src/tokens/ERC721.sol \ + && cat ./out/ERC721.sol/ERC721.json| jq -r '.abi' > ./src/tokens/ERC721.abi \ + && cat ./out/ERC721.sol/ERC721.json| jq -r '.bytecode.object' > ./src/tokens/ERC721.bin \ + && abigen \ + --abi ./src/tokens/ERC721.abi \ + --bin ./src/tokens/ERC721.bin \ + --pkg tokens \ + --type ERC721 \ + --out ./src/tokens/ERC721.go +``` + +## UniswapV3 + +The UniswapV3 go bindings have been generated in a certain way. Check `uniswapv3/README.org` for more details. diff --git a/contracts/foundry.toml b/contracts/foundry.toml new file mode 100644 index 00000000..80053b72 --- /dev/null +++ b/contracts/foundry.toml @@ -0,0 +1,12 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] +remappings = [ + '@openzeppelin/=lib/openzeppelin-contracts/contracts', +] + +# Lite profile with Yul optimizer disabled. +[profile.lite.optimizer_details] +yul = false +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/contracts/lib/openzeppelin-contracts b/contracts/lib/openzeppelin-contracts new file mode 160000 index 00000000..932fddf6 --- /dev/null +++ b/contracts/lib/openzeppelin-contracts @@ -0,0 +1 @@ +Subproject commit 932fddf69a699a9a80fd2396fd1a2ab91cdda123 diff --git a/contracts/loadtester.go b/contracts/loadtester.go deleted file mode 100644 index f1bb37ad..00000000 --- a/contracts/loadtester.go +++ /dev/null @@ -1,1819 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package contracts - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// LoadTesterMetaData contains all meta data concerning the LoadTester contract. -var LoadTesterMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testBlake2f\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECAdd\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECMul\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECPairing\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testModExp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50612ef4806100206000396000f3fe608060405234801561001057600080fd5b50600436106104545760003560e01c806380947f8011610241578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca8114611161578063f4d1fc6114611191578063f58fc36a146111c1578063f6b0bbf7146111f1578063fde7721c1461122157610454565b8063dd9bef6014611071578063de97a363146110a1578063e9f9b3f2146110d1578063ea5141e614611101578063edf003cf1461113157610454565b8063ce3cf4ef1161010a578063ce3cf4ef14610f81578063d117320b14610fb1578063d51e7b5b14610fe1578063d53ff3fd14611011578063d93cd5581461104157610454565b8063bf529ca114610ec1578063c360aba614610ef1578063c420eb6114610f21578063c4bd65d514610f5157610454565b8063a18683cb116101c9578063b374012b1161018d578063b374012b14610dd1578063b3d847f214610e01578063b7b8620714610e31578063b81c148414610e61578063bdc875fc14610e9157610454565b8063a18683cb14610cf3578063a271b72114610d23578063a60a108714610d41578063a645c9c214610d71578063acaebdf614610da157610454565b8063962e4dc211610210578063962e4dc214610c0357806398456f3e14610c335780639a2b7c8114610c635780639cce7cf914610c93578063a040aec614610cc357610454565b806380947f8014610b43578063880eff3914610b73578063918a5fcd14610ba357806391e7b27714610bd357610454565b80633430ec061161035257806360e13cde116102da5780636f099c8d1161029e5780636f099c8d14610a5357806371d91d2814610a835780637b6e0b0e14610ab35780637c191d2014610ae35780637de8c6f814610b1357610454565b806360e13cde14610975578063613d0a82146109a557806363138d4f146109d5578063659bbb4f14610a055780636e7f1fe714610a2357610454565b806340fe26621161032157806340fe26621461088557806344cf3bc7146108b55780634a61af1f146108e55780634d2c74b3146109155780635590c2d91461094557610454565b80633430ec06146107d7578063371303c0146108075780633a411f12146108255780633a425dfc1461085557610454565b806318093b46116103e0578063219cddeb116103a4578063219cddeb146106e75780632294fc7f146107175780632871ef85146107475780632b21ef44146107775780632d34e798146107a757610454565b806318093b46146105f757806319b621d6146106275780631aba07ea146106575780631de2f343146106875780632007332e146106b757610454565b80630ba8a73b116104275780630ba8a73b146105195780631287a68c14610549578063135d52f7146105675780631581cf191461059757806316582150146105c757610454565b8063034aef7114610459578063050082f814610489578063087b4e84146104b95780630b3b996a146104e9575b600080fd5b610473600480360381019061046e9190612611565b611251565b604051610480919061264d565b60405180910390f35b6104a3600480360381019061049e9190612611565b61128c565b6040516104b0919061264d565b60405180910390f35b6104d360048036038101906104ce9190612611565b6112c7565b6040516104e0919061264d565b60405180910390f35b61050360048036038101906104fe91906127ae565b611301565b6040516105109190612876565b60405180910390f35b610533600480360381019061052e9190612611565b611328565b604051610540919061264d565b60405180910390f35b610551611364565b60405161055e919061264d565b60405180910390f35b610581600480360381019061057c9190612611565b61136d565b60405161058e919061264d565b60405180910390f35b6105b160048036038101906105ac9190612611565b6113a9565b6040516105be919061264d565b60405180910390f35b6105e160048036038101906105dc9190612611565b6113e4565b6040516105ee919061264d565b60405180910390f35b610611600480360381019061060c9190612611565b61143f565b60405161061e919061264d565b60405180910390f35b610641600480360381019061063c9190612611565b61147d565b60405161064e919061264d565b60405180910390f35b610671600480360381019061066c9190612611565b61150c565b60405161067e919061264d565b60405180910390f35b6106a1600480360381019061069c9190612611565b611552565b6040516106ae919061264d565b60405180910390f35b6106d160048036038101906106cc9190612611565b611590565b6040516106de919061264d565b60405180910390f35b61070160048036038101906106fc9190612611565b6115cc565b60405161070e919061264d565b60405180910390f35b610731600480360381019061072c9190612611565b611607565b60405161073e919061264d565b60405180910390f35b610761600480360381019061075c9190612611565b611646565b60405161076e919061264d565b60405180910390f35b610791600480360381019061078c9190612611565b611681565b60405161079e919061264d565b60405180910390f35b6107c160048036038101906107bc9190612611565b6116bc565b6040516107ce919061264d565b60405180910390f35b6107f160048036038101906107ec9190612611565b6116f7565b6040516107fe9190612876565b60405180910390f35b61080f6117a3565b60405161081c919061264d565b60405180910390f35b61083f600480360381019061083a9190612611565b6117c2565b60405161084c919061264d565b60405180910390f35b61086f600480360381019061086a9190612611565b6117fe565b60405161087c919061264d565b60405180910390f35b61089f600480360381019061089a9190612611565b61183a565b6040516108ac919061264d565b60405180910390f35b6108cf60048036038101906108ca9190612611565b611879565b6040516108dc919061264d565b60405180910390f35b6108ff60048036038101906108fa9190612611565b6118b4565b60405161090c919061264d565b60405180910390f35b61092f600480360381019061092a9190612611565b6118f2565b60405161093c919061264d565b60405180910390f35b61095f600480360381019061095a9190612611565b61192d565b60405161096c919061264d565b60405180910390f35b61098f600480360381019061098a9190612611565b611972565b60405161099c919061264d565b60405180910390f35b6109bf60048036038101906109ba91906127ae565b6119ae565b6040516109cc9190612876565b60405180910390f35b6109ef60048036038101906109ea91906127ae565b6119e0565b6040516109fc91906128b1565b60405180910390f35b610a0d611a0c565b604051610a1a919061264d565b60405180910390f35b610a3d6004803603810190610a389190612611565b611a48565b604051610a4a919061264d565b60405180910390f35b610a6d6004803603810190610a689190612611565b611a86565b604051610a7a919061264d565b60405180910390f35b610a9d6004803603810190610a989190612611565b611ac1565b604051610aaa919061264d565b60405180910390f35b610acd6004803603810190610ac89190612611565b611aff565b604051610ada919061264d565b60405180910390f35b610afd6004803603810190610af89190612611565b611b3b565b604051610b0a919061264d565b60405180910390f35b610b2d6004803603810190610b289190612611565b611b76565b604051610b3a919061264d565b60405180910390f35b610b5d6004803603810190610b589190612611565b611bb2565b604051610b6a919061264d565b60405180910390f35b610b8d6004803603810190610b889190612611565b611c0f565b604051610b9a919061264d565b60405180910390f35b610bbd6004803603810190610bb89190612611565b611c4e565b604051610bca919061264d565b60405180910390f35b610bed6004803603810190610be89190612611565b611c89565b604051610bfa919061264d565b60405180910390f35b610c1d6004803603810190610c1891906127ae565b611cd5565b604051610c2a9190612876565b60405180910390f35b610c4d6004803603810190610c489190612611565b611d43565b604051610c5a919061264d565b60405180910390f35b610c7d6004803603810190610c789190612611565b611d83565b604051610c8a919061264d565b60405180910390f35b610cad6004803603810190610ca891906127ae565b611dbe565b604051610cba9190612876565b60405180910390f35b610cdd6004803603810190610cd891906127ae565b611def565b604051610cea9190612876565b60405180910390f35b610d0d6004803603810190610d0891906127ae565b611e16565b604051610d1a919061290d565b60405180910390f35b610d2b611e98565b604051610d38919061264d565b60405180910390f35b610d5b6004803603810190610d569190612611565b611ee3565b604051610d68919061264d565b60405180910390f35b610d8b6004803603810190610d869190612611565b611f1e565b604051610d98919061264d565b60405180910390f35b610dbb6004803603810190610db69190612611565b611f5a565b604051610dc8919061264d565b60405180910390f35b610deb6004803603810190610de69190612988565b611f96565b604051610df8919061264d565b60405180910390f35b610e1b6004803603810190610e169190612611565b611fe4565b604051610e28919061264d565b60405180910390f35b610e4b6004803603810190610e469190612611565b61201f565b604051610e58919061264d565b60405180910390f35b610e7b6004803603810190610e769190612611565b61205a565b604051610e88919061264d565b60405180910390f35b610eab6004803603810190610ea69190612611565b612095565b604051610eb8919061264d565b60405180910390f35b610edb6004803603810190610ed69190612611565b6120d0565b604051610ee8919061264d565b60405180910390f35b610f0b6004803603810190610f069190612611565b612114565b604051610f18919061264d565b60405180910390f35b610f3b6004803603810190610f369190612611565b612150565b604051610f48919061264d565b60405180910390f35b610f6b6004803603810190610f669190612611565b61218b565b604051610f78919061264d565b60405180910390f35b610f9b6004803603810190610f969190612611565b6121c9565b604051610fa8919061264d565b60405180910390f35b610fcb6004803603810190610fc69190612611565b612206565b604051610fd8919061264d565b60405180910390f35b610ffb6004803603810190610ff69190612611565b612240565b604051611008919061264d565b60405180910390f35b61102b60048036038101906110269190612611565b61227c565b604051611038919061264d565b60405180910390f35b61105b60048036038101906110569190612611565b6122b8565b604051611068919061264d565b60405180910390f35b61108b60048036038101906110869190612611565b612313565b604051611098919061264d565b60405180910390f35b6110bb60048036038101906110b69190612611565b612355565b6040516110c8919061264d565b60405180910390f35b6110eb60048036038101906110e69190612611565b612391565b6040516110f8919061264d565b60405180910390f35b61111b60048036038101906111169190612611565b6123ce565b604051611128919061264d565b60405180910390f35b61114b600480360381019061114691906127ae565b612410565b6040516111589190612876565b60405180910390f35b61117b60048036038101906111769190612611565b61247f565b604051611188919061264d565b60405180910390f35b6111ab60048036038101906111a69190612611565b6124bb565b6040516111b8919061264d565b60405180910390f35b6111db60048036038101906111d69190612611565b6124f9565b6040516111e8919061264d565b60405180910390f35b61120b600480360381019061120691906127ae565b612538565b6040516112189190612a10565b60405180910390f35b61123b60048036038101906112369190612611565b61256a565b604051611248919061264d565b60405180910390f35b600061125b6117a3565b50600065deadbeef003690506000805b848110156112815736915060018101905061126b565b505080915050919050565b60006112966117a3565b50600065deadbeef003290506000805b848110156112bc573291506001810190506112a6565b505080915050919050565b60006112d16117a3565b50600065deadbeef0052905060005b838110156112f757816000526001810190506112e0565b5080915050919050565b60606000600890506040828451602086016000855af18061132157600080fd5b5050919050565b60006113326117a3565b50600065deadbeef0001905060005b8381101561135a57600082019150600181019050611341565b5080915050919050565b60008054905090565b60006113776117a3565b50600065deadbeef0017905060005b8381101561139f57600082179150600181019050611386565b5080915050919050565b60006113b36117a3565b50600065deadbeef003490506000805b848110156113d9573491506001810190506113c3565b505080915050919050565b60006113ee6117a3565b50600065deadbeef0006905060005b83811015611435577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506113fd565b5080915050919050565b60006114496117a3565b50600065deadbeef001390506000805b8481101561147257600183139150600181019050611459565b505080915050919050565b60006114876117a3565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156114d557600460002091506001810190506114bb565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461150257600091505b5080915050919050565b60006115166117a3565b50600065deadbeef00a490508060105260005b83811015611548576004600360028360066010a4600181019050611529565b5080915050919050565b600061155c6117a3565b50600065deadbeef001a90506000805b84811015611585578260001a915060018101905061156c565b505080915050919050565b600061159a6117a3565b50600065deadbeef001b905060005b838110156115c2578160001b91506001810190506115a9565b5080915050919050565b60006115d66117a3565b50600065deadbeef004290506000805b848110156115fc574291506001810190506115e6565b505080915050919050565b60006116116117a3565b50600065deadbeef0031905060003060005b8581101561163a5781319250600181019050611623565b50505080915050919050565b60006116506117a3565b50600065deadbeef004890506000805b8481101561167657489150600181019050611660565b505080915050919050565b600061168b6117a3565b50600065deadbeef003d90506000805b848110156116b1573d915060018101905061169b565b505080915050919050565b60006116c66117a3565b50600065deadbeef004390506000805b848110156116ec574391506001810190506116d6565b505080915050919050565b6002818154811061170757600080fd5b90600052602060002001600091509050805461172290612a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461174e90612a5a565b801561179b5780601f106117705761010080835404028352916020019161179b565b820191906000526020600020905b81548152906001019060200180831161177e57829003601f168201915b505050505081565b600060016000546117b49190612aba565b600081905550600054905090565b60006117cc6117a3565b50600065deadbeef0004905060005b838110156117f4576001820491506001810190506117db565b5080915050919050565b60006118086117a3565b50600065deadbeef0037905060005b8381101561183057602060008037600181019050611817565b5080915050919050565b60006118446117a3565b50600065deadbeef00a090508060105260005b8381101561186f5760066010a0600181019050611857565b5080915050919050565b60006118836117a3565b50600065deadbeef003390506000805b848110156118a957339150600181019050611893565b505080915050919050565b60006118be6117a3565b50600065deadbeef0053905060005b838110156118e85763deadbeef6000526001810190506118cd565b5080915050919050565b60006118fc6117a3565b50600065deadbeef003a90506000805b84811015611922573a915060018101905061190c565b505080915050919050565b60006119376117a3565b50600065deadbeef0051905060008160005260005b8481101561196457600051915060018101905061194c565b508091505080915050919050565b600061197c6117a3565b50600065deadbeef001d905060005b838110156119a4578160001d915060018101905061198b565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806119d357600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af180611a0257600080fd5b5050505050919050565b6000611a166117a3565b505b6103e85a1115611a40576001806000828254611a349190612aba565b92505081905550611a18565b600154905090565b6000611a526117a3565b50600065deadbeef001090506000805b84811015611a7b57826001109150600181019050611a62565b505080915050919050565b6000611a906117a3565b50600065deadbeef004490506000805b84811015611ab657449150600181019050611aa0565b505080915050919050565b6000611acb6117a3565b50600065deadbeef001190506000805b84811015611af457600183119150600181019050611adb565b505080915050919050565b6000611b096117a3565b50600065deadbeef003e905060005b83811015611b315760206000803e600181019050611b18565b5080915050919050565b6000611b456117a3565b50600065deadbeef004590506000805b84811015611b6b57459150600181019050611b55565b505080915050919050565b6000611b806117a3565b50600065deadbeef0002905060005b83811015611ba857600182029150600181019050611b8f565b5080915050919050565b6000611bbc6117a3565b50600065deadbeef0008905060005b83811015611c05577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611bcb565b5080915050919050565b6000611c196117a3565b50600065deadbeef005490508060005560005b83811015611c44576000549150600181019050611c2c565b5080915050919050565b6000611c586117a3565b50600065deadbeef005a90506000805b84811015611c7e575a9150600181019050611c68565b505080915050919050565b6000611c936117a3565b50600065deadbeef0019905060005b83811015611cb95781199150600181019050611ca2565b5065deadbeef00198114611ccc57801990505b80915050919050565b606080825114611d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1190612b4b565b60405180910390fd5b60006007905060208301835160408482846000875af180611d3a57600080fd5b50505050919050565b6000611d4d6117a3565b50600065deadbeef00a190508060105260005b83811015611d79578060066010a1600181019050611d60565b5080915050919050565b6000611d8d6117a3565b50600065deadbeef0016905060005b83811015611db4578182169150600181019050611d9c565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611de257600080fd5b8195505050505050919050565b60606000600890506040828451602086016000855af180611e0f57600080fd5b5050919050565b60006080825114611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390612bb7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611e8a57600080fd5b604051519350505050919050565b6000611ea26117a3565b505b6103e85a1115611edb576001806000828254611ec09190612aba565b9250508190555043600154611ed59190612c06565b50611ea4565b600154905090565b6000611eed6117a3565b50600065deadbeef004690506000805b84811015611f1357469150600181019050611efd565b505080915050919050565b6000611f286117a3565b50600065deadbeef0005905060005b83811015611f5057600182059150600181019050611f37565b5080915050919050565b6000611f646117a3565b50600065deadbeef0039905060005b83811015611f8c57602060008039600181019050611f73565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611fd5929190612dee565b50600280549050905092915050565b6000611fee6117a3565b50600065deadbeef005990506000805b8481101561201457599150600181019050611ffe565b505080915050919050565b60006120296117a3565b50600065deadbeef003890506000805b8481101561204f57389150600181019050612039565b505080915050919050565b60006120646117a3565b50600065deadbeef004190506000805b8481101561208a57419150600181019050612074565b505080915050919050565b600061209f6117a3565b50600065deadbeef003090506000805b848110156120c5573091506001810190506120af565b505080915050919050565b60006120da6117a3565b50600065deadbeef00a390508060105260005b8381101561210a57600360028260066010a36001810190506120ed565b5080915050919050565b600061211e6117a3565b50600065deadbeef000b905060005b83811015612146578160200b915060018101905061212d565b5080915050919050565b600061215a6117a3565b50600065deadbeef004790506000805b848110156121805747915060018101905061216a565b505080915050919050565b60006121956117a3565b50600065deadbeef001c90506000805b848110156121be578260001c92506001810190506121a5565b505080915050919050565b60006121d36117a3565b50600065deadbeef003590506000805b848110156121fb5760003591506001810190506121e3565b505080915050919050565b60006122106117a3565b50600065deadbeef0055905060005b83811015612236578160005560018101905061221f565b5080915050919050565b600061224a6117a3565b50600065deadbeef0018905060005b8381101561227257600082189150600181019050612259565b5080915050919050565b60006122866117a3565b50600065deadbeef0003905060005b838110156122ae57600082039150600181019050612295565b5080915050919050565b60006122c26117a3565b50600065deadbeef0007905060005b83811015612309577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506122d1565b5080915050919050565b600061231d6117a3565b50600065deadbeef00a290508060105260005b8381101561234b5760028160066010a2600181019050612330565b5080915050919050565b600061235f6117a3565b50600065deadbeef000a905060005b83811015612387576001820a915060018101905061236e565b5080915050919050565b600061239b6117a3565b50600065deadbeef001490506000805b848110156123c35782831491506001810190506123ab565b505080915050919050565b60006123d86117a3565b50600065deadbeef0040905060006001430360005b8581101561240457814092506001810190506123ed565b50505080915050919050565b60606080825114612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d90612b4b565b60405180910390fd5b60006006905060208301835160408482846000875af18061247657600080fd5b50505050919050565b60006124896117a3565b50600065deadbeef001590506000805b848110156124b05782159150600181019050612499565b505080915050919050565b60006124c56117a3565b50600065deadbeef001290506000805b848110156124ee578260011291506001810190506124d5565b505080915050919050565b60006125036117a3565b50600065deadbeef003b905060003060005b8581101561252c57813b9250600181019050612515565b50505080915050919050565b6000806003905060208301835160405160148183856000885af18061255c57600080fd5b815195505050505050919050565b60006125746117a3565b50600065deadbeef0009905060005b838110156125bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612583565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6125ee816125db565b81146125f957600080fd5b50565b60008135905061260b816125e5565b92915050565b600060208284031215612627576126266125d1565b5b6000612635848285016125fc565b91505092915050565b612647816125db565b82525050565b6000602082019050612662600083018461263e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126bb82612672565b810181811067ffffffffffffffff821117156126da576126d9612683565b5b80604052505050565b60006126ed6125c7565b90506126f982826126b2565b919050565b600067ffffffffffffffff82111561271957612718612683565b5b61272282612672565b9050602081019050919050565b82818337600083830152505050565b600061275161274c846126fe565b6126e3565b90508281526020810184848401111561276d5761276c61266d565b5b61277884828561272f565b509392505050565b600082601f83011261279557612794612668565b5b81356127a584826020860161273e565b91505092915050565b6000602082840312156127c4576127c36125d1565b5b600082013567ffffffffffffffff8111156127e2576127e16125d6565b5b6127ee84828501612780565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612831578082015181840152602081019050612816565b60008484015250505050565b6000612848826127f7565b6128528185612802565b9350612862818560208601612813565b61286b81612672565b840191505092915050565b60006020820190508181036000830152612890818461283d565b905092915050565b6000819050919050565b6128ab81612898565b82525050565b60006020820190506128c660008301846128a2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128f7826128cc565b9050919050565b612907816128ec565b82525050565b600060208201905061292260008301846128fe565b92915050565b600080fd5b600080fd5b60008083601f84011261294857612947612668565b5b8235905067ffffffffffffffff81111561296557612964612928565b5b6020830191508360018202830111156129815761298061292d565b5b9250929050565b6000806020838503121561299f5761299e6125d1565b5b600083013567ffffffffffffffff8111156129bd576129bc6125d6565b5b6129c985828601612932565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b612a0a816129d5565b82525050565b6000602082019050612a256000830184612a01565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a7257607f821691505b602082108103612a8557612a84612a2b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ac5826125db565b9150612ad0836125db565b9250828201905080821115612ae857612ae7612a8b565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612b35601483612aee565b9150612b4082612aff565b602082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612ba1601a83612aee565b9150612bac82612b6b565b602082019050919050565b60006020820190508181036000830152612bd081612b94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c11826125db565b9150612c1c836125db565b925082612c2c57612c2b612bd7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ca47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c67565b612cae8683612c67565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612ceb612ce6612ce1846125db565b612cc6565b6125db565b9050919050565b6000819050919050565b612d0583612cd0565b612d19612d1182612cf2565b848454612c74565b825550505050565b600090565b612d2e612d21565b612d39818484612cfc565b505050565b5b81811015612d5d57612d52600082612d26565b600181019050612d3f565b5050565b601f821115612da257612d7381612c42565b612d7c84612c57565b81016020851015612d8b578190505b612d9f612d9785612c57565b830182612d3e565b50505b505050565b600082821c905092915050565b6000612dc560001984600802612da7565b1980831691505092915050565b6000612dde8383612db4565b9150826002028217905092915050565b612df88383612c37565b67ffffffffffffffff811115612e1157612e10612683565b5b612e1b8254612a5a565b612e26828285612d61565b6000601f831160018114612e555760008415612e43578287013590505b612e4d8582612dd2565b865550612eb5565b601f198416612e6386612c42565b60005b82811015612e8b57848901358255600182019150602085019450602081019050612e66565b86831015612ea85784890135612ea4601f891682612db4565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212208612dc3a454553c8629c7050845d284621be46a91a361388814c0ca053f9dca464736f6c63430008150033", -} - -// LoadTesterABI is the input ABI used to generate the binding from. -// Deprecated: Use LoadTesterMetaData.ABI instead. -var LoadTesterABI = LoadTesterMetaData.ABI - -// LoadTesterBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use LoadTesterMetaData.Bin instead. -var LoadTesterBin = LoadTesterMetaData.Bin - -// DeployLoadTester deploys a new Ethereum contract, binding an instance of LoadTester to it. -func DeployLoadTester(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *LoadTester, error) { - parsed, err := LoadTesterMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(LoadTesterBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &LoadTester{LoadTesterCaller: LoadTesterCaller{contract: contract}, LoadTesterTransactor: LoadTesterTransactor{contract: contract}, LoadTesterFilterer: LoadTesterFilterer{contract: contract}}, nil -} - -// LoadTester is an auto generated Go binding around an Ethereum contract. -type LoadTester struct { - LoadTesterCaller // Read-only binding to the contract - LoadTesterTransactor // Write-only binding to the contract - LoadTesterFilterer // Log filterer for contract events -} - -// LoadTesterCaller is an auto generated read-only Go binding around an Ethereum contract. -type LoadTesterCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// LoadTesterTransactor is an auto generated write-only Go binding around an Ethereum contract. -type LoadTesterTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// LoadTesterFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type LoadTesterFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// LoadTesterSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type LoadTesterSession struct { - Contract *LoadTester // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// LoadTesterCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type LoadTesterCallerSession struct { - Contract *LoadTesterCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// LoadTesterTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type LoadTesterTransactorSession struct { - Contract *LoadTesterTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// LoadTesterRaw is an auto generated low-level Go binding around an Ethereum contract. -type LoadTesterRaw struct { - Contract *LoadTester // Generic contract binding to access the raw methods on -} - -// LoadTesterCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type LoadTesterCallerRaw struct { - Contract *LoadTesterCaller // Generic read-only contract binding to access the raw methods on -} - -// LoadTesterTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type LoadTesterTransactorRaw struct { - Contract *LoadTesterTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewLoadTester creates a new instance of LoadTester, bound to a specific deployed contract. -func NewLoadTester(address common.Address, backend bind.ContractBackend) (*LoadTester, error) { - contract, err := bindLoadTester(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &LoadTester{LoadTesterCaller: LoadTesterCaller{contract: contract}, LoadTesterTransactor: LoadTesterTransactor{contract: contract}, LoadTesterFilterer: LoadTesterFilterer{contract: contract}}, nil -} - -// NewLoadTesterCaller creates a new read-only instance of LoadTester, bound to a specific deployed contract. -func NewLoadTesterCaller(address common.Address, caller bind.ContractCaller) (*LoadTesterCaller, error) { - contract, err := bindLoadTester(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &LoadTesterCaller{contract: contract}, nil -} - -// NewLoadTesterTransactor creates a new write-only instance of LoadTester, bound to a specific deployed contract. -func NewLoadTesterTransactor(address common.Address, transactor bind.ContractTransactor) (*LoadTesterTransactor, error) { - contract, err := bindLoadTester(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &LoadTesterTransactor{contract: contract}, nil -} - -// NewLoadTesterFilterer creates a new log filterer instance of LoadTester, bound to a specific deployed contract. -func NewLoadTesterFilterer(address common.Address, filterer bind.ContractFilterer) (*LoadTesterFilterer, error) { - contract, err := bindLoadTester(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &LoadTesterFilterer{contract: contract}, nil -} - -// bindLoadTester binds a generic wrapper to an already deployed contract. -func bindLoadTester(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := LoadTesterMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_LoadTester *LoadTesterRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _LoadTester.Contract.LoadTesterCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_LoadTester *LoadTesterRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _LoadTester.Contract.LoadTesterTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_LoadTester *LoadTesterRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _LoadTester.Contract.LoadTesterTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_LoadTester *LoadTesterCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _LoadTester.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_LoadTester *LoadTesterTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _LoadTester.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_LoadTester *LoadTesterTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _LoadTester.Contract.contract.Transact(opts, method, params...) -} - -// Dumpster is a free data retrieval call binding the contract method 0x3430ec06. -// -// Solidity: function dumpster(uint256 ) view returns(bytes) -func (_LoadTester *LoadTesterCaller) Dumpster(opts *bind.CallOpts, arg0 *big.Int) ([]byte, error) { - var out []interface{} - err := _LoadTester.contract.Call(opts, &out, "dumpster", arg0) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// Dumpster is a free data retrieval call binding the contract method 0x3430ec06. -// -// Solidity: function dumpster(uint256 ) view returns(bytes) -func (_LoadTester *LoadTesterSession) Dumpster(arg0 *big.Int) ([]byte, error) { - return _LoadTester.Contract.Dumpster(&_LoadTester.CallOpts, arg0) -} - -// Dumpster is a free data retrieval call binding the contract method 0x3430ec06. -// -// Solidity: function dumpster(uint256 ) view returns(bytes) -func (_LoadTester *LoadTesterCallerSession) Dumpster(arg0 *big.Int) ([]byte, error) { - return _LoadTester.Contract.Dumpster(&_LoadTester.CallOpts, arg0) -} - -// GetCallCounter is a free data retrieval call binding the contract method 0x1287a68c. -// -// Solidity: function getCallCounter() view returns(uint256) -func (_LoadTester *LoadTesterCaller) GetCallCounter(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _LoadTester.contract.Call(opts, &out, "getCallCounter") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetCallCounter is a free data retrieval call binding the contract method 0x1287a68c. -// -// Solidity: function getCallCounter() view returns(uint256) -func (_LoadTester *LoadTesterSession) GetCallCounter() (*big.Int, error) { - return _LoadTester.Contract.GetCallCounter(&_LoadTester.CallOpts) -} - -// GetCallCounter is a free data retrieval call binding the contract method 0x1287a68c. -// -// Solidity: function getCallCounter() view returns(uint256) -func (_LoadTester *LoadTesterCallerSession) GetCallCounter() (*big.Int, error) { - return _LoadTester.Contract.GetCallCounter(&_LoadTester.CallOpts) -} - -// Inc is a paid mutator transaction binding the contract method 0x371303c0. -// -// Solidity: function inc() returns(uint256) -func (_LoadTester *LoadTesterTransactor) Inc(opts *bind.TransactOpts) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "inc") -} - -// Inc is a paid mutator transaction binding the contract method 0x371303c0. -// -// Solidity: function inc() returns(uint256) -func (_LoadTester *LoadTesterSession) Inc() (*types.Transaction, error) { - return _LoadTester.Contract.Inc(&_LoadTester.TransactOpts) -} - -// Inc is a paid mutator transaction binding the contract method 0x371303c0. -// -// Solidity: function inc() returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) Inc() (*types.Transaction, error) { - return _LoadTester.Contract.Inc(&_LoadTester.TransactOpts) -} - -// LoopBlockHashUntilLimit is a paid mutator transaction binding the contract method 0xa271b721. -// -// Solidity: function loopBlockHashUntilLimit() returns(uint256) -func (_LoadTester *LoadTesterTransactor) LoopBlockHashUntilLimit(opts *bind.TransactOpts) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "loopBlockHashUntilLimit") -} - -// LoopBlockHashUntilLimit is a paid mutator transaction binding the contract method 0xa271b721. -// -// Solidity: function loopBlockHashUntilLimit() returns(uint256) -func (_LoadTester *LoadTesterSession) LoopBlockHashUntilLimit() (*types.Transaction, error) { - return _LoadTester.Contract.LoopBlockHashUntilLimit(&_LoadTester.TransactOpts) -} - -// LoopBlockHashUntilLimit is a paid mutator transaction binding the contract method 0xa271b721. -// -// Solidity: function loopBlockHashUntilLimit() returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) LoopBlockHashUntilLimit() (*types.Transaction, error) { - return _LoadTester.Contract.LoopBlockHashUntilLimit(&_LoadTester.TransactOpts) -} - -// LoopUntilLimit is a paid mutator transaction binding the contract method 0x659bbb4f. -// -// Solidity: function loopUntilLimit() returns(uint256) -func (_LoadTester *LoadTesterTransactor) LoopUntilLimit(opts *bind.TransactOpts) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "loopUntilLimit") -} - -// LoopUntilLimit is a paid mutator transaction binding the contract method 0x659bbb4f. -// -// Solidity: function loopUntilLimit() returns(uint256) -func (_LoadTester *LoadTesterSession) LoopUntilLimit() (*types.Transaction, error) { - return _LoadTester.Contract.LoopUntilLimit(&_LoadTester.TransactOpts) -} - -// LoopUntilLimit is a paid mutator transaction binding the contract method 0x659bbb4f. -// -// Solidity: function loopUntilLimit() returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) LoopUntilLimit() (*types.Transaction, error) { - return _LoadTester.Contract.LoopUntilLimit(&_LoadTester.TransactOpts) -} - -// Store is a paid mutator transaction binding the contract method 0xb374012b. -// -// Solidity: function store(bytes trash) returns(uint256) -func (_LoadTester *LoadTesterTransactor) Store(opts *bind.TransactOpts, trash []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "store", trash) -} - -// Store is a paid mutator transaction binding the contract method 0xb374012b. -// -// Solidity: function store(bytes trash) returns(uint256) -func (_LoadTester *LoadTesterSession) Store(trash []byte) (*types.Transaction, error) { - return _LoadTester.Contract.Store(&_LoadTester.TransactOpts, trash) -} - -// Store is a paid mutator transaction binding the contract method 0xb374012b. -// -// Solidity: function store(bytes trash) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) Store(trash []byte) (*types.Transaction, error) { - return _LoadTester.Contract.Store(&_LoadTester.TransactOpts, trash) -} - -// TestADD is a paid mutator transaction binding the contract method 0x0ba8a73b. -// -// Solidity: function testADD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestADD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testADD", x) -} - -// TestADD is a paid mutator transaction binding the contract method 0x0ba8a73b. -// -// Solidity: function testADD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestADD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestADD(&_LoadTester.TransactOpts, x) -} - -// TestADD is a paid mutator transaction binding the contract method 0x0ba8a73b. -// -// Solidity: function testADD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestADD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestADD(&_LoadTester.TransactOpts, x) -} - -// TestADDMOD is a paid mutator transaction binding the contract method 0x80947f80. -// -// Solidity: function testADDMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestADDMOD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testADDMOD", x) -} - -// TestADDMOD is a paid mutator transaction binding the contract method 0x80947f80. -// -// Solidity: function testADDMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestADDMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestADDMOD(&_LoadTester.TransactOpts, x) -} - -// TestADDMOD is a paid mutator transaction binding the contract method 0x80947f80. -// -// Solidity: function testADDMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestADDMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestADDMOD(&_LoadTester.TransactOpts, x) -} - -// TestADDRESS is a paid mutator transaction binding the contract method 0xbdc875fc. -// -// Solidity: function testADDRESS(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestADDRESS(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testADDRESS", x) -} - -// TestADDRESS is a paid mutator transaction binding the contract method 0xbdc875fc. -// -// Solidity: function testADDRESS(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestADDRESS(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestADDRESS(&_LoadTester.TransactOpts, x) -} - -// TestADDRESS is a paid mutator transaction binding the contract method 0xbdc875fc. -// -// Solidity: function testADDRESS(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestADDRESS(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestADDRESS(&_LoadTester.TransactOpts, x) -} - -// TestAND is a paid mutator transaction binding the contract method 0x9a2b7c81. -// -// Solidity: function testAND(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestAND(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testAND", x) -} - -// TestAND is a paid mutator transaction binding the contract method 0x9a2b7c81. -// -// Solidity: function testAND(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestAND(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestAND(&_LoadTester.TransactOpts, x) -} - -// TestAND is a paid mutator transaction binding the contract method 0x9a2b7c81. -// -// Solidity: function testAND(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestAND(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestAND(&_LoadTester.TransactOpts, x) -} - -// TestBALANCE is a paid mutator transaction binding the contract method 0x2294fc7f. -// -// Solidity: function testBALANCE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestBALANCE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testBALANCE", x) -} - -// TestBALANCE is a paid mutator transaction binding the contract method 0x2294fc7f. -// -// Solidity: function testBALANCE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestBALANCE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBALANCE(&_LoadTester.TransactOpts, x) -} - -// TestBALANCE is a paid mutator transaction binding the contract method 0x2294fc7f. -// -// Solidity: function testBALANCE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestBALANCE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBALANCE(&_LoadTester.TransactOpts, x) -} - -// TestBASEFEE is a paid mutator transaction binding the contract method 0x2871ef85. -// -// Solidity: function testBASEFEE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestBASEFEE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testBASEFEE", x) -} - -// TestBASEFEE is a paid mutator transaction binding the contract method 0x2871ef85. -// -// Solidity: function testBASEFEE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestBASEFEE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBASEFEE(&_LoadTester.TransactOpts, x) -} - -// TestBASEFEE is a paid mutator transaction binding the contract method 0x2871ef85. -// -// Solidity: function testBASEFEE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestBASEFEE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBASEFEE(&_LoadTester.TransactOpts, x) -} - -// TestBLOCKHASH is a paid mutator transaction binding the contract method 0xea5141e6. -// -// Solidity: function testBLOCKHASH(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestBLOCKHASH(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testBLOCKHASH", x) -} - -// TestBLOCKHASH is a paid mutator transaction binding the contract method 0xea5141e6. -// -// Solidity: function testBLOCKHASH(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestBLOCKHASH(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBLOCKHASH(&_LoadTester.TransactOpts, x) -} - -// TestBLOCKHASH is a paid mutator transaction binding the contract method 0xea5141e6. -// -// Solidity: function testBLOCKHASH(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestBLOCKHASH(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBLOCKHASH(&_LoadTester.TransactOpts, x) -} - -// TestBYTE is a paid mutator transaction binding the contract method 0x1de2f343. -// -// Solidity: function testBYTE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestBYTE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testBYTE", x) -} - -// TestBYTE is a paid mutator transaction binding the contract method 0x1de2f343. -// -// Solidity: function testBYTE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestBYTE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBYTE(&_LoadTester.TransactOpts, x) -} - -// TestBYTE is a paid mutator transaction binding the contract method 0x1de2f343. -// -// Solidity: function testBYTE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestBYTE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestBYTE(&_LoadTester.TransactOpts, x) -} - -// TestBlake2f is a paid mutator transaction binding the contract method 0xa040aec6. -// -// Solidity: function testBlake2f(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactor) TestBlake2f(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testBlake2f", inputData) -} - -// TestBlake2f is a paid mutator transaction binding the contract method 0xa040aec6. -// -// Solidity: function testBlake2f(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterSession) TestBlake2f(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestBlake2f(&_LoadTester.TransactOpts, inputData) -} - -// TestBlake2f is a paid mutator transaction binding the contract method 0xa040aec6. -// -// Solidity: function testBlake2f(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactorSession) TestBlake2f(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestBlake2f(&_LoadTester.TransactOpts, inputData) -} - -// TestCALLDATACOPY is a paid mutator transaction binding the contract method 0x3a425dfc. -// -// Solidity: function testCALLDATACOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCALLDATACOPY(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCALLDATACOPY", x) -} - -// TestCALLDATACOPY is a paid mutator transaction binding the contract method 0x3a425dfc. -// -// Solidity: function testCALLDATACOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCALLDATACOPY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLDATACOPY(&_LoadTester.TransactOpts, x) -} - -// TestCALLDATACOPY is a paid mutator transaction binding the contract method 0x3a425dfc. -// -// Solidity: function testCALLDATACOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCALLDATACOPY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLDATACOPY(&_LoadTester.TransactOpts, x) -} - -// TestCALLDATALOAD is a paid mutator transaction binding the contract method 0xce3cf4ef. -// -// Solidity: function testCALLDATALOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCALLDATALOAD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCALLDATALOAD", x) -} - -// TestCALLDATALOAD is a paid mutator transaction binding the contract method 0xce3cf4ef. -// -// Solidity: function testCALLDATALOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCALLDATALOAD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLDATALOAD(&_LoadTester.TransactOpts, x) -} - -// TestCALLDATALOAD is a paid mutator transaction binding the contract method 0xce3cf4ef. -// -// Solidity: function testCALLDATALOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCALLDATALOAD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLDATALOAD(&_LoadTester.TransactOpts, x) -} - -// TestCALLDATASIZE is a paid mutator transaction binding the contract method 0x034aef71. -// -// Solidity: function testCALLDATASIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCALLDATASIZE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCALLDATASIZE", x) -} - -// TestCALLDATASIZE is a paid mutator transaction binding the contract method 0x034aef71. -// -// Solidity: function testCALLDATASIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCALLDATASIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLDATASIZE(&_LoadTester.TransactOpts, x) -} - -// TestCALLDATASIZE is a paid mutator transaction binding the contract method 0x034aef71. -// -// Solidity: function testCALLDATASIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCALLDATASIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLDATASIZE(&_LoadTester.TransactOpts, x) -} - -// TestCALLER is a paid mutator transaction binding the contract method 0x44cf3bc7. -// -// Solidity: function testCALLER(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCALLER(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCALLER", x) -} - -// TestCALLER is a paid mutator transaction binding the contract method 0x44cf3bc7. -// -// Solidity: function testCALLER(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCALLER(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLER(&_LoadTester.TransactOpts, x) -} - -// TestCALLER is a paid mutator transaction binding the contract method 0x44cf3bc7. -// -// Solidity: function testCALLER(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCALLER(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLER(&_LoadTester.TransactOpts, x) -} - -// TestCALLVALUE is a paid mutator transaction binding the contract method 0x1581cf19. -// -// Solidity: function testCALLVALUE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCALLVALUE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCALLVALUE", x) -} - -// TestCALLVALUE is a paid mutator transaction binding the contract method 0x1581cf19. -// -// Solidity: function testCALLVALUE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCALLVALUE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLVALUE(&_LoadTester.TransactOpts, x) -} - -// TestCALLVALUE is a paid mutator transaction binding the contract method 0x1581cf19. -// -// Solidity: function testCALLVALUE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCALLVALUE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCALLVALUE(&_LoadTester.TransactOpts, x) -} - -// TestCHAINID is a paid mutator transaction binding the contract method 0xa60a1087. -// -// Solidity: function testCHAINID(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCHAINID(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCHAINID", x) -} - -// TestCHAINID is a paid mutator transaction binding the contract method 0xa60a1087. -// -// Solidity: function testCHAINID(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCHAINID(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCHAINID(&_LoadTester.TransactOpts, x) -} - -// TestCHAINID is a paid mutator transaction binding the contract method 0xa60a1087. -// -// Solidity: function testCHAINID(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCHAINID(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCHAINID(&_LoadTester.TransactOpts, x) -} - -// TestCODECOPY is a paid mutator transaction binding the contract method 0xacaebdf6. -// -// Solidity: function testCODECOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCODECOPY(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCODECOPY", x) -} - -// TestCODECOPY is a paid mutator transaction binding the contract method 0xacaebdf6. -// -// Solidity: function testCODECOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCODECOPY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCODECOPY(&_LoadTester.TransactOpts, x) -} - -// TestCODECOPY is a paid mutator transaction binding the contract method 0xacaebdf6. -// -// Solidity: function testCODECOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCODECOPY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCODECOPY(&_LoadTester.TransactOpts, x) -} - -// TestCODESIZE is a paid mutator transaction binding the contract method 0xb7b86207. -// -// Solidity: function testCODESIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCODESIZE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCODESIZE", x) -} - -// TestCODESIZE is a paid mutator transaction binding the contract method 0xb7b86207. -// -// Solidity: function testCODESIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCODESIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCODESIZE(&_LoadTester.TransactOpts, x) -} - -// TestCODESIZE is a paid mutator transaction binding the contract method 0xb7b86207. -// -// Solidity: function testCODESIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCODESIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCODESIZE(&_LoadTester.TransactOpts, x) -} - -// TestCOINBASE is a paid mutator transaction binding the contract method 0xb81c1484. -// -// Solidity: function testCOINBASE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestCOINBASE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testCOINBASE", x) -} - -// TestCOINBASE is a paid mutator transaction binding the contract method 0xb81c1484. -// -// Solidity: function testCOINBASE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestCOINBASE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCOINBASE(&_LoadTester.TransactOpts, x) -} - -// TestCOINBASE is a paid mutator transaction binding the contract method 0xb81c1484. -// -// Solidity: function testCOINBASE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestCOINBASE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestCOINBASE(&_LoadTester.TransactOpts, x) -} - -// TestDIFFICULTY is a paid mutator transaction binding the contract method 0x6f099c8d. -// -// Solidity: function testDIFFICULTY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestDIFFICULTY(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testDIFFICULTY", x) -} - -// TestDIFFICULTY is a paid mutator transaction binding the contract method 0x6f099c8d. -// -// Solidity: function testDIFFICULTY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestDIFFICULTY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestDIFFICULTY(&_LoadTester.TransactOpts, x) -} - -// TestDIFFICULTY is a paid mutator transaction binding the contract method 0x6f099c8d. -// -// Solidity: function testDIFFICULTY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestDIFFICULTY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestDIFFICULTY(&_LoadTester.TransactOpts, x) -} - -// TestDIV is a paid mutator transaction binding the contract method 0x3a411f12. -// -// Solidity: function testDIV(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestDIV(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testDIV", x) -} - -// TestDIV is a paid mutator transaction binding the contract method 0x3a411f12. -// -// Solidity: function testDIV(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestDIV(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestDIV(&_LoadTester.TransactOpts, x) -} - -// TestDIV is a paid mutator transaction binding the contract method 0x3a411f12. -// -// Solidity: function testDIV(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestDIV(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestDIV(&_LoadTester.TransactOpts, x) -} - -// TestECAdd is a paid mutator transaction binding the contract method 0xedf003cf. -// -// Solidity: function testECAdd(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactor) TestECAdd(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testECAdd", inputData) -} - -// TestECAdd is a paid mutator transaction binding the contract method 0xedf003cf. -// -// Solidity: function testECAdd(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterSession) TestECAdd(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECAdd(&_LoadTester.TransactOpts, inputData) -} - -// TestECAdd is a paid mutator transaction binding the contract method 0xedf003cf. -// -// Solidity: function testECAdd(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactorSession) TestECAdd(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECAdd(&_LoadTester.TransactOpts, inputData) -} - -// TestECMul is a paid mutator transaction binding the contract method 0x962e4dc2. -// -// Solidity: function testECMul(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactor) TestECMul(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testECMul", inputData) -} - -// TestECMul is a paid mutator transaction binding the contract method 0x962e4dc2. -// -// Solidity: function testECMul(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterSession) TestECMul(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECMul(&_LoadTester.TransactOpts, inputData) -} - -// TestECMul is a paid mutator transaction binding the contract method 0x962e4dc2. -// -// Solidity: function testECMul(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactorSession) TestECMul(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECMul(&_LoadTester.TransactOpts, inputData) -} - -// TestECPairing is a paid mutator transaction binding the contract method 0x0b3b996a. -// -// Solidity: function testECPairing(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactor) TestECPairing(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testECPairing", inputData) -} - -// TestECPairing is a paid mutator transaction binding the contract method 0x0b3b996a. -// -// Solidity: function testECPairing(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterSession) TestECPairing(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECPairing(&_LoadTester.TransactOpts, inputData) -} - -// TestECPairing is a paid mutator transaction binding the contract method 0x0b3b996a. -// -// Solidity: function testECPairing(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactorSession) TestECPairing(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECPairing(&_LoadTester.TransactOpts, inputData) -} - -// TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. -// -// Solidity: function testECRecover(bytes inputData) returns(address result) -func (_LoadTester *LoadTesterTransactor) TestECRecover(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testECRecover", inputData) -} - -// TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. -// -// Solidity: function testECRecover(bytes inputData) returns(address result) -func (_LoadTester *LoadTesterSession) TestECRecover(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECRecover(&_LoadTester.TransactOpts, inputData) -} - -// TestECRecover is a paid mutator transaction binding the contract method 0xa18683cb. -// -// Solidity: function testECRecover(bytes inputData) returns(address result) -func (_LoadTester *LoadTesterTransactorSession) TestECRecover(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestECRecover(&_LoadTester.TransactOpts, inputData) -} - -// TestEQ is a paid mutator transaction binding the contract method 0xe9f9b3f2. -// -// Solidity: function testEQ(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestEQ(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testEQ", x) -} - -// TestEQ is a paid mutator transaction binding the contract method 0xe9f9b3f2. -// -// Solidity: function testEQ(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestEQ(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestEQ(&_LoadTester.TransactOpts, x) -} - -// TestEQ is a paid mutator transaction binding the contract method 0xe9f9b3f2. -// -// Solidity: function testEQ(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestEQ(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestEQ(&_LoadTester.TransactOpts, x) -} - -// TestEXP is a paid mutator transaction binding the contract method 0xde97a363. -// -// Solidity: function testEXP(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestEXP(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testEXP", x) -} - -// TestEXP is a paid mutator transaction binding the contract method 0xde97a363. -// -// Solidity: function testEXP(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestEXP(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestEXP(&_LoadTester.TransactOpts, x) -} - -// TestEXP is a paid mutator transaction binding the contract method 0xde97a363. -// -// Solidity: function testEXP(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestEXP(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestEXP(&_LoadTester.TransactOpts, x) -} - -// TestEXTCODESIZE is a paid mutator transaction binding the contract method 0xf58fc36a. -// -// Solidity: function testEXTCODESIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestEXTCODESIZE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testEXTCODESIZE", x) -} - -// TestEXTCODESIZE is a paid mutator transaction binding the contract method 0xf58fc36a. -// -// Solidity: function testEXTCODESIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestEXTCODESIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestEXTCODESIZE(&_LoadTester.TransactOpts, x) -} - -// TestEXTCODESIZE is a paid mutator transaction binding the contract method 0xf58fc36a. -// -// Solidity: function testEXTCODESIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestEXTCODESIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestEXTCODESIZE(&_LoadTester.TransactOpts, x) -} - -// TestGAS is a paid mutator transaction binding the contract method 0x918a5fcd. -// -// Solidity: function testGAS(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestGAS(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testGAS", x) -} - -// TestGAS is a paid mutator transaction binding the contract method 0x918a5fcd. -// -// Solidity: function testGAS(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestGAS(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGAS(&_LoadTester.TransactOpts, x) -} - -// TestGAS is a paid mutator transaction binding the contract method 0x918a5fcd. -// -// Solidity: function testGAS(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestGAS(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGAS(&_LoadTester.TransactOpts, x) -} - -// TestGASLIMIT is a paid mutator transaction binding the contract method 0x7c191d20. -// -// Solidity: function testGASLIMIT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestGASLIMIT(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testGASLIMIT", x) -} - -// TestGASLIMIT is a paid mutator transaction binding the contract method 0x7c191d20. -// -// Solidity: function testGASLIMIT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestGASLIMIT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGASLIMIT(&_LoadTester.TransactOpts, x) -} - -// TestGASLIMIT is a paid mutator transaction binding the contract method 0x7c191d20. -// -// Solidity: function testGASLIMIT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestGASLIMIT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGASLIMIT(&_LoadTester.TransactOpts, x) -} - -// TestGASPRICE is a paid mutator transaction binding the contract method 0x4d2c74b3. -// -// Solidity: function testGASPRICE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestGASPRICE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testGASPRICE", x) -} - -// TestGASPRICE is a paid mutator transaction binding the contract method 0x4d2c74b3. -// -// Solidity: function testGASPRICE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestGASPRICE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGASPRICE(&_LoadTester.TransactOpts, x) -} - -// TestGASPRICE is a paid mutator transaction binding the contract method 0x4d2c74b3. -// -// Solidity: function testGASPRICE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestGASPRICE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGASPRICE(&_LoadTester.TransactOpts, x) -} - -// TestGT is a paid mutator transaction binding the contract method 0x71d91d28. -// -// Solidity: function testGT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestGT(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testGT", x) -} - -// TestGT is a paid mutator transaction binding the contract method 0x71d91d28. -// -// Solidity: function testGT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestGT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGT(&_LoadTester.TransactOpts, x) -} - -// TestGT is a paid mutator transaction binding the contract method 0x71d91d28. -// -// Solidity: function testGT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestGT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestGT(&_LoadTester.TransactOpts, x) -} - -// TestISZERO is a paid mutator transaction binding the contract method 0xf279ca81. -// -// Solidity: function testISZERO(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestISZERO(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testISZERO", x) -} - -// TestISZERO is a paid mutator transaction binding the contract method 0xf279ca81. -// -// Solidity: function testISZERO(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestISZERO(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestISZERO(&_LoadTester.TransactOpts, x) -} - -// TestISZERO is a paid mutator transaction binding the contract method 0xf279ca81. -// -// Solidity: function testISZERO(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestISZERO(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestISZERO(&_LoadTester.TransactOpts, x) -} - -// TestIdentity is a paid mutator transaction binding the contract method 0x9cce7cf9. -// -// Solidity: function testIdentity(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactor) TestIdentity(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testIdentity", inputData) -} - -// TestIdentity is a paid mutator transaction binding the contract method 0x9cce7cf9. -// -// Solidity: function testIdentity(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterSession) TestIdentity(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestIdentity(&_LoadTester.TransactOpts, inputData) -} - -// TestIdentity is a paid mutator transaction binding the contract method 0x9cce7cf9. -// -// Solidity: function testIdentity(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactorSession) TestIdentity(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestIdentity(&_LoadTester.TransactOpts, inputData) -} - -// TestLOG0 is a paid mutator transaction binding the contract method 0x40fe2662. -// -// Solidity: function testLOG0(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestLOG0(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testLOG0", x) -} - -// TestLOG0 is a paid mutator transaction binding the contract method 0x40fe2662. -// -// Solidity: function testLOG0(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestLOG0(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG0(&_LoadTester.TransactOpts, x) -} - -// TestLOG0 is a paid mutator transaction binding the contract method 0x40fe2662. -// -// Solidity: function testLOG0(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestLOG0(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG0(&_LoadTester.TransactOpts, x) -} - -// TestLOG1 is a paid mutator transaction binding the contract method 0x98456f3e. -// -// Solidity: function testLOG1(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestLOG1(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testLOG1", x) -} - -// TestLOG1 is a paid mutator transaction binding the contract method 0x98456f3e. -// -// Solidity: function testLOG1(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestLOG1(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG1(&_LoadTester.TransactOpts, x) -} - -// TestLOG1 is a paid mutator transaction binding the contract method 0x98456f3e. -// -// Solidity: function testLOG1(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestLOG1(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG1(&_LoadTester.TransactOpts, x) -} - -// TestLOG2 is a paid mutator transaction binding the contract method 0xdd9bef60. -// -// Solidity: function testLOG2(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestLOG2(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testLOG2", x) -} - -// TestLOG2 is a paid mutator transaction binding the contract method 0xdd9bef60. -// -// Solidity: function testLOG2(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestLOG2(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG2(&_LoadTester.TransactOpts, x) -} - -// TestLOG2 is a paid mutator transaction binding the contract method 0xdd9bef60. -// -// Solidity: function testLOG2(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestLOG2(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG2(&_LoadTester.TransactOpts, x) -} - -// TestLOG3 is a paid mutator transaction binding the contract method 0xbf529ca1. -// -// Solidity: function testLOG3(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestLOG3(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testLOG3", x) -} - -// TestLOG3 is a paid mutator transaction binding the contract method 0xbf529ca1. -// -// Solidity: function testLOG3(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestLOG3(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG3(&_LoadTester.TransactOpts, x) -} - -// TestLOG3 is a paid mutator transaction binding the contract method 0xbf529ca1. -// -// Solidity: function testLOG3(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestLOG3(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG3(&_LoadTester.TransactOpts, x) -} - -// TestLOG4 is a paid mutator transaction binding the contract method 0x1aba07ea. -// -// Solidity: function testLOG4(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestLOG4(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testLOG4", x) -} - -// TestLOG4 is a paid mutator transaction binding the contract method 0x1aba07ea. -// -// Solidity: function testLOG4(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestLOG4(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG4(&_LoadTester.TransactOpts, x) -} - -// TestLOG4 is a paid mutator transaction binding the contract method 0x1aba07ea. -// -// Solidity: function testLOG4(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestLOG4(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLOG4(&_LoadTester.TransactOpts, x) -} - -// TestLT is a paid mutator transaction binding the contract method 0x6e7f1fe7. -// -// Solidity: function testLT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestLT(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testLT", x) -} - -// TestLT is a paid mutator transaction binding the contract method 0x6e7f1fe7. -// -// Solidity: function testLT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestLT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLT(&_LoadTester.TransactOpts, x) -} - -// TestLT is a paid mutator transaction binding the contract method 0x6e7f1fe7. -// -// Solidity: function testLT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestLT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestLT(&_LoadTester.TransactOpts, x) -} - -// TestMLOAD is a paid mutator transaction binding the contract method 0x5590c2d9. -// -// Solidity: function testMLOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMLOAD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMLOAD", x) -} - -// TestMLOAD is a paid mutator transaction binding the contract method 0x5590c2d9. -// -// Solidity: function testMLOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMLOAD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMLOAD(&_LoadTester.TransactOpts, x) -} - -// TestMLOAD is a paid mutator transaction binding the contract method 0x5590c2d9. -// -// Solidity: function testMLOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMLOAD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMLOAD(&_LoadTester.TransactOpts, x) -} - -// TestMOD is a paid mutator transaction binding the contract method 0x16582150. -// -// Solidity: function testMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMOD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMOD", x) -} - -// TestMOD is a paid mutator transaction binding the contract method 0x16582150. -// -// Solidity: function testMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMOD(&_LoadTester.TransactOpts, x) -} - -// TestMOD is a paid mutator transaction binding the contract method 0x16582150. -// -// Solidity: function testMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMOD(&_LoadTester.TransactOpts, x) -} - -// TestMSIZE is a paid mutator transaction binding the contract method 0xb3d847f2. -// -// Solidity: function testMSIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMSIZE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMSIZE", x) -} - -// TestMSIZE is a paid mutator transaction binding the contract method 0xb3d847f2. -// -// Solidity: function testMSIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMSIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMSIZE(&_LoadTester.TransactOpts, x) -} - -// TestMSIZE is a paid mutator transaction binding the contract method 0xb3d847f2. -// -// Solidity: function testMSIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMSIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMSIZE(&_LoadTester.TransactOpts, x) -} - -// TestMSTORE is a paid mutator transaction binding the contract method 0x087b4e84. -// -// Solidity: function testMSTORE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMSTORE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMSTORE", x) -} - -// TestMSTORE is a paid mutator transaction binding the contract method 0x087b4e84. -// -// Solidity: function testMSTORE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMSTORE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMSTORE(&_LoadTester.TransactOpts, x) -} - -// TestMSTORE is a paid mutator transaction binding the contract method 0x087b4e84. -// -// Solidity: function testMSTORE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMSTORE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMSTORE(&_LoadTester.TransactOpts, x) -} - -// TestMSTORE8 is a paid mutator transaction binding the contract method 0x4a61af1f. -// -// Solidity: function testMSTORE8(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMSTORE8(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMSTORE8", x) -} - -// TestMSTORE8 is a paid mutator transaction binding the contract method 0x4a61af1f. -// -// Solidity: function testMSTORE8(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMSTORE8(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMSTORE8(&_LoadTester.TransactOpts, x) -} - -// TestMSTORE8 is a paid mutator transaction binding the contract method 0x4a61af1f. -// -// Solidity: function testMSTORE8(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMSTORE8(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMSTORE8(&_LoadTester.TransactOpts, x) -} - -// TestMUL is a paid mutator transaction binding the contract method 0x7de8c6f8. -// -// Solidity: function testMUL(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMUL(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMUL", x) -} - -// TestMUL is a paid mutator transaction binding the contract method 0x7de8c6f8. -// -// Solidity: function testMUL(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMUL(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMUL(&_LoadTester.TransactOpts, x) -} - -// TestMUL is a paid mutator transaction binding the contract method 0x7de8c6f8. -// -// Solidity: function testMUL(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMUL(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMUL(&_LoadTester.TransactOpts, x) -} - -// TestMULMOD is a paid mutator transaction binding the contract method 0xfde7721c. -// -// Solidity: function testMULMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestMULMOD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testMULMOD", x) -} - -// TestMULMOD is a paid mutator transaction binding the contract method 0xfde7721c. -// -// Solidity: function testMULMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestMULMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMULMOD(&_LoadTester.TransactOpts, x) -} - -// TestMULMOD is a paid mutator transaction binding the contract method 0xfde7721c. -// -// Solidity: function testMULMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestMULMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestMULMOD(&_LoadTester.TransactOpts, x) -} - -// TestModExp is a paid mutator transaction binding the contract method 0x613d0a82. -// -// Solidity: function testModExp(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactor) TestModExp(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testModExp", inputData) -} - -// TestModExp is a paid mutator transaction binding the contract method 0x613d0a82. -// -// Solidity: function testModExp(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterSession) TestModExp(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestModExp(&_LoadTester.TransactOpts, inputData) -} - -// TestModExp is a paid mutator transaction binding the contract method 0x613d0a82. -// -// Solidity: function testModExp(bytes inputData) returns(bytes result) -func (_LoadTester *LoadTesterTransactorSession) TestModExp(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestModExp(&_LoadTester.TransactOpts, inputData) -} - -// TestNOT is a paid mutator transaction binding the contract method 0x91e7b277. -// -// Solidity: function testNOT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestNOT(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testNOT", x) -} - -// TestNOT is a paid mutator transaction binding the contract method 0x91e7b277. -// -// Solidity: function testNOT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestNOT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestNOT(&_LoadTester.TransactOpts, x) -} - -// TestNOT is a paid mutator transaction binding the contract method 0x91e7b277. -// -// Solidity: function testNOT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestNOT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestNOT(&_LoadTester.TransactOpts, x) -} - -// TestNUMBER is a paid mutator transaction binding the contract method 0x2d34e798. -// -// Solidity: function testNUMBER(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestNUMBER(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testNUMBER", x) -} - -// TestNUMBER is a paid mutator transaction binding the contract method 0x2d34e798. -// -// Solidity: function testNUMBER(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestNUMBER(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestNUMBER(&_LoadTester.TransactOpts, x) -} - -// TestNUMBER is a paid mutator transaction binding the contract method 0x2d34e798. -// -// Solidity: function testNUMBER(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestNUMBER(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestNUMBER(&_LoadTester.TransactOpts, x) -} - -// TestOR is a paid mutator transaction binding the contract method 0x135d52f7. -// -// Solidity: function testOR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestOR(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testOR", x) -} - -// TestOR is a paid mutator transaction binding the contract method 0x135d52f7. -// -// Solidity: function testOR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestOR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestOR(&_LoadTester.TransactOpts, x) -} - -// TestOR is a paid mutator transaction binding the contract method 0x135d52f7. -// -// Solidity: function testOR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestOR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestOR(&_LoadTester.TransactOpts, x) -} - -// TestORIGIN is a paid mutator transaction binding the contract method 0x050082f8. -// -// Solidity: function testORIGIN(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestORIGIN(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testORIGIN", x) -} - -// TestORIGIN is a paid mutator transaction binding the contract method 0x050082f8. -// -// Solidity: function testORIGIN(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestORIGIN(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestORIGIN(&_LoadTester.TransactOpts, x) -} - -// TestORIGIN is a paid mutator transaction binding the contract method 0x050082f8. -// -// Solidity: function testORIGIN(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestORIGIN(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestORIGIN(&_LoadTester.TransactOpts, x) -} - -// TestRETURNDATACOPY is a paid mutator transaction binding the contract method 0x7b6e0b0e. -// -// Solidity: function testRETURNDATACOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestRETURNDATACOPY(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testRETURNDATACOPY", x) -} - -// TestRETURNDATACOPY is a paid mutator transaction binding the contract method 0x7b6e0b0e. -// -// Solidity: function testRETURNDATACOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestRETURNDATACOPY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestRETURNDATACOPY(&_LoadTester.TransactOpts, x) -} - -// TestRETURNDATACOPY is a paid mutator transaction binding the contract method 0x7b6e0b0e. -// -// Solidity: function testRETURNDATACOPY(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestRETURNDATACOPY(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestRETURNDATACOPY(&_LoadTester.TransactOpts, x) -} - -// TestRETURNDATASIZE is a paid mutator transaction binding the contract method 0x2b21ef44. -// -// Solidity: function testRETURNDATASIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestRETURNDATASIZE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testRETURNDATASIZE", x) -} - -// TestRETURNDATASIZE is a paid mutator transaction binding the contract method 0x2b21ef44. -// -// Solidity: function testRETURNDATASIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestRETURNDATASIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestRETURNDATASIZE(&_LoadTester.TransactOpts, x) -} - -// TestRETURNDATASIZE is a paid mutator transaction binding the contract method 0x2b21ef44. -// -// Solidity: function testRETURNDATASIZE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestRETURNDATASIZE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestRETURNDATASIZE(&_LoadTester.TransactOpts, x) -} - -// TestRipemd160 is a paid mutator transaction binding the contract method 0xf6b0bbf7. -// -// Solidity: function testRipemd160(bytes inputData) returns(bytes20 result) -func (_LoadTester *LoadTesterTransactor) TestRipemd160(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testRipemd160", inputData) -} - -// TestRipemd160 is a paid mutator transaction binding the contract method 0xf6b0bbf7. -// -// Solidity: function testRipemd160(bytes inputData) returns(bytes20 result) -func (_LoadTester *LoadTesterSession) TestRipemd160(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestRipemd160(&_LoadTester.TransactOpts, inputData) -} - -// TestRipemd160 is a paid mutator transaction binding the contract method 0xf6b0bbf7. -// -// Solidity: function testRipemd160(bytes inputData) returns(bytes20 result) -func (_LoadTester *LoadTesterTransactorSession) TestRipemd160(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestRipemd160(&_LoadTester.TransactOpts, inputData) -} - -// TestSAR is a paid mutator transaction binding the contract method 0x60e13cde. -// -// Solidity: function testSAR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSAR(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSAR", x) -} - -// TestSAR is a paid mutator transaction binding the contract method 0x60e13cde. -// -// Solidity: function testSAR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSAR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSAR(&_LoadTester.TransactOpts, x) -} - -// TestSAR is a paid mutator transaction binding the contract method 0x60e13cde. -// -// Solidity: function testSAR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSAR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSAR(&_LoadTester.TransactOpts, x) -} - -// TestSDIV is a paid mutator transaction binding the contract method 0xa645c9c2. -// -// Solidity: function testSDIV(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSDIV(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSDIV", x) -} - -// TestSDIV is a paid mutator transaction binding the contract method 0xa645c9c2. -// -// Solidity: function testSDIV(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSDIV(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSDIV(&_LoadTester.TransactOpts, x) -} - -// TestSDIV is a paid mutator transaction binding the contract method 0xa645c9c2. -// -// Solidity: function testSDIV(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSDIV(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSDIV(&_LoadTester.TransactOpts, x) -} - -// TestSELFBALANCE is a paid mutator transaction binding the contract method 0xc420eb61. -// -// Solidity: function testSELFBALANCE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSELFBALANCE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSELFBALANCE", x) -} - -// TestSELFBALANCE is a paid mutator transaction binding the contract method 0xc420eb61. -// -// Solidity: function testSELFBALANCE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSELFBALANCE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSELFBALANCE(&_LoadTester.TransactOpts, x) -} - -// TestSELFBALANCE is a paid mutator transaction binding the contract method 0xc420eb61. -// -// Solidity: function testSELFBALANCE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSELFBALANCE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSELFBALANCE(&_LoadTester.TransactOpts, x) -} - -// TestSGT is a paid mutator transaction binding the contract method 0x18093b46. -// -// Solidity: function testSGT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSGT(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSGT", x) -} - -// TestSGT is a paid mutator transaction binding the contract method 0x18093b46. -// -// Solidity: function testSGT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSGT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSGT(&_LoadTester.TransactOpts, x) -} - -// TestSGT is a paid mutator transaction binding the contract method 0x18093b46. -// -// Solidity: function testSGT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSGT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSGT(&_LoadTester.TransactOpts, x) -} - -// TestSHA256 is a paid mutator transaction binding the contract method 0x63138d4f. -// -// Solidity: function testSHA256(bytes inputData) returns(bytes32 result) -func (_LoadTester *LoadTesterTransactor) TestSHA256(opts *bind.TransactOpts, inputData []byte) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSHA256", inputData) -} - -// TestSHA256 is a paid mutator transaction binding the contract method 0x63138d4f. -// -// Solidity: function testSHA256(bytes inputData) returns(bytes32 result) -func (_LoadTester *LoadTesterSession) TestSHA256(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHA256(&_LoadTester.TransactOpts, inputData) -} - -// TestSHA256 is a paid mutator transaction binding the contract method 0x63138d4f. -// -// Solidity: function testSHA256(bytes inputData) returns(bytes32 result) -func (_LoadTester *LoadTesterTransactorSession) TestSHA256(inputData []byte) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHA256(&_LoadTester.TransactOpts, inputData) -} - -// TestSHA3 is a paid mutator transaction binding the contract method 0x19b621d6. -// -// Solidity: function testSHA3(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSHA3(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSHA3", x) -} - -// TestSHA3 is a paid mutator transaction binding the contract method 0x19b621d6. -// -// Solidity: function testSHA3(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSHA3(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHA3(&_LoadTester.TransactOpts, x) -} - -// TestSHA3 is a paid mutator transaction binding the contract method 0x19b621d6. -// -// Solidity: function testSHA3(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSHA3(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHA3(&_LoadTester.TransactOpts, x) -} - -// TestSHL is a paid mutator transaction binding the contract method 0x2007332e. -// -// Solidity: function testSHL(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSHL(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSHL", x) -} - -// TestSHL is a paid mutator transaction binding the contract method 0x2007332e. -// -// Solidity: function testSHL(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSHL(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHL(&_LoadTester.TransactOpts, x) -} - -// TestSHL is a paid mutator transaction binding the contract method 0x2007332e. -// -// Solidity: function testSHL(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSHL(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHL(&_LoadTester.TransactOpts, x) -} - -// TestSHR is a paid mutator transaction binding the contract method 0xc4bd65d5. -// -// Solidity: function testSHR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSHR(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSHR", x) -} - -// TestSHR is a paid mutator transaction binding the contract method 0xc4bd65d5. -// -// Solidity: function testSHR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSHR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHR(&_LoadTester.TransactOpts, x) -} - -// TestSHR is a paid mutator transaction binding the contract method 0xc4bd65d5. -// -// Solidity: function testSHR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSHR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSHR(&_LoadTester.TransactOpts, x) -} - -// TestSIGNEXTEND is a paid mutator transaction binding the contract method 0xc360aba6. -// -// Solidity: function testSIGNEXTEND(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSIGNEXTEND(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSIGNEXTEND", x) -} - -// TestSIGNEXTEND is a paid mutator transaction binding the contract method 0xc360aba6. -// -// Solidity: function testSIGNEXTEND(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSIGNEXTEND(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSIGNEXTEND(&_LoadTester.TransactOpts, x) -} - -// TestSIGNEXTEND is a paid mutator transaction binding the contract method 0xc360aba6. -// -// Solidity: function testSIGNEXTEND(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSIGNEXTEND(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSIGNEXTEND(&_LoadTester.TransactOpts, x) -} - -// TestSLOAD is a paid mutator transaction binding the contract method 0x880eff39. -// -// Solidity: function testSLOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSLOAD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSLOAD", x) -} - -// TestSLOAD is a paid mutator transaction binding the contract method 0x880eff39. -// -// Solidity: function testSLOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSLOAD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSLOAD(&_LoadTester.TransactOpts, x) -} - -// TestSLOAD is a paid mutator transaction binding the contract method 0x880eff39. -// -// Solidity: function testSLOAD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSLOAD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSLOAD(&_LoadTester.TransactOpts, x) -} - -// TestSLT is a paid mutator transaction binding the contract method 0xf4d1fc61. -// -// Solidity: function testSLT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSLT(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSLT", x) -} - -// TestSLT is a paid mutator transaction binding the contract method 0xf4d1fc61. -// -// Solidity: function testSLT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSLT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSLT(&_LoadTester.TransactOpts, x) -} - -// TestSLT is a paid mutator transaction binding the contract method 0xf4d1fc61. -// -// Solidity: function testSLT(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSLT(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSLT(&_LoadTester.TransactOpts, x) -} - -// TestSMOD is a paid mutator transaction binding the contract method 0xd93cd558. -// -// Solidity: function testSMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSMOD(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSMOD", x) -} - -// TestSMOD is a paid mutator transaction binding the contract method 0xd93cd558. -// -// Solidity: function testSMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSMOD(&_LoadTester.TransactOpts, x) -} - -// TestSMOD is a paid mutator transaction binding the contract method 0xd93cd558. -// -// Solidity: function testSMOD(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSMOD(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSMOD(&_LoadTester.TransactOpts, x) -} - -// TestSSTORE is a paid mutator transaction binding the contract method 0xd117320b. -// -// Solidity: function testSSTORE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSSTORE(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSSTORE", x) -} - -// TestSSTORE is a paid mutator transaction binding the contract method 0xd117320b. -// -// Solidity: function testSSTORE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSSTORE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSSTORE(&_LoadTester.TransactOpts, x) -} - -// TestSSTORE is a paid mutator transaction binding the contract method 0xd117320b. -// -// Solidity: function testSSTORE(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSSTORE(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSSTORE(&_LoadTester.TransactOpts, x) -} - -// TestSUB is a paid mutator transaction binding the contract method 0xd53ff3fd. -// -// Solidity: function testSUB(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestSUB(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testSUB", x) -} - -// TestSUB is a paid mutator transaction binding the contract method 0xd53ff3fd. -// -// Solidity: function testSUB(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestSUB(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSUB(&_LoadTester.TransactOpts, x) -} - -// TestSUB is a paid mutator transaction binding the contract method 0xd53ff3fd. -// -// Solidity: function testSUB(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestSUB(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestSUB(&_LoadTester.TransactOpts, x) -} - -// TestTIMESTAMP is a paid mutator transaction binding the contract method 0x219cddeb. -// -// Solidity: function testTIMESTAMP(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestTIMESTAMP(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testTIMESTAMP", x) -} - -// TestTIMESTAMP is a paid mutator transaction binding the contract method 0x219cddeb. -// -// Solidity: function testTIMESTAMP(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestTIMESTAMP(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestTIMESTAMP(&_LoadTester.TransactOpts, x) -} - -// TestTIMESTAMP is a paid mutator transaction binding the contract method 0x219cddeb. -// -// Solidity: function testTIMESTAMP(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestTIMESTAMP(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestTIMESTAMP(&_LoadTester.TransactOpts, x) -} - -// TestXOR is a paid mutator transaction binding the contract method 0xd51e7b5b. -// -// Solidity: function testXOR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactor) TestXOR(opts *bind.TransactOpts, x *big.Int) (*types.Transaction, error) { - return _LoadTester.contract.Transact(opts, "testXOR", x) -} - -// TestXOR is a paid mutator transaction binding the contract method 0xd51e7b5b. -// -// Solidity: function testXOR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterSession) TestXOR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestXOR(&_LoadTester.TransactOpts, x) -} - -// TestXOR is a paid mutator transaction binding the contract method 0xd51e7b5b. -// -// Solidity: function testXOR(uint256 x) returns(uint256) -func (_LoadTester *LoadTesterTransactorSession) TestXOR(x *big.Int) (*types.Transaction, error) { - return _LoadTester.Contract.TestXOR(&_LoadTester.TransactOpts, x) -} diff --git a/contracts/loadtester/LoadTester.abi b/contracts/loadtester/LoadTester.abi deleted file mode 100644 index d2e0ede1..00000000 --- a/contracts/loadtester/LoadTester.abi +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dumpster","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCallCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopBlockHashUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"loopUntilLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"trash","type":"bytes"}],"name":"store","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testADDRESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testAND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBASEFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBLOCKHASH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testBYTE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testBlake2f","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATALOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCALLVALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODECOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testCOINBASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIFFICULTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECAdd","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECMul","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECPairing","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testECRecover","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEQ","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testEXTCODESIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGAS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASLIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGASPRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testISZERO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testIdentity","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG0","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLOG4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMSTORE8","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMUL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testMULMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testModExp","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNOT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testNUMBER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testORIGIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATACOPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testRETURNDATASIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testRipemd160","outputs":[{"internalType":"bytes20","name":"result","type":"bytes20"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSDIV","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSELFBALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSGT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"inputData","type":"bytes"}],"name":"testSHA256","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHA3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSHR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSIGNEXTEND","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLOAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSLT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSMOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSSTORE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testSUB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testTIMESTAMP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"testXOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/loadtester/LoadTester.bin b/contracts/loadtester/LoadTester.bin deleted file mode 100644 index 9345c662..00000000 --- a/contracts/loadtester/LoadTester.bin +++ /dev/null @@ -1 +0,0 @@ -608060405234801561001057600080fd5b50612ef4806100206000396000f3fe608060405234801561001057600080fd5b50600436106104545760003560e01c806380947f8011610241578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca8114611161578063f4d1fc6114611191578063f58fc36a146111c1578063f6b0bbf7146111f1578063fde7721c1461122157610454565b8063dd9bef6014611071578063de97a363146110a1578063e9f9b3f2146110d1578063ea5141e614611101578063edf003cf1461113157610454565b8063ce3cf4ef1161010a578063ce3cf4ef14610f81578063d117320b14610fb1578063d51e7b5b14610fe1578063d53ff3fd14611011578063d93cd5581461104157610454565b8063bf529ca114610ec1578063c360aba614610ef1578063c420eb6114610f21578063c4bd65d514610f5157610454565b8063a18683cb116101c9578063b374012b1161018d578063b374012b14610dd1578063b3d847f214610e01578063b7b8620714610e31578063b81c148414610e61578063bdc875fc14610e9157610454565b8063a18683cb14610cf3578063a271b72114610d23578063a60a108714610d41578063a645c9c214610d71578063acaebdf614610da157610454565b8063962e4dc211610210578063962e4dc214610c0357806398456f3e14610c335780639a2b7c8114610c635780639cce7cf914610c93578063a040aec614610cc357610454565b806380947f8014610b43578063880eff3914610b73578063918a5fcd14610ba357806391e7b27714610bd357610454565b80633430ec061161035257806360e13cde116102da5780636f099c8d1161029e5780636f099c8d14610a5357806371d91d2814610a835780637b6e0b0e14610ab35780637c191d2014610ae35780637de8c6f814610b1357610454565b806360e13cde14610975578063613d0a82146109a557806363138d4f146109d5578063659bbb4f14610a055780636e7f1fe714610a2357610454565b806340fe26621161032157806340fe26621461088557806344cf3bc7146108b55780634a61af1f146108e55780634d2c74b3146109155780635590c2d91461094557610454565b80633430ec06146107d7578063371303c0146108075780633a411f12146108255780633a425dfc1461085557610454565b806318093b46116103e0578063219cddeb116103a4578063219cddeb146106e75780632294fc7f146107175780632871ef85146107475780632b21ef44146107775780632d34e798146107a757610454565b806318093b46146105f757806319b621d6146106275780631aba07ea146106575780631de2f343146106875780632007332e146106b757610454565b80630ba8a73b116104275780630ba8a73b146105195780631287a68c14610549578063135d52f7146105675780631581cf191461059757806316582150146105c757610454565b8063034aef7114610459578063050082f814610489578063087b4e84146104b95780630b3b996a146104e9575b600080fd5b610473600480360381019061046e9190612611565b611251565b604051610480919061264d565b60405180910390f35b6104a3600480360381019061049e9190612611565b61128c565b6040516104b0919061264d565b60405180910390f35b6104d360048036038101906104ce9190612611565b6112c7565b6040516104e0919061264d565b60405180910390f35b61050360048036038101906104fe91906127ae565b611301565b6040516105109190612876565b60405180910390f35b610533600480360381019061052e9190612611565b611328565b604051610540919061264d565b60405180910390f35b610551611364565b60405161055e919061264d565b60405180910390f35b610581600480360381019061057c9190612611565b61136d565b60405161058e919061264d565b60405180910390f35b6105b160048036038101906105ac9190612611565b6113a9565b6040516105be919061264d565b60405180910390f35b6105e160048036038101906105dc9190612611565b6113e4565b6040516105ee919061264d565b60405180910390f35b610611600480360381019061060c9190612611565b61143f565b60405161061e919061264d565b60405180910390f35b610641600480360381019061063c9190612611565b61147d565b60405161064e919061264d565b60405180910390f35b610671600480360381019061066c9190612611565b61150c565b60405161067e919061264d565b60405180910390f35b6106a1600480360381019061069c9190612611565b611552565b6040516106ae919061264d565b60405180910390f35b6106d160048036038101906106cc9190612611565b611590565b6040516106de919061264d565b60405180910390f35b61070160048036038101906106fc9190612611565b6115cc565b60405161070e919061264d565b60405180910390f35b610731600480360381019061072c9190612611565b611607565b60405161073e919061264d565b60405180910390f35b610761600480360381019061075c9190612611565b611646565b60405161076e919061264d565b60405180910390f35b610791600480360381019061078c9190612611565b611681565b60405161079e919061264d565b60405180910390f35b6107c160048036038101906107bc9190612611565b6116bc565b6040516107ce919061264d565b60405180910390f35b6107f160048036038101906107ec9190612611565b6116f7565b6040516107fe9190612876565b60405180910390f35b61080f6117a3565b60405161081c919061264d565b60405180910390f35b61083f600480360381019061083a9190612611565b6117c2565b60405161084c919061264d565b60405180910390f35b61086f600480360381019061086a9190612611565b6117fe565b60405161087c919061264d565b60405180910390f35b61089f600480360381019061089a9190612611565b61183a565b6040516108ac919061264d565b60405180910390f35b6108cf60048036038101906108ca9190612611565b611879565b6040516108dc919061264d565b60405180910390f35b6108ff60048036038101906108fa9190612611565b6118b4565b60405161090c919061264d565b60405180910390f35b61092f600480360381019061092a9190612611565b6118f2565b60405161093c919061264d565b60405180910390f35b61095f600480360381019061095a9190612611565b61192d565b60405161096c919061264d565b60405180910390f35b61098f600480360381019061098a9190612611565b611972565b60405161099c919061264d565b60405180910390f35b6109bf60048036038101906109ba91906127ae565b6119ae565b6040516109cc9190612876565b60405180910390f35b6109ef60048036038101906109ea91906127ae565b6119e0565b6040516109fc91906128b1565b60405180910390f35b610a0d611a0c565b604051610a1a919061264d565b60405180910390f35b610a3d6004803603810190610a389190612611565b611a48565b604051610a4a919061264d565b60405180910390f35b610a6d6004803603810190610a689190612611565b611a86565b604051610a7a919061264d565b60405180910390f35b610a9d6004803603810190610a989190612611565b611ac1565b604051610aaa919061264d565b60405180910390f35b610acd6004803603810190610ac89190612611565b611aff565b604051610ada919061264d565b60405180910390f35b610afd6004803603810190610af89190612611565b611b3b565b604051610b0a919061264d565b60405180910390f35b610b2d6004803603810190610b289190612611565b611b76565b604051610b3a919061264d565b60405180910390f35b610b5d6004803603810190610b589190612611565b611bb2565b604051610b6a919061264d565b60405180910390f35b610b8d6004803603810190610b889190612611565b611c0f565b604051610b9a919061264d565b60405180910390f35b610bbd6004803603810190610bb89190612611565b611c4e565b604051610bca919061264d565b60405180910390f35b610bed6004803603810190610be89190612611565b611c89565b604051610bfa919061264d565b60405180910390f35b610c1d6004803603810190610c1891906127ae565b611cd5565b604051610c2a9190612876565b60405180910390f35b610c4d6004803603810190610c489190612611565b611d43565b604051610c5a919061264d565b60405180910390f35b610c7d6004803603810190610c789190612611565b611d83565b604051610c8a919061264d565b60405180910390f35b610cad6004803603810190610ca891906127ae565b611dbe565b604051610cba9190612876565b60405180910390f35b610cdd6004803603810190610cd891906127ae565b611def565b604051610cea9190612876565b60405180910390f35b610d0d6004803603810190610d0891906127ae565b611e16565b604051610d1a919061290d565b60405180910390f35b610d2b611e98565b604051610d38919061264d565b60405180910390f35b610d5b6004803603810190610d569190612611565b611ee3565b604051610d68919061264d565b60405180910390f35b610d8b6004803603810190610d869190612611565b611f1e565b604051610d98919061264d565b60405180910390f35b610dbb6004803603810190610db69190612611565b611f5a565b604051610dc8919061264d565b60405180910390f35b610deb6004803603810190610de69190612988565b611f96565b604051610df8919061264d565b60405180910390f35b610e1b6004803603810190610e169190612611565b611fe4565b604051610e28919061264d565b60405180910390f35b610e4b6004803603810190610e469190612611565b61201f565b604051610e58919061264d565b60405180910390f35b610e7b6004803603810190610e769190612611565b61205a565b604051610e88919061264d565b60405180910390f35b610eab6004803603810190610ea69190612611565b612095565b604051610eb8919061264d565b60405180910390f35b610edb6004803603810190610ed69190612611565b6120d0565b604051610ee8919061264d565b60405180910390f35b610f0b6004803603810190610f069190612611565b612114565b604051610f18919061264d565b60405180910390f35b610f3b6004803603810190610f369190612611565b612150565b604051610f48919061264d565b60405180910390f35b610f6b6004803603810190610f669190612611565b61218b565b604051610f78919061264d565b60405180910390f35b610f9b6004803603810190610f969190612611565b6121c9565b604051610fa8919061264d565b60405180910390f35b610fcb6004803603810190610fc69190612611565b612206565b604051610fd8919061264d565b60405180910390f35b610ffb6004803603810190610ff69190612611565b612240565b604051611008919061264d565b60405180910390f35b61102b60048036038101906110269190612611565b61227c565b604051611038919061264d565b60405180910390f35b61105b60048036038101906110569190612611565b6122b8565b604051611068919061264d565b60405180910390f35b61108b60048036038101906110869190612611565b612313565b604051611098919061264d565b60405180910390f35b6110bb60048036038101906110b69190612611565b612355565b6040516110c8919061264d565b60405180910390f35b6110eb60048036038101906110e69190612611565b612391565b6040516110f8919061264d565b60405180910390f35b61111b60048036038101906111169190612611565b6123ce565b604051611128919061264d565b60405180910390f35b61114b600480360381019061114691906127ae565b612410565b6040516111589190612876565b60405180910390f35b61117b60048036038101906111769190612611565b61247f565b604051611188919061264d565b60405180910390f35b6111ab60048036038101906111a69190612611565b6124bb565b6040516111b8919061264d565b60405180910390f35b6111db60048036038101906111d69190612611565b6124f9565b6040516111e8919061264d565b60405180910390f35b61120b600480360381019061120691906127ae565b612538565b6040516112189190612a10565b60405180910390f35b61123b60048036038101906112369190612611565b61256a565b604051611248919061264d565b60405180910390f35b600061125b6117a3565b50600065deadbeef003690506000805b848110156112815736915060018101905061126b565b505080915050919050565b60006112966117a3565b50600065deadbeef003290506000805b848110156112bc573291506001810190506112a6565b505080915050919050565b60006112d16117a3565b50600065deadbeef0052905060005b838110156112f757816000526001810190506112e0565b5080915050919050565b60606000600890506040828451602086016000855af18061132157600080fd5b5050919050565b60006113326117a3565b50600065deadbeef0001905060005b8381101561135a57600082019150600181019050611341565b5080915050919050565b60008054905090565b60006113776117a3565b50600065deadbeef0017905060005b8381101561139f57600082179150600181019050611386565b5080915050919050565b60006113b36117a3565b50600065deadbeef003490506000805b848110156113d9573491506001810190506113c3565b505080915050919050565b60006113ee6117a3565b50600065deadbeef0006905060005b83811015611435577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506113fd565b5080915050919050565b60006114496117a3565b50600065deadbeef001390506000805b8481101561147257600183139150600181019050611459565b505080915050919050565b60006114876117a3565b50600065deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000006000526000805b848110156114d557600460002091506001810190506114bb565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c238811461150257600091505b5080915050919050565b60006115166117a3565b50600065deadbeef00a490508060105260005b83811015611548576004600360028360066010a4600181019050611529565b5080915050919050565b600061155c6117a3565b50600065deadbeef001a90506000805b84811015611585578260001a915060018101905061156c565b505080915050919050565b600061159a6117a3565b50600065deadbeef001b905060005b838110156115c2578160001b91506001810190506115a9565b5080915050919050565b60006115d66117a3565b50600065deadbeef004290506000805b848110156115fc574291506001810190506115e6565b505080915050919050565b60006116116117a3565b50600065deadbeef0031905060003060005b8581101561163a5781319250600181019050611623565b50505080915050919050565b60006116506117a3565b50600065deadbeef004890506000805b8481101561167657489150600181019050611660565b505080915050919050565b600061168b6117a3565b50600065deadbeef003d90506000805b848110156116b1573d915060018101905061169b565b505080915050919050565b60006116c66117a3565b50600065deadbeef004390506000805b848110156116ec574391506001810190506116d6565b505080915050919050565b6002818154811061170757600080fd5b90600052602060002001600091509050805461172290612a5a565b80601f016020809104026020016040519081016040528092919081815260200182805461174e90612a5a565b801561179b5780601f106117705761010080835404028352916020019161179b565b820191906000526020600020905b81548152906001019060200180831161177e57829003601f168201915b505050505081565b600060016000546117b49190612aba565b600081905550600054905090565b60006117cc6117a3565b50600065deadbeef0004905060005b838110156117f4576001820491506001810190506117db565b5080915050919050565b60006118086117a3565b50600065deadbeef0037905060005b8381101561183057602060008037600181019050611817565b5080915050919050565b60006118446117a3565b50600065deadbeef00a090508060105260005b8381101561186f5760066010a0600181019050611857565b5080915050919050565b60006118836117a3565b50600065deadbeef003390506000805b848110156118a957339150600181019050611893565b505080915050919050565b60006118be6117a3565b50600065deadbeef0053905060005b838110156118e85763deadbeef6000526001810190506118cd565b5080915050919050565b60006118fc6117a3565b50600065deadbeef003a90506000805b84811015611922573a915060018101905061190c565b505080915050919050565b60006119376117a3565b50600065deadbeef0051905060008160005260005b8481101561196457600051915060018101905061194c565b508091505080915050919050565b600061197c6117a3565b50600065deadbeef001d905060005b838110156119a4578160001d915060018101905061198b565b5080915050919050565b606060006005905060208301835160405160208183856000885af1806119d357600080fd5b8195505050505050919050565b600080600290506020830183518360208183856000885af180611a0257600080fd5b5050505050919050565b6000611a166117a3565b505b6103e85a1115611a40576001806000828254611a349190612aba565b92505081905550611a18565b600154905090565b6000611a526117a3565b50600065deadbeef001090506000805b84811015611a7b57826001109150600181019050611a62565b505080915050919050565b6000611a906117a3565b50600065deadbeef004490506000805b84811015611ab657449150600181019050611aa0565b505080915050919050565b6000611acb6117a3565b50600065deadbeef001190506000805b84811015611af457600183119150600181019050611adb565b505080915050919050565b6000611b096117a3565b50600065deadbeef003e905060005b83811015611b315760206000803e600181019050611b18565b5080915050919050565b6000611b456117a3565b50600065deadbeef004590506000805b84811015611b6b57459150600181019050611b55565b505080915050919050565b6000611b806117a3565b50600065deadbeef0002905060005b83811015611ba857600182029150600181019050611b8f565b5080915050919050565b6000611bbc6117a3565b50600065deadbeef0008905060005b83811015611c05577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600083089150600181019050611bcb565b5080915050919050565b6000611c196117a3565b50600065deadbeef005490508060005560005b83811015611c44576000549150600181019050611c2c565b5080915050919050565b6000611c586117a3565b50600065deadbeef005a90506000805b84811015611c7e575a9150600181019050611c68565b505080915050919050565b6000611c936117a3565b50600065deadbeef0019905060005b83811015611cb95781199150600181019050611ca2565b5065deadbeef00198114611ccc57801990505b80915050919050565b606080825114611d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1190612b4b565b60405180910390fd5b60006007905060208301835160408482846000875af180611d3a57600080fd5b50505050919050565b6000611d4d6117a3565b50600065deadbeef00a190508060105260005b83811015611d79578060066010a1600181019050611d60565b5080915050919050565b6000611d8d6117a3565b50600065deadbeef0016905060005b83811015611db4578182169150600181019050611d9c565b5080915050919050565b6060600060049050602083018351604051818183856000885af180611de257600080fd5b8195505050505050919050565b60606000600890506040828451602086016000855af180611e0f57600080fd5b5050919050565b60006080825114611e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5390612bb7565b60405180910390fd5b600060019050602083016020810151601f1a602082015260206040516080836000865af180611e8a57600080fd5b604051519350505050919050565b6000611ea26117a3565b505b6103e85a1115611edb576001806000828254611ec09190612aba565b9250508190555043600154611ed59190612c06565b50611ea4565b600154905090565b6000611eed6117a3565b50600065deadbeef004690506000805b84811015611f1357469150600181019050611efd565b505080915050919050565b6000611f286117a3565b50600065deadbeef0005905060005b83811015611f5057600182059150600181019050611f37565b5080915050919050565b6000611f646117a3565b50600065deadbeef0039905060005b83811015611f8c57602060008039600181019050611f73565b5080915050919050565b60006002838390918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611fd5929190612dee565b50600280549050905092915050565b6000611fee6117a3565b50600065deadbeef005990506000805b8481101561201457599150600181019050611ffe565b505080915050919050565b60006120296117a3565b50600065deadbeef003890506000805b8481101561204f57389150600181019050612039565b505080915050919050565b60006120646117a3565b50600065deadbeef004190506000805b8481101561208a57419150600181019050612074565b505080915050919050565b600061209f6117a3565b50600065deadbeef003090506000805b848110156120c5573091506001810190506120af565b505080915050919050565b60006120da6117a3565b50600065deadbeef00a390508060105260005b8381101561210a57600360028260066010a36001810190506120ed565b5080915050919050565b600061211e6117a3565b50600065deadbeef000b905060005b83811015612146578160200b915060018101905061212d565b5080915050919050565b600061215a6117a3565b50600065deadbeef004790506000805b848110156121805747915060018101905061216a565b505080915050919050565b60006121956117a3565b50600065deadbeef001c90506000805b848110156121be578260001c92506001810190506121a5565b505080915050919050565b60006121d36117a3565b50600065deadbeef003590506000805b848110156121fb5760003591506001810190506121e3565b505080915050919050565b60006122106117a3565b50600065deadbeef0055905060005b83811015612236578160005560018101905061221f565b5080915050919050565b600061224a6117a3565b50600065deadbeef0018905060005b8381101561227257600082189150600181019050612259565b5080915050919050565b60006122866117a3565b50600065deadbeef0003905060005b838110156122ae57600082039150600181019050612295565b5080915050919050565b60006122c26117a3565b50600065deadbeef0007905060005b83811015612309577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506122d1565b5080915050919050565b600061231d6117a3565b50600065deadbeef00a290508060105260005b8381101561234b5760028160066010a2600181019050612330565b5080915050919050565b600061235f6117a3565b50600065deadbeef000a905060005b83811015612387576001820a915060018101905061236e565b5080915050919050565b600061239b6117a3565b50600065deadbeef001490506000805b848110156123c35782831491506001810190506123ab565b505080915050919050565b60006123d86117a3565b50600065deadbeef0040905060006001430360005b8581101561240457814092506001810190506123ed565b50505080915050919050565b60606080825114612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d90612b4b565b60405180910390fd5b60006006905060208301835160408482846000875af18061247657600080fd5b50505050919050565b60006124896117a3565b50600065deadbeef001590506000805b848110156124b05782159150600181019050612499565b505080915050919050565b60006124c56117a3565b50600065deadbeef001290506000805b848110156124ee578260011291506001810190506124d5565b505080915050919050565b60006125036117a3565b50600065deadbeef003b905060003060005b8581101561252c57813b9250600181019050612515565b50505080915050919050565b6000806003905060208301835160405160148183856000885af18061255c57600080fd5b815195505050505050919050565b60006125746117a3565b50600065deadbeef0009905060005b838110156125bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600183099150600181019050612583565b5080915050919050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6125ee816125db565b81146125f957600080fd5b50565b60008135905061260b816125e5565b92915050565b600060208284031215612627576126266125d1565b5b6000612635848285016125fc565b91505092915050565b612647816125db565b82525050565b6000602082019050612662600083018461263e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126bb82612672565b810181811067ffffffffffffffff821117156126da576126d9612683565b5b80604052505050565b60006126ed6125c7565b90506126f982826126b2565b919050565b600067ffffffffffffffff82111561271957612718612683565b5b61272282612672565b9050602081019050919050565b82818337600083830152505050565b600061275161274c846126fe565b6126e3565b90508281526020810184848401111561276d5761276c61266d565b5b61277884828561272f565b509392505050565b600082601f83011261279557612794612668565b5b81356127a584826020860161273e565b91505092915050565b6000602082840312156127c4576127c36125d1565b5b600082013567ffffffffffffffff8111156127e2576127e16125d6565b5b6127ee84828501612780565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612831578082015181840152602081019050612816565b60008484015250505050565b6000612848826127f7565b6128528185612802565b9350612862818560208601612813565b61286b81612672565b840191505092915050565b60006020820190508181036000830152612890818461283d565b905092915050565b6000819050919050565b6128ab81612898565b82525050565b60006020820190506128c660008301846128a2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128f7826128cc565b9050919050565b612907816128ec565b82525050565b600060208201905061292260008301846128fe565b92915050565b600080fd5b600080fd5b60008083601f84011261294857612947612668565b5b8235905067ffffffffffffffff81111561296557612964612928565b5b6020830191508360018202830111156129815761298061292d565b5b9250929050565b6000806020838503121561299f5761299e6125d1565b5b600083013567ffffffffffffffff8111156129bd576129bc6125d6565b5b6129c985828601612932565b92509250509250929050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b612a0a816129d5565b82525050565b6000602082019050612a256000830184612a01565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a7257607f821691505b602082108103612a8557612a84612a2b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ac5826125db565b9150612ad0836125db565b9250828201905080821115612ae857612ae7612a8b565b5b92915050565b600082825260208201905092915050565b7f496e76616c696420696e707574206c656e677468000000000000000000000000600082015250565b6000612b35601483612aee565b9150612b4082612aff565b602082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f496e76616c696420696e7075742064617461206c656e6774682e000000000000600082015250565b6000612ba1601a83612aee565b9150612bac82612b6b565b602082019050919050565b60006020820190508181036000830152612bd081612b94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c11826125db565b9150612c1c836125db565b925082612c2c57612c2b612bd7565b5b828206905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612ca47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c67565b612cae8683612c67565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612ceb612ce6612ce1846125db565b612cc6565b6125db565b9050919050565b6000819050919050565b612d0583612cd0565b612d19612d1182612cf2565b848454612c74565b825550505050565b600090565b612d2e612d21565b612d39818484612cfc565b505050565b5b81811015612d5d57612d52600082612d26565b600181019050612d3f565b5050565b601f821115612da257612d7381612c42565b612d7c84612c57565b81016020851015612d8b578190505b612d9f612d9785612c57565b830182612d3e565b50505b505050565b600082821c905092915050565b6000612dc560001984600802612da7565b1980831691505092915050565b6000612dde8383612db4565b9150826002028217905092915050565b612df88383612c37565b67ffffffffffffffff811115612e1157612e10612683565b5b612e1b8254612a5a565b612e26828285612d61565b6000601f831160018114612e555760008415612e43578287013590505b612e4d8582612dd2565b865550612eb5565b601f198416612e6386612c42565b60005b82811015612e8b57848901358255600182019150602085019450602081019050612e66565b86831015612ea85784890135612ea4601f891682612db4565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212208612dc3a454553c8629c7050845d284621be46a91a361388814c0ca053f9dca464736f6c63430008150033 \ No newline at end of file diff --git a/contracts/asm/README.md b/contracts/src/asm/README.md similarity index 100% rename from contracts/asm/README.md rename to contracts/src/asm/README.md diff --git a/contracts/asm/blockhash-gas-loop.easm b/contracts/src/asm/blockhash-gas-loop.easm similarity index 100% rename from contracts/asm/blockhash-gas-loop.easm rename to contracts/src/asm/blockhash-gas-loop.easm diff --git a/contracts/asm/delegate-call-loop.easm b/contracts/src/asm/delegate-call-loop.easm similarity index 100% rename from contracts/asm/delegate-call-loop.easm rename to contracts/src/asm/delegate-call-loop.easm diff --git a/contracts/asm/deploy-call-loop.easm b/contracts/src/asm/deploy-call-loop.easm similarity index 100% rename from contracts/asm/deploy-call-loop.easm rename to contracts/src/asm/deploy-call-loop.easm diff --git a/contracts/asm/deploy-header.easm b/contracts/src/asm/deploy-header.easm similarity index 100% rename from contracts/asm/deploy-header.easm rename to contracts/src/asm/deploy-header.easm diff --git a/contracts/asm/deploy.easm b/contracts/src/asm/deploy.easm similarity index 100% rename from contracts/asm/deploy.easm rename to contracts/src/asm/deploy.easm diff --git a/contracts/asm/fib-nostore.easm b/contracts/src/asm/fib-nostore.easm similarity index 100% rename from contracts/asm/fib-nostore.easm rename to contracts/src/asm/fib-nostore.easm diff --git a/contracts/asm/fib.easm b/contracts/src/asm/fib.easm similarity index 100% rename from contracts/asm/fib.easm rename to contracts/src/asm/fib.easm diff --git a/contracts/asm/noop-loop.easm b/contracts/src/asm/noop-loop.easm similarity index 100% rename from contracts/asm/noop-loop.easm rename to contracts/src/asm/noop-loop.easm diff --git a/contracts/asm/sstore-loop.easm b/contracts/src/asm/sstore-loop.easm similarity index 100% rename from contracts/asm/sstore-loop.easm rename to contracts/src/asm/sstore-loop.easm diff --git a/contracts/src/loadtester/LoadTester.abi b/contracts/src/loadtester/LoadTester.abi new file mode 100644 index 00000000..5d7d5543 --- /dev/null +++ b/contracts/src/loadtester/LoadTester.abi @@ -0,0 +1,1422 @@ +[ + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "dumpster", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCallCounter", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "inc", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "loopBlockHashUntilLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "loopUntilLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "trash", + "type": "bytes" + } + ], + "name": "store", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testADD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testADDMOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testADDRESS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testAND", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testBALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testBASEFEE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testBLOCKHASH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testBYTE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testBlake2f", + "outputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCALLDATACOPY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCALLDATALOAD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCALLDATASIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCALLER", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCALLVALUE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCHAINID", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCODECOPY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCODESIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testCOINBASE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testDIFFICULTY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testDIV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testECAdd", + "outputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testECMul", + "outputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testECPairing", + "outputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testECRecover", + "outputs": [ + { + "internalType": "address", + "name": "result", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testEQ", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testEXP", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testEXTCODESIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testGAS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testGASLIMIT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testGASPRICE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testGT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testISZERO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testIdentity", + "outputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testLOG0", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testLOG1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testLOG2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testLOG3", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testLOG4", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testLT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMLOAD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMSIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMSTORE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMSTORE8", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMUL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testMULMOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testModExp", + "outputs": [ + { + "internalType": "bytes", + "name": "result", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testNOT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testNUMBER", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testORIGIN", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testRETURNDATACOPY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testRETURNDATASIZE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testRipemd160", + "outputs": [ + { + "internalType": "bytes20", + "name": "result", + "type": "bytes20" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSAR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSDIV", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSELFBALANCE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSGT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "inputData", + "type": "bytes" + } + ], + "name": "testSHA256", + "outputs": [ + { + "internalType": "bytes32", + "name": "result", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSHA3", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSHL", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSHR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSIGNEXTEND", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSLOAD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSLT", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSMOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSSTORE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testSUB", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testTIMESTAMP", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "x", + "type": "uint256" + } + ], + "name": "testXOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/contracts/src/loadtester/LoadTester.bin b/contracts/src/loadtester/LoadTester.bin new file mode 100644 index 00000000..f5c0e89f --- /dev/null +++ b/contracts/src/loadtester/LoadTester.bin @@ -0,0 +1 @@ +0x608060405234801561001057600080fd5b50611d1e806100206000396000f3fe608060405234801561001057600080fd5b50600436106104545760003560e01c806380947f8011610241578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca811461098f578063f4d1fc61146109a2578063f58fc36a146109b5578063f6b0bbf7146109c8578063fde7721c146109e857600080fd5b8063dd9bef6014610930578063de97a36314610943578063e9f9b3f214610956578063ea5141e614610969578063edf003cf1461097c57600080fd5b8063ce3cf4ef1161010a578063ce3cf4ef146108d1578063d117320b146108e4578063d51e7b5b146108f7578063d53ff3fd1461090a578063d93cd5581461091d57600080fd5b8063bf529ca114610885578063c360aba614610898578063c420eb61146108ab578063c4bd65d5146108be57600080fd5b8063a18683cb116101c9578063b374012b1161018d578063b374012b14610826578063b3d847f214610839578063b7b862071461084c578063b81c14841461085f578063bdc875fc1461087257600080fd5b8063a18683cb146107c5578063a271b721146107e5578063a60a1087146107ed578063a645c9c214610800578063acaebdf61461081357600080fd5b8063962e4dc211610210578063962e4dc21461077957806398456f3e1461078c5780639a2b7c811461079f5780639cce7cf9146107b2578063a040aec6146104a857600080fd5b806380947f801461072d578063880eff3914610740578063918a5fcd1461075357806391e7b2771461076657600080fd5b80633430ec061161035257806360e13cde116102da5780636f099c8d1161029e5780636f099c8d146106ce57806371d91d28146106e15780637b6e0b0e146106f45780637c191d20146107075780637de8c6f81461071a57600080fd5b806360e13cde1461067a578063613d0a821461068d57806363138d4f146106a0578063659bbb4f146106b35780636e7f1fe7146106bb57600080fd5b806340fe26621161032157806340fe26621461061b57806344cf3bc71461062e5780634a61af1f146106415780634d2c74b3146106545780635590c2d91461066757600080fd5b80633430ec06146105da578063371303c0146105ed5780633a411f12146105f55780633a425dfc1461060857600080fd5b806318093b46116103e0578063219cddeb116103a4578063219cddeb1461057b5780632294fc7f1461058e5780632871ef85146105a15780632b21ef44146105b45780632d34e798146105c757600080fd5b806318093b461461051c57806319b621d61461052f5780631aba07ea146105425780631de2f343146105555780632007332e1461056857600080fd5b80630ba8a73b116104275780630ba8a73b146104c85780631287a68c146104db578063135d52f7146104e35780631581cf19146104f6578063165821501461050957600080fd5b8063034aef7114610459578063050082f814610482578063087b4e84146104955780630b3b996a146104a8575b600080fd5b61046c610467366004611786565b6109fb565b60405161047991906117b7565b60405180910390f35b61046c610490366004611786565b610a2d565b61046c6104a3366004611786565b610a56565b6104bb6104b63660046118bc565b610a87565b6040516104799190611953565b61046c6104d6366004611786565b610aaa565b60005461046c565b61046c6104f1366004611786565b610acf565b61046c610504366004611786565b610af1565b61046c610517366004611786565b610b1a565b61046c61052a366004611786565b610b46565b61046c61053d366004611786565b610b71565b61046c610550366004611786565b610bdd565b61046c610563366004611786565b610c13565b61046c610576366004611786565b610c40565b61046c610589366004611786565b610c62565b61046c61059c366004611786565b610c8b565b61046c6105af366004611786565b610cc0565b61046c6105c2366004611786565b610ce9565b61046c6105d5366004611786565b610d12565b6104bb6105e8366004611786565b610d3b565b61046c610de4565b61046c610603366004611786565b610dfd565b61046c610616366004611786565b610e1f565b61046c610629366004611786565b610e4a565b61046c61063c366004611786565b610e79565b61046c61064f366004611786565b610ea2565b61046c610662366004611786565b610ecf565b61046c610675366004611786565b610ef8565b61046c610688366004611786565b610f2e565b6104bb61069b3660046118bc565b610f5a565b61046c6106ae3660046118bc565b610f85565b61046c610fae565b61046c6106c9366004611786565b610fe8565b61046c6106dc366004611786565b611013565b61046c6106ef366004611786565b61103c565b61046c610702366004611786565b611067565b61046c610715366004611786565b611092565b61046c610728366004611786565b6110bb565b61046c61073b366004611786565b6110dd565b61046c61074e366004611786565b61110b565b61046c610761366004611786565b611138565b61046c610774366004611786565b611161565b6104bb6107873660046118bc565b61119f565b61046c61079a366004611786565b6111f0565b61046c6107ad366004611786565b611220565b6104bb6107c03660046118bc565b611242565b6107d86107d33660046118bc565b611262565b6040516104799190611985565b61046c6112bc565b61046c6107fb366004611786565b6112fd565b61046c61080e366004611786565b611326565b61046c610821366004611786565b611348565b61046c6108343660046119e5565b611373565b61046c610847366004611786565b6113a2565b61046c61085a366004611786565b6113cb565b61046c61086d366004611786565b6113f4565b61046c610880366004611786565b61141d565b61046c610893366004611786565b611446565b61046c6108a6366004611786565b61147a565b61046c6108b9366004611786565b61149c565b61046c6108cc366004611786565b6114c5565b61046c6108df366004611786565b6114eb565b61046c6108f2366004611786565b611516565b61046c610905366004611786565b611540565b61046c610918366004611786565b611562565b61046c61092b366004611786565b611584565b61046c61093e366004611786565b6115b0565b61046c610951366004611786565b6115e2565b61046c610964366004611786565b61160c565b61046c610977366004611786565b611635565b6104bb61098a3660046118bc565b611664565b61046c61099d366004611786565b6116a3565b61046c6109b0366004611786565b6116cd565b61046c6109c3366004611786565b6116f8565b6109db6109d63660046118bc565b611723565b6040516104799190611a42565b61046c6109f6366004611786565b611751565b6000610a05610de4565b5065deadbeef00366000805b84811015610a2457369150600101610a11565b50909392505050565b6000610a37610de4565b5065deadbeef00326000805b84811015610a2457329150600101610a43565b6000610a60610de4565b5065deadbeef005260005b83811015610a80576000829052600101610a6b565b5092915050565b606060086040828451602086016000855af180610aa357600080fd5b5050919050565b6000610ab4610de4565b5065deadbeef000160005b83811015610a8057600101610abf565b6000610ad9610de4565b5065deadbeef001760008315610a8057600101610abf565b6000610afb610de4565b5065deadbeef00346000805b84811015610a2457349150600101610b07565b6000610b24610de4565b5065deadbeef000660005b83811015610a805760001990910690600101610b2f565b6000610b50610de4565b5065deadbeef00136000805b84811015610a24576001808413925001610b5c565b6000610b7b610de4565b506001600160e01b0319600090815265deadbeef002090805b84811015610bab5760046000209150600101610b94565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c2388114610a80575060009392505050565b6000610be7610de4565b5065deadbeef00a4601081905260005b83811015610a80576004600360028360066010a4600101610bf7565b6000610c1d610de4565b5065deadbeef001a6000805b84811015610a2457600083901a9150600101610c29565b6000610c4a610de4565b5065deadbeef001b60008315610a8057600101610abf565b6000610c6c610de4565b5065deadbeef00426000805b84811015610a2457429150600101610c78565b6000610c95610de4565b5065deadbeef0031600030815b85811015610cb65781319250600101610ca2565b5091949350505050565b6000610cca610de4565b5065deadbeef00486000805b84811015610a2457489150600101610cd6565b6000610cf3610de4565b5065deadbeef003d6000805b84811015610a24573d9150600101610cff565b6000610d1c610de4565b5065deadbeef00436000805b84811015610a2457439150600101610d28565b60028181548110610d4b57600080fd5b906000526020600020018054909150610d6390611a66565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8f90611a66565b8015610ddc5780601f10610db157610100808354040283529160200191610ddc565b820191906000526020600020905b815481529060010190602001808311610dbf57829003601f168201915b505050505081565b60008054610df3906001611aa8565b6000819055919050565b6000610e07610de4565b5065deadbeef000460008315610a8057600101610abf565b6000610e29610de4565b5065deadbeef003760005b83811015610a8057602060008037600101610e34565b6000610e54610de4565b5065deadbeef00a0601081905260005b83811015610a805760066010a0600101610e64565b6000610e83610de4565b5065deadbeef00336000805b84811015610a2457339150600101610e8f565b6000610eac610de4565b5065deadbeef005360005b83811015610a805763deadbeef600052600101610eb7565b6000610ed9610de4565b5065deadbeef003a6000805b84811015610a24573a9150600101610ee5565b6000610f02610de4565b5065deadbeef00516000818152805b84811015610f26576000519150600101610f11565b509392505050565b6000610f38610de4565b5065deadbeef001d60005b83811015610a805760009190911d90600101610f43565b6060600560208301835160405160208183856000885af180610f7b57600080fd5b5095945050505050565b600060026020830183518360208183856000885af180610fa457600080fd5b5050505050919050565b6000610fb8610de4565b505b6103e85a1115610fe1576001806000828254610fd69190611aa8565b90915550610fba9050565b5060015490565b6000610ff2610de4565b5065deadbeef00106000805b84811015610a24576001838110925001610ffe565b600061101d610de4565b5065deadbeef00446000805b84811015610a2457449150600101611029565b6000611046610de4565b5065deadbeef00116000805b84811015610a24576001808411925001611052565b6000611071610de4565b5065deadbeef003e60005b83811015610a805760206000803e60010161107c565b600061109c610de4565b5065deadbeef00456000805b84811015610a24574591506001016110a8565b60006110c5610de4565b5065deadbeef000260008315610a8057600101610abf565b60006110e7610de4565b5065deadbeef000860005b83811015610a80576000196000830891506001016110f2565b6000611115610de4565b5065deadbeef005460008181555b83811015610a80576000549150600101611123565b6000611142610de4565b5065deadbeef005a6000805b84811015610a24575a915060010161114e565b600061116b610de4565b5065deadbeef001960005b8381101561118957901990600101611176565b5065deadbeef0019811461119957195b92915050565b606081516060146111cb5760405162461bcd60e51b81526004016111c290611ae9565b60405180910390fd5b600760208301835160408482846000875af1806111e757600080fd5b50505050919050565b60006111fa610de4565b5065deadbeef00a1601081905260005b83811015610a80578060066010a160010161120a565b600061122a610de4565b5065deadbeef001660008315610a8057600101610abf565b60606004602083018351604051818183856000885af180610f7b57600080fd5b600081516080146112855760405162461bcd60e51b81526004016111c290611b2d565b6001602083016040840151601f1a602082015260206040516080836000865af1806112af57600080fd5b6040515195945050505050565b60006112c6610de4565b505b6103e85a1115610fe15760018060008282546112e49190611aa8565b90915550506001546112f7904390611b53565b506112c8565b6000611307610de4565b5065deadbeef00466000805b84811015610a2457469150600101611313565b6000611330610de4565b5065deadbeef000560008315610a8057600101610abf565b6000611352610de4565b5065deadbeef003960005b83811015610a805760206000803960010161135d565b60028054600181018255600091825283908390602084200191611397919083611c17565b505060025492915050565b60006113ac610de4565b5065deadbeef00596000805b84811015610a24575991506001016113b8565b60006113d5610de4565b5065deadbeef00386000805b84811015610a24573891506001016113e1565b60006113fe610de4565b5065deadbeef00416000805b84811015610a245741915060010161140a565b6000611427610de4565b5065deadbeef00306000805b84811015610a2457309150600101611433565b6000611450610de4565b5065deadbeef00a3601081905260005b83811015610a8057600360028260066010a3600101611460565b6000611484610de4565b5065deadbeef000b60008315610a8057600101610abf565b60006114a6610de4565b5065deadbeef00476000805b84811015610a24574791506001016114b2565b60006114cf610de4565b5065deadbeef001c6000805b84811015610a24576001016114db565b60006114f5610de4565b5065deadbeef00356000805b84811015610a24576000359150600101611501565b6000611520610de4565b5065deadbeef005560005b83811015610a8057600082905560010161152b565b600061154a610de4565b5065deadbeef001860008315610a8057600101610abf565b600061156c610de4565b5065deadbeef000360008315610a8057600101610abf565b600061158e610de4565b5065deadbeef000760005b83811015610a805760001990910790600101611599565b60006115ba610de4565b5065deadbeef00a2601081905260005b83811015610a805760028160066010a26001016115ca565b60006115ec610de4565b5065deadbeef000a60005b83811015610a805760019182900a91016115f7565b6000611616610de4565b5065deadbeef00146000805b84811015610a2457600191508101611622565b600061163f610de4565b5065deadbeef004060006000194301815b85811015610cb65781409250600101611650565b606081516080146116875760405162461bcd60e51b81526004016111c290611ae9565b600660208301835160408482846000875af1806111e757600080fd5b60006116ad610de4565b5065deadbeef00156000805b84811015610a2457821591506001016116b9565b60006116d7610de4565b5065deadbeef00126000805b84811015610a245760018381129250016116e3565b6000611702610de4565b5065deadbeef003b600030815b85811015610cb657813b925060010161170f565b6000600360208301835160405160148183856000885af18061174457600080fd5b8151979650505050505050565b600061175b610de4565b5065deadbeef000960005b83811015610a8057600019600183099150600101611766565b8035611199565b60006020828403121561179b5761179b600080fd5b60006117a7848461177f565b949350505050565b805b82525050565b6020810161119982846117af565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715611801576118016117c5565b6040525050565b60006118176000604051905090565b905061182382826117db565b919050565b600067ffffffffffffffff821115611842576118426117c5565b601f19601f83011660200192915050565b82818337506000910152565b600061187261186d84611828565b611808565b90508281526020810184848401111561188d5761188d600080fd5b610f26848285611853565b600082601f8301126118ac576118ac600080fd5b81356117a784826020860161185f565b6000602082840312156118d1576118d1600080fd5b813567ffffffffffffffff8111156118eb576118eb600080fd5b6117a784828501611898565b60005b838110156119125780820151838201526020016118fa565b50506000910152565b600061192b826000815192915050565b8084526020840193506119428185602086016118f7565b601f01601f19169290920192915050565b60208082528101611964818461191b565b9392505050565b60006001600160a01b038216611199565b6117b18161196b565b60208101611199828461197c565b60008083601f8401126119a8576119a8600080fd5b50813567ffffffffffffffff8111156119c3576119c3600080fd5b6020830191508360018202830111156119de576119de600080fd5b9250929050565b600080602083850312156119fb576119fb600080fd5b823567ffffffffffffffff811115611a1557611a15600080fd5b611a2185828601611993565b92509250509250929050565b6bffffffffffffffffffffffff1981166117b1565b602081016111998284611a2d565b634e487b7160e01b600052602260045260246000fd5b600281046001821680611a7a57607f821691505b602082108103611a8c57611a8c611a50565b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561119957611199611a92565b6014815260006020820173092dcecc2d8d2c840d2dce0eae840d8cadccee8d60631b815291505b5060200190565b6020808252810161119981611abb565b601a81526000602082017f496e76616c696420696e7075742064617461206c656e6774682e00000000000081529150611ae2565b6020808252810161119981611af9565b634e487b7160e01b600052601260045260246000fd5b600082611b6257611b62611b3d565b500690565b6000611199611b738381565b90565b611b7f83611b67565b815460001960089490940293841b1916921b91909117905550565b6000611ba7818484611b76565b505050565b81811015611bc757611bbf600082611b9a565b600101611bac565b5050565b601f821115611ba757611be981600081815281906020902092915050565b6020601f85010481016020851015611bfe5750805b611c106020601f860104830182611bac565b5050505050565b8267ffffffffffffffff811115611c3057611c306117c5565b611c3a8254611a66565b611c45828285611bcb565b6000601f831160018114611c795760008415611c615750858201355b600019600886021c1981166002860217865550611cdf565b601f198416611c9386600081815281906020902092915050565b60005b82811015611cb65788850135825560209485019460019092019101611c96565b86831015611cd257600019601f88166008021c19858a01351682555b6001600288020188555050505b5050505050505056fea2646970667358221220471b790cd04c9a9b7a3e2397533ca23ee3fe5fc3019c554e6cb3eb1ca7672c9b64736f6c63430008150033 diff --git a/contracts/loadtester/LoadTester.sol b/contracts/src/loadtester/LoadTester.sol similarity index 100% rename from contracts/loadtester/LoadTester.sol rename to contracts/src/loadtester/LoadTester.sol diff --git a/contracts/contracts.go b/contracts/src/loadtester/helper.go similarity index 94% rename from contracts/contracts.go rename to contracts/src/loadtester/helper.go index 86a08802..ae307390 100644 --- a/contracts/contracts.go +++ b/contracts/src/loadtester/helper.go @@ -1,4 +1,4 @@ -package contracts +package loadtester import ( _ "embed" @@ -13,22 +13,13 @@ import ( "github.com/rs/zerolog/log" ) -// solc --version -// solc, the solidity compiler commandline interface -// Version: 0.8.15+commit.e14f2714.Darwin.appleclang -// solc LoadTester.sol --bin --abi -o . --overwrite -// ~/code/go-ethereum/build/bin/abigen --abi LoadTester.abi --pkg contracts --type LoadTester --bin LoadTester.bin --out loadtester.go - -//go:embed loadtester/LoadTester.bin -var RawLoadTesterBin string - -//go:embed loadtester/LoadTester.abi -var RawLoadTesterABI string +//go:embed LoadTester.bin +var rawLoadTesterBin string var randSrc *rand.Rand func GetLoadTesterBytes() ([]byte, error) { - return hex.DecodeString(RawLoadTesterBin) + return hex.DecodeString(rawLoadTesterBin) } func CallLoadTestFunctionByOpCode(shortCode uint64, lt *LoadTester, opts *bind.TransactOpts, iterations uint64) (*ethtypes.Transaction, error) { diff --git a/contracts/loadtester/LoadTester.go b/contracts/src/loadtester/loadTester.go similarity index 81% rename from contracts/loadtester/LoadTester.go rename to contracts/src/loadtester/loadTester.go index e63d3051..eb05d4b5 100644 --- a/contracts/loadtester/LoadTester.go +++ b/contracts/src/loadtester/loadTester.go @@ -32,7 +32,7 @@ var ( // LoadTesterMetaData contains all meta data concerning the LoadTester contract. var LoadTesterMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"dumpster\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCallCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inc\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopBlockHashUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"loopUntilLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"trash\",\"type\":\"bytes\"}],\"name\":\"store\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testAND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBASEFEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBLOCKHASH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testBYTE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testBlake2f\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATALOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCALLVALUE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCHAINID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODECOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testCOINBASE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIFFICULTY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECAdd\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECMul\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECPairing\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testECRecover\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEQ\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testEXTCODESIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASLIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGASPRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testISZERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testIdentity\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLOG4\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMSTORE8\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMUL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testMULMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testModExp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNOT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testNUMBER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testORIGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATACOPY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testRETURNDATASIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testRipemd160\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"result\",\"type\":\"bytes20\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSAR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSDIV\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSELFBALANCE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSGT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"inputData\",\"type\":\"bytes\"}],\"name\":\"testSHA256\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHA3\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHL\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSHR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSIGNEXTEND\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLOAD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSLT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSMOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSSTORE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testSUB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testTIMESTAMP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"testXOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50612d9f8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610452575f3560e01c806380947f801161023f578063bf529ca111610139578063dd9bef60116100c1578063f279ca8111610085578063f279ca811461115e578063f4d1fc611461118e578063f58fc36a146111be578063f6b0bbf7146111ee578063fde7721c1461121e57610452565b8063dd9bef601461106e578063de97a3631461109e578063e9f9b3f2146110ce578063ea5141e6146110fe578063edf003cf1461112e57610452565b8063ce3cf4ef11610108578063ce3cf4ef14610f7e578063d117320b14610fae578063d51e7b5b14610fde578063d53ff3fd1461100e578063d93cd5581461103e57610452565b8063bf529ca114610ebe578063c360aba614610eee578063c420eb6114610f1e578063c4bd65d514610f4e57610452565b8063a18683cb116101c7578063b374012b1161018b578063b374012b14610dce578063b3d847f214610dfe578063b7b8620714610e2e578063b81c148414610e5e578063bdc875fc14610e8e57610452565b8063a18683cb14610cf0578063a271b72114610d20578063a60a108714610d3e578063a645c9c214610d6e578063acaebdf614610d9e57610452565b8063962e4dc21161020e578063962e4dc214610c0057806398456f3e14610c305780639a2b7c8114610c605780639cce7cf914610c90578063a040aec614610cc057610452565b806380947f8014610b40578063880eff3914610b70578063918a5fcd14610ba057806391e7b27714610bd057610452565b80633430ec061161035057806360e13cde116102d85780636f099c8d1161029c5780636f099c8d14610a5057806371d91d2814610a805780637b6e0b0e14610ab05780637c191d2014610ae05780637de8c6f814610b1057610452565b806360e13cde14610972578063613d0a82146109a257806363138d4f146109d2578063659bbb4f14610a025780636e7f1fe714610a2057610452565b806340fe26621161031f57806340fe26621461088257806344cf3bc7146108b25780634a61af1f146108e25780634d2c74b3146109125780635590c2d91461094257610452565b80633430ec06146107d4578063371303c0146108045780633a411f12146108225780633a425dfc1461085257610452565b806318093b46116103de578063219cddeb116103a2578063219cddeb146106e45780632294fc7f146107145780632871ef85146107445780632b21ef44146107745780632d34e798146107a457610452565b806318093b46146105f457806319b621d6146106245780631aba07ea146106545780631de2f343146106845780632007332e146106b457610452565b80630ba8a73b116104255780630ba8a73b146105165780631287a68c14610546578063135d52f7146105645780631581cf191461059457806316582150146105c457610452565b8063034aef7114610456578063050082f814610486578063087b4e84146104b65780630b3b996a146104e6575b5f80fd5b610470600480360381019061046b9190612507565b61124e565b60405161047d9190612541565b60405180910390f35b6104a0600480360381019061049b9190612507565b611286565b6040516104ad9190612541565b60405180910390f35b6104d060048036038101906104cb9190612507565b6112be565b6040516104dd9190612541565b60405180910390f35b61050060048036038101906104fb9190612696565b6112f4565b60405161050d9190612757565b60405180910390f35b610530600480360381019061052b9190612507565b611318565b60405161053d9190612541565b60405180910390f35b61054e611350565b60405161055b9190612541565b60405180910390f35b61057e60048036038101906105799190612507565b611358565b60405161058b9190612541565b60405180910390f35b6105ae60048036038101906105a99190612507565b611390565b6040516105bb9190612541565b60405180910390f35b6105de60048036038101906105d99190612507565b6113c8565b6040516105eb9190612541565b60405180910390f35b61060e60048036038101906106099190612507565b611420565b60405161061b9190612541565b60405180910390f35b61063e60048036038101906106399190612507565b61145b565b60405161064b9190612541565b60405180910390f35b61066e60048036038101906106699190612507565b6114e4565b60405161067b9190612541565b60405180910390f35b61069e60048036038101906106999190612507565b611527565b6040516106ab9190612541565b60405180910390f35b6106ce60048036038101906106c99190612507565b611561565b6040516106db9190612541565b60405180910390f35b6106fe60048036038101906106f99190612507565b611599565b60405161070b9190612541565b60405180910390f35b61072e60048036038101906107299190612507565b6115d1565b60405161073b9190612541565b60405180910390f35b61075e60048036038101906107599190612507565b61160c565b60405161076b9190612541565b60405180910390f35b61078e60048036038101906107899190612507565b611644565b60405161079b9190612541565b60405180910390f35b6107be60048036038101906107b99190612507565b61167c565b6040516107cb9190612541565b60405180910390f35b6107ee60048036038101906107e99190612507565b6116b4565b6040516107fb9190612757565b60405180910390f35b61080c61175a565b6040516108199190612541565b60405180910390f35b61083c60048036038101906108379190612507565b611775565b6040516108499190612541565b60405180910390f35b61086c60048036038101906108679190612507565b6117ae565b6040516108799190612541565b60405180910390f35b61089c60048036038101906108979190612507565b6117e6565b6040516108a99190612541565b60405180910390f35b6108cc60048036038101906108c79190612507565b611822565b6040516108d99190612541565b60405180910390f35b6108fc60048036038101906108f79190612507565b61185a565b6040516109099190612541565b60405180910390f35b61092c60048036038101906109279190612507565b611894565b6040516109399190612541565b60405180910390f35b61095c60048036038101906109579190612507565b6118cc565b6040516109699190612541565b60405180910390f35b61098c60048036038101906109879190612507565b61190b565b6040516109999190612541565b60405180910390f35b6109bc60048036038101906109b79190612696565b611943565b6040516109c99190612757565b60405180910390f35b6109ec60048036038101906109e79190612696565b611972565b6040516109f9919061278f565b60405180910390f35b610a0a61199b565b604051610a179190612541565b60405180910390f35b610a3a6004803603810190610a359190612507565b6119d5565b604051610a479190612541565b60405180910390f35b610a6a6004803603810190610a659190612507565b611a10565b604051610a779190612541565b60405180910390f35b610a9a6004803603810190610a959190612507565b611a48565b604051610aa79190612541565b60405180910390f35b610aca6004803603810190610ac59190612507565b611a83565b604051610ad79190612541565b60405180910390f35b610afa6004803603810190610af59190612507565b611abb565b604051610b079190612541565b60405180910390f35b610b2a6004803603810190610b259190612507565b611af3565b604051610b379190612541565b60405180910390f35b610b5a6004803603810190610b559190612507565b611b2c565b604051610b679190612541565b60405180910390f35b610b8a6004803603810190610b859190612507565b611b85565b604051610b979190612541565b60405180910390f35b610bba6004803603810190610bb59190612507565b611bbf565b604051610bc79190612541565b60405180910390f35b610bea6004803603810190610be59190612507565b611bf7565b604051610bf79190612541565b60405180910390f35b610c1a6004803603810190610c159190612696565b611c40565b604051610c279190612757565b60405180910390f35b610c4a6004803603810190610c459190612507565b611cab565b604051610c579190612541565b60405180910390f35b610c7a6004803603810190610c759190612507565b611ce8565b604051610c879190612541565b60405180910390f35b610caa6004803603810190610ca59190612696565b611d20565b604051610cb79190612757565b60405180910390f35b610cda6004803603810190610cd59190612696565b611d4e565b604051610ce79190612757565b60405180910390f35b610d0a6004803603810190610d059190612696565b611d72565b604051610d1791906127e7565b60405180910390f35b610d28611df0565b604051610d359190612541565b60405180910390f35b610d586004803603810190610d539190612507565b611e39565b604051610d659190612541565b60405180910390f35b610d886004803603810190610d839190612507565b611e71565b604051610d959190612541565b60405180910390f35b610db86004803603810190610db39190612507565b611eaa565b604051610dc59190612541565b60405180910390f35b610de86004803603810190610de3919061285d565b611ee2565b604051610df59190612541565b60405180910390f35b610e186004803603810190610e139190612507565b611f2c565b604051610e259190612541565b60405180910390f35b610e486004803603810190610e439190612507565b611f64565b604051610e559190612541565b60405180910390f35b610e786004803603810190610e739190612507565b611f9c565b604051610e859190612541565b60405180910390f35b610ea86004803603810190610ea39190612507565b611fd4565b604051610eb59190612541565b60405180910390f35b610ed86004803603810190610ed39190612507565b61200c565b604051610ee59190612541565b60405180910390f35b610f086004803603810190610f039190612507565b61204d565b604051610f159190612541565b60405180910390f35b610f386004803603810190610f339190612507565b612086565b604051610f459190612541565b60405180910390f35b610f686004803603810190610f639190612507565b6120be565b604051610f759190612541565b60405180910390f35b610f986004803603810190610f939190612507565b6120f8565b604051610fa59190612541565b60405180910390f35b610fc86004803603810190610fc39190612507565b612131565b604051610fd59190612541565b60405180910390f35b610ff86004803603810190610ff39190612507565b612167565b6040516110059190612541565b60405180910390f35b61102860048036038101906110239190612507565b61219f565b6040516110359190612541565b60405180910390f35b61105860048036038101906110539190612507565b6121d7565b6040516110659190612541565b60405180910390f35b61108860048036038101906110839190612507565b61222f565b6040516110959190612541565b60405180910390f35b6110b860048036038101906110b39190612507565b61226e565b6040516110c59190612541565b60405180910390f35b6110e860048036038101906110e39190612507565b6122a7565b6040516110f59190612541565b60405180910390f35b61111860048036038101906111139190612507565b6122e1565b6040516111259190612541565b60405180910390f35b61114860048036038101906111439190612696565b61231f565b6040516111559190612757565b60405180910390f35b61117860048036038101906111739190612507565b61238b565b6040516111859190612541565b60405180910390f35b6111a860048036038101906111a39190612507565b6123c4565b6040516111b59190612541565b60405180910390f35b6111d860048036038101906111d39190612507565b6123ff565b6040516111e59190612541565b60405180910390f35b61120860048036038101906112039190612696565b61243a565b60405161121591906128e2565b60405180910390f35b61123860048036038101906112339190612507565b612469565b6040516112459190612541565b60405180910390f35b5f61125761175a565b505f65deadbeef003690505f805b8481101561127b57369150600181019050611265565b505080915050919050565b5f61128f61175a565b505f65deadbeef003290505f805b848110156112b35732915060018101905061129d565b505080915050919050565b5f6112c761175a565b505f65deadbeef005290505f5b838110156112ea57815f526001810190506112d4565b5080915050919050565b60605f600890506040828451602086015f855af180611311575f80fd5b5050919050565b5f61132161175a565b505f65deadbeef000190505f5b83811015611346575f8201915060018101905061132e565b5080915050919050565b5f8054905090565b5f61136161175a565b505f65deadbeef001790505f5b83811015611386575f8217915060018101905061136e565b5080915050919050565b5f61139961175a565b505f65deadbeef003490505f805b848110156113bd573491506001810190506113a7565b505080915050919050565b5f6113d161175a565b505f65deadbeef000690505f5b83811015611416577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820691506001810190506113de565b5080915050919050565b5f61142961175a565b505f65deadbeef001390505f805b8481101561145057600183139150600181019050611437565b505080915050919050565b5f61146461175a565b505f65deadbeef002090507fffffffff000000000000000000000000000000000000000000000000000000005f525f805b848110156114ae5760045f209150600181019050611495565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c23881146114da575f91505b5080915050919050565b5f6114ed61175a565b505f65deadbeef00a49050806010525f5b8381101561151d576004600360028360066010a46001810190506114fe565b5080915050919050565b5f61153061175a565b505f65deadbeef001a90505f805b8481101561155657825f1a915060018101905061153e565b505080915050919050565b5f61156a61175a565b505f65deadbeef001b90505f5b8381101561158f57815f1b9150600181019050611577565b5080915050919050565b5f6115a261175a565b505f65deadbeef004290505f805b848110156115c6574291506001810190506115b0565b505080915050919050565b5f6115da61175a565b505f65deadbeef003190505f305f5b8581101561160057813192506001810190506115e9565b50505080915050919050565b5f61161561175a565b505f65deadbeef004890505f805b8481101561163957489150600181019050611623565b505080915050919050565b5f61164d61175a565b505f65deadbeef003d90505f805b84811015611671573d915060018101905061165b565b505080915050919050565b5f61168561175a565b505f65deadbeef004390505f805b848110156116a957439150600181019050611693565b505080915050919050565b600281815481106116c3575f80fd5b905f5260205f20015f9150905080546116db90612928565b80601f016020809104026020016040519081016040528092919081815260200182805461170790612928565b80156117525780601f1061172957610100808354040283529160200191611752565b820191905f5260205f20905b81548152906001019060200180831161173557829003601f168201915b505050505081565b5f60015f546117699190612985565b5f819055505f54905090565b5f61177e61175a565b505f65deadbeef000490505f5b838110156117a45760018204915060018101905061178b565b5080915050919050565b5f6117b761175a565b505f65deadbeef003790505f5b838110156117dc5760205f80376001810190506117c4565b5080915050919050565b5f6117ef61175a565b505f65deadbeef00a09050806010525f5b838110156118185760066010a0600181019050611800565b5080915050919050565b5f61182b61175a565b505f65deadbeef003390505f805b8481101561184f57339150600181019050611839565b505080915050919050565b5f61186361175a565b505f65deadbeef005390505f5b8381101561188a5763deadbeef5f52600181019050611870565b5080915050919050565b5f61189d61175a565b505f65deadbeef003a90505f805b848110156118c1573a91506001810190506118ab565b505080915050919050565b5f6118d561175a565b505f65deadbeef005190505f815f525f5b848110156118fd575f5191506001810190506118e6565b508091505080915050919050565b5f61191461175a565b505f65deadbeef001d90505f5b8381101561193957815f1d9150600181019050611921565b5080915050919050565b60605f6005905060208301835160405160208183855f885af180611965575f80fd5b8195505050505050919050565b5f80600290506020830183518360208183855f885af180611991575f80fd5b5050505050919050565b5f6119a461175a565b505b6103e85a11156119cd576001805f8282546119c19190612985565b925050819055506119a6565b600154905090565b5f6119de61175a565b505f65deadbeef001090505f805b84811015611a05578260011091506001810190506119ec565b505080915050919050565b5f611a1961175a565b505f65deadbeef004490505f805b84811015611a3d57449150600181019050611a27565b505080915050919050565b5f611a5161175a565b505f65deadbeef001190505f805b84811015611a7857600183119150600181019050611a5f565b505080915050919050565b5f611a8c61175a565b505f65deadbeef003e90505f5b83811015611ab15760205f803e600181019050611a99565b5080915050919050565b5f611ac461175a565b505f65deadbeef004590505f805b84811015611ae857459150600181019050611ad2565b505080915050919050565b5f611afc61175a565b505f65deadbeef000290505f5b83811015611b2257600182029150600181019050611b09565b5080915050919050565b5f611b3561175a565b505f65deadbeef000890505f5b83811015611b7b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f83089150600181019050611b42565b5080915050919050565b5f611b8e61175a565b505f65deadbeef00549050805f555f5b83811015611bb5575f549150600181019050611b9e565b5080915050919050565b5f611bc861175a565b505f65deadbeef005a90505f805b84811015611bec575a9150600181019050611bd6565b505080915050919050565b5f611c0061175a565b505f65deadbeef001990505f5b83811015611c245781199150600181019050611c0d565b5065deadbeef00198114611c3757801990505b80915050919050565b606080825114611c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7c90612a12565b60405180910390fd5b5f6007905060208301835160408482845f875af180611ca2575f80fd5b50505050919050565b5f611cb461175a565b505f65deadbeef00a19050806010525f5b83811015611cde578060066010a1600181019050611cc5565b5080915050919050565b5f611cf161175a565b505f65deadbeef001690505f5b83811015611d16578182169150600181019050611cfe565b5080915050919050565b60605f60049050602083018351604051818183855f885af180611d41575f80fd5b8195505050505050919050565b60605f600890506040828451602086015f855af180611d6b575f80fd5b5050919050565b5f6080825114611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae90612a7a565b60405180910390fd5b5f60019050602083016020810151601f1a602082015260206040516080835f865af180611de2575f80fd5b604051519350505050919050565b5f611df961175a565b505b6103e85a1115611e31576001805f828254611e169190612985565b9250508190555043600154611e2b9190612ac5565b50611dfb565b600154905090565b5f611e4261175a565b505f65deadbeef004690505f805b84811015611e6657469150600181019050611e50565b505080915050919050565b5f611e7a61175a565b505f65deadbeef000590505f5b83811015611ea057600182059150600181019050611e87565b5080915050919050565b5f611eb361175a565b505f65deadbeef003990505f5b83811015611ed85760205f8039600181019050611ec0565b5080915050919050565b5f6002838390918060018154018082558091505060019003905f5260205f20015f909192909192909192909192509182611f1d929190612c9c565b50600280549050905092915050565b5f611f3561175a565b505f65deadbeef005990505f805b84811015611f5957599150600181019050611f43565b505080915050919050565b5f611f6d61175a565b505f65deadbeef003890505f805b84811015611f9157389150600181019050611f7b565b505080915050919050565b5f611fa561175a565b505f65deadbeef004190505f805b84811015611fc957419150600181019050611fb3565b505080915050919050565b5f611fdd61175a565b505f65deadbeef003090505f805b8481101561200157309150600181019050611feb565b505080915050919050565b5f61201561175a565b505f65deadbeef00a39050806010525f5b8381101561204357600360028260066010a3600181019050612026565b5080915050919050565b5f61205661175a565b505f65deadbeef000b90505f5b8381101561207c578160200b9150600181019050612063565b5080915050919050565b5f61208f61175a565b505f65deadbeef004790505f805b848110156120b35747915060018101905061209d565b505080915050919050565b5f6120c761175a565b505f65deadbeef001c90505f805b848110156120ed57825f1c92506001810190506120d5565b505080915050919050565b5f61210161175a565b505f65deadbeef003590505f805b84811015612126575f35915060018101905061210f565b505080915050919050565b5f61213a61175a565b505f65deadbeef005590505f5b8381101561215d57815f55600181019050612147565b5080915050919050565b5f61217061175a565b505f65deadbeef001890505f5b83811015612195575f8218915060018101905061217d565b5080915050919050565b5f6121a861175a565b505f65deadbeef000390505f5b838110156121cd575f820391506001810190506121b5565b5080915050919050565b5f6121e061175a565b505f65deadbeef000790505f5b83811015612225577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820791506001810190506121ed565b5080915050919050565b5f61223861175a565b505f65deadbeef00a29050806010525f5b838110156122645760028160066010a2600181019050612249565b5080915050919050565b5f61227761175a565b505f65deadbeef000a90505f5b8381101561229d576001820a9150600181019050612284565b5080915050919050565b5f6122b061175a565b505f65deadbeef001490505f805b848110156122d65782831491506001810190506122be565b505080915050919050565b5f6122ea61175a565b505f65deadbeef004090505f600143035f5b8581101561231357814092506001810190506122fc565b50505080915050919050565b60606080825114612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c90612a12565b60405180910390fd5b5f6006905060208301835160408482845f875af180612382575f80fd5b50505050919050565b5f61239461175a565b505f65deadbeef001590505f805b848110156123b957821591506001810190506123a2565b505080915050919050565b5f6123cd61175a565b505f65deadbeef001290505f805b848110156123f4578260011291506001810190506123db565b505080915050919050565b5f61240861175a565b505f65deadbeef003b90505f305f5b8581101561242e57813b9250600181019050612417565b50505080915050919050565b5f806003905060208301835160405160148183855f885af18061245b575f80fd5b815195505050505050919050565b5f61247261175a565b505f65deadbeef000990505f5b838110156124b9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018309915060018101905061247f565b5080915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6124e6816124d4565b81146124f0575f80fd5b50565b5f81359050612501816124dd565b92915050565b5f6020828403121561251c5761251b6124cc565b5b5f612529848285016124f3565b91505092915050565b61253b816124d4565b82525050565b5f6020820190506125545f830184612532565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125a882612562565b810181811067ffffffffffffffff821117156125c7576125c6612572565b5b80604052505050565b5f6125d96124c3565b90506125e5828261259f565b919050565b5f67ffffffffffffffff82111561260457612603612572565b5b61260d82612562565b9050602081019050919050565b828183375f83830152505050565b5f61263a612635846125ea565b6125d0565b9050828152602081018484840111156126565761265561255e565b5b61266184828561261a565b509392505050565b5f82601f83011261267d5761267c61255a565b5b813561268d848260208601612628565b91505092915050565b5f602082840312156126ab576126aa6124cc565b5b5f82013567ffffffffffffffff8111156126c8576126c76124d0565b5b6126d484828501612669565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127145780820151818401526020810190506126f9565b5f8484015250505050565b5f612729826126dd565b61273381856126e7565b93506127438185602086016126f7565b61274c81612562565b840191505092915050565b5f6020820190508181035f83015261276f818461271f565b905092915050565b5f819050919050565b61278981612777565b82525050565b5f6020820190506127a25f830184612780565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127d1826127a8565b9050919050565b6127e1816127c7565b82525050565b5f6020820190506127fa5f8301846127d8565b92915050565b5f80fd5b5f80fd5b5f8083601f84011261281d5761281c61255a565b5b8235905067ffffffffffffffff81111561283a57612839612800565b5b60208301915083600182028301111561285657612855612804565b5b9250929050565b5f8060208385031215612873576128726124cc565b5b5f83013567ffffffffffffffff8111156128905761288f6124d0565b5b61289c85828601612808565b92509250509250929050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6128dc816128a8565b82525050565b5f6020820190506128f55f8301846128d3565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061293f57607f821691505b602082108103612952576129516128fb565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61298f826124d4565b915061299a836124d4565b92508282019050808211156129b2576129b1612958565b5b92915050565b5f82825260208201905092915050565b7f496e76616c696420696e707574206c656e6774680000000000000000000000005f82015250565b5f6129fc6014836129b8565b9150612a07826129c8565b602082019050919050565b5f6020820190508181035f830152612a29816129f0565b9050919050565b7f496e76616c696420696e7075742064617461206c656e6774682e0000000000005f82015250565b5f612a64601a836129b8565b9150612a6f82612a30565b602082019050919050565b5f6020820190508181035f830152612a9181612a58565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612acf826124d4565b9150612ada836124d4565b925082612aea57612ae9612a98565b5b828206905092915050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b20565b612b658683612b20565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612ba0612b9b612b96846124d4565b612b7d565b6124d4565b9050919050565b5f819050919050565b612bb983612b86565b612bcd612bc582612ba7565b848454612b2c565b825550505050565b5f90565b612be1612bd5565b612bec818484612bb0565b505050565b5b81811015612c0f57612c045f82612bd9565b600181019050612bf2565b5050565b601f821115612c5457612c2581612aff565b612c2e84612b11565b81016020851015612c3d578190505b612c51612c4985612b11565b830182612bf1565b50505b505050565b5f82821c905092915050565b5f612c745f1984600802612c59565b1980831691505092915050565b5f612c8c8383612c65565b9150826002028217905092915050565b612ca68383612af5565b67ffffffffffffffff811115612cbf57612cbe612572565b5b612cc98254612928565b612cd4828285612c13565b5f601f831160018114612d01575f8415612cef578287013590505b612cf98582612c81565b865550612d60565b601f198416612d0f86612aff565b5f5b82811015612d3657848901358255600182019150602085019450602081019050612d11565b86831015612d535784890135612d4f601f891682612c65565b8355505b6001600288020188555050505b5050505050505056fea26469706673582212203c57a6b96f48cb24258b084af1375fb6fc2d63da2324c357edaf799dddc79fb664736f6c63430008150033", + Bin: "0x608060405234801561001057600080fd5b50611d1e806100206000396000f3fe608060405234801561001057600080fd5b50600436106104545760003560e01c806380947f8011610241578063bf529ca11161013b578063dd9bef60116100c3578063f279ca8111610087578063f279ca811461098f578063f4d1fc61146109a2578063f58fc36a146109b5578063f6b0bbf7146109c8578063fde7721c146109e857600080fd5b8063dd9bef6014610930578063de97a36314610943578063e9f9b3f214610956578063ea5141e614610969578063edf003cf1461097c57600080fd5b8063ce3cf4ef1161010a578063ce3cf4ef146108d1578063d117320b146108e4578063d51e7b5b146108f7578063d53ff3fd1461090a578063d93cd5581461091d57600080fd5b8063bf529ca114610885578063c360aba614610898578063c420eb61146108ab578063c4bd65d5146108be57600080fd5b8063a18683cb116101c9578063b374012b1161018d578063b374012b14610826578063b3d847f214610839578063b7b862071461084c578063b81c14841461085f578063bdc875fc1461087257600080fd5b8063a18683cb146107c5578063a271b721146107e5578063a60a1087146107ed578063a645c9c214610800578063acaebdf61461081357600080fd5b8063962e4dc211610210578063962e4dc21461077957806398456f3e1461078c5780639a2b7c811461079f5780639cce7cf9146107b2578063a040aec6146104a857600080fd5b806380947f801461072d578063880eff3914610740578063918a5fcd1461075357806391e7b2771461076657600080fd5b80633430ec061161035257806360e13cde116102da5780636f099c8d1161029e5780636f099c8d146106ce57806371d91d28146106e15780637b6e0b0e146106f45780637c191d20146107075780637de8c6f81461071a57600080fd5b806360e13cde1461067a578063613d0a821461068d57806363138d4f146106a0578063659bbb4f146106b35780636e7f1fe7146106bb57600080fd5b806340fe26621161032157806340fe26621461061b57806344cf3bc71461062e5780634a61af1f146106415780634d2c74b3146106545780635590c2d91461066757600080fd5b80633430ec06146105da578063371303c0146105ed5780633a411f12146105f55780633a425dfc1461060857600080fd5b806318093b46116103e0578063219cddeb116103a4578063219cddeb1461057b5780632294fc7f1461058e5780632871ef85146105a15780632b21ef44146105b45780632d34e798146105c757600080fd5b806318093b461461051c57806319b621d61461052f5780631aba07ea146105425780631de2f343146105555780632007332e1461056857600080fd5b80630ba8a73b116104275780630ba8a73b146104c85780631287a68c146104db578063135d52f7146104e35780631581cf19146104f6578063165821501461050957600080fd5b8063034aef7114610459578063050082f814610482578063087b4e84146104955780630b3b996a146104a8575b600080fd5b61046c610467366004611786565b6109fb565b60405161047991906117b7565b60405180910390f35b61046c610490366004611786565b610a2d565b61046c6104a3366004611786565b610a56565b6104bb6104b63660046118bc565b610a87565b6040516104799190611953565b61046c6104d6366004611786565b610aaa565b60005461046c565b61046c6104f1366004611786565b610acf565b61046c610504366004611786565b610af1565b61046c610517366004611786565b610b1a565b61046c61052a366004611786565b610b46565b61046c61053d366004611786565b610b71565b61046c610550366004611786565b610bdd565b61046c610563366004611786565b610c13565b61046c610576366004611786565b610c40565b61046c610589366004611786565b610c62565b61046c61059c366004611786565b610c8b565b61046c6105af366004611786565b610cc0565b61046c6105c2366004611786565b610ce9565b61046c6105d5366004611786565b610d12565b6104bb6105e8366004611786565b610d3b565b61046c610de4565b61046c610603366004611786565b610dfd565b61046c610616366004611786565b610e1f565b61046c610629366004611786565b610e4a565b61046c61063c366004611786565b610e79565b61046c61064f366004611786565b610ea2565b61046c610662366004611786565b610ecf565b61046c610675366004611786565b610ef8565b61046c610688366004611786565b610f2e565b6104bb61069b3660046118bc565b610f5a565b61046c6106ae3660046118bc565b610f85565b61046c610fae565b61046c6106c9366004611786565b610fe8565b61046c6106dc366004611786565b611013565b61046c6106ef366004611786565b61103c565b61046c610702366004611786565b611067565b61046c610715366004611786565b611092565b61046c610728366004611786565b6110bb565b61046c61073b366004611786565b6110dd565b61046c61074e366004611786565b61110b565b61046c610761366004611786565b611138565b61046c610774366004611786565b611161565b6104bb6107873660046118bc565b61119f565b61046c61079a366004611786565b6111f0565b61046c6107ad366004611786565b611220565b6104bb6107c03660046118bc565b611242565b6107d86107d33660046118bc565b611262565b6040516104799190611985565b61046c6112bc565b61046c6107fb366004611786565b6112fd565b61046c61080e366004611786565b611326565b61046c610821366004611786565b611348565b61046c6108343660046119e5565b611373565b61046c610847366004611786565b6113a2565b61046c61085a366004611786565b6113cb565b61046c61086d366004611786565b6113f4565b61046c610880366004611786565b61141d565b61046c610893366004611786565b611446565b61046c6108a6366004611786565b61147a565b61046c6108b9366004611786565b61149c565b61046c6108cc366004611786565b6114c5565b61046c6108df366004611786565b6114eb565b61046c6108f2366004611786565b611516565b61046c610905366004611786565b611540565b61046c610918366004611786565b611562565b61046c61092b366004611786565b611584565b61046c61093e366004611786565b6115b0565b61046c610951366004611786565b6115e2565b61046c610964366004611786565b61160c565b61046c610977366004611786565b611635565b6104bb61098a3660046118bc565b611664565b61046c61099d366004611786565b6116a3565b61046c6109b0366004611786565b6116cd565b61046c6109c3366004611786565b6116f8565b6109db6109d63660046118bc565b611723565b6040516104799190611a42565b61046c6109f6366004611786565b611751565b6000610a05610de4565b5065deadbeef00366000805b84811015610a2457369150600101610a11565b50909392505050565b6000610a37610de4565b5065deadbeef00326000805b84811015610a2457329150600101610a43565b6000610a60610de4565b5065deadbeef005260005b83811015610a80576000829052600101610a6b565b5092915050565b606060086040828451602086016000855af180610aa357600080fd5b5050919050565b6000610ab4610de4565b5065deadbeef000160005b83811015610a8057600101610abf565b6000610ad9610de4565b5065deadbeef001760008315610a8057600101610abf565b6000610afb610de4565b5065deadbeef00346000805b84811015610a2457349150600101610b07565b6000610b24610de4565b5065deadbeef000660005b83811015610a805760001990910690600101610b2f565b6000610b50610de4565b5065deadbeef00136000805b84811015610a24576001808413925001610b5c565b6000610b7b610de4565b506001600160e01b0319600090815265deadbeef002090805b84811015610bab5760046000209150600101610b94565b507f29045a592007d0c246ef02c2223570da9522d0cf0f73282c79a1bc8f0bb2c2388114610a80575060009392505050565b6000610be7610de4565b5065deadbeef00a4601081905260005b83811015610a80576004600360028360066010a4600101610bf7565b6000610c1d610de4565b5065deadbeef001a6000805b84811015610a2457600083901a9150600101610c29565b6000610c4a610de4565b5065deadbeef001b60008315610a8057600101610abf565b6000610c6c610de4565b5065deadbeef00426000805b84811015610a2457429150600101610c78565b6000610c95610de4565b5065deadbeef0031600030815b85811015610cb65781319250600101610ca2565b5091949350505050565b6000610cca610de4565b5065deadbeef00486000805b84811015610a2457489150600101610cd6565b6000610cf3610de4565b5065deadbeef003d6000805b84811015610a24573d9150600101610cff565b6000610d1c610de4565b5065deadbeef00436000805b84811015610a2457439150600101610d28565b60028181548110610d4b57600080fd5b906000526020600020018054909150610d6390611a66565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8f90611a66565b8015610ddc5780601f10610db157610100808354040283529160200191610ddc565b820191906000526020600020905b815481529060010190602001808311610dbf57829003601f168201915b505050505081565b60008054610df3906001611aa8565b6000819055919050565b6000610e07610de4565b5065deadbeef000460008315610a8057600101610abf565b6000610e29610de4565b5065deadbeef003760005b83811015610a8057602060008037600101610e34565b6000610e54610de4565b5065deadbeef00a0601081905260005b83811015610a805760066010a0600101610e64565b6000610e83610de4565b5065deadbeef00336000805b84811015610a2457339150600101610e8f565b6000610eac610de4565b5065deadbeef005360005b83811015610a805763deadbeef600052600101610eb7565b6000610ed9610de4565b5065deadbeef003a6000805b84811015610a24573a9150600101610ee5565b6000610f02610de4565b5065deadbeef00516000818152805b84811015610f26576000519150600101610f11565b509392505050565b6000610f38610de4565b5065deadbeef001d60005b83811015610a805760009190911d90600101610f43565b6060600560208301835160405160208183856000885af180610f7b57600080fd5b5095945050505050565b600060026020830183518360208183856000885af180610fa457600080fd5b5050505050919050565b6000610fb8610de4565b505b6103e85a1115610fe1576001806000828254610fd69190611aa8565b90915550610fba9050565b5060015490565b6000610ff2610de4565b5065deadbeef00106000805b84811015610a24576001838110925001610ffe565b600061101d610de4565b5065deadbeef00446000805b84811015610a2457449150600101611029565b6000611046610de4565b5065deadbeef00116000805b84811015610a24576001808411925001611052565b6000611071610de4565b5065deadbeef003e60005b83811015610a805760206000803e60010161107c565b600061109c610de4565b5065deadbeef00456000805b84811015610a24574591506001016110a8565b60006110c5610de4565b5065deadbeef000260008315610a8057600101610abf565b60006110e7610de4565b5065deadbeef000860005b83811015610a80576000196000830891506001016110f2565b6000611115610de4565b5065deadbeef005460008181555b83811015610a80576000549150600101611123565b6000611142610de4565b5065deadbeef005a6000805b84811015610a24575a915060010161114e565b600061116b610de4565b5065deadbeef001960005b8381101561118957901990600101611176565b5065deadbeef0019811461119957195b92915050565b606081516060146111cb5760405162461bcd60e51b81526004016111c290611ae9565b60405180910390fd5b600760208301835160408482846000875af1806111e757600080fd5b50505050919050565b60006111fa610de4565b5065deadbeef00a1601081905260005b83811015610a80578060066010a160010161120a565b600061122a610de4565b5065deadbeef001660008315610a8057600101610abf565b60606004602083018351604051818183856000885af180610f7b57600080fd5b600081516080146112855760405162461bcd60e51b81526004016111c290611b2d565b6001602083016040840151601f1a602082015260206040516080836000865af1806112af57600080fd5b6040515195945050505050565b60006112c6610de4565b505b6103e85a1115610fe15760018060008282546112e49190611aa8565b90915550506001546112f7904390611b53565b506112c8565b6000611307610de4565b5065deadbeef00466000805b84811015610a2457469150600101611313565b6000611330610de4565b5065deadbeef000560008315610a8057600101610abf565b6000611352610de4565b5065deadbeef003960005b83811015610a805760206000803960010161135d565b60028054600181018255600091825283908390602084200191611397919083611c17565b505060025492915050565b60006113ac610de4565b5065deadbeef00596000805b84811015610a24575991506001016113b8565b60006113d5610de4565b5065deadbeef00386000805b84811015610a24573891506001016113e1565b60006113fe610de4565b5065deadbeef00416000805b84811015610a245741915060010161140a565b6000611427610de4565b5065deadbeef00306000805b84811015610a2457309150600101611433565b6000611450610de4565b5065deadbeef00a3601081905260005b83811015610a8057600360028260066010a3600101611460565b6000611484610de4565b5065deadbeef000b60008315610a8057600101610abf565b60006114a6610de4565b5065deadbeef00476000805b84811015610a24574791506001016114b2565b60006114cf610de4565b5065deadbeef001c6000805b84811015610a24576001016114db565b60006114f5610de4565b5065deadbeef00356000805b84811015610a24576000359150600101611501565b6000611520610de4565b5065deadbeef005560005b83811015610a8057600082905560010161152b565b600061154a610de4565b5065deadbeef001860008315610a8057600101610abf565b600061156c610de4565b5065deadbeef000360008315610a8057600101610abf565b600061158e610de4565b5065deadbeef000760005b83811015610a805760001990910790600101611599565b60006115ba610de4565b5065deadbeef00a2601081905260005b83811015610a805760028160066010a26001016115ca565b60006115ec610de4565b5065deadbeef000a60005b83811015610a805760019182900a91016115f7565b6000611616610de4565b5065deadbeef00146000805b84811015610a2457600191508101611622565b600061163f610de4565b5065deadbeef004060006000194301815b85811015610cb65781409250600101611650565b606081516080146116875760405162461bcd60e51b81526004016111c290611ae9565b600660208301835160408482846000875af1806111e757600080fd5b60006116ad610de4565b5065deadbeef00156000805b84811015610a2457821591506001016116b9565b60006116d7610de4565b5065deadbeef00126000805b84811015610a245760018381129250016116e3565b6000611702610de4565b5065deadbeef003b600030815b85811015610cb657813b925060010161170f565b6000600360208301835160405160148183856000885af18061174457600080fd5b8151979650505050505050565b600061175b610de4565b5065deadbeef000960005b83811015610a8057600019600183099150600101611766565b8035611199565b60006020828403121561179b5761179b600080fd5b60006117a7848461177f565b949350505050565b805b82525050565b6020810161119982846117af565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715611801576118016117c5565b6040525050565b60006118176000604051905090565b905061182382826117db565b919050565b600067ffffffffffffffff821115611842576118426117c5565b601f19601f83011660200192915050565b82818337506000910152565b600061187261186d84611828565b611808565b90508281526020810184848401111561188d5761188d600080fd5b610f26848285611853565b600082601f8301126118ac576118ac600080fd5b81356117a784826020860161185f565b6000602082840312156118d1576118d1600080fd5b813567ffffffffffffffff8111156118eb576118eb600080fd5b6117a784828501611898565b60005b838110156119125780820151838201526020016118fa565b50506000910152565b600061192b826000815192915050565b8084526020840193506119428185602086016118f7565b601f01601f19169290920192915050565b60208082528101611964818461191b565b9392505050565b60006001600160a01b038216611199565b6117b18161196b565b60208101611199828461197c565b60008083601f8401126119a8576119a8600080fd5b50813567ffffffffffffffff8111156119c3576119c3600080fd5b6020830191508360018202830111156119de576119de600080fd5b9250929050565b600080602083850312156119fb576119fb600080fd5b823567ffffffffffffffff811115611a1557611a15600080fd5b611a2185828601611993565b92509250509250929050565b6bffffffffffffffffffffffff1981166117b1565b602081016111998284611a2d565b634e487b7160e01b600052602260045260246000fd5b600281046001821680611a7a57607f821691505b602082108103611a8c57611a8c611a50565b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561119957611199611a92565b6014815260006020820173092dcecc2d8d2c840d2dce0eae840d8cadccee8d60631b815291505b5060200190565b6020808252810161119981611abb565b601a81526000602082017f496e76616c696420696e7075742064617461206c656e6774682e00000000000081529150611ae2565b6020808252810161119981611af9565b634e487b7160e01b600052601260045260246000fd5b600082611b6257611b62611b3d565b500690565b6000611199611b738381565b90565b611b7f83611b67565b815460001960089490940293841b1916921b91909117905550565b6000611ba7818484611b76565b505050565b81811015611bc757611bbf600082611b9a565b600101611bac565b5050565b601f821115611ba757611be981600081815281906020902092915050565b6020601f85010481016020851015611bfe5750805b611c106020601f860104830182611bac565b5050505050565b8267ffffffffffffffff811115611c3057611c306117c5565b611c3a8254611a66565b611c45828285611bcb565b6000601f831160018114611c795760008415611c615750858201355b600019600886021c1981166002860217865550611cdf565b601f198416611c9386600081815281906020902092915050565b60005b82811015611cb65788850135825560209485019460019092019101611c96565b86831015611cd257600019601f88166008021c19858a01351682555b6001600288020188555050505b5050505050505056fea2646970667358221220471b790cd04c9a9b7a3e2397533ca23ee3fe5fc3019c554e6cb3eb1ca7672c9b64736f6c63430008150033", } // LoadTesterABI is the input ABI used to generate the binding from. diff --git a/contracts/precompiledContracts.go b/contracts/src/loadtester/precompiles.go similarity index 98% rename from contracts/precompiledContracts.go rename to contracts/src/loadtester/precompiles.go index fd7e8202..5d3aaba3 100644 --- a/contracts/precompiledContracts.go +++ b/contracts/src/loadtester/precompiles.go @@ -1,4 +1,4 @@ -package contracts +package loadtester import ( "crypto/ecdsa" @@ -204,7 +204,7 @@ func CallPrecompiledContracts(address int, lt *LoadTester, opts *bind.TransactOp return lt.TestBlake2f(opts, inputData) } - return nil, fmt.Errorf("Unrecognized precompiled address %d", address) + return nil, fmt.Errorf("unrecognized precompiled address %d", address) } func GetRandomPrecompiledContractAddress() int { diff --git a/contracts/src/tokens/ERC20.abi b/contracts/src/tokens/ERC20.abi new file mode 100644 index 00000000..1c797552 --- /dev/null +++ b/contracts/src/tokens/ERC20.abi @@ -0,0 +1,328 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/contracts/src/tokens/ERC20.bin b/contracts/src/tokens/ERC20.bin new file mode 100644 index 00000000..c504aefc --- /dev/null +++ b/contracts/src/tokens/ERC20.bin @@ -0,0 +1 @@ +0x60806040523480156200001157600080fd5b506040518060400160405280600781526020016626bcaa37b5b2b760c91b815250604051806040016040528060038152602001624d544b60e81b81525081600390816200005f9190620002d0565b5060046200006e8282620002d0565b505050620000ab3362000086620000b160201b60201c565b620000969060ff16600a620004b1565b620000a590620f4240620004c6565b620000b6565b620004f6565b601290565b6001600160a01b038216620000e65760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f460008383620000f8565b5050565b6001600160a01b038316620001275780600260008282546200011b9190620004e0565b909155506200019b9050565b6001600160a01b038316600090815260208190526040902054818110156200017c5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000dd565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001b957600280548290039055620001d8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021e91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025657607f821691505b6020821081036200027757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cb57600081815260208120601f850160051c81016020861015620002a65750805b601f850160051c820191505b81811015620002c757828155600101620002b2565b5050505b505050565b81516001600160401b03811115620002ec57620002ec6200022b565b6200030481620002fd845462000241565b846200027d565b602080601f8311600181146200033c5760008415620003235750858301515b600019600386901b1c1916600185901b178555620002c7565b600085815260208120601f198616915b828110156200036d578886015182559484019460019091019084016200034c565b50858210156200038c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f3578160001904821115620003d757620003d76200039c565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000826200040c57506001620004ab565b816200041b57506000620004ab565b81600181146200043457600281146200043f576200045f565b6001915050620004ab565b60ff8411156200045357620004536200039c565b50506001821b620004ab565b5060208310610133831016604e8410600b841016171562000484575081810a620004ab565b620004908383620003b2565b8060001904821115620004a757620004a76200039c565b0290505b92915050565b6000620004bf8383620003fb565b9392505050565b8082028115828204841417620004ab57620004ab6200039c565b80820180821115620004ab57620004ab6200039c565b6107a080620005066000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a0712d6814610149578063a9059cbb1461015e578063dd62ed3e1461017157600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab6101aa565b6040516100b891906105d1565b60405180910390f35b6100d46100cf36600461063b565b61023c565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610665565b610256565b604051601281526020016100b8565b6100e86101263660046106a1565b6001600160a01b031660009081526020819052604090205490565b6100ab61027a565b61015c6101573660046106c3565b610289565b005b6100d461016c36600461063b565b610296565b6100e861017f3660046106dc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101b99061070f565b80601f01602080910402602001604051908101604052809291908181526020018280546101e59061070f565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b60003361024a8185856102a4565b60019150505b92915050565b6000336102648582856102b6565b61026f858585610339565b506001949350505050565b6060600480546101b99061070f565b6102933382610398565b50565b60003361024a818585610339565b6102b183838360016103d2565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610333578181101561032457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b610333848484840360006103d2565b50505050565b6001600160a01b03831661036357604051634b637e8f60e11b81526000600482015260240161031b565b6001600160a01b03821661038d5760405163ec442f0560e01b81526000600482015260240161031b565b6102b18383836104a7565b6001600160a01b0382166103c25760405163ec442f0560e01b81526000600482015260240161031b565b6103ce600083836104a7565b5050565b6001600160a01b0384166103fc5760405163e602df0560e01b81526000600482015260240161031b565b6001600160a01b03831661042657604051634a1406b160e11b81526000600482015260240161031b565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561033357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161049991815260200190565b60405180910390a350505050565b6001600160a01b0383166104d25780600260008282546104c79190610749565b909155506105449050565b6001600160a01b038316600090815260208190526040902054818110156105255760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031b565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166105605760028054829003905561057f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105c491815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156105fe578581018301518582016040015282016105e2565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461063657600080fd5b919050565b6000806040838503121561064e57600080fd5b6106578361061f565b946020939093013593505050565b60008060006060848603121561067a57600080fd5b6106838461061f565b92506106916020850161061f565b9150604084013590509250925092565b6000602082840312156106b357600080fd5b6106bc8261061f565b9392505050565b6000602082840312156106d557600080fd5b5035919050565b600080604083850312156106ef57600080fd5b6106f88361061f565b91506107066020840161061f565b90509250929050565b600181811c9082168061072357607f821691505b60208210810361074357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561025057634e487b7160e01b600052601160045260246000fdfea264697066735822122025c1a35600d1764ebe6d97637a88a9097bf81e9b56b0ce1de8ab1e718ea8b2b464736f6c63430008150033 diff --git a/contracts/tokens/ERC20.go b/contracts/src/tokens/ERC20.go similarity index 56% rename from contracts/tokens/ERC20.go rename to contracts/src/tokens/ERC20.go index df3d27f1..6c91b2b0 100644 --- a/contracts/tokens/ERC20.go +++ b/contracts/src/tokens/ERC20.go @@ -31,8 +31,8 @@ var ( // ERC20MetaData contains all meta data concerning the ERC20 contract. var ERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040526012600560006101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040516200149938038062001499833981810160405281019062000053919062000212565b8160039081620000649190620004e2565b508060049081620000769190620004e2565b505050620005c9565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000e8826200009d565b810181811067ffffffffffffffff821117156200010a5762000109620000ae565b5b80604052505050565b60006200011f6200007f565b90506200012d8282620000dd565b919050565b600067ffffffffffffffff82111562000150576200014f620000ae565b5b6200015b826200009d565b9050602081019050919050565b60005b83811015620001885780820151818401526020810190506200016b565b60008484015250505050565b6000620001ab620001a58462000132565b62000113565b905082815260208101848484011115620001ca57620001c962000098565b5b620001d784828562000168565b509392505050565b600082601f830112620001f757620001f662000093565b5b81516200020984826020860162000194565b91505092915050565b600080604083850312156200022c576200022b62000089565b5b600083015167ffffffffffffffff8111156200024d576200024c6200008e565b5b6200025b85828601620001df565b925050602083015167ffffffffffffffff8111156200027f576200027e6200008e565b5b6200028d85828601620001df565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ea57607f821691505b6020821081036200030057620002ff620002a2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200036a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200032b565b6200037686836200032b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003c3620003bd620003b7846200038e565b62000398565b6200038e565b9050919050565b6000819050919050565b620003df83620003a2565b620003f7620003ee82620003ca565b84845462000338565b825550505050565b600090565b6200040e620003ff565b6200041b818484620003d4565b505050565b5b8181101562000443576200043760008262000404565b60018101905062000421565b5050565b601f82111562000492576200045c8162000306565b62000467846200031b565b8101602085101562000477578190505b6200048f62000486856200031b565b83018262000420565b50505b505050565b600082821c905092915050565b6000620004b76000198460080262000497565b1980831691505092915050565b6000620004d28383620004a4565b9150826002028217905092915050565b620004ed8262000297565b67ffffffffffffffff811115620005095762000508620000ae565b5b620005158254620002d1565b6200052282828562000447565b600060209050601f8311600181146200055a576000841562000545578287015190505b620005518582620004c4565b865550620005c1565b601f1984166200056a8662000306565b60005b8281101562000594578489015182556001820191506020850194506020810190506200056d565b86831015620005b45784890151620005b0601f891682620004a4565b8355505b6001600288020188555050505b505050505050565b610ec080620005d96000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b411461023a578063a0712d6814610258578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806355b6ed5c146101da57806370a082311461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd1461014057806327e235e314610170578063313ce567146101a0575b600080fd5b6100dc6102d4565b6040516100e99190610b14565b60405180910390f35b61010c60048036038101906101079190610bcf565b610362565b6040516101199190610c2a565b60405180910390f35b61012a610454565b6040516101379190610c54565b60405180910390f35b61015a60048036038101906101559190610c6f565b61045a565b6040516101679190610c2a565b60405180910390f35b61018a60048036038101906101859190610cc2565b61060b565b6040516101979190610c54565b60405180910390f35b6101a8610623565b6040516101b59190610d0b565b60405180910390f35b6101d860048036038101906101d39190610d26565b610636565b005b6101f460048036038101906101ef9190610d53565b61070d565b6040516102019190610c54565b60405180910390f35b610224600480360381019061021f9190610cc2565b610732565b6040516102319190610c54565b60405180910390f35b61024261077b565b60405161024f9190610b14565b60405180910390f35b610272600480360381019061026d9190610d26565b610809565b005b61028e60048036038101906102899190610bcf565b6108e0565b60405161029b9190610c2a565b60405180910390f35b6102be60048036038101906102b99190610d53565b6109fd565b6040516102cb9190610c54565b60405180910390f35b600380546102e190610dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461030d90610dc2565b801561035a5780601f1061032f5761010080835404028352916020019161035a565b820191906000526020600020905b81548152906001019060200180831161033d57829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104429190610c54565b60405180910390a36001905092915050565b60005481565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e89190610e22565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461053e9190610e22565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105949190610e56565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f89190610c54565b60405180910390a3600190509392505050565b60016020528060005260406000206000915090505481565b600560009054906101000a900460ff1681565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106859190610e22565b925050819055508060008082825461069d9190610e22565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107029190610c54565b60405180910390a350565b6002602052816000526040600020602052806000526040600020600091509150505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6004805461078890610dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546107b490610dc2565b80156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b505050505081565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108589190610e56565b92505081905550806000808282546108709190610e56565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108d59190610c54565b60405180910390a350565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109319190610e22565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109879190610e56565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109eb9190610c54565b60405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610abe578082015181840152602081019050610aa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ae682610a84565b610af08185610a8f565b9350610b00818560208601610aa0565b610b0981610aca565b840191505092915050565b60006020820190508181036000830152610b2e8184610adb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b6682610b3b565b9050919050565b610b7681610b5b565b8114610b8157600080fd5b50565b600081359050610b9381610b6d565b92915050565b6000819050919050565b610bac81610b99565b8114610bb757600080fd5b50565b600081359050610bc981610ba3565b92915050565b60008060408385031215610be657610be5610b36565b5b6000610bf485828601610b84565b9250506020610c0585828601610bba565b9150509250929050565b60008115159050919050565b610c2481610c0f565b82525050565b6000602082019050610c3f6000830184610c1b565b92915050565b610c4e81610b99565b82525050565b6000602082019050610c696000830184610c45565b92915050565b600080600060608486031215610c8857610c87610b36565b5b6000610c9686828701610b84565b9350506020610ca786828701610b84565b9250506040610cb886828701610bba565b9150509250925092565b600060208284031215610cd857610cd7610b36565b5b6000610ce684828501610b84565b91505092915050565b600060ff82169050919050565b610d0581610cef565b82525050565b6000602082019050610d206000830184610cfc565b92915050565b600060208284031215610d3c57610d3b610b36565b5b6000610d4a84828501610bba565b91505092915050565b60008060408385031215610d6a57610d69610b36565b5b6000610d7885828601610b84565b9250506020610d8985828601610b84565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dda57607f821691505b602082108103610ded57610dec610d93565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e2d82610b99565b9150610e3883610b99565b9250828203905081811115610e5057610e4f610df3565b5b92915050565b6000610e6182610b99565b9150610e6c83610b99565b9250828201905080821115610e8457610e83610df3565b5b9291505056fea2646970667358221220e50dff36c097760061d643e3240fb48ba521b74057802dde5e30f1560bee7cf564736f6c63430008150033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020016626bcaa37b5b2b760c91b815250604051806040016040528060038152602001624d544b60e81b81525081600390816200005f9190620002d0565b5060046200006e8282620002d0565b505050620000ab3362000086620000b160201b60201c565b620000969060ff16600a620004b1565b620000a590620f4240620004c6565b620000b6565b620004f6565b601290565b6001600160a01b038216620000e65760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f460008383620000f8565b5050565b6001600160a01b038316620001275780600260008282546200011b9190620004e0565b909155506200019b9050565b6001600160a01b038316600090815260208190526040902054818110156200017c5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000dd565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001b957600280548290039055620001d8565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021e91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025657607f821691505b6020821081036200027757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cb57600081815260208120601f850160051c81016020861015620002a65750805b601f850160051c820191505b81811015620002c757828155600101620002b2565b5050505b505050565b81516001600160401b03811115620002ec57620002ec6200022b565b6200030481620002fd845462000241565b846200027d565b602080601f8311600181146200033c5760008415620003235750858301515b600019600386901b1c1916600185901b178555620002c7565b600085815260208120601f198616915b828110156200036d578886015182559484019460019091019084016200034c565b50858210156200038c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f3578160001904821115620003d757620003d76200039c565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000826200040c57506001620004ab565b816200041b57506000620004ab565b81600181146200043457600281146200043f576200045f565b6001915050620004ab565b60ff8411156200045357620004536200039c565b50506001821b620004ab565b5060208310610133831016604e8410600b841016171562000484575081810a620004ab565b620004908383620003b2565b8060001904821115620004a757620004a76200039c565b0290505b92915050565b6000620004bf8383620003fb565b9392505050565b8082028115828204841417620004ab57620004ab6200039c565b80820180821115620004ab57620004ab6200039c565b6107a080620005066000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461011857806395d89b4114610141578063a0712d6814610149578063a9059cbb1461015e578063dd62ed3e1461017157600080fd5b806306fdde03146100a3578063095ea7b3146100c157806318160ddd146100e457806323b872dd146100f6578063313ce56714610109575b600080fd5b6100ab6101aa565b6040516100b891906105d1565b60405180910390f35b6100d46100cf36600461063b565b61023c565b60405190151581526020016100b8565b6002545b6040519081526020016100b8565b6100d4610104366004610665565b610256565b604051601281526020016100b8565b6100e86101263660046106a1565b6001600160a01b031660009081526020819052604090205490565b6100ab61027a565b61015c6101573660046106c3565b610289565b005b6100d461016c36600461063b565b610296565b6100e861017f3660046106dc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101b99061070f565b80601f01602080910402602001604051908101604052809291908181526020018280546101e59061070f565b80156102325780601f1061020757610100808354040283529160200191610232565b820191906000526020600020905b81548152906001019060200180831161021557829003601f168201915b5050505050905090565b60003361024a8185856102a4565b60019150505b92915050565b6000336102648582856102b6565b61026f858585610339565b506001949350505050565b6060600480546101b99061070f565b6102933382610398565b50565b60003361024a818585610339565b6102b183838360016103d2565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610333578181101561032457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b610333848484840360006103d2565b50505050565b6001600160a01b03831661036357604051634b637e8f60e11b81526000600482015260240161031b565b6001600160a01b03821661038d5760405163ec442f0560e01b81526000600482015260240161031b565b6102b18383836104a7565b6001600160a01b0382166103c25760405163ec442f0560e01b81526000600482015260240161031b565b6103ce600083836104a7565b5050565b6001600160a01b0384166103fc5760405163e602df0560e01b81526000600482015260240161031b565b6001600160a01b03831661042657604051634a1406b160e11b81526000600482015260240161031b565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561033357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161049991815260200190565b60405180910390a350505050565b6001600160a01b0383166104d25780600260008282546104c79190610749565b909155506105449050565b6001600160a01b038316600090815260208190526040902054818110156105255760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031b565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166105605760028054829003905561057f565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105c491815260200190565b60405180910390a3505050565b600060208083528351808285015260005b818110156105fe578581018301518582016040015282016105e2565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461063657600080fd5b919050565b6000806040838503121561064e57600080fd5b6106578361061f565b946020939093013593505050565b60008060006060848603121561067a57600080fd5b6106838461061f565b92506106916020850161061f565b9150604084013590509250925092565b6000602082840312156106b357600080fd5b6106bc8261061f565b9392505050565b6000602082840312156106d557600080fd5b5035919050565b600080604083850312156106ef57600080fd5b6106f88361061f565b91506107066020840161061f565b90509250929050565b600181811c9082168061072357607f821691505b60208210810361074357634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561025057634e487b7160e01b600052601160045260246000fdfea264697066735822122025c1a35600d1764ebe6d97637a88a9097bf81e9b56b0ce1de8ab1e718ea8b2b464736f6c63430008150033", } // ERC20ABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ERC20ABI = ERC20MetaData.ABI var ERC20Bin = ERC20MetaData.Bin // DeployERC20 deploys a new Ethereum contract, binding an instance of ERC20 to it. -func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend, _name string, _symbol string) (common.Address, *types.Transaction, *ERC20, error) { +func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) { parsed, err := ERC20MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend, _name st return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend, _name, _symbol) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend) if err != nil { return common.Address{}, nil, nil, err } @@ -233,37 +233,6 @@ func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender) } -// Allowances is a free data retrieval call binding the contract method 0x55b6ed5c. -// -// Solidity: function allowances(address , address ) view returns(uint256) -func (_ERC20 *ERC20Caller) Allowances(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "allowances", arg0, arg1) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Allowances is a free data retrieval call binding the contract method 0x55b6ed5c. -// -// Solidity: function allowances(address , address ) view returns(uint256) -func (_ERC20 *ERC20Session) Allowances(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowances(&_ERC20.CallOpts, arg0, arg1) -} - -// Allowances is a free data retrieval call binding the contract method 0x55b6ed5c. -// -// Solidity: function allowances(address , address ) view returns(uint256) -func (_ERC20 *ERC20CallerSession) Allowances(arg0 common.Address, arg1 common.Address) (*big.Int, error) { - return _ERC20.Contract.Allowances(&_ERC20.CallOpts, arg0, arg1) -} - // BalanceOf is a free data retrieval call binding the contract method 0x70a08231. // // Solidity: function balanceOf(address account) view returns(uint256) @@ -295,37 +264,6 @@ func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, e return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account) } -// Balances is a free data retrieval call binding the contract method 0x27e235e3. -// -// Solidity: function balances(address ) view returns(uint256) -func (_ERC20 *ERC20Caller) Balances(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { - var out []interface{} - err := _ERC20.contract.Call(opts, &out, "balances", arg0) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// Balances is a free data retrieval call binding the contract method 0x27e235e3. -// -// Solidity: function balances(address ) view returns(uint256) -func (_ERC20 *ERC20Session) Balances(arg0 common.Address) (*big.Int, error) { - return _ERC20.Contract.Balances(&_ERC20.CallOpts, arg0) -} - -// Balances is a free data retrieval call binding the contract method 0x27e235e3. -// -// Solidity: function balances(address ) view returns(uint256) -func (_ERC20 *ERC20CallerSession) Balances(arg0 common.Address) (*big.Int, error) { - return _ERC20.Contract.Balances(&_ERC20.CallOpts, arg0) -} - // Decimals is a free data retrieval call binding the contract method 0x313ce567. // // Solidity: function decimals() view returns(uint8) @@ -452,44 +390,23 @@ func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) { // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "approve", spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "approve", spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ERC20 *ERC20Transactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "burn", amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ERC20 *ERC20Session) Burn(amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Burn(&_ERC20.TransactOpts, amount) -} - -// Burn is a paid mutator transaction binding the contract method 0x42966c68. -// -// Solidity: function burn(uint256 amount) returns() -func (_ERC20 *ERC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Burn(&_ERC20.TransactOpts, amount) +// Solidity: function approve(address spender, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value) } // Mint is a paid mutator transaction binding the contract method 0xa0712d68. @@ -515,44 +432,44 @@ func (_ERC20 *ERC20TransactorSession) Mint(amount *big.Int) (*types.Transaction, // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transfer", recipient, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transfer", to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) } // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // -// Solidity: function transfer(address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount) +// Solidity: function transfer(address to, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) Transfer(to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.contract.Transact(opts, "transferFrom", from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20Session) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool) -func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) { - return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount) +// Solidity: function transferFrom(address from, address to, uint256 value) returns(bool) +func (_ERC20 *ERC20TransactorSession) TransferFrom(from common.Address, to common.Address, value *big.Int) (*types.Transaction, error) { + return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, from, to, value) } // ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract. diff --git a/contracts/src/tokens/ERC20.sol b/contracts/src/tokens/ERC20.sol new file mode 100644 index 00000000..0e20477f --- /dev/null +++ b/contracts/src/tokens/ERC20.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.21; + +import {ERC20 as OZ_ERC20} from "@openzeppelin/token/ERC20/ERC20.sol" ; + +contract ERC20 is OZ_ERC20 { + constructor() OZ_ERC20("MyToken", "MTK") { + _mint(msg.sender, 1000000 * (10 ** uint256(decimals()))); + } + + function mint(uint256 amount) external { + _mint(msg.sender, amount); + } +} diff --git a/contracts/src/tokens/ERC721.abi b/contracts/src/tokens/ERC721.abi new file mode 100644 index 00000000..f4581038 --- /dev/null +++ b/contracts/src/tokens/ERC721.abi @@ -0,0 +1,471 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "currentTokenId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mintBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/contracts/src/tokens/ERC721.bin b/contracts/src/tokens/ERC721.bin new file mode 100644 index 00000000..32a3c16f --- /dev/null +++ b/contracts/src/tokens/ERC721.bin @@ -0,0 +1 @@ +0x608060405260006006553480156200001657600080fd5b5060405180604001604052806005815260200164135e53919560da1b815250604051806040016040528060048152602001631353919560e21b8152508160009081620000639190620006c7565b506001620000728282620006c7565b50505062000089336103e86200008f60201b60201c565b62000861565b60005b81811015620000d7576000600660008154620000ae9062000793565b91829055509050620000c18482620000dc565b5080620000ce8162000793565b91505062000092565b505050565b620000fe8282604051806020016040528060008152506200010260201b60201c565b5050565b6200010e83836200011d565b620000d760008484846200018b565b6001600160a01b0382166200014d57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006200015c838383620002c2565b90506001600160a01b03811615620000d7576040516339e3563760e11b81526000600482015260240162000144565b6001600160a01b0383163b15620002bc57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620001d0903390889087908790600401620007bb565b6020604051808303816000875af19250505080156200020e575060408051601f3d908101601f191682019092526200020b918101906200082e565b60015b6200027c573d8080156200023f576040519150601f19603f3d011682016040523d82523d6000602084013e62000244565b606091505b5080516000036200027457604051633250574960e11b81526001600160a01b038516600482015260240162000144565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620002ba57604051633250574960e11b81526001600160a01b038516600482015260240162000144565b505b50505050565b6000828152600260205260408120546001600160a01b0390811690831615620002f257620002f2818486620003c1565b6001600160a01b0381161562000332576200031160008581806200042b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000362576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620003ce83838362000559565b620000d7576001600160a01b038316620003ff57604051637e27328960e01b81526004810182905260240162000144565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440162000144565b80806200044057506001600160a01b03821615155b15620005295760006200045384620005e2565b90506001600160a01b03831615801590620004805750826001600160a01b0316816001600160a01b031614155b8015620004b357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620004de5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240162000144565b8115620005275783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620005da5750826001600160a01b0316846001600160a01b03161480620005b557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620005da57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200061d57604051637e27328960e01b81526004810184905260240162000144565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200064e57607f821691505b6020821081036200066f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000d757600081815260208120601f850160051c810160208610156200069e5750805b601f850160051c820191505b81811015620006bf57828155600101620006aa565b505050505050565b81516001600160401b03811115620006e357620006e362000623565b620006fb81620006f4845462000639565b8462000675565b602080601f8311600181146200073357600084156200071a5750858301515b600019600386901b1c1916600185901b178555620006bf565b600085815260208120601f198616915b82811015620007645788860151825594840194600190910190840162000743565b5085821015620007835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620007b457634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b038087168352602081871681850152856040850152608060608501528451915081608085015260005b828110156200080a5785810182015185820160a001528101620007ec565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200084157600080fd5b81516001600160e01b0319811681146200085a57600080fd5b9392505050565b61101b80620008716000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c806342842e0e11610097578063a22cb46511610066578063a22cb465146101f4578063b88d4fde14610207578063c87b56dd1461021a578063e985e9c51461022d57600080fd5b806342842e0e146101b35780636352211e146101c657806370a08231146101d957806395d89b41146101ec57600080fd5b8063081812fc116100d3578063081812fc1461014d578063095ea7b31461017857806323b872dd1461018d578063248b71fc146101a057600080fd5b80629a9b7b146100f957806301ffc9a71461011557806306fdde0314610138575b600080fd5b61010260065481565b6040519081526020015b60405180910390f35b610128610123366004610c64565b610240565b604051901515815260200161010c565b610140610292565b60405161010c9190610cd1565b61016061015b366004610ce4565b610324565b6040516001600160a01b03909116815260200161010c565b61018b610186366004610d19565b61034d565b005b61018b61019b366004610d43565b61035c565b61018b6101ae366004610d19565b6103ec565b61018b6101c1366004610d43565b610431565b6101606101d4366004610ce4565b61044c565b6101026101e7366004610d7f565b610457565b61014061049f565b61018b610202366004610d9a565b6104ae565b61018b610215366004610dec565b6104b9565b610140610228366004610ce4565b6104d0565b61012861023b366004610ec8565b610545565b60006001600160e01b031982166380ac58cd60e01b148061027157506001600160e01b03198216635b5e139f60e01b145b8061028c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102a190610efb565b80601f01602080910402602001604051908101604052809291908181526020018280546102cd90610efb565b801561031a5780601f106102ef5761010080835404028352916020019161031a565b820191906000526020600020905b8154815290600101906020018083116102fd57829003601f168201915b5050505050905090565b600061032f82610573565b506000828152600460205260409020546001600160a01b031661028c565b6103588282336105ac565b5050565b6001600160a01b03821661038b57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103988383336105b9565b9050836001600160a01b0316816001600160a01b0316146103e6576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610382565b50505050565b60005b8181101561042c57600060066000815461040890610f35565b9182905550905061041984826106b2565b508061042481610f35565b9150506103ef565b505050565b61042c838383604051806020016040528060008152506104b9565b600061028c82610573565b60006001600160a01b038216610483576040516322718ad960e21b815260006004820152602401610382565b506001600160a01b031660009081526003602052604090205490565b6060600180546102a190610efb565b6103583383836106cc565b6104c484848461035c565b6103e68484848461076b565b60606104db82610573565b5060006104f360408051602081019091526000815290565b90506000815111610513576040518060200160405280600081525061053e565b8061051d84610894565b60405160200161052e929190610f5c565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b03168061028c57604051637e27328960e01b815260048101849052602401610382565b61042c8383836001610927565b6000828152600260205260408120546001600160a01b03908116908316156105e6576105e6818486610a2d565b6001600160a01b0381161561062457610603600085600080610927565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610653576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610358828260405180602001604052806000815250610a91565b6001600160a01b0382166106fe57604051630b61174360e31b81526001600160a01b0383166004820152602401610382565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103e657604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906107ad903390889087908790600401610f8b565b6020604051808303816000875af19250505080156107e8575060408051601f3d908101601f191682019092526107e591810190610fc8565b60015b610851573d808015610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b50805160000361084957604051633250574960e11b81526001600160a01b0385166004820152602401610382565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461088d57604051633250574960e11b81526001600160a01b0385166004820152602401610382565b5050505050565b606060006108a183610aa8565b600101905060008167ffffffffffffffff8111156108c1576108c1610dd6565b6040519080825280601f01601f1916602001820160405280156108eb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846108f557509392505050565b808061093b57506001600160a01b03821615155b156109fd57600061094b84610573565b90506001600160a01b038316158015906109775750826001600160a01b0316816001600160a01b031614155b801561098a57506109888184610545565b155b156109b35760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610382565b81156109fb5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610a38838383610b80565b61042c576001600160a01b038316610a6657604051637e27328960e01b815260048101829052602401610382565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610382565b610a9b8383610be6565b61042c600084848461076b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610ae75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610b13576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b3157662386f26fc10000830492506010015b6305f5e1008310610b49576305f5e100830492506008015b6127108310610b5d57612710830492506004015b60648310610b6f576064830492506002015b600a831061028c5760010192915050565b60006001600160a01b03831615801590610bde5750826001600160a01b0316846001600160a01b03161480610bba5750610bba8484610545565b80610bde57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610c1057604051633250574960e11b815260006004820152602401610382565b6000610c1e838360006105b9565b90506001600160a01b0381161561042c576040516339e3563760e11b815260006004820152602401610382565b6001600160e01b031981168114610c6157600080fd5b50565b600060208284031215610c7657600080fd5b813561053e81610c4b565b60005b83811015610c9c578181015183820152602001610c84565b50506000910152565b60008151808452610cbd816020860160208601610c81565b601f01601f19169290920160200192915050565b60208152600061053e6020830184610ca5565b600060208284031215610cf657600080fd5b5035919050565b80356001600160a01b0381168114610d1457600080fd5b919050565b60008060408385031215610d2c57600080fd5b610d3583610cfd565b946020939093013593505050565b600080600060608486031215610d5857600080fd5b610d6184610cfd565b9250610d6f60208501610cfd565b9150604084013590509250925092565b600060208284031215610d9157600080fd5b61053e82610cfd565b60008060408385031215610dad57600080fd5b610db683610cfd565b915060208301358015158114610dcb57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e0257600080fd5b610e0b85610cfd565b9350610e1960208601610cfd565b925060408501359150606085013567ffffffffffffffff80821115610e3d57600080fd5b818701915087601f830112610e5157600080fd5b813581811115610e6357610e63610dd6565b604051601f8201601f19908116603f01168101908382118183101715610e8b57610e8b610dd6565b816040528281528a6020848701011115610ea457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610edb57600080fd5b610ee483610cfd565b9150610ef260208401610cfd565b90509250929050565b600181811c90821680610f0f57607f821691505b602082108103610f2f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060018201610f5557634e487b7160e01b600052601160045260246000fd5b5060010190565b60008351610f6e818460208801610c81565b835190830190610f82818360208801610c81565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610fbe90830184610ca5565b9695505050505050565b600060208284031215610fda57600080fd5b815161053e81610c4b56fea26469706673582212203bc992a730fb0cb439f9a792cdd699d9f015907456f7aa5ab82b107f59ec90ef64736f6c63430008150033 diff --git a/contracts/tokens/ERC721.go b/contracts/src/tokens/ERC721.go similarity index 51% rename from contracts/tokens/ERC721.go rename to contracts/src/tokens/ERC721.go index 1f55bfc1..0dfd857a 100644 --- a/contracts/tokens/ERC721.go +++ b/contracts/src/tokens/ERC721.go @@ -31,8 +31,8 @@ var ( // ERC721MetaData contains all meta data concerning the ERC721 contract. var ERC721MetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"quantity\",\"type\":\"uint256\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a06040526000600455606460809081525034801561001d57600080fd5b50608051611c7961003960003960006110260152611c796000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342842e0e1161007157806342842e0e146101625780636352211e1461017e57806370a08231146101ae578063a22cb465146101de578063b88d4fde146101fa578063e985e9c514610216576100a9565b806301ffc9a7146100ae578063081812fc146100de578063095ea7b31461010e57806323b872dd1461012a578063248b71fc14610146575b600080fd5b6100c860048036038101906100c3919061123d565b610246565b6040516100d59190611285565b60405180910390f35b6100f860048036038101906100f391906112d6565b610318565b6040516101059190611344565b60405180910390f35b6101286004803603810190610123919061138b565b6103f5565b005b610144600480360381019061013f91906113cb565b6105dd565b005b610160600480360381019061015b919061138b565b6108c7565b005b61017c600480360381019061017791906113cb565b6108d5565b005b610198600480360381019061019391906112d6565b610a0d565b6040516101a59190611344565b60405180910390f35b6101c860048036038101906101c3919061141e565b610ab8565b6040516101d5919061145a565b60405180910390f35b6101f860048036038101906101f391906114a1565b610b6f565b005b610214600480360381019061020f9190611546565b610c6c565b005b610230600480360381019061022b91906115ce565b610daa565b60405161023d9190611285565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061031157507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036103ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b19061166b565b60405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104ec5750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610522906116d7565b60405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067490611743565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e3906117af565b60405180910390fd5b6106f7833383610dd9565b610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d906116d7565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610786906117fe565b9190505550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906107db90611827565b91905055508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6108d18282610f0d565b5050565b6108e08383836105dd565b60008273ffffffffffffffffffffffffffffffffffffffff163b14806109c9575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610965939291906118a6565b6020604051808303816000875af1158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a89190611905565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff9061197e565b60405180910390fd5b505050565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa9061166b565b60405180910390fd5b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f906119ea565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610c609190611285565b60405180910390a35050565b610c778585856105dd565b60008473ffffffffffffffffffffffffffffffffffffffff163b1480610d64575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401610d00959493929190611a57565b6020604051808303816000875af1158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d439190611905565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a9061197e565b60405180910390fd5b5050505050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e9b5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610f0457506002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b90509392505050565b60006004549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a90611af1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90611b5d565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000821115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90611bef565b60405180910390fd5b816fffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110e89190611c0f565b92505081905550600081905060005b838110156111cd57818573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48460008084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081806111b790611827565b92505080806111c590611827565b9150506110f7565b508060048190555050505050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61121a816111e5565b811461122557600080fd5b50565b60008135905061123781611211565b92915050565b600060208284031215611253576112526111db565b5b600061126184828501611228565b91505092915050565b60008115159050919050565b61127f8161126a565b82525050565b600060208201905061129a6000830184611276565b92915050565b6000819050919050565b6112b3816112a0565b81146112be57600080fd5b50565b6000813590506112d0816112aa565b92915050565b6000602082840312156112ec576112eb6111db565b5b60006112fa848285016112c1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061132e82611303565b9050919050565b61133e81611323565b82525050565b60006020820190506113596000830184611335565b92915050565b61136881611323565b811461137357600080fd5b50565b6000813590506113858161135f565b92915050565b600080604083850312156113a2576113a16111db565b5b60006113b085828601611376565b92505060206113c1858286016112c1565b9150509250929050565b6000806000606084860312156113e4576113e36111db565b5b60006113f286828701611376565b935050602061140386828701611376565b9250506040611414868287016112c1565b9150509250925092565b600060208284031215611434576114336111db565b5b600061144284828501611376565b91505092915050565b611454816112a0565b82525050565b600060208201905061146f600083018461144b565b92915050565b61147e8161126a565b811461148957600080fd5b50565b60008135905061149b81611475565b92915050565b600080604083850312156114b8576114b76111db565b5b60006114c685828601611376565b92505060206114d78582860161148c565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611506576115056114e1565b5b8235905067ffffffffffffffff811115611523576115226114e6565b5b60208301915083600182028301111561153f5761153e6114eb565b5b9250929050565b600080600080600060808688031215611562576115616111db565b5b600061157088828901611376565b955050602061158188828901611376565b9450506040611592888289016112c1565b935050606086013567ffffffffffffffff8111156115b3576115b26111e0565b5b6115bf888289016114f0565b92509250509295509295909350565b600080604083850312156115e5576115e46111db565b5b60006115f385828601611376565b925050602061160485828601611376565b9150509250929050565b600082825260208201905092915050565b7f746f6b656e20646f65736e277420657869737400000000000000000000000000600082015250565b600061165560138361160e565b91506116608261161f565b602082019050919050565b6000602082019050818103600083015261168481611648565b9050919050565b7f6e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b60006116c1600e8361160e565b91506116cc8261168b565b602082019050919050565b600060208201905081810360008301526116f0816116b4565b9050919050565b7f66726f6d20213d206f776e657200000000000000000000000000000000000000600082015250565b600061172d600d8361160e565b9150611738826116f7565b602082019050919050565b6000602082019050818103600083015261175c81611720565b9050919050565b7f7472616e7366657220746f207a65726f20616464726573730000000000000000600082015250565b600061179960188361160e565b91506117a482611763565b602082019050919050565b600060208201905081810360008301526117c88161178c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611809826112a0565b91506000820361181c5761181b6117cf565b5b600182039050919050565b6000611832826112a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611864576118636117cf565b5b600182019050919050565b600082825260208201905092915050565b50565b600061189060008361186f565b915061189b82611880565b600082019050919050565b60006080820190506118bb6000830186611335565b6118c86020830185611335565b6118d5604083018461144b565b81810360608301526118e681611883565b9050949350505050565b6000815190506118ff81611211565b92915050565b60006020828403121561191b5761191a6111db565b5b6000611929848285016118f0565b91505092915050565b7f756e7361666520726563697069656e7400000000000000000000000000000000600082015250565b600061196860108361160e565b915061197382611932565b602082019050919050565b600060208201905081810360008301526119978161195b565b9050919050565b7f6f776e6572203d207a65726f2061646472657373000000000000000000000000600082015250565b60006119d460148361160e565b91506119df8261199e565b602082019050919050565b60006020820190508181036000830152611a03816119c7565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611a36838561186f565b9350611a43838584611a0a565b611a4c83611a19565b840190509392505050565b6000608082019050611a6c6000830188611335565b611a796020830187611335565b611a86604083018661144b565b8181036060830152611a99818486611a2a565b90509695505050505050565b7f6d696e7420746f207a65726f2061646472657373000000000000000000000000600082015250565b6000611adb60148361160e565b9150611ae682611aa5565b602082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f616c7265616479206d696e746564000000000000000000000000000000000000600082015250565b6000611b47600e8361160e565b9150611b5282611b11565b602082019050919050565b60006020820190508181036000830152611b7681611b3a565b9050919050565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bd960228361160e565b9150611be482611b7d565b604082019050919050565b60006020820190508181036000830152611c0881611bcc565b9050919050565b6000611c1a826112a0565b9150611c25836112a0565b9250828201905080821115611c3d57611c3c6117cf565b5b9291505056fea264697066735822122036621e4f4ef072ed94979bf338e8d15f60cd9af9e1fc693b1438f4494545594664736f6c63430008150033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405260006006553480156200001657600080fd5b5060405180604001604052806005815260200164135e53919560da1b815250604051806040016040528060048152602001631353919560e21b8152508160009081620000639190620006c7565b506001620000728282620006c7565b50505062000089336103e86200008f60201b60201c565b62000861565b60005b81811015620000d7576000600660008154620000ae9062000793565b91829055509050620000c18482620000dc565b5080620000ce8162000793565b91505062000092565b505050565b620000fe8282604051806020016040528060008152506200010260201b60201c565b5050565b6200010e83836200011d565b620000d760008484846200018b565b6001600160a01b0382166200014d57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006200015c838383620002c2565b90506001600160a01b03811615620000d7576040516339e3563760e11b81526000600482015260240162000144565b6001600160a01b0383163b15620002bc57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620001d0903390889087908790600401620007bb565b6020604051808303816000875af19250505080156200020e575060408051601f3d908101601f191682019092526200020b918101906200082e565b60015b6200027c573d8080156200023f576040519150601f19603f3d011682016040523d82523d6000602084013e62000244565b606091505b5080516000036200027457604051633250574960e11b81526001600160a01b038516600482015260240162000144565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620002ba57604051633250574960e11b81526001600160a01b038516600482015260240162000144565b505b50505050565b6000828152600260205260408120546001600160a01b0390811690831615620002f257620002f2818486620003c1565b6001600160a01b0381161562000332576200031160008581806200042b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000362576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620003ce83838362000559565b620000d7576001600160a01b038316620003ff57604051637e27328960e01b81526004810182905260240162000144565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440162000144565b80806200044057506001600160a01b03821615155b15620005295760006200045384620005e2565b90506001600160a01b03831615801590620004805750826001600160a01b0316816001600160a01b031614155b8015620004b357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620004de5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240162000144565b8115620005275783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620005da5750826001600160a01b0316846001600160a01b03161480620005b557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620005da57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200061d57604051637e27328960e01b81526004810184905260240162000144565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200064e57607f821691505b6020821081036200066f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620000d757600081815260208120601f850160051c810160208610156200069e5750805b601f850160051c820191505b81811015620006bf57828155600101620006aa565b505050505050565b81516001600160401b03811115620006e357620006e362000623565b620006fb81620006f4845462000639565b8462000675565b602080601f8311600181146200073357600084156200071a5750858301515b600019600386901b1c1916600185901b178555620006bf565b600085815260208120601f198616915b82811015620007645788860151825594840194600190910190840162000743565b5085821015620007835787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620007b457634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b038087168352602081871681850152856040850152608060608501528451915081608085015260005b828110156200080a5785810182015185820160a001528101620007ec565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200084157600080fd5b81516001600160e01b0319811681146200085a57600080fd5b9392505050565b61101b80620008716000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c806342842e0e11610097578063a22cb46511610066578063a22cb465146101f4578063b88d4fde14610207578063c87b56dd1461021a578063e985e9c51461022d57600080fd5b806342842e0e146101b35780636352211e146101c657806370a08231146101d957806395d89b41146101ec57600080fd5b8063081812fc116100d3578063081812fc1461014d578063095ea7b31461017857806323b872dd1461018d578063248b71fc146101a057600080fd5b80629a9b7b146100f957806301ffc9a71461011557806306fdde0314610138575b600080fd5b61010260065481565b6040519081526020015b60405180910390f35b610128610123366004610c64565b610240565b604051901515815260200161010c565b610140610292565b60405161010c9190610cd1565b61016061015b366004610ce4565b610324565b6040516001600160a01b03909116815260200161010c565b61018b610186366004610d19565b61034d565b005b61018b61019b366004610d43565b61035c565b61018b6101ae366004610d19565b6103ec565b61018b6101c1366004610d43565b610431565b6101606101d4366004610ce4565b61044c565b6101026101e7366004610d7f565b610457565b61014061049f565b61018b610202366004610d9a565b6104ae565b61018b610215366004610dec565b6104b9565b610140610228366004610ce4565b6104d0565b61012861023b366004610ec8565b610545565b60006001600160e01b031982166380ac58cd60e01b148061027157506001600160e01b03198216635b5e139f60e01b145b8061028c57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102a190610efb565b80601f01602080910402602001604051908101604052809291908181526020018280546102cd90610efb565b801561031a5780601f106102ef5761010080835404028352916020019161031a565b820191906000526020600020905b8154815290600101906020018083116102fd57829003601f168201915b5050505050905090565b600061032f82610573565b506000828152600460205260409020546001600160a01b031661028c565b6103588282336105ac565b5050565b6001600160a01b03821661038b57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103988383336105b9565b9050836001600160a01b0316816001600160a01b0316146103e6576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610382565b50505050565b60005b8181101561042c57600060066000815461040890610f35565b9182905550905061041984826106b2565b508061042481610f35565b9150506103ef565b505050565b61042c838383604051806020016040528060008152506104b9565b600061028c82610573565b60006001600160a01b038216610483576040516322718ad960e21b815260006004820152602401610382565b506001600160a01b031660009081526003602052604090205490565b6060600180546102a190610efb565b6103583383836106cc565b6104c484848461035c565b6103e68484848461076b565b60606104db82610573565b5060006104f360408051602081019091526000815290565b90506000815111610513576040518060200160405280600081525061053e565b8061051d84610894565b60405160200161052e929190610f5c565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b03168061028c57604051637e27328960e01b815260048101849052602401610382565b61042c8383836001610927565b6000828152600260205260408120546001600160a01b03908116908316156105e6576105e6818486610a2d565b6001600160a01b0381161561062457610603600085600080610927565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610653576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b610358828260405180602001604052806000815250610a91565b6001600160a01b0382166106fe57604051630b61174360e31b81526001600160a01b0383166004820152602401610382565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103e657604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906107ad903390889087908790600401610f8b565b6020604051808303816000875af19250505080156107e8575060408051601f3d908101601f191682019092526107e591810190610fc8565b60015b610851573d808015610816576040519150601f19603f3d011682016040523d82523d6000602084013e61081b565b606091505b50805160000361084957604051633250574960e11b81526001600160a01b0385166004820152602401610382565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461088d57604051633250574960e11b81526001600160a01b0385166004820152602401610382565b5050505050565b606060006108a183610aa8565b600101905060008167ffffffffffffffff8111156108c1576108c1610dd6565b6040519080825280601f01601f1916602001820160405280156108eb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846108f557509392505050565b808061093b57506001600160a01b03821615155b156109fd57600061094b84610573565b90506001600160a01b038316158015906109775750826001600160a01b0316816001600160a01b031614155b801561098a57506109888184610545565b155b156109b35760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610382565b81156109fb5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610a38838383610b80565b61042c576001600160a01b038316610a6657604051637e27328960e01b815260048101829052602401610382565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610382565b610a9b8383610be6565b61042c600084848461076b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610ae75772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610b13576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b3157662386f26fc10000830492506010015b6305f5e1008310610b49576305f5e100830492506008015b6127108310610b5d57612710830492506004015b60648310610b6f576064830492506002015b600a831061028c5760010192915050565b60006001600160a01b03831615801590610bde5750826001600160a01b0316846001600160a01b03161480610bba5750610bba8484610545565b80610bde57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610c1057604051633250574960e11b815260006004820152602401610382565b6000610c1e838360006105b9565b90506001600160a01b0381161561042c576040516339e3563760e11b815260006004820152602401610382565b6001600160e01b031981168114610c6157600080fd5b50565b600060208284031215610c7657600080fd5b813561053e81610c4b565b60005b83811015610c9c578181015183820152602001610c84565b50506000910152565b60008151808452610cbd816020860160208601610c81565b601f01601f19169290920160200192915050565b60208152600061053e6020830184610ca5565b600060208284031215610cf657600080fd5b5035919050565b80356001600160a01b0381168114610d1457600080fd5b919050565b60008060408385031215610d2c57600080fd5b610d3583610cfd565b946020939093013593505050565b600080600060608486031215610d5857600080fd5b610d6184610cfd565b9250610d6f60208501610cfd565b9150604084013590509250925092565b600060208284031215610d9157600080fd5b61053e82610cfd565b60008060408385031215610dad57600080fd5b610db683610cfd565b915060208301358015158114610dcb57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e0257600080fd5b610e0b85610cfd565b9350610e1960208601610cfd565b925060408501359150606085013567ffffffffffffffff80821115610e3d57600080fd5b818701915087601f830112610e5157600080fd5b813581811115610e6357610e63610dd6565b604051601f8201601f19908116603f01168101908382118183101715610e8b57610e8b610dd6565b816040528281528a6020848701011115610ea457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610edb57600080fd5b610ee483610cfd565b9150610ef260208401610cfd565b90509250929050565b600181811c90821680610f0f57607f821691505b602082108103610f2f57634e487b7160e01b600052602260045260246000fd5b50919050565b600060018201610f5557634e487b7160e01b600052601160045260246000fd5b5060010190565b60008351610f6e818460208801610c81565b835190830190610f82818360208801610c81565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610fbe90830184610ca5565b9695505050505050565b600060208284031215610fda57600080fd5b815161053e81610c4b56fea26469706673582212203bc992a730fb0cb439f9a792cdd699d9f015907456f7aa5ab82b107f59ec90ef64736f6c63430008150033", } // ERC721ABI is the input ABI used to generate the binding from. @@ -233,12 +233,43 @@ func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, e return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner) } +// CurrentTokenId is a free data retrieval call binding the contract method 0x009a9b7b. +// +// Solidity: function currentTokenId() view returns(uint256) +func (_ERC721 *ERC721Caller) CurrentTokenId(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "currentTokenId") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CurrentTokenId is a free data retrieval call binding the contract method 0x009a9b7b. +// +// Solidity: function currentTokenId() view returns(uint256) +func (_ERC721 *ERC721Session) CurrentTokenId() (*big.Int, error) { + return _ERC721.Contract.CurrentTokenId(&_ERC721.CallOpts) +} + +// CurrentTokenId is a free data retrieval call binding the contract method 0x009a9b7b. +// +// Solidity: function currentTokenId() view returns(uint256) +func (_ERC721 *ERC721CallerSession) CurrentTokenId() (*big.Int, error) { + return _ERC721.Contract.CurrentTokenId(&_ERC721.CallOpts) +} + // GetApproved is a free data retrieval call binding the contract method 0x081812fc. // -// Solidity: function getApproved(uint256 id) view returns(address) -func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, id *big.Int) (common.Address, error) { +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} - err := _ERC721.contract.Call(opts, &out, "getApproved", id) + err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId) if err != nil { return *new(common.Address), err @@ -252,24 +283,24 @@ func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, id *big.Int) (comm // GetApproved is a free data retrieval call binding the contract method 0x081812fc. // -// Solidity: function getApproved(uint256 id) view returns(address) -func (_ERC721 *ERC721Session) GetApproved(id *big.Int) (common.Address, error) { - return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, id) +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId) } // GetApproved is a free data retrieval call binding the contract method 0x081812fc. // -// Solidity: function getApproved(uint256 id) view returns(address) -func (_ERC721 *ERC721CallerSession) GetApproved(id *big.Int) (common.Address, error) { - return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, id) +// Solidity: function getApproved(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId) } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. // -// Solidity: function isApprovedForAll(address , address ) view returns(bool) -func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address) (bool, error) { +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) { var out []interface{} - err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", arg0, arg1) + err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator) if err != nil { return *new(bool), err @@ -283,24 +314,55 @@ func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, arg0 common.A // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. // -// Solidity: function isApprovedForAll(address , address ) view returns(bool) -func (_ERC721 *ERC721Session) IsApprovedForAll(arg0 common.Address, arg1 common.Address) (bool, error) { - return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, arg0, arg1) +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator) } // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5. // -// Solidity: function isApprovedForAll(address , address ) view returns(bool) -func (_ERC721 *ERC721CallerSession) IsApprovedForAll(arg0 common.Address, arg1 common.Address) (bool, error) { - return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, arg0, arg1) +// Solidity: function isApprovedForAll(address owner, address operator) view returns(bool) +func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) { + return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721 *ERC721Caller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721 *ERC721Session) Name() (string, error) { + return _ERC721.Contract.Name(&_ERC721.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC721 *ERC721CallerSession) Name() (string, error) { + return _ERC721.Contract.Name(&_ERC721.CallOpts) } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. // -// Solidity: function ownerOf(uint256 id) view returns(address owner) -func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, id *big.Int) (common.Address, error) { +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) { var out []interface{} - err := _ERC721.contract.Call(opts, &out, "ownerOf", id) + err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId) if err != nil { return *new(common.Address), err @@ -314,21 +376,21 @@ func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, id *big.Int) (common.A // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. // -// Solidity: function ownerOf(uint256 id) view returns(address owner) -func (_ERC721 *ERC721Session) OwnerOf(id *big.Int) (common.Address, error) { - return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, id) +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId) } // OwnerOf is a free data retrieval call binding the contract method 0x6352211e. // -// Solidity: function ownerOf(uint256 id) view returns(address owner) -func (_ERC721 *ERC721CallerSession) OwnerOf(id *big.Int) (common.Address, error) { - return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, id) +// Solidity: function ownerOf(uint256 tokenId) view returns(address) +func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) { + return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId) } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: function supportsInterface(bytes4 interfaceId) pure returns(bool) +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) { var out []interface{} err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId) @@ -345,100 +407,162 @@ func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: function supportsInterface(bytes4 interfaceId) pure returns(bool) +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) { return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId) } // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // -// Solidity: function supportsInterface(bytes4 interfaceId) pure returns(bool) +// Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) { return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId) } +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721 *ERC721Caller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721 *ERC721Session) Symbol() (string, error) { + return _ERC721.Contract.Symbol(&_ERC721.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC721 *ERC721CallerSession) Symbol() (string, error) { + return _ERC721.Contract.Symbol(&_ERC721.CallOpts) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721 *ERC721Caller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) { + var out []interface{} + err := _ERC721.contract.Call(opts, &out, "tokenURI", tokenId) + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721 *ERC721Session) TokenURI(tokenId *big.Int) (string, error) { + return _ERC721.Contract.TokenURI(&_ERC721.CallOpts, tokenId) +} + +// TokenURI is a free data retrieval call binding the contract method 0xc87b56dd. +// +// Solidity: function tokenURI(uint256 tokenId) view returns(string) +func (_ERC721 *ERC721CallerSession) TokenURI(tokenId *big.Int) (string, error) { + return _ERC721.Contract.TokenURI(&_ERC721.CallOpts, tokenId) +} + // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 id) returns() -func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, spender common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "approve", spender, id) +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "approve", to, tokenId) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 id) returns() -func (_ERC721 *ERC721Session) Approve(spender common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.Approve(&_ERC721.TransactOpts, spender, id) +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address spender, uint256 id) returns() -func (_ERC721 *ERC721TransactorSession) Approve(spender common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.Approve(&_ERC721.TransactOpts, spender, id) +// Solidity: function approve(address to, uint256 tokenId) returns() +func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId) } // MintBatch is a paid mutator transaction binding the contract method 0x248b71fc. // -// Solidity: function mintBatch(address to, uint256 quantity) returns() -func (_ERC721 *ERC721Transactor) MintBatch(opts *bind.TransactOpts, to common.Address, quantity *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "mintBatch", to, quantity) +// Solidity: function mintBatch(address to, uint256 amount) returns() +func (_ERC721 *ERC721Transactor) MintBatch(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "mintBatch", to, amount) } // MintBatch is a paid mutator transaction binding the contract method 0x248b71fc. // -// Solidity: function mintBatch(address to, uint256 quantity) returns() -func (_ERC721 *ERC721Session) MintBatch(to common.Address, quantity *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.MintBatch(&_ERC721.TransactOpts, to, quantity) +// Solidity: function mintBatch(address to, uint256 amount) returns() +func (_ERC721 *ERC721Session) MintBatch(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.MintBatch(&_ERC721.TransactOpts, to, amount) } // MintBatch is a paid mutator transaction binding the contract method 0x248b71fc. // -// Solidity: function mintBatch(address to, uint256 quantity) returns() -func (_ERC721 *ERC721TransactorSession) MintBatch(to common.Address, quantity *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.MintBatch(&_ERC721.TransactOpts, to, quantity) +// Solidity: function mintBatch(address to, uint256 amount) returns() +func (_ERC721 *ERC721TransactorSession) MintBatch(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.MintBatch(&_ERC721.TransactOpts, to, amount) } // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. // -// Solidity: function safeTransferFrom(address from, address to, uint256 id) returns() -func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, id) +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId) } // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. // -// Solidity: function safeTransferFrom(address from, address to, uint256 id) returns() -func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, id) +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId) } // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. // -// Solidity: function safeTransferFrom(address from, address to, uint256 id) returns() -func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, id) +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId) } // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. // -// Solidity: function safeTransferFrom(address from, address to, uint256 id, bytes data) returns() -func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int, data []byte) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, id, data) +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data) } // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. // -// Solidity: function safeTransferFrom(address from, address to, uint256 id, bytes data) returns() -func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, id *big.Int, data []byte) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, id, data) +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, data) } // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde. // -// Solidity: function safeTransferFrom(address from, address to, uint256 id, bytes data) returns() -func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, id *big.Int, data []byte) (*types.Transaction, error) { - return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, id, data) +// Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns() +func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) { + return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, data) } // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465. @@ -464,23 +588,23 @@ func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(operator common.Addres // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 id) returns() -func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.contract.Transact(opts, "transferFrom", from, to, id) +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 id) returns() -func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, id) +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId) } // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. // -// Solidity: function transferFrom(address from, address to, uint256 id) returns() -func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, id *big.Int) (*types.Transaction, error) { - return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, id) +// Solidity: function transferFrom(address from, address to, uint256 tokenId) returns() +func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId) } // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract. @@ -552,31 +676,31 @@ func (it *ERC721ApprovalIterator) Close() error { // ERC721Approval represents a Approval event raised by the ERC721 contract. type ERC721Approval struct { - Owner common.Address - Spender common.Address - Id *big.Int - Raw types.Log // Blockchain specific contextual infos + Owner common.Address + Approved common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos } // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 indexed id) -func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address, id []*big.Int) (*ERC721ApprovalIterator, error) { +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) { var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) } - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) } - logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule, idRule) + logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) if err != nil { return nil, err } @@ -585,23 +709,23 @@ func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []com // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 indexed id) -func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, spender []common.Address, id []*big.Int) (event.Subscription, error) { +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) { var ownerRule []interface{} for _, ownerItem := range owner { ownerRule = append(ownerRule, ownerItem) } - var spenderRule []interface{} - for _, spenderItem := range spender { - spenderRule = append(spenderRule, spenderItem) + var approvedRule []interface{} + for _, approvedItem := range approved { + approvedRule = append(approvedRule, approvedItem) } - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) } - logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule, idRule) + logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule) if err != nil { return nil, err } @@ -635,7 +759,7 @@ func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- * // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. // -// Solidity: event Approval(address indexed owner, address indexed spender, uint256 indexed id) +// Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) { event := new(ERC721Approval) if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil { @@ -868,16 +992,16 @@ func (it *ERC721TransferIterator) Close() error { // ERC721Transfer represents a Transfer event raised by the ERC721 contract. type ERC721Transfer struct { - From common.Address - To common.Address - Id *big.Int - Raw types.Log // Blockchain specific contextual infos + From common.Address + To common.Address + TokenId *big.Int + Raw types.Log // Blockchain specific contextual infos } // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed id) -func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, id []*big.Int) (*ERC721TransferIterator, error) { +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) { var fromRule []interface{} for _, fromItem := range from { @@ -887,12 +1011,12 @@ func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm for _, toItem := range to { toRule = append(toRule, toItem) } - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) } - logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, idRule) + logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) if err != nil { return nil, err } @@ -901,8 +1025,8 @@ func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []comm // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed id) -func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, id []*big.Int) (event.Subscription, error) { +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) +func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) { var fromRule []interface{} for _, fromItem := range from { @@ -912,12 +1036,12 @@ func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- * for _, toItem := range to { toRule = append(toRule, toItem) } - var idRule []interface{} - for _, idItem := range id { - idRule = append(idRule, idItem) + var tokenIdRule []interface{} + for _, tokenIdItem := range tokenId { + tokenIdRule = append(tokenIdRule, tokenIdItem) } - logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, idRule) + logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule) if err != nil { return nil, err } @@ -951,7 +1075,7 @@ func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- * // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. // -// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed id) +// Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId) func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) { event := new(ERC721Transfer) if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil { diff --git a/contracts/src/tokens/ERC721.sol b/contracts/src/tokens/ERC721.sol new file mode 100644 index 00000000..3b42f9f1 --- /dev/null +++ b/contracts/src/tokens/ERC721.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity ^0.8.21; + +import {ERC721 as OZ_ERC721} from "@openzeppelin/token/ERC721/ERC721.sol"; + +contract ERC721 is OZ_ERC721 { + uint256 public currentTokenId = 0; + + constructor() OZ_ERC721("MyNFT", "MNFT") { + mintBatch(msg.sender, 1000); + } + + function mintBatch(address to, uint256 amount) public { + for (uint256 i = 0; i < amount; i++) { + uint256 newTokenId = ++currentTokenId; + _safeMint(to, newTokenId); + } + } +} diff --git a/contracts/uniswapv3/IUniswapV3Pool.abi b/contracts/src/uniswapv3/IUniswapV3Pool.abi similarity index 100% rename from contracts/uniswapv3/IUniswapV3Pool.abi rename to contracts/src/uniswapv3/IUniswapV3Pool.abi diff --git a/contracts/uniswapv3/IUniswapV3Pool.go b/contracts/src/uniswapv3/IUniswapV3Pool.go similarity index 100% rename from contracts/uniswapv3/IUniswapV3Pool.go rename to contracts/src/uniswapv3/IUniswapV3Pool.go diff --git a/contracts/uniswapv3/IUniswapV3Pool.json b/contracts/src/uniswapv3/IUniswapV3Pool.json similarity index 100% rename from contracts/uniswapv3/IUniswapV3Pool.json rename to contracts/src/uniswapv3/IUniswapV3Pool.json diff --git a/contracts/uniswapv3/NFTDescriptor.abi b/contracts/src/uniswapv3/NFTDescriptor.abi similarity index 100% rename from contracts/uniswapv3/NFTDescriptor.abi rename to contracts/src/uniswapv3/NFTDescriptor.abi diff --git a/contracts/uniswapv3/NFTDescriptor.bin b/contracts/src/uniswapv3/NFTDescriptor.bin similarity index 100% rename from contracts/uniswapv3/NFTDescriptor.bin rename to contracts/src/uniswapv3/NFTDescriptor.bin diff --git a/contracts/uniswapv3/NFTDescriptor.go b/contracts/src/uniswapv3/NFTDescriptor.go similarity index 100% rename from contracts/uniswapv3/NFTDescriptor.go rename to contracts/src/uniswapv3/NFTDescriptor.go diff --git a/contracts/uniswapv3/NFTDescriptor.json b/contracts/src/uniswapv3/NFTDescriptor.json similarity index 100% rename from contracts/uniswapv3/NFTDescriptor.json rename to contracts/src/uniswapv3/NFTDescriptor.json diff --git a/contracts/uniswapv3/NonfungiblePositionManager.abi b/contracts/src/uniswapv3/NonfungiblePositionManager.abi similarity index 100% rename from contracts/uniswapv3/NonfungiblePositionManager.abi rename to contracts/src/uniswapv3/NonfungiblePositionManager.abi diff --git a/contracts/uniswapv3/NonfungiblePositionManager.bin b/contracts/src/uniswapv3/NonfungiblePositionManager.bin similarity index 100% rename from contracts/uniswapv3/NonfungiblePositionManager.bin rename to contracts/src/uniswapv3/NonfungiblePositionManager.bin diff --git a/contracts/uniswapv3/NonfungiblePositionManager.go b/contracts/src/uniswapv3/NonfungiblePositionManager.go similarity index 100% rename from contracts/uniswapv3/NonfungiblePositionManager.go rename to contracts/src/uniswapv3/NonfungiblePositionManager.go diff --git a/contracts/uniswapv3/NonfungiblePositionManager.json b/contracts/src/uniswapv3/NonfungiblePositionManager.json similarity index 100% rename from contracts/uniswapv3/NonfungiblePositionManager.json rename to contracts/src/uniswapv3/NonfungiblePositionManager.json diff --git a/contracts/uniswapv3/NonfungibleTokenPositionDescriptor.abi b/contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.abi similarity index 100% rename from contracts/uniswapv3/NonfungibleTokenPositionDescriptor.abi rename to contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.abi diff --git a/contracts/uniswapv3/NonfungibleTokenPositionDescriptor.bin b/contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.bin similarity index 100% rename from contracts/uniswapv3/NonfungibleTokenPositionDescriptor.bin rename to contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.bin diff --git a/contracts/uniswapv3/NonfungibleTokenPositionDescriptor.go b/contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.go similarity index 100% rename from contracts/uniswapv3/NonfungibleTokenPositionDescriptor.go rename to contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.go diff --git a/contracts/uniswapv3/NonfungibleTokenPositionDescriptor.json b/contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.json similarity index 100% rename from contracts/uniswapv3/NonfungibleTokenPositionDescriptor.json rename to contracts/src/uniswapv3/NonfungibleTokenPositionDescriptor.json diff --git a/contracts/uniswapv3/ProxyAdmin.abi b/contracts/src/uniswapv3/ProxyAdmin.abi similarity index 100% rename from contracts/uniswapv3/ProxyAdmin.abi rename to contracts/src/uniswapv3/ProxyAdmin.abi diff --git a/contracts/uniswapv3/ProxyAdmin.bin b/contracts/src/uniswapv3/ProxyAdmin.bin similarity index 100% rename from contracts/uniswapv3/ProxyAdmin.bin rename to contracts/src/uniswapv3/ProxyAdmin.bin diff --git a/contracts/uniswapv3/ProxyAdmin.go b/contracts/src/uniswapv3/ProxyAdmin.go similarity index 100% rename from contracts/uniswapv3/ProxyAdmin.go rename to contracts/src/uniswapv3/ProxyAdmin.go diff --git a/contracts/uniswapv3/ProxyAdmin.json b/contracts/src/uniswapv3/ProxyAdmin.json similarity index 100% rename from contracts/uniswapv3/ProxyAdmin.json rename to contracts/src/uniswapv3/ProxyAdmin.json diff --git a/contracts/uniswapv3/QuoterV2.abi b/contracts/src/uniswapv3/QuoterV2.abi similarity index 100% rename from contracts/uniswapv3/QuoterV2.abi rename to contracts/src/uniswapv3/QuoterV2.abi diff --git a/contracts/uniswapv3/QuoterV2.bin b/contracts/src/uniswapv3/QuoterV2.bin similarity index 100% rename from contracts/uniswapv3/QuoterV2.bin rename to contracts/src/uniswapv3/QuoterV2.bin diff --git a/contracts/uniswapv3/QuoterV2.go b/contracts/src/uniswapv3/QuoterV2.go similarity index 100% rename from contracts/uniswapv3/QuoterV2.go rename to contracts/src/uniswapv3/QuoterV2.go diff --git a/contracts/uniswapv3/QuoterV2.json b/contracts/src/uniswapv3/QuoterV2.json similarity index 100% rename from contracts/uniswapv3/QuoterV2.json rename to contracts/src/uniswapv3/QuoterV2.json diff --git a/contracts/uniswapv3/README.org b/contracts/src/uniswapv3/README.org similarity index 100% rename from contracts/uniswapv3/README.org rename to contracts/src/uniswapv3/README.org diff --git a/contracts/uniswapv3/SwapRouter02.abi b/contracts/src/uniswapv3/SwapRouter02.abi similarity index 100% rename from contracts/uniswapv3/SwapRouter02.abi rename to contracts/src/uniswapv3/SwapRouter02.abi diff --git a/contracts/uniswapv3/SwapRouter02.bin b/contracts/src/uniswapv3/SwapRouter02.bin similarity index 100% rename from contracts/uniswapv3/SwapRouter02.bin rename to contracts/src/uniswapv3/SwapRouter02.bin diff --git a/contracts/uniswapv3/SwapRouter02.go b/contracts/src/uniswapv3/SwapRouter02.go similarity index 100% rename from contracts/uniswapv3/SwapRouter02.go rename to contracts/src/uniswapv3/SwapRouter02.go diff --git a/contracts/uniswapv3/SwapRouter02.json b/contracts/src/uniswapv3/SwapRouter02.json similarity index 100% rename from contracts/uniswapv3/SwapRouter02.json rename to contracts/src/uniswapv3/SwapRouter02.json diff --git a/contracts/uniswapv3/Swapper.abi b/contracts/src/uniswapv3/Swapper.abi similarity index 100% rename from contracts/uniswapv3/Swapper.abi rename to contracts/src/uniswapv3/Swapper.abi diff --git a/contracts/uniswapv3/Swapper.bin b/contracts/src/uniswapv3/Swapper.bin similarity index 100% rename from contracts/uniswapv3/Swapper.bin rename to contracts/src/uniswapv3/Swapper.bin diff --git a/contracts/uniswapv3/Swapper.go b/contracts/src/uniswapv3/Swapper.go similarity index 100% rename from contracts/uniswapv3/Swapper.go rename to contracts/src/uniswapv3/Swapper.go diff --git a/contracts/uniswapv3/Swapper.json b/contracts/src/uniswapv3/Swapper.json similarity index 100% rename from contracts/uniswapv3/Swapper.json rename to contracts/src/uniswapv3/Swapper.json diff --git a/contracts/uniswapv3/Swapper.sol b/contracts/src/uniswapv3/Swapper.sol similarity index 100% rename from contracts/uniswapv3/Swapper.sol rename to contracts/src/uniswapv3/Swapper.sol diff --git a/contracts/uniswapv3/TickLens.abi b/contracts/src/uniswapv3/TickLens.abi similarity index 100% rename from contracts/uniswapv3/TickLens.abi rename to contracts/src/uniswapv3/TickLens.abi diff --git a/contracts/uniswapv3/TickLens.bin b/contracts/src/uniswapv3/TickLens.bin similarity index 100% rename from contracts/uniswapv3/TickLens.bin rename to contracts/src/uniswapv3/TickLens.bin diff --git a/contracts/uniswapv3/TickLens.go b/contracts/src/uniswapv3/TickLens.go similarity index 100% rename from contracts/uniswapv3/TickLens.go rename to contracts/src/uniswapv3/TickLens.go diff --git a/contracts/uniswapv3/TickLens.json b/contracts/src/uniswapv3/TickLens.json similarity index 100% rename from contracts/uniswapv3/TickLens.json rename to contracts/src/uniswapv3/TickLens.json diff --git a/contracts/uniswapv3/TransparentUpgradeableProxy.abi b/contracts/src/uniswapv3/TransparentUpgradeableProxy.abi similarity index 100% rename from contracts/uniswapv3/TransparentUpgradeableProxy.abi rename to contracts/src/uniswapv3/TransparentUpgradeableProxy.abi diff --git a/contracts/uniswapv3/TransparentUpgradeableProxy.bin b/contracts/src/uniswapv3/TransparentUpgradeableProxy.bin similarity index 100% rename from contracts/uniswapv3/TransparentUpgradeableProxy.bin rename to contracts/src/uniswapv3/TransparentUpgradeableProxy.bin diff --git a/contracts/uniswapv3/TransparentUpgradeableProxy.go b/contracts/src/uniswapv3/TransparentUpgradeableProxy.go similarity index 100% rename from contracts/uniswapv3/TransparentUpgradeableProxy.go rename to contracts/src/uniswapv3/TransparentUpgradeableProxy.go diff --git a/contracts/uniswapv3/TransparentUpgradeableProxy.json b/contracts/src/uniswapv3/TransparentUpgradeableProxy.json similarity index 100% rename from contracts/uniswapv3/TransparentUpgradeableProxy.json rename to contracts/src/uniswapv3/TransparentUpgradeableProxy.json diff --git a/contracts/uniswapv3/UniswapInterfaceMulticall.abi b/contracts/src/uniswapv3/UniswapInterfaceMulticall.abi similarity index 100% rename from contracts/uniswapv3/UniswapInterfaceMulticall.abi rename to contracts/src/uniswapv3/UniswapInterfaceMulticall.abi diff --git a/contracts/uniswapv3/UniswapInterfaceMulticall.bin b/contracts/src/uniswapv3/UniswapInterfaceMulticall.bin similarity index 100% rename from contracts/uniswapv3/UniswapInterfaceMulticall.bin rename to contracts/src/uniswapv3/UniswapInterfaceMulticall.bin diff --git a/contracts/uniswapv3/UniswapInterfaceMulticall.go b/contracts/src/uniswapv3/UniswapInterfaceMulticall.go similarity index 100% rename from contracts/uniswapv3/UniswapInterfaceMulticall.go rename to contracts/src/uniswapv3/UniswapInterfaceMulticall.go diff --git a/contracts/uniswapv3/UniswapInterfaceMulticall.json b/contracts/src/uniswapv3/UniswapInterfaceMulticall.json similarity index 100% rename from contracts/uniswapv3/UniswapInterfaceMulticall.json rename to contracts/src/uniswapv3/UniswapInterfaceMulticall.json diff --git a/contracts/uniswapv3/UniswapV3Factory.abi b/contracts/src/uniswapv3/UniswapV3Factory.abi similarity index 100% rename from contracts/uniswapv3/UniswapV3Factory.abi rename to contracts/src/uniswapv3/UniswapV3Factory.abi diff --git a/contracts/uniswapv3/UniswapV3Factory.bin b/contracts/src/uniswapv3/UniswapV3Factory.bin similarity index 100% rename from contracts/uniswapv3/UniswapV3Factory.bin rename to contracts/src/uniswapv3/UniswapV3Factory.bin diff --git a/contracts/uniswapv3/UniswapV3Factory.go b/contracts/src/uniswapv3/UniswapV3Factory.go similarity index 100% rename from contracts/uniswapv3/UniswapV3Factory.go rename to contracts/src/uniswapv3/UniswapV3Factory.go diff --git a/contracts/uniswapv3/UniswapV3Factory.json b/contracts/src/uniswapv3/UniswapV3Factory.json similarity index 100% rename from contracts/uniswapv3/UniswapV3Factory.json rename to contracts/src/uniswapv3/UniswapV3Factory.json diff --git a/contracts/uniswapv3/UniswapV3Staker.abi b/contracts/src/uniswapv3/UniswapV3Staker.abi similarity index 100% rename from contracts/uniswapv3/UniswapV3Staker.abi rename to contracts/src/uniswapv3/UniswapV3Staker.abi diff --git a/contracts/uniswapv3/UniswapV3Staker.bin b/contracts/src/uniswapv3/UniswapV3Staker.bin similarity index 100% rename from contracts/uniswapv3/UniswapV3Staker.bin rename to contracts/src/uniswapv3/UniswapV3Staker.bin diff --git a/contracts/uniswapv3/UniswapV3Staker.go b/contracts/src/uniswapv3/UniswapV3Staker.go similarity index 100% rename from contracts/uniswapv3/UniswapV3Staker.go rename to contracts/src/uniswapv3/UniswapV3Staker.go diff --git a/contracts/uniswapv3/UniswapV3Staker.json b/contracts/src/uniswapv3/UniswapV3Staker.json similarity index 100% rename from contracts/uniswapv3/UniswapV3Staker.json rename to contracts/src/uniswapv3/UniswapV3Staker.json diff --git a/contracts/uniswapv3/V3Migrator.abi b/contracts/src/uniswapv3/V3Migrator.abi similarity index 100% rename from contracts/uniswapv3/V3Migrator.abi rename to contracts/src/uniswapv3/V3Migrator.abi diff --git a/contracts/uniswapv3/V3Migrator.bin b/contracts/src/uniswapv3/V3Migrator.bin similarity index 100% rename from contracts/uniswapv3/V3Migrator.bin rename to contracts/src/uniswapv3/V3Migrator.bin diff --git a/contracts/uniswapv3/V3Migrator.go b/contracts/src/uniswapv3/V3Migrator.go similarity index 100% rename from contracts/uniswapv3/V3Migrator.go rename to contracts/src/uniswapv3/V3Migrator.go diff --git a/contracts/uniswapv3/V3Migrator.json b/contracts/src/uniswapv3/V3Migrator.json similarity index 100% rename from contracts/uniswapv3/V3Migrator.json rename to contracts/src/uniswapv3/V3Migrator.json diff --git a/contracts/uniswapv3/WETH9.abi b/contracts/src/uniswapv3/WETH9.abi similarity index 100% rename from contracts/uniswapv3/WETH9.abi rename to contracts/src/uniswapv3/WETH9.abi diff --git a/contracts/uniswapv3/WETH9.bin b/contracts/src/uniswapv3/WETH9.bin similarity index 100% rename from contracts/uniswapv3/WETH9.bin rename to contracts/src/uniswapv3/WETH9.bin diff --git a/contracts/uniswapv3/WETH9.go b/contracts/src/uniswapv3/WETH9.go similarity index 100% rename from contracts/uniswapv3/WETH9.go rename to contracts/src/uniswapv3/WETH9.go diff --git a/contracts/uniswapv3/WETH9.json b/contracts/src/uniswapv3/WETH9.json similarity index 100% rename from contracts/uniswapv3/WETH9.json rename to contracts/src/uniswapv3/WETH9.json diff --git a/contracts/test.yul b/contracts/src/yul/test.yul similarity index 100% rename from contracts/test.yul rename to contracts/src/yul/test.yul diff --git a/contracts/tokens/ERC20/ERC20.abi b/contracts/tokens/ERC20/ERC20.abi deleted file mode 100644 index 2cf2bc46..00000000 --- a/contracts/tokens/ERC20/ERC20.abi +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/tokens/ERC20/ERC20.bin b/contracts/tokens/ERC20/ERC20.bin deleted file mode 100644 index 809377d8..00000000 --- a/contracts/tokens/ERC20/ERC20.bin +++ /dev/null @@ -1 +0,0 @@ -60806040526012600560006101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040516200149938038062001499833981810160405281019062000053919062000212565b8160039081620000649190620004e2565b508060049081620000769190620004e2565b505050620005c9565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620000e8826200009d565b810181811067ffffffffffffffff821117156200010a5762000109620000ae565b5b80604052505050565b60006200011f6200007f565b90506200012d8282620000dd565b919050565b600067ffffffffffffffff82111562000150576200014f620000ae565b5b6200015b826200009d565b9050602081019050919050565b60005b83811015620001885780820151818401526020810190506200016b565b60008484015250505050565b6000620001ab620001a58462000132565b62000113565b905082815260208101848484011115620001ca57620001c962000098565b5b620001d784828562000168565b509392505050565b600082601f830112620001f757620001f662000093565b5b81516200020984826020860162000194565b91505092915050565b600080604083850312156200022c576200022b62000089565b5b600083015167ffffffffffffffff8111156200024d576200024c6200008e565b5b6200025b85828601620001df565b925050602083015167ffffffffffffffff8111156200027f576200027e6200008e565b5b6200028d85828601620001df565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002ea57607f821691505b6020821081036200030057620002ff620002a2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200036a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200032b565b6200037686836200032b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003c3620003bd620003b7846200038e565b62000398565b6200038e565b9050919050565b6000819050919050565b620003df83620003a2565b620003f7620003ee82620003ca565b84845462000338565b825550505050565b600090565b6200040e620003ff565b6200041b818484620003d4565b505050565b5b8181101562000443576200043760008262000404565b60018101905062000421565b5050565b601f82111562000492576200045c8162000306565b62000467846200031b565b8101602085101562000477578190505b6200048f62000486856200031b565b83018262000420565b50505b505050565b600082821c905092915050565b6000620004b76000198460080262000497565b1980831691505092915050565b6000620004d28383620004a4565b9150826002028217905092915050565b620004ed8262000297565b67ffffffffffffffff811115620005095762000508620000ae565b5b620005158254620002d1565b6200052282828562000447565b600060209050601f8311600181146200055a576000841562000545578287015190505b620005518582620004c4565b865550620005c1565b601f1984166200056a8662000306565b60005b8281101562000594578489015182556001820191506020850194506020810190506200056d565b86831015620005b45784890151620005b0601f891682620004a4565b8355505b6001600288020188555050505b505050505050565b610ec080620005d96000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b411461023a578063a0712d6814610258578063a9059cbb14610274578063dd62ed3e146102a4576100cf565b806342966c68146101be57806355b6ed5c146101da57806370a082311461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd1461014057806327e235e314610170578063313ce567146101a0575b600080fd5b6100dc6102d4565b6040516100e99190610b14565b60405180910390f35b61010c60048036038101906101079190610bcf565b610362565b6040516101199190610c2a565b60405180910390f35b61012a610454565b6040516101379190610c54565b60405180910390f35b61015a60048036038101906101559190610c6f565b61045a565b6040516101679190610c2a565b60405180910390f35b61018a60048036038101906101859190610cc2565b61060b565b6040516101979190610c54565b60405180910390f35b6101a8610623565b6040516101b59190610d0b565b60405180910390f35b6101d860048036038101906101d39190610d26565b610636565b005b6101f460048036038101906101ef9190610d53565b61070d565b6040516102019190610c54565b60405180910390f35b610224600480360381019061021f9190610cc2565b610732565b6040516102319190610c54565b60405180910390f35b61024261077b565b60405161024f9190610b14565b60405180910390f35b610272600480360381019061026d9190610d26565b610809565b005b61028e60048036038101906102899190610bcf565b6108e0565b60405161029b9190610c2a565b60405180910390f35b6102be60048036038101906102b99190610d53565b6109fd565b6040516102cb9190610c54565b60405180910390f35b600380546102e190610dc2565b80601f016020809104026020016040519081016040528092919081815260200182805461030d90610dc2565b801561035a5780601f1061032f5761010080835404028352916020019161035a565b820191906000526020600020905b81548152906001019060200180831161033d57829003601f168201915b505050505081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104429190610c54565b60405180910390a36001905092915050565b60005481565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104e89190610e22565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461053e9190610e22565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105949190610e56565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105f89190610c54565b60405180910390a3600190509392505050565b60016020528060005260406000206000915090505481565b600560009054906101000a900460ff1681565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106859190610e22565b925050819055508060008082825461069d9190610e22565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107029190610c54565b60405180910390a350565b6002602052816000526040600020602052806000526040600020600091509150505481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6004805461078890610dc2565b80601f01602080910402602001604051908101604052809291908181526020018280546107b490610dc2565b80156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b505050505081565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108589190610e56565b92505081905550806000808282546108709190610e56565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108d59190610c54565b60405180910390a350565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109319190610e22565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109879190610e56565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109eb9190610c54565b60405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610abe578082015181840152602081019050610aa3565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ae682610a84565b610af08185610a8f565b9350610b00818560208601610aa0565b610b0981610aca565b840191505092915050565b60006020820190508181036000830152610b2e8184610adb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b6682610b3b565b9050919050565b610b7681610b5b565b8114610b8157600080fd5b50565b600081359050610b9381610b6d565b92915050565b6000819050919050565b610bac81610b99565b8114610bb757600080fd5b50565b600081359050610bc981610ba3565b92915050565b60008060408385031215610be657610be5610b36565b5b6000610bf485828601610b84565b9250506020610c0585828601610bba565b9150509250929050565b60008115159050919050565b610c2481610c0f565b82525050565b6000602082019050610c3f6000830184610c1b565b92915050565b610c4e81610b99565b82525050565b6000602082019050610c696000830184610c45565b92915050565b600080600060608486031215610c8857610c87610b36565b5b6000610c9686828701610b84565b9350506020610ca786828701610b84565b9250506040610cb886828701610bba565b9150509250925092565b600060208284031215610cd857610cd7610b36565b5b6000610ce684828501610b84565b91505092915050565b600060ff82169050919050565b610d0581610cef565b82525050565b6000602082019050610d206000830184610cfc565b92915050565b600060208284031215610d3c57610d3b610b36565b5b6000610d4a84828501610bba565b91505092915050565b60008060408385031215610d6a57610d69610b36565b5b6000610d7885828601610b84565b9250506020610d8985828601610b84565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610dda57607f821691505b602082108103610ded57610dec610d93565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e2d82610b99565b9150610e3883610b99565b9250828203905081811115610e5057610e4f610df3565b5b92915050565b6000610e6182610b99565b9150610e6c83610b99565b9250828201905080821115610e8457610e83610df3565b5b9291505056fea2646970667358221220e50dff36c097760061d643e3240fb48ba521b74057802dde5e30f1560bee7cf564736f6c63430008150033 \ No newline at end of file diff --git a/contracts/tokens/ERC20/ERC20.sol b/contracts/tokens/ERC20/ERC20.sol deleted file mode 100644 index 99d3b3cd..00000000 --- a/contracts/tokens/ERC20/ERC20.sol +++ /dev/null @@ -1,83 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.21; - -// https://solidity-by-example.org/app/erc20/ - -interface IERC20 { - function totalSupply() external view returns (uint); - - function balanceOf(address account) external view returns (uint); - - function transfer(address recipient, uint amount) external returns (bool); - - function allowance(address owner, address spender) external view returns (uint); - - function approve(address spender, uint amount) external returns (bool); - - function transferFrom( - address sender, - address recipient, - uint amount - ) external returns (bool); - - event Transfer(address indexed from, address indexed to, uint value); - event Approval(address indexed owner, address indexed spender, uint value); -} - -contract ERC20 is IERC20 { - uint override public totalSupply; - mapping(address => uint) public balances; - mapping(address => mapping(address => uint)) public allowances; - string public name; - string public symbol; - uint8 public decimals = 18; - - constructor(string memory _name, string memory _symbol) { - name = _name; - symbol = _symbol; - } - - function balanceOf(address account) override external view returns (uint) { - return balances[account]; - } - - function transfer(address recipient, uint amount) override external returns (bool) { - balances[msg.sender] -= amount; - balances[recipient] += amount; - emit Transfer(msg.sender, recipient, amount); - return true; - } - function allowance(address owner, address spender) override external view returns (uint) { - return allowances[owner][spender]; - } - - function approve(address spender, uint amount) override external returns (bool) { - allowances[msg.sender][spender] = amount; - emit Approval(msg.sender, spender, amount); - return true; - } - - function transferFrom( - address sender, - address recipient, - uint amount - ) override external returns (bool) { - allowances[sender][msg.sender] -= amount; - balances[sender] -= amount; - balances[recipient] += amount; - emit Transfer(sender, recipient, amount); - return true; - } - - function mint(uint amount) external { - balances[msg.sender] += amount; - totalSupply += amount; - emit Transfer(address(0), msg.sender, amount); - } - - function burn(uint amount) external { - balances[msg.sender] -= amount; - totalSupply -= amount; - emit Transfer(msg.sender, address(0), amount); - } -} \ No newline at end of file diff --git a/contracts/tokens/ERC20/IERC20.abi b/contracts/tokens/ERC20/IERC20.abi deleted file mode 100644 index 38876a99..00000000 --- a/contracts/tokens/ERC20/IERC20.abi +++ /dev/null @@ -1 +0,0 @@ -[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/tokens/ERC20/IERC20.bin b/contracts/tokens/ERC20/IERC20.bin deleted file mode 100644 index e69de29b..00000000 diff --git a/contracts/tokens/ERC721/ERC721.abi b/contracts/tokens/ERC721/ERC721.abi deleted file mode 100644 index a6572599..00000000 --- a/contracts/tokens/ERC721/ERC721.abi +++ /dev/null @@ -1 +0,0 @@ -[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/tokens/ERC721/ERC721.bin b/contracts/tokens/ERC721/ERC721.bin deleted file mode 100644 index 18ea46cc..00000000 --- a/contracts/tokens/ERC721/ERC721.bin +++ /dev/null @@ -1 +0,0 @@ -60a06040526000600455606460809081525034801561001d57600080fd5b50608051611c7961003960003960006110260152611c796000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342842e0e1161007157806342842e0e146101625780636352211e1461017e57806370a08231146101ae578063a22cb465146101de578063b88d4fde146101fa578063e985e9c514610216576100a9565b806301ffc9a7146100ae578063081812fc146100de578063095ea7b31461010e57806323b872dd1461012a578063248b71fc14610146575b600080fd5b6100c860048036038101906100c3919061123d565b610246565b6040516100d59190611285565b60405180910390f35b6100f860048036038101906100f391906112d6565b610318565b6040516101059190611344565b60405180910390f35b6101286004803603810190610123919061138b565b6103f5565b005b610144600480360381019061013f91906113cb565b6105dd565b005b610160600480360381019061015b919061138b565b6108c7565b005b61017c600480360381019061017791906113cb565b6108d5565b005b610198600480360381019061019391906112d6565b610a0d565b6040516101a59190611344565b60405180910390f35b6101c860048036038101906101c3919061141e565b610ab8565b6040516101d5919061145a565b60405180910390f35b6101f860048036038101906101f391906114a1565b610b6f565b005b610214600480360381019061020f9190611546565b610c6c565b005b610230600480360381019061022b91906115ce565b610daa565b60405161023d9190611285565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061031157507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036103ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b19061166b565b60405180910390fd5b6002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104ec5750600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610522906116d7565b60405180910390fd5b826002600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60008082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067490611743565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e3906117af565b60405180910390fd5b6106f7833383610dd9565b610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d906116d7565b60405180910390fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610786906117fe565b9190505550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906107db90611827565b91905055508160008083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6108d18282610f0d565b5050565b6108e08383836105dd565b60008273ffffffffffffffffffffffffffffffffffffffff163b14806109c9575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b8152600401610965939291906118a6565b6020604051808303816000875af1158015610984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a89190611905565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff9061197e565b60405180910390fd5b505050565b600080600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa9061166b565b60405180910390fd5b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1f906119ea565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610c609190611285565b60405180910390a35050565b610c778585856105dd565b60008473ffffffffffffffffffffffffffffffffffffffff163b1480610d64575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401610d00959493929190611a57565b6020604051808303816000875af1158015610d1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d439190611905565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a9061197e565b60405180910390fd5b5050505050565b60036020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610e9b5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80610f0457506002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b90509392505050565b60006004549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a90611af1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90611b5d565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000821115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90611bef565b60405180910390fd5b816fffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110e89190611c0f565b92505081905550600081905060005b838110156111cd57818573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48460008084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081806111b790611827565b92505080806111c590611827565b9150506110f7565b508060048190555050505050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61121a816111e5565b811461122557600080fd5b50565b60008135905061123781611211565b92915050565b600060208284031215611253576112526111db565b5b600061126184828501611228565b91505092915050565b60008115159050919050565b61127f8161126a565b82525050565b600060208201905061129a6000830184611276565b92915050565b6000819050919050565b6112b3816112a0565b81146112be57600080fd5b50565b6000813590506112d0816112aa565b92915050565b6000602082840312156112ec576112eb6111db565b5b60006112fa848285016112c1565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061132e82611303565b9050919050565b61133e81611323565b82525050565b60006020820190506113596000830184611335565b92915050565b61136881611323565b811461137357600080fd5b50565b6000813590506113858161135f565b92915050565b600080604083850312156113a2576113a16111db565b5b60006113b085828601611376565b92505060206113c1858286016112c1565b9150509250929050565b6000806000606084860312156113e4576113e36111db565b5b60006113f286828701611376565b935050602061140386828701611376565b9250506040611414868287016112c1565b9150509250925092565b600060208284031215611434576114336111db565b5b600061144284828501611376565b91505092915050565b611454816112a0565b82525050565b600060208201905061146f600083018461144b565b92915050565b61147e8161126a565b811461148957600080fd5b50565b60008135905061149b81611475565b92915050565b600080604083850312156114b8576114b76111db565b5b60006114c685828601611376565b92505060206114d78582860161148c565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611506576115056114e1565b5b8235905067ffffffffffffffff811115611523576115226114e6565b5b60208301915083600182028301111561153f5761153e6114eb565b5b9250929050565b600080600080600060808688031215611562576115616111db565b5b600061157088828901611376565b955050602061158188828901611376565b9450506040611592888289016112c1565b935050606086013567ffffffffffffffff8111156115b3576115b26111e0565b5b6115bf888289016114f0565b92509250509295509295909350565b600080604083850312156115e5576115e46111db565b5b60006115f385828601611376565b925050602061160485828601611376565b9150509250929050565b600082825260208201905092915050565b7f746f6b656e20646f65736e277420657869737400000000000000000000000000600082015250565b600061165560138361160e565b91506116608261161f565b602082019050919050565b6000602082019050818103600083015261168481611648565b9050919050565b7f6e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b60006116c1600e8361160e565b91506116cc8261168b565b602082019050919050565b600060208201905081810360008301526116f0816116b4565b9050919050565b7f66726f6d20213d206f776e657200000000000000000000000000000000000000600082015250565b600061172d600d8361160e565b9150611738826116f7565b602082019050919050565b6000602082019050818103600083015261175c81611720565b9050919050565b7f7472616e7366657220746f207a65726f20616464726573730000000000000000600082015250565b600061179960188361160e565b91506117a482611763565b602082019050919050565b600060208201905081810360008301526117c88161178c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611809826112a0565b91506000820361181c5761181b6117cf565b5b600182039050919050565b6000611832826112a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611864576118636117cf565b5b600182019050919050565b600082825260208201905092915050565b50565b600061189060008361186f565b915061189b82611880565b600082019050919050565b60006080820190506118bb6000830186611335565b6118c86020830185611335565b6118d5604083018461144b565b81810360608301526118e681611883565b9050949350505050565b6000815190506118ff81611211565b92915050565b60006020828403121561191b5761191a6111db565b5b6000611929848285016118f0565b91505092915050565b7f756e7361666520726563697069656e7400000000000000000000000000000000600082015250565b600061196860108361160e565b915061197382611932565b602082019050919050565b600060208201905081810360008301526119978161195b565b9050919050565b7f6f776e6572203d207a65726f2061646472657373000000000000000000000000600082015250565b60006119d460148361160e565b91506119df8261199e565b602082019050919050565b60006020820190508181036000830152611a03816119c7565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611a36838561186f565b9350611a43838584611a0a565b611a4c83611a19565b840190509392505050565b6000608082019050611a6c6000830188611335565b611a796020830187611335565b611a86604083018661144b565b8181036060830152611a99818486611a2a565b90509695505050505050565b7f6d696e7420746f207a65726f2061646472657373000000000000000000000000600082015250565b6000611adb60148361160e565b9150611ae682611aa5565b602082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f616c7265616479206d696e746564000000000000000000000000000000000000600082015250565b6000611b47600e8361160e565b9150611b5282611b11565b602082019050919050565b60006020820190508181036000830152611b7681611b3a565b9050919050565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6000611bd960228361160e565b9150611be482611b7d565b604082019050919050565b60006020820190508181036000830152611c0881611bcc565b9050919050565b6000611c1a826112a0565b9150611c25836112a0565b9250828201905080821115611c3d57611c3c6117cf565b5b9291505056fea264697066735822122036621e4f4ef072ed94979bf338e8d15f60cd9af9e1fc693b1438f4494545594664736f6c63430008150033 \ No newline at end of file diff --git a/contracts/tokens/ERC721/ERC721.sol b/contracts/tokens/ERC721/ERC721.sol deleted file mode 100644 index 7f844c73..00000000 --- a/contracts/tokens/ERC721/ERC721.sol +++ /dev/null @@ -1,210 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.21; - -interface IERC165 { - function supportsInterface(bytes4 interfaceID) external view returns (bool); -} - -interface IERC721 is IERC165 { - - function balanceOf(address owner) external view returns (uint balance); - - function ownerOf(uint tokenId) external view returns (address owner); - - function safeTransferFrom( - address from, - address to, - uint tokenId - ) external; - - function safeTransferFrom( - address from, - address to, - uint tokenId, - bytes calldata data - ) external; - - function transferFrom( - address from, - address to, - uint tokenId - ) external; - - function approve(address to, uint tokenId) external; - - function getApproved(uint tokenId) external view returns (address operator); - - function setApprovalForAll(address operator, bool _approved) external; - - function isApprovedForAll(address owner, address operator) - external - view - returns (bool); -} - -interface IERC721Receiver { - function onERC721Received( - address operator, - address from, - uint tokenId, - bytes calldata data - ) external returns (bytes4); -} - -contract ERC721 is IERC721 { - - event Transfer(address indexed from, address indexed to, uint indexed id); - event Approval(address indexed owner, address indexed spender, uint indexed id); - event ApprovalForAll( - address indexed owner, - address indexed operator, - bool approved - ); - - // Mapping from token ID to owner address - mapping(uint => address) internal _ownerOf; - - // Mapping owner address to token count - mapping(address => uint) internal _balanceOf; - - // Mapping from token ID to approved address - mapping(uint => address) internal _approvals; - - // Mapping from owner to operator approvals - mapping(address => mapping(address => bool)) override public isApprovedForAll; - - uint256 private currentIndex = 0; - uint256 internal immutable maxBatchSize = 100; - - function supportsInterface(bytes4 interfaceId) override external pure returns (bool) { - return - interfaceId == type(IERC721).interfaceId || - interfaceId == type(IERC165).interfaceId; - } - - function ownerOf(uint id) override external view returns (address owner) { - owner = _ownerOf[id]; - require(owner != address(0), "token doesn't exist"); - } - - function balanceOf(address owner) override external view returns (uint) { - require(owner != address(0), "owner = zero address"); - return uint256(_balanceOf[owner]); - } - - function setApprovalForAll(address operator, bool approved) override external { - isApprovedForAll[msg.sender][operator] = approved; - emit ApprovalForAll(msg.sender, operator, approved); - } - - function approve(address spender, uint id) override external { - address owner = _ownerOf[id]; - require( - msg.sender == owner || isApprovedForAll[owner][msg.sender], - "not authorized" - ); - - _approvals[id] = spender; - - emit Approval(owner, spender, id); - } - - function getApproved(uint id) override external view returns (address) { - require(_ownerOf[id] != address(0), "token doesn't exist"); - return _approvals[id]; - } - - function _isApprovedOrOwner( - address owner, - address spender, - uint id - ) internal view returns (bool) { - return (spender == owner || - isApprovedForAll[owner][spender] || - spender == _approvals[id]); - } - - function transferFrom( - address from, - address to, - uint id - ) override public { - require(from == _ownerOf[id], "from != owner"); - require(to != address(0), "transfer to zero address"); - - require(_isApprovedOrOwner(from, msg.sender, id), "not authorized"); - - _balanceOf[from]--; - _balanceOf[to]++; - _ownerOf[id] = to; - - delete _approvals[id]; - - emit Transfer(from, to, id); - } - - function safeTransferFrom( - address from, - address to, - uint id - ) override external { - transferFrom(from, to, id); - - require( - to.code.length == 0 || - IERC721Receiver(to).onERC721Received(msg.sender, from, id, "") == - IERC721Receiver.onERC721Received.selector, - "unsafe recipient" - ); - } - - function safeTransferFrom( - address from, - address to, - uint id, - bytes calldata data - ) override external { - transferFrom(from, to, id); - - require( - to.code.length == 0 || - IERC721Receiver(to).onERC721Received(msg.sender, from, id, data) == - IERC721Receiver.onERC721Received.selector, - "unsafe recipient" - ); - } - - function _mintBatch(address to, uint quantity) internal { - uint256 startTokenId = currentIndex; - require(to != address(0), "mint to zero address"); - require(_ownerOf[startTokenId] == address(0), "already minted"); - require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high"); - - _balanceOf[to] += uint128(quantity); - - uint256 updatedIndex = startTokenId; - for (uint256 i = 0; i < quantity; i++) { - emit Transfer(address(0), to, updatedIndex); - _ownerOf[updatedIndex] = to; - updatedIndex++; - } - - currentIndex = updatedIndex; - } - - function mintBatch(address to, uint quantity) external { - _mintBatch(to, quantity); - } - - function _burn(uint id) internal { - address owner = _ownerOf[id]; - require(owner != address(0), "not minted"); - - _balanceOf[owner] -= 1; - - delete _ownerOf[id]; - delete _approvals[id]; - - emit Transfer(owner, address(0), id); - } -} \ No newline at end of file diff --git a/contracts/tokens/ERC721/IERC165.abi b/contracts/tokens/ERC721/IERC165.abi deleted file mode 100644 index dcdbc15e..00000000 --- a/contracts/tokens/ERC721/IERC165.abi +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/contracts/tokens/ERC721/IERC165.bin b/contracts/tokens/ERC721/IERC165.bin deleted file mode 100644 index e69de29b..00000000 diff --git a/contracts/tokens/ERC721/IERC721.abi b/contracts/tokens/ERC721/IERC721.abi deleted file mode 100644 index 119f8faa..00000000 --- a/contracts/tokens/ERC721/IERC721.abi +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/tokens/ERC721/IERC721.bin b/contracts/tokens/ERC721/IERC721.bin deleted file mode 100644 index e69de29b..00000000 diff --git a/contracts/tokens/ERC721/IERC721Receiver.abi b/contracts/tokens/ERC721/IERC721Receiver.abi deleted file mode 100644 index ab551930..00000000 --- a/contracts/tokens/ERC721/IERC721Receiver.abi +++ /dev/null @@ -1 +0,0 @@ -[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/contracts/tokens/ERC721/IERC721Receiver.bin b/contracts/tokens/ERC721/IERC721Receiver.bin deleted file mode 100644 index e69de29b..00000000 diff --git a/doc/polycli_rpcfuzz.md b/doc/polycli_rpcfuzz.md index da2c9bb3..c021ce5f 100644 --- a/doc/polycli_rpcfuzz.md +++ b/doc/polycli_rpcfuzz.md @@ -84,7 +84,7 @@ $ cast send \ --rpc-url localhost:8545 \ --json \ --create \ - "$(cat ./contracts/tokens/ERC20/ERC20.bin)" | jq + "$(cat ./contracts/src/tokens/ERC20.bin)" | jq ``` Once this has been completed this will be the address of the contract: `0x6fda56c57b0acadb96ed5624ac500c0429d59429`.