More Info
Private Name Tags
ContractCreator
Sponsored
Latest 13 from a total of 13 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
New Vault | 106065190 | 444 days ago | IN | 0 ETH | 0.000033079446 | ||||
New Vault | 104669590 | 465 days ago | IN | 0 ETH | 0.00011503609 | ||||
New Vault | 104668495 | 465 days ago | IN | 0 ETH | 0.000153578063 | ||||
New Vault | 81698666 | 544 days ago | IN | 0 ETH | 0.000153232721 | ||||
New Vault | 74135821 | 576 days ago | IN | 0 ETH | 0.000225829391 | ||||
Transfer Ownersh... | 24653803 | 720 days ago | IN | 0 ETH | 0.00003577161 | ||||
New Vault | 22452618 | 734 days ago | IN | 0 ETH | 0.000062318476 | ||||
New Vault | 22452606 | 734 days ago | IN | 0 ETH | 0.000060248582 | ||||
New Vault | 22452599 | 734 days ago | IN | 0 ETH | 0.000055770076 | ||||
New Vault | 22452587 | 734 days ago | IN | 0 ETH | 0.000055770075 | ||||
New Vault | 22452530 | 734 days ago | IN | 0 ETH | 0.000075465671 | ||||
New Release | 22451581 | 734 days ago | IN | 0 ETH | 0.00005042189 | ||||
0x60806040 | 22450349 | 734 days ago | IN | 0 ETH | 0.001176092557 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
ReleaseRegistry
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at optimistic.etherscan.io on 2022-09-09 */ // File: github/pandadefi/registry/contracts/IVault.sol pragma solidity ^0.8.15; interface IVault { function token() external view returns (address); function apiVersion() external view returns (string memory); function governance() external view returns (address); function initialize( address _token, address _governance, address _rewards, string calldata _name, string calldata _symbol, address _guardian ) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) 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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: github/pandadefi/registry/contracts/ReleaseRegistry.sol pragma solidity ^0.8.15; contract ReleaseRegistry is Ownable { uint256 public numReleases; mapping(uint256 => address) public releases; event NewRelease( uint256 indexed releaseId, address template, string apiVersion ); event NewClone(address indexed vault); /** @notice Returns the api version of the latest release. @dev Throws if no releases are registered yet. @return The api version of the latest release. NOTE: Throws if there has not been a release yet */ function latestRelease() external view returns (string memory) { return IVault(releases[numReleases - 1]).apiVersion(); // dev: no release } /** @notice Add a previously deployed Vault as the template contract for the latest release, to be used by further "forwarder-style" delegatecall proxy contracts that can be deployed from the registry throw other methods (to save gas). @dev Throws if caller isn't `governance`. Throws if `vault`'s governance isn't `governance`. Throws if the api version is the same as the previous release. Emits a `NewVault` event. @param _vault The vault that will be used as the template contract for the next release. */ function newRelease(address _vault) external onlyOwner { // Check if the release is different from the current one // NOTE: This doesn't check for strict semver-style linearly increasing release versions uint256 releaseId = numReleases; // Next id in series if (releaseId > 0) { require( keccak256( bytes(IVault(releases[releaseId - 1]).apiVersion()) ) != keccak256(bytes(IVault(_vault).apiVersion())), "same api version" ); } // Update latest release releases[releaseId] = _vault; numReleases = releaseId + 1; // Log the release for external listeners (e.g. Graph) emit NewRelease(releaseId, _vault, IVault(_vault).apiVersion()); } function _newProxyVault( address _token, address _governance, address _rewards, address _guardian, string memory _name, string memory _symbol, uint256 _releaseTarget ) internal returns (address) { address vault; { address release = releases[_releaseTarget]; require(release != address(0), "unknown release"); vault = _clone(release); emit NewClone(vault); } // NOTE: Must initialize the Vault atomically with deploying it IVault(vault).initialize( _token, _governance, _rewards, _name, _symbol, _guardian ); return vault; } function newVault( address _token, address _guardian, address _rewards, string calldata _name, string calldata _symbol ) external returns (address) { return newVault( _token, msg.sender, _guardian, _rewards, _name, _symbol, 0 ); } /** @notice Create a new vault for the given token using the latest release in the registry, as a simple "forwarder-style" delegatecall proxy to the latest release. Also adds the new vault to the list of "endorsed" vaults for that token. @dev Throws if no releases are registered yet. @param _token The token that may be deposited into the new Vault. @param _governance vault governance @param _guardian The address authorized for guardian interactions in the new Vault. @param _rewards The address to use for collecting rewards in the new Vault @param _name Specify a custom Vault name. Set to empty string for default choice. @param _symbol Specify a custom Vault symbol name. Set to empty string for default choice. @param _releaseDelta Specify the number of releases prior to the latest to use as a target. Default is latest. @return The address of the newly-deployed vault */ function newVault( address _token, address _governance, address _guardian, address _rewards, string calldata _name, string calldata _symbol, uint256 _releaseDelta ) public returns (address) { // NOTE: Underflow if no releases created yet, or targeting prior to release history uint256 releaseTarget = numReleases - 1 - _releaseDelta; // dev: no releases address vault = _newProxyVault( _token, _governance, _rewards, _guardian, _name, _symbol, releaseTarget ); return vault; } function _clone(address _target) internal returns (address _newVault) { // Copied from https://github.com/optionality/clone-factory/blob/master/contracts/CloneFactory.sol bytes20 addressBytes = bytes20(address(_target)); assembly { // EIP-1167 bytecode let clone_code := mload(0x40) mstore( clone_code, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000 ) mstore(add(clone_code, 0x14), addressBytes) mstore( add(clone_code, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000 ) _newVault := create(0, clone_code, 0x37) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"}],"name":"NewClone","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"releaseId","type":"uint256"},{"indexed":false,"internalType":"address","name":"template","type":"address"},{"indexed":false,"internalType":"string","name":"apiVersion","type":"string"}],"name":"NewRelease","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"latestRelease","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"newRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"newVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_governance","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_releaseDelta","type":"uint256"}],"name":"newVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"numReleases","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"releases","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610bef8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80637be0ca5e116100665780637be0ca5e146100fc5780638da5cb5b14610111578063b6a9f40f14610122578063e1c6ba5d1461014b578063f2fde38b1461015e57600080fd5b8063108ca11e1461009857806333990d4b146100c857806356e0a94b146100dd578063715018a6146100f4575b600080fd5b6100ab6100a6366004610824565b610171565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046108c6565b610191565b005b6100e660015481565b6040519081526020016100bf565b6100db6103cd565b6101046103e1565b6040516100bf9190610944565b6000546001600160a01b03166100ab565b6100ab610130366004610957565b6002602052600090815260409020546001600160a01b031681565b6100ab610159366004610970565b610481565b6100db61016c3660046108c6565b61053b565b600061018588338989898989896000610481565b98975050505050505050565b6101996105b4565b60015480156102f257816001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102089190810190610a40565b80516020909101206002600061021f600185610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561027e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102a69190810190610a40565b80519060200120036102f25760405162461bcd60e51b815260206004820152601060248201526f39b0b6b29030b834903b32b939b4b7b760811b60448201526064015b60405180910390fd5b600081815260026020526040902080546001600160a01b0319166001600160a01b038416179055610324816001610b1a565b600181905550807fa6fbd216b6734f34092f1be6b7247e1551a6d4f2d5000c53721cfdc119a5b7cf83846001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b39190810190610a40565b6040516103c1929190610b32565b60405180910390a25050565b6103d56105b4565b6103df600061060e565b565b606060026000600180546103f59190610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa158015610454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047c9190810190610a40565b905090565b60008082600180546104939190610b03565b61049d9190610b03565b9050600061052b8c8c8b8d8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925061065e915050565b9c9b505050505050505050505050565b6105436105b4565b6001600160a01b0381166105a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102e9565b6105b18161060e565b50565b6000546001600160a01b031633146103df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008181526002602052604081205481906001600160a01b0316806106b75760405162461bcd60e51b815260206004820152600f60248201526e756e6b6e6f776e2072656c6561736560881b60448201526064016102e9565b6106c08161076d565b6040519092506001600160a01b038316907fcc1e9c890bc4f4943c457abb8d17f97703b9f7144e1f4a69e50c6e4988ef38b790600090a25060405163a5b81fdf60e01b81526001600160a01b0382169063a5b81fdf9061072e908c908c908c908b908b908e90600401610b5e565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b80356001600160a01b03811681146107d657600080fd5b919050565b60008083601f8401126107ed57600080fd5b50813567ffffffffffffffff81111561080557600080fd5b60208301915083602082850101111561081d57600080fd5b9250929050565b600080600080600080600060a0888a03121561083f57600080fd5b610848886107bf565b9650610856602089016107bf565b9550610864604089016107bf565b9450606088013567ffffffffffffffff8082111561088157600080fd5b61088d8b838c016107db565b909650945060808a01359150808211156108a657600080fd5b506108b38a828b016107db565b989b979a50959850939692959293505050565b6000602082840312156108d857600080fd5b6108e1826107bf565b9392505050565b60005b838110156109035781810151838201526020016108eb565b83811115610912576000848401525b50505050565b600081518084526109308160208601602086016108e8565b601f01601f19169290920160200192915050565b6020815260006108e16020830184610918565b60006020828403121561096957600080fd5b5035919050565b600080600080600080600080600060e08a8c03121561098e57600080fd5b6109978a6107bf565b98506109a560208b016107bf565b97506109b360408b016107bf565b96506109c160608b016107bf565b955060808a013567ffffffffffffffff808211156109de57600080fd5b6109ea8d838e016107db565b909750955060a08c0135915080821115610a0357600080fd5b50610a108c828d016107db565b9a9d999c50979a9699959894979660c00135949350505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a5257600080fd5b815167ffffffffffffffff80821115610a6a57600080fd5b818401915084601f830112610a7e57600080fd5b815181811115610a9057610a90610a2a565b604051601f8201601f19908116603f01168101908382118183101715610ab857610ab8610a2a565b81604052828152876020848701011115610ad157600080fd5b610ae28360208301602088016108e8565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b1557610b15610aed565b500390565b60008219821115610b2d57610b2d610aed565b500190565b6001600160a01b0383168152604060208201819052600090610b5690830184610918565b949350505050565b600060018060a01b0380891683528088166020840152808716604084015260c06060840152610b9060c0840187610918565b8381036080850152610ba28187610918565b92505080841660a08401525097965050505050505056fea26469706673582212206fa443e3ee12c0d1af10d80a526ef66dd79ece9ab3c86b1772d355954bd021e464736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80637be0ca5e116100665780637be0ca5e146100fc5780638da5cb5b14610111578063b6a9f40f14610122578063e1c6ba5d1461014b578063f2fde38b1461015e57600080fd5b8063108ca11e1461009857806333990d4b146100c857806356e0a94b146100dd578063715018a6146100f4575b600080fd5b6100ab6100a6366004610824565b610171565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d63660046108c6565b610191565b005b6100e660015481565b6040519081526020016100bf565b6100db6103cd565b6101046103e1565b6040516100bf9190610944565b6000546001600160a01b03166100ab565b6100ab610130366004610957565b6002602052600090815260409020546001600160a01b031681565b6100ab610159366004610970565b610481565b6100db61016c3660046108c6565b61053b565b600061018588338989898989896000610481565b98975050505050505050565b6101996105b4565b60015480156102f257816001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa1580156101e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102089190810190610a40565b80516020909101206002600061021f600185610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561027e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102a69190810190610a40565b80519060200120036102f25760405162461bcd60e51b815260206004820152601060248201526f39b0b6b29030b834903b32b939b4b7b760811b60448201526064015b60405180910390fd5b600081815260026020526040902080546001600160a01b0319166001600160a01b038416179055610324816001610b1a565b600181905550807fa6fbd216b6734f34092f1be6b7247e1551a6d4f2d5000c53721cfdc119a5b7cf83846001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103b39190810190610a40565b6040516103c1929190610b32565b60405180910390a25050565b6103d56105b4565b6103df600061060e565b565b606060026000600180546103f59190610b03565b815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663258294106040518163ffffffff1660e01b8152600401600060405180830381865afa158015610454573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047c9190810190610a40565b905090565b60008082600180546104939190610b03565b61049d9190610b03565b9050600061052b8c8c8b8d8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925061065e915050565b9c9b505050505050505050505050565b6105436105b4565b6001600160a01b0381166105a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102e9565b6105b18161060e565b50565b6000546001600160a01b031633146103df5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008181526002602052604081205481906001600160a01b0316806106b75760405162461bcd60e51b815260206004820152600f60248201526e756e6b6e6f776e2072656c6561736560881b60448201526064016102e9565b6106c08161076d565b6040519092506001600160a01b038316907fcc1e9c890bc4f4943c457abb8d17f97703b9f7144e1f4a69e50c6e4988ef38b790600090a25060405163a5b81fdf60e01b81526001600160a01b0382169063a5b81fdf9061072e908c908c908c908b908b908e90600401610b5e565b600060405180830381600087803b15801561074857600080fd5b505af115801561075c573d6000803e3d6000fd5b50929b9a5050505050505050505050565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f0949350505050565b80356001600160a01b03811681146107d657600080fd5b919050565b60008083601f8401126107ed57600080fd5b50813567ffffffffffffffff81111561080557600080fd5b60208301915083602082850101111561081d57600080fd5b9250929050565b600080600080600080600060a0888a03121561083f57600080fd5b610848886107bf565b9650610856602089016107bf565b9550610864604089016107bf565b9450606088013567ffffffffffffffff8082111561088157600080fd5b61088d8b838c016107db565b909650945060808a01359150808211156108a657600080fd5b506108b38a828b016107db565b989b979a50959850939692959293505050565b6000602082840312156108d857600080fd5b6108e1826107bf565b9392505050565b60005b838110156109035781810151838201526020016108eb565b83811115610912576000848401525b50505050565b600081518084526109308160208601602086016108e8565b601f01601f19169290920160200192915050565b6020815260006108e16020830184610918565b60006020828403121561096957600080fd5b5035919050565b600080600080600080600080600060e08a8c03121561098e57600080fd5b6109978a6107bf565b98506109a560208b016107bf565b97506109b360408b016107bf565b96506109c160608b016107bf565b955060808a013567ffffffffffffffff808211156109de57600080fd5b6109ea8d838e016107db565b909750955060a08c0135915080821115610a0357600080fd5b50610a108c828d016107db565b9a9d999c50979a9699959894979660c00135949350505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a5257600080fd5b815167ffffffffffffffff80821115610a6a57600080fd5b818401915084601f830112610a7e57600080fd5b815181811115610a9057610a90610a2a565b604051601f8201601f19908116603f01168101908382118183101715610ab857610ab8610a2a565b81604052828152876020848701011115610ad157600080fd5b610ae28360208301602088016108e8565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b1557610b15610aed565b500390565b60008219821115610b2d57610b2d610aed565b500190565b6001600160a01b0383168152604060208201819052600090610b5690830184610918565b949350505050565b600060018060a01b0380891683528088166020840152808716604084015260c06060840152610b9060c0840187610918565b8381036080850152610ba28187610918565b92505080841660a08401525097965050505050505056fea26469706673582212206fa443e3ee12c0d1af10d80a526ef66dd79ece9ab3c86b1772d355954bd021e464736f6c634300080f0033
Deployed Bytecode Sourcemap
4214:5820:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7136:439;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1659:32:1;;;1641:51;;1629:2;1614:18;7136:439:0;;;;;;;;5506:825;;;;;;:::i;:::-;;:::i;:::-;;4257:26;;;;;;;;;2040:25:1;;;2028:2;2013:18;4257:26:0;1894:177:1;3295:103:0;;;:::i;4746:154::-;;;:::i;:::-;;;;;;;:::i;2647:87::-;2693:7;2720:6;-1:-1:-1;;;;;2720:6:0;2647:87;;4290:43;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;4290:43:0;;;8561:687;;;;;;:::i;:::-;;:::i;3553:201::-;;;;;;:::i;:::-;;:::i;7136:439::-;7325:7;7365:202;7392:6;7417:10;7446:9;7474:8;7501:5;;7525:7;;7551:1;7365:8;:202::i;:::-;7345:222;7136:439;-1:-1:-1;;;;;;;;7136:439:0:o;5506:825::-;2533:13;:11;:13::i;:::-;5757:11:::1;::::0;5804:13;;5800:275:::1;;5989:6;-1:-1:-1::0;;;;;5982:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5982:27:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;5966:45:::0;;::::1;::::0;;::::1;::::0;5905:8:::1;:23;5914:13;5926:1;5914:9:::0;:13:::1;:::i;:::-;5905:23;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;5905:23:0::1;-1:-1:-1::0;;;;;5898:42:0::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5898:44:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;5860:102;;;;;;:151:::0;5834:229:::1;;;::::0;-1:-1:-1;;;5834:229:0;;5591:2:1;5834:229:0::1;::::0;::::1;5573:21:1::0;5630:2;5610:18;;;5603:30;-1:-1:-1;;;5649:18:1;;;5642:46;5705:18;;5834:229:0::1;;;;;;;;;6119:19;::::0;;;:8:::1;:19;::::0;;;;:28;;-1:-1:-1;;;;;;6119:28:0::1;-1:-1:-1::0;;;;;6119:28:0;::::1;;::::0;;6172:13:::1;6119:19:::0;-1:-1:-1;6172:13:0::1;:::i;:::-;6158:11;:27;;;;6276:9;6265:58;6287:6;6302;-1:-1:-1::0;;;;;6295:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;6295:27:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;6265:58;;;;;;;:::i;:::-;;;;;;;;5561:770;5506:825:::0;:::o;3295:103::-;2533:13;:11;:13::i;:::-;3360:30:::1;3387:1;3360:18;:30::i;:::-;3295:103::o:0;4746:154::-;4794:13;4834:8;:25;4857:1;4843:11;;:15;;;;:::i;:::-;4834:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4834:25:0;-1:-1:-1;;;;;4827:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4827:46:0;;;;;;;;;;;;:::i;:::-;4820:53;;4746:154;:::o;8561:687::-;8810:7;8924:21;8966:13;8962:1;8948:11;;:15;;;;:::i;:::-;:31;;;;:::i;:::-;8924:55;;9010:13;9026:189;9055:6;9076:11;9102:8;9125:9;9149:5;;9026:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9169:7;;9026:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9191:13:0;;-1:-1:-1;9026:14:0;;-1:-1:-1;;9026:189:0:i;:::-;9010:205;8561:687;-1:-1:-1;;;;;;;;;;;;8561:687:0:o;3553:201::-;2533:13;:11;:13::i;:::-;-1:-1:-1;;;;;3642:22:0;::::1;3634:73;;;::::0;-1:-1:-1;;;3634:73:0;;6391:2:1;3634:73:0::1;::::0;::::1;6373:21:1::0;6430:2;6410:18;;;6403:30;6469:34;6449:18;;;6442:62;-1:-1:-1;;;6520:18:1;;;6513:36;6566:19;;3634:73:0::1;6189:402:1::0;3634:73:0::1;3718:28;3737:8;3718:18;:28::i;:::-;3553:201:::0;:::o;2812:132::-;2693:7;2720:6;-1:-1:-1;;;;;2720:6:0;1278:10;2876:23;2868:68;;;;-1:-1:-1;;;2868:68:0;;6798:2:1;2868:68:0;;;6780:21:1;;;6817:18;;;6810:30;6876:34;6856:18;;;6849:62;6928:18;;2868:68:0;6596:356:1;3914:191:0;3988:16;4007:6;;-1:-1:-1;;;;;4024:17:0;;;-1:-1:-1;;;;;;4024:17:0;;;;;;4057:40;;4007:6;;;;;;;4057:40;;3988:16;4057:40;3977:128;3914:191;:::o;6339:789::-;6593:7;6670:24;;;:8;:24;;;;;;6593:7;;-1:-1:-1;;;;;6670:24:0;;6709:49;;;;-1:-1:-1;;;6709:49:0;;7159:2:1;6709:49:0;;;7141:21:1;7198:2;7178:18;;;7171:30;-1:-1:-1;;;7217:18:1;;;7210:45;7272:18;;6709:49:0;6957:339:1;6709:49:0;6781:15;6788:7;6781:6;:15::i;:::-;6816;;6773:23;;-1:-1:-1;;;;;;6816:15:0;;;;;;;;-1:-1:-1;6926:171:0;;-1:-1:-1;;;6926:171:0;;-1:-1:-1;;;;;6926:24:0;;;;;:171;;6965:6;;6986:11;;7012:8;;7035:5;;7055:7;;7077:9;;6926:171;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7115:5:0;;6339:789;-1:-1:-1;;;;;;;;;;;6339:789:0:o;9256:775::-;9307:17;9445:20;9484:7;9468:25;;9445:48;;9588:4;9582:11;-1:-1:-1;;;9632:10:0;9607:135;9786:12;9779:4;9767:10;9763:21;9756:43;-1:-1:-1;;;9854:4:0;9842:10;9838:21;9813:146;10008:4;9996:10;9993:1;9986:27;9973:40;9256:775;-1:-1:-1;;;;9256:775:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:348::-;244:8;254:6;308:3;301:4;293:6;289:17;285:27;275:55;;326:1;323;316:12;275:55;-1:-1:-1;349:20:1;;392:18;381:30;;378:50;;;424:1;421;414:12;378:50;461:4;453:6;449:17;437:29;;513:3;506:4;497:6;489;485:19;481:30;478:39;475:59;;;530:1;527;520:12;475:59;192:348;;;;;:::o;545:945::-;664:6;672;680;688;696;704;712;765:3;753:9;744:7;740:23;736:33;733:53;;;782:1;779;772:12;733:53;805:29;824:9;805:29;:::i;:::-;795:39;;853:38;887:2;876:9;872:18;853:38;:::i;:::-;843:48;;910:38;944:2;933:9;929:18;910:38;:::i;:::-;900:48;;999:2;988:9;984:18;971:32;1022:18;1063:2;1055:6;1052:14;1049:34;;;1079:1;1076;1069:12;1049:34;1118:59;1169:7;1160:6;1149:9;1145:22;1118:59;:::i;:::-;1196:8;;-1:-1:-1;1092:85:1;-1:-1:-1;1284:3:1;1269:19;;1256:33;;-1:-1:-1;1301:16:1;;;1298:36;;;1330:1;1327;1320:12;1298:36;;1369:61;1422:7;1411:8;1400:9;1396:24;1369:61;:::i;:::-;545:945;;;;-1:-1:-1;545:945:1;;-1:-1:-1;545:945:1;;;;1343:87;;-1:-1:-1;;;545:945:1:o;1703:186::-;1762:6;1815:2;1803:9;1794:7;1790:23;1786:32;1783:52;;;1831:1;1828;1821:12;1783:52;1854:29;1873:9;1854:29;:::i;:::-;1844:39;1703:186;-1:-1:-1;;;1703:186:1:o;2076:258::-;2148:1;2158:113;2172:6;2169:1;2166:13;2158:113;;;2248:11;;;2242:18;2229:11;;;2222:39;2194:2;2187:10;2158:113;;;2289:6;2286:1;2283:13;2280:48;;;2324:1;2315:6;2310:3;2306:16;2299:27;2280:48;;2076:258;;;:::o;2339:::-;2381:3;2419:5;2413:12;2446:6;2441:3;2434:19;2462:63;2518:6;2511:4;2506:3;2502:14;2495:4;2488:5;2484:16;2462:63;:::i;:::-;2579:2;2558:15;-1:-1:-1;;2554:29:1;2545:39;;;;2586:4;2541:50;;2339:258;-1:-1:-1;;2339:258:1:o;2602:220::-;2751:2;2740:9;2733:21;2714:4;2771:45;2812:2;2801:9;2797:18;2789:6;2771:45;:::i;2827:180::-;2886:6;2939:2;2927:9;2918:7;2914:23;2910:32;2907:52;;;2955:1;2952;2945:12;2907:52;-1:-1:-1;2978:23:1;;2827:180;-1:-1:-1;2827:180:1:o;3012:1089::-;3149:6;3157;3165;3173;3181;3189;3197;3205;3213;3266:3;3254:9;3245:7;3241:23;3237:33;3234:53;;;3283:1;3280;3273:12;3234:53;3306:29;3325:9;3306:29;:::i;:::-;3296:39;;3354:38;3388:2;3377:9;3373:18;3354:38;:::i;:::-;3344:48;;3411:38;3445:2;3434:9;3430:18;3411:38;:::i;:::-;3401:48;;3468:38;3502:2;3491:9;3487:18;3468:38;:::i;:::-;3458:48;;3557:3;3546:9;3542:19;3529:33;3581:18;3622:2;3614:6;3611:14;3608:34;;;3638:1;3635;3628:12;3608:34;3677:59;3728:7;3719:6;3708:9;3704:22;3677:59;:::i;:::-;3755:8;;-1:-1:-1;3651:85:1;-1:-1:-1;3843:3:1;3828:19;;3815:33;;-1:-1:-1;3860:16:1;;;3857:36;;;3889:1;3886;3879:12;3857:36;;3928:61;3981:7;3970:8;3959:9;3955:24;3928:61;:::i;:::-;3012:1089;;;;-1:-1:-1;3012:1089:1;;;;;;;;4008:8;4090:3;4075:19;4062:33;;3012:1089;-1:-1:-1;;;;3012:1089:1:o;4106:127::-;4167:10;4162:3;4158:20;4155:1;4148:31;4198:4;4195:1;4188:15;4222:4;4219:1;4212:15;4238:884;4318:6;4371:2;4359:9;4350:7;4346:23;4342:32;4339:52;;;4387:1;4384;4377:12;4339:52;4420:9;4414:16;4449:18;4490:2;4482:6;4479:14;4476:34;;;4506:1;4503;4496:12;4476:34;4544:6;4533:9;4529:22;4519:32;;4589:7;4582:4;4578:2;4574:13;4570:27;4560:55;;4611:1;4608;4601:12;4560:55;4640:2;4634:9;4662:2;4658;4655:10;4652:36;;;4668:18;;:::i;:::-;4743:2;4737:9;4711:2;4797:13;;-1:-1:-1;;4793:22:1;;;4817:2;4789:31;4785:40;4773:53;;;4841:18;;;4861:22;;;4838:46;4835:72;;;4887:18;;:::i;:::-;4927:10;4923:2;4916:22;4962:2;4954:6;4947:18;5002:7;4997:2;4992;4988;4984:11;4980:20;4977:33;4974:53;;;5023:1;5020;5013:12;4974:53;5036:55;5088:2;5083;5075:6;5071:15;5066:2;5062;5058:11;5036:55;:::i;:::-;5110:6;4238:884;-1:-1:-1;;;;;;;4238:884:1:o;5127:127::-;5188:10;5183:3;5179:20;5176:1;5169:31;5219:4;5216:1;5209:15;5243:4;5240:1;5233:15;5259:125;5299:4;5327:1;5324;5321:8;5318:34;;;5332:18;;:::i;:::-;-1:-1:-1;5369:9:1;;5259:125::o;5734:128::-;5774:3;5805:1;5801:6;5798:1;5795:13;5792:39;;;5811:18;;:::i;:::-;-1:-1:-1;5847:9:1;;5734:128::o;5867:317::-;-1:-1:-1;;;;;6044:32:1;;6026:51;;6113:2;6108;6093:18;;6086:30;;;-1:-1:-1;;6133:45:1;;6159:18;;6151:6;6133:45;:::i;:::-;6125:53;5867:317;-1:-1:-1;;;;5867:317:1:o;7301:745::-;7573:4;7619:1;7615;7610:3;7606:11;7602:19;7660:2;7652:6;7648:15;7637:9;7630:34;7712:2;7704:6;7700:15;7695:2;7684:9;7680:18;7673:43;7764:2;7756:6;7752:15;7747:2;7736:9;7732:18;7725:43;7804:3;7799:2;7788:9;7784:18;7777:31;7831:46;7872:3;7861:9;7857:19;7849:6;7831:46;:::i;:::-;7926:9;7918:6;7914:22;7908:3;7897:9;7893:19;7886:51;7954:33;7980:6;7972;7954:33;:::i;:::-;7946:41;;;8036:2;8028:6;8024:15;8018:3;8007:9;8003:19;7996:44;;7301:745;;;;;;;;;:::o
Swarm Source
ipfs://6fa443e3ee12c0d1af10d80a526ef66dd79ece9ab3c86b1772d355954bd021e4
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.