Overview
ETH Balance
0 ETH
ETH Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
GENESIS at txn GENESIS_2a23bc0ea97a89abd91214e8e4d20f02fe14743f
Latest 25 from a total of 1,415 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve Claim On... | 129198767 | 20 hrs ago | IN | 0 ETH | 0.000000209324 | ||||
Approve Issue On... | 129175163 | 33 hrs ago | IN | 0 ETH | 0.000000274156 | ||||
Approve Issue On... | 129171658 | 35 hrs ago | IN | 0 ETH | 0.000000392317 | ||||
Approve All Dele... | 129163789 | 40 hrs ago | IN | 0 ETH | 0.000000411952 | ||||
Approve All Dele... | 129120574 | 2 days ago | IN | 0 ETH | 0.000001536947 | ||||
Approve All Dele... | 128950108 | 6 days ago | IN | 0 ETH | 0.000005206282 | ||||
Approve All Dele... | 128889628 | 8 days ago | IN | 0 ETH | 0.00000151431 | ||||
Approve All Dele... | 128889249 | 8 days ago | IN | 0 ETH | 0.000001453507 | ||||
Approve All Dele... | 128639243 | 13 days ago | IN | 0 ETH | 0.000000110376 | ||||
Remove Claim On ... | 128497575 | 17 days ago | IN | 0 ETH | 0.000002182631 | ||||
Approve All Dele... | 128441687 | 18 days ago | IN | 0 ETH | 0.000000168978 | ||||
Approve All Dele... | 128404206 | 19 days ago | IN | 0 ETH | 0.000000110804 | ||||
Remove Claim On ... | 128356468 | 20 days ago | IN | 0 ETH | 0.000000313319 | ||||
Remove All Deleg... | 128334322 | 20 days ago | IN | 0 ETH | 0.000000138645 | ||||
Approve All Dele... | 128216821 | 23 days ago | IN | 0 ETH | 0.000000384732 | ||||
Approve All Dele... | 127953866 | 29 days ago | IN | 0 ETH | 0.000000574273 | ||||
Approve All Dele... | 127892055 | 31 days ago | IN | 0 ETH | 0.000003985698 | ||||
Approve All Dele... | 127826013 | 32 days ago | IN | 0 ETH | 0.000001438875 | ||||
Approve All Dele... | 127758456 | 34 days ago | IN | 0 ETH | 0.000000117555 | ||||
Remove All Deleg... | 127733254 | 34 days ago | IN | 0 ETH | 0.000000165857 | ||||
Approve All Dele... | 127733213 | 34 days ago | IN | 0 ETH | 0.000000169887 | ||||
Remove All Deleg... | 127367516 | 43 days ago | IN | 0 ETH | 0.000000214375 | ||||
Remove All Deleg... | 127018846 | 51 days ago | IN | 0 ETH | 0.0000001257 | ||||
Approve All Dele... | 127018819 | 51 days ago | IN | 0 ETH | 0.000000097168 | ||||
Remove All Deleg... | 126915244 | 53 days ago | IN | 0 ETH | 0.00000017172 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
107534612 | 502 days ago | 0 ETH | ||||
107522765 | 502 days ago | 0 ETH | ||||
107521671 | 502 days ago | 0 ETH | ||||
107521671 | 502 days ago | 0 ETH | ||||
107517879 | 502 days ago | 0 ETH | ||||
107517879 | 502 days ago | 0 ETH | ||||
107497783 | 503 days ago | 0 ETH | ||||
107497783 | 503 days ago | 0 ETH | ||||
107497751 | 503 days ago | 0 ETH | ||||
107497751 | 503 days ago | 0 ETH | ||||
107497725 | 503 days ago | 0 ETH | ||||
107497725 | 503 days ago | 0 ETH | ||||
107497683 | 503 days ago | 0 ETH | ||||
107497683 | 503 days ago | 0 ETH | ||||
107497641 | 503 days ago | 0 ETH | ||||
107497641 | 503 days ago | 0 ETH | ||||
107497514 | 503 days ago | 0 ETH | ||||
107497514 | 503 days ago | 0 ETH | ||||
107497514 | 503 days ago | 0 ETH | ||||
107497514 | 503 days ago | 0 ETH | ||||
107497514 | 503 days ago | 0 ETH | ||||
107497514 | 503 days ago | 0 ETH | ||||
107497412 | 503 days ago | 0 ETH | ||||
107491930 | 503 days ago | 0 ETH | ||||
107491930 | 503 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Genesis Bytecode Match Only)
Contract Name:
DelegateApprovals
Compiler Version
v0.5.16
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at optimistic.etherscan.io on 2021-08-25 */ /* ____ __ __ __ _ / __/__ __ ___ / /_ / / ___ / /_ (_)__ __ _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ / /___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\ /___/ * Synthetix: DelegateApprovals.sol * * Latest source (may be newer): https://github.com/Synthetixio/synthetix/blob/master/contracts/DelegateApprovals.sol * Docs: https://docs.synthetix.io/contracts/DelegateApprovals * * Contract Dependencies: * - IDelegateApprovals * - Owned * - State * Libraries: (none) * * MIT License * =========== * * Copyright (c) 2021 Synthetix * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */ pragma solidity ^0.5.16; // https://docs.synthetix.io/contracts/source/contracts/owned contract Owned { address public owner; address public nominatedOwner; constructor(address _owner) public { require(_owner != address(0), "Owner address cannot be 0"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external { require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership"); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner { _onlyOwner(); _; } function _onlyOwner() private view { require(msg.sender == owner, "Only the contract owner may perform this action"); } event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); } // https://docs.synthetix.io/contracts/source/interfaces/idelegateapprovals interface IDelegateApprovals { // Views function canBurnFor(address authoriser, address delegate) external view returns (bool); function canIssueFor(address authoriser, address delegate) external view returns (bool); function canClaimFor(address authoriser, address delegate) external view returns (bool); function canExchangeFor(address authoriser, address delegate) external view returns (bool); // Mutative function approveAllDelegatePowers(address delegate) external; function removeAllDelegatePowers(address delegate) external; function approveBurnOnBehalf(address delegate) external; function removeBurnOnBehalf(address delegate) external; function approveIssueOnBehalf(address delegate) external; function removeIssueOnBehalf(address delegate) external; function approveClaimOnBehalf(address delegate) external; function removeClaimOnBehalf(address delegate) external; function approveExchangeOnBehalf(address delegate) external; function removeExchangeOnBehalf(address delegate) external; } // Inheritance // https://docs.synthetix.io/contracts/source/contracts/state contract State is Owned { // the address of the contract that can modify variables // this can only be changed by the owner of this contract address public associatedContract; constructor(address _associatedContract) internal { // This contract is abstract, and thus cannot be instantiated directly require(owner != address(0), "Owner must be set"); associatedContract = _associatedContract; emit AssociatedContractUpdated(_associatedContract); } /* ========== SETTERS ========== */ // Change the associated contract to a new address function setAssociatedContract(address _associatedContract) external onlyOwner { associatedContract = _associatedContract; emit AssociatedContractUpdated(_associatedContract); } /* ========== MODIFIERS ========== */ modifier onlyAssociatedContract { require(msg.sender == associatedContract, "Only the associated contract can perform this action"); _; } /* ========== EVENTS ========== */ event AssociatedContractUpdated(address associatedContract); } // Inheritance // https://docs.synthetix.io/contracts/source/contracts/eternalstorage /** * @notice This contract is based on the code available from this blog * https://blog.colony.io/writing-upgradeable-contracts-in-solidity-6743f0eecc88/ * Implements support for storing a keccak256 key and value pairs. It is the more flexible * and extensible option. This ensures data schema changes can be implemented without * requiring upgrades to the storage contract. */ contract EternalStorage is Owned, State { constructor(address _owner, address _associatedContract) public Owned(_owner) State(_associatedContract) {} /* ========== DATA TYPES ========== */ mapping(bytes32 => uint) internal UIntStorage; mapping(bytes32 => string) internal StringStorage; mapping(bytes32 => address) internal AddressStorage; mapping(bytes32 => bytes) internal BytesStorage; mapping(bytes32 => bytes32) internal Bytes32Storage; mapping(bytes32 => bool) internal BooleanStorage; mapping(bytes32 => int) internal IntStorage; // UIntStorage; function getUIntValue(bytes32 record) external view returns (uint) { return UIntStorage[record]; } function setUIntValue(bytes32 record, uint value) external onlyAssociatedContract { UIntStorage[record] = value; } function deleteUIntValue(bytes32 record) external onlyAssociatedContract { delete UIntStorage[record]; } // StringStorage function getStringValue(bytes32 record) external view returns (string memory) { return StringStorage[record]; } function setStringValue(bytes32 record, string calldata value) external onlyAssociatedContract { StringStorage[record] = value; } function deleteStringValue(bytes32 record) external onlyAssociatedContract { delete StringStorage[record]; } // AddressStorage function getAddressValue(bytes32 record) external view returns (address) { return AddressStorage[record]; } function setAddressValue(bytes32 record, address value) external onlyAssociatedContract { AddressStorage[record] = value; } function deleteAddressValue(bytes32 record) external onlyAssociatedContract { delete AddressStorage[record]; } // BytesStorage function getBytesValue(bytes32 record) external view returns (bytes memory) { return BytesStorage[record]; } function setBytesValue(bytes32 record, bytes calldata value) external onlyAssociatedContract { BytesStorage[record] = value; } function deleteBytesValue(bytes32 record) external onlyAssociatedContract { delete BytesStorage[record]; } // Bytes32Storage function getBytes32Value(bytes32 record) external view returns (bytes32) { return Bytes32Storage[record]; } function setBytes32Value(bytes32 record, bytes32 value) external onlyAssociatedContract { Bytes32Storage[record] = value; } function deleteBytes32Value(bytes32 record) external onlyAssociatedContract { delete Bytes32Storage[record]; } // BooleanStorage function getBooleanValue(bytes32 record) external view returns (bool) { return BooleanStorage[record]; } function setBooleanValue(bytes32 record, bool value) external onlyAssociatedContract { BooleanStorage[record] = value; } function deleteBooleanValue(bytes32 record) external onlyAssociatedContract { delete BooleanStorage[record]; } // IntStorage function getIntValue(bytes32 record) external view returns (int) { return IntStorage[record]; } function setIntValue(bytes32 record, int value) external onlyAssociatedContract { IntStorage[record] = value; } function deleteIntValue(bytes32 record) external onlyAssociatedContract { delete IntStorage[record]; } } // Inheritance // Internal references // https://docs.synthetix.io/contracts/source/contracts/delegateapprovals contract DelegateApprovals is Owned, IDelegateApprovals { bytes32 public constant BURN_FOR_ADDRESS = "BurnForAddress"; bytes32 public constant ISSUE_FOR_ADDRESS = "IssueForAddress"; bytes32 public constant CLAIM_FOR_ADDRESS = "ClaimForAddress"; bytes32 public constant EXCHANGE_FOR_ADDRESS = "ExchangeForAddress"; bytes32 public constant APPROVE_ALL = "ApproveAll"; bytes32[5] private _delegatableFunctions = [ APPROVE_ALL, BURN_FOR_ADDRESS, ISSUE_FOR_ADDRESS, CLAIM_FOR_ADDRESS, EXCHANGE_FOR_ADDRESS ]; /* ========== STATE VARIABLES ========== */ EternalStorage public eternalStorage; constructor(address _owner, EternalStorage _eternalStorage) public Owned(_owner) { eternalStorage = _eternalStorage; } /* ========== VIEWS ========== */ // Move it to setter and associatedState // util to get key based on action name + address of authoriser + address for delegate function _getKey( bytes32 _action, address _authoriser, address _delegate ) internal pure returns (bytes32) { return keccak256(abi.encodePacked(_action, _authoriser, _delegate)); } // hash of actionName + address of authoriser + address for the delegate function canBurnFor(address authoriser, address delegate) external view returns (bool) { return _checkApproval(BURN_FOR_ADDRESS, authoriser, delegate); } function canIssueFor(address authoriser, address delegate) external view returns (bool) { return _checkApproval(ISSUE_FOR_ADDRESS, authoriser, delegate); } function canClaimFor(address authoriser, address delegate) external view returns (bool) { return _checkApproval(CLAIM_FOR_ADDRESS, authoriser, delegate); } function canExchangeFor(address authoriser, address delegate) external view returns (bool) { return _checkApproval(EXCHANGE_FOR_ADDRESS, authoriser, delegate); } function approvedAll(address authoriser, address delegate) public view returns (bool) { return eternalStorage.getBooleanValue(_getKey(APPROVE_ALL, authoriser, delegate)); } // internal function to check approval based on action // if approved for all actions then will return true // before checking specific approvals function _checkApproval( bytes32 action, address authoriser, address delegate ) internal view returns (bool) { if (approvedAll(authoriser, delegate)) return true; return eternalStorage.getBooleanValue(_getKey(action, authoriser, delegate)); } /* ========== SETTERS ========== */ // Approve All function approveAllDelegatePowers(address delegate) external { _setApproval(APPROVE_ALL, msg.sender, delegate); } // Removes all delegate approvals function removeAllDelegatePowers(address delegate) external { for (uint i = 0; i < _delegatableFunctions.length; i++) { _withdrawApproval(_delegatableFunctions[i], msg.sender, delegate); } } // Burn on behalf function approveBurnOnBehalf(address delegate) external { _setApproval(BURN_FOR_ADDRESS, msg.sender, delegate); } function removeBurnOnBehalf(address delegate) external { _withdrawApproval(BURN_FOR_ADDRESS, msg.sender, delegate); } // Issue on behalf function approveIssueOnBehalf(address delegate) external { _setApproval(ISSUE_FOR_ADDRESS, msg.sender, delegate); } function removeIssueOnBehalf(address delegate) external { _withdrawApproval(ISSUE_FOR_ADDRESS, msg.sender, delegate); } // Claim on behalf function approveClaimOnBehalf(address delegate) external { _setApproval(CLAIM_FOR_ADDRESS, msg.sender, delegate); } function removeClaimOnBehalf(address delegate) external { _withdrawApproval(CLAIM_FOR_ADDRESS, msg.sender, delegate); } // Exchange on behalf function approveExchangeOnBehalf(address delegate) external { _setApproval(EXCHANGE_FOR_ADDRESS, msg.sender, delegate); } function removeExchangeOnBehalf(address delegate) external { _withdrawApproval(EXCHANGE_FOR_ADDRESS, msg.sender, delegate); } function _setApproval( bytes32 action, address authoriser, address delegate ) internal { require(delegate != address(0), "Can't delegate to address(0)"); eternalStorage.setBooleanValue(_getKey(action, authoriser, delegate), true); emit Approval(authoriser, delegate, action); } function _withdrawApproval( bytes32 action, address authoriser, address delegate ) internal { // Check approval is set otherwise skip deleting approval if (eternalStorage.getBooleanValue(_getKey(action, authoriser, delegate))) { eternalStorage.deleteBooleanValue(_getKey(action, authoriser, delegate)); emit WithdrawApproval(authoriser, delegate, action); } } function setEternalStorage(EternalStorage _eternalStorage) external onlyOwner { require(address(_eternalStorage) != address(0), "Can't set eternalStorage to address(0)"); eternalStorage = _eternalStorage; emit EternalStorageUpdated(address(eternalStorage)); } /* ========== EVENTS ========== */ event Approval(address indexed authoriser, address delegate, bytes32 action); event WithdrawApproval(address indexed authoriser, address delegate, bytes32 action); event EternalStorageUpdated(address newEternalStorage); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract EternalStorage","name":"_eternalStorage","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authoriser","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newEternalStorage","type":"address"}],"name":"EternalStorageUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authoriser","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"WithdrawApproval","type":"event"},{"constant":true,"inputs":[],"name":"APPROVE_ALL","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BURN_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CLAIM_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EXCHANGE_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ISSUE_FOR_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveAllDelegatePowers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveBurnOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveClaimOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveExchangeOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"approveIssueOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"approvedAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canBurnFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canClaimFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canExchangeFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"authoriser","type":"address"},{"internalType":"address","name":"delegate","type":"address"}],"name":"canIssueFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"eternalStorage","outputs":[{"internalType":"contract EternalStorage","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeAllDelegatePowers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeBurnOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeClaimOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeExchangeOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegate","type":"address"}],"name":"removeIssueOnBehalf","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract EternalStorage","name":"_eternalStorage","type":"address"}],"name":"setEternalStorage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
80604052348015610019576000806100166110d8565b50505b50600436106101975760003560e01c80638da5cb5b116100e7578063b5bb5619116100a0578063c5e17ab01161007a578063c5e17ab014610529578063d8eeb7c114610531578063e32b3f5214610539578063faf431bb1461054157610197565b8063b5bb56191461049c578063b9156efa146104cb578063bc87acbf146104fa57610197565b80638da5cb5b146103ef57806398ff9c54146103f75780639c79ce35146103ff5780639cbc2ebe1461042e5780639f61d33614610436578063b42e0f151461046557610197565b8063447fbc63116101545780636c8bc9fe1161012e5780636c8bc9fe146103525780636f95200b1461038157806379ba5097146103b05780637d3f0ba2146103b857610197565b8063447fbc63146102d057806353a47bb7146102ff57806359cec3d61461032357610197565b806304872617146101a55780631627540c146101f057806321f4ae57146102215780632c70aecf146102585780634180e5b514610272578063431ce540146102a1575b6000806101a26110d8565b50505b6101dc600480360360408110156101c4576000806101c16110d8565b50505b506001600160a01b0381358116916020013516610578565b604051901515815260200160405180910390f35b61021f6004803603602081101561020f5760008061020c6110d8565b50505b50356001600160a01b03166105a0565b005b6101dc600480360360408110156102405760008061023d6110d8565b50505b506001600160a01b038135811691602001351661061a565b610260610639565b60405190815260200160405180910390f35b61021f600480360360208110156102915760008061028e6110d8565b50505b50356001600160a01b031661064f565b61021f600480360360208110156102c0576000806102bd6110d8565b50505b50356001600160a01b0316610677565b61021f600480360360208110156102ef576000806102ec6110d8565b50505b50356001600160a01b031661069c565b6103076106be565b6040516001600160a01b03909116815260200160405180910390f35b61021f600480360360208110156103425760008061033f6110d8565b50505b50356001600160a01b03166106dd565b61021f600480360360208110156103715760008061036e6110d8565b50505b50356001600160a01b03166106fb565b61021f600480360360208110156103a05760008061039d6110d8565b50505b50356001600160a01b031661071a565b61021f61075a565b6101dc600480360360408110156103d7576000806103d46110d8565b50505b506001600160a01b03813581169160200135166108dd565b6103076108fb565b610307610906565b61021f6004803603602081101561041e5760008061041b6110d8565b50505b50356001600160a01b0316610912565b610260610930565b61021f60048036036020811015610455576000806104526110d8565b50505b50356001600160a01b0316610941565b6101dc60048036036040811015610484576000806104816110d8565b50505b506001600160a01b0381358116916020013516610960565b61021f600480360360208110156104bb576000806104b86110d8565b50505b50356001600160a01b0316610a42565b61021f600480360360208110156104ea576000806104e76110d8565b50505b50356001600160a01b0316610b27565b61021f60048036036020811015610519576000806105166110d8565b50505b50356001600160a01b0316610b49565b610260610b63565b610260610b79565b610260610b92565b6101dc600480360360408110156105605760008061055d6110d8565b50505b506001600160a01b0381358116916020013516610ba7565b60006105976e4973737565466f724164647265737360881b8484610bc5565b90505b92915050565b6105a8610cb5565b80600180806105b5611143565b816001600160a01b0302191690836001600160a01b03160217906105d761119e565b5050507f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22816040516001600160a01b03909116815260200160405180910390a150565b60006105976e436c61696d466f724164647265737360881b8484610bc5565b6e4973737565466f724164647265737360881b81565b6106746e436c61696d466f724164647265737360881b5a61066e6111ec565b83610d2f565b50565b6106746e4973737565466f724164647265737360881b5a6106966111ec565b83610e9a565b6106747145786368616e6765466f724164647265737360701b5a61066e6111ec565b600060016106ca611143565b906101000a90046001600160a01b031681565b6106746d4275726e466f724164647265737360901b5a6106966111ec565b6106746e436c61696d466f724164647265737360881b5a6106966111ec565b60005b60058110156107565761074e6002826005811061073657fe5b0161073f611143565b5a6107486111ec565b84610e9a565b60010161071d565b5050565b60006001610766611143565b906101000a90046001600160a01b03166001600160a01b03165a6107886111ec565b6001600160a01b0316146107d65760405162461bcd60e51b815260040180806020018281038252603581526020018061145660359139604001915050604051809103906107d36110d8565b50505b7fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c600080610802611143565b906101000a90046001600160a01b0316600160009061081f611143565b906101000a90046001600160a01b03166040516001600160a01b039283168152911660208201526040908101905180910390a16000600161085e611143565b906101000a90046001600160a01b03166000806101000a8161087e611143565b816001600160a01b0302191690836001600160a01b03160217906108a061119e565b5050506000600160006101000a816108b6611143565b816001600160a01b0302191690836001600160a01b03160217906108d861119e565b505050565b60006105976d4275726e466f724164647265737360901b8484610bc5565b6000806106ca611143565b600060076106ca611143565b6106746d4275726e466f724164647265737360901b5a61066e6111ec565b69105c1c1c9bdd99505b1b60b21b81565b6106746e4973737565466f724164647265737360881b5a61066e6111ec565b600080600761096d611143565b906101000a90046001600160a01b03166001600160a01b03166317e7dd226109a369105c1c1c9bdd99505b1b60b21b868661106d565b6040516001600160e01b031960e084901b168152600481019190915260240160206040518083038186806109d5611232565b1580156109ea576000806109e76110d8565b50505b505a6109f461127e565b5050505050158015610a13573d6000803e3d6000610a106110d8565b50505b505050506040513d6020811015610a3257600080610a2f6110d8565b50505b8101908080519695505050505050565b610a4a610cb5565b6001600160a01b038116610a985760405162461bcd60e51b81526004018080602001828103825260268152602001806114306026913960400191505060405180910390610a956110d8565b50505b806007600181610aa6611143565b816001600160a01b0302191690836001600160a01b0316021790610ac861119e565b5050507fe3ebe3d58e84fbd094152babb730cf99a14b47f65ed04f35a3bd6356f8161a176007600090610af9611143565b906101000a90046001600160a01b03166040516001600160a01b03909116815260200160405180910390a150565b6106747145786368616e6765466f724164647265737360701b5a6106966111ec565b61067469105c1c1c9bdd99505b1b60b21b5a61066e6111ec565b6e436c61696d466f724164647265737360881b81565b7145786368616e6765466f724164647265737360701b81565b6d4275726e466f724164647265737360901b81565b60006105977145786368616e6765466f724164647265737360701b84845b6000610bd18383610960565b15610bde57506001610cae565b60006007610bea611143565b906101000a90046001600160a01b03166001600160a01b03166317e7dd22610c1386868661106d565b6040516001600160e01b031960e084901b16815260048101919091526024016020604051808303818680610c45611232565b158015610c5a57600080610c576110d8565b50505b505a610c6461127e565b5050505050158015610c83573d6000803e3d6000610c806110d8565b50505b505050506040513d6020811015610ca257600080610c9f6110d8565b50505b81019080805193505050505b9392505050565b600080610cc0611143565b906101000a90046001600160a01b03166001600160a01b03165a610ce26111ec565b6001600160a01b031614610d2d5760405162461bcd60e51b815260040180806020018281038252602f81526020018061148b602f9139604001915050604051809103906107566110d8565b565b6001600160a01b038116610d925760405162461bcd60e51b815260206004820152601c60248201527f43616e27742064656c656761746520746f206164647265737328302900000000604482015260640160405180910390610d8f6110d8565b50505b60006007610d9e611143565b906101000a90046001600160a01b03166001600160a01b0316633eba9ed2610dc785858561106d565b60016040516001600160e01b031960e085901b16815260048101929092521515602482015260440160006040518083038160008780610e04611232565b158015610e1957600080610e166110d8565b50505b505a610e23611369565b505050505050158015610e43573d6000803e3d6000610e406110d8565b50505b50505050816001600160a01b03167f36a9e0c1da9cdc6d8f4bd4cb261f9ad6a45eb1641a557ead7530fbeff9a2633682856040516001600160a01b03909216825260208201526040908101905180910390a2505050565b60006007610ea6611143565b906101000a90046001600160a01b03166001600160a01b03166317e7dd22610ecf85858561106d565b6040516001600160e01b031960e084901b16815260048101919091526024016020604051808303818680610f01611232565b158015610f1657600080610f136110d8565b50505b505a610f2061127e565b5050505050158015610f3f573d6000803e3d6000610f3c6110d8565b50505b505050506040513d6020811015610f5e57600080610f5b6110d8565b50505b8101908080511592506108d89150505760006007610f7a611143565b906101000a90046001600160a01b03166001600160a01b0316633cc1635c610fa385858561106d565b6040516001600160e01b031960e084901b168152600481019190915260240160006040518083038160008780610fd7611232565b158015610fec57600080610fe96110d8565b50505b505a610ff6611369565b505050505050158015611016573d6000803e3d60006110136110d8565b50505b50505050816001600160a01b03167f7e8dc09322ac82342d9dbfd49eb6497fa7ab69ac444f3763a9b8e16530342f4182856040516001600160a01b03909216825260208201526040908101905180910390a2505050565b600083838360405160200180848152602001836001600160a01b03166001600160a01b031660601b8152601401826001600160a01b03166001600160a01b031660601b8152601401935050505060405160208183030381529060405280519060200120949350505050565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156111105780860151828201604001526020016110f5565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b60408110156108d857600082820152602001611187565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b600081526020611187565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611187565b638435035b598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611187565b638540661f598160e01b81526112af565b808083111561059a575090919050565b808083101561059a575090919050565b836004820152846024820152606060448201528660648201526084810160005b888110156112e75780880151828201526020016112cf565b506060828960a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8b8b82606087013350600060045af1505961133c8d3d61129f565b8c01611348818761128f565b5b8281101561135d5760008152602001611349565b50929c50505050505050565b6385979f76598160e01b8152836004820152846024820152606060448201528760648201526084810160005b898110156113ad578089015182820152602001611395565b506060828a60a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8c8c82606087013350600060045af150596114028e3d61129f565b8d0161140e818761128f565b5b82811015611423576000815260200161140f565b50929d5050505050505056fe43616e27742073657420657465726e616c53746f7261676520746f2061646472657373283029596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80638da5cb5b116100de578063b5bb561911610097578063c5e17ab011610071578063c5e17ab014610487578063d8eeb7c11461048f578063e32b3f5214610497578063faf431bb1461049f5761018e565b8063b5bb561914610415578063b9156efa1461043b578063bc87acbf146104615761018e565b80638da5cb5b1461038357806398ff9c541461038b5780639c79ce35146103935780639cbc2ebe146103b95780639f61d336146103c1578063b42e0f15146103e75761018e565b8063447fbc631161014b5780636c8bc9fe116101255780636c8bc9fe146103015780636f95200b1461032757806379ba50971461034d5780637d3f0ba2146103555761018e565b8063447fbc631461029157806353a47bb7146102b757806359cec3d6146102db5761018e565b806304872617146101935780631627540c146101d557806321f4ae57146101fd5780632c70aecf1461022b5780634180e5b514610245578063431ce5401461026b575b600080fd5b6101c1600480360360408110156101a957600080fd5b506001600160a01b03813581169160200135166104cd565b604080519115158252519081900360200190f35b6101fb600480360360208110156101eb57600080fd5b50356001600160a01b03166104f3565b005b6101c16004803603604081101561021357600080fd5b506001600160a01b038135811691602001351661054f565b61023361056e565b60408051918252519081900360200190f35b6101fb6004803603602081101561025b57600080fd5b50356001600160a01b0316610584565b6101fb6004803603602081101561028157600080fd5b50356001600160a01b03166105a4565b6101fb600480360360208110156102a757600080fd5b50356001600160a01b03166105c1565b6102bf6105e1565b604080516001600160a01b039092168252519081900360200190f35b6101fb600480360360208110156102f157600080fd5b50356001600160a01b03166105f0565b6101fb6004803603602081101561031757600080fd5b50356001600160a01b031661060c565b6101fb6004803603602081101561033d57600080fd5b50356001600160a01b0316610629565b6101fb61065a565b6101c16004803603604081101561036b57600080fd5b506001600160a01b0381358116916020013516610716565b6102bf610734565b6102bf610743565b6101fb600480360360208110156103a957600080fd5b50356001600160a01b0316610752565b61023361076e565b6101fb600480360360208110156103d757600080fd5b50356001600160a01b031661077f565b6101c1600480360360408110156103fd57600080fd5b506001600160a01b038135811691602001351661079c565b6101fb6004803603602081101561042b57600080fd5b50356001600160a01b031661082f565b6101fb6004803603602081101561045157600080fd5b50356001600160a01b03166108d6565b6101fb6004803603602081101561047757600080fd5b50356001600160a01b03166108f6565b61023361090e565b610233610924565b61023361093d565b6101c1600480360360408110156104b557600080fd5b506001600160a01b0381358116916020013516610952565b60006104ec6e4973737565466f724164647265737360881b8484610970565b9392505050565b6104fb610a0d565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b60006104ec6e436c61696d466f724164647265737360881b8484610970565b6e4973737565466f724164647265737360881b81565b6105a16e436c61696d466f724164647265737360881b3383610a58565b50565b6105a16e4973737565466f724164647265737360881b3383610b78565b6105a17145786368616e6765466f724164647265737360701b3383610a58565b6001546001600160a01b031681565b6105a16d4275726e466f724164647265737360901b3383610b78565b6105a16e436c61696d466f724164647265737360881b3383610b78565b60005b60058110156106565761064e6002826005811061064557fe5b01543384610b78565b60010161062c565b5050565b6001546001600160a01b031633146106a35760405162461bcd60e51b8152600401808060200182810382526035815260200180610d256035913960400191505060405180910390fd5b600054600154604080516001600160a01b03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006104ec6d4275726e466f724164647265737360901b8484610970565b6000546001600160a01b031681565b6007546001600160a01b031681565b6105a16d4275726e466f724164647265737360901b3383610a58565b69105c1c1c9bdd99505b1b60b21b81565b6105a16e4973737565466f724164647265737360881b3383610a58565b6007546000906001600160a01b03166317e7dd226107c869105c1c1c9bdd99505b1b60b21b8686610cb2565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156107fc57600080fd5b505afa158015610810573d6000803e3d6000fd5b505050506040513d602081101561082657600080fd5b50519392505050565b610837610a0d565b6001600160a01b03811661087c5760405162461bcd60e51b8152600401808060200182810382526026815260200180610cff6026913960400191505060405180910390fd5b600780546001600160a01b0319166001600160a01b03838116919091179182905560408051929091168252517fe3ebe3d58e84fbd094152babb730cf99a14b47f65ed04f35a3bd6356f8161a17916020908290030190a150565b6105a17145786368616e6765466f724164647265737360701b3383610b78565b6105a169105c1c1c9bdd99505b1b60b21b3383610a58565b6e436c61696d466f724164647265737360881b81565b7145786368616e6765466f724164647265737360701b81565b6d4275726e466f724164647265737360901b81565b60006104ec7145786368616e6765466f724164647265737360701b84845b600061097c838361079c565b15610989575060016104ec565b6007546001600160a01b03166317e7dd226109a5868686610cb2565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d6020811015610a0357600080fd5b5051949350505050565b6000546001600160a01b03163314610a565760405162461bcd60e51b815260040180806020018281038252602f815260200180610d5a602f913960400191505060405180910390fd5b565b6001600160a01b038116610ab3576040805162461bcd60e51b815260206004820152601c60248201527f43616e27742064656c656761746520746f206164647265737328302900000000604482015290519081900360640190fd5b6007546001600160a01b0316633eba9ed2610acf858585610cb2565b60016040518363ffffffff1660e01b8152600401808381526020018215151515815260200192505050600060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b5050604080516001600160a01b03858116825260208201889052825190871694507f36a9e0c1da9cdc6d8f4bd4cb261f9ad6a45eb1641a557ead7530fbeff9a2633693509081900390910190a2505050565b6007546001600160a01b03166317e7dd22610b94858585610cb2565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610bc857600080fd5b505afa158015610bdc573d6000803e3d6000fd5b505050506040513d6020811015610bf257600080fd5b505115610cad576007546001600160a01b0316633cc1635c610c15858585610cb2565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610c4b57600080fd5b505af1158015610c5f573d6000803e3d6000fd5b5050604080516001600160a01b03858116825260208201889052825190871694507f7e8dc09322ac82342d9dbfd49eb6497fa7ab69ac444f3763a9b8e16530342f4193509081900390910190a25b505050565b6040805160208082018690526bffffffffffffffffffffffff19606086811b82168486015285901b1660548301528251604881840301815260689092019092528051910120939250505056fe43616e27742073657420657465726e616c53746f7261676520746f2061646472657373283029596f75206d757374206265206e6f6d696e61746564206265666f726520796f752063616e20616363657074206f776e6572736869704f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6ea265627a7a72315820e12b7b14c18eca217ff78f5999c2f2cb4e2a6a9b5bc34992f3bd69f69dbc445164736f6c63430005100032
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.