Overview
Max Total Supply
6,474,445.823395112058059759 OUSD
Holders
3,189 (0.00%)
Market
Price
$1.00 @ 0.000259 ETH (+0.06%)
Onchain Market Cap
$6,471,492.83
Circulating Supply Market Cap
$6,471,492.83
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000000000001 OUSDValue
$0.00 ( ~0 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
InitializeGovernedUpgradeabilityProxy
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)Audit Report
/** *Submitted for verification at Etherscan.io on 2020-09-23 */ /** *Submitted for verification at Etherscan.io on 2020-09-23 */ pragma solidity 0.5.11; /** * @title Proxy * @dev Implements delegation of calls to other contracts, with proper * forwarding of return values and bubbling of failures. * It defines a fallback function that delegates all calls to the address * returned by the abstract _implementation() internal function. */ contract Proxy { /** * @dev Fallback function. * Implemented entirely in `_fallback`. */ function () payable external { _fallback(); } /** * @return The Address of the implementation. */ function _implementation() internal view returns (address); /** * @dev Delegates execution to an implementation contract. * This is a low level function that doesn't return to its internal call site. * It will return to the external caller whatever the implementation returns. * @param implementation Address to delegate. */ function _delegate(address implementation) internal { assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas, implementation, 0, calldatasize, 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize) } default { return(0, returndatasize) } } } /** * @dev Function that is run as the first thing in the fallback function. * Can be redefined in derived contracts to add functionality. * Redefinitions must call super._willFallback(). */ function _willFallback() internal { } /** * @dev fallback implementation. * Extracted to enable manual triggering. */ function _fallback() internal { _willFallback(); _delegate(_implementation()); } } /** * Utility library of inline functions on addresses * * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/utils/Address.sol * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the * build/artifacts folder) as well as the vanilla Address implementation from an openzeppelin version. */ library OpenZeppelinUpgradesAddress { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } } /** * @title BaseUpgradeabilityProxy * @dev This contract implements a proxy that allows to change the * implementation address to which it will delegate. * Such a change is called an implementation upgrade. */ contract BaseUpgradeabilityProxy is Proxy { /** * @dev Emitted when the implementation is upgraded. * @param implementation Address of the new implementation. */ event Upgraded(address indexed implementation); /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is * validated in the constructor. */ bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @dev Returns the current implementation. * @return Address of the current implementation */ function _implementation() internal view returns (address impl) { bytes32 slot = IMPLEMENTATION_SLOT; assembly { impl := sload(slot) } } /** * @dev Upgrades the proxy to a new implementation. * @param newImplementation Address of the new implementation. */ function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } /** * @dev Sets the implementation address of the proxy. * @param newImplementation Address of the new implementation. */ function _setImplementation(address newImplementation) internal { require(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } } /** * @title OUSD Governable Contract * @dev Copy of the openzeppelin Ownable.sol contract with nomenclature change * from owner to governor and renounce methods removed. Does not use * Context.sol like Ownable.sol does for simplification. * @author Origin Protocol Inc */ contract Governable { // Storage position of the owner and pendingOwner of the contract bytes32 private constant governorPosition = 0x7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a; //keccak256("OUSD.governor"); bytes32 private constant pendingGovernorPosition = 0x44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db; //keccak256("OUSD.pending.governor"); event PendingGovernorshipTransfer( address indexed previousGovernor, address indexed newGovernor ); event GovernorshipTransferred( address indexed previousGovernor, address indexed newGovernor ); /** * @dev Initializes the contract setting the deployer as the initial Governor. */ constructor() internal { _setGovernor(msg.sender); emit GovernorshipTransferred(address(0), _governor()); } /** * @dev Returns the address of the current Governor. */ function governor() public view returns (address) { return _governor(); } function _governor() internal view returns (address governorOut) { bytes32 position = governorPosition; assembly { governorOut := sload(position) } } function _pendingGovernor() internal view returns (address pendingGovernor) { bytes32 position = pendingGovernorPosition; assembly { pendingGovernor := sload(position) } } /** * @dev Throws if called by any account other than the Governor. */ modifier onlyGovernor() { require(isGovernor(), "Caller is not the Governor"); _; } /** * @dev Returns true if the caller is the current Governor. */ function isGovernor() public view returns (bool) { return msg.sender == _governor(); } function _setGovernor(address newGovernor) internal { bytes32 position = governorPosition; assembly { sstore(position, newGovernor) } } function _setPendingGovernor(address newGovernor) internal { bytes32 position = pendingGovernorPosition; assembly { sstore(position, newGovernor) } } /** * @dev Transfers Governance of the contract to a new account (`newGovernor`). * Can only be called by the current Governor. Must be claimed for this to complete * @param _newGovernor Address of the new Governor */ function transferGovernance(address _newGovernor) external onlyGovernor { _setPendingGovernor(_newGovernor); emit PendingGovernorshipTransfer(_governor(), _newGovernor); } /** * @dev Claim Governance of the contract to a new account (`newGovernor`). * Can only be called by the new Governor. */ function claimGovernance() external { require( msg.sender == _pendingGovernor(), "Only the pending Governor can complete the claim" ); _changeGovernor(msg.sender); } /** * @dev Change Governance of the contract to a new account (`newGovernor`). * @param _newGovernor Address of the new Governor */ function _changeGovernor(address _newGovernor) internal { require(_newGovernor != address(0), "New Governor is address(0)"); emit GovernorshipTransferred(_governor(), _newGovernor); _setGovernor(_newGovernor); } } /** * @title BaseGovernedUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with our governor system * @author Origin Protocol Inc */ contract InitializeGovernedUpgradeabilityProxy is Governable, BaseUpgradeabilityProxy { /** * @dev Contract initializer with Governor enforcement * @param _logic Address of the initial implementation. * @param _initGovernor Address of the initial Governor. * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. */ function initialize( address _logic, address _initGovernor, bytes memory _data ) public payable onlyGovernor { require(_implementation() == address(0)); assert( IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1) ); _setImplementation(_logic); if (_data.length > 0) { (bool success, ) = _logic.delegatecall(_data); require(success); } _changeGovernor(_initGovernor); } /** * @return The address of the proxy admin/it's also the governor. */ function admin() external view returns (address) { return _governor(); } /** * @return The address of the implementation. */ function implementation() external view returns (address) { return _implementation(); } /** * @dev Upgrade the backing implementation of the proxy. * Only the admin can call this function. * @param newImplementation Address of the new implementation. */ function upgradeTo(address newImplementation) external onlyGovernor { _upgradeTo(newImplementation); } /** * @dev Upgrade the backing implementation of the proxy and call a function * on the new implementation. * This is useful to initialize the proxied contract. * @param newImplementation Address of the new implementation. * @param data Data to send as msg.data in the low level call. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeToAndCall(address newImplementation, bytes calldata data) external payable onlyGovernor { _upgradeTo(newImplementation); (bool success, ) = newImplementation.delegatecall(data); require(success); } } /** * @notice OUSDProxy delegates calls to a OUSD implementation */ contract OUSDProxy is InitializeGovernedUpgradeabilityProxy { }
Contract Security Audit
- Trail of Bits - December 21st, 2020 - Security Audit Report
- Solidified - December 17th, 2020 - Security Audit Report
[{"constant":true,"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_initGovernor","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"}]
Contract Creation Code
60806040526100133361008060201b60201c565b6100216100af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a36100e0565b60007f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a60001b90508181555050565b6000807f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a60001b9050805491505090565b610d5e806100ef6000396000f3fe6080604052600436106100865760003560e01c80635d36b190116100595780635d36b19014610228578063c7af33521461023f578063cf7a1d771461026e578063d38bfff414610369578063f851a440146103ba57610086565b80630c340a24146100905780633659cfe6146100e75780634f1ef286146101385780635c60da1b146101d1575b61008e610411565b005b34801561009c57600080fd5b506100a561042b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100f357600080fd5b506101366004803603602081101561010a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061043a565b005b6101cf6004803603604081101561014e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561018b57600080fd5b82018360208201111561019d57600080fd5b803590602001918460018302840111640100000000831117156101bf57600080fd5b90919293919293905050506104c0565b005b3480156101dd57600080fd5b506101e66105c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023457600080fd5b5061023d6105d6565b005b34801561024b57600080fd5b5061025461066c565b604051808215151515815260200191505060405180910390f35b6103676004803603606081101561028457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102e157600080fd5b8201836020820111156102f357600080fd5b8035906020019184600183028401116401000000008311171561031557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506106a9565b005b34801561037557600080fd5b506103b86004803603602081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b0565b005b3480156103c657600080fd5b506103cf610997565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104196109a6565b6104296104246109a8565b6109d9565b565b60006104356109ff565b905090565b61044261066c565b6104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b6104bd81610a30565b50565b6104c861066c565b61053a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b61054383610a30565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d80600081146105ae576040519150601f19603f3d011682016040523d82523d6000602084013e6105b3565b606091505b50509050806105c157600080fd5b50505050565b60006105d16109a8565b905090565b6105de610a7f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610cfa6030913960400191505060405180910390fd5b61066a33610ab0565b565b60006106766109ff565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6106b161066c565b610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166107436109a8565b73ffffffffffffffffffffffffffffffffffffffff161461076357600080fd5b600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b146107cd57fe5b6107d683610bc0565b6000815111156108a25760008373ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b6020831061082d578051825260208201915060208101905060208303925061080a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461088d576040519150601f19603f3d011682016040523d82523d6000602084013e610892565b606091505b50509050806108a057600080fd5b505b6108ab82610ab0565b505050565b6108b861066c565b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b61093381610c4d565b8073ffffffffffffffffffffffffffffffffffffffff166109526109ff565b73ffffffffffffffffffffffffffffffffffffffff167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d60405160405180910390a350565b60006109a16109ff565b905090565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e80600081146109fa573d6000f35b3d6000fd5b6000807f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a60001b9050805491505090565b610a3981610bc0565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6000807f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db60001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4e657720476f7665726e6f72206973206164647265737328302900000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b726109ff565b73ffffffffffffffffffffffffffffffffffffffff167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a3610bbd81610c7c565b50565b610bc981610cab565b610c1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610cbf603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60007f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db60001b90508181555050565b60007f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a60001b90508181555050565b600080823b90506000811191505091905056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573734f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f6d706c6574652074686520636c61696da265627a7a72315820d4bf53ff6beeda8a0bbb972d48c8063ed6c0c88fbfef0c441141dc0e1cbaaf4e64736f6c634300050b0032
Deployed Bytecode
0x6080604052600436106100865760003560e01c80635d36b190116100595780635d36b19014610228578063c7af33521461023f578063cf7a1d771461026e578063d38bfff414610369578063f851a440146103ba57610086565b80630c340a24146100905780633659cfe6146100e75780634f1ef286146101385780635c60da1b146101d1575b61008e610411565b005b34801561009c57600080fd5b506100a561042b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100f357600080fd5b506101366004803603602081101561010a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061043a565b005b6101cf6004803603604081101561014e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561018b57600080fd5b82018360208201111561019d57600080fd5b803590602001918460018302840111640100000000831117156101bf57600080fd5b90919293919293905050506104c0565b005b3480156101dd57600080fd5b506101e66105c7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023457600080fd5b5061023d6105d6565b005b34801561024b57600080fd5b5061025461066c565b604051808215151515815260200191505060405180910390f35b6103676004803603606081101561028457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102e157600080fd5b8201836020820111156102f357600080fd5b8035906020019184600183028401116401000000008311171561031557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506106a9565b005b34801561037557600080fd5b506103b86004803603602081101561038c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b0565b005b3480156103c657600080fd5b506103cf610997565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104196109a6565b6104296104246109a8565b6109d9565b565b60006104356109ff565b905090565b61044261066c565b6104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b6104bd81610a30565b50565b6104c861066c565b61053a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b61054383610a30565b60008373ffffffffffffffffffffffffffffffffffffffff168383604051808383808284378083019250505092505050600060405180830381855af49150503d80600081146105ae576040519150601f19603f3d011682016040523d82523d6000602084013e6105b3565b606091505b50509050806105c157600080fd5b50505050565b60006105d16109a8565b905090565b6105de610a7f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180610cfa6030913960400191505060405180910390fd5b61066a33610ab0565b565b60006106766109ff565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6106b161066c565b610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166107436109a8565b73ffffffffffffffffffffffffffffffffffffffff161461076357600080fd5b600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b146107cd57fe5b6107d683610bc0565b6000815111156108a25760008373ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b6020831061082d578051825260208201915060208101905060208303925061080a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461088d576040519150601f19603f3d011682016040523d82523d6000602084013e610892565b606091505b50509050806108a057600080fd5b505b6108ab82610ab0565b505050565b6108b861066c565b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616c6c6572206973206e6f742074686520476f7665726e6f7200000000000081525060200191505060405180910390fd5b61093381610c4d565b8073ffffffffffffffffffffffffffffffffffffffff166109526109ff565b73ffffffffffffffffffffffffffffffffffffffff167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d60405160405180910390a350565b60006109a16109ff565b905090565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e80600081146109fa573d6000f35b3d6000fd5b6000807f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a60001b9050805491505090565b610a3981610bc0565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6000807f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db60001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4e657720476f7665726e6f72206973206164647265737328302900000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b726109ff565b73ffffffffffffffffffffffffffffffffffffffff167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a3610bbd81610c7c565b50565b610bc981610cab565b610c1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610cbf603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b60007f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db60001b90508181555050565b60007f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a60001b90508181555050565b600080823b90506000811191505091905056fe43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573734f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f6d706c6574652074686520636c61696da265627a7a72315820d4bf53ff6beeda8a0bbb972d48c8063ed6c0c88fbfef0c441141dc0e1cbaaf4e64736f6c634300050b0032
Deployed Bytecode Sourcemap
9591:2804:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;539:11;:9;:11::i;:::-;9591:2804;6858:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6858:87:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11451:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11451:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11451:116:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;12115:277;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12115:277:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;12115:277:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12115:277:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12115:277:0;;;;;;;;;;;;:::i;:::-;;11147:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11147:101:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8789:223;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8789:223:0;;;:::i;:::-;;7696:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7696:100:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10328:559;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10328:559:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10328:559:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10328:559:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10328:559:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10328:559:0;;;;;;;;;;;;;;;:::i;:::-;;8441:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8441:194:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8441:194:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;10984:86;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10984:86:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2085:93;2122:15;:13;:15::i;:::-;2144:28;2154:17;:15;:17::i;:::-;2144:9;:28::i;:::-;2085:93::o;6858:87::-;6899:7;6926:11;:9;:11::i;:::-;6919:18;;6858:87;:::o;11451:116::-;7542:12;:10;:12::i;:::-;7534:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11530:29;11541:17;11530:10;:29::i;:::-;11451:116;:::o;12115:277::-;7542:12;:10;:12::i;:::-;7534:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12262:29;12273:17;12262:10;:29::i;:::-;12303:12;12321:17;:30;;12352:4;;12321:36;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;12321:36:0;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12302:55:0;;;12376:7;12368:16;;;;;;7596:1;12115:277;;;:::o;11147:101::-;11196:7;11223:17;:15;:17::i;:::-;11216:24;;11147:101;:::o;8789:223::-;8872:18;:16;:18::i;:::-;8858:32;;:10;:32;;;8836:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8977:27;8993:10;8977:15;:27::i;:::-;8789:223::o;7696:100::-;7739:4;7777:11;:9;:11::i;:::-;7763:25;;:10;:25;;;7756:32;;7696:100;:::o;10328:559::-;7542:12;:10;:12::i;:::-;7534:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10517:1;10488:31;;:17;:15;:17::i;:::-;:31;;;10480:40;;;;;;10653:1;10608:41;;;;;;;;;;;;;;;;;;;10600:50;;:54;10592:63;;4453:66;10552:19;;:103;10531:135;;;;10677:26;10696:6;10677:18;:26::i;:::-;10733:1;10718:5;:12;:16;10714:125;;;10752:12;10770:6;:19;;10790:5;10770:26;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10770:26:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10751:45:0;;;10819:7;10811:16;;;;;;10714:125;;10849:30;10865:13;10849:15;:30::i;:::-;10328:559;;;:::o;8441:194::-;7542:12;:10;:12::i;:::-;7534:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8524:33;8544:12;8524:19;:33::i;:::-;8614:12;8573:54;;8601:11;:9;:11::i;:::-;8573:54;;;;;;;;;;;;8441:194;:::o;10984:86::-;11024:7;11051:11;:9;:11::i;:::-;11044:18;;10984:86;:::o;1944:40::-;:::o;4639:161::-;4689:12;4710;4453:66;4725:19;;4710:34;;4783:4;4777:11;4769:19;;4760:35;;:::o;978:750::-;1285:12;1282:1;1279;1266:32;1479:1;1476;1462:12;1459:1;1443:14;1438:3;1425:56;1546:14;1543:1;1540;1525:36;1578:6;1640:1;1635:36;;;;1699:14;1696:1;1689:25;1635:36;1654:14;1651:1;1644:25;6953:194;6997:19;7029:16;5998:66;7048:16;;7029:35;;7120:8;7114:15;7099:30;;7084:56;;:::o;4941:145::-;5004:37;5023:17;5004:18;:37::i;:::-;5062:17;5053:27;;;;;;;;;;;;4941:145;:::o;7155:248::-;7233:23;7274:16;6168:66;7293:23;;7274:42;;7376:8;7370:15;7351:34;;7336:60;;:::o;9175:243::-;9274:1;9250:26;;:12;:26;;;;9242:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9360:12;9323:50;;9347:11;:9;:11::i;:::-;9323:50;;;;;;;;;;;;9384:26;9397:12;9384;:26::i;:::-;9175:243;:::o;5229:313::-;5308:57;5347:17;5308:38;:57::i;:::-;5300:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5438:12;4453:66;5453:19;;5438:34;;5512:17;5506:4;5499:31;5490:47;;:::o;7992:194::-;8062:16;6168:66;8081:23;;8062:42;;8156:11;8146:8;8139:29;8124:55;;:::o;7804:180::-;7867:16;5998:66;7886:16;;7867:35;;7954:11;7944:8;7937:29;7922:55;;:::o;3102:627::-;3162:4;3179:12;3686:7;3674:20;3666:28;;3720:1;3713:4;:8;3706:15;;;3102:627;;;:::o
Swarm Source
bzzr://d4bf53ff6beeda8a0bbb972d48c8063ed6c0c88fbfef0c441141dc0e1cbaaf4e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.