Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Initialize | 9211285 | 61 days ago | IN | 0 ETH | 0.00000008 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
To
|
Amount
|
||
|---|---|---|---|---|---|---|---|
| Send Message | 9638593 | 1 hr ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9638593 | 1 hr ago | 0.05 ETH | ||||
| Send Message | 9638545 | 1 hr ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9638545 | 1 hr ago | 0.05 ETH | ||||
| Send Message | 9638499 | 2 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9638499 | 2 hrs ago | 0.05 ETH | ||||
| Send Message | 9638088 | 3 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9638088 | 3 hrs ago | 0.05 ETH | ||||
| Send Message | 9638044 | 3 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9638044 | 3 hrs ago | 0.05 ETH | ||||
| Send Message | 9637994 | 3 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9637994 | 3 hrs ago | 0.05 ETH | ||||
| Send Message | 9637608 | 5 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9637608 | 5 hrs ago | 0.05 ETH | ||||
| Send Message | 9637562 | 5 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9637562 | 5 hrs ago | 0.05 ETH | ||||
| Send Message | 9637099 | 7 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9637099 | 7 hrs ago | 0.05 ETH | ||||
| Send Message | 9637051 | 7 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9637051 | 7 hrs ago | 0.05 ETH | ||||
| Send Message | 9636486 | 9 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9636486 | 9 hrs ago | 0.05 ETH | ||||
| Send Message | 9636068 | 10 hrs ago | 0.05 ETH | ||||
| Receive Giga Roo... | 9636068 | 10 hrs ago | 0.05 ETH | ||||
| Send Message | 9636024 | 10 hrs ago | 0.05 ETH |
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x37C872EF...f9e110BBE The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
L1ScrollBridgeAdapter
Compiler Version
v0.8.29+commit.ab55807c
Optimization Enabled:
Yes with 1000 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.29;
import {ILocalRootProvider, IGigaRootRecipient, IGigaRootProvider} from "../interfaces/IRootMessengers.sol";
import {IL1BridgeAdapter} from "../interfaces/IL1BridgeAdapter.sol";
import {IL1ScrollMessenger} from "@scroll-tech/contracts/L1/IL1ScrollMessenger.sol";
// no IGigaRootRecipient because we have L1SLOAD!
contract L1ScrollBridgeAdapter is IL1BridgeAdapter, ILocalRootProvider, IGigaRootRecipient {
modifier onlyGigaBridge() {
require(msg.sender == gigaBridge, "Not gigaBridge");
_; // what is that?
}
modifier onlyDeployer() {
require(msg.sender == deployer, "Not the deployer");
_; // what is that?
}
address public l2ScrollBridgeAdapter;
// most recent warp toad state root from the L2
uint256 public mostRecentL2Root;
// the L2 block that the most recent L2 root came from
uint256 public mostRecentL2RootBlockNumber;
address public gigaBridge;
address deployer;
address public l1ScrollMessenger;
bool isInitialized = false;
constructor(address _l1ScrollMessenger ) {
deployer = msg.sender;
l1ScrollMessenger = _l1ScrollMessenger;
}
function initialize(
address _l2ScrollBridgeAdapter,
address _gigaRootBridge
) external onlyDeployer() {
require(isInitialized == false, "cant initialize only once");
isInitialized = true;
l2ScrollBridgeAdapter = _l2ScrollBridgeAdapter;
gigaBridge = _gigaRootBridge;
}
function getNewRootFromL2(uint256 _l2Root, uint256 _l2BlockNumber) external {
require(msg.sender == l1ScrollMessenger,"function not called by l1ScrollMessenger");
require(l2ScrollBridgeAdapter == IL1ScrollMessenger(l1ScrollMessenger).xDomainMessageSender(),"contract messaging from L2 is not the L2ScrollBridgeAdapter");
if(mostRecentL2RootBlockNumber <= _l2BlockNumber) {
emit ReceivedNewL2Root(_l2Root, _l2BlockNumber);
mostRecentL2Root = _l2Root;
mostRecentL2RootBlockNumber = _l2BlockNumber;
}
}
function receiveGigaRoot(
uint256 _newGigaRoot
) external payable onlyGigaBridge {
_bridgeGigaRootToL2(_newGigaRoot, 2000000);
}
// just incase the hardcoded gaslimit fails
function receiveGigaRoot(
uint256 _newGigaRoot,
uint256 _gasLimit
) external payable {
_bridgeGigaRootToL2(_newGigaRoot, _gasLimit);
}
function _bridgeGigaRootToL2(uint256 _newGigaRoot, uint256 _gasLimit) internal {
// uint256 _newGigaRoot = IGigaRootProvider(gigaBridge).gigaRoot();
// sendMessage is able to execute any function by encoding the abi using the encodeWithSignature function
//IScrollMessenger(l1ScrollMessenger).sendMessage{value: msg.value}(
IL1ScrollMessenger(l1ScrollMessenger).sendMessage{value: msg.value}( // can this be 0?? or can we pay for some relayer?? check docs!
l2ScrollBridgeAdapter,
0,
abi.encodeWithSignature(
"receiveGigaRoot(uint256)",
_newGigaRoot
),
_gasLimit,
tx.origin // refund goes to the eoa initiating the tx
);
}
function getLocalRootAndBlock() view external returns (uint256, uint256) {
require(
mostRecentL2Root > 0,
"An L2 root hasn't yet been bridged to this contract. refreshRoot must be called."
);
require(
mostRecentL2RootBlockNumber > 0,
"An L2 root hasn't yet been bridged to this contract. refreshRoot must be called."
);
return (mostRecentL2Root, mostRecentL2RootBlockNumber);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import {IScrollMessenger} from "../libraries/IScrollMessenger.sol";
interface IL1ScrollMessenger is IScrollMessenger {
/**********
* Events *
**********/
/// @notice Emitted when the maximum number of times each message can be replayed is updated.
/// @param oldMaxReplayTimes The old maximum number of times each message can be replayed.
/// @param newMaxReplayTimes The new maximum number of times each message can be replayed.
event UpdateMaxReplayTimes(uint256 oldMaxReplayTimes, uint256 newMaxReplayTimes);
/***********
* Structs *
***********/
struct L2MessageProof {
// The index of the batch where the message belongs to.
uint256 batchIndex;
// Concatenation of merkle proof for withdraw merkle trie.
bytes merkleProof;
}
/*****************************
* Public Mutating Functions *
*****************************/
/// @notice Relay a L2 => L1 message with message proof.
/// @param from The address of the sender of the message.
/// @param to The address of the recipient of the message.
/// @param value The msg.value passed to the message call.
/// @param nonce The nonce of the message to avoid replay attack.
/// @param message The content of the message.
/// @param proof The proof used to verify the correctness of the transaction.
function relayMessageWithProof(
address from,
address to,
uint256 value,
uint256 nonce,
bytes memory message,
L2MessageProof memory proof
) external;
/// @notice Replay an existing message.
/// @param from The address of the sender of the message.
/// @param to The address of the recipient of the message.
/// @param value The msg.value passed to the message call.
/// @param messageNonce The nonce for the message to replay.
/// @param message The content of the message.
/// @param newGasLimit New gas limit to be used for this message.
/// @param refundAddress The address of account who will receive the refunded fee.
function replayMessage(
address from,
address to,
uint256 value,
uint256 messageNonce,
bytes memory message,
uint32 newGasLimit,
address refundAddress
) external payable;
/// @notice Drop a skipped message.
/// @param from The address of the sender of the message.
/// @param to The address of the recipient of the message.
/// @param value The msg.value passed to the message call.
/// @param messageNonce The nonce for the message to drop.
/// @param message The content of the message.
function dropMessage(
address from,
address to,
uint256 value,
uint256 messageNonce,
bytes memory message
) external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
interface IScrollMessenger {
/**********
* Events *
**********/
/// @notice Emitted when a cross domain message is sent.
/// @param sender The address of the sender who initiates the message.
/// @param target The address of target contract to call.
/// @param value The amount of value passed to the target contract.
/// @param messageNonce The nonce of the message.
/// @param gasLimit The optional gas limit passed to L1 or L2.
/// @param message The calldata passed to the target contract.
event SentMessage(
address indexed sender,
address indexed target,
uint256 value,
uint256 messageNonce,
uint256 gasLimit,
bytes message
);
/// @notice Emitted when a cross domain message is relayed successfully.
/// @param messageHash The hash of the message.
event RelayedMessage(bytes32 indexed messageHash);
/// @notice Emitted when a cross domain message is failed to relay.
/// @param messageHash The hash of the message.
event FailedRelayedMessage(bytes32 indexed messageHash);
/**********
* Errors *
**********/
/// @dev Thrown when the given address is `address(0)`.
error ErrorZeroAddress();
/*************************
* Public View Functions *
*************************/
/// @notice Return the sender of a cross domain message.
function xDomainMessageSender() external view returns (address);
/*****************************
* Public Mutating Functions *
*****************************/
/// @notice Send cross chain message from L1 to L2 or L2 to L1.
/// @param target The address of account who receive the message.
/// @param value The amount of ether passed when call target contract.
/// @param message The content of the message.
/// @param gasLimit Gas limit required to complete the message relay on corresponding chain.
function sendMessage(
address target,
uint256 value,
bytes calldata message,
uint256 gasLimit
) external payable;
/// @notice Send cross chain message from L1 to L2 or L2 to L1.
/// @param target The address of account who receive the message.
/// @param value The amount of ether passed when call target contract.
/// @param message The content of the message.
/// @param gasLimit Gas limit required to complete the message relay on corresponding chain.
/// @param refundAddress The address of account who will receive the refunded fee.
function sendMessage(
address target,
uint256 value,
bytes calldata message,
uint256 gasLimit,
address refundAddress
) external payable;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.29;
interface IL1BridgeAdapter {
// gigaRoot is emitted as a bytes32 here because thats how it's recovered on the
// L2 side of this rootBridgeAdapter. Key and index are also used to
// retrieve this newGigaRoot on L2
event ReceivedNewL2Root(uint256 indexed newL2Root, uint256 l2Block);
// /**
// * @notice adds an L2 message which can only be consumed publicly on L1
// * @param _newGigaRoot - The new gigaRoot to send to L2 as a message
// */
// function receiveGigaRoot(
// uint256 _newGigaRoot
// ) external;
// function getLocalRootAndBlock() view external returns (uint256, uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.29;
interface IGigaRootProvider {
function sendGigaRoot(address _gigaRootRecipient) external payable;
function gigaRoot() external returns(uint256);
}
interface IGigaRootRecipient {
function receiveGigaRoot(uint256 _gigaRoot) payable external;
//function receiveGigaRoot(uint256 _gigaRoot, uint256 _gasLimit) payable external;
}
interface ILocalRootProvider {
function getLocalRootAndBlock() external returns (uint256, uint256);
}
interface ILocalRootRecipient {
//only gigaBridge does this
//function updateGigaRoot(address[] memory _localRootProvider) external;
}{
"optimizer": {
"enabled": true,
"runs": 1000
},
"evmVersion": "cancun",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"_l1ScrollMessenger","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newL2Root","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"l2Block","type":"uint256"}],"name":"ReceivedNewL2Root","type":"event"},{"inputs":[],"name":"getLocalRootAndBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_l2Root","type":"uint256"},{"internalType":"uint256","name":"_l2BlockNumber","type":"uint256"}],"name":"getNewRootFromL2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gigaBridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_l2ScrollBridgeAdapter","type":"address"},{"internalType":"address","name":"_gigaRootBridge","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"l1ScrollMessenger","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2ScrollBridgeAdapter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mostRecentL2Root","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mostRecentL2RootBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newGigaRoot","type":"uint256"}],"name":"receiveGigaRoot","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newGigaRoot","type":"uint256"},{"internalType":"uint256","name":"_gasLimit","type":"uint256"}],"name":"receiveGigaRoot","outputs":[],"stateMutability":"payable","type":"function"}]Contract Creation Code
0x60806040526005805460ff60a01b19169055348015601b575f5ffd5b5060405161096c38038061096c833981016040819052603891606a565b60048054336001600160a01b031991821617909155600580549091166001600160a01b03929092169190911790556095565b5f602082840312156079575f5ffd5b81516001600160a01b0381168114608e575f5ffd5b9392505050565b6108ca806100a25f395ff3fe6080604052600436106100ad575f3560e01c8063a98f704411610066578063ae5582fa1161004c578063ae5582fa1461018b578063df374165146101b4578063ea300187146101d3575f5ffd5b8063a98f70441461013f578063ac04371014610176575f5ffd5b80632f4eb62d116100965780632f4eb62d146100e557806345c8c2891461010d578063485cc95514610120575f5ffd5b8063010bb871146100b157806327e74ca3146100d2575b5f5ffd5b3480156100bc575f5ffd5b506100d06100cb36600461078d565b6101f1565b005b6100d06100e03660046107ad565b6103be565b3480156100f0575f5ffd5b506100fa60015481565b6040519081526020015b60405180910390f35b6100d061011b36600461078d565b610428565b34801561012b575f5ffd5b506100d061013a3660046107d8565b610432565b34801561014a575f5ffd5b5060055461015e906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b348015610181575f5ffd5b506100fa60025481565b348015610196575f5ffd5b5061019f610559565b60408051928352602083019190915201610104565b3480156101bf575f5ffd5b5060035461015e906001600160a01b031681565b3480156101de575f5ffd5b505f5461015e906001600160a01b031681565b6005546001600160a01b031633146102765760405162461bcd60e51b815260206004820152602860248201527f66756e6374696f6e206e6f742063616c6c6564206279206c315363726f6c6c4d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60055f9054906101000a90046001600160a01b03166001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ea919061080f565b5f546001600160a01b0390811691161461036c5760405162461bcd60e51b815260206004820152603b60248201527f636f6e7472616374206d6573736167696e672066726f6d204c32206973206e6f60448201527f7420746865204c325363726f6c6c427269646765416461707465720000000000606482015260840161026d565b80600254116103ba57817f475b5c7799f48003a7afb7bac86d23c4d2cfd499581b90657c981e4616318a2c826040516103a791815260200190565b60405180910390a2600182905560028190555b5050565b6003546001600160a01b031633146104185760405162461bcd60e51b815260206004820152600e60248201527f4e6f742067696761427269646765000000000000000000000000000000000000604482015260640161026d565b61042581621e84806106a1565b50565b6103ba82826106a1565b6004546001600160a01b0316331461048c5760405162461bcd60e51b815260206004820152601060248201527f4e6f7420746865206465706c6f79657200000000000000000000000000000000604482015260640161026d565b600554600160a01b900460ff16156104e65760405162461bcd60e51b815260206004820152601960248201527f63616e7420696e697469616c697a65206f6e6c79206f6e636500000000000000604482015260640161026d565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790555f80546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560038054929093169116179055565b5f5f5f600154116105f85760405162461bcd60e51b815260206004820152605060248201527f416e204c3220726f6f74206861736e277420796574206265656e20627269646760448201527f656420746f207468697320636f6e74726163742e2072656672657368526f6f7460648201527f206d7573742062652063616c6c65642e00000000000000000000000000000000608482015260a40161026d565b5f600254116106955760405162461bcd60e51b815260206004820152605060248201527f416e204c3220726f6f74206861736e277420796574206265656e20627269646760448201527f656420746f207468697320636f6e74726163742e2072656672657368526f6f7460648201527f206d7573742062652063616c6c65642e00000000000000000000000000000000608482015260a40161026d565b50506001546002549091565b6005545f805460408051602480820188905282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27e74ca30000000000000000000000000000000000000000000000000000000017905290517f5f7b15770000000000000000000000000000000000000000000000000000000081526001600160a01b0394851694635f7b157794349461075b9492169290919088903290600401610831565b5f604051808303818588803b158015610772575f5ffd5b505af1158015610784573d5f5f3e3d5ffd5b50505050505050565b5f5f6040838503121561079e575f5ffd5b50508035926020909101359150565b5f602082840312156107bd575f5ffd5b5035919050565b6001600160a01b0381168114610425575f5ffd5b5f5f604083850312156107e9575f5ffd5b82356107f4816107c4565b91506020830135610804816107c4565b809150509250929050565b5f6020828403121561081f575f5ffd5b815161082a816107c4565b9392505050565b6001600160a01b038616815284602082015260a060408201525f84518060a0840152806020870160c085015e5f60c0828501015260c0601f19601f8301168401019150508360608301526001600160a01b0383166080830152969550505050505056fea2646970667358221220b9c249f3babb8761d4336ec9a37e40f6be6f753937cb19abc8c359cb52b8311e64736f6c634300081d003300000000000000000000000050c7d3e7f7c656493d1d76aaa1a836cedfcbb16a
Deployed Bytecode
0x6080604052600436106100ad575f3560e01c8063a98f704411610066578063ae5582fa1161004c578063ae5582fa1461018b578063df374165146101b4578063ea300187146101d3575f5ffd5b8063a98f70441461013f578063ac04371014610176575f5ffd5b80632f4eb62d116100965780632f4eb62d146100e557806345c8c2891461010d578063485cc95514610120575f5ffd5b8063010bb871146100b157806327e74ca3146100d2575b5f5ffd5b3480156100bc575f5ffd5b506100d06100cb36600461078d565b6101f1565b005b6100d06100e03660046107ad565b6103be565b3480156100f0575f5ffd5b506100fa60015481565b6040519081526020015b60405180910390f35b6100d061011b36600461078d565b610428565b34801561012b575f5ffd5b506100d061013a3660046107d8565b610432565b34801561014a575f5ffd5b5060055461015e906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b348015610181575f5ffd5b506100fa60025481565b348015610196575f5ffd5b5061019f610559565b60408051928352602083019190915201610104565b3480156101bf575f5ffd5b5060035461015e906001600160a01b031681565b3480156101de575f5ffd5b505f5461015e906001600160a01b031681565b6005546001600160a01b031633146102765760405162461bcd60e51b815260206004820152602860248201527f66756e6374696f6e206e6f742063616c6c6564206279206c315363726f6c6c4d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60055f9054906101000a90046001600160a01b03166001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ea919061080f565b5f546001600160a01b0390811691161461036c5760405162461bcd60e51b815260206004820152603b60248201527f636f6e7472616374206d6573736167696e672066726f6d204c32206973206e6f60448201527f7420746865204c325363726f6c6c427269646765416461707465720000000000606482015260840161026d565b80600254116103ba57817f475b5c7799f48003a7afb7bac86d23c4d2cfd499581b90657c981e4616318a2c826040516103a791815260200190565b60405180910390a2600182905560028190555b5050565b6003546001600160a01b031633146104185760405162461bcd60e51b815260206004820152600e60248201527f4e6f742067696761427269646765000000000000000000000000000000000000604482015260640161026d565b61042581621e84806106a1565b50565b6103ba82826106a1565b6004546001600160a01b0316331461048c5760405162461bcd60e51b815260206004820152601060248201527f4e6f7420746865206465706c6f79657200000000000000000000000000000000604482015260640161026d565b600554600160a01b900460ff16156104e65760405162461bcd60e51b815260206004820152601960248201527f63616e7420696e697469616c697a65206f6e6c79206f6e636500000000000000604482015260640161026d565b600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b1790555f80546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560038054929093169116179055565b5f5f5f600154116105f85760405162461bcd60e51b815260206004820152605060248201527f416e204c3220726f6f74206861736e277420796574206265656e20627269646760448201527f656420746f207468697320636f6e74726163742e2072656672657368526f6f7460648201527f206d7573742062652063616c6c65642e00000000000000000000000000000000608482015260a40161026d565b5f600254116106955760405162461bcd60e51b815260206004820152605060248201527f416e204c3220726f6f74206861736e277420796574206265656e20627269646760448201527f656420746f207468697320636f6e74726163742e2072656672657368526f6f7460648201527f206d7573742062652063616c6c65642e00000000000000000000000000000000608482015260a40161026d565b50506001546002549091565b6005545f805460408051602480820188905282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27e74ca30000000000000000000000000000000000000000000000000000000017905290517f5f7b15770000000000000000000000000000000000000000000000000000000081526001600160a01b0394851694635f7b157794349461075b9492169290919088903290600401610831565b5f604051808303818588803b158015610772575f5ffd5b505af1158015610784573d5f5f3e3d5ffd5b50505050505050565b5f5f6040838503121561079e575f5ffd5b50508035926020909101359150565b5f602082840312156107bd575f5ffd5b5035919050565b6001600160a01b0381168114610425575f5ffd5b5f5f604083850312156107e9575f5ffd5b82356107f4816107c4565b91506020830135610804816107c4565b809150509250929050565b5f6020828403121561081f575f5ffd5b815161082a816107c4565b9392505050565b6001600160a01b038616815284602082015260a060408201525f84518060a0840152806020870160c085015e5f60c0828501015260c0601f19601f8301168401019150508360608301526001600160a01b0383166080830152969550505050505056fea2646970667358221220b9c249f3babb8761d4336ec9a37e40f6be6f753937cb19abc8c359cb52b8311e64736f6c634300081d0033
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.