ETH Price: $2,393.75 (-3.84%)

Contract

0x55BD29A30a9Aa4F5529FFda839FD2E136ADFdc6F
 

Overview

ETH Balance

0.924066602645502648 ETH

Eth Value

$2,211.99 (@ $2,393.75/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw ERC20178774812023-08-09 12:55:23420 days ago1691585723IN
0x55BD29A3...36ADFdc6F
0 ETH0.0027908925.2756898
Withdraw178774772023-08-09 12:54:35420 days ago1691585675IN
0x55BD29A3...36ADFdc6F
0 ETH0.0015269225.48435329
Set Admin Addres...173632202023-05-29 7:40:35492 days ago1685346035IN
0x55BD29A3...36ADFdc6F
0 ETH0.0018675940.22566373
Withdraw ERC20173512832023-05-27 15:28:11494 days ago1685201291IN
0x55BD29A3...36ADFdc6F
0 ETH0.0028802926.08536786
Withdraw173512762023-05-27 15:26:35494 days ago1685201195IN
0x55BD29A3...36ADFdc6F
0 ETH0.0015013925.05831646
Set Admin Addres...162765022022-12-27 13:52:47645 days ago1672149167IN
0x55BD29A3...36ADFdc6F
0 ETH0.0011074723.84733332
Set Admin Addres...162765012022-12-27 13:52:35645 days ago1672149155IN
0x55BD29A3...36ADFdc6F
0 ETH0.001101723.7232187
Set Admin Addres...162765002022-12-27 13:52:23645 days ago1672149143IN
0x55BD29A3...36ADFdc6F
0 ETH0.001118624.09342792
Set Admin Addres...162764992022-12-27 13:52:11645 days ago1672149131IN
0x55BD29A3...36ADFdc6F
0 ETH0.001175225.30591419
Init162764972022-12-27 13:51:47645 days ago1672149107IN
0x55BD29A3...36ADFdc6F
0 ETH0.0046531625.08160967
0x60806040162764942022-12-27 13:51:11645 days ago1672149071IN
 Create: ChainzokuShareRoyalties
0 ETH0.032965523.79357759

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
199275262024-05-22 19:31:59133 days ago1716406319
0x55BD29A3...36ADFdc6F
0.00385 ETH
198220892024-05-08 1:33:35148 days ago1715132015
0x55BD29A3...36ADFdc6F
0.002 ETH
196663762024-04-16 6:52:11169 days ago1713250331
0x55BD29A3...36ADFdc6F
0.003 ETH
196434942024-04-13 1:50:23173 days ago1712973023
0x55BD29A3...36ADFdc6F
0.00003 ETH
196432292024-04-13 0:56:23173 days ago1712969783
0x55BD29A3...36ADFdc6F
0.00015 ETH
195557612024-03-31 18:51:23185 days ago1711911083
0x55BD29A3...36ADFdc6F
0.00275 ETH
194069162024-03-10 19:54:47206 days ago1710100487
0x55BD29A3...36ADFdc6F
0.001225 ETH
194042792024-03-10 11:04:59206 days ago1710068699
0x55BD29A3...36ADFdc6F
0.001935 ETH
192766962024-02-21 14:41:59224 days ago1708526519
0x55BD29A3...36ADFdc6F
0.005 ETH
192487962024-02-17 16:34:23228 days ago1708187663
0x55BD29A3...36ADFdc6F
0.00195 ETH
192357722024-02-15 20:39:59230 days ago1708029599
0x55BD29A3...36ADFdc6F
0.0014 ETH
192336112024-02-15 13:25:23230 days ago1708003523
0x55BD29A3...36ADFdc6F
0.0044 ETH
191993982024-02-10 18:11:11235 days ago1707588671
0x55BD29A3...36ADFdc6F
0.00145 ETH
191992662024-02-10 17:44:47235 days ago1707587087
0x55BD29A3...36ADFdc6F
0.007385 ETH
190616392024-01-22 10:19:11254 days ago1705918751
0x55BD29A3...36ADFdc6F
0.0054 ETH
189954862024-01-13 4:07:59263 days ago1705118879
0x55BD29A3...36ADFdc6F
0.00495 ETH
189954822024-01-13 4:07:11263 days ago1705118831
0x55BD29A3...36ADFdc6F
0.007 ETH
189665052024-01-09 2:40:47268 days ago1704768047
0x55BD29A3...36ADFdc6F
0.0005 ETH
189426862024-01-05 17:55:47271 days ago1704477347
0x55BD29A3...36ADFdc6F
0.00295 ETH
189356262024-01-04 18:03:47272 days ago1704391427
0x55BD29A3...36ADFdc6F
0.001 ETH
189066092023-12-31 16:20:35276 days ago1704039635
0x55BD29A3...36ADFdc6F
0.00125 ETH
188727382023-12-26 22:07:47281 days ago1703628467
0x55BD29A3...36ADFdc6F
0.0020291 ETH
188640652023-12-25 16:56:23282 days ago1703523383
0x55BD29A3...36ADFdc6F
0.0005 ETH
188364392023-12-21 19:51:11286 days ago1703188271
0x55BD29A3...36ADFdc6F
0.0035 ETH
188243102023-12-20 3:00:23288 days ago1703041223
0x55BD29A3...36ADFdc6F
0.001 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ChainzokuShareRoyalties

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion
File 1 of 10 : ChainzokuShareRoyalties.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./Initialize.sol";
import "./Royalties.sol";

contract ChainzokuShareRoyalties is Initialize, Royalties {

    constructor() Royalties(){}

    function init(address _multiSigContract, Part[] memory _parts) public onlyOwner isNotInitialized{
        MultiSigProxy._setMultiSigContract(_multiSigContract);
        Royalties._addParts(_parts);
    }

}

File 2 of 10 : Initialize.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

// @author: miinded.com

abstract contract Initialize {

    bool private _initialized = false;

    modifier isNotInitialized() {
        require(_initialized == false, "Already Initialized");
        _;
        _initialized = true;
    }
}

File 3 of 10 : Royalties.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import "./MultiSigProxy.sol";

contract Royalties is MultiSigProxy {
    using SafeMath for uint256;

    /**
    @notice Struct containing the association between the wallet and its share
    @dev The share can be /100 or /1000 or something else like /50
    */
    struct Part {
        address wallet;
        uint256 royaltiesPart;
    }

    /**
    @notice Stock the parts of each wallets
    */
    Part[] public parts;

    /**
    @dev Calculation of the divider for royalties for the calculation of each part
    */
    uint256 public royaltiesDivider;

    /**
    @dev list of ERC20 Token available for the withdraw
    */
    address[] public ERC20Address;

    constructor(){
        ERC20Address.push(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); // USDC
        ERC20Address.push(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); // WETH
        ERC20Address.push(0x6B175474E89094C44Da98b954EedeAC495271d0F); // DAI
    }

    /**
    @notice Add a new wallet in the withdraw process
    @dev this method is only internal, it's not possible to add someone after the contract minting
    */
    function _addPart(Part memory _part) internal {
        parts.push(_part);
        royaltiesDivider += _part.royaltiesPart;
    }
    function _addParts(Part[] memory _parts) internal {
        for(uint256 i = 0; i < _parts.length; i++){
            _addPart(_parts[i]);
        }
    }

    function addPart(Part memory _part) public onlyOwnerOrAdmins {
        MultiSigProxy.validate("addPart");

        _addPart(_part);
    }

    function removePart(uint256 key) public onlyOwnerOrAdmins {
        MultiSigProxy.validate("removePart");

        royaltiesDivider -= parts[key].royaltiesPart;

        parts[key].royaltiesPart = 0;
    }

    /**
    @notice Run the transfer of all ETH to the wallets with each % part of royalties
    */
    function withdraw() public onlyOwnerOrAdmins {

        uint256 balance = address(this).balance;
        require(balance > 0, "Contract Balance = 0");

        for(uint8 i = 0; i < parts.length; i++){
            if(parts[i].royaltiesPart > 0){
                _withdraw(parts[i].wallet, balance.mul(parts[i].royaltiesPart).div(royaltiesDivider));
            }
        }
    }

    /**
    @notice Run the transfer of all Token ERC20 to the wallets with each % part royalties
    */
    function withdrawERC20() public onlyOwnerOrAdmins {

        for(uint256 j = 0; j < ERC20Address.length; j++){
            if(ERC20Address[j] == address(0)){
                continue;
            }
            uint256 balance = IERC20(ERC20Address[j]).balanceOf(address(this));
            for(uint256 i = 0; i < parts.length; i++){
                if(parts[i].royaltiesPart > 0 && balance > 0){
                    IERC20(ERC20Address[j]).transfer(parts[i].wallet, balance.mul(parts[i].royaltiesPart).div(royaltiesDivider));
                }
            }
        }
    }

    /**
    @notice Do a transfer ETH to _address
    */
    function _withdraw(address _address, uint256 _amount) private {
        (bool success, ) = _address.call{value: _amount}("");
        require(success, "Transfer failed.");
    }

    /**
    @notice Add a new ERC20 Token in the contract withdraw
    */
    function addERC20Address(address _contract) public onlyOwnerOrAdmins{
        ERC20Address.push(_contract);
    }

    /**
    @notice Remove a ERC20 Token in the contract withdraw
    */
    function removeERC20Address(address _contract) public onlyOwnerOrAdmins{
        for(uint256 i = 0; i < ERC20Address.length;i++){
            if(ERC20Address[i] == _contract){
                ERC20Address[i] = address(0);
            }
        }
    }

    receive() external payable {}
}

File 4 of 10 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 5 of 10 : SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

File 6 of 10 : MultiSigProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./interface/IMultiSig.sol";
import "./Admins.sol";

// @author: miinded.com

abstract contract MultiSigProxy is Admins {

    address public multiSigContract;

    function _setMultiSigContract(address _contract) internal {
        multiSigContract = _contract;
    }

    function setMultiSigContract(address _contract) public onlyOwnerOrAdmins {
        IMultiSig(multiSigContract).validate("setMultiSigContract");

        _setMultiSigContract(_contract);
    }

    function validate(string memory _method) internal {
        IMultiSig(multiSigContract).validate(_method);
    }

}

File 7 of 10 : IMultiSig.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

// @author: miinded.com

interface IMultiSig {
    function validate(string memory) external;
}

File 8 of 10 : Admins.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";

// @author: miinded.com

abstract contract Admins is Ownable{

    mapping(address => bool) private admins;

    /**
    @dev check if the address is admin or not
    **/
    function isAdmin(address _admin) public view returns(bool) {
        return admins[_admin];
    }

    /**
    @dev Set the wallet address who can pass the onlyAdmin modifier
    **/
    function setAdminAddress(address _admin, bool _active) public virtual onlyOwner {
        admins[_admin] = _active;
    }

    /**
    @notice Check if the sender is owner() or admin
    **/
    modifier onlyOwnerOrAdmins() {
        require(admins[_msgSender()] == true || owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

}

File 9 of 10 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _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 10 of 10 : Context.sol
// SPDX-License-Identifier: MIT
// 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;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ERC20Address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"addERC20Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"royaltiesPart","type":"uint256"}],"internalType":"struct Royalties.Part","name":"_part","type":"tuple"}],"name":"addPart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_multiSigContract","type":"address"},{"components":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"royaltiesPart","type":"uint256"}],"internalType":"struct Royalties.Part[]","name":"_parts","type":"tuple[]"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiSigContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"parts","outputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"royaltiesPart","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"removeERC20Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"key","type":"uint256"}],"name":"removePart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltiesDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bool","name":"_active","type":"bool"}],"name":"setAdminAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setMultiSigContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805460ff1916905534801561001a57600080fd5b50610024336100cf565b600580546001818101835560008390527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db091820180546001600160a01b031990811673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179091558354808301855583018054821673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790558354918201909355018054909116736b175474e89094c44da98b954eedeac495271d0f179055610128565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b61160a806101376000396000f3fe6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bd9b56c311610074578063e939871511610059578063e939871514610327578063f2fde38b14610347578063f59d83bf1461036757600080fd5b8063bd9b56c3146102c8578063c9eb4662146102e857600080fd5b80638da5cb5b1461022d5780638faaefc81461026457806395a4b24e14610284578063ad190f86146102a457600080fd5b806354c46880116100e157806354c46880146101b857806357087812146101d85780635bc63820146101f8578063715018a61461021857600080fd5b806324d7806c1461011e5780632ed6d5e81461016c57806334c6d8b5146101835780633ccfd60b146101a357600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061015761013936600461126f565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561017857600080fd5b50610181610387565b005b34801561018f57600080fd5b5061018161019e36600461126f565b61069d565b3480156101af57600080fd5b506101816107ef565b3480156101c457600080fd5b506101816101d3366004611328565b610996565b3480156101e457600080fd5b506101816101f336600461126f565b610a33565b34801561020457600080fd5b506101816102133660046113fb565b610b12565b34801561022457600080fd5b50610181610b45565b34801561023957600080fd5b5060005461010090046001600160a01b03165b6040516001600160a01b039091168152602001610163565b34801561027057600080fd5b5060025461024c906001600160a01b031681565b34801561029057600080fd5b5061018161029f36600461126f565b610b59565b3480156102b057600080fd5b506102ba60045481565b604051908152602001610163565b3480156102d457600080fd5b506101816102e3366004611432565b610c73565b3480156102f457600080fd5b50610308610303366004611432565b610d9b565b604080516001600160a01b039093168352602083019190915201610163565b34801561033357600080fd5b5061024c610342366004611432565b610dd3565b34801561035357600080fd5b5061018161036236600461126f565b610dfd565b34801561037357600080fd5b5061018161038236600461144b565b610e8a565b3360009081526001602081905260409091205460ff16151514806103bb57506000546001600160a01b036101009091041633145b61040c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b60055481101561069a5760006001600160a01b03166005828154811061043757610437611467565b6000918252602090912001546001600160a01b0316146106885760006005828154811061046657610466611467565b6000918252602090912001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f4919061147d565b905060005b6003548110156106855760006003828154811061051857610518611467565b9060005260206000209060020201600101541180156105375750600082115b15610673576005838154811061054f5761054f611467565b600091825260209091200154600380546001600160a01b039092169163a9059cbb91908490811061058257610582611467565b906000526020600020906002020160000160009054906101000a90046001600160a01b03166105ea6004546105e4600387815481106105c3576105c3611467565b90600052602060002090600202016001015488610f5190919063ffffffff16565b90610f66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190611496565b505b8061067d816114d0565b9150506104f9565b50505b80610692816114d0565b91505061040f565b50565b3360009081526001602081905260409091205460ff16151514806106d157506000546001600160a01b036101009091041633145b61071d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b6002546040517fd182b83b00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f7365744d756c7469536967436f6e74726163740000000000000000000000000060448201526001600160a01b039091169063d182b83b90606401600060405180830381600087803b1580156107a957600080fd5b505af11580156107bd573d6000803e3d6000fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555061069a9050565b3360009081526001602081905260409091205460ff161515148061082357506000546001600160a01b036101009091041633145b61086f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b47806108bd5760405162461bcd60e51b815260206004820152601460248201527f436f6e74726163742042616c616e6365203d20300000000000000000000000006044820152606401610403565b60005b60035460ff8216101561099257600060038260ff16815481106108e5576108e5611467565b90600052602060002090600202016001015411156109805761098060038260ff168154811061091657610916611467565b906000526020600020906002020160000160009054906101000a90046001600160a01b031661097b6004546105e460038660ff168154811061095a5761095a611467565b90600052602060002090600202016001015487610f5190919063ffffffff16565b610f72565b8061098a81611508565b9150506108c0565b5050565b61099e61101a565b60005460ff16156109f15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920496e697469616c697a6564000000000000000000000000006044820152606401610403565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416179055610a228161107a565b50506000805460ff19166001179055565b3360009081526001602081905260409091205460ff1615151480610a6757506000546001600160a01b036101009091041633145b610ab35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b1a61101a565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b610b4d61101a565b610b5760006110ba565b565b3360009081526001602081905260409091205460ff1615151480610b8d57506000546001600160a01b036101009091041633145b610bd95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b60005b60055481101561099257816001600160a01b031660058281548110610c0357610c03611467565b6000918252602090912001546001600160a01b031603610c6157600060058281548110610c3257610c32611467565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80610c6b816114d0565b915050610bdc565b3360009081526001602081905260409091205460ff1615151480610ca757506000546001600160a01b036101009091041633145b610cf35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b610d316040518060400160405280600a81526020017f72656d6f7665506172740000000000000000000000000000000000000000000081525061112a565b60038181548110610d4457610d44611467565b90600052602060002090600202016001015460046000828254610d679190611527565b92505081905550600060038281548110610d8357610d83611467565b90600052602060002090600202016001018190555050565b60038181548110610dab57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058181548110610de357600080fd5b6000918252602090912001546001600160a01b0316905081565b610e0561101a565b6001600160a01b038116610e815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610403565b61069a816110ba565b3360009081526001602081905260409091205460ff1615151480610ebe57506000546001600160a01b036101009091041633145b610f0a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b610f486040518060400160405280600781526020017f616464506172740000000000000000000000000000000000000000000000000081525061112a565b61069a816111a8565b6000610f5d828461153a565b90505b92915050565b6000610f5d8284611551565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610fbf576040519150601f19603f3d011682016040523d82523d6000602084013e610fc4565b606091505b50509050806110155760405162461bcd60e51b815260206004820152601060248201527f5472616e73666572206661696c65642e000000000000000000000000000000006044820152606401610403565b505050565b6000546001600160a01b03610100909104163314610b575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b60005b8151811015610992576110a882828151811061109b5761109b611467565b60200260200101516111a8565b806110b2816114d0565b91505061107d565b600080546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6002546040517fd182b83b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d182b83b90611173908490600401611573565b600060405180830381600087803b15801561118d57600080fd5b505af11580156111a1573d6000803e3d6000fd5b5050505050565b60038054600181018255600091825282517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909202918201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208301517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909101819055600480549192909161124b9084906115c1565b909155505050565b80356001600160a01b038116811461126a57600080fd5b919050565b60006020828403121561128157600080fd5b610f5d82611253565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112c9576112c961128a565b604052919050565b6000604082840312156112e357600080fd5b6040516040810181811067ffffffffffffffff821117156113065761130661128a565b60405290508061131583611253565b8152602083013560208201525092915050565b600080604080848603121561133c57600080fd5b61134584611253565b925060208085013567ffffffffffffffff8082111561136357600080fd5b818701915087601f83011261137757600080fd5b8135818111156113895761138961128a565b611397848260051b016112a0565b818152848101925060069190911b8301840190898211156113b757600080fd5b928401925b818410156113dd576113ce8a856112d1565b835292850192918401916113bc565b8096505050505050509250929050565b801515811461069a57600080fd5b6000806040838503121561140e57600080fd5b61141783611253565b91506020830135611427816113ed565b809150509250929050565b60006020828403121561144457600080fd5b5035919050565b60006040828403121561145d57600080fd5b610f5d83836112d1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561148f57600080fd5b5051919050565b6000602082840312156114a857600080fd5b81516114b3816113ed565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611501576115016114ba565b5060010190565b600060ff821660ff810361151e5761151e6114ba565b60010192915050565b81810381811115610f6057610f606114ba565b8082028115828204841417610f6057610f606114ba565b60008261156e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156115a057858101830151858201604001528201611584565b506000604082860101526040601f19601f8301168501019250505092915050565b80820180821115610f6057610f606114ba56fea26469706673582212203d11fa5ec172ab8abddb54ef9a1c26976f4668d471576cce0bb790c2ce5a7cc764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101125760003560e01c80638da5cb5b116100a5578063bd9b56c311610074578063e939871511610059578063e939871514610327578063f2fde38b14610347578063f59d83bf1461036757600080fd5b8063bd9b56c3146102c8578063c9eb4662146102e857600080fd5b80638da5cb5b1461022d5780638faaefc81461026457806395a4b24e14610284578063ad190f86146102a457600080fd5b806354c46880116100e157806354c46880146101b857806357087812146101d85780635bc63820146101f8578063715018a61461021857600080fd5b806324d7806c1461011e5780632ed6d5e81461016c57806334c6d8b5146101835780633ccfd60b146101a357600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5061015761013936600461126f565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020015b60405180910390f35b34801561017857600080fd5b50610181610387565b005b34801561018f57600080fd5b5061018161019e36600461126f565b61069d565b3480156101af57600080fd5b506101816107ef565b3480156101c457600080fd5b506101816101d3366004611328565b610996565b3480156101e457600080fd5b506101816101f336600461126f565b610a33565b34801561020457600080fd5b506101816102133660046113fb565b610b12565b34801561022457600080fd5b50610181610b45565b34801561023957600080fd5b5060005461010090046001600160a01b03165b6040516001600160a01b039091168152602001610163565b34801561027057600080fd5b5060025461024c906001600160a01b031681565b34801561029057600080fd5b5061018161029f36600461126f565b610b59565b3480156102b057600080fd5b506102ba60045481565b604051908152602001610163565b3480156102d457600080fd5b506101816102e3366004611432565b610c73565b3480156102f457600080fd5b50610308610303366004611432565b610d9b565b604080516001600160a01b039093168352602083019190915201610163565b34801561033357600080fd5b5061024c610342366004611432565b610dd3565b34801561035357600080fd5b5061018161036236600461126f565b610dfd565b34801561037357600080fd5b5061018161038236600461144b565b610e8a565b3360009081526001602081905260409091205460ff16151514806103bb57506000546001600160a01b036101009091041633145b61040c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b60055481101561069a5760006001600160a01b03166005828154811061043757610437611467565b6000918252602090912001546001600160a01b0316146106885760006005828154811061046657610466611467565b6000918252602090912001546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f4919061147d565b905060005b6003548110156106855760006003828154811061051857610518611467565b9060005260206000209060020201600101541180156105375750600082115b15610673576005838154811061054f5761054f611467565b600091825260209091200154600380546001600160a01b039092169163a9059cbb91908490811061058257610582611467565b906000526020600020906002020160000160009054906101000a90046001600160a01b03166105ea6004546105e4600387815481106105c3576105c3611467565b90600052602060002090600202016001015488610f5190919063ffffffff16565b90610f66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561064d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106719190611496565b505b8061067d816114d0565b9150506104f9565b50505b80610692816114d0565b91505061040f565b50565b3360009081526001602081905260409091205460ff16151514806106d157506000546001600160a01b036101009091041633145b61071d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b6002546040517fd182b83b00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f7365744d756c7469536967436f6e74726163740000000000000000000000000060448201526001600160a01b039091169063d182b83b90606401600060405180830381600087803b1580156107a957600080fd5b505af11580156107bd573d6000803e3d6000fd5b50506002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790555061069a9050565b3360009081526001602081905260409091205460ff161515148061082357506000546001600160a01b036101009091041633145b61086f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b47806108bd5760405162461bcd60e51b815260206004820152601460248201527f436f6e74726163742042616c616e6365203d20300000000000000000000000006044820152606401610403565b60005b60035460ff8216101561099257600060038260ff16815481106108e5576108e5611467565b90600052602060002090600202016001015411156109805761098060038260ff168154811061091657610916611467565b906000526020600020906002020160000160009054906101000a90046001600160a01b031661097b6004546105e460038660ff168154811061095a5761095a611467565b90600052602060002090600202016001015487610f5190919063ffffffff16565b610f72565b8061098a81611508565b9150506108c0565b5050565b61099e61101a565b60005460ff16156109f15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920496e697469616c697a6564000000000000000000000000006044820152606401610403565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416179055610a228161107a565b50506000805460ff19166001179055565b3360009081526001602081905260409091205460ff1615151480610a6757506000546001600160a01b036101009091041633145b610ab35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610b1a61101a565b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b610b4d61101a565b610b5760006110ba565b565b3360009081526001602081905260409091205460ff1615151480610b8d57506000546001600160a01b036101009091041633145b610bd95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b60005b60055481101561099257816001600160a01b031660058281548110610c0357610c03611467565b6000918252602090912001546001600160a01b031603610c6157600060058281548110610c3257610c32611467565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80610c6b816114d0565b915050610bdc565b3360009081526001602081905260409091205460ff1615151480610ca757506000546001600160a01b036101009091041633145b610cf35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b610d316040518060400160405280600a81526020017f72656d6f7665506172740000000000000000000000000000000000000000000081525061112a565b60038181548110610d4457610d44611467565b90600052602060002090600202016001015460046000828254610d679190611527565b92505081905550600060038281548110610d8357610d83611467565b90600052602060002090600202016001018190555050565b60038181548110610dab57600080fd5b6000918252602090912060029091020180546001909101546001600160a01b03909116915082565b60058181548110610de357600080fd5b6000918252602090912001546001600160a01b0316905081565b610e0561101a565b6001600160a01b038116610e815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610403565b61069a816110ba565b3360009081526001602081905260409091205460ff1615151480610ebe57506000546001600160a01b036101009091041633145b610f0a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b610f486040518060400160405280600781526020017f616464506172740000000000000000000000000000000000000000000000000081525061112a565b61069a816111a8565b6000610f5d828461153a565b90505b92915050565b6000610f5d8284611551565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610fbf576040519150601f19603f3d011682016040523d82523d6000602084013e610fc4565b606091505b50509050806110155760405162461bcd60e51b815260206004820152601060248201527f5472616e73666572206661696c65642e000000000000000000000000000000006044820152606401610403565b505050565b6000546001600160a01b03610100909104163314610b575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610403565b60005b8151811015610992576110a882828151811061109b5761109b611467565b60200260200101516111a8565b806110b2816114d0565b91505061107d565b600080546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6002546040517fd182b83b0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d182b83b90611173908490600401611573565b600060405180830381600087803b15801561118d57600080fd5b505af11580156111a1573d6000803e3d6000fd5b5050505050565b60038054600181018255600091825282517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6002909202918201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0390921691909117905560208301517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c909101819055600480549192909161124b9084906115c1565b909155505050565b80356001600160a01b038116811461126a57600080fd5b919050565b60006020828403121561128157600080fd5b610f5d82611253565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112c9576112c961128a565b604052919050565b6000604082840312156112e357600080fd5b6040516040810181811067ffffffffffffffff821117156113065761130661128a565b60405290508061131583611253565b8152602083013560208201525092915050565b600080604080848603121561133c57600080fd5b61134584611253565b925060208085013567ffffffffffffffff8082111561136357600080fd5b818701915087601f83011261137757600080fd5b8135818111156113895761138961128a565b611397848260051b016112a0565b818152848101925060069190911b8301840190898211156113b757600080fd5b928401925b818410156113dd576113ce8a856112d1565b835292850192918401916113bc565b8096505050505050509250929050565b801515811461069a57600080fd5b6000806040838503121561140e57600080fd5b61141783611253565b91506020830135611427816113ed565b809150509250929050565b60006020828403121561144457600080fd5b5035919050565b60006040828403121561145d57600080fd5b610f5d83836112d1565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561148f57600080fd5b5051919050565b6000602082840312156114a857600080fd5b81516114b3816113ed565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611501576115016114ba565b5060010190565b600060ff821660ff810361151e5761151e6114ba565b60010192915050565b81810381811115610f6057610f606114ba565b8082028115828204841417610f6057610f606114ba565b60008261156e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156115a057858101830151858201604001528201611584565b506000604082860101526040601f19601f8301168501019250505092915050565b80820180821115610f6057610f606114ba56fea26469706673582212203d11fa5ec172ab8abddb54ef9a1c26976f4668d471576cce0bb790c2ce5a7cc764736f6c63430008110033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.