Latest 25 from a total of 12,457 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Deposit | 14976566 | 1317 days ago | IN | 0 ETH | 0.000211216287 ETH | ||||
| Bridge Tokens | 14942585 | 1317 days ago | IN | 0 ETH | 0.00020830527 ETH | ||||
| Bridge Tokens | 14942584 | 1317 days ago | IN | 0 ETH | 0.000208010626 ETH | ||||
| Bridge Tokens | 14942583 | 1317 days ago | IN | 0 ETH | 0.000208515852 ETH | ||||
| Set Enable Depos... | 14941074 | 1317 days ago | IN | 0 ETH | 0 ETH | ||||
| Set Enable Depos... | 14941074 | 1317 days ago | IN | 0 ETH | 0 ETH | ||||
| Set Enable Depos... | 14941074 | 1317 days ago | IN | 0 ETH | 0 ETH | ||||
| Set Enable Depos... | 14941074 | 1317 days ago | IN | 0 ETH | 0 ETH | ||||
| Set Enable Depos... | 14941074 | 1317 days ago | IN | 0 ETH | 0 ETH | ||||
| Set Enable Depos... | 14941074 | 1317 days ago | IN | 0 ETH | 0 ETH | ||||
| Bridge Tokens | 14916146 | 1317 days ago | IN | 0 ETH | 0.000180025826 ETH | ||||
| Deposit | 14916116 | 1317 days ago | IN | 0 ETH | 0.000258947274 ETH | ||||
| Bridge Tokens | 14871905 | 1318 days ago | IN | 0 ETH | 0.000176823351 ETH | ||||
| Deposit | 14871874 | 1318 days ago | IN | 0 ETH | 0.000254838243 ETH | ||||
| Bridge Tokens | 14811253 | 1318 days ago | IN | 0 ETH | 0.000268459813 ETH | ||||
| Deposit | 14811196 | 1318 days ago | IN | 0 ETH | 0.000383989595 ETH | ||||
| Bridge Tokens | 14689161 | 1320 days ago | IN | 0 ETH | 0.000296394377 ETH | ||||
| Deposit | 14689011 | 1320 days ago | IN | 0 ETH | 0.000424774648 ETH | ||||
| Bridge Tokens | 14598827 | 1320 days ago | IN | 0 ETH | 0.000309479307 ETH | ||||
| Deposit | 14598706 | 1320 days ago | IN | 0 ETH | 0.000445151813 ETH | ||||
| Bridge Tokens | 14583235 | 1321 days ago | IN | 0 ETH | 0.000352090881 ETH | ||||
| Bridge Tokens | 14552131 | 1321 days ago | IN | 0 ETH | 0.000351948044 ETH | ||||
| Bridge Tokens | 14499466 | 1321 days ago | IN | 0 ETH | 0.000620562028 ETH | ||||
| Deposit | 14499414 | 1321 days ago | IN | 0 ETH | 0.000890106231 ETH | ||||
| Bridge Tokens | 14416223 | 1322 days ago | IN | 0 ETH | 0.000176476107 ETH |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 15345422 | 1313 days ago | 0.159 ETH | ||||
| 15345421 | 1313 days ago | 0.1575 ETH | ||||
| 14942585 | 1317 days ago | 0 ETH | ||||
| 14942585 | 1317 days ago | 0 ETH | ||||
| 14942584 | 1317 days ago | 0 ETH | ||||
| 14942584 | 1317 days ago | 0 ETH | ||||
| 14942583 | 1317 days ago | 0 ETH | ||||
| 14942583 | 1317 days ago | 0 ETH | ||||
| 14941074 | 1317 days ago | 0 ETH | ||||
| 14941074 | 1317 days ago | 0 ETH | ||||
| 14941074 | 1317 days ago | 0 ETH | ||||
| 14941074 | 1317 days ago | 0 ETH | ||||
| 14941074 | 1317 days ago | 0 ETH | ||||
| 14941074 | 1317 days ago | 0 ETH | ||||
| 14916146 | 1317 days ago | 0 ETH | ||||
| 14916146 | 1317 days ago | 0 ETH | ||||
| 14916116 | 1317 days ago | 0 ETH | ||||
| 14871905 | 1318 days ago | 0 ETH | ||||
| 14871905 | 1318 days ago | 0 ETH | ||||
| 14871874 | 1318 days ago | 0 ETH | ||||
| 14811253 | 1318 days ago | 0 ETH | ||||
| 14811253 | 1318 days ago | 0 ETH | ||||
| 14811196 | 1318 days ago | 0 ETH | ||||
| 14689161 | 1320 days ago | 0 ETH | ||||
| 14689161 | 1320 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AVM_BridgeDepositBox
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2021-11-03
*/
// Sources flattened with hardhat v2.5.0 https://hardhat.org
// File contracts/common/implementation/Timer.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.0;
/**
* @title Universal store of current contract time for testing environments.
*/
contract Timer {
uint256 private currentTime;
constructor() {
currentTime = block.timestamp; // solhint-disable-line not-rely-on-time
}
/**
* @notice Sets the current time.
* @dev Will revert if not running in test mode.
* @param time timestamp to set `currentTime` to.
*/
function setCurrentTime(uint256 time) external {
currentTime = time;
}
/**
* @notice Gets the currentTime variable set in the Timer.
* @return uint256 for the current Testable timestamp.
*/
function getCurrentTime() public view returns (uint256) {
return currentTime;
}
}
// File contracts/common/implementation/Testable.sol
/**
* @title Base class that provides time overrides, but only if being run in test mode.
*/
abstract contract Testable {
// If the contract is being run in production, then `timerAddress` will be the 0x0 address.
// Note: this variable should be set on construction and never modified.
address public timerAddress;
/**
* @notice Constructs the Testable contract. Called by child contracts.
* @param _timerAddress Contract that stores the current time in a testing environment.
* Must be set to 0x0 for production environments that use live time.
*/
constructor(address _timerAddress) {
timerAddress = _timerAddress;
}
/**
* @notice Reverts if not running in test mode.
*/
modifier onlyIfTest {
require(timerAddress != address(0x0));
_;
}
/**
* @notice Sets the current time.
* @dev Will revert if not running in test mode.
* @param time timestamp to set current Testable time to.
*/
function setCurrentTime(uint256 time) external onlyIfTest {
Timer(timerAddress).setCurrentTime(time);
}
/**
* @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.
* Otherwise, it will return the block timestamp.
* @return uint for the current Testable timestamp.
*/
function getCurrentTime() public view virtual returns (uint256) {
if (timerAddress != address(0x0)) {
return Timer(timerAddress).getCurrentTime();
} else {
return block.timestamp; // solhint-disable-line not-rely-on-time
}
}
}
// File contracts/common/implementation/Lockable.sol
/**
* @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract
* is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol
* and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.
*/
contract Lockable {
bool private _notEntered;
constructor() {
// Storing an initial 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.
_notEntered = true;
}
/**
* @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 making it call a `private`
* function that does the actual state modification.
*/
modifier nonReentrant() {
_preEntranceCheck();
_preEntranceSet();
_;
_postEntranceReset();
}
/**
* @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.
*/
modifier nonReentrantView() {
_preEntranceCheck();
_;
}
// Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.
// On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being
// re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and
// then call `_postEntranceReset()`.
// View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.
function _preEntranceCheck() internal view {
// On the first call to nonReentrant, _notEntered will be true
require(_notEntered, "ReentrancyGuard: reentrant call");
}
function _preEntranceSet() internal {
// Any calls to nonReentrant after this point will fail
_notEntered = false;
}
function _postEntranceReset() internal {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_notEntered = true;
}
}
// File contracts/insured-bridge/BridgeDepositBox.sol
// Define some interfaces and helper libraries. This is temporary until we can bump the solidity version in these
// contracts to 0.8.x and import the rest of these libs from other UMA contracts in the repo.
library TokenHelper {
function safeTransferFrom(
address token,
address from,
address to,
uint256 value
) internal {
// bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
(bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
require(
success && (data.length == 0 || abi.decode(data, (bool))),
"TokenHelper::transferFrom: transferFrom failed"
);
}
}
interface TokenLike {
function balanceOf(address guy) external returns (uint256 wad);
}
interface WETH9Like {
function deposit() external payable;
}
/**
* @title OVM Bridge Deposit Box.
* @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.
*/
abstract contract BridgeDepositBox is Testable, Lockable {
/*************************************
* OVM DEPOSIT BOX DATA STRUCTURES *
*************************************/
// ChainID of the L2 this deposit box is deployed on.
uint256 public chainId;
// Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.
address public l1Weth;
// Track the total number of deposits. Used as a unique identifier for bridged transfers.
uint256 public numberOfDeposits;
struct L2TokenRelationships {
address l1Token;
address l1BridgePool;
uint64 lastBridgeTime;
bool depositsEnabled;
}
// Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token
// type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.
mapping(address => L2TokenRelationships) public whitelistedTokens;
// Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.
uint64 public minimumBridgingDelay;
/****************************************
* EVENTS *
****************************************/
event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);
event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);
event DepositsEnabled(address l2Token, bool depositsEnabled);
event FundsDeposited(
uint256 chainId,
uint256 depositId,
address l1Recipient,
address l2Sender,
address l1Token,
address l2Token,
uint256 amount,
uint64 slowRelayFeePct,
uint64 instantRelayFeePct,
uint64 quoteTimestamp
);
event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);
/****************************************
* MODIFIERS *
****************************************/
modifier onlyIfDepositsEnabled(address l2Token) {
require(whitelistedTokens[l2Token].depositsEnabled, "Contract is disabled");
_;
}
/**
* @notice Construct the Bridge Deposit Box
* @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.
* @param _chainId Chain identifier for the Bridge deposit box.
* @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.
* @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.
*/
constructor(
uint64 _minimumBridgingDelay,
uint256 _chainId,
address _l1Weth,
address timerAddress
) Testable(timerAddress) {
_setMinimumBridgingDelay(_minimumBridgingDelay);
chainId = _chainId;
l1Weth = _l1Weth;
}
/**************************************
* ADMIN FUNCTIONS *
**************************************/
/**
* @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.
* @param newMinimumBridgingDelay the new minimum delay.
*/
function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {
minimumBridgingDelay = newMinimumBridgingDelay;
emit SetMinimumBridgingDelay(minimumBridgingDelay);
}
/**
* @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.
* @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.
* @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.
* @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.
*/
function _whitelistToken(
address l1Token,
address l2Token,
address l1BridgePool
) internal {
whitelistedTokens[l2Token] = L2TokenRelationships({
l1Token: l1Token,
l1BridgePool: l1BridgePool,
lastBridgeTime: uint64(getCurrentTime()),
depositsEnabled: true
});
emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);
}
/**
* @notice L1 owner can enable/disable deposits for a whitelisted token.
* @param l2Token address of L2 token to enable/disable deposits for.
* @param depositsEnabled bool to set if the deposit box should accept/reject deposits.
*/
function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {
whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;
emit DepositsEnabled(l2Token, depositsEnabled);
}
/**************************************
* DEPOSITOR FUNCTIONS *
**************************************/
/**
* @notice Called by L2 user to bridge funds between L2 and L1.
* @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.
* @dev The caller must first approve this contract to spend `amount` of `l2Token`.
* @param l1Recipient L1 address that should receive the tokens.
* @param l2Token L2 token to deposit.
* @param amount How many L2 tokens should be deposited.
* @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.
* @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.
* @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the
* depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.
*/
function deposit(
address l1Recipient,
address l2Token,
uint256 amount,
uint64 slowRelayFeePct,
uint64 instantRelayFeePct,
uint64 quoteTimestamp
) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {
require(isWhitelistToken(l2Token), "deposit token not whitelisted");
// We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.
// The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.
require(slowRelayFeePct <= 0.25e18, "slowRelayFeePct must be <= 25%");
require(instantRelayFeePct <= 0.25e18, "instantRelayFeePct must be <= 25%");
// Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp
// corresponds to the L1 timestamp of the last confirmed L1 ⇒ L2 transaction. The quoteTime must be within 10
// mins of the current time to allow for this variance.
// Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result
// in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.
// Consider requiring `quoteTimestamp >= 10 minutes`.
require(
getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,
"deposit mined after deadline"
);
// If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user
// is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.
if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {
require(msg.value == amount, "msg.value must match amount");
WETH9Like(address(l2Token)).deposit{ value: msg.value }();
}
// Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.
// Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In
// this case the msg.value will be set to 0, indicating a "normal" ERC20 bridging action.
else TokenHelper.safeTransferFrom(l2Token, msg.sender, address(this), amount);
emit FundsDeposited(
chainId,
numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).
l1Recipient,
msg.sender,
whitelistedTokens[l2Token].l1Token,
l2Token,
amount,
slowRelayFeePct,
instantRelayFeePct,
quoteTimestamp
);
numberOfDeposits += 1;
}
/**************************************
* VIEW FUNCTIONS *
**************************************/
/**
* @notice Checks if a given L2 token is whitelisted.
* @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once
* the token has been whitelisted.
* @param l2Token L2 token to check against the whitelist.
* @return true if token is whitelised.
*/
function isWhitelistToken(address l2Token) public view returns (bool) {
return whitelistedTokens[l2Token].lastBridgeTime != 0;
}
function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {
return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;
}
/**
* @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's
* balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted
* and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).
* @dev This function is also public for caller convenience.
* @param l2Token L2 token to check bridging status.
* @return true if token is whitelised and enough time has elapsed since the previous bridge.
*/
function canBridge(address l2Token) public view returns (bool) {
return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);
}
}
// File contracts/external/avm/AVM_CrossDomainEnabled.sol
// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l2/L2CrossDomainEnabled.sol
// with a change to the solidity version.
abstract contract AVM_CrossDomainEnabled {
modifier onlyFromCrossDomainAccount(address l1Counterpart) {
require(msg.sender == applyL1ToL2Alias(l1Counterpart), "ONLY_COUNTERPART_GATEWAY");
_;
}
uint160 constant offset = uint160(0x1111000000000000000000000000000000001111);
// l1 addresses are transformed during l1->l2 calls. see https://developer.offchainlabs.com/docs/l1_l2_messages#address-aliasing for more information.
function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {
l2Address = address(uint160(l1Address) + offset);
}
}
// File contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol
interface StandardBridgeLike {
function outboundTransfer(
address _l1Token,
address _to,
uint256 _amount,
bytes calldata _data
) external payable returns (bytes memory);
}
/**
* @notice AVM specific bridge deposit box.
* @dev Uses AVM cross-domain-enabled logic for access control.
*/
contract AVM_BridgeDepositBox is BridgeDepositBox, AVM_CrossDomainEnabled {
// Address of the L1 contract that acts as the owner of this Bridge deposit box.
address public crossDomainAdmin;
// Address of the Arbitrum L2 token gateway.
address public l2GatewayRouter;
event SetXDomainAdmin(address indexed newAdmin);
/**
* @notice Construct the Arbitrum Bridge Deposit Box
* @param _l2GatewayRouter Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.
* @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.
* @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.
* @param _chainId L2 Chain identifier this deposit box is deployed on.
* @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.
* @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.
*/
constructor(
address _l2GatewayRouter,
address _crossDomainAdmin,
uint64 _minimumBridgingDelay,
uint256 _chainId,
address _l1Weth,
address timerAddress
) BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress) {
l2GatewayRouter = _l2GatewayRouter;
_setCrossDomainAdmin(_crossDomainAdmin);
}
/**************************************
* ADMIN FUNCTIONS *
**************************************/
/**
* @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.
* @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which
* is expected to be the Arbitrum_Messenger.
* @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.
* @param newCrossDomainAdmin address of the new L1 admin contract.
*/
function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {
_setCrossDomainAdmin(newCrossDomainAdmin);
}
/**
* @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.
* @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.
* @param newMinimumBridgingDelay the new minimum delay.
*/
function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)
public
onlyFromCrossDomainAccount(crossDomainAdmin)
{
_setMinimumBridgingDelay(newMinimumBridgingDelay);
}
/**
* @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.
* @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.
* @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.
* @param l2Token Address of the L2 token representation. This is the token users would deposit on Arbitrum.
* @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.
*/
function whitelistToken(
address l1Token,
address l2Token,
address l1BridgePool
) public onlyFromCrossDomainAccount(crossDomainAdmin) {
_whitelistToken(l1Token, l2Token, l1BridgePool);
}
/**
* @notice L1 owner can enable/disable deposits for a whitelisted token.
* @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.
* @param l2Token address of L2 token to enable/disable deposits for.
* @param depositsEnabled bool to set if the deposit box should accept/reject deposits.
*/
function setEnableDeposits(address l2Token, bool depositsEnabled)
public
onlyFromCrossDomainAccount(crossDomainAdmin)
{
_setEnableDeposits(l2Token, depositsEnabled);
}
/**************************************
* RELAYER FUNCTIONS *
**************************************/
/**
* @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical
* token bridge, to the L1 Withdraw box.
* @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam
* on L1 as the finalization of a L2->L1 tx is quite expensive.
* @param l2Token L2 token to relay over the canonical bridge.
* @param l1Gas Unused by Arbitrum, but included for potential forward compatibility considerations.
*/
function bridgeTokens(address l2Token, uint32 l1Gas) public {
uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));
require(bridgeDepositBoxBalance > 0, "can't bridge zero tokens");
require(canBridge(l2Token), "non-whitelisted token or last bridge too recent");
whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());
StandardBridgeLike(l2GatewayRouter).outboundTransfer(
whitelistedTokens[l2Token].l1Token, // _l1Token. Address of the L1 token to bridge over.
whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.
bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.
"" // _data. We don't need to send any data for the bridging action.
);
emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);
}
/**************************************
* INTERNAL FUNCTIONS *
**************************************/
function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {
require(newCrossDomainAdmin != address(0), "Empty address");
crossDomainAdmin = newCrossDomainAdmin;
emit SetXDomainAdmin(crossDomainAdmin);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_l2GatewayRouter","type":"address"},{"internalType":"address","name":"_crossDomainAdmin","type":"address"},{"internalType":"uint64","name":"_minimumBridgingDelay","type":"uint64"},{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"address","name":"_l1Weth","type":"address"},{"internalType":"address","name":"timerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"l2Token","type":"address"},{"indexed":false,"internalType":"bool","name":"depositsEnabled","type":"bool"}],"name":"DepositsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositId","type":"uint256"},{"indexed":false,"internalType":"address","name":"l1Recipient","type":"address"},{"indexed":false,"internalType":"address","name":"l2Sender","type":"address"},{"indexed":false,"internalType":"address","name":"l1Token","type":"address"},{"indexed":false,"internalType":"address","name":"l2Token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"slowRelayFeePct","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"instantRelayFeePct","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"quoteTimestamp","type":"uint64"}],"name":"FundsDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"newMinimumBridgingDelay","type":"uint64"}],"name":"SetMinimumBridgingDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"SetXDomainAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"l2Token","type":"address"},{"indexed":false,"internalType":"uint256","name":"numberOfTokensBridged","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"l1Gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"caller","type":"address"}],"name":"TokensBridged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"l1Token","type":"address"},{"indexed":false,"internalType":"address","name":"l2Token","type":"address"},{"indexed":false,"internalType":"uint64","name":"lastBridgeTime","type":"uint64"},{"indexed":false,"internalType":"address","name":"bridgePool","type":"address"}],"name":"WhitelistToken","type":"event"},{"inputs":[{"internalType":"address","name":"l2Token","type":"address"},{"internalType":"uint32","name":"l1Gas","type":"uint32"}],"name":"bridgeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"l2Token","type":"address"}],"name":"canBridge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crossDomainAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"l1Recipient","type":"address"},{"internalType":"address","name":"l2Token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"slowRelayFeePct","type":"uint64"},{"internalType":"uint64","name":"instantRelayFeePct","type":"uint64"},{"internalType":"uint64","name":"quoteTimestamp","type":"uint64"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getCurrentTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"l2Token","type":"address"}],"name":"isWhitelistToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l1Weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2GatewayRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumBridgingDelay","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newCrossDomainAdmin","type":"address"}],"name":"setCrossDomainAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setCurrentTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"l2Token","type":"address"},{"internalType":"bool","name":"depositsEnabled","type":"bool"}],"name":"setEnableDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newMinimumBridgingDelay","type":"uint64"}],"name":"setMinimumBridgingDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"l1Token","type":"address"},{"internalType":"address","name":"l2Token","type":"address"},{"internalType":"address","name":"l1BridgePool","type":"address"}],"name":"whitelistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedTokens","outputs":[{"internalType":"address","name":"l1Token","type":"address"},{"internalType":"address","name":"l1BridgePool","type":"address"},{"internalType":"uint64","name":"lastBridgeTime","type":"uint64"},{"internalType":"bool","name":"depositsEnabled","type":"bool"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200204a3803806200204a8339810160408190526200003491620001ce565b600080546001600160a81b0319166001600160a01b03831617600160a01b179055838383836200006484620000b2565b50600191909155600280546001600160a01b03199081166001600160a01b03938416179091556006805490911691891691909117905550620000a68562000106565b50505050505062000255565b600580546001600160401b0319166001600160401b0383169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b6001600160a01b038116620001515760405162461bcd60e51b815260206004820152600d60248201526c456d707479206164647265737360981b604482015260640160405180910390fd5b60058054600160401b600160e01b031916680100000000000000006001600160a01b0384811682029290921792839055604051920416907fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b80516001600160a01b0381168114620001c957600080fd5b919050565b60008060008060008060c08789031215620001e857600080fd5b620001f387620001b1565b95506200020360208801620001b1565b60408801519095506001600160401b03811681146200022157600080fd5b606088015190945092506200023960808801620001b1565b91506200024960a08801620001b1565b90509295509295509295565b611de580620002656000396000f3fe6080604052600436106101295760003560e01c80639a8a0592116100a5578063c2d9dca911610074578063daf9c21011610059578063daf9c21014610386578063de7eba7814610465578063fbb9fcf71461048557600080fd5b8063c2d9dca914610346578063c83568591461035957600080fd5b80639a8a0592146102c05780639bfd2cdc146102d6578063a1244c67146102f6578063b2d6f4d41461030c57600080fd5b80632ec35b31116100fc5780635285e058116100e15780635285e05814610237578063563c7f601461027057806363635fd91461029057600080fd5b80632ec35b31146101f75780634dedca281461021757600080fd5b8063146bf4b11461012e5780631c39c38d1461018557806322f8e566146101b257806329cb924d146101d4575b600080fd5b34801561013a57600080fd5b5060025461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561019157600080fd5b5060005461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101be57600080fd5b506101d26101cd3660046119a8565b6104ef565b005b3480156101e057600080fd5b506101e9610598565b60405190815260200161017c565b34801561020357600080fd5b506101d26102123660046119de565b61065f565b34801561022357600080fd5b506101d2610232366004611a24565b610733565b34801561024357600080fd5b5060055461015b9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561027c57600080fd5b506101d261028b366004611a78565b610806565b34801561029c57600080fd5b506102b06102ab366004611aaf565b6108d7565b604051901515815260200161017c565b3480156102cc57600080fd5b506101e960015481565b3480156102e257600080fd5b506101d26102f1366004611aca565b61093a565b34801561030257600080fd5b506101e960035481565b34801561031857600080fd5b5060055461032d9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161017c565b6101d2610354366004611aff565b610c96565b34801561036557600080fd5b5060065461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039257600080fd5b5061041c6103a1366004611aaf565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff909116918301919091521515606082015260800161017c565b34801561047157600080fd5b506101d2610480366004611aaf565b61122a565b34801561049157600080fd5b506102b06104a0366004611aaf565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661051157600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561065a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611b6c565b905090565b504290565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661068d816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f47415445574159000000000000000060448201526064015b60405180910390fd5b61072f82611315565b5050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16610761816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b610800848484611382565b50505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16610834816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b6108d2838361155a565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff161515801561093457506109348261160d565b92915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b1580156109a457600080fd5b505af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190611b6c565b905060008111610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e730000000000000000604482015260640161071d565b610a51836108d7565b610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e740000000000000000000000000000000000606482015260840161071d565b610ae5610598565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020819052604080832060018101805467ffffffffffffffff9790971674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff88168117909155600654915492517f7b3a3c8b00000000000000000000000000000000000000000000000000000000815292861693830193909352918416948416949094176024850152604484018590526080606485015260848401919091521690637b3a3c8b9060a401600060405180830381600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c389190810190611be0565b506040805182815263ffffffff84166020820152339173ffffffffffffffffffffffffffffffffffffffff8616917f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16610d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c6564000000000000000000000000604482015260640161071d565b610d52611684565b610d7f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c6973746564000000604482015260640161071d565b6703782dace9d900008467ffffffffffffffff161115610eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d203235250000604482015260640161071d565b6703782dace9d900008367ffffffffffffffff161115610f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f2500000000000000000000000000000000000000000000000000000000000000606482015260840161071d565b610f5a61025883611cda565b67ffffffffffffffff16610f6c610598565b10158015610f965750610f8182610258611d03565b67ffffffffffffffff16610f93610598565b11155b610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e6500000000604482015260640161071d565b60025473ffffffffffffffffffffffffffffffffffffffff878116600090815260046020526040902054811691161480156110375750600034115b1561110b578434146110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e740000000000604482015260640161071d565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b5050505050611117565b6111178633308861170a565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546111d79190611d2f565b909155506112219050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16611258816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b61072f826118a9565b600061093473111100000000000000000000000000000000111183611d47565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020016113cd610598565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd838361150c610598565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812060010154909161166b9167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416611d03565b67ffffffffffffffff1661167d610598565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916117a99190611d76565b6000604051808303816000865af19150503d80600081146117e6576040519150601f19603f3d011682016040523d82523d6000602084013e6117eb565b606091505b50915091508180156118155750805115806118155750808060200190518101906118159190611d92565b6118a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f546f6b656e48656c7065723a3a7472616e7366657246726f6d3a207472616e7360448201527f66657246726f6d206661696c6564000000000000000000000000000000000000606482015260840161071d565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456d707479206164647265737300000000000000000000000000000000000000604482015260640161071d565b600580547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84811682029290921792839055604051920416907fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b6000602082840312156119ba57600080fd5b5035919050565b803567ffffffffffffffff811681146119d957600080fd5b919050565b6000602082840312156119f057600080fd5b6119f9826119c1565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146119d957600080fd5b600080600060608486031215611a3957600080fd5b611a4284611a00565b9250611a5060208501611a00565b9150611a5e60408501611a00565b90509250925092565b8015158114611a7557600080fd5b50565b60008060408385031215611a8b57600080fd5b611a9483611a00565b91506020830135611aa481611a67565b809150509250929050565b600060208284031215611ac157600080fd5b6119f982611a00565b60008060408385031215611add57600080fd5b611ae683611a00565b9150602083013563ffffffff81168114611aa457600080fd5b60008060008060008060c08789031215611b1857600080fd5b611b2187611a00565b9550611b2f60208801611a00565b945060408701359350611b44606088016119c1565b9250611b52608088016119c1565b9150611b6060a088016119c1565b90509295509295509295565b600060208284031215611b7e57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015611bcf578181015183820152602001611bb7565b838111156108005750506000910152565b600060208284031215611bf257600080fd5b815167ffffffffffffffff80821115611c0a57600080fd5b818401915084601f830112611c1e57600080fd5b815181811115611c3057611c30611b85565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611c7657611c76611b85565b81604052828152876020848701011115611c8f57600080fd5b611ca0836020830160208801611bb4565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611cfb57611cfb611cab565b039392505050565b600067ffffffffffffffff808316818516808303821115611d2657611d26611cab565b01949350505050565b60008219821115611d4257611d42611cab565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808316818516808303821115611d2657611d26611cab565b60008251611d88818460208701611bb4565b9190910192915050565b600060208284031215611da457600080fd5b81516119f981611a6756fea26469706673582212205eee84fe56e25398ddd797a5a280524411fb09a74a7d491ae7f2e3ac94b2e99c64736f6c634300080900330000000000000000000000005288c571fd7ad117bea99bf60fe0846c4e84f9330000000000000000000000000d8563d3b8b3fec542aae50a530c606dac4d1c4f0000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000a4b1000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101295760003560e01c80639a8a0592116100a5578063c2d9dca911610074578063daf9c21011610059578063daf9c21014610386578063de7eba7814610465578063fbb9fcf71461048557600080fd5b8063c2d9dca914610346578063c83568591461035957600080fd5b80639a8a0592146102c05780639bfd2cdc146102d6578063a1244c67146102f6578063b2d6f4d41461030c57600080fd5b80632ec35b31116100fc5780635285e058116100e15780635285e05814610237578063563c7f601461027057806363635fd91461029057600080fd5b80632ec35b31146101f75780634dedca281461021757600080fd5b8063146bf4b11461012e5780631c39c38d1461018557806322f8e566146101b257806329cb924d146101d4575b600080fd5b34801561013a57600080fd5b5060025461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561019157600080fd5b5060005461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101be57600080fd5b506101d26101cd3660046119a8565b6104ef565b005b3480156101e057600080fd5b506101e9610598565b60405190815260200161017c565b34801561020357600080fd5b506101d26102123660046119de565b61065f565b34801561022357600080fd5b506101d2610232366004611a24565b610733565b34801561024357600080fd5b5060055461015b9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561027c57600080fd5b506101d261028b366004611a78565b610806565b34801561029c57600080fd5b506102b06102ab366004611aaf565b6108d7565b604051901515815260200161017c565b3480156102cc57600080fd5b506101e960015481565b3480156102e257600080fd5b506101d26102f1366004611aca565b61093a565b34801561030257600080fd5b506101e960035481565b34801561031857600080fd5b5060055461032d9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161017c565b6101d2610354366004611aff565b610c96565b34801561036557600080fd5b5060065461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039257600080fd5b5061041c6103a1366004611aaf565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff909116918301919091521515606082015260800161017c565b34801561047157600080fd5b506101d2610480366004611aaf565b61122a565b34801561049157600080fd5b506102b06104a0366004611aaf565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661051157600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561065a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611b6c565b905090565b504290565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661068d816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f47415445574159000000000000000060448201526064015b60405180910390fd5b61072f82611315565b5050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16610761816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b610800848484611382565b50505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16610834816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b6108d2838361155a565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff161515801561093457506109348261160d565b92915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b1580156109a457600080fd5b505af11580156109b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dc9190611b6c565b905060008111610a48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e730000000000000000604482015260640161071d565b610a51836108d7565b610add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e740000000000000000000000000000000000606482015260840161071d565b610ae5610598565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020819052604080832060018101805467ffffffffffffffff9790971674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff88168117909155600654915492517f7b3a3c8b00000000000000000000000000000000000000000000000000000000815292861693830193909352918416948416949094176024850152604484018590526080606485015260848401919091521690637b3a3c8b9060a401600060405180830381600087803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c389190810190611be0565b506040805182815263ffffffff84166020820152339173ffffffffffffffffffffffffffffffffffffffff8616917f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16610d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c6564000000000000000000000000604482015260640161071d565b610d52611684565b610d7f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c6973746564000000604482015260640161071d565b6703782dace9d900008467ffffffffffffffff161115610eac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d203235250000604482015260640161071d565b6703782dace9d900008367ffffffffffffffff161115610f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f2500000000000000000000000000000000000000000000000000000000000000606482015260840161071d565b610f5a61025883611cda565b67ffffffffffffffff16610f6c610598565b10158015610f965750610f8182610258611d03565b67ffffffffffffffff16610f93610598565b11155b610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e6500000000604482015260640161071d565b60025473ffffffffffffffffffffffffffffffffffffffff878116600090815260046020526040902054811691161480156110375750600034115b1561110b578434146110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e740000000000604482015260640161071d565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b5050505050611117565b6111178633308861170a565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546111d79190611d2f565b909155506112219050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16611258816112f5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b61072f826118a9565b600061093473111100000000000000000000000000000000111183611d47565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020016113cd610598565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd838361150c610598565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812060010154909161166b9167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416611d03565b67ffffffffffffffff1661167d610598565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916117a99190611d76565b6000604051808303816000865af19150503d80600081146117e6576040519150601f19603f3d011682016040523d82523d6000602084013e6117eb565b606091505b50915091508180156118155750805115806118155750808060200190518101906118159190611d92565b6118a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f546f6b656e48656c7065723a3a7472616e7366657246726f6d3a207472616e7360448201527f66657246726f6d206661696c6564000000000000000000000000000000000000606482015260840161071d565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456d707479206164647265737300000000000000000000000000000000000000604482015260640161071d565b600580547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84811682029290921792839055604051920416907fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b6000602082840312156119ba57600080fd5b5035919050565b803567ffffffffffffffff811681146119d957600080fd5b919050565b6000602082840312156119f057600080fd5b6119f9826119c1565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146119d957600080fd5b600080600060608486031215611a3957600080fd5b611a4284611a00565b9250611a5060208501611a00565b9150611a5e60408501611a00565b90509250925092565b8015158114611a7557600080fd5b50565b60008060408385031215611a8b57600080fd5b611a9483611a00565b91506020830135611aa481611a67565b809150509250929050565b600060208284031215611ac157600080fd5b6119f982611a00565b60008060408385031215611add57600080fd5b611ae683611a00565b9150602083013563ffffffff81168114611aa457600080fd5b60008060008060008060c08789031215611b1857600080fd5b611b2187611a00565b9550611b2f60208801611a00565b945060408701359350611b44606088016119c1565b9250611b52608088016119c1565b9150611b6060a088016119c1565b90509295509295509295565b600060208284031215611b7e57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015611bcf578181015183820152602001611bb7565b838111156108005750506000910152565b600060208284031215611bf257600080fd5b815167ffffffffffffffff80821115611c0a57600080fd5b818401915084601f830112611c1e57600080fd5b815181811115611c3057611c30611b85565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611c7657611c76611b85565b81604052828152876020848701011115611c8f57600080fd5b611ca0836020830160208801611bb4565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611cfb57611cfb611cab565b039392505050565b600067ffffffffffffffff808316818516808303821115611d2657611d26611cab565b01949350505050565b60008219821115611d4257611d42611cab565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808316818516808303821115611d2657611d26611cab565b60008251611d88818460208701611bb4565b9190910192915050565b600060208284031215611da457600080fd5b81516119f981611a6756fea26469706673582212205eee84fe56e25398ddd797a5a280524411fb09a74a7d491ae7f2e3ac94b2e99c64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005288c571fd7ad117bea99bf60fe0846c4e84f9330000000000000000000000000d8563d3b8b3fec542aae50a530c606dac4d1c4f0000000000000000000000000000000000000000000000000000000000005460000000000000000000000000000000000000000000000000000000000000a4b1000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _l2GatewayRouter (address): 0x5288c571Fd7aD117beA99bF60FE0846C4E84F933
Arg [1] : _crossDomainAdmin (address): 0x0D8563d3B8b3Fec542aaE50a530C606DAc4D1c4F
Arg [2] : _minimumBridgingDelay (uint64): 21600
Arg [3] : _chainId (uint256): 42161
Arg [4] : _l1Weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [5] : timerAddress (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000005288c571fd7ad117bea99bf60fe0846c4e84f933
Arg [1] : 0000000000000000000000000d8563d3b8b3fec542aae50a530c606dac4d1c4f
Arg [2] : 0000000000000000000000000000000000000000000000000000000000005460
Arg [3] : 000000000000000000000000000000000000000000000000000000000000a4b1
Arg [4] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
18388:6150:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6986:21;;;;;;;;;;-1:-1:-1;6986:21:0;;;;;;;;;;;190:42:1;178:55;;;160:74;;148:2;133:18;6986:21:0;;;;;;;;1317:27;;;;;;;;;;-1:-1:-1;1317:27:0;;;;;;;;2047:117;;;;;;;;;;-1:-1:-1;2047:117:0;;;;;:::i;:::-;;:::i;:::-;;2416:282;;;;;;;;;;;;;:::i;:::-;;;576:25:1;;;564:2;549:18;2416:282:0;430:177:1;20927:208:0;;;;;;;;;;-1:-1:-1;20927:208:0;;;;;:::i;:::-;;:::i;21663:232::-;;;;;;;;;;-1:-1:-1;21663:232:0;;;;;:::i;:::-;;:::i;18555:31::-;;;;;;;;;;-1:-1:-1;18555:31:0;;;;;;;;;;;22268:204;;;;;;;;;;-1:-1:-1;22268:204:0;;;;;:::i;:::-;;:::i;16909:156::-;;;;;;;;;;-1:-1:-1;16909:156:0;;;;;:::i;:::-;;:::i;:::-;;;2316:14:1;;2309:22;2291:41;;2279:2;2264:18;16909:156:0;2151:187:1;6836:22:0;;;;;;;;;;;;;;;;23179:966;;;;;;;;;;-1:-1:-1;23179:966:0;;;;;:::i;:::-;;:::i;7111:31::-;;;;;;;;;;;;;;;;7722:34;;;;;;;;;;-1:-1:-1;7722:34:0;;;;;;;;;;;2872:18:1;2860:31;;;2842:50;;2830:2;2815:18;7722:34:0;2698:200:1;12635:2863:0;;;;;;:::i;:::-;;:::i;18645:30::-;;;;;;;;;;-1:-1:-1;18645:30:0;;;;;;;;7526:65;;;;;;;;;;-1:-1:-1;7526:65:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:42:1;3757:15;;;3739:34;;3809:15;;;;3804:2;3789:18;;3782:43;3873:18;3861:31;;;3841:18;;;3834:59;;;;3936:14;3929:22;3924:2;3909:18;;3902:50;3665:3;3650:19;7526:65:0;3455:503:1;20468:170:0;;;;;;;;;;-1:-1:-1;20468:170:0;;;;;:::i;:::-;;:::i;15977:142::-;;;;;;;;;;-1:-1:-1;15977:142:0;;;;;:::i;:::-;16065:26;;16041:4;16065:26;;;:17;:26;;;;;:41;;;;;;;;:46;;;15977:142;2047:117;1840:3;1816:12;:28;:12;1808:37;;;;;;2122:12:::1;::::0;2116:40:::1;::::0;;;;::::1;::::0;::::1;576:25:1::0;;;2122:12:0::1;::::0;;::::1;::::0;2116:34:::1;::::0;549:18:1;;2116:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2047:117:::0;:::o;2416:282::-;2471:7;2495:12;;:28;:12;:28;2491:200;;2553:12;;;;;;;;;;2547:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2540:43;;2416:282;:::o;2491:200::-;-1:-1:-1;2623:15:0;;2416:282::o;20927:208::-;21044:16;;;;;;;17478:31;21044:16;17478;:31::i;:::-;17464:45;;:10;:45;;;17456:82;;;;;;;4354:2:1;17456:82:0;;;4336:21:1;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;17456:82:0;;;;;;;;;21078:49:::1;21103:23;21078:24;:49::i;:::-;20927:208:::0;;:::o;21663:232::-;21811:16;;;;;;;17478:31;21811:16;17478;:31::i;:::-;17464:45;;:10;:45;;;17456:82;;;;;;;4354:2:1;17456:82:0;;;4336:21:1;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;17456:82:0;4152:348:1;17456:82:0;21840:47:::1;21856:7;21865;21874:12;21840:15;:47::i;:::-;21663:232:::0;;;;:::o;22268:204::-;22386:16;;;;;;;17478:31;22386:16;17478;:31::i;:::-;17464:45;;:10;:45;;;17456:82;;;;;;;4354:2:1;17456:82:0;;;4336:21:1;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;17456:82:0;4152:348:1;17456:82:0;22420:44:::1;22439:7;22448:15;22420:18;:44::i;:::-;22268:204:::0;;;:::o;16909:156::-;16065:26;;;16966:4;16065:26;;;:17;:26;;;;;:41;;;;;;;;:46;;16990:67;;;;;17019:38;17049:7;17019:29;:38::i;:::-;16983:74;16909:156;-1:-1:-1;;16909:156:0:o;23179:966::-;23284:43;;;;;23321:4;23284:43;;;160:74:1;23250:31:0;;23284:28;;;;;;133:18:1;;23284:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23250:77;;23372:1;23346:23;:27;23338:64;;;;;;;4707:2:1;23338:64:0;;;4689:21:1;4746:2;4726:18;;;4719:30;4785:26;4765:18;;;4758:54;4829:18;;23338:64:0;4505:348:1;23338:64:0;23421:18;23431:7;23421:9;:18::i;:::-;23413:78;;;;;;;5060:2:1;23413:78:0;;;5042:21:1;5099:2;5079:18;;;5072:30;5138:34;5118:18;;;5111:62;5209:17;5189:18;;;5182:45;5244:19;;23413:78:0;4858:411:1;23413:78:0;23555:16;:14;:16::i;:::-;23504:26;;;;;;;;:17;:26;;;;;;;;:41;;;:68;;;;;;;;;;;;;;;;;23604:15;;23652:34;;23585:468;;;;;23652:34;;;23585:468;;;5602:34:1;;;;23754:39:0;;;;;;;;;;5652:18:1;;;5645:43;5704:18;;;5697:34;;;5767:3;5747:18;;;5740:31;5787:19;;;5780:30;;;;23604:15:0;;23585:52;;5827:19:1;;23585:468:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24071:66:0;;;7429:25:1;;;7502:10;7490:23;;7485:2;7470:18;;7463:51;24126:10:0;;24071:66;;;;;;7402:18:1;24071:66:0;;;;;;;23239:906;23179:966;;:::o;12635:2863::-;8805:26;;;;;;;:17;:26;;;;;:42;;;:26;;:42;;;;;8797:75;;;;;;;7727:2:1;8797:75:0;;;7709:21:1;7766:2;7746:18;;;7739:30;7805:22;7785:18;;;7778:50;7845:18;;8797:75:0;7525:344:1;8797:75:0;4042:19:::1;:17;:19::i;:::-;4072:17;5210:5:::0;5196:19;;;;;;5084:139;4072:17:::1;16065:26:::0;;;16041:4;16065:26;;;:17;:26;;;;;:41;;;;;;;;12913:67:::2;;;::::0;::::2;::::0;;8076:2:1;12913:67:0::2;::::0;::::2;8058:21:1::0;8115:2;8095:18;;;8088:30;8154:31;8134:18;;;8127:59;8203:18;;12913:67:0::2;7874:353:1::0;12913:67:0::2;13250:7;13231:15;:26;;;;13223:69;;;::::0;::::2;::::0;;8434:2:1;13223:69:0::2;::::0;::::2;8416:21:1::0;8473:2;8453:18;;;8446:30;8512:32;8492:18;;;8485:60;8562:18;;13223:69:0::2;8232:354:1::0;13223:69:0::2;13333:7;13311:18;:29;;;;13303:75;;;::::0;::::2;::::0;;8793:2:1;13303:75:0::2;::::0;::::2;8775:21:1::0;8832:2;8812:18;;;8805:30;8871:34;8851:18;;;8844:62;8942:3;8922:18;;;8915:31;8963:19;;13303:75:0::2;8591:397:1::0;13303:75:0::2;14045:27;14062:10;14045:14:::0;:27:::2;:::i;:::-;14025:47;;:16;:14;:16::i;:::-;:47;;:98;;;;-1:-1:-1::0;14096:27:0::2;:14:::0;14113:10:::2;14096:27;:::i;:::-;14076:47;;:16;:14;:16::i;:::-;:47;;14025:98;14003:176;;;::::0;::::2;::::0;;9859:2:1;14003:176:0::2;::::0;::::2;9841:21:1::0;9898:2;9878:18;;;9871:30;9937;9917:18;;;9910:58;9985:18;;14003:176:0::2;9657:352:1::0;14003:176:0::2;14457:6;::::0;::::2;14419:26:::0;;::::2;14457:6;14419:26:::0;;;:17:::2;:26;::::0;;;;:34;;::::2;14457:6:::0;::::2;14419:44;:61:::0;::::2;;;;14479:1;14467:9;:13;14419:61;14415:635;;;14518:6;14505:9;:19;14497:59;;;::::0;::::2;::::0;;10216:2:1;14497:59:0::2;::::0;::::2;10198:21:1::0;10255:2;10235:18;;;10228:30;10294:29;10274:18;;;10267:57;10341:18;;14497:59:0::2;10014:351:1::0;14497:59:0::2;14589:7;14571:35;;;14615:9;14571:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;14415:635;;;14978:72;15007:7;15016:10;15036:4;15043:6;14978:28;:72::i;:::-;15097:7;::::0;15119:16:::2;::::0;15276:26:::2;::::0;;::::2;;::::0;;;:17:::2;:26;::::0;;;;;;;;:34;15068:388;;10763:25:1;;;10804:18;;;10797:34;;;;10928:15;;;10908:18;;;10901:43;15251:10:0::2;10975:2:1::0;10960:18;;10953:43;15276:34:0;::::2;11027:3:1::0;11012:19;;11005:44;11080:3;11065:19;;11058:44;11133:3;11118:19;;11111:35;;;11165:18;11220:15;;;11214:3;11199:19;;11192:44;11273:15;;;11267:3;11252:19;;11245:44;11326:15;;11320:3;11305:19;;11298:44;15068:388:0::2;::::0;10750:3:1;10735:19;15068:388:0::2;;;;;;;15489:1;15469:16;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;4112:20:0::1;::::0;-1:-1:-1;5415:11:0;:18;;;;;;;;5231:210;4112:20:::1;12635:2863:::0;;;;;;;:::o;20468:170::-;20560:16;;;;;;;17478:31;20560:16;17478;:31::i;:::-;17464:45;;:10;:45;;;17456:82;;;;;;;4354:2:1;17456:82:0;;;4336:21:1;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;17456:82:0;4152:348:1;17456:82:0;20589:41:::1;20610:19;20589:20;:41::i;17808:154::-:0;17876:17;17926:27;17600:42;17934:9;17926:27;:::i;10000:201::-;10086:20;:46;;;;;;;;;;;;;10148:45;;2842:50:1;;;10148:45:0;;2830:2:1;2815:18;10148:45:0;;;;;;;10000:201;:::o;10628:458::-;10792:196;;;;;;;;10837:7;10792:196;;;;;;10873:12;10792:196;;;;;;10923:16;:14;:16::i;:::-;10792:196;;;;;;10972:4;10792:196;;;;;;;10763:26;;;;-1:-1:-1;10763:26:0;;;:17;:26;;;;;;;:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11006:72;11021:7;10763:26;11046:16;:14;:16::i;:::-;11006:72;;;11991:42:1;12060:15;;;12042:34;;12112:15;;;12107:2;12092:18;;12085:43;12176:18;12164:31;;;12144:18;;;12137:59;12232:15;;;12227:2;12212:18;;12205:43;11968:3;11953:19;11006:72:0;;;;;;;10628:458;;;:::o;11358:212::-;11445:26;;;;;;;:17;:26;;;;;;;;;:42;;:60;;;;;;;;;;;;;;;;;;11521:41;;12427:74:1;;;12517:18;;;12510:50;11521:41:0;;12400:18:1;11521:41:0;;;;;;;11358:212;;:::o;16127:194::-;16293:20;;16249:26;;;16206:4;16249:26;;;:17;:26;;;;;16293:20;16249:41;;16206:4;;16249:64;;16293:20;;;;;16249:41;;;;;:64;:::i;:::-;16230:83;;:16;:14;:16::i;:::-;:83;;16127:194;-1:-1:-1;;16127:194:0:o;4887:189::-;5021:11;;;;;;;5013:55;;;;;;;12773:2:1;5013:55:0;;;12755:21:1;12812:2;12792:18;;;12785:30;12851:33;12831:18;;;12824:61;12902:18;;5013:55:0;12571:355:1;5013:55:0;4887:189::o;5752:495::-;6023:51;;;6012:10;13212:15:1;;;6023:51:0;;;13194:34:1;13264:15;;;13244:18;;;13237:43;13296:18;;;;13289:34;;;6023:51:0;;;;;;;;;;13106:18:1;;;;6023:51:0;;;;;;;;;;;;;6012:63;;-1:-1:-1;;;;6012:10:0;;;;:63;;6023:51;6012:63;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5976:99;;;;6108:7;:57;;;;-1:-1:-1;6120:11:0;;:16;;:44;;;6151:4;6140:24;;;;;;;;;;;;:::i;:::-;6086:153;;;;;;;14065:2:1;6086:153:0;;;14047:21:1;14104:2;14084:18;;;14077:30;14143:34;14123:18;;;14116:62;14214:16;14194:18;;;14187:44;14248:19;;6086:153:0;13863:410:1;6086:153:0;5886:361;;5752:495;;;;:::o;24291:244::-;24378:33;;;24370:59;;;;;;;14480:2:1;24370:59:0;;;14462:21:1;14519:2;14499:18;;;14492:30;14558:15;14538:18;;;14531:43;14591:18;;24370:59:0;14278:337:1;24370:59:0;24440:16;:38;;;;;;;;;;;;;;;;;;;24494:33;;24510:16;;;;24494:33;;-1:-1:-1;;24494:33:0;24291:244;:::o;245:180:1:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:1;;245:180;-1:-1:-1;245:180:1:o;612:171::-;679:20;;739:18;728:30;;718:41;;708:69;;773:1;770;763:12;708:69;612:171;;;:::o;788:184::-;846:6;899:2;887:9;878:7;874:23;870:32;867:52;;;915:1;912;905:12;867:52;938:28;956:9;938:28;:::i;:::-;928:38;788:184;-1:-1:-1;;;788:184:1:o;977:196::-;1045:20;;1105:42;1094:54;;1084:65;;1074:93;;1163:1;1160;1153:12;1178:334;1255:6;1263;1271;1324:2;1312:9;1303:7;1299:23;1295:32;1292:52;;;1340:1;1337;1330:12;1292:52;1363:29;1382:9;1363:29;:::i;:::-;1353:39;;1411:38;1445:2;1434:9;1430:18;1411:38;:::i;:::-;1401:48;;1468:38;1502:2;1491:9;1487:18;1468:38;:::i;:::-;1458:48;;1178:334;;;;;:::o;1517:118::-;1603:5;1596:13;1589:21;1582:5;1579:32;1569:60;;1625:1;1622;1615:12;1569:60;1517:118;:::o;1640:315::-;1705:6;1713;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;1805:29;1824:9;1805:29;:::i;:::-;1795:39;;1884:2;1873:9;1869:18;1856:32;1897:28;1919:5;1897:28;:::i;:::-;1944:5;1934:15;;;1640:315;;;;;:::o;1960:186::-;2019:6;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2111:29;2130:9;2111:29;:::i;2343:350::-;2410:6;2418;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2510:29;2529:9;2510:29;:::i;:::-;2500:39;;2589:2;2578:9;2574:18;2561:32;2633:10;2626:5;2622:22;2615:5;2612:33;2602:61;;2659:1;2656;2649:12;2903:547;3004:6;3012;3020;3028;3036;3044;3097:3;3085:9;3076:7;3072:23;3068:33;3065:53;;;3114:1;3111;3104:12;3065:53;3137:29;3156:9;3137:29;:::i;:::-;3127:39;;3185:38;3219:2;3208:9;3204:18;3185:38;:::i;:::-;3175:48;;3270:2;3259:9;3255:18;3242:32;3232:42;;3293:37;3326:2;3315:9;3311:18;3293:37;:::i;:::-;3283:47;;3349:38;3382:3;3371:9;3367:19;3349:38;:::i;:::-;3339:48;;3406:38;3439:3;3428:9;3424:19;3406:38;:::i;:::-;3396:48;;2903:547;;;;;;;;:::o;3963:184::-;4033:6;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;-1:-1:-1;4125:16:1;;3963:184;-1:-1:-1;3963:184:1:o;5857:::-;5909:77;5906:1;5899:88;6006:4;6003:1;5996:15;6030:4;6027:1;6020:15;6046:258;6118:1;6128:113;6142:6;6139:1;6136:13;6128:113;;;6218:11;;;6212:18;6199:11;;;6192:39;6164:2;6157:10;6128:113;;;6259:6;6256:1;6253:13;6250:48;;;-1:-1:-1;;6294:1:1;6276:16;;6269:27;6046:258::o;6309:942::-;6388:6;6441:2;6429:9;6420:7;6416:23;6412:32;6409:52;;;6457:1;6454;6447:12;6409:52;6490:9;6484:16;6519:18;6560:2;6552:6;6549:14;6546:34;;;6576:1;6573;6566:12;6546:34;6614:6;6603:9;6599:22;6589:32;;6659:7;6652:4;6648:2;6644:13;6640:27;6630:55;;6681:1;6678;6671:12;6630:55;6710:2;6704:9;6732:2;6728;6725:10;6722:36;;;6738:18;;:::i;:::-;6872:2;6866:9;6934:4;6926:13;;6777:66;6922:22;;;6946:2;6918:31;6914:40;6902:53;;;6970:18;;;6990:22;;;6967:46;6964:72;;;7016:18;;:::i;:::-;7056:10;7052:2;7045:22;7091:2;7083:6;7076:18;7131:7;7126:2;7121;7117;7113:11;7109:20;7106:33;7103:53;;;7152:1;7149;7142:12;7103:53;7165:55;7217:2;7212;7204:6;7200:15;7195:2;7191;7187:11;7165:55;:::i;:::-;7239:6;6309:942;-1:-1:-1;;;;;;;6309:942:1:o;8993:184::-;9045:77;9042:1;9035:88;9142:4;9139:1;9132:15;9166:4;9163:1;9156:15;9182:229;9221:4;9250:18;9318:10;;;;9288;;9340:12;;;9337:38;;;9355:18;;:::i;:::-;9392:13;;9182:229;-1:-1:-1;;;9182:229:1:o;9416:236::-;9455:3;9483:18;9528:2;9525:1;9521:10;9558:2;9555:1;9551:10;9589:3;9585:2;9581:12;9576:3;9573:21;9570:47;;;9597:18;;:::i;:::-;9633:13;;9416:236;-1:-1:-1;;;;9416:236:1:o;11353:128::-;11393:3;11424:1;11420:6;11417:1;11414:13;11411:39;;;11430:18;;:::i;:::-;-1:-1:-1;11466:9:1;;11353:128::o;11486:261::-;11526:3;11554:42;11623:2;11620:1;11616:10;11653:2;11650:1;11646:10;11684:3;11680:2;11676:12;11671:3;11668:21;11665:47;;;11692:18;;:::i;13334:274::-;13463:3;13501:6;13495:13;13517:53;13563:6;13558:3;13551:4;13543:6;13539:17;13517:53;:::i;:::-;13586:16;;;;;13334:274;-1:-1:-1;;13334:274:1:o;13613:245::-;13680:6;13733:2;13721:9;13712:7;13708:23;13704:32;13701:52;;;13749:1;13746;13739:12;13701:52;13781:9;13775:16;13800:28;13822:5;13800:28;:::i
Swarm Source
ipfs://5eee84fe56e25398ddd797a5a280524411fb09a74a7d491ae7f2e3ac94b2e99c
Loading...
Loading
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.