Contract

0x0a5326B3F6477CE5856d5A3613283228d1C43587

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapWormholeMessageReceiver

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : UniswapWormholeMessageReceiver.sol
/**
 * Copyright Uniswap Foundation 2023
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
 pragma solidity ^0.8.7;

 // solhint-disable-next-line no-global-import
 import "./Structs.sol";
 
 interface IWormhole {
     function parseAndVerifyVM(bytes calldata encodedVM)
         external
         view
         returns (Structs.VM memory vm, bool valid, string memory reason);
 }
 
 /**
  * @title Uniswap Wormhole Message Receiver
  * @dev This contract receives and executes Uniswap governance proposals that were sent from the UniswapWormholeMessageSender
  * contract on Ethereum via Wormhole.
  *
  * It enforces that proposals are executed in order, but it does not guarantee that all proposals are executed.
  * i.e. The message sequence number of proposals must be strictly monotonically increasing, but need not be consecutive
  * The maximum number of proposals that can be received is therefore UINT64_MAX.
  * For example, if there are proposals 1, 2 and 3, then the following are valid executions (not exhaustive):
  * - 1,2,3
  * - 1,3
  * But the following are impossible (not exhaustive):
  * - 1,3,2
  */
 contract UniswapWormholeMessageReceiver {
     string public constant NAME = "Uniswap Wormhole Message Receiver";
     bytes32 public constant EXPECTED_MESSAGE_PAYLOAD_VERSION = keccak256(
         abi.encode(
             "UniswapWormholeMessageSenderV1 (bytes32 receivedMessagePayloadVersion, address[] memory targets, uint256[] memory values, bytes[] memory datas, address messageReceiver, uint16 receiverChainId)"
         )
     );
 
     // Address of the UniswapWormholeMessageSender contract on ethereum in Wormhole format,
     // i.e. 12 zero bytes followed by a 20-byte Ethereum address.
     bytes32 public immutable messageSender;
 
     // A uint16 definining the destination chain of a VAA this contract will trust
     uint16 public immutable chainId;
 
     // A uint16 definining the source chain of a VAA this contract will trust
     uint16 public constant ETHEREUM_CHAIN_ID = 2;
 
     IWormhole private immutable wormhole;
 
     // the next message must have at least this sequence number
     uint64 public nextMinimumSequence = 0;
 
     /**
      * Message timeout in seconds: Time out needs to account for:
      * - Finality time on source chain
      * - Time for Wormhole validators to sign and make VAA available to relayers
      * - Time to relay VAA to the target chain
      * - Congestion on target chain leading to delayed inclusion of transaction in target chain
      *
      * Note that there is no way to alter this hard coded value. Including such a feature
      * would require some governance structure and some minumum and maximum values.
      */
     uint256 public constant MESSAGE_TIME_OUT_SECONDS = 2 days;
 
     /**
      * @param wormholeAddress Address of Wormhole core messaging contract on this chain.
      * @param _messageSender Address of the UniswapWormholeMessageSender contract on ethereum in Wormhole format,
      * i.e. 12 zero bytes followed by a 20-byte Ethereum address.
      */
     constructor(address wormholeAddress, bytes32 _messageSender, uint16 _chainId) {
         // sanity check constructor args
         require(wormholeAddress != address(0), "Invalid wormhole address");
         require(_messageSender != bytes32(0) && bytes12(_messageSender) == 0, "Invalid sender contract");
         require(_chainId != ETHEREUM_CHAIN_ID, "Invalid chainId Ethereum");
 
         wormhole = IWormhole(wormholeAddress);
         messageSender = _messageSender;
         chainId = _chainId;
     }
 
     /**
      * @param whMessage Wormhole message relayed from a source chain.
      */
     function receiveMessage(bytes calldata whMessage) external payable {
         (Structs.VM memory vm, bool valid, string memory reason) = wormhole.parseAndVerifyVM(whMessage);
 
         // validate
         require(valid, reason);
 
         // ensure the emitterAddress of this VAA is the Uniswap message sender
         require(messageSender == vm.emitterAddress, "Invalid Emitter Address!");
 
         // ensure the emitterChainId is Ethereum to prevent impersonation
         require(vm.emitterChainId == ETHEREUM_CHAIN_ID, "Invalid Emitter Chain");
 
         /**
          * Ensure that the sequence field in the VAA is strictly monotonically increasing. This also acts as
          * a replay protection mechanism to ensure that already executed messages don't execute again.
          *
          * WARNING: Be mindful that if the sender is ever adapted to support multiple consistency levels, the sequence number
          * enforcement in the receiver could result in delivery of a message with a higher sequence number first and thus
          * invalidate the lower sequence number message from being processable on the receiver. As long as CONSISTENCY_LEVEL
          * remains a constant this is a non-issue. If this changes, changes to the receiver may be required to address messages
          * of variable consistency.
          */
         require(vm.sequence >= nextMinimumSequence, "Invalid Sequence number");
         // increase nextMinimumSequence
         nextMinimumSequence = vm.sequence + 1;
 
         // check if the message is still valid as defined by the validity period
         // solhint-disable-next-line not-rely-on-time
         require(vm.timestamp + MESSAGE_TIME_OUT_SECONDS >= block.timestamp, "Message no longer valid");
 
         // verify destination
         (
             bytes32 receivedMessagePayloadVersion,
             address[] memory targets,
             uint256[] memory values,
             bytes[] memory calldatas,
             address messageReceiver,
             uint16 receiverChainId
         ) = abi.decode(vm.payload, (bytes32, address[], uint256[], bytes[], address, uint16));
         require(EXPECTED_MESSAGE_PAYLOAD_VERSION == receivedMessagePayloadVersion, "Wrong payload version");
         require(messageReceiver == address(this), "Message not for this dest");
         require(receiverChainId == chainId, "Message not for this chain");
 
         // cache target length and verify that each argument has the same length
         uint256 targetsLength = targets.length;
         require(targetsLength == calldatas.length && targetsLength == values.length, "Inconsistent argument lengths");
 
         // verify that the caller sent enough value to make each target call
         require(verifyTargetValues(values), "Incorrect value");
 
         // execute each message
         for (uint256 i = 0; i < targetsLength;) {
             (bool success,) = targets[i].call{value: values[i]}(calldatas[i]);
             require(success, "Sub-call failed");
 
             unchecked {
                 i += 1;
             }
         }
     }
 
     function verifyTargetValues(uint256[] memory values) internal view returns (bool) {
         uint256 valuesSum;
 
         uint256 valuesLength = values.length;
         for (uint256 i = 0; i < valuesLength;) {
             valuesSum += values[i];
 
             unchecked {
                 i += 1;
             }
         }
 
         return valuesSum == msg.value;
     }
 }

File 2 of 2 : Structs.sol
// contracts/Structs.sol
// SPDX-License-Identifier: Apache 2

pragma solidity ^0.8.9;

interface Structs {
    struct Provider {
        uint16 chainId;
        uint16 governanceChainId;
        bytes32 governanceContract;
    }

    struct GuardianSet {
        address[] keys;
        uint32 expirationTime;
    }

    struct Signature {
        bytes32 r;
        bytes32 s;
        uint8 v;
        uint8 guardianIndex;
    }

    struct VM {
        uint8 version;
        uint32 timestamp;
        uint32 nonce;
        uint16 emitterChainId;
        bytes32 emitterAddress;
        uint64 sequence;
        uint8 consistencyLevel;
        bytes payload;
        uint32 guardianSetIndex;
        Signature[] signatures;
        bytes32 hash;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wormholeAddress","type":"address"},{"internalType":"bytes32","name":"_messageSender","type":"bytes32"},{"internalType":"uint16","name":"_chainId","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETHEREUM_CHAIN_ID","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXPECTED_MESSAGE_PAYLOAD_VERSION","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MESSAGE_TIME_OUT_SECONDS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageSender","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextMinimumSequence","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"whMessage","type":"bytes"}],"name":"receiveMessage","outputs":[],"stateMutability":"payable","type":"function"}]

60e060405260008060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503480156200003a57600080fd5b506040516200212b3803806200212b8339818101604052810190620000609190620002c9565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620000d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c99062000386565b60405180910390fd5b6000801b8214158015620001005750600060a01b8273ffffffffffffffffffffffffffffffffffffffff1916145b62000142576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013990620003f8565b60405180910390fd5b600261ffff168161ffff160362000190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000187906200046a565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505081608081815250508061ffff1660a08161ffff16815250505050506200048c565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021782620001ea565b9050919050565b62000229816200020a565b81146200023557600080fd5b50565b60008151905062000249816200021e565b92915050565b6000819050919050565b62000264816200024f565b81146200027057600080fd5b50565b600081519050620002848162000259565b92915050565b600061ffff82169050919050565b620002a3816200028a565b8114620002af57600080fd5b50565b600081519050620002c38162000298565b92915050565b600080600060608486031215620002e557620002e4620001e5565b5b6000620002f58682870162000238565b9350506020620003088682870162000273565b92505060406200031b86828701620002b2565b9150509250925092565b600082825260208201905092915050565b7f496e76616c696420776f726d686f6c6520616464726573730000000000000000600082015250565b60006200036e60188362000325565b91506200037b8262000336565b602082019050919050565b60006020820190508181036000830152620003a1816200035f565b9050919050565b7f496e76616c69642073656e64657220636f6e7472616374000000000000000000600082015250565b6000620003e060178362000325565b9150620003ed82620003a8565b602082019050919050565b600060208201905081810360008301526200041381620003d1565b9050919050565b7f496e76616c696420636861696e496420457468657265756d0000000000000000600082015250565b60006200045260188362000325565b91506200045f826200041a565b602082019050919050565b60006020820190508181036000830152620004858162000443565b9050919050565b60805160a05160c051611c61620004ca6000396000610280015260008181610210015261062301526000818161025001526103700152611c616000f3fe60806040526004361061007b5760003560e01c8063a3f4df7e1161004e578063a3f4df7e1461012c578063d67bdd2514610157578063e9fa316214610182578063f953cec7146101ad5761007b565b80630e2ebcb8146100805780631dac56d3146100ab5780637b305b32146100d65780639a8a059214610101575b600080fd5b34801561008c57600080fd5b506100956101c9565b6040516100a291906108b7565b60405180910390f35b3480156100b757600080fd5b506100c06101f1565b6040516100cd91906108ef565b60405180910390f35b3480156100e257600080fd5b506100eb6101f6565b6040516100f8919061092d565b60405180910390f35b34801561010d57600080fd5b5061011661020e565b60405161012391906108ef565b60405180910390f35b34801561013857600080fd5b50610141610232565b60405161014e91906109d8565b60405180910390f35b34801561016357600080fd5b5061016c61024e565b60405161017991906108b7565b60405180910390f35b34801561018e57600080fd5b50610197610272565b6040516101a49190610a13565b60405180910390f35b6101c760048036038101906101c29190610aa7565b610279565b005b6040516020016101d890610bfe565b6040516020818303038152906040528051906020012081565b600281565b60008054906101000a900467ffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b604051806060016040528060218152602001611c0b6021913981565b7f000000000000000000000000000000000000000000000000000000000000000081565b6202a30081565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde86866040518363ffffffff1660e01b81526004016102d9929190610c6b565b600060405180830381865afa1580156102f6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061031f919061120b565b925092509250818190610368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035f91906109d8565b60405180910390fd5b5082608001517f0000000000000000000000000000000000000000000000000000000000000000146103cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c6906112e2565b60405180910390fd5b600261ffff16836060015161ffff161461041e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104159061134e565b60405180910390fd5b60008054906101000a900467ffffffffffffffff1667ffffffffffffffff168360a0015167ffffffffffffffff16101561048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610484906113ba565b60405180910390fd5b60018360a0015161049e9190611409565b6000806101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550426202a300846020015163ffffffff166104df9190611445565b1015610520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610517906114c5565b60405180910390fd5b6000806000806000808860e001518060200190518101906105419190611814565b9550955095509550955095508560405160200161055d90610bfe565b60405160208183030381529060405280519060200120146105b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105aa90611941565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610618906119ad565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061ffff168161ffff161461068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068290611a19565b60405180910390fd5b6000855190508351811480156106a15750845181145b6106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d790611a85565b60405180910390fd5b6106e98561084a565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611af1565b60405180910390fd5b60005b8181101561083b57600087828151811061074857610747611b11565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1687838151811061077957610778611b11565b5b602002602001015187848151811061079457610793611b11565b5b60200260200101516040516107a99190611b87565b60006040518083038185875af1925050503d80600081146107e6576040519150601f19603f3d011682016040523d82523d6000602084013e6107eb565b606091505b505090508061082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690611bea565b60405180910390fd5b6001820191505061072b565b50505050505050505050505050565b60008060008351905060005b818110156108915784818151811061087157610870611b11565b5b6020026020010151836108849190611445565b9250600181019050610856565b5034821492505050919050565b6000819050919050565b6108b18161089e565b82525050565b60006020820190506108cc60008301846108a8565b92915050565b600061ffff82169050919050565b6108e9816108d2565b82525050565b600060208201905061090460008301846108e0565b92915050565b600067ffffffffffffffff82169050919050565b6109278161090a565b82525050565b6000602082019050610942600083018461091e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610982578082015181840152602081019050610967565b60008484015250505050565b6000601f19601f8301169050919050565b60006109aa82610948565b6109b48185610953565b93506109c4818560208601610964565b6109cd8161098e565b840191505092915050565b600060208201905081810360008301526109f2818461099f565b905092915050565b6000819050919050565b610a0d816109fa565b82525050565b6000602082019050610a286000830184610a04565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610a6757610a66610a42565b5b8235905067ffffffffffffffff811115610a8457610a83610a47565b5b602083019150836001820283011115610aa057610a9f610a4c565b5b9250929050565b60008060208385031215610abe57610abd610a38565b5b600083013567ffffffffffffffff811115610adc57610adb610a3d565b5b610ae885828601610a51565b92509250509250929050565b7f556e6973776170576f726d686f6c654d65737361676553656e6465725631202860008201527f627974657333322072656365697665644d6573736167655061796c6f6164566560208201527f7273696f6e2c20616464726573735b5d206d656d6f727920746172676574732c60408201527f2075696e743235365b5d206d656d6f72792076616c7565732c2062797465735b60608201527f5d206d656d6f72792064617461732c2061646472657373206d6573736167655260808201527f656365697665722c2075696e743136207265636569766572436861696e49642960a082015250565b6000610be860c083610953565b9150610bf382610af4565b60c082019050919050565b60006020820190508181036000830152610c1781610bdb565b9050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000610c4a8385610c1e565b9350610c57838584610c2f565b610c608361098e565b840190509392505050565b60006020820190508181036000830152610c86818486610c3e565b90509392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ccc8261098e565b810181811067ffffffffffffffff82111715610ceb57610cea610c94565b5b80604052505050565b6000610cfe610a2e565b9050610d0a8282610cc3565b919050565b600080fd5b600060ff82169050919050565b610d2a81610d14565b8114610d3557600080fd5b50565b600081519050610d4781610d21565b92915050565b600063ffffffff82169050919050565b610d6681610d4d565b8114610d7157600080fd5b50565b600081519050610d8381610d5d565b92915050565b610d92816108d2565b8114610d9d57600080fd5b50565b600081519050610daf81610d89565b92915050565b610dbe8161089e565b8114610dc957600080fd5b50565b600081519050610ddb81610db5565b92915050565b610dea8161090a565b8114610df557600080fd5b50565b600081519050610e0781610de1565b92915050565b600080fd5b600067ffffffffffffffff821115610e2d57610e2c610c94565b5b610e368261098e565b9050602081019050919050565b6000610e56610e5184610e12565b610cf4565b905082815260208101848484011115610e7257610e71610e0d565b5b610e7d848285610964565b509392505050565b600082601f830112610e9a57610e99610a42565b5b8151610eaa848260208601610e43565b91505092915050565b600067ffffffffffffffff821115610ece57610ecd610c94565b5b602082029050602081019050919050565b600060808284031215610ef557610ef4610c8f565b5b610eff6080610cf4565b90506000610f0f84828501610dcc565b6000830152506020610f2384828501610dcc565b6020830152506040610f3784828501610d38565b6040830152506060610f4b84828501610d38565b60608301525092915050565b6000610f6a610f6584610eb3565b610cf4565b90508083825260208201905060808402830185811115610f8d57610f8c610a4c565b5b835b81811015610fb65780610fa28882610edf565b845260208401935050608081019050610f8f565b5050509392505050565b600082601f830112610fd557610fd4610a42565b5b8151610fe5848260208601610f57565b91505092915050565b6000610160828403121561100557611004610c8f565b5b611010610160610cf4565b9050600061102084828501610d38565b600083015250602061103484828501610d74565b602083015250604061104884828501610d74565b604083015250606061105c84828501610da0565b606083015250608061107084828501610dcc565b60808301525060a061108484828501610df8565b60a08301525060c061109884828501610d38565b60c08301525060e082015167ffffffffffffffff8111156110bc576110bb610d0f565b5b6110c884828501610e85565b60e0830152506101006110dd84828501610d74565b6101008301525061012082015167ffffffffffffffff81111561110357611102610d0f565b5b61110f84828501610fc0565b6101208301525061014061112584828501610dcc565b6101408301525092915050565b60008115159050919050565b61114781611132565b811461115257600080fd5b50565b6000815190506111648161113e565b92915050565b600067ffffffffffffffff82111561118557611184610c94565b5b61118e8261098e565b9050602081019050919050565b60006111ae6111a98461116a565b610cf4565b9050828152602081018484840111156111ca576111c9610e0d565b5b6111d5848285610964565b509392505050565b600082601f8301126111f2576111f1610a42565b5b815161120284826020860161119b565b91505092915050565b60008060006060848603121561122457611223610a38565b5b600084015167ffffffffffffffff81111561124257611241610a3d565b5b61124e86828701610fee565b935050602061125f86828701611155565b925050604084015167ffffffffffffffff8111156112805761127f610a3d565b5b61128c868287016111dd565b9150509250925092565b7f496e76616c696420456d69747465722041646472657373210000000000000000600082015250565b60006112cc601883610953565b91506112d782611296565b602082019050919050565b600060208201905081810360008301526112fb816112bf565b9050919050565b7f496e76616c696420456d697474657220436861696e0000000000000000000000600082015250565b6000611338601583610953565b915061134382611302565b602082019050919050565b600060208201905081810360008301526113678161132b565b9050919050565b7f496e76616c69642053657175656e6365206e756d626572000000000000000000600082015250565b60006113a4601783610953565b91506113af8261136e565b602082019050919050565b600060208201905081810360008301526113d381611397565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114148261090a565b915061141f8361090a565b9250828201905067ffffffffffffffff81111561143f5761143e6113da565b5b92915050565b6000611450826109fa565b915061145b836109fa565b9250828201905080821115611473576114726113da565b5b92915050565b7f4d657373616765206e6f206c6f6e6765722076616c6964000000000000000000600082015250565b60006114af601783610953565b91506114ba82611479565b602082019050919050565b600060208201905081810360008301526114de816114a2565b9050919050565b600067ffffffffffffffff821115611500576114ff610c94565b5b602082029050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061153c82611511565b9050919050565b61154c81611531565b811461155757600080fd5b50565b60008151905061156981611543565b92915050565b600061158261157d846114e5565b610cf4565b905080838252602082019050602084028301858111156115a5576115a4610a4c565b5b835b818110156115ce57806115ba888261155a565b8452602084019350506020810190506115a7565b5050509392505050565b600082601f8301126115ed576115ec610a42565b5b81516115fd84826020860161156f565b91505092915050565b600067ffffffffffffffff82111561162157611620610c94565b5b602082029050602081019050919050565b61163b816109fa565b811461164657600080fd5b50565b60008151905061165881611632565b92915050565b600061167161166c84611606565b610cf4565b9050808382526020820190506020840283018581111561169457611693610a4c565b5b835b818110156116bd57806116a98882611649565b845260208401935050602081019050611696565b5050509392505050565b600082601f8301126116dc576116db610a42565b5b81516116ec84826020860161165e565b91505092915050565b600067ffffffffffffffff8211156117105761170f610c94565b5b602082029050602081019050919050565b600061173461172f846116f5565b610cf4565b9050808382526020820190506020840283018581111561175757611756610a4c565b5b835b8181101561179e57805167ffffffffffffffff81111561177c5761177b610a42565b5b8086016117898982610e85565b85526020850194505050602081019050611759565b5050509392505050565b600082601f8301126117bd576117bc610a42565b5b81516117cd848260208601611721565b91505092915050565b60006117e182611511565b9050919050565b6117f1816117d6565b81146117fc57600080fd5b50565b60008151905061180e816117e8565b92915050565b60008060008060008060c0878903121561183157611830610a38565b5b600061183f89828a01610dcc565b965050602087015167ffffffffffffffff8111156118605761185f610a3d565b5b61186c89828a016115d8565b955050604087015167ffffffffffffffff81111561188d5761188c610a3d565b5b61189989828a016116c7565b945050606087015167ffffffffffffffff8111156118ba576118b9610a3d565b5b6118c689828a016117a8565b93505060806118d789828a016117ff565b92505060a06118e889828a01610da0565b9150509295509295509295565b7f57726f6e67207061796c6f61642076657273696f6e0000000000000000000000600082015250565b600061192b601583610953565b9150611936826118f5565b602082019050919050565b6000602082019050818103600083015261195a8161191e565b9050919050565b7f4d657373616765206e6f7420666f722074686973206465737400000000000000600082015250565b6000611997601983610953565b91506119a282611961565b602082019050919050565b600060208201905081810360008301526119c68161198a565b9050919050565b7f4d657373616765206e6f7420666f72207468697320636861696e000000000000600082015250565b6000611a03601a83610953565b9150611a0e826119cd565b602082019050919050565b60006020820190508181036000830152611a32816119f6565b9050919050565b7f496e636f6e73697374656e7420617267756d656e74206c656e67746873000000600082015250565b6000611a6f601d83610953565b9150611a7a82611a39565b602082019050919050565b60006020820190508181036000830152611a9e81611a62565b9050919050565b7f496e636f72726563742076616c75650000000000000000000000000000000000600082015250565b6000611adb600f83610953565b9150611ae682611aa5565b602082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600081905092915050565b6000611b6182611b40565b611b6b8185611b4b565b9350611b7b818560208601610964565b80840191505092915050565b6000611b938284611b56565b915081905092915050565b7f5375622d63616c6c206661696c65640000000000000000000000000000000000600082015250565b6000611bd4600f83610953565b9150611bdf82611b9e565b602082019050919050565b60006020820190508181036000830152611c0381611bc7565b905091905056fe556e697377617020576f726d686f6c65204d657373616765205265636569766572a2646970667358221220f1da821b920c94f017bdfa3693384ad759bfdb368e749a9b70b2a6864d1d074c64736f6c63430008130033000000000000000000000000352a86168e6988a1adf9a15cb00017aad3b67155000000000000000000000000f5f4496219f31cdcba6130b5402873624585615a00000000000000000000000000000000000000000000000000000000000000be

Deployed Bytecode

0x60806040526004361061007b5760003560e01c8063a3f4df7e1161004e578063a3f4df7e1461012c578063d67bdd2514610157578063e9fa316214610182578063f953cec7146101ad5761007b565b80630e2ebcb8146100805780631dac56d3146100ab5780637b305b32146100d65780639a8a059214610101575b600080fd5b34801561008c57600080fd5b506100956101c9565b6040516100a291906108b7565b60405180910390f35b3480156100b757600080fd5b506100c06101f1565b6040516100cd91906108ef565b60405180910390f35b3480156100e257600080fd5b506100eb6101f6565b6040516100f8919061092d565b60405180910390f35b34801561010d57600080fd5b5061011661020e565b60405161012391906108ef565b60405180910390f35b34801561013857600080fd5b50610141610232565b60405161014e91906109d8565b60405180910390f35b34801561016357600080fd5b5061016c61024e565b60405161017991906108b7565b60405180910390f35b34801561018e57600080fd5b50610197610272565b6040516101a49190610a13565b60405180910390f35b6101c760048036038101906101c29190610aa7565b610279565b005b6040516020016101d890610bfe565b6040516020818303038152906040528051906020012081565b600281565b60008054906101000a900467ffffffffffffffff1681565b7f00000000000000000000000000000000000000000000000000000000000000be81565b604051806060016040528060218152602001611c0b6021913981565b7f000000000000000000000000f5f4496219f31cdcba6130b5402873624585615a81565b6202a30081565b60008060007f000000000000000000000000352a86168e6988a1adf9a15cb00017aad3b6715573ffffffffffffffffffffffffffffffffffffffff1663c0fd8bde86866040518363ffffffff1660e01b81526004016102d9929190610c6b565b600060405180830381865afa1580156102f6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061031f919061120b565b925092509250818190610368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035f91906109d8565b60405180910390fd5b5082608001517f000000000000000000000000f5f4496219f31cdcba6130b5402873624585615a146103cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c6906112e2565b60405180910390fd5b600261ffff16836060015161ffff161461041e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104159061134e565b60405180910390fd5b60008054906101000a900467ffffffffffffffff1667ffffffffffffffff168360a0015167ffffffffffffffff16101561048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610484906113ba565b60405180910390fd5b60018360a0015161049e9190611409565b6000806101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550426202a300846020015163ffffffff166104df9190611445565b1015610520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610517906114c5565b60405180910390fd5b6000806000806000808860e001518060200190518101906105419190611814565b9550955095509550955095508560405160200161055d90610bfe565b60405160208183030381529060405280519060200120146105b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105aa90611941565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610618906119ad565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000be61ffff168161ffff161461068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068290611a19565b60405180910390fd5b6000855190508351811480156106a15750845181145b6106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d790611a85565b60405180910390fd5b6106e98561084a565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611af1565b60405180910390fd5b60005b8181101561083b57600087828151811061074857610747611b11565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1687838151811061077957610778611b11565b5b602002602001015187848151811061079457610793611b11565b5b60200260200101516040516107a99190611b87565b60006040518083038185875af1925050503d80600081146107e6576040519150601f19603f3d011682016040523d82523d6000602084013e6107eb565b606091505b505090508061082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690611bea565b60405180910390fd5b6001820191505061072b565b50505050505050505050505050565b60008060008351905060005b818110156108915784818151811061087157610870611b11565b5b6020026020010151836108849190611445565b9250600181019050610856565b5034821492505050919050565b6000819050919050565b6108b18161089e565b82525050565b60006020820190506108cc60008301846108a8565b92915050565b600061ffff82169050919050565b6108e9816108d2565b82525050565b600060208201905061090460008301846108e0565b92915050565b600067ffffffffffffffff82169050919050565b6109278161090a565b82525050565b6000602082019050610942600083018461091e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610982578082015181840152602081019050610967565b60008484015250505050565b6000601f19601f8301169050919050565b60006109aa82610948565b6109b48185610953565b93506109c4818560208601610964565b6109cd8161098e565b840191505092915050565b600060208201905081810360008301526109f2818461099f565b905092915050565b6000819050919050565b610a0d816109fa565b82525050565b6000602082019050610a286000830184610a04565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610a6757610a66610a42565b5b8235905067ffffffffffffffff811115610a8457610a83610a47565b5b602083019150836001820283011115610aa057610a9f610a4c565b5b9250929050565b60008060208385031215610abe57610abd610a38565b5b600083013567ffffffffffffffff811115610adc57610adb610a3d565b5b610ae885828601610a51565b92509250509250929050565b7f556e6973776170576f726d686f6c654d65737361676553656e6465725631202860008201527f627974657333322072656365697665644d6573736167655061796c6f6164566560208201527f7273696f6e2c20616464726573735b5d206d656d6f727920746172676574732c60408201527f2075696e743235365b5d206d656d6f72792076616c7565732c2062797465735b60608201527f5d206d656d6f72792064617461732c2061646472657373206d6573736167655260808201527f656365697665722c2075696e743136207265636569766572436861696e49642960a082015250565b6000610be860c083610953565b9150610bf382610af4565b60c082019050919050565b60006020820190508181036000830152610c1781610bdb565b9050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000610c4a8385610c1e565b9350610c57838584610c2f565b610c608361098e565b840190509392505050565b60006020820190508181036000830152610c86818486610c3e565b90509392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610ccc8261098e565b810181811067ffffffffffffffff82111715610ceb57610cea610c94565b5b80604052505050565b6000610cfe610a2e565b9050610d0a8282610cc3565b919050565b600080fd5b600060ff82169050919050565b610d2a81610d14565b8114610d3557600080fd5b50565b600081519050610d4781610d21565b92915050565b600063ffffffff82169050919050565b610d6681610d4d565b8114610d7157600080fd5b50565b600081519050610d8381610d5d565b92915050565b610d92816108d2565b8114610d9d57600080fd5b50565b600081519050610daf81610d89565b92915050565b610dbe8161089e565b8114610dc957600080fd5b50565b600081519050610ddb81610db5565b92915050565b610dea8161090a565b8114610df557600080fd5b50565b600081519050610e0781610de1565b92915050565b600080fd5b600067ffffffffffffffff821115610e2d57610e2c610c94565b5b610e368261098e565b9050602081019050919050565b6000610e56610e5184610e12565b610cf4565b905082815260208101848484011115610e7257610e71610e0d565b5b610e7d848285610964565b509392505050565b600082601f830112610e9a57610e99610a42565b5b8151610eaa848260208601610e43565b91505092915050565b600067ffffffffffffffff821115610ece57610ecd610c94565b5b602082029050602081019050919050565b600060808284031215610ef557610ef4610c8f565b5b610eff6080610cf4565b90506000610f0f84828501610dcc565b6000830152506020610f2384828501610dcc565b6020830152506040610f3784828501610d38565b6040830152506060610f4b84828501610d38565b60608301525092915050565b6000610f6a610f6584610eb3565b610cf4565b90508083825260208201905060808402830185811115610f8d57610f8c610a4c565b5b835b81811015610fb65780610fa28882610edf565b845260208401935050608081019050610f8f565b5050509392505050565b600082601f830112610fd557610fd4610a42565b5b8151610fe5848260208601610f57565b91505092915050565b6000610160828403121561100557611004610c8f565b5b611010610160610cf4565b9050600061102084828501610d38565b600083015250602061103484828501610d74565b602083015250604061104884828501610d74565b604083015250606061105c84828501610da0565b606083015250608061107084828501610dcc565b60808301525060a061108484828501610df8565b60a08301525060c061109884828501610d38565b60c08301525060e082015167ffffffffffffffff8111156110bc576110bb610d0f565b5b6110c884828501610e85565b60e0830152506101006110dd84828501610d74565b6101008301525061012082015167ffffffffffffffff81111561110357611102610d0f565b5b61110f84828501610fc0565b6101208301525061014061112584828501610dcc565b6101408301525092915050565b60008115159050919050565b61114781611132565b811461115257600080fd5b50565b6000815190506111648161113e565b92915050565b600067ffffffffffffffff82111561118557611184610c94565b5b61118e8261098e565b9050602081019050919050565b60006111ae6111a98461116a565b610cf4565b9050828152602081018484840111156111ca576111c9610e0d565b5b6111d5848285610964565b509392505050565b600082601f8301126111f2576111f1610a42565b5b815161120284826020860161119b565b91505092915050565b60008060006060848603121561122457611223610a38565b5b600084015167ffffffffffffffff81111561124257611241610a3d565b5b61124e86828701610fee565b935050602061125f86828701611155565b925050604084015167ffffffffffffffff8111156112805761127f610a3d565b5b61128c868287016111dd565b9150509250925092565b7f496e76616c696420456d69747465722041646472657373210000000000000000600082015250565b60006112cc601883610953565b91506112d782611296565b602082019050919050565b600060208201905081810360008301526112fb816112bf565b9050919050565b7f496e76616c696420456d697474657220436861696e0000000000000000000000600082015250565b6000611338601583610953565b915061134382611302565b602082019050919050565b600060208201905081810360008301526113678161132b565b9050919050565b7f496e76616c69642053657175656e6365206e756d626572000000000000000000600082015250565b60006113a4601783610953565b91506113af8261136e565b602082019050919050565b600060208201905081810360008301526113d381611397565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114148261090a565b915061141f8361090a565b9250828201905067ffffffffffffffff81111561143f5761143e6113da565b5b92915050565b6000611450826109fa565b915061145b836109fa565b9250828201905080821115611473576114726113da565b5b92915050565b7f4d657373616765206e6f206c6f6e6765722076616c6964000000000000000000600082015250565b60006114af601783610953565b91506114ba82611479565b602082019050919050565b600060208201905081810360008301526114de816114a2565b9050919050565b600067ffffffffffffffff821115611500576114ff610c94565b5b602082029050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061153c82611511565b9050919050565b61154c81611531565b811461155757600080fd5b50565b60008151905061156981611543565b92915050565b600061158261157d846114e5565b610cf4565b905080838252602082019050602084028301858111156115a5576115a4610a4c565b5b835b818110156115ce57806115ba888261155a565b8452602084019350506020810190506115a7565b5050509392505050565b600082601f8301126115ed576115ec610a42565b5b81516115fd84826020860161156f565b91505092915050565b600067ffffffffffffffff82111561162157611620610c94565b5b602082029050602081019050919050565b61163b816109fa565b811461164657600080fd5b50565b60008151905061165881611632565b92915050565b600061167161166c84611606565b610cf4565b9050808382526020820190506020840283018581111561169457611693610a4c565b5b835b818110156116bd57806116a98882611649565b845260208401935050602081019050611696565b5050509392505050565b600082601f8301126116dc576116db610a42565b5b81516116ec84826020860161165e565b91505092915050565b600067ffffffffffffffff8211156117105761170f610c94565b5b602082029050602081019050919050565b600061173461172f846116f5565b610cf4565b9050808382526020820190506020840283018581111561175757611756610a4c565b5b835b8181101561179e57805167ffffffffffffffff81111561177c5761177b610a42565b5b8086016117898982610e85565b85526020850194505050602081019050611759565b5050509392505050565b600082601f8301126117bd576117bc610a42565b5b81516117cd848260208601611721565b91505092915050565b60006117e182611511565b9050919050565b6117f1816117d6565b81146117fc57600080fd5b50565b60008151905061180e816117e8565b92915050565b60008060008060008060c0878903121561183157611830610a38565b5b600061183f89828a01610dcc565b965050602087015167ffffffffffffffff8111156118605761185f610a3d565b5b61186c89828a016115d8565b955050604087015167ffffffffffffffff81111561188d5761188c610a3d565b5b61189989828a016116c7565b945050606087015167ffffffffffffffff8111156118ba576118b9610a3d565b5b6118c689828a016117a8565b93505060806118d789828a016117ff565b92505060a06118e889828a01610da0565b9150509295509295509295565b7f57726f6e67207061796c6f61642076657273696f6e0000000000000000000000600082015250565b600061192b601583610953565b9150611936826118f5565b602082019050919050565b6000602082019050818103600083015261195a8161191e565b9050919050565b7f4d657373616765206e6f7420666f722074686973206465737400000000000000600082015250565b6000611997601983610953565b91506119a282611961565b602082019050919050565b600060208201905081810360008301526119c68161198a565b9050919050565b7f4d657373616765206e6f7420666f72207468697320636861696e000000000000600082015250565b6000611a03601a83610953565b9150611a0e826119cd565b602082019050919050565b60006020820190508181036000830152611a32816119f6565b9050919050565b7f496e636f6e73697374656e7420617267756d656e74206c656e67746873000000600082015250565b6000611a6f601d83610953565b9150611a7a82611a39565b602082019050919050565b60006020820190508181036000830152611a9e81611a62565b9050919050565b7f496e636f72726563742076616c75650000000000000000000000000000000000600082015250565b6000611adb600f83610953565b9150611ae682611aa5565b602082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600081905092915050565b6000611b6182611b40565b611b6b8185611b4b565b9350611b7b818560208601610964565b80840191505092915050565b6000611b938284611b56565b915081905092915050565b7f5375622d63616c6c206661696c65640000000000000000000000000000000000600082015250565b6000611bd4600f83610953565b9150611bdf82611b9e565b602082019050919050565b60006020820190508181036000830152611c0381611bc7565b905091905056fe556e697377617020576f726d686f6c65204d657373616765205265636569766572a2646970667358221220f1da821b920c94f017bdfa3693384ad759bfdb368e749a9b70b2a6864d1d074c64736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000352a86168e6988a1adf9a15cb00017aad3b67155000000000000000000000000f5f4496219f31cdcba6130b5402873624585615a00000000000000000000000000000000000000000000000000000000000000be

-----Decoded View---------------
Arg [0] : wormholeAddress (address): 0x352A86168e6988A1aDF9A15Cb00017AAd3B67155
Arg [1] : _messageSender (bytes32): 0x000000000000000000000000f5f4496219f31cdcba6130b5402873624585615a
Arg [2] : _chainId (uint16): 190

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000352a86168e6988a1adf9a15cb00017aad3b67155
Arg [1] : 000000000000000000000000f5f4496219f31cdcba6130b5402873624585615a
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000be


Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.