From 9670b8d0737e69855b9a5d8717da3ac1f3619d18 Mon Sep 17 00:00:00 2001 From: minghinmatthewlam Date: Tue, 26 Sep 2023 13:41:49 -0700 Subject: [PATCH] Integrate warp non compatible changes (#42) * new predicate utils for tx * update subnet-evm commit to v0.5.6 * update abi and receiveCrossChainMessage for index parameter * update teleporter deployment * receiveCrossChainMessage packing * update deploy files * update abi for teleporter * test added buffer gas * add comment and remove extra gas * update messageIndex parameter and abi references * update ci with v0.5.6 * update unit test go version * update versions and use subnet-evm rpc * update warp genesis and fix typo --- .github/workflows/e2e.yml | 4 ++-- .github/workflows/test.yml | 4 ++-- Dockerfile | 4 ++-- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- messages/teleporter/abi.go | 4 ++-- messages/teleporter/message.go | 4 +++- messages/teleporter/message_manager.go | 1 + scripts/versions.sh | 6 +++--- tests/UniversalTeleporterDeployerAddress.txt | 2 +- tests/UniversalTeleporterDeployerTransaction.txt | 2 +- ...iversalTeleporterMessengerContractAddress.txt | 2 +- tests/e2e_test.go | 4 ++-- tests/warp-genesis.json | 1 + 14 files changed, 33 insertions(+), 29 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index c55b15f0..6221dd64 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -12,7 +12,7 @@ on: - "*" env: - GO_VERSION: "1.20.7" + GO_VERSION: "1.20.8" jobs: e2e_tests: @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@v4 with: repository: ava-labs/subnet-evm - ref: v0.5.4 + ref: v0.5.6 - name: Setup Go uses: actions/setup-go@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6c7069f5..73996d8c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,10 +6,10 @@ name: Tests on: push: branches: - - '*' + - "*" env: - GO_VERSION: "1.20.7" + GO_VERSION: "1.20.8" jobs: test_relayer: diff --git a/Dockerfile b/Dockerfile index 8094b197..19c60b94 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ### Build Stage ### -FROM golang:1.20.7-bullseye as build +FROM golang:1.20.8-bullseye as build WORKDIR /go/src # Copy the code into the container @@ -9,7 +9,7 @@ RUN go mod tidy RUN bash ./scripts/build.sh ### RUN Stage ### -FROM golang:1.20.7 +FROM golang:1.20.8 COPY --from=build /go/src/build/awm-relayer /usr/bin/awm-relayer EXPOSE 8080 USER 1001 diff --git a/go.mod b/go.mod index 941c5ee5..08fd3777 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,9 @@ module github.com/ava-labs/awm-relayer go 1.18 require ( - github.com/ava-labs/avalanche-network-runner v1.7.2-0.20230825150237-723bc7b31724 - github.com/ava-labs/avalanchego v1.10.9 - github.com/ava-labs/coreth v0.12.5-rc.3 - github.com/ava-labs/subnet-evm v0.5.4 + github.com/ava-labs/avalanche-network-runner v1.7.2 + github.com/ava-labs/avalanchego v1.10.10 + github.com/ava-labs/subnet-evm v0.5.6 github.com/ethereum/go-ethereum v1.12.0 github.com/onsi/ginkgo/v2 v2.12.0 github.com/onsi/gomega v1.27.10 @@ -21,6 +20,7 @@ require ( require ( github.com/Microsoft/go-winio v0.5.2 // indirect + github.com/ava-labs/coreth v0.12.5-rc.6 // indirect github.com/cockroachdb/errors v1.9.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // indirect diff --git a/go.sum b/go.sum index 6285d971..08b32a2c 100644 --- a/go.sum +++ b/go.sum @@ -61,14 +61,14 @@ github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/ava-labs/avalanche-network-runner v1.7.2-0.20230825150237-723bc7b31724 h1:ptqFgQtJ5DyLb2lvuvawLJNlvo1A1qv+JXYTneNeg14= -github.com/ava-labs/avalanche-network-runner v1.7.2-0.20230825150237-723bc7b31724/go.mod h1:euKHwZ77sGvGfhVj4v9WPM4jD2b5N80ldE2XHqO7lwA= -github.com/ava-labs/avalanchego v1.10.9 h1:qxhp3YoD2Wm/iIKP6Wb1isbkUPWmIrJxWgivDoL0obM= -github.com/ava-labs/avalanchego v1.10.9/go.mod h1:C8R5uiltpc8MQ62ixxgODR+15mesWF0aAw3H+Qrl9Iw= -github.com/ava-labs/coreth v0.12.5-rc.3 h1:cpmC+fSZMsO4gaFWqXHzAHrJACf05u5HPAYmwh7nmkU= -github.com/ava-labs/coreth v0.12.5-rc.3/go.mod h1:HI+jTIflnDFBd0bledgkgid1Uurwr8q1h7zb3LsFsSo= -github.com/ava-labs/subnet-evm v0.5.4 h1:4+UHva8rhGlvH4gDYpI0Lt6/J5ie1DqQa6kEmbebArI= -github.com/ava-labs/subnet-evm v0.5.4/go.mod h1:PAyhfYnECzA17N62i7OAdKazjfSsN2l8KR5nOspg39I= +github.com/ava-labs/avalanche-network-runner v1.7.2 h1:XFad/wZfYzDnqbLzPAPPRYU3a1Zc8QT8x5dtLTS3lUo= +github.com/ava-labs/avalanche-network-runner v1.7.2/go.mod h1:naLveusSrP7YgTAqRykD1SyLOAUilCp9jGjk3MDxoPI= +github.com/ava-labs/avalanchego v1.10.10 h1:EYX4LVotcfdtIQ0nJSBTcoisubx/Bzk2tM1aP3yiYiw= +github.com/ava-labs/avalanchego v1.10.10/go.mod h1:6UA0nxxTvvpyuCbP2DSzx9+7uWQfQx9DPApK8JptLiE= +github.com/ava-labs/coreth v0.12.5-rc.6 h1:OajGUyKkO5Q82XSuMa8T5UD6QywtCHUiZ4Tv3RFmRBU= +github.com/ava-labs/coreth v0.12.5-rc.6/go.mod h1:s5wVyy+5UCCk2m0Tq3jVmy0UqOpKBDYqRE13gInCJVs= +github.com/ava-labs/subnet-evm v0.5.6 h1:u+xBvEExOa362Up02hgSgeF+aqDona57whhRIeEIim8= +github.com/ava-labs/subnet-evm v0.5.6/go.mod h1:desGY3ghT+Ner+oqxeovwF37eM4dmMQbYZECONPQU9w= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= diff --git a/messages/teleporter/abi.go b/messages/teleporter/abi.go index 650dfafb..a1cbcf8f 100644 --- a/messages/teleporter/abi.go +++ b/messages/teleporter/abi.go @@ -10,8 +10,8 @@ import ( "github.com/ava-labs/subnet-evm/accounts/abi" ) -// ABI for ITeleporterMessenger.sol in github.com/ava-labs/teleporter@0f76bf51d02027a3139680a880a0d4ddff782ec1 -const EVMTeleporterContractRawABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct TeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"FailedMessageExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"delivered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"messageIDs\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct TeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"retryReceipts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct TeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct TeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" +// ABI for ITeleporterMessenger.sol in github.com/ava-labs/teleporter@e496ee0817ce72cd1bc84d1d2ccd366164e6bc4c +const EVMTeleporterContractRawABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct TeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"FailedMessageExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"MessageExecutionRetried\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feeContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"delivered\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originChainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"messageIDs\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct TeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"retryReceipts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"struct TeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct TeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationChainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct TeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct TeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"messageID\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" var EVMTeleporterContractABI abi.ABI diff --git a/messages/teleporter/message.go b/messages/teleporter/message.go index 0d55672d..4879f7fc 100644 --- a/messages/teleporter/message.go +++ b/messages/teleporter/message.go @@ -33,7 +33,9 @@ type TeleporterMessageReceipt struct { // ReceiveCrossChainMessageInput is the input to receiveCrossChainMessage call // in the contract deployed on the destination chain +// - messageIndex: specifies the warp message in the transaction's storage slots. type ReceiveCrossChainMessageInput struct { + MessageIndex uint32 `json:"messageIndex"` RelayerRewardAddress common.Address `json:"relayerRewardAddress"` } @@ -69,7 +71,7 @@ func UnpackTeleporterMessage(messageBytes []byte) (*TeleporterMessage, error) { // PackReceiveCrossChainMessage packs a ReceiveCrossChainMessageInput to form a call to the receiveCrossChainMessage function func PackReceiveCrossChainMessage(inputStruct ReceiveCrossChainMessageInput) ([]byte, error) { - return EVMTeleporterContractABI.Pack("receiveCrossChainMessage", inputStruct.RelayerRewardAddress) + return EVMTeleporterContractABI.Pack("receiveCrossChainMessage", inputStruct.MessageIndex, inputStruct.RelayerRewardAddress) } // PackMessageReceived packs a MessageReceivedInput to form a call to the messageReceived function diff --git a/messages/teleporter/message_manager.go b/messages/teleporter/message_manager.go index 506f23ea..d6334bbf 100644 --- a/messages/teleporter/message_manager.go +++ b/messages/teleporter/message_manager.go @@ -254,6 +254,7 @@ func (m *messageManager) SendMessage(signedMessage *warp.Message, parsedVmPayloa } // Construct the transaction call data to call the receive cross chain message method of the receiver precompile. callData, err := PackReceiveCrossChainMessage(ReceiveCrossChainMessageInput{ + MessageIndex: uint32(0), RelayerRewardAddress: common.HexToAddress(m.messageConfig.RewardAddress), }) if err != nil { diff --git a/scripts/versions.sh b/scripts/versions.sh index 7f82a43a..fe379988 100755 --- a/scripts/versions.sh +++ b/scripts/versions.sh @@ -3,8 +3,8 @@ # See the file LICENSE for licensing terms. # Set up the versions to be used -AWM_RELAYER_VERSION=${AWM_RELAYER_VERSION:-'v0.2.1'} -SUBNET_EVM_VERSION=${SUBNET_EVM_VERSION:-'v0.5.4'} +AWM_RELAYER_VERSION=${AWM_RELAYER_VERSION:-'v0.2.2'} +SUBNET_EVM_VERSION=${SUBNET_EVM_VERSION:-'v0.5.6'} # Don't export them as they're used in the context of other calls -AVALANCHE_VERSION=${AVALANCHE_VERSION:-'v1.10.9'} +AVALANCHE_VERSION=${AVALANCHE_VERSION:-'v1.10.10'} GINKGO_VERSION=${GINKGO_VERSION:-'v2.2.0'} diff --git a/tests/UniversalTeleporterDeployerAddress.txt b/tests/UniversalTeleporterDeployerAddress.txt index 07be42a5..9e65584f 100755 --- a/tests/UniversalTeleporterDeployerAddress.txt +++ b/tests/UniversalTeleporterDeployerAddress.txt @@ -1 +1 @@ -0x49db6B95B7005c0adfac0629cb1Ac77ADbDEDafE \ No newline at end of file +0x0aD891d31C69D4dB03F180EF74Af6Da07bB300BF \ No newline at end of file diff --git a/tests/UniversalTeleporterDeployerTransaction.txt b/tests/UniversalTeleporterDeployerTransaction.txt index 8c0229a9..e539b764 100755 --- a/tests/UniversalTeleporterDeployerTransaction.txt +++ b/tests/UniversalTeleporterDeployerTransaction.txt @@ -1 +1 @@ -0xf92f0080860246139ca800833d09008080b92eac60a06040523480156200001157600080fd5b506001600081905580556040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa1580156200006c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009291906200009b565b608052620000b5565b600060208284031215620000ae57600080fd5b5051919050565b608051612dd4620000d86000396000818161047a01526105f40152612dd46000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806365171908116100de578063b771b3bc11610097578063cd3f2daa11610071578063cd3f2daa14610462578063d127dc9b14610475578063df20e8bc1461049c578063e03555df146104af57600080fd5b8063b771b3bc146103f0578063c473eef8146103fe578063c9bb11431461043757600080fd5b806365171908146102da57806366533d12146102fd578063781f97441461037a57806382f2c43a146103a35780638f12376f146103d55780639a496900146103dd57600080fd5b806322296c3a1161013057806322296c3a1461022d57806329ec9beb1461024057806333e890fe146102605780635bf91119146102945780636192762c1461029c57806362448850146102c757600080fd5b80631008518114610178578063105343711461018d57806319570c74146101a85780631af671f8146101bb57806321f18054146101ce578063220c95681461021a575b600080fd5b61018b610186366004611c57565b6104e5565b005b610195600581565b6040519081526020015b60405180910390f35b61018b6101b6366004611c7b565b6108c9565b61018b6101c9366004611cd2565b610a6f565b6102026101dc366004611d18565b60056020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200161019f565b610195610228366004611d18565b610bc3565b61018b61023b366004611c57565b610be4565b61019561024e366004611d3a565b60026020526000908152604090205481565b61020261026e366004611d18565b60009182526005602090815260408084209284529190529020546001600160a01b031690565b610195600481565b6101956102aa366004611d53565b600760209081526000928352604080842090915290825290205481565b6101956102d5366004611d8c565b610c5e565b6102ed6102e8366004611e04565b610d10565b604051901515815260200161019f565b61034f61030b366004611d18565b60046020908152600092835260408084208252918352918190208054825180840190935260018201546001600160a01b031683526002909101549282019290925282565b6040805192835281516001600160a01b0316602080850191909152909101519082015260600161019f565b610202610388366004611d3a565b6003602052600090815260409020546001600160a01b031681565b6103b66103b1366004611d18565b610d57565b604080516001600160a01b03909316835260208301919091520161019f565b610195604481565b6101956103eb366004611e58565b610da0565b6102026005600160991b0181565b61019561040c366004611d53565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b610195610445366004611d18565b600660209081526000928352604080842090915290825290205481565b61018b610470366004611cd2565b610f20565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6101956104aa366004611d3a565b611139565b6102ed6104bd366004611d18565b60009182526005602090815260408084209284529190529020546001600160a01b0316151590565b60018054146105075760405163a815ca6b60e01b815260040160405180910390fd5b60026001556001600160a01b0381166105335760405163f69d505160e01b815260040160405180910390fd5b6000806005600160991b016001600160a01b0316631f9b40ec6040518163ffffffff1660e01b8152600401600060405180830381865afa15801561057b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105a39190810190612022565b91509150806105c557604051636b2f19e960e01b815260040160405180910390fd5b60208201516001600160a01b031630146105f25760405163e942653d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008260400151146106365760405163ba7cf01760e01b815260040160405180910390fd5b60608201516001600160a01b0316301461066357604051635209852960e01b815260040160405180910390fd5b6000826080015180602001905181019061067d9190612230565b83516000908152600560209081526040808320845184529091529020549091506001600160a01b0316156106c45760405163d68df41f60e01b815260040160405180910390fd5b6106d2338260800151611144565b6106ef57604051633c20627b60e01b815260040160405180910390fd5b8251600090815260056020908152604080832084518452909152902080546001600160a01b0319166001600160a01b03861617905560c0810151511561073b57825161073b90826111b9565b60a08101515160005b818110156107965760008360a0015182815181106107645761076461231a565b602002602001015190506107858660000151826000015183602001516112c0565b5061078f81612346565b9050610744565b5083516000908152600360205260409020546001600160a01b03168061080b576040516107c290611c22565b604051809103906000f0801580156107de573d6000803e3d6000fd5b508551600090815260036020526040902080546001600160a01b0319166001600160a01b03831617905590505b604080518082018252845181526001600160a01b0388811660208301529151634877bcdd60e11b8152918316916390ef79ba9161084a9160040161235f565b600060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b50505050826000015185600001517f522ce4da81e9fb994bf6a122282939647b6e69817be443f7d1c152e76a082cc7856040516108b5919061243c565b60405180910390a350506001805550505050565b6001600054146108ec5760405163880a040960e01b815260040160405180910390fd5b6002600090815581900361091357604051632e206d3360e21b815260040160405180910390fd5b6001600160a01b03821661093a5760405163338065fb60e11b815260040160405180910390fd5b60008481526004602090815260408083208684529091529020546109715760405163d68df41f60e01b815260040160405180910390fd5b60008481526004602090815260408083208684529091529020600101546001600160a01b038381169116146109b95760405163338065fb60e11b815260040160405180910390fd5b60006109c58383611390565b60008681526004602090815260408083208884529091528120600201805492935083929091906109f69084906124cb565b90915550506000858152600460209081526040808320878452825291829020825160018201546001600160a01b0316815260029091015491810191909152859187917f28fe05eedf0479c9159e5b6dd2a28c93fa1a408eba22dc801fd9bc493a7fc0c2910160405180910390a350506001600055505050565b600160005414610a925760405163880a040960e01b815260040160405180910390fd5b600260009081558281526004602090815260408083208435845290915290205480610ad0576040516328915ac760e01b815260040160405180910390fd5b600082604051602001610ae39190612663565b604051602081830303815290604052905081818051906020012014610b1b57604051638b56642d60e01b815260040160405180910390fd5b8260000135847f7491aecf1f3e24837ce48fd97fc8729fc036cebb3e5078643f3301b72852aa0785604051610b509190612663565b60405180910390a360405163125ce2d160e11b81526005600160991b01906324b9c5a290610b8690879030908690600401612733565b600060405180830381600087803b158015610ba057600080fd5b505af1158015610bb4573d6000803e3d6000fd5b50506001600055505050505050565b60008281526004602090815260408083208484529091529020545b92915050565b3360009081526007602090815260408083206001600160a01b038516845290915281205490819003610c2957604051630d1102c760e21b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b0387168085529252822091909155610c5a91836114b4565b5050565b6000600160005414610c835760405163880a040960e01b815260040160405180910390fd5b6002600055610d058235610c9d6040850160208601611c57565b604085016080860135610cb360a088018861275d565b610cc060c08a018a6127a6565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d009250508b359050611517565b6116fa565b600160005592915050565b6000610d4f8484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061114492505050565b949350505050565b6000828152600460209081526040808320848452825291829020825180840190935260018101546001600160a01b031680845260029091015492909101829052905b9250929050565b6000600160005414610dc55760405163880a040960e01b815260040160405180910390fd5b60026000908155856001600160401b03811115610de457610de4611ef0565b604051908082528060200260200182016040528015610e2957816020015b6040805180820190915260008082526020820152815260200190600190039081610e025790505b50905060005b86811015610eea576000888883818110610e4b57610e4b61231a565b60008d815260056020908152604080832093820295909501358083529290529290922054919250506001600160a01b031680610e9a576040516303bbb48b60e01b815260040160405180910390fd5b6040518060400160405280838152602001826001600160a01b0316815250848481518110610eca57610eca61231a565b602002602001018190525050508080610ee290612346565b915050610e2f565b5060408051600080825260208201909252610f0f918a918890829089908990886116fa565b600160005598975050505050505050565b6001805414610f425760405163a815ca6b60e01b815260040160405180910390fd5b600260015560008281526006602090815260408083208435845290915290205480610f80576040516328915ac760e01b815260040160405180910390fd5b8082604051602001610f929190612663565b6040516020818303038152906040528051906020012014610fc657604051638b56642d60e01b815260040160405180910390fd5b610fd66060830160408401611c57565b6001600160a01b03163b60000361100057604051635209852960e01b815260040160405180910390fd5b60405182359084907f3d5f30e93c1e27cda0e05a7b9e51144613a816cd90561f8493393bbcf4e0035890600090a360008381526006602090815260408083208535845290915280822082905561105c9060608501908501611c57565b6001600160a01b0316846110766040860160208701611c57565b61108360c08701876127a6565b60405160240161109694939291906127ec565b60408051601f198184030181529181526020820180516001600160e01b031663643477d560e11b179052516110cb9190612817565b6000604051808303816000865af19150503d8060008114611108576040519150601f19603f3d011682016040523d82523d6000602084013e61110d565b606091505b505090508061112f5760405163990b27a960e01b815260040160405180910390fd5b5050600180555050565b6000610bde82611952565b6000815160000361115757506001610bde565b60005b82518110156111af57836001600160a01b031683828151811061117f5761117f61231a565b60200260200101516001600160a01b03160361119f576001915050610bde565b6111a881612346565b905061115a565b5060009392505050565b80606001515a10156111de576040516307099c5360e21b815260040160405180910390fd5b80604001516001600160a01b03163b6000036111fe57610c5a828261196c565b600081604001516001600160a01b031682606001518484602001518560c0015160405160240161123093929190612733565b60408051601f198184030181529181526020820180516001600160e01b031663643477d560e11b179052516112659190612817565b60006040518083038160008787f1925050503d80600081146112a3576040519150601f19603f3d011682016040523d82523d6000602084013e6112a8565b606091505b50509050806112bb576112bb838361196c565b505050565b60008381526004602090815260408083208584528252918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805161131a5750505050565b600084815260046020908152604080832086845282528083208381556001810180546001600160a01b031916905560020183905583820180518301516001600160a01b03878116865260078552838620925151168552925282208054919290916113859084906124cb565b909155505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd9190612833565b90506114146001600160a01b0385163330866119ea565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa15801561145b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147f9190612833565b90508181116114a157604051632c1e664f60e11b815260040160405180910390fd5b6114ab828261284c565b95945050505050565b6040516001600160a01b0383166024820152604481018290526112bb90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a28565b6000818152600360205260409020546060906001600160a01b03168061157c576040805160008082526020820190925290611574565b604080518082019091526000808252602082015281526020019060019003908161154d5790505b509392505050565b6000600590506000826001600160a01b031663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e69190612833565b905060058110156115f5578091505b816001600160401b0381111561160d5761160d611ef0565b60405190808252806020026020018201604052801561165257816020015b604080518082019091526000808252602082015281526020019060019003908161162b5790505b50935060005b828110156116f157836001600160a01b031663957908d16040518163ffffffff1660e01b815260040160408051808303816000875af115801561169f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c3919061285f565b8582815181106116d5576116d561231a565b6020026020010181905250806116ea90612346565b9050611658565b50505050919050565b600061170589611952565b905060006040518060e00160405280838152602001336001600160a01b031681526020018a6001600160a01b031681526020018881526020018787808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505050602080830187905260409283018890529151929350916117959184910161243c565b60408051601f1981840301815291815260008d8152600260209081529181208690559192508a0135156118155760006117d160208c018c611c57565b6001600160a01b0316036117f85760405163338065fb60e11b815260040160405180910390fd5b61181261180860208c018c611c57565b8b60200135611390565b90505b60405180604001604052808380519060200120815260200160405180604001604052808d600001602081019061184b9190611c57565b6001600160a01b03908116825260209182018690529190925260008f8152600483526040808220898352845290819020845181559383015180516001860180546001600160a01b03191691909416179092559101516002909201919091555184908d907f7491aecf1f3e24837ce48fd97fc8729fc036cebb3e5078643f3301b72852aa07906118db90879061243c565b60405180910390a360405163125ce2d160e11b81526005600160991b01906324b9c5a290611911908f9030908790600401612733565b600060405180830381600087803b15801561192b57600080fd5b505af115801561193f573d6000803e3d6000fd5b5050505050505098975050505050505050565b600081815260026020526040812054610bde9060016124cb565b8060405160200161197d919061243c565b60408051601f198184030181528282528051602091820120600086815260068352838120865182529092529190205581519083907f50e5f3de5b0b3e6c82553b7e0f5f7080a291be07aa30a311084a9457f4a956bc906119de90859061243c565b60405180910390a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052611a229085906323b872dd60e01b906084016114e0565b50505050565b6000611a7d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611aff9092919063ffffffff16565b8051909150156112bb5780806020019051810190611a9b919061287b565b6112bb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b6060610d4f848460008585600080866001600160a01b03168587604051611b269190612817565b60006040518083038185875af1925050503d8060008114611b63576040519150601f19603f3d011682016040523d82523d6000602084013e611b68565b606091505b5091509150611b7987838387611b84565b979650505050505050565b60608315611bf3578251600003611bec576001600160a01b0385163b611bec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611af6565b5081610d4f565b610d4f8383815115611c085781518083602001fd5b8060405162461bcd60e51b8152600401611af69190612896565b6104f5806128aa83390190565b6001600160a01b0381168114611c4457600080fd5b50565b8035611c5281611c2f565b919050565b600060208284031215611c6957600080fd5b8135611c7481611c2f565b9392505050565b60008060008060808587031215611c9157600080fd5b84359350602085013592506040850135611caa81611c2f565b9396929550929360600135925050565b600060e08284031215611ccc57600080fd5b50919050565b60008060408385031215611ce557600080fd5b8235915060208301356001600160401b03811115611d0257600080fd5b611d0e85828601611cba565b9150509250929050565b60008060408385031215611d2b57600080fd5b50508035926020909101359150565b600060208284031215611d4c57600080fd5b5035919050565b60008060408385031215611d6657600080fd5b8235611d7181611c2f565b91506020830135611d8181611c2f565b809150509250929050565b600060208284031215611d9e57600080fd5b81356001600160401b03811115611db457600080fd5b610d4f84828501611cba565b60008083601f840112611dd257600080fd5b5081356001600160401b03811115611de957600080fd5b6020830191508360208260051b8501011115610d9957600080fd5b600080600060408486031215611e1957600080fd5b8335611e2481611c2f565b925060208401356001600160401b03811115611e3f57600080fd5b611e4b86828701611dc0565b9497909650939450505050565b60008060008060008086880360a0811215611e7257600080fd5b8735965060208801356001600160401b0380821115611e9057600080fd5b611e9c8b838c01611dc0565b90985096508691506040603f1984011215611eb657600080fd5b60408a01955060808a0135925080831115611ed057600080fd5b5050611ede89828a01611dc0565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611f2857611f28611ef0565b60405290565b60405160e081016001600160401b0381118282101715611f2857611f28611ef0565b604051601f8201601f191681016001600160401b0381118282101715611f7857611f78611ef0565b604052919050565b8051611c5281611c2f565b60005b83811015611fa6578181015183820152602001611f8e565b50506000910152565b600082601f830112611fc057600080fd5b81516001600160401b03811115611fd957611fd9611ef0565b611fec601f8201601f1916602001611f50565b81815284602083860101111561200157600080fd5b610d4f826020830160208701611f8b565b80518015158114611c5257600080fd5b6000806040838503121561203557600080fd5b82516001600160401b038082111561204c57600080fd5b9084019060a0828703121561206057600080fd5b612068611f06565b82518152602083015161207a81611c2f565b602082015260408381015190820152606083015161209781611c2f565b60608201526080830151828111156120ae57600080fd5b6120ba88828601611faf565b60808301525093506120d191505060208401612012565b90509250929050565b60006001600160401b038211156120f3576120f3611ef0565b5060051b60200190565b600082601f83011261210e57600080fd5b8151602061212361211e836120da565b611f50565b82815260059290921b8401810191818101908684111561214257600080fd5b8286015b8481101561216657805161215981611c2f565b8352918301918301612146565b509695505050505050565b60006040828403121561218357600080fd5b604051604081018181106001600160401b03821117156121a5576121a5611ef0565b80604052508091508251815260208301516121bf81611c2f565b6020919091015292915050565b600082601f8301126121dd57600080fd5b815160206121ed61211e836120da565b82815260069290921b8401810191818101908684111561220c57600080fd5b8286015b84811015612166576122228882612171565b835291830191604001612210565b60006020828403121561224257600080fd5b81516001600160401b038082111561225957600080fd5b9083019060e0828603121561226d57600080fd5b612275611f2e565b8251815261228560208401611f80565b602082015261229660408401611f80565b6040820152606083015160608201526080830151828111156122b757600080fd5b6122c3878286016120fd565b60808301525060a0830151828111156122db57600080fd5b6122e7878286016121cc565b60a08301525060c0830151828111156122ff57600080fd5b61230b87828601611faf565b60c08301525095945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161235857612358612330565b5060010190565b815181526020808301516001600160a01b03169082015260408101610bde565b600081518084526020808501945080840160005b838110156123b85781516001600160a01b031687529582019590820190600101612393565b509495945050505050565b600081518084526020808501945080840160005b838110156123b8576123fd878351805182526020908101516001600160a01b0316910152565b60409690960195908201906001016123d7565b60008151808452612428816020860160208601611f8b565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160018060a01b038082166040850152806040860151166060850152505060608301516080830152608083015160e060a084015261248f61010084018261237f565b905060a0840151601f19808584030160c08601526124ad83836123c3565b925060c08601519150808584030160e0860152506114ab8282612410565b80820180821115610bde57610bde612330565b6000808335601e198436030181126124f557600080fd5b83016020810192503590506001600160401b0381111561251457600080fd5b8060051b3603821315610d9957600080fd5b8183526000602080850194508260005b858110156123b857813561254981611c2f565b6001600160a01b031687529582019590820190600101612536565b6000808335601e1984360301811261257b57600080fd5b83016020810192503590506001600160401b0381111561259a57600080fd5b8060061b3603821315610d9957600080fd5b8183526000602080850194508260005b858110156123b85781358752828201356125d581611c2f565b6001600160a01b03168784015260409687019691909101906001016125bc565b6000808335601e1984360301811261260c57600080fd5b83016020810192503590506001600160401b0381111561262b57600080fd5b803603821315610d9957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152813560208201526000602083013561267e81611c2f565b6001600160a01b031660408381019190915261269b908401611c47565b6001600160a01b038116606084015250606083013560808301526126c260808401846124de565b60e060a08501526126d861010085018284612526565b9150506126e860a0850185612564565b601f19808685030160c08701526127008483856125ac565b935061270f60c08801886125f5565b93509150808685030160e08701525061272983838361263a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906114ab90830184612410565b6000808335601e1984360301811261277457600080fd5b8301803591506001600160401b0382111561278e57600080fd5b6020019150600581901b3603821315610d9957600080fd5b6000808335601e198436030181126127bd57600080fd5b8301803591506001600160401b038211156127d757600080fd5b602001915036819003821315610d9957600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612729908301848661263a565b60008251612829818460208701611f8b565b9190910192915050565b60006020828403121561284557600080fd5b5051919050565b81810381811115610bde57610bde612330565b60006040828403121561287157600080fd5b611c748383612171565b60006020828403121561288d57600080fd5b611c7482612012565b602081526000611c74602083018461241056fe60a06040526000600155600060025534801561001a57600080fd5b50336080526080516104ae6100476000396000818160ac01528181610187015261027d01526104ae6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806390ef79ba1161005b57806390ef79ba146100e6578063949d225d146100fb578063957908d114610103578063ddf0b0091461012f57600080fd5b80633df4ddf41461008257806347799da81461009e5780638da5cb5b146100a7575b600080fd5b61008b60015481565b6040519081526020015b60405180910390f35b61008b60025481565b6100ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610095565b6100f96100f436600461037b565b61017c565b005b61008b610247565b61010b61025e565b60408051825181526020928301516001600160a01b03169281019290925201610095565b61015f61013d366004610393565b600060208190529081526040902080546001909101546001600160a01b031682565b604080519283526001600160a01b03909116602083015201610095565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c4576040516282b42960e81b815260040160405180910390fd5b6002805482916000918291826101d9836103c2565b91905055815260200190815260200160002081816101f791906103f3565b5061020a90506040820160208301610428565b6001600160a01b031681600001357fc4193cc773105974437d05cb715f0f6ec12111aaea921df69ece51d70093f12760405160405180910390a350565b6000600154600254610259919061044c565b905090565b6040805180820190915260008082526020820152336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102ba576040516282b42960e81b815260040160405180910390fd5b6001546002548190036102e0576040516331dcf2b560e01b815260040160405180910390fd5b600081815260208181526040808320815180830190925280548252600180820180546001600160a01b0381168587015287875294869052949091556001600160a01b0319909216909255909250610338908290610465565b600155602082015182516040516001600160a01b03909216917f05a9686ec81d1f07f4a996660cf66d8c3f2fd0fdfd7bb23458fe7a7df30c9ce790600090a35090565b60006040828403121561038d57600080fd5b50919050565b6000602082840312156103a557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016103d4576103d46103ac565b5060010190565b6001600160a01b03811681146103f057600080fd5b50565b81358155600181016020830135610409816103db565b81546001600160a01b0319166001600160a01b03919091161790555050565b60006020828403121561043a57600080fd5b8135610445816103db565b9392505050565b8181038181111561045f5761045f6103ac565b92915050565b8082018082111561045f5761045f6103ac56fea26469706673582212201f6f4e9e1d83f1bcfa7c7487cc9c21f177d4329423f05a5a949d0559295932b064736f6c63430008120033a264697066735822122058e26683966fa9a61e65952938630ff9606e956955de4e05ddaf6c2929152c8364736f6c634300081200331ba03333333333333333333333333333333333333333333333333333333333333333a03333333333333333333333333333333333333333333333333333333333333333 \ No newline at end of file +0xf92f2d80860246139ca800833d09008080b92ed960a06040523480156200001157600080fd5b506001600081905580556040805163084279ef60e31b8152905173020000000000000000000000000000000000000591634213cf789160048083019260209291908290030181865afa1580156200006c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009291906200009b565b608052620000b5565b600060208284031215620000ae57600080fd5b5051919050565b608051612e01620000d86000396000818161047a0152610c500152612e016000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806366533d12116100de578063c473eef811610097578063cd3f2daa11610071578063cd3f2daa14610462578063d127dc9b14610475578063df20e8bc1461049c578063e03555df146104af57600080fd5b8063c473eef8146103eb578063c9bb114314610424578063ccb5f8091461044f57600080fd5b806366533d12146102ea578063781f97441461036757806382f2c43a146103905780638f12376f146103c25780639a496900146103ca578063b771b3bc146103dd57600080fd5b806329ec9beb1161013057806329ec9beb1461022d57806333e890fe1461024d5780635bf91119146102815780636192762c1461028957806362448850146102b457806365171908146102c757600080fd5b8063105343711461017857806319570c74146101935780631af671f8146101a857806321f18054146101bb578063220c95681461020757806322296c3a1461021a575b600080fd5b610180600581565b6040519081526020015b60405180910390f35b6101a66101a1366004611c5d565b6104e5565b005b6101a66101b6366004611cb4565b61068b565b6101ef6101c9366004611cfa565b60056020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200161018a565b610180610215366004611cfa565b6107df565b6101a6610228366004611d1c565b610800565b61018061023b366004611d40565b60026020526000908152604090205481565b6101ef61025b366004611cfa565b60009182526005602090815260408084209284529190529020546001600160a01b031690565b610180600481565b610180610297366004611d59565b600760209081526000928352604080842090915290825290205481565b6101806102c2366004611d92565b61087a565b6102da6102d5366004611e0a565b61092c565b604051901515815260200161018a565b61033c6102f8366004611cfa565b60046020908152600092835260408084208252918352918190208054825180840190935260018201546001600160a01b031683526002909101549282019290925282565b6040805192835281516001600160a01b0316602080850191909152909101519082015260600161018a565b6101ef610375366004611d40565b6003602052600090815260409020546001600160a01b031681565b6103a361039e366004611cfa565b610973565b604080516001600160a01b03909316835260208301919091520161018a565b610180604481565b6101806103d8366004611e5e565b6109bc565b6101ef6005600160991b0181565b6101806103f9366004611d59565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b610180610432366004611cfa565b600660209081526000928352604080842090915290825290205481565b6101a661045d366004611ef6565b610b3c565b6101a6610470366004611cb4565b610f26565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6101806104aa366004611d40565b61113f565b6102da6104bd366004611cfa565b60009182526005602090815260408084209284529190529020546001600160a01b0316151590565b6001600054146105085760405163880a040960e01b815260040160405180910390fd5b6002600090815581900361052f57604051632e206d3360e21b815260040160405180910390fd5b6001600160a01b0382166105565760405163338065fb60e11b815260040160405180910390fd5b600084815260046020908152604080832086845290915290205461058d5760405163d68df41f60e01b815260040160405180910390fd5b60008481526004602090815260408083208684529091529020600101546001600160a01b038381169116146105d55760405163338065fb60e11b815260040160405180910390fd5b60006105e1838361114a565b6000868152600460209081526040808320888452909152812060020180549293508392909190610612908490611f33565b90915550506000858152600460209081526040808320878452825291829020825160018201546001600160a01b0316815260029091015491810191909152859187917f28fe05eedf0479c9159e5b6dd2a28c93fa1a408eba22dc801fd9bc493a7fc0c2910160405180910390a350506001600055505050565b6001600054146106ae5760405163880a040960e01b815260040160405180910390fd5b6002600090815582815260046020908152604080832084358452909152902054806106ec576040516328915ac760e01b815260040160405180910390fd5b6000826040516020016106ff91906120d6565b60405160208183030381529060405290508181805190602001201461073757604051638b56642d60e01b815260040160405180910390fd5b8260000135847f7491aecf1f3e24837ce48fd97fc8729fc036cebb3e5078643f3301b72852aa078560405161076c91906120d6565b60405180910390a360405163125ce2d160e11b81526005600160991b01906324b9c5a2906107a2908790309086906004016121f6565b600060405180830381600087803b1580156107bc57600080fd5b505af11580156107d0573d6000803e3d6000fd5b50506001600055505050505050565b60008281526004602090815260408083208484529091529020545b92915050565b3360009081526007602090815260408083206001600160a01b03851684529091528120549081900361084557604051630d1102c760e21b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b0387168085529252822091909155610876918361126e565b5050565b600060016000541461089f5760405163880a040960e01b815260040160405180910390fd5b600260005561092182356108b96040850160208601611d1c565b6040850160808601356108cf60a0880188612220565b6108dc60c08a018a612269565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091c9250508b3590506112d6565b6114b9565b600160005592915050565b600061096b8484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061171192505050565b949350505050565b6000828152600460209081526040808320848452825291829020825180840190935260018101546001600160a01b031680845260029091015492909101829052905b9250929050565b60006001600054146109e15760405163880a040960e01b815260040160405180910390fd5b60026000908155856001600160401b03811115610a0057610a006122af565b604051908082528060200260200182016040528015610a4557816020015b6040805180820190915260008082526020820152815260200190600190039081610a1e5790505b50905060005b86811015610b06576000888883818110610a6757610a676122c5565b60008d815260056020908152604080832093820295909501358083529290529290922054919250506001600160a01b031680610ab6576040516303bbb48b60e01b815260040160405180910390fd5b6040518060400160405280838152602001826001600160a01b0316815250848481518110610ae657610ae66122c5565b602002602001018190525050508080610afe906122db565b915050610a4b565b5060408051600080825260208201909252610b2b918a918890829089908990886114b9565b600160005598975050505050505050565b6001805414610b5e5760405163a815ca6b60e01b815260040160405180910390fd5b60026001556001600160a01b038116610b8a5760405163f69d505160e01b815260040160405180910390fd5b6040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610bd7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bff91908101906123ec565b9150915080610c2157604051636b2f19e960e01b815260040160405180910390fd5b60208201516001600160a01b03163014610c4e5760405163e942653d60e01b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000826040015114610c925760405163ba7cf01760e01b815260040160405180910390fd5b60608201516001600160a01b03163014610cbf57604051635209852960e01b815260040160405180910390fd5b60008260800151806020019051810190610cd991906125fa565b83516000908152600560209081526040808320845184529091529020549091506001600160a01b031615610d205760405163d68df41f60e01b815260040160405180910390fd5b610d2e338260800151611711565b610d4b57604051633c20627b60e01b815260040160405180910390fd5b8251600090815260056020908152604080832084518452909152902080546001600160a01b0319166001600160a01b03861617905560c08101515115610d97578251610d979082611786565b60a08101515160005b81811015610df25760008360a001518281518110610dc057610dc06122c5565b60200260200101519050610de1866000015182600001518360200151611888565b50610deb816122db565b9050610da0565b5083516000908152600360205260409020546001600160a01b031680610e6757604051610e1e90611c28565b604051809103906000f080158015610e3a573d6000803e3d6000fd5b508551600090815260036020526040902080546001600160a01b0319166001600160a01b03831617905590505b604080518082018252845181526001600160a01b0388811660208301529151634877bcdd60e11b8152918316916390ef79ba91610ea6916004016126e4565b600060405180830381600087803b158015610ec057600080fd5b505af1158015610ed4573d6000803e3d6000fd5b50505050826000015185600001517f522ce4da81e9fb994bf6a122282939647b6e69817be443f7d1c152e76a082cc785604051610f11919061278a565b60405180910390a35050600180555050505050565b6001805414610f485760405163a815ca6b60e01b815260040160405180910390fd5b600260015560008281526006602090815260408083208435845290915290205480610f86576040516328915ac760e01b815260040160405180910390fd5b8082604051602001610f9891906120d6565b6040516020818303038152906040528051906020012014610fcc57604051638b56642d60e01b815260040160405180910390fd5b610fdc6060830160408401611d1c565b6001600160a01b03163b60000361100657604051635209852960e01b815260040160405180910390fd5b60405182359084907f3d5f30e93c1e27cda0e05a7b9e51144613a816cd90561f8493393bbcf4e0035890600090a36000838152600660209081526040808320853584529091528082208290556110629060608501908501611d1c565b6001600160a01b03168461107c6040860160208701611d1c565b61108960c0870187612269565b60405160240161109c9493929190612819565b60408051601f198184030181529181526020820180516001600160e01b031663643477d560e11b179052516110d19190612844565b6000604051808303816000865af19150503d806000811461110e576040519150601f19603f3d011682016040523d82523d6000602084013e611113565b606091505b50509050806111355760405163990b27a960e01b815260040160405180910390fd5b5050600180555050565b60006107fa82611958565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190612860565b90506111ce6001600160a01b038516333086611972565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112399190612860565b905081811161125b57604051632c1e664f60e11b815260040160405180910390fd5b6112658282612879565b95945050505050565b6040516001600160a01b0383166024820152604481018290526112d190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526119b0565b505050565b6000818152600360205260409020546060906001600160a01b03168061133b576040805160008082526020820190925290611333565b604080518082019091526000808252602082015281526020019060019003908161130c5790505b509392505050565b6000600590506000826001600160a01b031663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a59190612860565b905060058110156113b4578091505b816001600160401b038111156113cc576113cc6122af565b60405190808252806020026020018201604052801561141157816020015b60408051808201909152600080825260208201528152602001906001900390816113ea5790505b50935060005b828110156114b057836001600160a01b031663957908d16040518163ffffffff1660e01b815260040160408051808303816000875af115801561145e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611482919061288c565b858281518110611494576114946122c5565b6020026020010181905250806114a9906122db565b9050611417565b50505050919050565b60006114c489611958565b905060006040518060e00160405280838152602001336001600160a01b031681526020018a6001600160a01b031681526020018881526020018787808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250938552505050602080830187905260409283018890529151929350916115549184910161278a565b60408051601f1981840301815291815260008d8152600260209081529181208690559192508a0135156115d457600061159060208c018c611d1c565b6001600160a01b0316036115b75760405163338065fb60e11b815260040160405180910390fd5b6115d16115c760208c018c611d1c565b8b6020013561114a565b90505b60405180604001604052808380519060200120815260200160405180604001604052808d600001602081019061160a9190611d1c565b6001600160a01b03908116825260209182018690529190925260008f8152600483526040808220898352845290819020845181559383015180516001860180546001600160a01b03191691909416179092559101516002909201919091555184908d907f7491aecf1f3e24837ce48fd97fc8729fc036cebb3e5078643f3301b72852aa079061169a90879061278a565b60405180910390a360405163125ce2d160e11b81526005600160991b01906324b9c5a2906116d0908f90309087906004016121f6565b600060405180830381600087803b1580156116ea57600080fd5b505af11580156116fe573d6000803e3d6000fd5b5050505050505098975050505050505050565b60008151600003611724575060016107fa565b60005b825181101561177c57836001600160a01b031683828151811061174c5761174c6122c5565b60200260200101516001600160a01b03160361176c5760019150506107fa565b611775816122db565b9050611727565b5060009392505050565b80606001515a10156117ab576040516307099c5360e21b815260040160405180910390fd5b80604001516001600160a01b03163b6000036117cb576108768282611a87565b600081604001516001600160a01b031682606001518484602001518560c001516040516024016117fd939291906121f6565b60408051601f198184030181529181526020820180516001600160e01b031663643477d560e11b179052516118329190612844565b60006040518083038160008787f1925050503d8060008114611870576040519150601f19603f3d011682016040523d82523d6000602084013e611875565b606091505b50509050806112d1576112d18383611a87565b60008381526004602090815260408083208584528252918290208251808401845281548152835180850190945260018201546001600160a01b03168452600290910154838301529081019190915280516118e25750505050565b600084815260046020908152604080832086845282528083208381556001810180546001600160a01b031916905560020183905583820180518301516001600160a01b038781168652600785528386209251511685529252822080549192909161194d908490611f33565b909155505050505050565b6000818152600260205260408120546107fa906001611f33565b6040516001600160a01b03808516602483015283166044820152606481018290526119aa9085906323b872dd60e01b9060840161129a565b50505050565b6000611a05826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b059092919063ffffffff16565b8051909150156112d15780806020019051810190611a2391906128a8565b6112d15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084015b60405180910390fd5b80604051602001611a98919061278a565b60408051601f198184030181528282528051602091820120600086815260068352838120865182529092529190205581519083907f50e5f3de5b0b3e6c82553b7e0f5f7080a291be07aa30a311084a9457f4a956bc90611af990859061278a565b60405180910390a35050565b606061096b848460008585600080866001600160a01b03168587604051611b2c9190612844565b60006040518083038185875af1925050503d8060008114611b69576040519150601f19603f3d011682016040523d82523d6000602084013e611b6e565b606091505b5091509150611b7f87838387611b8a565b979650505050505050565b60608315611bf9578251600003611bf2576001600160a01b0385163b611bf25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611a7e565b508161096b565b61096b8383815115611c0e5781518083602001fd5b8060405162461bcd60e51b8152600401611a7e91906128c3565b6104f5806128d783390190565b6001600160a01b0381168114611c4a57600080fd5b50565b8035611c5881611c35565b919050565b60008060008060808587031215611c7357600080fd5b84359350602085013592506040850135611c8c81611c35565b9396929550929360600135925050565b600060e08284031215611cae57600080fd5b50919050565b60008060408385031215611cc757600080fd5b8235915060208301356001600160401b03811115611ce457600080fd5b611cf085828601611c9c565b9150509250929050565b60008060408385031215611d0d57600080fd5b50508035926020909101359150565b600060208284031215611d2e57600080fd5b8135611d3981611c35565b9392505050565b600060208284031215611d5257600080fd5b5035919050565b60008060408385031215611d6c57600080fd5b8235611d7781611c35565b91506020830135611d8781611c35565b809150509250929050565b600060208284031215611da457600080fd5b81356001600160401b03811115611dba57600080fd5b61096b84828501611c9c565b60008083601f840112611dd857600080fd5b5081356001600160401b03811115611def57600080fd5b6020830191508360208260051b85010111156109b557600080fd5b600080600060408486031215611e1f57600080fd5b8335611e2a81611c35565b925060208401356001600160401b03811115611e4557600080fd5b611e5186828701611dc6565b9497909650939450505050565b60008060008060008086880360a0811215611e7857600080fd5b8735965060208801356001600160401b0380821115611e9657600080fd5b611ea28b838c01611dc6565b90985096508691506040603f1984011215611ebc57600080fd5b60408a01955060808a0135925080831115611ed657600080fd5b5050611ee489828a01611dc6565b979a9699509497509295939492505050565b60008060408385031215611f0957600080fd5b823563ffffffff81168114611d7757600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156107fa576107fa611f1d565b6000808335601e19843603018112611f5d57600080fd5b83016020810192503590506001600160401b03811115611f7c57600080fd5b8060051b36038213156109b557600080fd5b8183526000602080850194508260005b85811015611fcc578135611fb181611c35565b6001600160a01b031687529582019590820190600101611f9e565b509495945050505050565b6000808335601e19843603018112611fee57600080fd5b83016020810192503590506001600160401b0381111561200d57600080fd5b8060061b36038213156109b557600080fd5b8183526000602080850194508260005b85811015611fcc57813587528282013561204881611c35565b6001600160a01b031687840152604096870196919091019060010161202f565b6000808335601e1984360301811261207f57600080fd5b83016020810192503590506001600160401b0381111561209e57600080fd5b8036038213156109b557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600060208301356120f181611c35565b6001600160a01b031660408381019190915261210e908401611c4d565b6001600160a01b038116606084015250606083013560808301526121356080840184611f46565b60e060a085015261214b61010085018284611f8e565b91505061215b60a0850185611fd7565b601f19808685030160c087015261217384838561201f565b935061218260c0880188612068565b93509150808685030160e08701525061219c8383836120ad565b9695505050505050565b60005b838110156121c15781810151838201526020016121a9565b50506000910152565b600081518084526121e28160208601602086016121a6565b601f01601f19169290920160200192915050565b8381526001600160a01b0383166020820152606060408201819052600090611265908301846121ca565b6000808335601e1984360301811261223757600080fd5b8301803591506001600160401b0382111561225157600080fd5b6020019150600581901b36038213156109b557600080fd5b6000808335601e1984360301811261228057600080fd5b8301803591506001600160401b0382111561229a57600080fd5b6020019150368190038213156109b557600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016122ed576122ed611f1d565b5060010190565b60405160a081016001600160401b0381118282101715612316576123166122af565b60405290565b60405160e081016001600160401b0381118282101715612316576123166122af565b604051601f8201601f191681016001600160401b0381118282101715612366576123666122af565b604052919050565b8051611c5881611c35565b600082601f83011261238a57600080fd5b81516001600160401b038111156123a3576123a36122af565b6123b6601f8201601f191660200161233e565b8181528460208386010111156123cb57600080fd5b61096b8260208301602087016121a6565b80518015158114611c5857600080fd5b600080604083850312156123ff57600080fd5b82516001600160401b038082111561241657600080fd5b9084019060a0828703121561242a57600080fd5b6124326122f4565b82518152602083015161244481611c35565b602082015260408381015190820152606083015161246181611c35565b606082015260808301518281111561247857600080fd5b61248488828601612379565b608083015250935061249b915050602084016123dc565b90509250929050565b60006001600160401b038211156124bd576124bd6122af565b5060051b60200190565b600082601f8301126124d857600080fd5b815160206124ed6124e8836124a4565b61233e565b82815260059290921b8401810191818101908684111561250c57600080fd5b8286015b8481101561253057805161252381611c35565b8352918301918301612510565b509695505050505050565b60006040828403121561254d57600080fd5b604051604081018181106001600160401b038211171561256f5761256f6122af565b806040525080915082518152602083015161258981611c35565b6020919091015292915050565b600082601f8301126125a757600080fd5b815160206125b76124e8836124a4565b82815260069290921b840181019181810190868411156125d657600080fd5b8286015b84811015612530576125ec888261253b565b8352918301916040016125da565b60006020828403121561260c57600080fd5b81516001600160401b038082111561262357600080fd5b9083019060e0828603121561263757600080fd5b61263f61231c565b8251815261264f6020840161236e565b60208201526126606040840161236e565b60408201526060830151606082015260808301518281111561268157600080fd5b61268d878286016124c7565b60808301525060a0830151828111156126a557600080fd5b6126b187828601612596565b60a08301525060c0830151828111156126c957600080fd5b6126d587828601612379565b60c08301525095945050505050565b815181526020808301516001600160a01b031690820152604081016107fa565b600081518084526020808501945080840160005b83811015611fcc5781516001600160a01b031687529582019590820190600101612718565b600081518084526020808501945080840160005b83811015611fcc57612777878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101612751565b60208152815160208201526000602083015160018060a01b038082166040850152806040860151166060850152505060608301516080830152608083015160e060a08401526127dd610100840182612704565b905060a0840151601f19808584030160c08601526127fb838361273d565b925060c08601519150808584030160e08601525061126582826121ca565b8481526001600160a01b038416602082015260606040820181905260009061219c90830184866120ad565b600082516128568184602087016121a6565b9190910192915050565b60006020828403121561287257600080fd5b5051919050565b818103818111156107fa576107fa611f1d565b60006040828403121561289e57600080fd5b611d39838361253b565b6000602082840312156128ba57600080fd5b611d39826123dc565b602081526000611d3960208301846121ca56fe60a06040526000600155600060025534801561001a57600080fd5b50336080526080516104ae6100476000396000818160ac01528181610187015261027d01526104ae6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806390ef79ba1161005b57806390ef79ba146100e6578063949d225d146100fb578063957908d114610103578063ddf0b0091461012f57600080fd5b80633df4ddf41461008257806347799da81461009e5780638da5cb5b146100a7575b600080fd5b61008b60015481565b6040519081526020015b60405180910390f35b61008b60025481565b6100ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610095565b6100f96100f436600461037b565b61017c565b005b61008b610247565b61010b61025e565b60408051825181526020928301516001600160a01b03169281019290925201610095565b61015f61013d366004610393565b600060208190529081526040902080546001909101546001600160a01b031682565b604080519283526001600160a01b03909116602083015201610095565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c4576040516282b42960e81b815260040160405180910390fd5b6002805482916000918291826101d9836103c2565b91905055815260200190815260200160002081816101f791906103f3565b5061020a90506040820160208301610428565b6001600160a01b031681600001357fc4193cc773105974437d05cb715f0f6ec12111aaea921df69ece51d70093f12760405160405180910390a350565b6000600154600254610259919061044c565b905090565b6040805180820190915260008082526020820152336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102ba576040516282b42960e81b815260040160405180910390fd5b6001546002548190036102e0576040516331dcf2b560e01b815260040160405180910390fd5b600081815260208181526040808320815180830190925280548252600180820180546001600160a01b0381168587015287875294869052949091556001600160a01b0319909216909255909250610338908290610465565b600155602082015182516040516001600160a01b03909216917f05a9686ec81d1f07f4a996660cf66d8c3f2fd0fdfd7bb23458fe7a7df30c9ce790600090a35090565b60006040828403121561038d57600080fd5b50919050565b6000602082840312156103a557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016103d4576103d46103ac565b5060010190565b6001600160a01b03811681146103f057600080fd5b50565b81358155600181016020830135610409816103db565b81546001600160a01b0319166001600160a01b03919091161790555050565b60006020828403121561043a57600080fd5b8135610445816103db565b9392505050565b8181038181111561045f5761045f6103ac565b92915050565b8082018082111561045f5761045f6103ac56fea2646970667358221220ef3b9249e96b862c464779da703fa448652039bb8e3dae0a6fc1a79678d9b35b64736f6c63430008120033a2646970667358221220f98592fa226f2ffcceadb0945b7af3883dae376933c3f3acb263eaf09989a1a964736f6c634300081200331ba03333333333333333333333333333333333333333333333333333333333333333a03333333333333333333333333333333333333333333333333333333333333333 \ No newline at end of file diff --git a/tests/UniversalTeleporterMessengerContractAddress.txt b/tests/UniversalTeleporterMessengerContractAddress.txt index 0e3d6647..f4b168e2 100755 --- a/tests/UniversalTeleporterMessengerContractAddress.txt +++ b/tests/UniversalTeleporterMessengerContractAddress.txt @@ -1 +1 @@ -0xF3106362ca2B4291DE3e130Cd0335F0eC4d70b26 \ No newline at end of file +0xc16964cD2D22559A24401A8E491391390B564F0B \ No newline at end of file diff --git a/tests/e2e_test.go b/tests/e2e_test.go index 0ca7699d..4ba2a9b4 100644 --- a/tests/e2e_test.go +++ b/tests/e2e_test.go @@ -23,10 +23,10 @@ import ( "github.com/ava-labs/awm-relayer/messages/teleporter" "github.com/ava-labs/awm-relayer/peers" relayerEvm "github.com/ava-labs/awm-relayer/vms/evm" - "github.com/ava-labs/coreth/rpc" "github.com/ava-labs/subnet-evm/core/types" "github.com/ava-labs/subnet-evm/ethclient" "github.com/ava-labs/subnet-evm/plugin/evm" + "github.com/ava-labs/subnet-evm/rpc" "github.com/ava-labs/subnet-evm/tests/utils/runner" predicateutils "github.com/ava-labs/subnet-evm/utils/predicate" warpPayload "github.com/ava-labs/subnet-evm/warp/payload" @@ -511,7 +511,7 @@ var _ = ginkgo.Describe("[Relayer E2E]", ginkgo.Ordered, func() { _ = relayerCmd.Wait() }) - ginkgo.It("Validate Received Warp Message Values", ginkgo.Label("Relaery", "VerifyWarp"), func() { + ginkgo.It("Validate Received Warp Message Values", ginkgo.Label("Relayer", "VerifyWarp"), func() { Expect(receivedWarpMessage.SourceChainID).Should(Equal(blockchainIDA)) addressedPayload, err := warpPayload.ParseAddressedPayload(receivedWarpMessage.Payload) Expect(err).Should(BeNil()) diff --git a/tests/warp-genesis.json b/tests/warp-genesis.json index 2560bba0..a9d402e6 100644 --- a/tests/warp-genesis.json +++ b/tests/warp-genesis.json @@ -12,6 +12,7 @@ "istanbulBlock": 0, "muirGlacierBlock": 0, "subnetEVMTimestamp": 0, + "dUpgradeTimestamp": 0, "feeConfig": { "gasLimit": 20000000, "minBaseFee": 1000000000,