diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 0e05ea0b6c..6b67548a89 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -18,13 +18,6 @@ jobs: - name: Check out code into the Go module directory uses: actions/checkout@v3 - - name: Install solc - run: | - sudo apt update - sudo add-apt-repository ppa:ethereum/ethereum - sudo apt-get update - sudo apt-get install solc - - name: Get dependencies run: | make wasm @@ -51,13 +44,6 @@ jobs: with: go-version: "1.20" - - name: Install solc - run: | - sudo apt update - sudo add-apt-repository ppa:ethereum/ethereum - sudo apt-get update - sudo apt-get install solc - - name: install rust-toolchain uses: actions-rs/toolchain@v1.0.7 with: @@ -87,7 +73,6 @@ jobs: env: TEST_LANG: ${{matrix.TEST_LANG}} run: | - make compile-solidity cd contracts/wasm if [ $TEST_LANG == "go" ]; then go test ./... @@ -107,15 +92,6 @@ jobs: - name: Check out code into the Go module directory uses: actions/checkout@v3 - - name: Install solc - run: | - sudo apt update - sudo add-apt-repository ppa:ethereum/ethereum - sudo apt-get update - sudo apt-get install solc - - name: Compile solidity contracts - run: make compile-solidity - # - name: Generate SC files # run: | # cd contracts/wasm/scripts diff --git a/.github/workflows/heavy-tests.yml b/.github/workflows/heavy-tests.yml index 478e1a251e..db70bc7eda 100644 --- a/.github/workflows/heavy-tests.yml +++ b/.github/workflows/heavy-tests.yml @@ -16,12 +16,6 @@ jobs: run: | apt update apt install -y build-essential libstdc++6 software-properties-common make gcc git curl tar - - name: Install solc - id: solc - run: | - add-apt-repository ppa:ethereum/ethereum - apt-get update - apt-get install solc - name: Check out code into the Go module directory id: checkout uses: actions/checkout@v3 @@ -31,10 +25,6 @@ jobs: with: go-version: "1.20" - - name: Compile solidity contracts - id: make_solidity - run: make compile-solidity - - name: Run global scope golangci-lint id: global_lint uses: golangci/golangci-lint-action@v3 @@ -127,12 +117,6 @@ jobs: run: | apt update apt install -y build-essential libstdc++6 software-properties-common make gcc git wget curl tar - - name: Install solc - id: solc - run: | - add-apt-repository ppa:ethereum/ethereum - apt-get update - apt-get install solc - name: checkout to the directory id: checkout uses: actions/checkout@v3 @@ -191,7 +175,6 @@ jobs: env: TEST_LANG: ${{matrix.TEST_LANG}} run: | - make compile-solidity cd contracts/wasm if [ $TEST_LANG == "go" ]; then go test ./... @@ -271,12 +254,6 @@ jobs: run: | apt update apt install -y build-essential libstdc++6 software-properties-common make gcc git curl tar - - name: Install solc - id: solc - run: | - add-apt-repository ppa:ethereum/ethereum - apt-get update - apt-get install solc - name: Check out code into the Go module directory id: checkout uses: actions/checkout@v3 @@ -438,4 +415,4 @@ jobs: "repository": "${{ github.repository }}" } env: - SLACK_WEBHOOK_URL: "${{ secrets.SLACK_WEBHOOK_URL }}" \ No newline at end of file + SLACK_WEBHOOK_URL: "${{ secrets.SLACK_WEBHOOK_URL }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cac26b0a26..1de48458bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,15 +12,6 @@ jobs: - name: Check out code into the Go module directory uses: actions/checkout@v3 - - name: Install solc - run: | - sudo add-apt-repository ppa:ethereum/ethereum - sudo apt update - sudo apt install -y solc - - - name: Compile solidity contracts - run: make compile-solidity - - name: Tar temporary artifacts run: tar --exclude='temp.tar' -cf temp.tar ./ diff --git a/.gitignore b/.gitignore index 292d3b8d02..ff3676e162 100644 --- a/.gitignore +++ b/.gitignore @@ -37,10 +37,6 @@ wal/ ./snapshot ./gascalibration tests_output.log -packages/evm/**/*.bin -packages/evm/**/*.bin-runtime -packages/vm/core/evm/**/*.bin -packages/vm/core/evm/**/*.bin-runtime *__debug_bin *.blk go.work diff --git a/Makefile b/Makefile index 67a489f66d..2ca5694dcf 100644 --- a/Makefile +++ b/Makefile @@ -24,22 +24,16 @@ wasm: bash contracts/wasm/scripts/schema_all.sh compile-solidity: -ifdef SKIP_SOLIDITY - @echo "skipping compile-solidity rule" -else ifeq (, $(shell which solc)) - @echo "no solc found in PATH, evm contracts won't be compiled" -else cd packages/vm/core/evm/iscmagic && go generate cd packages/evm/evmtest && go generate -endif build-cli: cd tools/wasp-cli && go mod tidy && go build -ldflags $(BUILD_LD_FLAGS) -o ../../ -build-full: compile-solidity build-cli +build-full: build-cli $(BUILD_CMD) ./... -build: compile-solidity build-cli +build: build-cli $(BUILD_CMD) $(BUILD_PKGS) build-lint: build lint @@ -59,10 +53,10 @@ test-short: install-cli: cd tools/wasp-cli && go mod tidy && go install -ldflags $(BUILD_LD_FLAGS) -install-full: compile-solidity install-cli +install-full: install-cli $(INSTALL_CMD) ./... -install: compile-solidity install-cli install-pkgs +install: install-cli install-pkgs install-pkgs: $(INSTALL_CMD) $(BUILD_PKGS) @@ -82,7 +76,7 @@ apiclient-docker: gofumpt-list: gofumpt -l ./ -docker-build: compile-solidity +docker-build: DOCKER_BUILDKIT=1 docker build ${DOCKER_BUILD_ARGS} \ --build-arg BUILD_TAGS=${BUILD_TAGS} \ --build-arg BUILD_LD_FLAGS=${BUILD_LD_FLAGS} \ diff --git a/packages/database/manager.go b/packages/database/manager.go index 3ee8951e53..3babd2347a 100644 --- a/packages/database/manager.go +++ b/packages/database/manager.go @@ -5,10 +5,13 @@ import ( "path" "sync" + "golang.org/x/crypto/blake2b" + "github.com/iotaledger/hive.go/kvstore" hivedb "github.com/iotaledger/hive.go/kvstore/database" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/wasp/packages/hashing" "github.com/iotaledger/wasp/packages/isc" "github.com/iotaledger/wasp/packages/registry" ) @@ -69,6 +72,35 @@ func NewChainStateDatabaseManager(chainRecordRegistryProvider registry.ChainReco return m, nil } +// DBHash computes a hash from the whole DB content, for use only in testing environment. +func (m *ChainStateDatabaseManager) DBHash() (ret hashing.HashValue) { + h, err := blake2b.New256(nil) + if err != nil { + panic(err) + } + if h.Size() != hashing.HashSize { + panic("blake2b: hash size != 32") + } + for _, db := range m.databases { + err := db.database.store.Iterate([]byte{}, func(k []byte, v []byte) bool { + _, err := h.Write(k) + if err != nil { + panic(err) + } + _, err = h.Write(v) + if err != nil { + panic(err) + } + return true + }) + if err != nil { + panic(err) + } + } + copy(ret[:], h.Sum(nil)) + return +} + func (m *ChainStateDatabaseManager) chainStateKVStore(chainID isc.ChainID) kvstore.KVStore { m.mutex.RLock() defer m.mutex.RUnlock() diff --git a/packages/evm/evmtest/.gitignore b/packages/evm/evmtest/.gitignore index d683249f6c..437f18e514 100644 --- a/packages/evm/evmtest/.gitignore +++ b/packages/evm/evmtest/.gitignore @@ -7,4 +7,5 @@ ISCSandbox.* ERC20BaseTokens.* ERC20NativeTokens.* ERC721NFTs.* +ERC721NFTCollection.* IERC721Receiver.* diff --git a/packages/evm/evmtest/ERC20Basic.bin b/packages/evm/evmtest/ERC20Basic.bin new file mode 100644 index 0000000000..33f2d60bd6 --- /dev/null +++ b/packages/evm/evmtest/ERC20Basic.bin @@ -0,0 +1 @@ +608060405234801562000010575f80fd5b506040516200148a3803806200148a8339818101604052810190620000369190620002ba565b815f908162000046919062000574565b50806001908162000058919062000574565b50601260ff16600a6200006c9190620007d5565b60646200007a919062000825565b60048190555060045460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000125919062000880565b60405180910390a350506200089b565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000196826200014e565b810181811067ffffffffffffffff82111715620001b857620001b76200015e565b5b80604052505050565b5f620001cc62000135565b9050620001da82826200018b565b919050565b5f67ffffffffffffffff821115620001fc57620001fb6200015e565b5b62000207826200014e565b9050602081019050919050565b5f5b838110156200023357808201518184015260208101905062000216565b5f8484015250505050565b5f620002546200024e84620001df565b620001c1565b9050828152602081018484840111156200027357620002726200014a565b5b6200028084828562000214565b509392505050565b5f82601f8301126200029f576200029e62000146565b5b8151620002b18482602086016200023e565b91505092915050565b5f8060408385031215620002d357620002d26200013e565b5b5f83015167ffffffffffffffff811115620002f357620002f262000142565b5b620003018582860162000288565b925050602083015167ffffffffffffffff81111562000325576200032462000142565b5b620003338582860162000288565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200038c57607f821691505b602082108103620003a257620003a162000347565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c9565b620004128683620003c9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200045c6200045662000450846200042a565b62000433565b6200042a565b9050919050565b5f819050919050565b62000477836200043c565b6200048f620004868262000463565b848454620003d5565b825550505050565b5f90565b620004a562000497565b620004b28184846200046c565b505050565b5b81811015620004d957620004cd5f826200049b565b600181019050620004b8565b5050565b601f8211156200052857620004f281620003a8565b620004fd84620003ba565b810160208510156200050d578190505b620005256200051c85620003ba565b830182620004b7565b50505b505050565b5f82821c905092915050565b5f6200054a5f19846008026200052d565b1980831691505092915050565b5f62000564838362000539565b9150826002028217905092915050565b6200057f826200033d565b67ffffffffffffffff8111156200059b576200059a6200015e565b5b620005a7825462000374565b620005b4828285620004dd565b5f60209050601f831160018114620005ea575f8415620005d5578287015190505b620005e1858262000557565b86555062000650565b601f198416620005fa86620003a8565b5f5b828110156200062357848901518255600182019150602085019450602081019050620005fc565b868310156200064357848901516200063f601f89168262000539565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006e257808604811115620006ba57620006b962000658565b5b6001851615620006ca5780820291505b8081029050620006da8562000685565b94506200069a565b94509492505050565b5f82620006fc5760019050620007ce565b816200070b575f9050620007ce565b81600181146200072457600281146200072f5762000765565b6001915050620007ce565b60ff84111562000744576200074362000658565b5b8360020a9150848211156200075e576200075d62000658565b5b50620007ce565b5060208310610133831016604e8410600b84101617156200079f5782820a90508381111562000799576200079862000658565b5b620007ce565b620007ae848484600162000691565b92509050818404811115620007c857620007c762000658565b5b81810290505b9392505050565b5f620007e1826200042a565b9150620007ee836200042a565b92506200081d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006eb565b905092915050565b5f62000831826200042a565b91506200083e836200042a565b92508282026200084e816200042a565b9150828204841483151762000868576200086762000658565b5b5092915050565b6200087a816200042a565b82525050565b5f602082019050620008955f8301846200086f565b92915050565b610be180620008a95f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063313ce56711610059578063313ce567146100fd57806370a082311461011b578063a9059cbb1461014b578063dd62ed3e1461017b5761007b565b8063095ea7b31461007f57806318160ddd146100af57806323b872dd146100cd575b5f80fd5b61009960048036038101906100949190610965565b6101ab565b6040516100a691906109bd565b60405180910390f35b6100b7610298565b6040516100c491906109e5565b60405180910390f35b6100e760048036038101906100e291906109fe565b6102a1565b6040516100f491906109bd565b60405180910390f35b6101056105ed565b6040516101129190610a69565b60405180910390f35b61013560048036038101906101309190610a82565b6105f2565b60405161014291906109e5565b60405180910390f35b61016560048036038101906101609190610965565b610638565b60405161017291906109bd565b60405180910390f35b61019560048036038101906101909190610aad565b610801565b6040516101a291906109e5565b60405180910390f35b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161028691906109e5565b60405180910390a36001905092915050565b5f600454905090565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156102eb575f80fd5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482111561036f575f80fd5b6103b660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061047960035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061053c60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105da91906109e5565b60405180910390a3600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610682575f80fd5b6106c960025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061075160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef91906109e5565b60405180910390a36001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8282111561089557610894610aeb565b5b81836108a19190610b45565b905092915050565b5f8082846108b79190610b78565b9050838110156108ca576108c9610aeb565b5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610901826108d8565b9050919050565b610911816108f7565b811461091b575f80fd5b50565b5f8135905061092c81610908565b92915050565b5f819050919050565b61094481610932565b811461094e575f80fd5b50565b5f8135905061095f8161093b565b92915050565b5f806040838503121561097b5761097a6108d4565b5b5f6109888582860161091e565b925050602061099985828601610951565b9150509250929050565b5f8115159050919050565b6109b7816109a3565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df81610932565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f805f60608486031215610a1557610a146108d4565b5b5f610a228682870161091e565b9350506020610a338682870161091e565b9250506040610a4486828701610951565b9150509250925092565b5f60ff82169050919050565b610a6381610a4e565b82525050565b5f602082019050610a7c5f830184610a5a565b92915050565b5f60208284031215610a9757610a966108d4565b5b5f610aa48482850161091e565b91505092915050565b5f8060408385031215610ac357610ac26108d4565b5b5f610ad08582860161091e565b9250506020610ae18582860161091e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4f82610932565b9150610b5a83610932565b9250828203905081811115610b7257610b71610b18565b5b92915050565b5f610b8282610932565b9150610b8d83610932565b9250828201905080821115610ba557610ba4610b18565b5b9291505056fea26469706673582212200bc9479ca491b6518e37ccc893181aa21033008260bf853ad1d698085361ff7b64736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/ERC20Basic.bin-runtime b/packages/evm/evmtest/ERC20Basic.bin-runtime new file mode 100644 index 0000000000..bbf8610b4d --- /dev/null +++ b/packages/evm/evmtest/ERC20Basic.bin-runtime @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063313ce56711610059578063313ce567146100fd57806370a082311461011b578063a9059cbb1461014b578063dd62ed3e1461017b5761007b565b8063095ea7b31461007f57806318160ddd146100af57806323b872dd146100cd575b5f80fd5b61009960048036038101906100949190610965565b6101ab565b6040516100a691906109bd565b60405180910390f35b6100b7610298565b6040516100c491906109e5565b60405180910390f35b6100e760048036038101906100e291906109fe565b6102a1565b6040516100f491906109bd565b60405180910390f35b6101056105ed565b6040516101129190610a69565b60405180910390f35b61013560048036038101906101309190610a82565b6105f2565b60405161014291906109e5565b60405180910390f35b61016560048036038101906101609190610965565b610638565b60405161017291906109bd565b60405180910390f35b61019560048036038101906101909190610aad565b610801565b6040516101a291906109e5565b60405180910390f35b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161028691906109e5565b60405180910390a36001905092915050565b5f600454905090565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156102eb575f80fd5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482111561036f575f80fd5b6103b660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061047960035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061053c60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105da91906109e5565b60405180910390a3600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610682575f80fd5b6106c960025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061075160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef91906109e5565b60405180910390a36001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8282111561089557610894610aeb565b5b81836108a19190610b45565b905092915050565b5f8082846108b79190610b78565b9050838110156108ca576108c9610aeb565b5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610901826108d8565b9050919050565b610911816108f7565b811461091b575f80fd5b50565b5f8135905061092c81610908565b92915050565b5f819050919050565b61094481610932565b811461094e575f80fd5b50565b5f8135905061095f8161093b565b92915050565b5f806040838503121561097b5761097a6108d4565b5b5f6109888582860161091e565b925050602061099985828601610951565b9150509250929050565b5f8115159050919050565b6109b7816109a3565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df81610932565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f805f60608486031215610a1557610a146108d4565b5b5f610a228682870161091e565b9350506020610a338682870161091e565b9250506040610a4486828701610951565b9150509250925092565b5f60ff82169050919050565b610a6381610a4e565b82525050565b5f602082019050610a7c5f830184610a5a565b92915050565b5f60208284031215610a9757610a966108d4565b5b5f610aa48482850161091e565b91505092915050565b5f8060408385031215610ac357610ac26108d4565b5b5f610ad08582860161091e565b9250506020610ae18582860161091e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4f82610932565b9150610b5a83610932565b9250828203905081811115610b7257610b71610b18565b5b92915050565b5f610b8282610932565b9150610b8d83610932565b9250828201905080821115610ba557610ba4610b18565b5b9291505056fea26469706673582212200bc9479ca491b6518e37ccc893181aa21033008260bf853ad1d698085361ff7b64736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/ERC20Example.bin b/packages/evm/evmtest/ERC20Example.bin new file mode 100644 index 0000000000..9ceb9d0177 --- /dev/null +++ b/packages/evm/evmtest/ERC20Example.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b50610aea8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80634deefc5a14610043578063afc1cf661461005f578063b231b87d1461007b575b5f80fd5b61005d6004803603810190610058919061039c565b610097565b005b6100796004803603810190610074919061054c565b610163565b005b6100956004803603810190610090919061039c565b610202565b005b61009f6102d3565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166367d52f6d826100e38561029b565b6040518363ffffffff1660e01b8152600401610100929190610901565b6020604051808303815f875af115801561011c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101409190610968565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4f50c425f8054906101000a900463ffffffff168686866101af8761029b565b6040518663ffffffff1660e01b81526004016101cf959493929190610a03565b5f604051808303815f87803b1580156101e6575f80fd5b505af11580156101f8573d5f803e3d5ffd5b5050505050505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc75f8054906101000a900463ffffffff168461024c8561029b565b6040518463ffffffff1660e01b815260040161026a93929190610a78565b5f604051808303815f87803b158015610281575f80fd5b505af1158015610293573d5f803e3d5ffd5b505050505050565b6102a36102f1565b6102ab6102f1565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505080915050919050565b60405180606001604052805f81526020015f81526020015f81525090565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61033e8161032c565b8114610348575f80fd5b50565b5f8135905061035981610335565b92915050565b5f67ffffffffffffffff82169050919050565b61037b8161035f565b8114610385575f80fd5b50565b5f8135905061039681610372565b92915050565b5f80604083850312156103b2576103b1610324565b5b5f6103bf8582860161034b565b92505060206103d085828601610388565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610428826103e2565b810181811067ffffffffffffffff82111715610447576104466103f2565b5b80604052505050565b5f61045961031b565b9050610465828261041f565b919050565b5f67ffffffffffffffff821115610484576104836103f2565b5b61048d826103e2565b9050602081019050919050565b828183375f83830152505050565b5f6104ba6104b58461046a565b610450565b9050828152602081018484840111156104d6576104d56103de565b5b6104e184828561049a565b509392505050565b5f82601f8301126104fd576104fc6103da565b5b813561050d8482602086016104a8565b91505092915050565b5f60ff82169050919050565b61052b81610516565b8114610535575f80fd5b50565b5f8135905061054681610522565b92915050565b5f805f806080858703121561056457610563610324565b5b5f85013567ffffffffffffffff81111561058157610580610328565b5b61058d878288016104e9565b945050602085013567ffffffffffffffff8111156105ae576105ad610328565b5b6105ba878288016104e9565b93505060406105cb87828801610538565b92505060606105dc87828801610388565b91505092959194509250565b6105f18161032c565b82525050565b606082015f82015161060b5f8501826105e8565b50602082015161061e60208501826105e8565b50604082015161063160408501826105e8565b50505050565b6106408161035f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156106a657808201518184015260208101905061068b565b5f8484015250505050565b5f6106bb8261066f565b6106c58185610679565b93506106d5818560208601610689565b6106de816103e2565b840191505092915050565b5f602083015f8301518482035f86015261070382826106b1565b9150508091505092915050565b5f604083015f8301518482035f86015261072a82826106e9565b915050602083015161073f60208601826105e8565b508091505092915050565b5f6107558383610710565b905092915050565b5f602082019050919050565b5f61077382610646565b61077d8185610650565b93508360208202850161078f85610660565b805f5b858110156107ca57848403895281516107ab858261074a565b94506107b68361075d565b925060208a01995050600181019050610792565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61081882610805565b9050919050565b6108288161080e565b82525050565b5f610839838361081f565b60208301905092915050565b5f602082019050919050565b5f61085b826107dc565b61086581856107e6565b9350610870836107f6565b805f5b838110156108a0578151610887888261082e565b975061089283610845565b925050600181019050610873565b5085935050505092915050565b5f606083015f8301516108c25f860182610637565b50602083015184820360208601526108da8282610769565b915050604083015184820360408601526108f48282610851565b9150508091505092915050565b5f6080820190506109145f8301856105f7565b818103606083015261092681846108ad565b90509392505050565b5f63ffffffff82169050919050565b6109478161092f565b8114610951575f80fd5b50565b5f815190506109628161093e565b92915050565b5f6020828403121561097d5761097c610324565b5b5f61098a84828501610954565b91505092915050565b61099c8161092f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6109c6826109a2565b6109d081856109ac565b93506109e0818560208601610689565b6109e9816103e2565b840191505092915050565b6109fd81610516565b82525050565b5f60a082019050610a165f830188610993565b8181036020830152610a2881876109bc565b90508181036040830152610a3c81866109bc565b9050610a4b60608301856109f4565b8181036080830152610a5d81846108ad565b90509695505050505050565b610a728161032c565b82525050565b5f606082019050610a8b5f830186610993565b610a986020830185610a69565b8181036040830152610aaa81846108ad565b905094935050505056fea2646970667358221220f2368cd382e34f6681d49a080c534f27b1b33e3ad91ba652bd8f021a8f210fc564736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/ERC721NFTCollection.abi b/packages/evm/evmtest/ERC721NFTCollection.abi deleted file mode 100644 index f3073aff11..0000000000 --- a/packages/evm/evmtest/ERC721NFTCollection.abi +++ /dev/null @@ -1 +0,0 @@ -[{"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":"approved","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"payable","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":"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":[],"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":"payable","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":"payable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"payable","type":"function"}] \ No newline at end of file diff --git a/packages/evm/evmtest/EndlessLoop.bin b/packages/evm/evmtest/EndlessLoop.bin new file mode 100644 index 0000000000..0345b9abe3 --- /dev/null +++ b/packages/evm/evmtest/EndlessLoop.bin @@ -0,0 +1 @@ +6080604052348015600e575f80fd5b50607080601a5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063a92100cb14602a575b5f80fd5b60306032565b005b5b600160335756fea2646970667358221220f5dd1c1c49828146e86326b191d087c542755079291956ca14a843b8c8eaba9c64736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/Fibonacci.bin b/packages/evm/evmtest/Fibonacci.bin new file mode 100644 index 0000000000..0ed5152e06 --- /dev/null +++ b/packages/evm/evmtest/Fibonacci.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b5061032e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f9b7c7e51461002d575b5f80fd5b610047600480360381019061004291906101cb565b61005d565b6040516100549190610205565b60405180910390f35b5f60018263ffffffff161161007457819050610189565b3073ffffffffffffffffffffffffffffffffffffffff1663f9b7c7e560028461009d919061024b565b6040518263ffffffff1660e01b81526004016100b99190610205565b602060405180830381865afa1580156100d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f89190610296565b3073ffffffffffffffffffffffffffffffffffffffff1663f9b7c7e5600185610121919061024b565b6040518263ffffffff1660e01b815260040161013d9190610205565b602060405180830381865afa158015610158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017c9190610296565b61018691906102c1565b90505b919050565b5f80fd5b5f63ffffffff82169050919050565b6101aa81610192565b81146101b4575f80fd5b50565b5f813590506101c5816101a1565b92915050565b5f602082840312156101e0576101df61018e565b5b5f6101ed848285016101b7565b91505092915050565b6101ff81610192565b82525050565b5f6020820190506102185f8301846101f6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61025582610192565b915061026083610192565b9250828203905063ffffffff81111561027c5761027b61021e565b5b92915050565b5f81519050610290816101a1565b92915050565b5f602082840312156102ab576102aa61018e565b5b5f6102b884828501610282565b91505092915050565b5f6102cb82610192565b91506102d683610192565b9250828201905063ffffffff8111156102f2576102f161021e565b5b9291505056fea26469706673582212202d7b7806b5e3e899cb8cf50fe0431e81e12748a3ad52cfbb8253da4874dc1fad64736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/GasTestExecutionTime.bin b/packages/evm/evmtest/GasTestExecutionTime.bin new file mode 100644 index 0000000000..5b88e3562b --- /dev/null +++ b/packages/evm/evmtest/GasTestExecutionTime.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b506102ba8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b61004760048036038101906100429190610109565b61005d565b6040516100549190610143565b60405180910390f35b5f805f90505f805b8463ffffffff168163ffffffff1610156100c1576001836100869190610189565b9250600a8361009591906101ed565b60036100a1919061021d565b826100ac9190610189565b915080806100b990610259565b915050610065565b508092505050919050565b5f80fd5b5f63ffffffff82169050919050565b6100e8816100d0565b81146100f2575f80fd5b50565b5f81359050610103816100df565b92915050565b5f6020828403121561011e5761011d6100cc565b5b5f61012b848285016100f5565b91505092915050565b61013d816100d0565b82525050565b5f6020820190506101565f830184610134565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610193826100d0565b915061019e836100d0565b9250828201905063ffffffff8111156101ba576101b961015c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6101f7826100d0565b9150610202836100d0565b925082610212576102116101c0565b5b828206905092915050565b5f610227826100d0565b9150610232836100d0565b9250828202610240816100d0565b91508082146102525761025161015c565b5b5092915050565b5f610263826100d0565b915063ffffffff82036102795761027861015c565b5b60018201905091905056fea2646970667358221220d06cf704d2594bb134c5159469e1146dd2747769222ecb97e23e485db4b1c41064736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/GasTestMemory.bin b/packages/evm/evmtest/GasTestMemory.bin new file mode 100644 index 0000000000..d4b5025350 --- /dev/null +++ b/packages/evm/evmtest/GasTestMemory.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b5061024d8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b6100476004803603810190610042919061013a565b610049565b005b5f8163ffffffff1667ffffffffffffffff81111561006a57610069610165565b5b6040519080825280602002602001820160405280156100985781602001602082028036833780820191505090505b5090505f5b8263ffffffff168163ffffffff1610156100f85780828263ffffffff16815181106100cb576100ca610192565b5b602002602001019063ffffffff16908163ffffffff168152505080806100f0906101ec565b91505061009d565b505050565b5f80fd5b5f63ffffffff82169050919050565b61011981610101565b8114610123575f80fd5b50565b5f8135905061013481610110565b92915050565b5f6020828403121561014f5761014e6100fd565b5b5f61015c84828501610126565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6101f682610101565b915063ffffffff820361020c5761020b6101bf565b5b60018201905091905056fea2646970667358221220568193432f7fe8728afe707b6afce2f1e220a1446627841777315ef09a50417964736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/GasTestStorage.bin b/packages/evm/evmtest/GasTestStorage.bin new file mode 100644 index 0000000000..4f9034bef3 --- /dev/null +++ b/packages/evm/evmtest/GasTestStorage.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b506101b78061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b610047600480360381019061004291906100fe565b610049565b005b5f5b8163ffffffff168163ffffffff1610156100bd575f81908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555080806100b590610156565b91505061004b565b5050565b5f80fd5b5f63ffffffff82169050919050565b6100dd816100c5565b81146100e7575f80fd5b50565b5f813590506100f8816100d4565b92915050565b5f60208284031215610113576101126100c1565b5b5f610120848285016100ea565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610160826100c5565b915063ffffffff820361017657610175610129565b5b60018201905091905056fea264697066735822122063e98f5866c403695ac32a684773e689d9d532d3ef77a07ff52cb0618a7b02b164736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/ISCTest.bin b/packages/evm/evmtest/ISCTest.bin new file mode 100644 index 0000000000..6a6b4adfe3 --- /dev/null +++ b/packages/evm/evmtest/ISCTest.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b506141668061001d5f395ff3fe60806040526004361061011e575f3560e01c8063a4a05e211161009f578063c5e6994511610063578063c5e69945146102f4578063d411defb1461031c578063dc91b3d014610332578063e29a58a31461035c578063e6c75c6b146103725761011e565b8063a4a05e2114610260578063b3ee694214610276578063bcaeb8a81461028c578063bcfb1959146102b6578063c36ba856146102de5761011e565b8063564b81ef116100e6578063564b81ef146101b457806357c8750e146101de5780636a68a760146102065780639e1a00aa1461021c578063a038a3e6146102385761011e565b806301fc25761461012257806336c346401461014a5780633772d53f1461016057806339bfb2fa1461017657806346d116761461019e575b5f80fd5b34801561012d575f80fd5b5061014860048036038101906101439190612045565b61039a565b005b348015610155575f80fd5b5061015e6105db565b005b34801561016b575f80fd5b5061017461069d565b005b348015610181575f80fd5b5061019c6004803603810190610197919061210b565b61075c565b005b3480156101a9575f80fd5b506101b2610807565b005b3480156101bf575f80fd5b506101c86108c9565b6040516101d59190612184565b60405180910390f35b3480156101e9575f80fd5b5061020460048036038101906101ff9190612515565b610950565b005b348015610211575f80fd5b5061021a610bd2565b005b610236600480360381019061023191906125e5565b610c0d565b005b348015610243575f80fd5b5061025e600480360381019061025991906126c1565b610c55565b005b34801561026b575f80fd5b50610274610ccf565b005b348015610281575f80fd5b5061028a610f8f565b005b348015610297575f80fd5b506102a0611230565b6040516102ad9190612782565b60405180910390f35b3480156102c1575f80fd5b506102dc60048036038101906102d791906127a2565b6114bb565b005b3480156102e9575f80fd5b506102f26114d4565b005b3480156102ff575f80fd5b5061031a600480360381019061031591906127cd565b611691565b005b348015610327575f80fd5b506103306118c4565b005b34801561033d575f80fd5b50610346611ca2565b6040516103539190612848565b60405180910390f35b348015610367575f80fd5b50610370611ca8565b005b34801561037d575f80fd5b50610398600480360381019061039391906126c1565b611ce5565b005b6103a2611d62565b5f8267ffffffffffffffff16036104495773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a714b58d336040518263ffffffff1660e01b81526004016104009190612881565b5f60405180830381865afa15801561041a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104429190612be3565b9050610469565b81815f019067ffffffffffffffff16908167ffffffffffffffff16815250505b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b81526004016104b8929190612eb7565b5f604051808303815f87803b1580156104cf575f80fd5b505af11580156104e1573d5f803e3d5ffd5b505050506104ed611d62565b6101f467ffffffffffffffff16825f015167ffffffffffffffff1611610511575f80fd5b6101f4825f01516105229190612f12565b815f019067ffffffffffffffff16908167ffffffffffffffff1681525050610548611d8c565b610550611dda565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538785600186866040518663ffffffff1660e01b81526004016105a695949392919061326e565b5f604051808303815f87803b1580156105bd575f80fd5b505af11580156105cf573d5f803e3d5ffd5b50505050505050505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca6528ce6040518163ffffffff1660e01b81526004015f604051808303815f875af1158015610639573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106619190613330565b90507f41aec7e1afdd771a4a8d3d2f4195266991744d24445781617c2151aa73e3018681604051610692919061339e565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635404bbf76040518163ffffffff1660e01b81526004016020604051808303815f875af11580156106fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072091906133e8565b90507f2778726dc1b9d6d2ee2628a18174907da485ba8765490e157ddf1202528ed5bc816040516107519190613422565b60405180910390a150565b610764611d62565b81815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc78585846040518463ffffffff1660e01b81526004016107d493929190613459565b5f604051808303815f87803b1580156107eb575f80fd5b505af11580156107fd573d5f803e3d5ffd5b5050505050505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f604051808303815f875af1158015610865573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061088d91906134ea565b90507faded0c26c8cc65771b245ec36a4a290a35b0cd003545068bcef2dcac18b8815c816040516108be9190613558565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610927573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094b91906135a2565b905090565b5f6040518060200160405280600267ffffffffffffffff81111561097757610976611e83565b5b6040519080825280602002602001820160405280156109b057816020015b61099d611dfc565b8152602001906001900390816109955790505b50815250905060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001845f0151815250815f01515f81518110610a1957610a186135cd565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610a9f90613654565b602060405180830381865afa158015610aba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ade919061369c565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610b2990613711565b602060405180830381865afa158015610b44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b68919061369c565b84866040518563ffffffff1660e01b8152600401610b899493929190613765565b5f604051808303815f875af1158015610ba4573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610bcc919061396e565b50505050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c04906139ff565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c50573d5f803e3d5ffd5b505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401610ca29190613a5f565b5f604051808303815f87803b158015610cb9575f80fd5b505af1158015610ccb573d5f803e3d5ffd5b5f80fd5b5f6040518060200160405280600167ffffffffffffffff811115610cf657610cf5611e83565b5b604051908082528060200260200182016040528015610d2f57816020015b610d1c611dfc565b815260200190600190039081610d145790505b5081525090505f6040518060400160405280600881526020017f2a00000000000000000000000000000000000000000000000000000000000000815250905060405180604001604052806040518060400160405280600781526020017f636f756e74657200000000000000000000000000000000000000000000000000815250815260200182815250825f01515f81518110610dce57610dcd6135cd565b5b6020026020010181905250610de1611d62565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610e5c90613ac9565b602060405180830381865afa158015610e77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9b919061369c565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610ee690613b31565b602060405180830381865afa158015610f01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f25919061369c565b86856040518563ffffffff1660e01b8152600401610f469493929190613765565b5f604051808303815f875af1158015610f61573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f89919061396e565b50505050565b5f3060601b604051602001610fa49190613bc9565b60405160208183030381529060405290505f6040518060200160405280600167ffffffffffffffff811115610fdc57610fdb611e83565b5b60405190808252806020026020018201604052801561101557816020015b611002611dfc565b815260200190600190039081610ffa5790505b50815250905060405180604001604052806040518060400160405280600181526020017f6300000000000000000000000000000000000000000000000000000000000000815250815260200183815250815f01515f8151811061107b5761107a6135cd565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161110190613c4b565b602060405180830381865afa15801561111c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611140919061369c565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161118b90613cb3565b602060405180830381865afa1580156111a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ca919061369c565b846040518463ffffffff1660e01b81526004016111e993929190613cd1565b5f60405180830381865afa158015611203573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061122b919061396e565b505050565b60605f60405180602001604052805f67ffffffffffffffff81111561125857611257611e83565b5b60405190808252806020026020018201604052801561129157816020015b61127e611dfc565b8152602001906001900390816112765790505b5081525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161131390613654565b602060405180830381865afa15801561132e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611352919061369c565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161139d90613d57565b602060405180830381865afa1580156113b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113dc919061369c565b856040518463ffffffff1660e01b81526004016113fb93929190613cd1565b5f60405180830381865afa158015611415573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061143d919061396e565b90505f5b815f0151518110156114b4575f825f01518281518110611464576114636135cd565b5b60200260200101515f015151036114a157815f0151818151811061148b5761148a6135cd565b5b60200260200101516020015193505050506114b8565b80806114ac90613d75565b915050611441565b5f80fd5b90565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b6114dc611e16565b6114e4611d62565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161155f90613e06565b602060405180830381865afa15801561157a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159e919061369c565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016115e990613e6e565b602060405180830381865afa158015611604573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611628919061369c565b85856040518563ffffffff1660e01b81526004016116499493929190613765565b5f604051808303815f875af1158015611664573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061168c919061396e565b505050565b611699611d62565b81815f019067ffffffffffffffff16908167ffffffffffffffff1681525050600167ffffffffffffffff8111156116d3576116d2611e83565b5b6040519080825280602002602001820160405280156117015781602001602082028036833780820191505090505b5081604001819052508281604001515f81518110611722576117216135cd565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b815260040161177d929190612eb7565b5f604051808303815f87803b158015611794575f80fd5b505af11580156117a6573d5f803e3d5ffd5b505050506117b2611d62565b600167ffffffffffffffff8111156117cd576117cc611e83565b5b6040519080825280602002602001820160405280156117fb5781602001602082028036833780820191505090505b5081604001819052508381604001515f8151811061181c5761181b6135cd565b5b602002602001018181525050611830611d8c565b611838611dda565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538885600186866040518663ffffffff1660e01b815260040161188e95949392919061326e565b5f604051808303815f87803b1580156118a5575f80fd5b505af11580156118b7573d5f803e3d5ffd5b5050505050505050505050565b5f606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660405160240161190190613ed6565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161198b9190613f2e565b5f604051808303815f865af19150503d805f81146119c4576040519150601f19603f3d011682016040523d82523d5f602084013e6119c9565b606091505b50809250819350505081611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0990613f8e565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f564b81ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611acd9190613f2e565b5f60405180830381855afa9150503d805f8114611b05576040519150601f19603f3d011682016040523d82523d5f602084013e611b0a565b606091505b50809250819350505081611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a9061401c565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16604051602401611b8d90614084565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611c179190613f2e565b5f60405180830381855afa9150503d805f8114611c4f576040519150601f19603f3d011682016040523d82523d5f602084013e611c54565b606091505b5080925081935050508115611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590614112565b60405180910390fd5b5050565b6101f481565b5b6127105a10611ce3577ff9c7a13c2c2ddb716633ae77fd03fb7d2e3bf5ab3a45ba50ec2d3decc9ee650c60405160405180910390a1611ca9565b565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401611d329190613a5f565b5f604051808303815f87803b158015611d49575f80fd5b505af1158015611d5b573d5f803e3d5ffd5b5050505050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060a001604052805f63ffffffff1681526020015f63ffffffff168152602001611db7611e16565b8152602001611dc4611d62565b81526020015f67ffffffffffffffff1681525090565b60405180604001604052805f60070b8152602001611df6611e29565b81525090565b604051806040016040528060608152602001606081525090565b6040518060200160405280606081525090565b60405180604001604052805f60070b8152602001611e45611e4b565b81525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611eb982611e73565b810181811067ffffffffffffffff82111715611ed857611ed7611e83565b5b80604052505050565b5f611eea611e5e565b9050611ef68282611eb0565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff821115611f2157611f20611e83565b5b611f2a82611e73565b9050602081019050919050565b828183375f83830152505050565b5f611f57611f5284611f07565b611ee1565b905082815260208101848484011115611f7357611f72611f03565b5b611f7e848285611f37565b509392505050565b5f82601f830112611f9a57611f99611eff565b5b8135611faa848260208601611f45565b91505092915050565b5f60208284031215611fc857611fc7611e6f565b5b611fd26020611ee1565b90505f82013567ffffffffffffffff811115611ff157611ff0611efb565b5b611ffd84828501611f86565b5f8301525092915050565b5f67ffffffffffffffff82169050919050565b61202481612008565b811461202e575f80fd5b50565b5f8135905061203f8161201b565b92915050565b5f806040838503121561205b5761205a611e67565b5b5f83013567ffffffffffffffff81111561207857612077611e6b565b5b61208485828601611fb3565b925050602061209585828601612031565b9150509250929050565b5f63ffffffff82169050919050565b6120b78161209f565b81146120c1575f80fd5b50565b5f813590506120d2816120ae565b92915050565b5f819050919050565b6120ea816120d8565b81146120f4575f80fd5b50565b5f81359050612105816120e1565b92915050565b5f805f6060848603121561212257612121611e67565b5b5f61212f868287016120c4565b9350506020612140868287016120f7565b925050604061215186828701612031565b9150509250925092565b5f819050919050565b5f61216e8261215b565b9050919050565b61217e81612164565b82525050565b5f6020820190506121975f830184612175565b92915050565b5f602082840312156121b2576121b1611e6f565b5b6121bc6020611ee1565b90505f82013567ffffffffffffffff8111156121db576121da611efb565b5b6121e784828501611f86565b5f8301525092915050565b5f67ffffffffffffffff82111561220c5761220b611e83565b5b602082029050602081019050919050565b5f80fd5b5f6020828403121561223657612235611e6f565b5b6122406020611ee1565b90505f82013567ffffffffffffffff81111561225f5761225e611efb565b5b61226b84828501611f86565b5f8301525092915050565b5f6040828403121561228b5761228a611e6f565b5b6122956040611ee1565b90505f82013567ffffffffffffffff8111156122b4576122b3611efb565b5b6122c084828501612221565b5f8301525060206122d3848285016120f7565b60208301525092915050565b5f6122f16122ec846121f2565b611ee1565b905080838252602082019050602084028301858111156123145761231361221d565b5b835b8181101561235b57803567ffffffffffffffff81111561233957612338611eff565b5b8086016123468982612276565b85526020850194505050602081019050612316565b5050509392505050565b5f82601f83011261237957612378611eff565b5b81356123898482602086016122df565b91505092915050565b5f67ffffffffffffffff8211156123ac576123ab611e83565b5b602082029050602081019050919050565b6123c68161215b565b81146123d0575f80fd5b50565b5f813590506123e1816123bd565b92915050565b5f6123f96123f484612392565b611ee1565b9050808382526020820190506020840283018581111561241c5761241b61221d565b5b835b81811015612445578061243188826123d3565b84526020840193505060208101905061241e565b5050509392505050565b5f82601f83011261246357612462611eff565b5b81356124738482602086016123e7565b91505092915050565b5f6060828403121561249157612490611e6f565b5b61249b6060611ee1565b90505f6124aa84828501612031565b5f83015250602082013567ffffffffffffffff8111156124cd576124cc611efb565b5b6124d984828501612365565b602083015250604082013567ffffffffffffffff8111156124fd576124fc611efb565b5b6125098482850161244f565b60408301525092915050565b5f806040838503121561252b5761252a611e67565b5b5f83013567ffffffffffffffff81111561254857612547611e6b565b5b6125548582860161219d565b925050602083013567ffffffffffffffff81111561257557612574611e6b565b5b6125818582860161247c565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125b48261258b565b9050919050565b6125c4816125aa565b81146125ce575f80fd5b50565b5f813590506125df816125bb565b92915050565b5f80604083850312156125fb576125fa611e67565b5b5f612608858286016125d1565b9250506020612619858286016120f7565b9150509250929050565b5f67ffffffffffffffff82111561263d5761263c611e83565b5b61264682611e73565b9050602081019050919050565b5f61266561266084612623565b611ee1565b90508281526020810184848401111561268157612680611f03565b5b61268c848285611f37565b509392505050565b5f82601f8301126126a8576126a7611eff565b5b81356126b8848260208601612653565b91505092915050565b5f602082840312156126d6576126d5611e67565b5b5f82013567ffffffffffffffff8111156126f3576126f2611e6b565b5b6126ff84828501612694565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561273f578082015181840152602081019050612724565b5f8484015250505050565b5f61275482612708565b61275e8185612712565b935061276e818560208601612722565b61277781611e73565b840191505092915050565b5f6020820190508181035f83015261279a818461274a565b905092915050565b5f602082840312156127b7576127b6611e67565b5b5f6127c4848285016125d1565b91505092915050565b5f805f606084860312156127e4576127e3611e67565b5b5f84013567ffffffffffffffff81111561280157612800611e6b565b5b61280d86828701611fb3565b935050602061281e868287016123d3565b925050604061282f86828701612031565b9150509250925092565b61284281612008565b82525050565b5f60208201905061285b5f830184612839565b92915050565b5f61286b8261258b565b9050919050565b61287b81612861565b82525050565b5f6020820190506128945f830184612872565b92915050565b5f815190506128a88161201b565b92915050565b5f6128c06128bb84611f07565b611ee1565b9050828152602081018484840111156128dc576128db611f03565b5b6128e7848285612722565b509392505050565b5f82601f83011261290357612902611eff565b5b81516129138482602086016128ae565b91505092915050565b5f6020828403121561293157612930611e6f565b5b61293b6020611ee1565b90505f82015167ffffffffffffffff81111561295a57612959611efb565b5b612966848285016128ef565b5f8301525092915050565b5f8151905061297f816120e1565b92915050565b5f6040828403121561299a57612999611e6f565b5b6129a46040611ee1565b90505f82015167ffffffffffffffff8111156129c3576129c2611efb565b5b6129cf8482850161291c565b5f8301525060206129e284828501612971565b60208301525092915050565b5f612a006129fb846121f2565b611ee1565b90508083825260208201905060208402830185811115612a2357612a2261221d565b5b835b81811015612a6a57805167ffffffffffffffff811115612a4857612a47611eff565b5b808601612a558982612985565b85526020850194505050602081019050612a25565b5050509392505050565b5f82601f830112612a8857612a87611eff565b5b8151612a988482602086016129ee565b91505092915050565b5f81519050612aaf816123bd565b92915050565b5f612ac7612ac284612392565b611ee1565b90508083825260208201905060208402830185811115612aea57612ae961221d565b5b835b81811015612b135780612aff8882612aa1565b845260208401935050602081019050612aec565b5050509392505050565b5f82601f830112612b3157612b30611eff565b5b8151612b41848260208601612ab5565b91505092915050565b5f60608284031215612b5f57612b5e611e6f565b5b612b696060611ee1565b90505f612b788482850161289a565b5f83015250602082015167ffffffffffffffff811115612b9b57612b9a611efb565b5b612ba784828501612a74565b602083015250604082015167ffffffffffffffff811115612bcb57612bca611efb565b5b612bd784828501612b1d565b60408301525092915050565b5f60208284031215612bf857612bf7611e67565b5b5f82015167ffffffffffffffff811115612c1557612c14611e6b565b5b612c2184828501612b4a565b91505092915050565b612c3381612008565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f612c7c82612708565b612c868185612c62565b9350612c96818560208601612722565b612c9f81611e73565b840191505092915050565b5f602083015f8301518482035f860152612cc48282612c72565b9150508091505092915050565b612cda816120d8565b82525050565b5f604083015f8301518482035f860152612cfa8282612caa565b9150506020830151612d0f6020860182612cd1565b508091505092915050565b5f612d258383612ce0565b905092915050565b5f602082019050919050565b5f612d4382612c39565b612d4d8185612c43565b935083602082028501612d5f85612c53565b805f5b85811015612d9a5784840389528151612d7b8582612d1a565b9450612d8683612d2d565b925060208a01995050600181019050612d62565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612dde81612164565b82525050565b5f612def8383612dd5565b60208301905092915050565b5f602082019050919050565b5f612e1182612dac565b612e1b8185612db6565b9350612e2683612dc6565b805f5b83811015612e56578151612e3d8882612de4565b9750612e4883612dfb565b925050600181019050612e29565b5085935050505092915050565b5f606083015f830151612e785f860182612c2a565b5060208301518482036020860152612e908282612d39565b91505060408301518482036040860152612eaa8282612e07565b9150508091505092915050565b5f604082019050612eca5f830185612872565b8181036020830152612edc8184612e63565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f1c82612008565b9150612f2783612008565b9250828203905067ffffffffffffffff811115612f4757612f46612ee5565b5b92915050565b5f602083015f8301518482035f860152612f678282612c72565b9150508091505092915050565b5f8115159050919050565b612f8881612f74565b82525050565b5f819050919050565b5f612fb1612fac612fa78461209f565b612f8e565b61209f565b9050919050565b612fc181612f97565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f604083015f8301518482035f86015261300a8282612c72565b915050602083015184820360208601526130248282612c72565b9150508091505092915050565b5f61303c8383612ff0565b905092915050565b5f602082019050919050565b5f61305a82612fc7565b6130648185612fd1565b93508360208202850161307685612fe1565b805f5b858110156130b157848403895281516130928582613031565b945061309d83613044565b925060208a01995050600181019050613079565b50829750879550505050505092915050565b5f602083015f8301518482035f8601526130dd8282613050565b9150508091505092915050565b5f606083015f8301516130ff5f860182612c2a565b50602083015184820360208601526131178282612d39565b915050604083015184820360408601526131318282612e07565b9150508091505092915050565b5f60a083015f8301516131535f860182612fb8565b5060208301516131666020860182612fb8565b506040830151848203604086015261317e82826130c3565b9150506060830151848203606086015261319882826130ea565b91505060808301516131ad6080860182612c2a565b508091505092915050565b5f8160070b9050919050565b6131cd816131b8565b82525050565b5f602083015f8301518482035f8601526131ed8282612c72565b9150508091505092915050565b5f604083015f83015161320f5f8601826131c4565b506020830151848203602086015261322782826131d3565b9150508091505092915050565b5f604083015f8301516132495f8601826131c4565b506020830151848203602086015261326182826131fa565b9150508091505092915050565b5f60a0820190508181035f8301526132868188612f4d565b9050818103602083015261329a8187612e63565b90506132a96040830186612f7f565b81810360608301526132bb818561313e565b905081810360808301526132cf8184613234565b90509695505050505050565b5f602082840312156132f0576132ef611e6f565b5b6132fa6020611ee1565b90505f82015167ffffffffffffffff81111561331957613318611efb565b5b613325848285016128ef565b5f8301525092915050565b5f6020828403121561334557613344611e67565b5b5f82015167ffffffffffffffff81111561336257613361611e6b565b5b61336e848285016132db565b91505092915050565b5f602083015f8301518482035f8601526133918282612c72565b9150508091505092915050565b5f6020820190508181035f8301526133b68184613377565b905092915050565b6133c78161215b565b81146133d1575f80fd5b50565b5f815190506133e2816133be565b92915050565b5f602082840312156133fd576133fc611e67565b5b5f61340a848285016133d4565b91505092915050565b61341c8161215b565b82525050565b5f6020820190506134355f830184613413565b92915050565b6134448161209f565b82525050565b613453816120d8565b82525050565b5f60608201905061346c5f83018661343b565b613479602083018561344a565b818103604083015261348b8184612e63565b9050949350505050565b5f602082840312156134aa576134a9611e6f565b5b6134b46020611ee1565b90505f82015167ffffffffffffffff8111156134d3576134d2611efb565b5b6134df848285016128ef565b5f8301525092915050565b5f602082840312156134ff576134fe611e67565b5b5f82015167ffffffffffffffff81111561351c5761351b611e6b565b5b61352884828501613495565b91505092915050565b5f602083015f8301518482035f86015261354b8282612c72565b9150508091505092915050565b5f6020820190508181035f8301526135708184613531565b905092915050565b6135818161215b565b811461358b575f80fd5b50565b5f8151905061359c81613578565b92915050565b5f602082840312156135b7576135b6611e67565b5b5f6135c48482850161358e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f6163636f756e74730000000000000000000000000000000000000000000000005f82015250565b5f61363e6008836135fa565b91506136498261360a565b602082019050919050565b5f6020820190508181035f83015261366b81613632565b9050919050565b61367b8161209f565b8114613685575f80fd5b50565b5f8151905061369681613672565b92915050565b5f602082840312156136b1576136b0611e67565b5b5f6136be84828501613688565b91505092915050565b7f7472616e73666572416c6c6f77616e6365546f000000000000000000000000005f82015250565b5f6136fb6013836135fa565b9150613706826136c7565b602082019050919050565b5f6020820190508181035f830152613728816136ef565b9050919050565b61373881612f97565b82525050565b5f602083015f8301518482035f8601526137588282613050565b9150508091505092915050565b5f6080820190506137785f83018761372f565b613785602083018661372f565b8181036040830152613797818561373e565b905081810360608301526137ab8184612e63565b905095945050505050565b5f67ffffffffffffffff8211156137d0576137cf611e83565b5b602082029050602081019050919050565b5f604082840312156137f6576137f5611e6f565b5b6138006040611ee1565b90505f82015167ffffffffffffffff81111561381f5761381e611efb565b5b61382b848285016128ef565b5f83015250602082015167ffffffffffffffff81111561384e5761384d611efb565b5b61385a848285016128ef565b60208301525092915050565b5f613878613873846137b6565b611ee1565b9050808382526020820190506020840283018581111561389b5761389a61221d565b5b835b818110156138e257805167ffffffffffffffff8111156138c0576138bf611eff565b5b8086016138cd89826137e1565b8552602085019450505060208101905061389d565b5050509392505050565b5f82601f830112613900576138ff611eff565b5b8151613910848260208601613866565b91505092915050565b5f6020828403121561392e5761392d611e6f565b5b6139386020611ee1565b90505f82015167ffffffffffffffff81111561395757613956611efb565b5b613963848285016138ec565b5f8301525092915050565b5f6020828403121561398357613982611e67565b5b5f82015167ffffffffffffffff8111156139a05761399f611e6b565b5b6139ac84828501613919565b91505092915050565b7f666f6f62617200000000000000000000000000000000000000000000000000005f82015250565b5f6139e96006836135fa565b91506139f4826139b5565b602082019050919050565b5f6020820190508181035f830152613a16816139dd565b9050919050565b5f81519050919050565b5f613a3182613a1d565b613a3b81856135fa565b9350613a4b818560208601612722565b613a5481611e73565b840191505092915050565b5f6020820190508181035f830152613a778184613a27565b905092915050565b7f696e63636f756e746572000000000000000000000000000000000000000000005f82015250565b5f613ab3600a836135fa565b9150613abe82613a7f565b602082019050919050565b5f6020820190508181035f830152613ae081613aa7565b9050919050565b7f696e63436f756e746572000000000000000000000000000000000000000000005f82015250565b5f613b1b600a836135fa565b9150613b2682613ae7565b602082019050919050565b5f6020820190508181035f830152613b4881613b0f565b9050919050565b6b010000000000000000000000815250565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f819050919050565b613ba6613ba182613b61565b613b8c565b82525050565b7604000000b3ee6942000000000000000000000000000000815250565b5f613bd382613b4f565b601582019150613be38284613b95565b601482019150613bf282613bac565b60118201915081905092915050565b7f65766d00000000000000000000000000000000000000000000000000000000005f82015250565b5f613c356003836135fa565b9150613c4082613c01565b602082019050919050565b5f6020820190508181035f830152613c6281613c29565b9050919050565b7f63616c6c436f6e747261637400000000000000000000000000000000000000005f82015250565b5f613c9d600c836135fa565b9150613ca882613c69565b602082019050919050565b5f6020820190508181035f830152613cca81613c91565b9050919050565b5f606082019050613ce45f83018661372f565b613cf1602083018561372f565b8181036040830152613d03818461373e565b9050949350505050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f613d416007836135fa565b9150613d4c82613d0d565b602082019050919050565b5f6020820190508181035f830152613d6e81613d35565b9050919050565b5f613d7f826120d8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613db157613db0612ee5565b5b600182019050919050565b7f676f7665726e616e6365000000000000000000000000000000000000000000005f82015250565b5f613df0600a836135fa565b9150613dfb82613dbc565b602082019050919050565b5f6020820190508181035f830152613e1d81613de4565b9050919050565b7f636c61696d436861696e4f776e657273686970000000000000000000000000005f82015250565b5f613e586013836135fa565b9150613e6382613e24565b602082019050919050565b5f6020820190508181035f830152613e8581613e4c565b9050919050565b7f6e6f6e2d737461746963000000000000000000000000000000000000000000005f82015250565b5f613ec0600a836135fa565b9150613ecb82613e8c565b602082019050919050565b5f6020820190508181035f830152613eed81613eb4565b9050919050565b5f81905092915050565b5f613f0882612708565b613f128185613ef4565b9350613f22818560208601612722565b80840191505092915050565b5f613f398284613efe565b915081905092915050565b7f63616c6c2073686f756c642073756363656564000000000000000000000000005f82015250565b5f613f786013836135fa565b9150613f8382613f44565b602082019050919050565b5f6020820190508181035f830152613fa581613f6c565b9050919050565b7f73746174696363616c6c20746f20766965772073686f756c64207375636365655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140066021836135fa565b915061401182613fac565b604082019050919050565b5f6020820190508181035f83015261403381613ffa565b9050919050565b7f73746174696300000000000000000000000000000000000000000000000000005f82015250565b5f61406e6006836135fa565b91506140798261403a565b602082019050919050565b5f6020820190508181035f83015261409b81614062565b9050919050565b7f73746174696363616c6c20746f206e6f6e2d766965772073686f756c642066615f8201527f696c000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140fc6022836135fa565b9150614107826140a2565b604082019050919050565b5f6020820190508181035f830152614129816140f0565b905091905056fea2646970667358221220c9fc6aac6a49639d4cef9f610750a8f23826b9d0c7b4e2c8806df2560e322ba264736f6c63430008140033 \ No newline at end of file diff --git a/packages/evm/evmtest/Storage.bin b/packages/evm/evmtest/Storage.bin new file mode 100644 index 0000000000..a8243683b8 --- /dev/null +++ b/packages/evm/evmtest/Storage.bin @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b5060405161027338038061027383398181016040528101906100319190610093565b805f806101000a81548163ffffffff021916908363ffffffff160217905550506100be565b5f80fd5b5f63ffffffff82169050919050565b6100728161005a565b811461007c575f80fd5b50565b5f8151905061008d81610069565b92915050565b5f602082840312156100a8576100a7610056565b5b5f6100b58482850161007f565b91505092915050565b6101a8806100cb5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80632e64cec114610038578063b9e9538214610056575b5f80fd5b610040610072565b60405161004d9190610100565b60405180910390f35b610070600480360381019061006b9190610147565b610089565b005b5f805f9054906101000a900463ffffffff16905090565b805f806101000a81548163ffffffff021916908363ffffffff1602179055507f1216415e6088a976b049b2d1fc9e52c96a2199b400aa37dc4aa9585710d03b87816040516100d79190610100565b60405180910390a150565b5f63ffffffff82169050919050565b6100fa816100e2565b82525050565b5f6020820190506101135f8301846100f1565b92915050565b5f80fd5b610126816100e2565b8114610130575f80fd5b50565b5f813590506101418161011d565b92915050565b5f6020828403121561015c5761015b610119565b5b5f61016984828501610133565b9150509291505056fea26469706673582212202f9a82a05335f04068e2e77c3c1eb6fc7e99bf5c038f6079c8398640601af07b64736f6c63430008140033 \ No newline at end of file diff --git a/packages/hashing/hash.go b/packages/hashing/hash.go index 069962bd6d..8ff3c03a72 100644 --- a/packages/hashing/hash.go +++ b/packages/hashing/hash.go @@ -59,6 +59,14 @@ func HashValueFromBytes(b []byte) (HashValue, error) { return ret, nil } +func MustHashValueFromHex(s string) HashValue { + ret, err := HashValueFromHex(s) + if err != nil { + panic(err) + } + return ret +} + func HashValueFromHex(s string) (HashValue, error) { b, err := iotago.DecodeHex(s) if err != nil { diff --git a/packages/solo/chain.go b/packages/solo/chain.go index 793653f628..b7e1609b26 100644 --- a/packages/solo/chain.go +++ b/packages/solo/chain.go @@ -566,7 +566,21 @@ func (ch *Chain) L1L2Funds(addr iotago.Address) *L1L2AddressAssets { } func (ch *Chain) GetL2FundsFromFaucet(agentID isc.AgentID, baseTokens ...uint64) { - walletKey, walletAddr := ch.Env.NewKeyPairWithFunds() + // find a deterministic L1 address that has 0 balance + walletKey, walletAddr := func() (*cryptolib.KeyPair, iotago.Address) { + seed := cryptolib.SeedFromBytes([]byte("GetL2FundsFromFaucet")) + i := uint64(0) + for { + ss := seed.SubSeed(i) + key, addr := ch.Env.NewKeyPair(&ss) + _, err := ch.Env.GetFundsFromFaucet(addr) + require.NoError(ch.Env.T, err) + if ch.L2BaseTokens(isc.NewAgentID(addr)) == 0 { + return key, addr + } + i++ + } + }() var amount uint64 if len(baseTokens) > 0 { diff --git a/packages/solo/evm.go b/packages/solo/evm.go index d096de106a..f6a23c3f8a 100644 --- a/packages/solo/evm.go +++ b/packages/solo/evm.go @@ -123,6 +123,23 @@ func (ch *Chain) PostEthereumTransaction(tx *types.Transaction) (dict.Dict, erro return ch.RunOffLedgerRequest(req) } +var EthereumAccounts []*ecdsa.PrivateKey + +func init() { + EthereumAccounts = make([]*ecdsa.PrivateKey, 4) + EthereumAccounts[0], _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291") + EthereumAccounts[1], _ = crypto.HexToECDSA("289c2857d4598e37fb9647507e47a309d6133539bf21a8b9cb6df88fd5232032") + EthereumAccounts[2], _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a") + EthereumAccounts[3], _ = crypto.HexToECDSA("49a7b37aa6f6645917e7b807e9d1c00d4fa71f18343b0d4122a4d2df64dd6fee") +} + +func (ch *Chain) EthereumAccountByIndexWithL2Funds(i int, baseTokens ...uint64) (*ecdsa.PrivateKey, common.Address) { + key := EthereumAccounts[i] + addr := crypto.PubkeyToAddress(key.PublicKey) + ch.GetL2FundsFromFaucet(isc.NewEthereumAddressAgentID(addr), baseTokens...) + return key, addr +} + func NewEthereumAccount() (*ecdsa.PrivateKey, common.Address) { key, err := crypto.GenerateKey() if err != nil { diff --git a/packages/solo/solo.go b/packages/solo/solo.go index 5d15d76c08..3881baac60 100644 --- a/packages/solo/solo.go +++ b/packages/solo/solo.go @@ -21,6 +21,7 @@ import ( "github.com/iotaledger/wasp/packages/chain" "github.com/iotaledger/wasp/packages/cryptolib" "github.com/iotaledger/wasp/packages/database" + "github.com/iotaledger/wasp/packages/hashing" "github.com/iotaledger/wasp/packages/isc" "github.com/iotaledger/wasp/packages/isc/coreutil" "github.com/iotaledger/wasp/packages/kv/dict" @@ -191,6 +192,16 @@ func New(t testing.TB, initOptions ...*InitOptions) *Solo { return ret } +func (env *Solo) VerifyDBHash(expected hashing.HashValue) { + actual := env.chainStateDatabaseManager.DBHash() + require.Equal(env.T, expected, actual, + "DB hash has changed! (new hash: %s). "+ + "This is a BREAKING CHANGE; make sure that you add a migration "+ + "(if necessary), and then update the hash in the test.", + actual, + ) +} + func (env *Solo) SyncLog() { _ = env.logger.Sync() } diff --git a/packages/vm/core/evm/evmtest/evm_test.go b/packages/vm/core/evm/evmtest/evm_test.go index 04fac398ff..19e72317b4 100644 --- a/packages/vm/core/evm/evmtest/evm_test.go +++ b/packages/vm/core/evm/evmtest/evm_test.go @@ -45,7 +45,7 @@ import ( func TestStorageContract(t *testing.T) { env := initEVM(t) - ethKey, _ := env.soloChain.NewEthereumAccountWithL2Funds() + ethKey, _ := env.soloChain.EthereumAccountByIndexWithL2Funds(0) require.EqualValues(t, 1, env.getBlockNumber()) // evm block number is incremented along with ISC block index // deploy solidity `storage` contract @@ -85,6 +85,8 @@ func TestStorageContract(t *testing.T) { require.NoError(t, storage.callView("retrieve", nil, &v, rpc.BlockNumberOrHashWithNumber(rpc.LatestBlockNumber))) require.EqualValues(t, 46, v) } + + env.solo.VerifyDBHash(hashing.MustHashValueFromHex("0xd6e0c4da0e42ba69ae437cf0cc3b99f92ad2b0f3ee52dafe67e6e493cead1ca3")) } func TestERC20Contract(t *testing.T) { diff --git a/packages/vm/core/evm/iscmagic/.gitignore b/packages/vm/core/evm/iscmagic/.gitignore index fe9ab08ba0..58266c66e4 100644 --- a/packages/vm/core/evm/iscmagic/.gitignore +++ b/packages/vm/core/evm/iscmagic/.gitignore @@ -1,3 +1,4 @@ +ISC.bin-runtime ISCAccounts.bin-runtime ISCPrivileged.bin-runtime ISCSandbox.bin-runtime diff --git a/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime new file mode 100644 index 0000000000..2a01565f0b --- /dev/null +++ b/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610c2b565b60405180910390f35b6100cd60048036038101906100c89190610ce9565b61028b565b6040516100da9190610d41565b60405180910390f35b6100eb610379565b6040516100f89190610d69565b60405180910390f35b61011b60048036038101906101169190610d82565b610407565b6040516101289190610d41565b60405180910390f35b61013961061b565b6040516101469190610ded565b60405180910390f35b61016960048036038101906101649190610e06565b6106a9565b6040516101769190610d69565b60405180910390f35b610187610754565b6040516101949190610c2b565b60405180910390f35b6101b760048036038101906101b29190610ce9565b6107e3565b6040516101c49190610d41565b60405180910390f35b6101e760048036038101906101e29190610e31565b610944565b6040516101f49190610d69565b60405180910390f35b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561025b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102839190611080565b5f0151905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663173263c63385856040518463ffffffff1660e01b81526004016102dd939291906110d6565b5f604051808303815f87803b1580156102f4575f80fd5b505af1158015610306573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103679190610d69565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156103d6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103fe9190611080565b60600151905090565b5f678000000000000000821115610453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044a90611155565b60405180910390fd5b61045b610b64565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104cb93929190611437565b5f604051808303815f87803b1580156104e2575f80fd5b505af11580156104f4573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105aa5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057c93929190611437565b5f604051808303815f87803b158015610593575f80fd5b505af11580156105a5573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106079190610d69565b60405180910390a360019150509392505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa158015610678573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106a09190611080565b60400151905090565b5f806106b4836109f0565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f826040518263ffffffff1660e01b8152600401610703919061149a565b602060405180830381865afa15801561071e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074291906114e4565b67ffffffffffffffff16915050919050565b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156107b2573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906107da9190611080565b60200151905090565b5f67800000000000000082111561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690611155565b60405180910390fd5b610837610b64565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b81526004016108a793929190611437565b5f604051808303815f87803b1580156108be575f80fd5b505af11580156108d0573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109319190610d69565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b815260040161099592919061150f565b5f60405180830381865afa1580156109af573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906109d791906118f7565b9050805f015167ffffffffffffffff1691505092915050565b6109f8610b8e565b5f82604051602001610a0a9190611983565b6040516020818303038152906040529050610a23610b8e565b81516001610a3191906119ca565b67ffffffffffffffff811115610a4a57610a49610e73565b5b6040519080825280601f01601f191660200182016040528015610a7c5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610a9f57610a9e6119fd565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8251811015610b5957828181518110610aeb57610aea6119fd565b5b602001015160f81c60f81b825f0151600183610b0791906119ca565b81518110610b1857610b176119fd565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610b5190611a2a565b915050610acf565b508092505050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610bd8578082015181840152602081019050610bbd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610bfd82610ba1565b610c078185610bab565b9350610c17818560208601610bbb565b610c2081610be3565b840191505092915050565b5f6020820190508181035f830152610c438184610bf3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c8582610c5c565b9050919050565b610c9581610c7b565b8114610c9f575f80fd5b50565b5f81359050610cb081610c8c565b92915050565b5f819050919050565b610cc881610cb6565b8114610cd2575f80fd5b50565b5f81359050610ce381610cbf565b92915050565b5f8060408385031215610cff57610cfe610c54565b5b5f610d0c85828601610ca2565b9250506020610d1d85828601610cd5565b9150509250929050565b5f8115159050919050565b610d3b81610d27565b82525050565b5f602082019050610d545f830184610d32565b92915050565b610d6381610cb6565b82525050565b5f602082019050610d7c5f830184610d5a565b92915050565b5f805f60608486031215610d9957610d98610c54565b5b5f610da686828701610ca2565b9350506020610db786828701610ca2565b9250506040610dc886828701610cd5565b9150509250925092565b5f60ff82169050919050565b610de781610dd2565b82525050565b5f602082019050610e005f830184610dde565b92915050565b5f60208284031215610e1b57610e1a610c54565b5b5f610e2884828501610ca2565b91505092915050565b5f8060408385031215610e4757610e46610c54565b5b5f610e5485828601610ca2565b9250506020610e6585828601610ca2565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ea982610be3565b810181811067ffffffffffffffff82111715610ec857610ec7610e73565b5b80604052505050565b5f610eda610c4b565b9050610ee68282610ea0565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff821115610f1157610f10610e73565b5b610f1a82610be3565b9050602081019050919050565b5f610f39610f3484610ef7565b610ed1565b905082815260208101848484011115610f5557610f54610ef3565b5b610f60848285610bbb565b509392505050565b5f82601f830112610f7c57610f7b610eef565b5b8151610f8c848260208601610f27565b91505092915050565b610f9e81610dd2565b8114610fa8575f80fd5b50565b5f81519050610fb981610f95565b92915050565b5f81519050610fcd81610cbf565b92915050565b5f60808284031215610fe857610fe7610e6f565b5b610ff26080610ed1565b90505f82015167ffffffffffffffff81111561101157611010610eeb565b5b61101d84828501610f68565b5f83015250602082015167ffffffffffffffff8111156110405761103f610eeb565b5b61104c84828501610f68565b602083015250604061106084828501610fab565b604083015250606061107484828501610fbf565b60608301525092915050565b5f6020828403121561109557611094610c54565b5b5f82015167ffffffffffffffff8111156110b2576110b1610c58565b5b6110be84828501610fd3565b91505092915050565b6110d081610c7b565b82525050565b5f6060820190506110e95f8301866110c7565b6110f660208301856110c7565b6111036040830184610d5a565b949350505050565b7f616d6f756e7420697320746f6f206c61726765000000000000000000000000005f82015250565b5f61113f601383610bab565b915061114a8261110b565b602082019050919050565b5f6020820190508181035f83015261116c81611133565b9050919050565b5f67ffffffffffffffff82169050919050565b61118f81611173565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6111e2826111be565b6111ec81856111c8565b93506111fc818560208601610bbb565b61120581610be3565b840191505092915050565b5f602083015f8301518482035f86015261122a82826111d8565b9150508091505092915050565b61124081610cb6565b82525050565b5f604083015f8301518482035f8601526112608282611210565b91505060208301516112756020860182611237565b508091505092915050565b5f61128b8383611246565b905092915050565b5f602082019050919050565b5f6112a982611195565b6112b3818561119f565b9350836020820285016112c5856111af565b805f5b8581101561130057848403895281516112e18582611280565b94506112ec83611293565b925060208a019950506001810190506112c8565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61134e8261133b565b9050919050565b61135e81611344565b82525050565b5f61136f8383611355565b60208301905092915050565b5f602082019050919050565b5f61139182611312565b61139b818561131c565b93506113a68361132c565b805f5b838110156113d65781516113bd8882611364565b97506113c88361137b565b9250506001810190506113a9565b5085935050505092915050565b5f606083015f8301516113f85f860182611186565b5060208301518482036020860152611410828261129f565b9150506040830151848203604086015261142a8282611387565b9150508091505092915050565b5f60608201905061144a5f8301866110c7565b61145760208301856110c7565b818103604083015261146981846113e3565b9050949350505050565b5f602083015f8301518482035f86015261148d82826111d8565b9150508091505092915050565b5f6020820190508181035f8301526114b28184611473565b905092915050565b6114c381611173565b81146114cd575f80fd5b50565b5f815190506114de816114ba565b92915050565b5f602082840312156114f9576114f8610c54565b5b5f611506848285016114d0565b91505092915050565b5f6040820190506115225f8301856110c7565b61152f60208301846110c7565b9392505050565b5f67ffffffffffffffff8211156115505761154f610e73565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561157f5761157e610e73565b5b61158882610be3565b9050602081019050919050565b5f6115a76115a284611565565b610ed1565b9050828152602081018484840111156115c3576115c2610ef3565b5b6115ce848285610bbb565b509392505050565b5f82601f8301126115ea576115e9610eef565b5b81516115fa848260208601611595565b91505092915050565b5f6020828403121561161857611617610e6f565b5b6116226020610ed1565b90505f82015167ffffffffffffffff81111561164157611640610eeb565b5b61164d848285016115d6565b5f8301525092915050565b5f6040828403121561166d5761166c610e6f565b5b6116776040610ed1565b90505f82015167ffffffffffffffff81111561169657611695610eeb565b5b6116a284828501611603565b5f8301525060206116b584828501610fbf565b60208301525092915050565b5f6116d36116ce84611536565b610ed1565b905080838252602082019050602084028301858111156116f6576116f5611561565b5b835b8181101561173d57805167ffffffffffffffff81111561171b5761171a610eef565b5b8086016117288982611658565b855260208501945050506020810190506116f8565b5050509392505050565b5f82601f83011261175b5761175a610eef565b5b815161176b8482602086016116c1565b91505092915050565b5f67ffffffffffffffff82111561178e5761178d610e73565b5b602082029050602081019050919050565b6117a88161133b565b81146117b2575f80fd5b50565b5f815190506117c38161179f565b92915050565b5f6117db6117d684611774565b610ed1565b905080838252602082019050602084028301858111156117fe576117fd611561565b5b835b81811015611827578061181388826117b5565b845260208401935050602081019050611800565b5050509392505050565b5f82601f83011261184557611844610eef565b5b81516118558482602086016117c9565b91505092915050565b5f6060828403121561187357611872610e6f565b5b61187d6060610ed1565b90505f61188c848285016114d0565b5f83015250602082015167ffffffffffffffff8111156118af576118ae610eeb565b5b6118bb84828501611747565b602083015250604082015167ffffffffffffffff8111156118df576118de610eeb565b5b6118eb84828501611831565b60408301525092915050565b5f6020828403121561190c5761190b610c54565b5b5f82015167ffffffffffffffff81111561192957611928610c58565b5b6119358482850161185e565b91505092915050565b5f8160601b9050919050565b5f6119548261193e565b9050919050565b5f6119658261194a565b9050919050565b61197d61197882610c7b565b61195b565b82525050565b5f61198e828461196c565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6119d482610cb6565b91506119df83610cb6565b92508282019050808211156119f7576119f661199d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611a3482610cb6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a6657611a6561199d565b5b60018201905091905056fea2646970667358221220642233c74a92f4a79feaf97e8b84d780a37a363cd8e666211d5d12a15169284764736f6c63430008140033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime new file mode 100644 index 0000000000..092b962553 --- /dev/null +++ b/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190610e1b565b60405180910390f35b6100d860048036038101906100d39190610ed9565b6102b5565b6040516100e59190610f31565b60405180910390f35b6100f66103ac565b6040516101039190610f59565b60405180910390f35b61012660048036038101906101219190610f72565b6103b5565b6040516101339190610f31565b60405180910390f35b610144610611565b6040516101519190610fdd565b60405180910390f35b610174600480360381019061016f9190610ff6565b610626565b6040516101819190610f59565b60405180910390f35b6101926106d0565b60405161019f919061109a565b60405180910390f35b6101b0610779565b6040516101bd9190610e1b565b60405180910390f35b6101e060048036038101906101db9190610ed9565b610809565b6040516101ed9190610f31565b60405180910390f35b610210600480360381019061020b91906110ba565b6109b2565b60405161021d9190610f59565b60405180910390f35b60605f805461023490611125565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611125565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f06106d0565b866040518563ffffffff1660e01b81526004016103109493929190611164565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190610f59565b60405180910390a36001905092915050565b5f600454905090565b5f6103be610d22565b600167ffffffffffffffff8111156103d9576103d86111ae565b5b60405190808252806020026020018201604052801561041257816020015b6103ff610d4c565b8152602001906001900390816103f75790505b5081602001819052506104236106d0565b81602001515f8151811061043a576104396111db565b5b60200260200101515f01819052508281602001515f815181106104605761045f6111db565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104c19392919061147a565b5f604051808303815f87803b1580156104d8575f80fd5b505af11580156104ea573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105a05773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b81526004016105729392919061147a565b5f604051808303815f87803b158015610589575f80fd5b505af115801561059b573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105fd9190610f59565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8061063183610ae4565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d61066b6106d0565b836040518363ffffffff1660e01b81526004016106899291906114dd565b602060405180830381865afa1580156106a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c89190611526565b915050919050565b6106d8610d6b565b60036040518060200160405290815f820180546106f490611125565b80601f016020809104026020016040519081016040528092919081815260200182805461072090611125565b801561076b5780601f106107425761010080835404028352916020019161076b565b820191905f5260205f20905b81548152906001019060200180831161074e57829003601f168201915b505050505081525050905090565b60606001805461078890611125565b80601f01602080910402602001604051908101604052809291908181526020018280546107b490611125565b80156107ff5780601f106107d6576101008083540402835291602001916107ff565b820191905f5260205f20905b8154815290600101906020018083116107e257829003601f168201915b5050505050905090565b5f610812610d22565b600167ffffffffffffffff81111561082d5761082c6111ae565b5b60405190808252806020026020018201604052801561086657816020015b610853610d4c565b81526020019060019003908161084b5790505b5081602001819052506108776106d0565b81602001515f8151811061088e5761088d6111db565b5b60200260200101515f01819052508281602001515f815181106108b4576108b36111db565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b81526004016109159392919061147a565b5f604051808303815f87803b15801561092c575f80fd5b505af115801561093e573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161099f9190610f59565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a03929190611551565b5f60405180830381865afa158015610a1d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a4591906119be565b90505f610a506106d0565b90505f5b826020015151811015610ad757610a9283602001518281518110610a7b57610a7a6111db565b5b60200260200101515f01515f0151835f0151610c58565b15610ac45782602001518181518110610aae57610aad6111db565b5b6020026020010151602001519350505050610ade565b8080610acf90611a32565b915050610a54565b505f925050505b92915050565b610aec610d7e565b5f82604051602001610afe9190611abe565b6040516020818303038152906040529050610b17610d7e565b81516001610b259190611ad8565b67ffffffffffffffff811115610b3e57610b3d6111ae565b5b6040519080825280601f01601f191660200182016040528015610b705781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610b9357610b926111db565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8251811015610c4d57828181518110610bdf57610bde6111db565b5b602001015160f81c60f81b825f0151600183610bfb9190611ad8565b81518110610c0c57610c0b6111db565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610c4590611a32565b915050610bc3565b508092505050919050565b5f8151835114610c6a575f9050610d1c565b5f5b8351811015610d1657828181518110610c8857610c876111db565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610cc857610cc76111db565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610d03575f915050610d1c565b8080610d0e90611a32565b915050610c6c565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610d5f610d6b565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610dc8578082015181840152602081019050610dad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610ded82610d91565b610df78185610d9b565b9350610e07818560208601610dab565b610e1081610dd3565b840191505092915050565b5f6020820190508181035f830152610e338184610de3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e7582610e4c565b9050919050565b610e8581610e6b565b8114610e8f575f80fd5b50565b5f81359050610ea081610e7c565b92915050565b5f819050919050565b610eb881610ea6565b8114610ec2575f80fd5b50565b5f81359050610ed381610eaf565b92915050565b5f8060408385031215610eef57610eee610e44565b5b5f610efc85828601610e92565b9250506020610f0d85828601610ec5565b9150509250929050565b5f8115159050919050565b610f2b81610f17565b82525050565b5f602082019050610f445f830184610f22565b92915050565b610f5381610ea6565b82525050565b5f602082019050610f6c5f830184610f4a565b92915050565b5f805f60608486031215610f8957610f88610e44565b5b5f610f9686828701610e92565b9350506020610fa786828701610e92565b9250506040610fb886828701610ec5565b9150509250925092565b5f60ff82169050919050565b610fd781610fc2565b82525050565b5f602082019050610ff05f830184610fce565b92915050565b5f6020828403121561100b5761100a610e44565b5b5f61101884828501610e92565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61104582611021565b61104f818561102b565b935061105f818560208601610dab565b61106881610dd3565b840191505092915050565b5f602083015f8301518482035f86015261108d828261103b565b9150508091505092915050565b5f6020820190508181035f8301526110b28184611073565b905092915050565b5f80604083850312156110d0576110cf610e44565b5b5f6110dd85828601610e92565b92505060206110ee85828601610e92565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061113c57607f821691505b60208210810361114f5761114e6110f8565b5b50919050565b61115e81610e6b565b82525050565b5f6080820190506111775f830187611155565b6111846020830186611155565b81810360408301526111968185611073565b90506111a56060830184610f4a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61122481611208565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f86015261126d828261103b565b9150508091505092915050565b61128381610ea6565b82525050565b5f604083015f8301518482035f8601526112a38282611253565b91505060208301516112b8602086018261127a565b508091505092915050565b5f6112ce8383611289565b905092915050565b5f602082019050919050565b5f6112ec8261122a565b6112f68185611234565b93508360208202850161130885611244565b805f5b85811015611343578484038952815161132485826112c3565b945061132f836112d6565b925060208a0199505060018101905061130b565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6113918261137e565b9050919050565b6113a181611387565b82525050565b5f6113b28383611398565b60208301905092915050565b5f602082019050919050565b5f6113d482611355565b6113de818561135f565b93506113e98361136f565b805f5b8381101561141957815161140088826113a7565b975061140b836113be565b9250506001810190506113ec565b5085935050505092915050565b5f606083015f83015161143b5f86018261121b565b506020830151848203602086015261145382826112e2565b9150506040830151848203604086015261146d82826113ca565b9150508091505092915050565b5f60608201905061148d5f830186611155565b61149a6020830185611155565b81810360408301526114ac8184611426565b9050949350505050565b5f602083015f8301518482035f8601526114d0828261103b565b9150508091505092915050565b5f6040820190508181035f8301526114f58185611073565b9050818103602083015261150981846114b6565b90509392505050565b5f8151905061152081610eaf565b92915050565b5f6020828403121561153b5761153a610e44565b5b5f61154884828501611512565b91505092915050565b5f6040820190506115645f830185611155565b6115716020830184611155565b9392505050565b5f80fd5b61158582610dd3565b810181811067ffffffffffffffff821117156115a4576115a36111ae565b5b80604052505050565b5f6115b6610e3b565b90506115c2828261157c565b919050565b5f80fd5b6115d481611208565b81146115de575f80fd5b50565b5f815190506115ef816115cb565b92915050565b5f80fd5b5f67ffffffffffffffff821115611613576116126111ae565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff821115611646576116456111ae565b5b61164f82610dd3565b9050602081019050919050565b5f61166e6116698461162c565b6115ad565b90508281526020810184848401111561168a57611689611628565b5b611695848285610dab565b509392505050565b5f82601f8301126116b1576116b06115f5565b5b81516116c184826020860161165c565b91505092915050565b5f602082840312156116df576116de611578565b5b6116e960206115ad565b90505f82015167ffffffffffffffff811115611708576117076115c7565b5b6117148482850161169d565b5f8301525092915050565b5f6040828403121561173457611733611578565b5b61173e60406115ad565b90505f82015167ffffffffffffffff81111561175d5761175c6115c7565b5b611769848285016116ca565b5f83015250602061177c84828501611512565b60208301525092915050565b5f61179a611795846115f9565b6115ad565b905080838252602082019050602084028301858111156117bd576117bc611624565b5b835b8181101561180457805167ffffffffffffffff8111156117e2576117e16115f5565b5b8086016117ef898261171f565b855260208501945050506020810190506117bf565b5050509392505050565b5f82601f830112611822576118216115f5565b5b8151611832848260208601611788565b91505092915050565b5f67ffffffffffffffff821115611855576118546111ae565b5b602082029050602081019050919050565b61186f8161137e565b8114611879575f80fd5b50565b5f8151905061188a81611866565b92915050565b5f6118a261189d8461183b565b6115ad565b905080838252602082019050602084028301858111156118c5576118c4611624565b5b835b818110156118ee57806118da888261187c565b8452602084019350506020810190506118c7565b5050509392505050565b5f82601f83011261190c5761190b6115f5565b5b815161191c848260208601611890565b91505092915050565b5f6060828403121561193a57611939611578565b5b61194460606115ad565b90505f611953848285016115e1565b5f83015250602082015167ffffffffffffffff811115611976576119756115c7565b5b6119828482850161180e565b602083015250604082015167ffffffffffffffff8111156119a6576119a56115c7565b5b6119b2848285016118f8565b60408301525092915050565b5f602082840312156119d3576119d2610e44565b5b5f82015167ffffffffffffffff8111156119f0576119ef610e48565b5b6119fc84828501611925565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a3c82610ea6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a6e57611a6d611a05565b5b600182019050919050565b5f8160601b9050919050565b5f611a8f82611a79565b9050919050565b5f611aa082611a85565b9050919050565b611ab8611ab382610e6b565b611a96565b82525050565b5f611ac98284611aa7565b60148201915081905092915050565b5f611ae282610ea6565b9150611aed83610ea6565b9250828201905080821115611b0557611b04611a05565b5b9291505056fea26469706673582212200e299352fde9c8dc0532bc8811940af9e518e3d7fdb3e64d5420cdee002eb1ce64736f6c63430008140033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime new file mode 100644 index 0000000000..a2809782e6 --- /dev/null +++ b/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime @@ -0,0 +1 @@ +608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190610f3b565b60405180910390f35b6100d860048036038101906100d39190610ff9565b6102b5565b6040516100e59190611051565b60405180910390f35b6100f66103ac565b6040516101039190611079565b60405180910390f35b61012660048036038101906101219190611092565b610449565b6040516101339190611051565b60405180910390f35b6101446106a5565b60405161015191906110fd565b60405180910390f35b610174600480360381019061016f9190611116565b6106ba565b6040516101819190611079565b60405180910390f35b610192610764565b60405161019f91906111ba565b60405180910390f35b6101b0610807565b6040516101bd9190610f3b565b60405180910390f35b6101e060048036038101906101db9190610ff9565b610897565b6040516101ed9190611051565b60405180910390f35b610210600480360381019061020b91906111da565b610a40565b60405161021d9190611079565b60405180910390f35b60605f805461023490611245565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611245565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f0610764565b866040518563ffffffff1660e01b81526004016103109493929190611284565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611079565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e64ea416103e5610b72565b6040518263ffffffff1660e01b815260040161040191906112ec565b606060405180830381865afa15801561041c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044091906113fa565b60400151905090565b5f610452610e42565b600167ffffffffffffffff81111561046d5761046c611309565b5b6040519080825280602002602001820160405280156104a657816020015b610493610e6c565b81526020019060019003908161048b5790505b5081602001819052506104b7610764565b81602001515f815181106104ce576104cd611425565b5b60200260200101515f01819052508281602001515f815181106104f4576104f3611425565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b8152600401610555939291906116c4565b5f604051808303815f87803b15801561056c575f80fd5b505af115801561057e573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146106345773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610606939291906116c4565b5f604051808303815f87803b15801561061d575f80fd5b505af115801561062f573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106919190611079565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f806106c583610c04565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6106ff610764565b836040518363ffffffff1660e01b815260040161071d929190611727565b602060405180830381865afa158015610738573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075c919061175c565b915050919050565b61076c610e8b565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663360a91706107a4610b72565b6040518263ffffffff1660e01b81526004016107c091906112ec565b5f60405180830381865afa1580156107da573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108029190611882565b905090565b60606001805461081690611245565b80601f016020809104026020016040519081016040528092919081815260200182805461084290611245565b801561088d5780601f106108645761010080835404028352916020019161088d565b820191905f5260205f20905b81548152906001019060200180831161087057829003601f168201915b5050505050905090565b5f6108a0610e42565b600167ffffffffffffffff8111156108bb576108ba611309565b5b6040519080825280602002602001820160405280156108f457816020015b6108e1610e6c565b8152602001906001900390816108d95790505b508160200181905250610905610764565b81602001515f8151811061091c5761091b611425565b5b60200260200101515f01819052508281602001515f8151811061094257610941611425565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b81526004016109a3939291906116c4565b5f604051808303815f87803b1580156109ba575f80fd5b505af11580156109cc573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a2d9190611079565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a919291906118c9565b5f60405180830381865afa158015610aab573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610ad39190611be8565b90505f610ade610764565b90505f5b826020015151811015610b6557610b2083602001518281518110610b0957610b08611425565b5b60200260200101515f01515f0151835f0151610d78565b15610b525782602001518181518110610b3c57610b3b611425565b5b6020026020010151602001519350505050610b6c565b8080610b5d90611c5c565b915050610ae2565b505f925050505b92915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166308ad1993306040518263ffffffff1660e01b8152600401610bc09190611ca3565b602060405180830381865afa158015610bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bff9190611ce6565b905090565b610c0c610e9e565b5f82604051602001610c1e9190611d56565b6040516020818303038152906040529050610c37610e9e565b81516001610c459190611d70565b67ffffffffffffffff811115610c5e57610c5d611309565b5b6040519080825280601f01601f191660200182016040528015610c905781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610cb357610cb2611425565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8251811015610d6d57828181518110610cff57610cfe611425565b5b602001015160f81c60f81b825f0151600183610d1b9190611d70565b81518110610d2c57610d2b611425565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610d6590611c5c565b915050610ce3565b508092505050919050565b5f8151835114610d8a575f9050610e3c565b5f5b8351811015610e3657828181518110610da857610da7611425565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610de857610de7611425565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e23575f915050610e3c565b8080610e2e90611c5c565b915050610d8c565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610e7f610e8b565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610ee8578082015181840152602081019050610ecd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610f0d82610eb1565b610f178185610ebb565b9350610f27818560208601610ecb565b610f3081610ef3565b840191505092915050565b5f6020820190508181035f830152610f538184610f03565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f9582610f6c565b9050919050565b610fa581610f8b565b8114610faf575f80fd5b50565b5f81359050610fc081610f9c565b92915050565b5f819050919050565b610fd881610fc6565b8114610fe2575f80fd5b50565b5f81359050610ff381610fcf565b92915050565b5f806040838503121561100f5761100e610f64565b5b5f61101c85828601610fb2565b925050602061102d85828601610fe5565b9150509250929050565b5f8115159050919050565b61104b81611037565b82525050565b5f6020820190506110645f830184611042565b92915050565b61107381610fc6565b82525050565b5f60208201905061108c5f83018461106a565b92915050565b5f805f606084860312156110a9576110a8610f64565b5b5f6110b686828701610fb2565b93505060206110c786828701610fb2565b92505060406110d886828701610fe5565b9150509250925092565b5f60ff82169050919050565b6110f7816110e2565b82525050565b5f6020820190506111105f8301846110ee565b92915050565b5f6020828403121561112b5761112a610f64565b5b5f61113884828501610fb2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61116582611141565b61116f818561114b565b935061117f818560208601610ecb565b61118881610ef3565b840191505092915050565b5f602083015f8301518482035f8601526111ad828261115b565b9150508091505092915050565b5f6020820190508181035f8301526111d28184611193565b905092915050565b5f80604083850312156111f0576111ef610f64565b5b5f6111fd85828601610fb2565b925050602061120e85828601610fb2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061125c57607f821691505b60208210810361126f5761126e611218565b5b50919050565b61127e81610f8b565b82525050565b5f6080820190506112975f830187611275565b6112a46020830186611275565b81810360408301526112b68185611193565b90506112c5606083018461106a565b95945050505050565b5f63ffffffff82169050919050565b6112e6816112ce565b82525050565b5f6020820190506112ff5f8301846112dd565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61133f82610ef3565b810181811067ffffffffffffffff8211171561135e5761135d611309565b5b80604052505050565b5f611370610f5b565b905061137c8282611336565b919050565b5f80fd5b5f8151905061139381610fcf565b92915050565b5f606082840312156113ae576113ad611305565b5b6113b86060611367565b90505f6113c784828501611385565b5f8301525060206113da84828501611385565b60208301525060406113ee84828501611385565b60408301525092915050565b5f6060828403121561140f5761140e610f64565b5b5f61141c84828501611399565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61146e81611452565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526114b7828261115b565b9150508091505092915050565b6114cd81610fc6565b82525050565b5f604083015f8301518482035f8601526114ed828261149d565b915050602083015161150260208601826114c4565b508091505092915050565b5f61151883836114d3565b905092915050565b5f602082019050919050565b5f61153682611474565b611540818561147e565b9350836020820285016115528561148e565b805f5b8581101561158d578484038952815161156e858261150d565b945061157983611520565b925060208a01995050600181019050611555565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6115db826115c8565b9050919050565b6115eb816115d1565b82525050565b5f6115fc83836115e2565b60208301905092915050565b5f602082019050919050565b5f61161e8261159f565b61162881856115a9565b9350611633836115b9565b805f5b8381101561166357815161164a88826115f1565b975061165583611608565b925050600181019050611636565b5085935050505092915050565b5f606083015f8301516116855f860182611465565b506020830151848203602086015261169d828261152c565b915050604083015184820360408601526116b78282611614565b9150508091505092915050565b5f6060820190506116d75f830186611275565b6116e46020830185611275565b81810360408301526116f68184611670565b9050949350505050565b5f602083015f8301518482035f86015261171a828261115b565b9150508091505092915050565b5f6040820190508181035f83015261173f8185611193565b905081810360208301526117538184611700565b90509392505050565b5f6020828403121561177157611770610f64565b5b5f61177e84828501611385565b91505092915050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156117a9576117a8611309565b5b6117b282610ef3565b9050602081019050919050565b5f6117d16117cc8461178f565b611367565b9050828152602081018484840111156117ed576117ec61178b565b5b6117f8848285610ecb565b509392505050565b5f82601f83011261181457611813611787565b5b81516118248482602086016117bf565b91505092915050565b5f6020828403121561184257611841611305565b5b61184c6020611367565b90505f82015167ffffffffffffffff81111561186b5761186a611381565b5b61187784828501611800565b5f8301525092915050565b5f6020828403121561189757611896610f64565b5b5f82015167ffffffffffffffff8111156118b4576118b3610f68565b5b6118c08482850161182d565b91505092915050565b5f6040820190506118dc5f830185611275565b6118e96020830184611275565b9392505050565b6118f981611452565b8114611903575f80fd5b50565b5f81519050611914816118f0565b92915050565b5f67ffffffffffffffff82111561193457611933611309565b5b602082029050602081019050919050565b5f80fd5b5f6040828403121561195e5761195d611305565b5b6119686040611367565b90505f82015167ffffffffffffffff81111561198757611986611381565b5b6119938482850161182d565b5f8301525060206119a684828501611385565b60208301525092915050565b5f6119c46119bf8461191a565b611367565b905080838252602082019050602084028301858111156119e7576119e6611945565b5b835b81811015611a2e57805167ffffffffffffffff811115611a0c57611a0b611787565b5b808601611a198982611949565b855260208501945050506020810190506119e9565b5050509392505050565b5f82601f830112611a4c57611a4b611787565b5b8151611a5c8482602086016119b2565b91505092915050565b5f67ffffffffffffffff821115611a7f57611a7e611309565b5b602082029050602081019050919050565b611a99816115c8565b8114611aa3575f80fd5b50565b5f81519050611ab481611a90565b92915050565b5f611acc611ac784611a65565b611367565b90508083825260208201905060208402830185811115611aef57611aee611945565b5b835b81811015611b185780611b048882611aa6565b845260208401935050602081019050611af1565b5050509392505050565b5f82601f830112611b3657611b35611787565b5b8151611b46848260208601611aba565b91505092915050565b5f60608284031215611b6457611b63611305565b5b611b6e6060611367565b90505f611b7d84828501611906565b5f83015250602082015167ffffffffffffffff811115611ba057611b9f611381565b5b611bac84828501611a38565b602083015250604082015167ffffffffffffffff811115611bd057611bcf611381565b5b611bdc84828501611b22565b60408301525092915050565b5f60208284031215611bfd57611bfc610f64565b5b5f82015167ffffffffffffffff811115611c1a57611c19610f68565b5b611c2684828501611b4f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c6682610fc6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c9857611c97611c2f565b5b600182019050919050565b5f602082019050611cb65f830184611275565b92915050565b611cc5816112ce565b8114611ccf575f80fd5b50565b5f81519050611ce081611cbc565b92915050565b5f60208284031215611cfb57611cfa610f64565b5b5f611d0884828501611cd2565b91505092915050565b5f8160601b9050919050565b5f611d2782611d11565b9050919050565b5f611d3882611d1d565b9050919050565b611d50611d4b82610f8b565b611d2e565b82525050565b5f611d618284611d3f565b60148201915081905092915050565b5f611d7a82610fc6565b9150611d8583610fc6565b9250828201905080821115611d9d57611d9c611c2f565b5b9291505056fea264697066735822122070806d9e2b7ed1d49958802cdb0b9e85a6600dfaf536520820cbdf6d42aeab9264736f6c63430008140033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime b/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime new file mode 100644 index 0000000000..82aa0be407 --- /dev/null +++ b/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime @@ -0,0 +1 @@ +6080604052600436106100c1575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb4651461025d578063b88d4fde14610285578063c87b56dd146102a1578063e985e9c5146102dd576100c1565b80636352211e146101bb57806370a08231146101f757806395d89b4114610233576100c1565b806301ffc9a7146100c557806306fdde0314610101578063081812fc1461012b578063095ea7b31461016757806323b872dd1461018357806342842e0e1461019f575b5f80fd5b3480156100d0575f80fd5b506100eb60048036038101906100e69190611373565b610319565b6040516100f891906113b8565b60405180910390f35b34801561010c575f80fd5b50610115610407565b604051610122919061145b565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c91906114ae565b610497565b60405161015e9190611518565b60405180910390f35b610181600480360381019061017c919061155b565b6104cf565b005b61019d60048036038101906101989190611599565b610608565b005b6101b960048036038101906101b49190611599565b61062a565b005b3480156101c6575f80fd5b506101e160048036038101906101dc91906114ae565b610649565b6040516101ee9190611518565b60405180910390f35b348015610202575f80fd5b5061021d600480360381019061021891906115e9565b61071f565b60405161022a9190611623565b60405180910390f35b34801561023e575f80fd5b50610247610738565b604051610254919061145b565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190611666565b61074e565b005b61029f600480360381019061029a91906117d0565b61087d565b005b3480156102ac575f80fd5b506102c760048036038101906102c291906114ae565b6108a2565b6040516102d4919061145b565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190611850565b610963565b60405161031091906113b8565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b157506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104005750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060038054610416906118bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610442906118bb565b801561048d5780601f106104645761010080835404028352916020019161048d565b820191905f5260205f20905b81548152906001019060200180831161047057829003601f168201915b5050505050905090565b5f805f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f6104d982610649565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610512575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061055257506105518133610963565b5b61055a575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b61061233826109f1565b61061a575f80fd5b610625838383610a85565b505050565b61064483838360405180602001604052805f81525061087d565b505050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b7261068485610c69565b6040518263ffffffff1660e01b81526004016106a09190611914565b5f60405180830381865afa1580156106ba573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106e29190611b40565b90506106f18160600151610c74565b6106f9575f80fd5b61070281610ca9565b61070a575f80fd5b6107178160600151610cc6565b915050919050565b5f61073161072c83610dba565b610f2e565b9050919050565b606060405180602001604052805f815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610785575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161087191906113b8565b60405180910390a35050565b610888848484610608565b61089484848484610fc6565b61089c575f80fd5b50505050565b60605f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166343c4b6d86108de85610c69565b6040518263ffffffff1660e01b81526004016108fa9190611914565b5f60405180830381865afa158015610914573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061093c9190611dbf565b905061094a815f0151610ca9565b610952575f80fd5b806020015160600151915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f806109fc83610649565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a6b57508373ffffffffffffffffffffffffffffffffffffffff16610a5384610497565b73ffffffffffffffffffffffffffffffffffffffff16145b80610a7c5750610a7b8185610963565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610aa582610649565b73ffffffffffffffffffffffffffffffffffffffff1614610ac4575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610afb575f80fd5b610b04816110b3565b610b0c6112d0565b600167ffffffffffffffff811115610b2757610b266116ac565b5b604051908082528060200260200182016040528015610b555781602001602082028036833780820191505090505b508160400181905250610b6782610c69565b81604001515f81518110610b7e57610b7d611e06565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610bdb939291906120dd565b5f604051808303815f87803b158015610bf2575f80fd5b505af1158015610c04573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610c9057610c8f611e06565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f610cbf6002548361116790919063ffffffff16565b9050919050565b5f80601467ffffffffffffffff811115610ce357610ce26116ac565b5b6040519080825280601f01601f191660200182016040528015610d155781602001600182028036833780820191505090505b5090505f5b6014811015610da457835f0151600182610d349190612146565b81518110610d4557610d44611e06565b5b602001015160f81c60f81b828281518110610d6357610d62611e06565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610d9c90612179565b915050610d1a565b5080610daf9061221a565b60601c915050919050565b610dc26112fa565b5f82604051602001610dd491906122c5565b6040516020818303038152906040529050610ded6112fa565b81516001610dfb9190612146565b67ffffffffffffffff811115610e1457610e136116ac565b5b6040519080825280601f01601f191660200182016040528015610e465781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610e6957610e68611e06565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8251811015610f2357828181518110610eb557610eb4611e06565b5b602001015160f81c60f81b825f0151600183610ed19190612146565b81518110610ee257610ee1611e06565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610f1b90612179565b915050610e99565b508092505050919050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ccd15a14836002546040518363ffffffff1660e01b8152600401610f80929190612306565b602060405180830381865afa158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbf9190612348565b9050919050565b5f610fd084611293565b610fdd57600190506110ab565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b815260040161101d94939291906123bb565b6020604051808303815f875af1158015611039573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105d9190612419565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611164575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f601060ff1661117a84602001516112a4565b60ff161461118a575f905061128d565b602183602001515f015151146111a3576111a2612444565b5b5f826040516020016111b59190612491565b60405160208183030381529060405290505f5b60208110156112865784602001515f01516001826111e69190612146565b815181106111f7576111f6611e06565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191682828151811061123757611236611e06565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611273575f9250505061128d565b808061127e90612179565b9150506111c8565b5060019150505b92915050565b5f80823b90505f8111915050919050565b5f815f01515f815181106112bb576112ba611e06565b5b602001015160f81c60f81b60f81c9050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6113528161131e565b811461135c575f80fd5b50565b5f8135905061136d81611349565b92915050565b5f6020828403121561138857611387611316565b5b5f6113958482850161135f565b91505092915050565b5f8115159050919050565b6113b28161139e565b82525050565b5f6020820190506113cb5f8301846113a9565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156114085780820151818401526020810190506113ed565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61142d826113d1565b61143781856113db565b93506114478185602086016113eb565b61145081611413565b840191505092915050565b5f6020820190508181035f8301526114738184611423565b905092915050565b5f819050919050565b61148d8161147b565b8114611497575f80fd5b50565b5f813590506114a881611484565b92915050565b5f602082840312156114c3576114c2611316565b5b5f6114d08482850161149a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611502826114d9565b9050919050565b611512816114f8565b82525050565b5f60208201905061152b5f830184611509565b92915050565b61153a816114f8565b8114611544575f80fd5b50565b5f8135905061155581611531565b92915050565b5f806040838503121561157157611570611316565b5b5f61157e85828601611547565b925050602061158f8582860161149a565b9150509250929050565b5f805f606084860312156115b0576115af611316565b5b5f6115bd86828701611547565b93505060206115ce86828701611547565b92505060406115df8682870161149a565b9150509250925092565b5f602082840312156115fe576115fd611316565b5b5f61160b84828501611547565b91505092915050565b61161d8161147b565b82525050565b5f6020820190506116365f830184611614565b92915050565b6116458161139e565b811461164f575f80fd5b50565b5f813590506116608161163c565b92915050565b5f806040838503121561167c5761167b611316565b5b5f61168985828601611547565b925050602061169a85828601611652565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116e282611413565b810181811067ffffffffffffffff82111715611701576117006116ac565b5b80604052505050565b5f61171361130d565b905061171f82826116d9565b919050565b5f67ffffffffffffffff82111561173e5761173d6116ac565b5b61174782611413565b9050602081019050919050565b828183375f83830152505050565b5f61177461176f84611724565b61170a565b9050828152602081018484840111156117905761178f6116a8565b5b61179b848285611754565b509392505050565b5f82601f8301126117b7576117b66116a4565b5b81356117c7848260208601611762565b91505092915050565b5f805f80608085870312156117e8576117e7611316565b5b5f6117f587828801611547565b945050602061180687828801611547565b93505060406118178782880161149a565b925050606085013567ffffffffffffffff8111156118385761183761131a565b5b611844878288016117a3565b91505092959194509250565b5f806040838503121561186657611865611316565b5b5f61187385828601611547565b925050602061188485828601611547565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806118d257607f821691505b6020821081036118e5576118e461188e565b5b50919050565b5f819050919050565b5f6118fe826118eb565b9050919050565b61190e816118f4565b82525050565b5f6020820190506119275f830184611905565b92915050565b5f80fd5b5f80fd5b61193e816118eb565b8114611948575f80fd5b50565b5f8151905061195981611935565b92915050565b5f61197161196c84611724565b61170a565b90508281526020810184848401111561198d5761198c6116a8565b5b6119988482856113eb565b509392505050565b5f82601f8301126119b4576119b36116a4565b5b81516119c484826020860161195f565b91505092915050565b5f602082840312156119e2576119e161192d565b5b6119ec602061170a565b90505f82015167ffffffffffffffff811115611a0b57611a0a611931565b5b611a17848285016119a0565b5f8301525092915050565b5f60208284031215611a3757611a3661192d565b5b611a41602061170a565b90505f82015167ffffffffffffffff811115611a6057611a5f611931565b5b611a6c848285016119a0565b5f8301525092915050565b5f60808284031215611a8c57611a8b61192d565b5b611a96608061170a565b90505f611aa58482850161194b565b5f83015250602082015167ffffffffffffffff811115611ac857611ac7611931565b5b611ad4848285016119cd565b602083015250604082015167ffffffffffffffff811115611af857611af7611931565b5b611b04848285016119a0565b604083015250606082015167ffffffffffffffff811115611b2857611b27611931565b5b611b3484828501611a22565b60608301525092915050565b5f60208284031215611b5557611b54611316565b5b5f82015167ffffffffffffffff811115611b7257611b7161131a565b5b611b7e84828501611a77565b91505092915050565b5f67ffffffffffffffff821115611ba157611ba06116ac565b5b611baa82611413565b9050602081019050919050565b5f611bc9611bc484611b87565b61170a565b905082815260208101848484011115611be557611be46116a8565b5b611bf08482856113eb565b509392505050565b5f82601f830112611c0c57611c0b6116a4565b5b8151611c1c848260208601611bb7565b91505092915050565b5f60a08284031215611c3a57611c3961192d565b5b611c4460a061170a565b90505f82015167ffffffffffffffff811115611c6357611c62611931565b5b611c6f84828501611bf8565b5f83015250602082015167ffffffffffffffff811115611c9257611c91611931565b5b611c9e84828501611bf8565b602083015250604082015167ffffffffffffffff811115611cc257611cc1611931565b5b611cce84828501611bf8565b604083015250606082015167ffffffffffffffff811115611cf257611cf1611931565b5b611cfe84828501611bf8565b606083015250608082015167ffffffffffffffff811115611d2257611d21611931565b5b611d2e84828501611bf8565b60808301525092915050565b5f60408284031215611d4f57611d4e61192d565b5b611d59604061170a565b90505f82015167ffffffffffffffff811115611d7857611d77611931565b5b611d8484828501611a77565b5f83015250602082015167ffffffffffffffff811115611da757611da6611931565b5b611db384828501611c25565b60208301525092915050565b5f60208284031215611dd457611dd3611316565b5b5f82015167ffffffffffffffff811115611df157611df061131a565b5b611dfd84828501611d3a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611e4f81611e33565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611ea282611e7e565b611eac8185611e88565b9350611ebc8185602086016113eb565b611ec581611413565b840191505092915050565b5f602083015f8301518482035f860152611eea8282611e98565b9150508091505092915050565b611f008161147b565b82525050565b5f604083015f8301518482035f860152611f208282611ed0565b9150506020830151611f356020860182611ef7565b508091505092915050565b5f611f4b8383611f06565b905092915050565b5f602082019050919050565b5f611f6982611e55565b611f738185611e5f565b935083602082028501611f8585611e6f565b805f5b85811015611fc05784840389528151611fa18582611f40565b9450611fac83611f53565b925060208a01995050600181019050611f88565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612004816118f4565b82525050565b5f6120158383611ffb565b60208301905092915050565b5f602082019050919050565b5f61203782611fd2565b6120418185611fdc565b935061204c83611fec565b805f5b8381101561207c578151612063888261200a565b975061206e83612021565b92505060018101905061204f565b5085935050505092915050565b5f606083015f83015161209e5f860182611e46565b50602083015184820360208601526120b68282611f5f565b915050604083015184820360408601526120d0828261202d565b9150508091505092915050565b5f6060820190506120f05f830186611509565b6120fd6020830185611509565b818103604083015261210f8184612089565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121508261147b565b915061215b8361147b565b925082820190508082111561217357612172612119565b5b92915050565b5f6121838261147b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121b5576121b4612119565b5b600182019050919050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f61220582516121cf565b80915050919050565b5f82821b905092915050565b5f61222482611e7e565b8261222e846121c0565b9050612239816121fa565b92506014821015612279576122747fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360140360080261220e565b831692505b5050919050565b5f8160601b9050919050565b5f61229682612280565b9050919050565b5f6122a78261228c565b9050919050565b6122bf6122ba826114f8565b61229d565b82525050565b5f6122d082846122ae565b60148201915081905092915050565b5f602083015f8301518482035f8601526122f98282611e98565b9150508091505092915050565b5f6040820190508181035f83015261231e81856122df565b905061232d6020830184611905565b9392505050565b5f8151905061234281611484565b92915050565b5f6020828403121561235d5761235c611316565b5b5f61236a84828501612334565b91505092915050565b5f82825260208201905092915050565b5f61238d82611e7e565b6123978185612373565b93506123a78185602086016113eb565b6123b081611413565b840191505092915050565b5f6080820190506123ce5f830187611509565b6123db6020830186611509565b6123e86040830185611614565b81810360608301526123fa8184612383565b905095945050505050565b5f8151905061241381611349565b92915050565b5f6020828403121561242e5761242d611316565b5b5f61243b84828501612405565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b5f819050919050565b61248b612486826118f4565b612471565b82525050565b5f61249c828461247a565b6020820191508190509291505056fea26469706673582212205268682fc711401bd537bd2a080043cb8b9e9fa58404ac6c44a52e662ae7087064736f6c63430008140033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime b/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime new file mode 100644 index 0000000000..ca1832c24c --- /dev/null +++ b/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime @@ -0,0 +1 @@ +6080604052600436106100c1575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb4651461025d578063b88d4fde14610285578063c87b56dd146102a1578063e985e9c5146102dd576100c1565b80636352211e146101bb57806370a08231146101f757806395d89b4114610233576100c1565b806301ffc9a7146100c557806306fdde0314610101578063081812fc1461012b578063095ea7b31461016757806323b872dd1461018357806342842e0e1461019f575b5f80fd5b3480156100d0575f80fd5b506100eb60048036038101906100e6919061118a565b610319565b6040516100f891906111cf565b60405180910390f35b34801561010c575f80fd5b50610115610407565b6040516101229190611272565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c91906112c5565b61041d565b60405161015e919061132f565b60405180910390f35b610181600480360381019061017c9190611372565b610455565b005b61019d600480360381019061019891906113b0565b61058e565b005b6101b960048036038101906101b491906113b0565b6105b0565b005b3480156101c6575f80fd5b506101e160048036038101906101dc91906112c5565b6105cf565b6040516101ee919061132f565b60405180910390f35b348015610202575f80fd5b5061021d60048036038101906102189190611400565b6106a5565b60405161022a919061143a565b60405180910390f35b34801561023e575f80fd5b506102476106be565b6040516102549190611272565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e919061147d565b6106d4565b005b61029f600480360381019061029a91906115e7565b610803565b005b3480156102ac575f80fd5b506102c760048036038101906102c291906112c5565b610828565b6040516102d49190611272565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190611667565b6108e9565b60405161031091906111cf565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b157506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104005750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060405180602001604052805f815250905090565b5f805f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61045f826105cf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610498575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104d857506104d781336108e9565b5b6104e0575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6105983382610977565b6105a0575f80fd5b6105ab838383610a0b565b505050565b6105ca83838360405180602001604052805f815250610803565b505050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b7261060a85610bef565b6040518263ffffffff1660e01b815260040161062691906116ce565b5f60405180830381865afa158015610640573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061066891906118fa565b90506106778160600151610bfa565b61067f575f80fd5b61068881610c2f565b610690575f80fd5b61069d8160600151610c39565b915050919050565b5f6106b76106b283610d2d565b610ea1565b9050919050565b606060405180602001604052805f815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361070b575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516107f791906111cf565b60405180910390a35050565b61080e84848461058e565b61081a84848484610f35565b610822575f80fd5b50505050565b60605f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166343c4b6d861086485610bef565b6040518263ffffffff1660e01b815260040161088091906116ce565b5f60405180830381865afa15801561089a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108c29190611b79565b90506108d0815f0151610c2f565b6108d8575f80fd5b806020015160600151915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f80610982836105cf565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806109f157508373ffffffffffffffffffffffffffffffffffffffff166109d98461041d565b73ffffffffffffffffffffffffffffffffffffffff16145b80610a025750610a0181856108e9565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610a2b826105cf565b73ffffffffffffffffffffffffffffffffffffffff1614610a4a575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a81575f80fd5b610a8a81611022565b610a926110e7565b600167ffffffffffffffff811115610aad57610aac6114c3565b5b604051908082528060200260200182016040528015610adb5781602001602082028036833780820191505090505b508160400181905250610aed82610bef565b81604001515f81518110610b0457610b03611bc0565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610b6193929190611e97565b5f604051808303815f87803b158015610b78575f80fd5b505af1158015610b8a573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610c1657610c15611bc0565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f60019050919050565b5f80601467ffffffffffffffff811115610c5657610c556114c3565b5b6040519080825280601f01601f191660200182016040528015610c885781602001600182028036833780820191505090505b5090505f5b6014811015610d1757835f0151600182610ca79190611f00565b81518110610cb857610cb7611bc0565b5b602001015160f81c60f81b828281518110610cd657610cd5611bc0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610d0f90611f33565b915050610c8d565b5080610d2290611fd4565b60601c915050919050565b610d35611111565b5f82604051602001610d47919061207f565b6040516020818303038152906040529050610d60611111565b81516001610d6e9190611f00565b67ffffffffffffffff811115610d8757610d866114c3565b5b6040519080825280601f01601f191660200182016040528015610db95781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610ddc57610ddb611bc0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8251811015610e9657828181518110610e2857610e27611bc0565b5b602001015160f81c60f81b825f0151600183610e449190611f00565b81518110610e5557610e54611bc0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080610e8e90611f33565b915050610e0c565b508092505050919050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b8152600401610eef91906120c0565b602060405180830381865afa158015610f0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2e91906120f4565b9050919050565b5f610f3f846110d6565b610f4c576001905061101a565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b8152600401610f8c9493929190612167565b6020604051808303815f875af1158015610fa8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fcc91906121c5565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d3575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f80823b90505f8111915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61116981611135565b8114611173575f80fd5b50565b5f8135905061118481611160565b92915050565b5f6020828403121561119f5761119e61112d565b5b5f6111ac84828501611176565b91505092915050565b5f8115159050919050565b6111c9816111b5565b82525050565b5f6020820190506111e25f8301846111c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561121f578082015181840152602081019050611204565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611244826111e8565b61124e81856111f2565b935061125e818560208601611202565b6112678161122a565b840191505092915050565b5f6020820190508181035f83015261128a818461123a565b905092915050565b5f819050919050565b6112a481611292565b81146112ae575f80fd5b50565b5f813590506112bf8161129b565b92915050565b5f602082840312156112da576112d961112d565b5b5f6112e7848285016112b1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611319826112f0565b9050919050565b6113298161130f565b82525050565b5f6020820190506113425f830184611320565b92915050565b6113518161130f565b811461135b575f80fd5b50565b5f8135905061136c81611348565b92915050565b5f80604083850312156113885761138761112d565b5b5f6113958582860161135e565b92505060206113a6858286016112b1565b9150509250929050565b5f805f606084860312156113c7576113c661112d565b5b5f6113d48682870161135e565b93505060206113e58682870161135e565b92505060406113f6868287016112b1565b9150509250925092565b5f602082840312156114155761141461112d565b5b5f6114228482850161135e565b91505092915050565b61143481611292565b82525050565b5f60208201905061144d5f83018461142b565b92915050565b61145c816111b5565b8114611466575f80fd5b50565b5f8135905061147781611453565b92915050565b5f80604083850312156114935761149261112d565b5b5f6114a08582860161135e565b92505060206114b185828601611469565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114f98261122a565b810181811067ffffffffffffffff82111715611518576115176114c3565b5b80604052505050565b5f61152a611124565b905061153682826114f0565b919050565b5f67ffffffffffffffff821115611555576115546114c3565b5b61155e8261122a565b9050602081019050919050565b828183375f83830152505050565b5f61158b6115868461153b565b611521565b9050828152602081018484840111156115a7576115a66114bf565b5b6115b284828561156b565b509392505050565b5f82601f8301126115ce576115cd6114bb565b5b81356115de848260208601611579565b91505092915050565b5f805f80608085870312156115ff576115fe61112d565b5b5f61160c8782880161135e565b945050602061161d8782880161135e565b935050604061162e878288016112b1565b925050606085013567ffffffffffffffff81111561164f5761164e611131565b5b61165b878288016115ba565b91505092959194509250565b5f806040838503121561167d5761167c61112d565b5b5f61168a8582860161135e565b925050602061169b8582860161135e565b9150509250929050565b5f819050919050565b5f6116b8826116a5565b9050919050565b6116c8816116ae565b82525050565b5f6020820190506116e15f8301846116bf565b92915050565b5f80fd5b5f80fd5b6116f8816116a5565b8114611702575f80fd5b50565b5f81519050611713816116ef565b92915050565b5f61172b6117268461153b565b611521565b905082815260208101848484011115611747576117466114bf565b5b611752848285611202565b509392505050565b5f82601f83011261176e5761176d6114bb565b5b815161177e848260208601611719565b91505092915050565b5f6020828403121561179c5761179b6116e7565b5b6117a66020611521565b90505f82015167ffffffffffffffff8111156117c5576117c46116eb565b5b6117d18482850161175a565b5f8301525092915050565b5f602082840312156117f1576117f06116e7565b5b6117fb6020611521565b90505f82015167ffffffffffffffff81111561181a576118196116eb565b5b6118268482850161175a565b5f8301525092915050565b5f60808284031215611846576118456116e7565b5b6118506080611521565b90505f61185f84828501611705565b5f83015250602082015167ffffffffffffffff811115611882576118816116eb565b5b61188e84828501611787565b602083015250604082015167ffffffffffffffff8111156118b2576118b16116eb565b5b6118be8482850161175a565b604083015250606082015167ffffffffffffffff8111156118e2576118e16116eb565b5b6118ee848285016117dc565b60608301525092915050565b5f6020828403121561190f5761190e61112d565b5b5f82015167ffffffffffffffff81111561192c5761192b611131565b5b61193884828501611831565b91505092915050565b5f67ffffffffffffffff82111561195b5761195a6114c3565b5b6119648261122a565b9050602081019050919050565b5f61198361197e84611941565b611521565b90508281526020810184848401111561199f5761199e6114bf565b5b6119aa848285611202565b509392505050565b5f82601f8301126119c6576119c56114bb565b5b81516119d6848260208601611971565b91505092915050565b5f60a082840312156119f4576119f36116e7565b5b6119fe60a0611521565b90505f82015167ffffffffffffffff811115611a1d57611a1c6116eb565b5b611a29848285016119b2565b5f83015250602082015167ffffffffffffffff811115611a4c57611a4b6116eb565b5b611a58848285016119b2565b602083015250604082015167ffffffffffffffff811115611a7c57611a7b6116eb565b5b611a88848285016119b2565b604083015250606082015167ffffffffffffffff811115611aac57611aab6116eb565b5b611ab8848285016119b2565b606083015250608082015167ffffffffffffffff811115611adc57611adb6116eb565b5b611ae8848285016119b2565b60808301525092915050565b5f60408284031215611b0957611b086116e7565b5b611b136040611521565b90505f82015167ffffffffffffffff811115611b3257611b316116eb565b5b611b3e84828501611831565b5f83015250602082015167ffffffffffffffff811115611b6157611b606116eb565b5b611b6d848285016119df565b60208301525092915050565b5f60208284031215611b8e57611b8d61112d565b5b5f82015167ffffffffffffffff811115611bab57611baa611131565b5b611bb784828501611af4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611c0981611bed565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611c5c82611c38565b611c668185611c42565b9350611c76818560208601611202565b611c7f8161122a565b840191505092915050565b5f602083015f8301518482035f860152611ca48282611c52565b9150508091505092915050565b611cba81611292565b82525050565b5f604083015f8301518482035f860152611cda8282611c8a565b9150506020830151611cef6020860182611cb1565b508091505092915050565b5f611d058383611cc0565b905092915050565b5f602082019050919050565b5f611d2382611c0f565b611d2d8185611c19565b935083602082028501611d3f85611c29565b805f5b85811015611d7a5784840389528151611d5b8582611cfa565b9450611d6683611d0d565b925060208a01995050600181019050611d42565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611dbe816116ae565b82525050565b5f611dcf8383611db5565b60208301905092915050565b5f602082019050919050565b5f611df182611d8c565b611dfb8185611d96565b9350611e0683611da6565b805f5b83811015611e36578151611e1d8882611dc4565b9750611e2883611ddb565b925050600181019050611e09565b5085935050505092915050565b5f606083015f830151611e585f860182611c00565b5060208301518482036020860152611e708282611d19565b91505060408301518482036040860152611e8a8282611de7565b9150508091505092915050565b5f606082019050611eaa5f830186611320565b611eb76020830185611320565b8181036040830152611ec98184611e43565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611f0a82611292565b9150611f1583611292565b9250828201905080821115611f2d57611f2c611ed3565b5b92915050565b5f611f3d82611292565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f6f57611f6e611ed3565b5b600182019050919050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f611fbf8251611f89565b80915050919050565b5f82821b905092915050565b5f611fde82611c38565b82611fe884611f7a565b9050611ff381611fb4565b925060148210156120335761202e7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802611fc8565b831692505b5050919050565b5f8160601b9050919050565b5f6120508261203a565b9050919050565b5f61206182612046565b9050919050565b6120796120748261130f565b612057565b82525050565b5f61208a8284612068565b60148201915081905092915050565b5f602083015f8301518482035f8601526120b38282611c52565b9150508091505092915050565b5f6020820190508181035f8301526120d88184612099565b905092915050565b5f815190506120ee8161129b565b92915050565b5f602082840312156121095761210861112d565b5b5f612116848285016120e0565b91505092915050565b5f82825260208201905092915050565b5f61213982611c38565b612143818561211f565b9350612153818560208601611202565b61215c8161122a565b840191505092915050565b5f60808201905061217a5f830187611320565b6121876020830186611320565b612194604083018561142b565b81810360608301526121a6818461212f565b905095945050505050565b5f815190506121bf81611160565b92915050565b5f602082840312156121da576121d961112d565b5b5f6121e7848285016121b1565b9150509291505056fea264697066735822122063d9e3d46d336a2dbd7041f9b5f9953649d24ae6bf34d0da30160c951df3a2d764736f6c63430008140033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ISC.bin-runtime b/packages/vm/core/evm/iscmagic/ISC.bin-runtime deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/vm/core/testcore/base_test.go b/packages/vm/core/testcore/base_test.go index d08e4ed360..a2013b27cd 100644 --- a/packages/vm/core/testcore/base_test.go +++ b/packages/vm/core/testcore/base_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/require" iotago "github.com/iotaledger/iota.go/v3" + "github.com/iotaledger/wasp/packages/hashing" "github.com/iotaledger/wasp/packages/isc" "github.com/iotaledger/wasp/packages/kv/codec" "github.com/iotaledger/wasp/packages/parameters" @@ -46,6 +47,8 @@ func TestInitLoad(t *testing.T) { t.Logf("common base tokens: %d", ch.L2CommonAccountBaseTokens()) require.True(t, cassets.BaseTokens >= accounts.MinimumBaseTokensOnCommonAccount) + + env.VerifyDBHash(hashing.MustHashValueFromHex("0x49413f4c5b68285c852f9693904c5bc622c3907eea60307b79fa8db971cc8a62")) } // TestLedgerBaseConsistency deploys chain and check consistency of L1 and L2 ledgers