Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 16948055 | 1047 days ago | IN | 0 ETH | 0.00106873 |
Latest 12 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Create Retryable... | 24141096 | 40 days ago | 0.00000546 ETH | ||||
| Relay Message | 24141096 | 40 days ago | 0.00000546 ETH | ||||
| Create Retryable... | 23864753 | 79 days ago | 0.00001962 ETH | ||||
| Relay Message | 23864753 | 79 days ago | 0.00001962 ETH | ||||
| Create Retryable... | 22068149 | 330 days ago | 0.00034978 ETH | ||||
| Relay Message | 22068149 | 330 days ago | 0.00034978 ETH | ||||
| Create Retryable... | 18478593 | 832 days ago | 0.00376846 ETH | ||||
| Relay Message | 18478593 | 832 days ago | 0.00376846 ETH | ||||
| Create Retryable... | 17415226 | 981 days ago | 0.00400662 ETH | ||||
| Relay Message | 17415226 | 981 days ago | 0.00400662 ETH | ||||
| Create Retryable... | 17365388 | 988 days ago | 0.01544912 ETH | ||||
| Relay Message | 17365388 | 988 days ago | 0.01544912 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
L1MessageRelayer
Compiler Version
v0.7.5+commit.eb77ed08
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.7.5;
import "@arbitrum/nitro-contracts/src/bridge/IInbox.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./L2MessageExecutor.sol";
contract L1MessageRelayer is Ownable {
/// @notice Address of the governance TimeLock contract.
address public timeLock;
/// @notice Address of arbitrum's L1 inbox contract.
IInbox public inbox;
/// @notice Emitted when a retryable ticket is created for relaying L1 message to L2.
event RetryableTicketCreated(uint256 indexed ticketId);
/// @notice Throws if called by any account other than the timeLock contract.
modifier onlyTimeLock() {
require(
msg.sender == timeLock,
"L1MessageRelayer::onlyTimeLock: Unauthorized message sender"
);
_;
}
constructor(address _timeLock, address _inbox) {
require(_timeLock != address(0), "_timeLock can't the zero address");
require(_inbox != address(0), "_inbox can't the zero address");
timeLock = _timeLock;
inbox = IInbox(_inbox);
}
/// @notice renounceOwnership has been disabled so that the contract is never left without a onwer
/// @inheritdoc Ownable
function renounceOwnership() public override onlyOwner {
revert("function disabled");
}
/**
* @notice sends message received from timeLock to L2MessageExecutorProxy.
* @param target address of the target contract on arbitrum.
* @param payLoad message calldata that will be executed by l2MessageExecutorProxy.
* @param maxSubmissionCost same as maxSubmissionCost parameter of inbox.createRetryableTicket
* @param maxGas same as maxGas parameter of inbox.createRetryableTicket
* @param gasPriceBid same as gasPriceBid parameter of inbox.createRetryableTicket
**/
function relayMessage(
address target,
bytes memory payLoad,
uint256 maxSubmissionCost,
uint256 maxGas,
uint256 gasPriceBid
) external payable onlyTimeLock returns (uint256) {
require(maxGas != 1, "maxGas can't be 1");
require(gasPriceBid != 1, "gasPriceBid can't be 1");
uint256 ticketID = inbox.createRetryableTicket{value: msg.value}(
target,
0,
maxSubmissionCost,
msg.sender,
msg.sender,
maxGas,
gasPriceBid,
payLoad
);
emit RetryableTicketCreated(ticketID);
return ticketID;
}
}// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/nitro/blob/master/LICENSE
// SPDX-License-Identifier: BUSL-1.1
// solhint-disable-next-line compiler-version
pragma solidity >=0.6.9 <0.9.0;
import "./IOwnable.sol";
interface IBridge {
event MessageDelivered(
uint256 indexed messageIndex,
bytes32 indexed beforeInboxAcc,
address inbox,
uint8 kind,
address sender,
bytes32 messageDataHash,
uint256 baseFeeL1,
uint64 timestamp
);
event BridgeCallTriggered(
address indexed outbox,
address indexed to,
uint256 value,
bytes data
);
event InboxToggle(address indexed inbox, bool enabled);
event OutboxToggle(address indexed outbox, bool enabled);
event SequencerInboxUpdated(address newSequencerInbox);
function enqueueDelayedMessage(
uint8 kind,
address sender,
bytes32 messageDataHash
) external payable returns (uint256);
function enqueueSequencerMessage(bytes32 dataHash, uint256 afterDelayedMessagesRead)
external
returns (
uint256 seqMessageIndex,
bytes32 beforeAcc,
bytes32 delayedAcc,
bytes32 acc
);
function submitBatchSpendingReport(address batchPoster, bytes32 dataHash)
external
returns (uint256 msgNum);
function executeCall(
address to,
uint256 value,
bytes calldata data
) external returns (bool success, bytes memory returnData);
// These are only callable by the admin
function setDelayedInbox(address inbox, bool enabled) external;
function setOutbox(address inbox, bool enabled) external;
function setSequencerInbox(address _sequencerInbox) external;
// View functions
function sequencerInbox() external view returns (address);
function activeOutbox() external view returns (address);
function allowedDelayedInboxes(address inbox) external view returns (bool);
function allowedOutboxes(address outbox) external view returns (bool);
function delayedInboxAccs(uint256 index) external view returns (bytes32);
function sequencerInboxAccs(uint256 index) external view returns (bytes32);
function delayedMessageCount() external view returns (uint256);
function sequencerMessageCount() external view returns (uint256);
function rollup() external view returns (IOwnable);
function acceptFundsFromOldBridge() external payable;
}// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/nitro/blob/master/LICENSE
// SPDX-License-Identifier: BUSL-1.1
// solhint-disable-next-line compiler-version
pragma solidity >=0.6.9 <0.9.0;
interface IDelayedMessageProvider {
/// @dev event emitted when a inbox message is added to the Bridge's delayed accumulator
event InboxMessageDelivered(uint256 indexed messageNum, bytes data);
/// @dev event emitted when a inbox message is added to the Bridge's delayed accumulator
/// same as InboxMessageDelivered but the batch data is available in tx.input
event InboxMessageDeliveredFromOrigin(uint256 indexed messageNum);
}// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/nitro/blob/master/LICENSE
// SPDX-License-Identifier: BUSL-1.1
// solhint-disable-next-line compiler-version
pragma solidity >=0.6.9 <0.9.0;
import "./IBridge.sol";
import "./IDelayedMessageProvider.sol";
interface IInbox is IDelayedMessageProvider {
function sendL2Message(bytes calldata messageData) external returns (uint256);
function sendUnsignedTransaction(
uint256 gasLimit,
uint256 maxFeePerGas,
uint256 nonce,
address to,
uint256 value,
bytes calldata data
) external returns (uint256);
function sendContractTransaction(
uint256 gasLimit,
uint256 maxFeePerGas,
address to,
uint256 value,
bytes calldata data
) external returns (uint256);
function sendL1FundedUnsignedTransaction(
uint256 gasLimit,
uint256 maxFeePerGas,
uint256 nonce,
address to,
bytes calldata data
) external payable returns (uint256);
function sendL1FundedContractTransaction(
uint256 gasLimit,
uint256 maxFeePerGas,
address to,
bytes calldata data
) external payable returns (uint256);
/// @dev Gas limit and maxFeePerGas should not be set to 1 as that is used to trigger the RetryableData error
function createRetryableTicket(
address to,
uint256 arbTxCallValue,
uint256 maxSubmissionCost,
address submissionRefundAddress,
address valueRefundAddress,
uint256 gasLimit,
uint256 maxFeePerGas,
bytes calldata data
) external payable returns (uint256);
/// @dev Gas limit and maxFeePerGas should not be set to 1 as that is used to trigger the RetryableData error
function unsafeCreateRetryableTicket(
address to,
uint256 arbTxCallValue,
uint256 maxSubmissionCost,
address submissionRefundAddress,
address valueRefundAddress,
uint256 gasLimit,
uint256 maxFeePerGas,
bytes calldata data
) external payable returns (uint256);
function depositEth() external payable returns (uint256);
/// @notice deprecated in favour of depositEth with no parameters
function depositEth(uint256 maxSubmissionCost) external payable returns (uint256);
function bridge() external view returns (IBridge);
function postUpgradeInit(IBridge _bridge) external;
}// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/nitro/blob/master/LICENSE
// SPDX-License-Identifier: BUSL-1.1
// solhint-disable-next-line compiler-version
pragma solidity >=0.4.21 <0.9.0;
interface IOwnable {
function owner() external view returns (address);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () internal {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor () internal {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: Apache-2.0
/*
* Copyright 2019-2021, Offchain Labs, Inc.
*
* 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.
*/
pragma solidity 0.7.5;
library AddressAliasHelper {
uint160 constant OFFSET = uint160(0x1111000000000000000000000000000000001111);
/// @notice Utility function that converts the address in the L1 that submitted a tx to
/// the inbox to the msg.sender viewed in the L2
/// @param l1Address the address in the L1 that triggered the tx to L2
/// @return l2Address L2 address as viewed in msg.sender
function applyL1ToL2Alias(address l1Address)
internal
pure
returns (address l2Address)
{
l2Address = address(uint160(l1Address) + OFFSET);
}
/// @notice Utility function that converts the msg.sender viewed in the L2 to the
/// address in the L1 that submitted a tx to the inbox
/// @param l2Address L2 address as viewed in msg.sender
/// @return l1Address the address in the L1 that triggered the tx to L2
function undoL1ToL2Alias(address l2Address)
internal
pure
returns (address l1Address)
{
l1Address = address(uint160(l2Address) - OFFSET);
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.7.5;
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import {AddressAliasHelper} from "./AddressAliasHelper.sol";
/**
* @dev This contract executes messages received from layer1 governance on arbitrum.
* This meant to be an upgradeable contract and it should only be used with TransparentUpgradeableProxy.
*/
contract L2MessageExecutor is ReentrancyGuard {
/// @notice Address of the L1MessageRelayer contract on mainnet.
address public l1MessageRelayer;
/// @dev flag to make sure that the initialize function is only called once
bool private isInitialized = false;
constructor() {
// Disable initialization for external users.
// Only proxies should be able to initialize this contract.
isInitialized = true;
}
function initialize(address _l1MessageRelayer) external {
require(!isInitialized, "Contract is already initialized!");
isInitialized = true;
require(
_l1MessageRelayer != address(0),
"_l1MessageRelayer can't be the zero address"
);
l1MessageRelayer = _l1MessageRelayer;
}
/**
* @notice executes message received from L1.
* @param payLoad message received from L1 that needs to be executed.
**/
function executeMessage(bytes calldata payLoad) external nonReentrant {
// To check that message came from L1, we check that the sender is the L1 contract's L2 alias.
require(
msg.sender == AddressAliasHelper.applyL1ToL2Alias(l1MessageRelayer),
"L2MessageExecutor::executeMessage: Unauthorized message sender"
);
(address target, bytes memory callData) = abi.decode(
payLoad,
(address, bytes)
);
require(target != address(0), "target can't be the zero address");
(bool success, ) = target.call(callData);
require(
success,
"L2MessageExecutor::executeMessage: Message execution reverted."
);
}
}{
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_timeLock","type":"address"},{"internalType":"address","name":"_inbox","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"ticketId","type":"uint256"}],"name":"RetryableTicketCreated","type":"event"},{"inputs":[],"name":"inbox","outputs":[{"internalType":"contract IInbox","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"payLoad","type":"bytes"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"}],"name":"relayMessage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timeLock","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5060405161084a38038061084a8339818101604052604081101561003357600080fd5b5080516020909101516000610046610177565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0382166100eb576040805162461bcd60e51b815260206004820181905260248201527f5f74696d654c6f636b2063616e277420746865207a65726f2061646472657373604482015290519081900360640190fd5b6001600160a01b038116610146576040805162461bcd60e51b815260206004820152601d60248201527f5f696e626f782063616e277420746865207a65726f2061646472657373000000604482015290519081900360640190fd5b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905561017b565b3390565b6106c08061018a6000396000f3fe6080604052600436106100555760003560e01c8063715018a61461005a5780638cefc434146100715780638da5cb5b14610144578063d085835a14610175578063f2fde38b1461018a578063fb0e722b146101bd575b600080fd5b34801561006657600080fd5b5061006f6101d2565b005b610132600480360360a081101561008757600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100b257600080fd5b8201836020820111156100c457600080fd5b803590602001918460018302840111640100000000831117156100e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135610287565b60408051918252519081900360200190f35b34801561015057600080fd5b506101596104e4565b604080516001600160a01b039092168252519081900360200190f35b34801561018157600080fd5b506101596104f3565b34801561019657600080fd5b5061006f600480360360208110156101ad57600080fd5b50356001600160a01b0316610502565b3480156101c957600080fd5b50610159610616565b6101da610625565b6001600160a01b03166101eb6104e4565b6001600160a01b031614610246576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040805162461bcd60e51b8152602060048201526011602482015270199d5b98dd1a5bdb88191a5cd8589b1959607a1b604482015290519081900360640190fd5b6001546000906001600160a01b031633146102d35760405162461bcd60e51b815260040180806020018281038252603b815260200180610650603b913960400191505060405180910390fd5b826001141561031d576040805162461bcd60e51b81526020600482015260116024820152706d61784761732063616e2774206265203160781b604482015290519081900360640190fd5b816001141561036c576040805162461bcd60e51b815260206004820152601660248201527567617350726963654269642063616e2774206265203160501b604482015290519081900360640190fd5b6000600260009054906101000a90046001600160a01b03166001600160a01b031663679b6ded348960008933338b8b8f6040518a63ffffffff1660e01b815260040180896001600160a01b03168152602001888152602001878152602001866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561042d578181015183820152602001610415565b50505050905090810190601f16801561045a5780820380516001836020036101000a031916815260200191505b5099505050505050505050506020604051808303818588803b15801561047f57600080fd5b505af1158015610493573d6000803e3d6000fd5b50505050506040513d60208110156104aa57600080fd5b505160405190915081907fde92b5b7839f4a2c640f5e3bbb66d415458dadc57a487b0c7fa562ed7c9c896f90600090a29695505050505050565b6000546001600160a01b031690565b6001546001600160a01b031681565b61050a610625565b6001600160a01b031661051b6104e4565b6001600160a01b031614610576576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166105bb5760405162461bcd60e51b815260040180806020018281038252602681526020018061062a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c314d65737361676552656c617965723a3a6f6e6c7954696d654c6f636b3a20556e617574686f72697a6564206d6573736167652073656e646572a26469706673582212201989498ce37004791ee0f22b6f058e8ca3401d549c5f00a2204bff524d89301364736f6c63430007050033000000000000000000000000a54074b2cc0e96a43048d4a68472f7f046ac0da80000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f
Deployed Bytecode
0x6080604052600436106100555760003560e01c8063715018a61461005a5780638cefc434146100715780638da5cb5b14610144578063d085835a14610175578063f2fde38b1461018a578063fb0e722b146101bd575b600080fd5b34801561006657600080fd5b5061006f6101d2565b005b610132600480360360a081101561008757600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100b257600080fd5b8201836020820111156100c457600080fd5b803590602001918460018302840111640100000000831117156100e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060400135610287565b60408051918252519081900360200190f35b34801561015057600080fd5b506101596104e4565b604080516001600160a01b039092168252519081900360200190f35b34801561018157600080fd5b506101596104f3565b34801561019657600080fd5b5061006f600480360360208110156101ad57600080fd5b50356001600160a01b0316610502565b3480156101c957600080fd5b50610159610616565b6101da610625565b6001600160a01b03166101eb6104e4565b6001600160a01b031614610246576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040805162461bcd60e51b8152602060048201526011602482015270199d5b98dd1a5bdb88191a5cd8589b1959607a1b604482015290519081900360640190fd5b6001546000906001600160a01b031633146102d35760405162461bcd60e51b815260040180806020018281038252603b815260200180610650603b913960400191505060405180910390fd5b826001141561031d576040805162461bcd60e51b81526020600482015260116024820152706d61784761732063616e2774206265203160781b604482015290519081900360640190fd5b816001141561036c576040805162461bcd60e51b815260206004820152601660248201527567617350726963654269642063616e2774206265203160501b604482015290519081900360640190fd5b6000600260009054906101000a90046001600160a01b03166001600160a01b031663679b6ded348960008933338b8b8f6040518a63ffffffff1660e01b815260040180896001600160a01b03168152602001888152602001878152602001866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561042d578181015183820152602001610415565b50505050905090810190601f16801561045a5780820380516001836020036101000a031916815260200191505b5099505050505050505050506020604051808303818588803b15801561047f57600080fd5b505af1158015610493573d6000803e3d6000fd5b50505050506040513d60208110156104aa57600080fd5b505160405190915081907fde92b5b7839f4a2c640f5e3bbb66d415458dadc57a487b0c7fa562ed7c9c896f90600090a29695505050505050565b6000546001600160a01b031690565b6001546001600160a01b031681565b61050a610625565b6001600160a01b031661051b6104e4565b6001600160a01b031614610576576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166105bb5760405162461bcd60e51b815260040180806020018281038252602681526020018061062a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c314d65737361676552656c617965723a3a6f6e6c7954696d654c6f636b3a20556e617574686f72697a6564206d6573736167652073656e646572a26469706673582212201989498ce37004791ee0f22b6f058e8ca3401d549c5f00a2204bff524d89301364736f6c63430007050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a54074b2cc0e96a43048d4a68472f7f046ac0da80000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f
-----Decoded View---------------
Arg [0] : _timeLock (address): 0xa54074b2cc0e96a43048d4a68472F7F046aC0DA8
Arg [1] : _inbox (address): 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a54074b2cc0e96a43048d4a68472f7f046ac0da8
Arg [1] : 0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.