Overview
ETH Balance
0 ETH
Eth Value
$0.00
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
There are no matching entriesUpdate your filters to view other transactions | |||||||||
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ChainStorageContainer
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
/* Library Imports */
import { Lib_Buffer } from "../../libraries/utils/Lib_Buffer.sol";
import { Lib_AddressResolver } from "../../libraries/resolver/Lib_AddressResolver.sol";
/* Interface Imports */
import { IChainStorageContainer } from "./IChainStorageContainer.sol";
/**
* @title ChainStorageContainer
* @dev The Chain Storage Container provides its owner contract with read, write and delete
* functionality. This provides gas efficiency gains by enabling it to overwrite storage slots which
* can no longer be used in a fraud proof due to the fraud window having passed, and the associated
* chain state or transactions being finalized.
* Three distinct Chain Storage Containers will be deployed on Layer 1:
* 1. Stores transaction batches for the Canonical Transaction Chain
* 2. Stores queued transactions for the Canonical Transaction Chain
* 3. Stores chain state batches for the State Commitment Chain
*
* Runtime target: EVM
*/
contract ChainStorageContainer is IChainStorageContainer, Lib_AddressResolver {
/*************
* Libraries *
*************/
using Lib_Buffer for Lib_Buffer.Buffer;
/**************
* constant *
**************/
uint256 constant public DEFAULT_CHAINID = 1088;
/*************
* Variables *
*************/
string public owner;
mapping(uint256=>Lib_Buffer.Buffer) internal buffers;
/***************
* Constructor *
***************/
/**
* @param _libAddressManager Address of the Address Manager.
* @param _owner Name of the contract that owns this container (will be resolved later).
*/
constructor(address _libAddressManager, string memory _owner)
Lib_AddressResolver(_libAddressManager)
{
owner = _owner;
}
/**********************
* Function Modifiers *
**********************/
modifier onlyOwner() {
require(
msg.sender == resolve(owner),
"ChainStorageContainer: Function can only be called by the owner."
);
_;
}
/********************
* Public Functions *
********************/
/**
* @inheritdoc IChainStorageContainer
*/
function setGlobalMetadata(bytes27 _globalMetadata) public onlyOwner {
return setGlobalMetadataByChainId(DEFAULT_CHAINID,_globalMetadata);
}
function setByChainId(
uint256 _chainId,
uint256 _index,
bytes32 _object
)
override
public
onlyOwner
{
buffers[_chainId].set(_index, _object);
}
/**
* @inheritdoc IChainStorageContainer
*/
function setGlobalMetadataByChainId(
uint256 _chainId,
bytes27 _globalMetadata
)
override
public
onlyOwner
{
return buffers[_chainId].setExtraData(_globalMetadata);
}
/**
* @inheritdoc IChainStorageContainer
*/
function getGlobalMetadata() public view returns (bytes27) {
return getGlobalMetadataByChainId(DEFAULT_CHAINID);
}
function getGlobalMetadataByChainId(uint256 _chainId)
override
public
view
returns (
bytes27
)
{
return buffers[_chainId].getExtraData();
}
/**
* @inheritdoc IChainStorageContainer
*/
function length() public view returns (uint256) {
return lengthByChainId(DEFAULT_CHAINID);
}
function lengthByChainId(uint256 _chainId)
override
public
view
returns (
uint256
)
{
return uint256(buffers[_chainId].getLength());
}
/**
* @inheritdoc IChainStorageContainer
*/
function push(bytes32 _object) public onlyOwner {
pushByChainId(DEFAULT_CHAINID,_object);
}
function pushByChainId(
uint256 _chainId,
bytes32 _object
)
override
public
onlyOwner
{
buffers[_chainId].push(_object);
}
/**
* @inheritdoc IChainStorageContainer
*/
function push(bytes32 _object, bytes27 _globalMetadata) public onlyOwner {
pushByChainId(DEFAULT_CHAINID,_object,_globalMetadata);
}
function pushByChainId(
uint256 _chainId,
bytes32 _object,
bytes27 _globalMetadata
)
override
public
onlyOwner
{
buffers[_chainId].push(_object, _globalMetadata);
}
/**
* @inheritdoc IChainStorageContainer
*/
function get(uint256 _index) public view returns (bytes32) {
return getByChainId(DEFAULT_CHAINID,_index);
}
function getByChainId(
uint256 _chainId,
uint256 _index
)
override
public
view
returns (
bytes32
)
{
return buffers[_chainId].get(uint40(_index));
}
/**
* @inheritdoc IChainStorageContainer
*/
function deleteElementsAfterInclusive(uint256 _index) public onlyOwner {
deleteElementsAfterInclusiveByChainId(DEFAULT_CHAINID,_index);
}
function deleteElementsAfterInclusiveByChainId(
uint256 _chainId,
uint256 _index
)
override
public
onlyOwner
{
buffers[_chainId].deleteElementsAfterInclusive(
uint40(_index)
);
}
/**
* @inheritdoc IChainStorageContainer
*/
function deleteElementsAfterInclusive(uint256 _index, bytes27 _globalMetadata)
public
onlyOwner
{
deleteElementsAfterInclusiveByChainId(DEFAULT_CHAINID,_index,_globalMetadata);
}
function deleteElementsAfterInclusiveByChainId(
uint256 _chainId,
uint256 _index,
bytes27 _globalMetadata
)
override
public
onlyOwner
{
buffers[_chainId].deleteElementsAfterInclusive(
uint40(_index),
_globalMetadata
);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
/**
* @title Lib_Buffer
* @dev This library implements a bytes32 storage array with some additional gas-optimized
* functionality. In particular, it encodes its length as a uint40, and tightly packs this with an
* overwritable "extra data" field so we can store more information with a single SSTORE.
*/
library Lib_Buffer {
/*************
* Libraries *
*************/
using Lib_Buffer for Buffer;
/***********
* Structs *
***********/
struct Buffer {
bytes32 context;
mapping(uint256 => bytes32) buf;
}
struct BufferContext {
// Stores the length of the array. Uint40 is way more elements than we'll ever reasonably
// need in an array and we get an extra 27 bytes of extra data to play with.
uint40 length;
// Arbitrary extra data that can be modified whenever the length is updated. Useful for
// squeezing out some gas optimizations.
bytes27 extraData;
}
/**********************
* Internal Functions *
**********************/
/**
* Pushes a single element to the buffer.
* @param _self Buffer to access.
* @param _value Value to push to the buffer.
* @param _extraData Global extra data.
*/
function push(
Buffer storage _self,
bytes32 _value,
bytes27 _extraData
) internal {
BufferContext memory ctx = _self.getContext();
_self.buf[ctx.length] = _value;
// Bump the global index and insert our extra data, then save the context.
ctx.length++;
ctx.extraData = _extraData;
_self.setContext(ctx);
}
/**
* Pushes a single element to the buffer.
* @param _self Buffer to access.
* @param _value Value to push to the buffer.
*/
function push(Buffer storage _self, bytes32 _value) internal {
BufferContext memory ctx = _self.getContext();
_self.push(_value, ctx.extraData);
}
/**
* Retrieves an element from the buffer.
* @param _self Buffer to access.
* @param _index Element index to retrieve.
* @return Value of the element at the given index.
*/
function get(Buffer storage _self, uint256 _index) internal view returns (bytes32) {
BufferContext memory ctx = _self.getContext();
require(_index < ctx.length, "Index out of bounds.");
return _self.buf[_index];
}
/**
* Deletes all elements after (and including) a given index.
* @param _self Buffer to access.
* @param _index Index of the element to delete from (inclusive).
* @param _extraData Optional global extra data.
*/
function deleteElementsAfterInclusive(
Buffer storage _self,
uint40 _index,
bytes27 _extraData
) internal {
BufferContext memory ctx = _self.getContext();
require(_index < ctx.length, "Index out of bounds.");
// Set our length and extra data, save the context.
ctx.length = _index;
ctx.extraData = _extraData;
_self.setContext(ctx);
}
/**
* Deletes all elements after (and including) a given index.
* @param _self Buffer to access.
* @param _index Index of the element to delete from (inclusive).
*/
function deleteElementsAfterInclusive(Buffer storage _self, uint40 _index) internal {
BufferContext memory ctx = _self.getContext();
_self.deleteElementsAfterInclusive(_index, ctx.extraData);
}
/**
* Retrieves the current global index.
* @param _self Buffer to access.
* @return Current global index.
*/
function getLength(Buffer storage _self) internal view returns (uint40) {
BufferContext memory ctx = _self.getContext();
return ctx.length;
}
/**
* Changes current global extra data.
* @param _self Buffer to access.
* @param _extraData New global extra data.
*/
function setExtraData(Buffer storage _self, bytes27 _extraData) internal {
BufferContext memory ctx = _self.getContext();
ctx.extraData = _extraData;
_self.setContext(ctx);
}
/**
* Retrieves the current global extra data.
* @param _self Buffer to access.
* @return Current global extra data.
*/
function getExtraData(Buffer storage _self) internal view returns (bytes27) {
BufferContext memory ctx = _self.getContext();
return ctx.extraData;
}
/**
* Sets the current buffer context.
* @param _self Buffer to access.
* @param _ctx Current buffer context.
*/
function setContext(Buffer storage _self, BufferContext memory _ctx) internal {
bytes32 context;
uint40 length = _ctx.length;
bytes27 extraData = _ctx.extraData;
assembly {
context := length
context := or(context, extraData)
}
if (_self.context != context) {
_self.context = context;
}
}
/**
* Retrieves the current buffer context.
* @param _self Buffer to access.
* @return Current buffer context.
*/
function getContext(Buffer storage _self) internal view returns (BufferContext memory) {
bytes32 context = _self.context;
uint40 length;
bytes27 extraData;
assembly {
length := and(
context,
0x000000000000000000000000000000000000000000000000000000FFFFFFFFFF
)
extraData := and(
context,
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
)
}
return BufferContext({ length: length, extraData: extraData });
}
/**
* set elements for a given index.
* @param _self Buffer to access.
* @param _index Index of the element to set.
* @param _value value to set
*/
function set(
Buffer storage _self,
uint256 _index,
bytes32 _value
)
internal
{
_self.buf[_index] = _value;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
/* Library Imports */
import { Lib_AddressManager } from "./Lib_AddressManager.sol";
/**
* @title Lib_AddressResolver
*/
abstract contract Lib_AddressResolver {
/*************
* Variables *
*************/
Lib_AddressManager public libAddressManager;
/***************
* Constructor *
***************/
/**
* @param _libAddressManager Address of the Lib_AddressManager.
*/
constructor(address _libAddressManager) {
libAddressManager = Lib_AddressManager(_libAddressManager);
}
/********************
* Public Functions *
********************/
/**
* Resolves the address associated with a given name.
* @param _name Name to resolve an address for.
* @return Address associated with the given name.
*/
function resolve(string memory _name) public view returns (address) {
return libAddressManager.getAddress(_name);
}
}// SPDX-License-Identifier: MIT
pragma solidity >0.5.0 <0.9.0;
/**
* @title IChainStorageContainer
*/
interface IChainStorageContainer {
/********************
* Public Functions *
********************/
/**
* Sets the container's global metadata field. We're using `bytes27` here because we use five
* bytes to maintain the length of the underlying data structure, meaning we have an extra
* 27 bytes to store arbitrary data.
* @param _globalMetadata New global metadata to set.
*/
function setGlobalMetadata(bytes27 _globalMetadata) external;
/**
* Retrieves the container's global metadata field.
* @return Container global metadata field.
*/
function getGlobalMetadata() external view returns (bytes27);
/**
* Retrieves the number of objects stored in the container.
* @return Number of objects in the container.
*/
function length() external view returns (uint256);
/**
* Pushes an object into the container.
* @param _object A 32 byte value to insert into the container.
*/
function push(bytes32 _object) external;
/**
* Pushes an object into the container. Function allows setting the global metadata since
* we'll need to touch the "length" storage slot anyway, which also contains the global
* metadata (it's an optimization).
* @param _object A 32 byte value to insert into the container.
* @param _globalMetadata New global metadata for the container.
*/
function push(bytes32 _object, bytes27 _globalMetadata) external;
/**
* Set an object into the container. Function allows setting the global metadata since
* we'll need to touch the "length" storage slot anyway, which also contains the global
* metadata (it's an optimization).
* @param _index position.
* @param _object A 32 byte value to insert into the container.
*/
function setByChainId(
uint256 _chainId,
uint256 _index,
bytes32 _object
)
external;
/**
* Retrieves an object from the container.
* @param _index Index of the particular object to access.
* @return 32 byte object value.
*/
function get(uint256 _index) external view returns (bytes32);
/**
* Removes all objects after and including a given index.
* @param _index Object index to delete from.
*/
function deleteElementsAfterInclusive(uint256 _index) external;
/**
* Removes all objects after and including a given index. Also allows setting the global
* metadata field.
* @param _index Object index to delete from.
* @param _globalMetadata New global metadata for the container.
*/
function deleteElementsAfterInclusive(uint256 _index, bytes27 _globalMetadata) external;
/**
* Sets the container's global metadata field. We're using `bytes27` here because we use five
* bytes to maintain the length of the underlying data structure, meaning we have an extra
* 27 bytes to store arbitrary data.
* @param _chainId identity for the l2 chain.
* @param _globalMetadata New global metadata to set.
*/
function setGlobalMetadataByChainId(
uint256 _chainId,
bytes27 _globalMetadata
)
external;
/**
* Retrieves the container's global metadata field.
* @param _chainId identity for the l2 chain.
* @return Container global metadata field.
*/
function getGlobalMetadataByChainId(
uint256 _chainId
)
external
view
returns (
bytes27
);
/**
* Retrieves the number of objects stored in the container.
* @param _chainId identity for the l2 chain.
* @return Number of objects in the container.
*/
function lengthByChainId(
uint256 _chainId
)
external
view
returns (
uint256
);
/**
* Pushes an object into the container.
* @param _chainId identity for the l2 chain.
* @param _object A 32 byte value to insert into the container.
*/
function pushByChainId(
uint256 _chainId,
bytes32 _object
)
external;
/**
* Pushes an object into the container. Function allows setting the global metadata since
* we'll need to touch the "length" storage slot anyway, which also contains the global
* metadata (it's an optimization).
* @param _chainId identity for the l2 chain.
* @param _object A 32 byte value to insert into the container.
* @param _globalMetadata New global metadata for the container.
*/
function pushByChainId(
uint256 _chainId,
bytes32 _object,
bytes27 _globalMetadata
)
external;
/**
* Retrieves an object from the container.
* @param _chainId identity for the l2 chain.
* @param _index Index of the particular object to access.
* @return 32 byte object value.
*/
function getByChainId(
uint256 _chainId,
uint256 _index
)
external
view
returns (
bytes32
);
/**
* Removes all objects after and including a given index.
* @param _chainId identity for the l2 chain.
* @param _index Object index to delete from.
*/
function deleteElementsAfterInclusiveByChainId(
uint256 _chainId,
uint256 _index
)
external;
/**
* Removes all objects after and including a given index. Also allows setting the global
* metadata field.
* @param _chainId identity for the l2 chain.
* @param _index Object index to delete from.
* @param _globalMetadata New global metadata for the container.
*/
function deleteElementsAfterInclusiveByChainId(
uint256 _chainId,
uint256 _index,
bytes27 _globalMetadata
)
external;
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
/* External Imports */
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
/**
* @title Lib_AddressManager
*/
contract Lib_AddressManager is Ownable {
/**********
* Events *
**********/
event AddressSet(string indexed _name, address _newAddress, address _oldAddress);
/*************
* Variables *
*************/
mapping(bytes32 => address) private addresses;
/********************
* Public Functions *
********************/
/**
* Changes the address associated with a particular name.
* @param _name String name to associate an address with.
* @param _address Address to associate with the name.
*/
function setAddress(string memory _name, address _address) external onlyOwner {
bytes32 nameHash = _getNameHash(_name);
address oldAddress = addresses[nameHash];
addresses[nameHash] = _address;
emit AddressSet(_name, _address, oldAddress);
}
/**
* Retrieves the address associated with a given name.
* @param _name Name to retrieve an address for.
* @return Address associated with the given name.
*/
function getAddress(string memory _name) external view returns (address) {
return addresses[_getNameHash(_name)];
}
/**********************
* Internal Functions *
**********************/
/**
* Computes the hash of a name.
* @param _name Name to compute a hash for.
* @return Hash of the given name.
*/
function _getNameHash(string memory _name) internal pure returns (bytes32) {
return keccak256(abi.encodePacked(_name));
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"optimizer": {
"enabled": true,
"runs": 10000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_libAddressManager","type":"address"},{"internalType":"string","name":"_owner","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DEFAULT_CHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes27","name":"_globalMetadata","type":"bytes27"}],"name":"deleteElementsAfterInclusive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"deleteElementsAfterInclusive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"deleteElementsAfterInclusiveByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes27","name":"_globalMetadata","type":"bytes27"}],"name":"deleteElementsAfterInclusiveByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"get","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getByChainId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalMetadata","outputs":[{"internalType":"bytes27","name":"","type":"bytes27"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"name":"getGlobalMetadataByChainId","outputs":[{"internalType":"bytes27","name":"","type":"bytes27"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"length","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"}],"name":"lengthByChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"libAddressManager","outputs":[{"internalType":"contract Lib_AddressManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_object","type":"bytes32"},{"internalType":"bytes27","name":"_globalMetadata","type":"bytes27"}],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_object","type":"bytes32"}],"name":"push","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"bytes32","name":"_object","type":"bytes32"}],"name":"pushByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"bytes32","name":"_object","type":"bytes32"},{"internalType":"bytes27","name":"_globalMetadata","type":"bytes27"}],"name":"pushByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"resolve","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes32","name":"_object","type":"bytes32"}],"name":"setByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes27","name":"_globalMetadata","type":"bytes27"}],"name":"setGlobalMetadata","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_chainId","type":"uint256"},{"internalType":"bytes27","name":"_globalMetadata","type":"bytes27"}],"name":"setGlobalMetadataByChainId","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620017f3380380620017f3833981016040819052620000349162000129565b600080546001600160a01b0319166001600160a01b0384161790558051620000649060019060208401906200006d565b50505062000266565b8280546200007b9062000229565b90600052602060002090601f0160209004810192826200009f5760008555620000ea565b82601f10620000ba57805160ff1916838001178555620000ea565b82800160010185558215620000ea579182015b82811115620000ea578251825591602001919060010190620000cd565b50620000f8929150620000fc565b5090565b5b80821115620000f85760008155600101620000fd565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200013d57600080fd5b82516001600160a01b03811681146200015557600080fd5b602084810151919350906001600160401b03808211156200017557600080fd5b818601915086601f8301126200018a57600080fd5b8151818111156200019f576200019f62000113565b604051601f8201601f19908116603f01168101908382118183101715620001ca57620001ca62000113565b816040528281528986848701011115620001e357600080fd5b600093505b82841015620002075784840186015181850187015292850192620001e8565b82841115620002195760008684830101525b8096505050505050509250929050565b600181811c908216806200023e57607f821691505b602082108114156200026057634e487b7160e01b600052602260045260246000fd5b50919050565b61157d80620002766000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063576f2588116100d8578063a5d829961161008c578063bc05257611610066578063bc0525761461031d578063ccf8f96914610330578063e6e436c01461033857600080fd5b8063a5d82996146102e4578063b15369c3146102f7578063b298e36b1461030a57600080fd5b806367d18b9b116100bd57806367d18b9b146102a95780638da5cb5b146102bc5780639507d39a146102d157600080fd5b8063576f25881461028d5780635bbbb7ed146102a057600080fd5b806329061de21161012f578063461a447811610114578063461a4478146102545780634651d91e146102675780634cd4d7691461027a57600080fd5b806329061de2146101fc578063299ca4781461020f57600080fd5b80632015276c116101605780632015276c146101ac57806324a49415146101bf57806324d72244146101e957600080fd5b8063167fd6811461017c5780631f7b6d3214610191575b600080fd5b61018f61018a36600461121d565b61034b565b005b610199610496565b6040519081526020015b60405180910390f35b61018f6101ba36600461121d565b6104a8565b6101d26101cd366004611249565b610567565b60405164ffffffffff1990911681526020016101a3565b61018f6101f736600461121d565b610584565b61018f61020a366004611262565b61064e565b60005461022f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a3565b61022f6102623660046112ac565b61070f565b61018f610275366004611249565b6107b6565b61018f61028836600461137b565b610874565b61019961029b366004611249565b61094b565b61019961044081565b6101996102b73660046113a7565b61096f565b6102c4610995565b6040516101a391906113c9565b6101996102df366004611249565b610a23565b61018f6102f23660046113a7565b610a31565b61018f6103053660046113a7565b610afb565b61018f610318366004611249565b610bc5565b61018f61032b36600461143c565b610c83565b6101d2610d4e565b61018f61034636600461143c565b610d5b565b6103de6001805461035b90611471565b80601f016020809104026020016040519081016040528092919081815260200182805461038790611471565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b505050505061070f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610485576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e60648201526084015b60405180910390fd5b6104926104408383610c83565b5050565b60006104a361044061094b565b905090565b6104b86001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055a576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b6104926104408383610d5b565b600081815260026020526040812061057e90610e26565b92915050565b6105946001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610636576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b60008281526002602052604090206104929082610e74565b61065e6001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610700576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b61070c61044082610584565b50565b600080546040517fbf40fac100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063bf40fac1906107669085906004016113c9565b60206040518083038186803b15801561077e57600080fd5b505afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e91906114c5565b6107c66001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610868576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b61070c61044082610a31565b6108846001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610926576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b600092835260026020908152604080852093855260019093019052912055565b505050565b600081815260026020526040812061096290610ed0565b64ffffffffff1692915050565b600082815260026020526040812061098e9064ffffffffff8416610f1b565b9392505050565b600180546109a290611471565b80601f01602080910402602001604051908101604052809291908181526020018280546109ce90611471565b8015610a1b5780601f106109f057610100808354040283529160200191610a1b565b820191906000526020600020905b8154815290600101906020018083116109fe57829003601f168201915b505050505081565b600061057e6104408361096f565b610a416001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae3576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b60008281526002602052604090206104929082610fd0565b610b0b6001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bad576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b6000828152600260205260409020610492908261102d565b610bd56001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c77576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b61070c61044082610afb565b610c936001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d35576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b600083815260026020526040902061094690838361108a565b60006104a3610440610567565b610d6b6001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0d576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b6000838152600260205260409020610946908383611157565b600080610e6983604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b602001519392505050565b6000610eb683604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b64ffffffffff1983166020820152905061094683826111e2565b600080610f1383604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b519392505050565b600080610f5e84604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b805190915064ffffffffff168310610fb85760405162461bcd60e51b815260206004820152601460248201527f496e646578206f7574206f6620626f756e64732e000000000000000000000000604482015260640161047c565b50506000908152600191909101602052604090205490565b600061101283604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b90506109468282602001518561108a9092919063ffffffff16565b600061106f83604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b9050610946828260200151856111579092919063ffffffff16565b60006110cc84604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b9050806000015164ffffffffff168364ffffffffff161061112f5760405162461bcd60e51b815260206004820152601460248201527f496e646578206f7574206f6620626f756e64732e000000000000000000000000604482015260640161047c565b64ffffffffff8316815264ffffffffff198216602082015261115184826111e2565b50505050565b600061119984604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b805164ffffffffff16600090815260018601602052604090208490558051909150816111c4826114fb565b64ffffffffff1690525064ffffffffff198216602082015261115184825b80516020820151835481831792919083146111fb578285555b5050505050565b803564ffffffffff198116811461121857600080fd5b919050565b6000806040838503121561123057600080fd5b8235915061124060208401611202565b90509250929050565b60006020828403121561125b57600080fd5b5035919050565b60006020828403121561127457600080fd5b61098e82611202565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156112be57600080fd5b813567ffffffffffffffff808211156112d657600080fd5b818401915084601f8301126112ea57600080fd5b8135818111156112fc576112fc61127d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156113425761134261127d565b8160405282815287602084870101111561135b57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060006060848603121561139057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156113ba57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156113f6578581018301518582016040015282016113da565b81811115611408576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060006060848603121561145157600080fd5b833592506020840135915061146860408501611202565b90509250925092565b600181811c9082168061148557607f821691505b602082108114156114bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156114d757600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461098e57600080fd5b600064ffffffffff8083168181141561153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600101939250505056fea2646970667358221220b340f85f3f92fa0203f0d140bfe0390a401f074bf584690395075846fa900cda64736f6c63430008090033000000000000000000000000918778e825747a892b17c66fe7d24c618262867d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001943616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063576f2588116100d8578063a5d829961161008c578063bc05257611610066578063bc0525761461031d578063ccf8f96914610330578063e6e436c01461033857600080fd5b8063a5d82996146102e4578063b15369c3146102f7578063b298e36b1461030a57600080fd5b806367d18b9b116100bd57806367d18b9b146102a95780638da5cb5b146102bc5780639507d39a146102d157600080fd5b8063576f25881461028d5780635bbbb7ed146102a057600080fd5b806329061de21161012f578063461a447811610114578063461a4478146102545780634651d91e146102675780634cd4d7691461027a57600080fd5b806329061de2146101fc578063299ca4781461020f57600080fd5b80632015276c116101605780632015276c146101ac57806324a49415146101bf57806324d72244146101e957600080fd5b8063167fd6811461017c5780631f7b6d3214610191575b600080fd5b61018f61018a36600461121d565b61034b565b005b610199610496565b6040519081526020015b60405180910390f35b61018f6101ba36600461121d565b6104a8565b6101d26101cd366004611249565b610567565b60405164ffffffffff1990911681526020016101a3565b61018f6101f736600461121d565b610584565b61018f61020a366004611262565b61064e565b60005461022f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a3565b61022f6102623660046112ac565b61070f565b61018f610275366004611249565b6107b6565b61018f61028836600461137b565b610874565b61019961029b366004611249565b61094b565b61019961044081565b6101996102b73660046113a7565b61096f565b6102c4610995565b6040516101a391906113c9565b6101996102df366004611249565b610a23565b61018f6102f23660046113a7565b610a31565b61018f6103053660046113a7565b610afb565b61018f610318366004611249565b610bc5565b61018f61032b36600461143c565b610c83565b6101d2610d4e565b61018f61034636600461143c565b610d5b565b6103de6001805461035b90611471565b80601f016020809104026020016040519081016040528092919081815260200182805461038790611471565b80156103d45780601f106103a9576101008083540402835291602001916103d4565b820191906000526020600020905b8154815290600101906020018083116103b757829003601f168201915b505050505061070f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610485576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e60648201526084015b60405180910390fd5b6104926104408383610c83565b5050565b60006104a361044061094b565b905090565b6104b86001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055a576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b6104926104408383610d5b565b600081815260026020526040812061057e90610e26565b92915050565b6105946001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610636576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b60008281526002602052604090206104929082610e74565b61065e6001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610700576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b61070c61044082610584565b50565b600080546040517fbf40fac100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063bf40fac1906107669085906004016113c9565b60206040518083038186803b15801561077e57600080fd5b505afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057e91906114c5565b6107c66001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610868576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b61070c61044082610a31565b6108846001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610926576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b600092835260026020908152604080852093855260019093019052912055565b505050565b600081815260026020526040812061096290610ed0565b64ffffffffff1692915050565b600082815260026020526040812061098e9064ffffffffff8416610f1b565b9392505050565b600180546109a290611471565b80601f01602080910402602001604051908101604052809291908181526020018280546109ce90611471565b8015610a1b5780601f106109f057610100808354040283529160200191610a1b565b820191906000526020600020905b8154815290600101906020018083116109fe57829003601f168201915b505050505081565b600061057e6104408361096f565b610a416001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae3576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b60008281526002602052604090206104929082610fd0565b610b0b6001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bad576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b6000828152600260205260409020610492908261102d565b610bd56001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c77576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b61070c61044082610afb565b610c936001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d35576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b600083815260026020526040902061094690838361108a565b60006104a3610440610567565b610d6b6001805461035b90611471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e0d576040805162461bcd60e51b81526020600482015260248101919091527f436861696e53746f72616765436f6e7461696e65723a2046756e6374696f6e2060448201527f63616e206f6e6c792062652063616c6c656420627920746865206f776e65722e606482015260840161047c565b6000838152600260205260409020610946908383611157565b600080610e6983604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b602001519392505050565b6000610eb683604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b64ffffffffff1983166020820152905061094683826111e2565b600080610f1383604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b519392505050565b600080610f5e84604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b805190915064ffffffffff168310610fb85760405162461bcd60e51b815260206004820152601460248201527f496e646578206f7574206f6620626f756e64732e000000000000000000000000604482015260640161047c565b50506000908152600191909101602052604090205490565b600061101283604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b90506109468282602001518561108a9092919063ffffffff16565b600061106f83604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b9050610946828260200151856111579092919063ffffffff16565b60006110cc84604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b9050806000015164ffffffffff168364ffffffffff161061112f5760405162461bcd60e51b815260206004820152601460248201527f496e646578206f7574206f6620626f756e64732e000000000000000000000000604482015260640161047c565b64ffffffffff8316815264ffffffffff198216602082015261115184826111e2565b50505050565b600061119984604080518082019091526000808252602082015250546040805180820190915264ffffffffff8216815264ffffffffff19909116602082015290565b805164ffffffffff16600090815260018601602052604090208490558051909150816111c4826114fb565b64ffffffffff1690525064ffffffffff198216602082015261115184825b80516020820151835481831792919083146111fb578285555b5050505050565b803564ffffffffff198116811461121857600080fd5b919050565b6000806040838503121561123057600080fd5b8235915061124060208401611202565b90509250929050565b60006020828403121561125b57600080fd5b5035919050565b60006020828403121561127457600080fd5b61098e82611202565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156112be57600080fd5b813567ffffffffffffffff808211156112d657600080fd5b818401915084601f8301126112ea57600080fd5b8135818111156112fc576112fc61127d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156113425761134261127d565b8160405282815287602084870101111561135b57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060006060848603121561139057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156113ba57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156113f6578581018301518582016040015282016113da565b81811115611408576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060006060848603121561145157600080fd5b833592506020840135915061146860408501611202565b90509250925092565b600181811c9082168061148557607f821691505b602082108114156114bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000602082840312156114d757600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461098e57600080fd5b600064ffffffffff8083168181141561153d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600101939250505056fea2646970667358221220b340f85f3f92fa0203f0d140bfe0390a401f074bf584690395075846fa900cda64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000918778e825747a892b17c66fe7d24c618262867d0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001943616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000
-----Decoded View---------------
Arg [0] : _libAddressManager (address): 0x918778e825747a892b17C66fe7D24C618262867d
Arg [1] : _owner (string): CanonicalTransactionChain
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000918778e825747a892b17c66fe7d24c618262867d
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [3] : 43616e6f6e6963616c5472616e73616374696f6e436861696e00000000000000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.