ETH Price: $2,511.69 (-0.53%)

Contract

0x8DE8895ddD702d9a216E640966A98e08c9228f24
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Pool203331732024-07-18 11:41:3546 days ago1721302895IN
RigoBlock: Pool Factory V3
0 ETH0.001663567.33920867
Create Pool198558572024-05-12 18:54:23113 days ago1715540063IN
RigoBlock: Pool Factory V3
0 ETH0.00088683.46723661
Create Pool180010102023-08-26 19:44:47373 days ago1693079087IN
RigoBlock: Pool Factory V3
0 ETH0.0010249814.6426066
Create Pool176649222023-07-10 18:04:59420 days ago1689012299IN
RigoBlock: Pool Factory V3
0 ETH0.0064174528.36634366
Create Pool172089602023-05-07 13:28:11484 days ago1683466091IN
RigoBlock: Pool Factory V3
0 ETH0.0223567787.20239711
Create Pool159033522022-11-05 10:54:59667 days ago1667645699IN
RigoBlock: Pool Factory V3
0 ETH0.0025570511.3
Create Pool158346952022-10-26 20:39:47677 days ago1666816787IN
RigoBlock: Pool Factory V3
0 ETH0.0040688516.2

Latest 7 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
203331732024-07-18 11:41:3546 days ago1721302895
RigoBlock: Pool Factory V3
 Contract Creation0 ETH
198558572024-05-12 18:54:23113 days ago1715540063
RigoBlock: Pool Factory V3
 Contract Creation0 ETH
176649222023-07-10 18:04:59420 days ago1689012299
RigoBlock: Pool Factory V3
 Contract Creation0 ETH
172089602023-05-07 13:28:11484 days ago1683466091
RigoBlock: Pool Factory V3
 Contract Creation0 ETH
159033522022-11-05 10:54:59667 days ago1667645699
RigoBlock: Pool Factory V3
 Contract Creation0 ETH
158346952022-10-26 20:39:47677 days ago1666816787
RigoBlock: Pool Factory V3
 Contract Creation0 ETH
158178312022-10-24 12:01:35679 days ago1666612895  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RigoblockPoolProxyFactory

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license
File 1 of 5 : RigoblockPoolProxyFactory.sol
// SPDX-License-Identifier: Apache-2.0-or-later
/*

 Copyright 2022 Rigo Intl.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

*/

pragma solidity 0.8.17;

import "./RigoblockPoolProxy.sol";
import {IPoolRegistry as PoolRegistry} from "../interfaces/IPoolRegistry.sol";
import "../interfaces/IRigoblockPoolProxyFactory.sol";

/// @title Rigoblock Pool Proxy Factory contract - allows creation of new Rigoblock pools.
/// @author Gabriele Rigo - <[email protected]>
// solhint-disable-next-line
contract RigoblockPoolProxyFactory is IRigoblockPoolProxyFactory {
    /// @inheritdoc IRigoblockPoolProxyFactory
    address public override implementation;

    address private _registry;

    Parameters private _parameters;

    modifier onlyRigoblockDao() {
        require(PoolRegistry(getRegistry()).rigoblockDao() == msg.sender, "FACTORY_CALLER_NOT_DAO_ERROR");
        _;
    }

    constructor(address newImplementation, address registry) {
        implementation = newImplementation;
        _registry = registry;
    }

    /*
     * PUBLIC FUNCTIONS
     */
    /// @inheritdoc IRigoblockPoolProxyFactory
    function createPool(
        string calldata name,
        string calldata symbol,
        address baseToken
    ) external override returns (address newPoolAddress, bytes32 poolId) {
        (bytes32 newPoolId, RigoblockPoolProxy proxy) = _createPool(name, symbol, baseToken);
        newPoolAddress = address(proxy);
        poolId = newPoolId;
        try PoolRegistry(getRegistry()).register(newPoolAddress, name, symbol, poolId) {
            emit PoolCreated(newPoolAddress);
        } catch Error(string memory reason) {
            revert(reason);
        } catch (bytes memory returnData) {
            revert(string(returnData));
        }
    }

    /// @inheritdoc IRigoblockPoolProxyFactory
    function setImplementation(address newImplementation) external override onlyRigoblockDao {
        require(newImplementation != implementation, "FACTORY_SAME_INPUT_ADDRESS_ERROR");
        require(_isContract(newImplementation), "FACTORY_NEW_IMPLEMENTATION_NOT_CONTRACT_ERROR");
        implementation = newImplementation;
        emit Upgraded(newImplementation);
    }

    /// @inheritdoc IRigoblockPoolProxyFactory
    function setRegistry(address newRegistry) external override onlyRigoblockDao {
        require(newRegistry != getRegistry(), "FACTORY_SAME_INPUT_ADDRESS_ERROR");
        require(_isContract(newRegistry), "FACTORY_NEW_REGISTRY_NOT_CONTRACT_ERROR");
        _registry = newRegistry;
        emit RegistryUpgraded(newRegistry);
    }

    /// @notice Returns the pool initialization parameters at proxy deploy.
    /// @return Tuple of the pool parameters.
    function parameters() external view override returns (Parameters memory) {
        return _parameters;
    }

    /*
     * CONSTANT PUBLIC FUNCTIONS
     */
    /// @inheritdoc IRigoblockPoolProxyFactory
    function getRegistry() public view override returns (address) {
        return _registry;
    }

    /*
     * INTERNAL FUNCTIONS
     */
    /// @dev Creates a pool and routes to eventful.
    /// @param name String of the name.
    /// @param  symbol String of the symbol.
    /// @param  baseToken Address of the base token.
    function _createPool(
        string calldata name,
        string calldata symbol,
        address baseToken
    ) internal returns (bytes32 salt, RigoblockPoolProxy newProxy) {
        // we omit the encoding params in the constructor in order to guarantee same address for name and owner
        salt = keccak256(abi.encode(name, msg.sender));

        // we write to storage to allow proxy to read initialization parameters
        _parameters = Parameters({name: name, symbol: bytes8(bytes(symbol)), owner: msg.sender, baseToken: baseToken});

        // constructor is null to guarantee same create2 deployed address
        try new RigoblockPoolProxy{salt: salt}() returns (RigoblockPoolProxy proxy) {
            newProxy = proxy;
        } catch Error(string memory revertReason) {
            revert(revertReason);
        } catch (bytes memory) {
            revert("FACTORY_CREATE2_FAILED_ERROR");
        }

        delete _parameters;
    }

    /// @dev Returns whether an address is a contract.
    /// @return Bool target address has code.
    function _isContract(address target) private view returns (bool) {
        return target.code.length > 0;
    }
}

File 2 of 5 : IPoolRegistry.sol
// SPDX-License-Identifier: Apache 2.0
/*

 Copyright 2017-2022 RigoBlock, Rigo Investment Sagl.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

*/

pragma solidity >=0.7.0 <0.9.0;

/// @title Pool Registry Interface - Allows external interaction with pool registry.
/// @author Gabriele Rigo - <[email protected]>
// solhint-disable-next-line
interface IPoolRegistry {
    /// @notice Mapping of pool meta by pool key.
    /// @param meta Mapping of bytes32 key to bytes32 meta.
    struct PoolMeta {
        mapping(bytes32 => bytes32) meta;
    }

    /// @notice Emitted when Rigoblock Dao updates authority address.
    /// @param authority Address of the new authority contract.
    event AuthorityChanged(address indexed authority);

    /// @notice Emitted when pool owner updates meta data for its pool.
    /// @param pool Address of the pool.
    /// @param key Bytes32 key for indexing.
    /// @param value Bytes32 of the value associated with the key.
    event MetaChanged(address indexed pool, bytes32 indexed key, bytes32 value);

    /// @notice Emitted when a new pool is registered in registry.
    /// @param group Address of the pool factory.
    /// @param pool Address of the registered pool.
    /// @param name String name of the pool.
    /// @param symbol String name of the pool.
    /// @param id Bytes32 id of the pool.
    event Registered(
        address indexed group,
        address pool,
        bytes32 indexed name, // client can prune sybil pools
        bytes32 indexed symbol,
        bytes32 id
    );

    /// @notice Emitted when rigoblock Dao address is updated.
    /// @param rigoblockDao New Dao address.
    event RigoblockDaoChanged(address indexed rigoblockDao);

    /// @notice Returns the address of the Rigoblock authority contract.
    /// @return Address of the authority contract.
    function authority() external view returns (address);

    /// @notice Returns the address of the Rigoblock Dao.
    /// @return Address of the Rigoblock Dao.
    function rigoblockDao() external view returns (address);

    /// @notice Allows a factory which is an authority to register a pool.
    /// @param pool Address of the pool.
    /// @param name String name of the pool (31 characters/bytes or less).
    /// @param symbol String symbol of the pool (3 to 5 characters/bytes).
    /// @param poolId Bytes32 of the pool id.
    function register(
        address pool,
        string calldata name,
        string calldata symbol,
        bytes32 poolId
    ) external;

    /// @notice Allows Rigoblock governance to update authority.
    /// @param authority Address of the authority contract.
    function setAuthority(address authority) external;

    /// @notice Allows pool owner to set metadata for a pool.
    /// @param pool Address of the pool.
    /// @param key Bytes32 of the key.
    /// @param value Bytes32 of the value.
    function setMeta(
        address pool,
        bytes32 key,
        bytes32 value
    ) external;

    /// @notice Allows Rigoblock Dao to update its address.
    /// @dev Creates internal record.
    /// @param newRigoblockDao Address of the Rigoblock Dao.
    function setRigoblockDao(address newRigoblockDao) external;

    /// @notice Returns metadata for a given pool.
    /// @param pool Address of the pool.
    /// @param key Bytes32 key.
    /// @return poolMeta Meta by key.
    function getMeta(address pool, bytes32 key) external view returns (bytes32 poolMeta);

    /// @notice Returns the id of a pool from its address.
    /// @param pool Address of the pool.
    /// @return poolId bytes32 id of the pool.
    function getPoolIdFromAddress(address pool) external view returns (bytes32 poolId);
}

File 3 of 5 : IRigoblockPoolProxy.sol
// SPDX-License-Identifier: Apache-2.0-or-later
pragma solidity >=0.8.0 <0.9.0;

interface IRigoblockPoolProxy {
    /// @notice Emitted when implementation written to proxy storage.
    /// @dev Emitted also at first variable initialization.
    /// @param newImplementation Address of the new implementation.
    event Upgraded(address indexed newImplementation);
}

File 4 of 5 : IRigoblockPoolProxyFactory.sol
// SPDX-License-Identifier: Apache-2.0-or-later
/*

 Copyright 2017-2022 RigoBlock, Rigo Investment Sagl, Rigo Intl.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

*/

pragma solidity >=0.8.0 <0.9.0;

/// @title Pool Proxy Factory Interface - Allows external interaction with Pool Proxy Factory.
/// @author Gabriele Rigo - <[email protected]>
// solhint-disable-next-line
interface IRigoblockPoolProxyFactory {
    /// @notice Emitted when a new pool is created.
    /// @param poolAddress Address of the new pool.
    event PoolCreated(address poolAddress);

    /// @notice Emitted when a new implementation is set by the Rigoblock Dao.
    /// @param implementation Address of the new implementation.
    event Upgraded(address indexed implementation);

    /// @notice Emitted when registry address is upgraded by the Rigoblock Dao.
    /// @param registry Address of the new registry.
    event RegistryUpgraded(address indexed registry);

    /// @notice Returns the implementation address for the pool proxies.
    /// @return Address of the implementation.
    function implementation() external view returns (address);

    /// @notice Creates a new Rigoblock pool.
    /// @param name String of the name.
    /// @param symbol String of the symbol.
    /// @param baseToken Address of the base token.
    /// @return newPoolAddress Address of the new pool.
    /// @return poolId Id of the new pool.
    function createPool(
        string calldata name,
        string calldata symbol,
        address baseToken
    ) external returns (address newPoolAddress, bytes32 poolId);

    /// @notice Allows Rigoblock Dao to update factory pool implementation.
    /// @param newImplementation Address of the new implementation contract.
    function setImplementation(address newImplementation) external;

    /// @notice Allows owner to update the registry.
    /// @param newRegistry Address of the new registry.
    function setRegistry(address newRegistry) external;

    /// @notice Returns the address of the pool registry.
    /// @return Address of the registry.
    function getRegistry() external view returns (address);

    /// @notice Pool initialization parameters.
    /// @params name String of the name (max 31 characters).
    /// @params symbol bytes8 symbol.
    /// @params owner Address of the owner.
    /// @params baseToken Address of the base token.
    struct Parameters {
        string name;
        bytes8 symbol;
        address owner;
        address baseToken;
    }

    /// @notice Returns the pool initialization parameters at proxy deploy.
    /// @return Tuple of the pool parameters.
    function parameters() external view returns (Parameters memory);
}

File 5 of 5 : RigoblockPoolProxy.sol
// SPDX-License-Identifier: Apache-2.0-or-later
/*

 Copyright 2022 Rigo Intl.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

*/

pragma solidity >=0.8.0 <0.9.0;

import "../interfaces/IRigoblockPoolProxy.sol";
import "../interfaces/IRigoblockPoolProxyFactory.sol";

/// @title RigoblockPoolProxy - Proxy contract forwards calls to the implementation address returned by the admin.
/// @author Gabriele Rigo - <[email protected]>
contract RigoblockPoolProxy is IRigoblockPoolProxy {
    // implementation slot is used to store implementation address, a contract which implements the pool logic.
    // Reduced deployment cost by using internal variable.
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /// @notice Sets address of implementation contract.
    constructor() payable {
        // store implementation address in implementation slot value
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        address implementation = IRigoblockPoolProxyFactory(msg.sender).implementation();
        getImplementation().implementation = implementation;
        emit Upgraded(implementation);

        // initialize pool
        // abi.encodeWithSelector(IRigoblockPool.initializePool.selector)
        (, bytes memory returnData) = implementation.delegatecall(abi.encodeWithSelector(0x250e6de0));

        // we must assert initialization didn't fail, otherwise it could fail silently and still deploy the pool.
        require(returnData.length == 0, "POOL_INITIALIZATION_FAILED_ERROR");
    }

    /* solhint-disable no-complex-fallback */
    /// @notice Fallback function forwards all transactions and returns all received return data.
    fallback() external payable {
        address implementation = getImplementation().implementation;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            calldatacopy(0, 0, calldatasize())
            let success := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            if eq(success, 0) {
                revert(0, returndatasize())
            }
            return(0, returndatasize())
        }
    }

    /* solhint-enable no-complex-fallback */

    /// @notice Implementation slot is accessed directly.
    /// @dev Saves gas compared to using storage slot library.
    /// @param implementation Address of the implementation.
    struct ImplementationSlot {
        address implementation;
    }

    /// @notice Method to read/write from/to implementation slot.
    /// @return s Storage slot of the pool implementation.
    function getImplementation() private pure returns (ImplementationSlot storage s) {
        assembly {
            s.slot := _IMPLEMENTATION_SLOT
        }
    }
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"poolAddress","type":"address"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"registry","type":"address"}],"name":"RegistryUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"baseToken","type":"address"}],"name":"createPool","outputs":[{"internalType":"address","name":"newPoolAddress","type":"address"},{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"parameters","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes8","name":"symbol","type":"bytes8"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"baseToken","type":"address"}],"internalType":"struct IRigoblockPoolProxyFactory.Parameters","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRegistry","type":"address"}],"name":"setRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161137a38038061137a83398101604081905261002f9161007c565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100af565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008f57600080fd5b61009883610060565b91506100a660208401610060565b90509250929050565b6112bc806100be6000396000f3fe60806040523480156200001157600080fd5b50600436106200006a5760003560e01c80631d7d13cc146200006f5780635ab1bd5314620000aa5780635c60da1b14620000d05780638903573014620000e4578063a91ee0dc14620000fd578063d784d4261462000116575b600080fd5b620000866200008036600462000a8f565b6200012d565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6001546001600160a01b03165b6040516001600160a01b039091168152602001620000a1565b600054620000b7906001600160a01b031681565b620000ee620002b3565b604051620000a1919062000b64565b620001146200010e36600462000bc8565b620003c1565b005b620001146200012736600462000bc8565b620005b2565b60008060008062000142898989898962000799565b915091508093508192506200015f6001546001600160a01b031690565b6001600160a01b0316633f47734b858b8b8b8b896040518763ffffffff1660e01b8152600401620001969695949392919062000c18565b600060405180830381600087803b158015620001b157600080fd5b505af1925050508015620001c3575060015b6200026b57620001d262000c68565b806308c379a0036200021b5750620001e962000ccb565b80620001f657506200021d565b8060405162461bcd60e51b815260040162000212919062000d5b565b60405180910390fd5b505b3d80801562000249576040519150601f19603f3d011682016040523d82523d6000602084013e6200024e565b606091505b508060405162461bcd60e51b815260040162000212919062000d5b565b6040516001600160a01b03851681527f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9060200160405180910390a150509550959350505050565b6040805160808101825260608082526000602083018190529282018390528101919091526002604051806080016040529081600082018054620002f69062000d70565b80601f0160208091040260200160405190810160405280929190818152602001828054620003249062000d70565b8015620003755780601f10620003495761010080835404028352916020019162000375565b820191906000526020600020905b8154815290600101906020018083116200035757829003601f168201915b505050918352505060018201546001600160c01b031960c082901b1660208301526001600160a01b03600160401b90910481166040830152600290920154909116606090910152919050565b33620003d56001546001600160a01b031690565b6001600160a01b0316633edd80c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000439919062000dac565b6001600160a01b031614620004915760405162461bcd60e51b815260206004820152601c60248201527f464143544f52595f43414c4c45525f4e4f545f44414f5f4552524f5200000000604482015260640162000212565b6001546001600160a01b03166001600160a01b0316816001600160a01b031603620004ff5760405162461bcd60e51b815260206004820181905260248201527f464143544f52595f53414d455f494e5055545f414444524553535f4552524f52604482015260640162000212565b6001600160a01b0381163b620005685760405162461bcd60e51b815260206004820152602760248201527f464143544f52595f4e45575f52454749535452595f4e4f545f434f4e545241436044820152662a2fa2a92927a960c91b606482015260840162000212565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fdbcbf29e459c8e6b09f8c283c975e06dbb85d68408225dcb45d6cff0f9a8706e90600090a250565b33620005c66001546001600160a01b031690565b6001600160a01b0316633edd80c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062a919062000dac565b6001600160a01b031614620006825760405162461bcd60e51b815260206004820152601c60248201527f464143544f52595f43414c4c45525f4e4f545f44414f5f4552524f5200000000604482015260640162000212565b6000546001600160a01b0390811690821603620006e25760405162461bcd60e51b815260206004820181905260248201527f464143544f52595f53414d455f494e5055545f414444524553535f4552524f52604482015260640162000212565b6001600160a01b0381163b620007515760405162461bcd60e51b815260206004820152602d60248201527f464143544f52595f4e45575f494d504c454d454e544154494f4e5f4e4f545f4360448201526c27a72a2920a1aa2fa2a92927a960991b606482015260840162000212565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91a250565b600080868633604051602001620007b39392919062000dcc565b60408051601f19818403018152828252805160209182012060a0601f8b0183900490920284018201909252608083018981529194508291908a908a908190850183828082843760009201919091525050509082525060200162000817868862000dfa565b6001600160c01b03191681523360208201526001600160a01b038516604090910152805160029081906200084c908262000e7e565b50602082015160018201805460408086015160c09490941c6001600160e01b031990921691909117600160401b6001600160a01b039485160217909155606090930151600290920180546001600160a01b03191692909116919091179055518290620008b890620009c2565b8190604051809103906000f590508015620008d05760015b6200098057620008df62000c68565b806308c379a003620009035750620008f662000ccb565b80620001f6575062000905565b505b3d80801562000931576040519150601f19603f3d011682016040523d82523d6000602084013e62000936565b606091505b5060405162461bcd60e51b815260206004820152601c60248201527f464143544f52595f435245415445325f4641494c45445f4552524f5200000000604482015260640162000212565b905060026000620009928282620009d0565b506001810180546001600160e01b031916905560020180546001600160a01b031916905590969095509350505050565b61033b8062000f4c83390190565b508054620009de9062000d70565b6000825580601f10620009ef575050565b601f01602090049060005260206000209081019062000a0f919062000a12565b50565b5b8082111562000a29576000815560010162000a13565b5090565b60008083601f84011262000a4057600080fd5b50813567ffffffffffffffff81111562000a5957600080fd5b60208301915083602082850101111562000a7257600080fd5b9250929050565b6001600160a01b038116811462000a0f57600080fd5b60008060008060006060868803121562000aa857600080fd5b853567ffffffffffffffff8082111562000ac157600080fd5b62000acf89838a0162000a2d565b9097509550602088013591508082111562000ae957600080fd5b5062000af88882890162000a2d565b909450925050604086013562000b0e8162000a79565b809150509295509295909350565b6000815180845260005b8181101562000b445760208185018101518683018201520162000b26565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600082516080602084015262000b8260a084018262000b1c565b60208501516001600160c01b0319166040858101919091528501516001600160a01b03908116606080870191909152909501519094166080909301929092525090919050565b60006020828403121562000bdb57600080fd5b813562000be88162000a79565b9392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038716815260806020820181905260009062000c3f908301878962000bef565b828103604084015262000c5481868862000bef565b915050826060830152979650505050505050565b600060033d111562000c825760046000803e5060005160e01c5b90565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171562000cc45762000cc462000c85565b6040525050565b600060443d101562000cda5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171562000d0b57505050505090565b828501915081518181111562000d245750505050505090565b843d870101602082850101111562000d3f5750505050505090565b62000d506020828601018762000c9b565b509095945050505050565b60208152600062000be8602083018462000b1c565b600181811c9082168062000d8557607f821691505b60208210810362000da657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121562000dbf57600080fd5b815162000be88162000a79565b60408152600062000de260408301858762000bef565b905060018060a01b0383166020830152949350505050565b6001600160c01b0319813581811691600885101562000e235780818660080360031b1b83161692505b505092915050565b601f82111562000e7957600081815260208120601f850160051c8101602086101562000e545750805b601f850160051c820191505b8181101562000e755782815560010162000e60565b5050505b505050565b815167ffffffffffffffff81111562000e9b5762000e9b62000c85565b62000eb38162000eac845462000d70565b8462000e2b565b602080601f83116001811462000eeb576000841562000ed25750858301515b600019600386901b1c1916600185901b17855562000e75565b600085815260208120601f198616915b8281101562000f1c5788860151825594840194600190910190840162000efb565b508582101562000f3b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe608060405261002f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6101ea565b60008051602061031b8339815191521461004b5761004b610211565b6000336001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100af9190610227565b90508060008051602061031b83398151915280546001600160a01b0319166001600160a01b03928316179055604051908216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a260408051600481526024810182526020810180516001600160e01b0316630128736f60e51b17905290516000916001600160a01b0384169161014a9190610257565b600060405180830381855af49150503d8060008114610185576040519150601f19603f3d011682016040523d82523d6000602084013e61018a565b606091505b5091505080516000146101e35760405162461bcd60e51b815260206004820181905260248201527f504f4f4c5f494e495449414c495a4154494f4e5f4641494c45445f4552524f52604482015260640160405180910390fd5b5050610286565b8181038181111561020b57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561023957600080fd5b81516001600160a01b038116811461025057600080fd5b9392505050565b6000825160005b81811015610278576020818601810151858301520161025e565b506000920191825250919050565b6087806102946000396000f3fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03163660008037600080366000845af43d6000803e80604b573d6000fd5b503d6000f3fea26469706673582212200f74c83651b80afff3529310debe8504f073a23e59eec106c535ef5765dd152e64736f6c63430008110033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a95e49aca36f8844744cd5771c3e48d1cb425e3a6c4c8d2864fee086cff653b164736f6c63430008110033000000000000000000000000eb0c08ad44af89bcbb5ed6dd28cad452311b851600000000000000000000000006767e8090ba5c4eca89ed00c3a719909d503ed6

Deployed Bytecode

0x60806040523480156200001157600080fd5b50600436106200006a5760003560e01c80631d7d13cc146200006f5780635ab1bd5314620000aa5780635c60da1b14620000d05780638903573014620000e4578063a91ee0dc14620000fd578063d784d4261462000116575b600080fd5b620000866200008036600462000a8f565b6200012d565b604080516001600160a01b0390931683526020830191909152015b60405180910390f35b6001546001600160a01b03165b6040516001600160a01b039091168152602001620000a1565b600054620000b7906001600160a01b031681565b620000ee620002b3565b604051620000a1919062000b64565b620001146200010e36600462000bc8565b620003c1565b005b620001146200012736600462000bc8565b620005b2565b60008060008062000142898989898962000799565b915091508093508192506200015f6001546001600160a01b031690565b6001600160a01b0316633f47734b858b8b8b8b896040518763ffffffff1660e01b8152600401620001969695949392919062000c18565b600060405180830381600087803b158015620001b157600080fd5b505af1925050508015620001c3575060015b6200026b57620001d262000c68565b806308c379a0036200021b5750620001e962000ccb565b80620001f657506200021d565b8060405162461bcd60e51b815260040162000212919062000d5b565b60405180910390fd5b505b3d80801562000249576040519150601f19603f3d011682016040523d82523d6000602084013e6200024e565b606091505b508060405162461bcd60e51b815260040162000212919062000d5b565b6040516001600160a01b03851681527f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9060200160405180910390a150509550959350505050565b6040805160808101825260608082526000602083018190529282018390528101919091526002604051806080016040529081600082018054620002f69062000d70565b80601f0160208091040260200160405190810160405280929190818152602001828054620003249062000d70565b8015620003755780601f10620003495761010080835404028352916020019162000375565b820191906000526020600020905b8154815290600101906020018083116200035757829003601f168201915b505050918352505060018201546001600160c01b031960c082901b1660208301526001600160a01b03600160401b90910481166040830152600290920154909116606090910152919050565b33620003d56001546001600160a01b031690565b6001600160a01b0316633edd80c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000413573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000439919062000dac565b6001600160a01b031614620004915760405162461bcd60e51b815260206004820152601c60248201527f464143544f52595f43414c4c45525f4e4f545f44414f5f4552524f5200000000604482015260640162000212565b6001546001600160a01b03166001600160a01b0316816001600160a01b031603620004ff5760405162461bcd60e51b815260206004820181905260248201527f464143544f52595f53414d455f494e5055545f414444524553535f4552524f52604482015260640162000212565b6001600160a01b0381163b620005685760405162461bcd60e51b815260206004820152602760248201527f464143544f52595f4e45575f52454749535452595f4e4f545f434f4e545241436044820152662a2fa2a92927a960c91b606482015260840162000212565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fdbcbf29e459c8e6b09f8c283c975e06dbb85d68408225dcb45d6cff0f9a8706e90600090a250565b33620005c66001546001600160a01b031690565b6001600160a01b0316633edd80c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062a919062000dac565b6001600160a01b031614620006825760405162461bcd60e51b815260206004820152601c60248201527f464143544f52595f43414c4c45525f4e4f545f44414f5f4552524f5200000000604482015260640162000212565b6000546001600160a01b0390811690821603620006e25760405162461bcd60e51b815260206004820181905260248201527f464143544f52595f53414d455f494e5055545f414444524553535f4552524f52604482015260640162000212565b6001600160a01b0381163b620007515760405162461bcd60e51b815260206004820152602d60248201527f464143544f52595f4e45575f494d504c454d454e544154494f4e5f4e4f545f4360448201526c27a72a2920a1aa2fa2a92927a960991b606482015260840162000212565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b91a250565b600080868633604051602001620007b39392919062000dcc565b60408051601f19818403018152828252805160209182012060a0601f8b0183900490920284018201909252608083018981529194508291908a908a908190850183828082843760009201919091525050509082525060200162000817868862000dfa565b6001600160c01b03191681523360208201526001600160a01b038516604090910152805160029081906200084c908262000e7e565b50602082015160018201805460408086015160c09490941c6001600160e01b031990921691909117600160401b6001600160a01b039485160217909155606090930151600290920180546001600160a01b03191692909116919091179055518290620008b890620009c2565b8190604051809103906000f590508015620008d05760015b6200098057620008df62000c68565b806308c379a003620009035750620008f662000ccb565b80620001f6575062000905565b505b3d80801562000931576040519150601f19603f3d011682016040523d82523d6000602084013e62000936565b606091505b5060405162461bcd60e51b815260206004820152601c60248201527f464143544f52595f435245415445325f4641494c45445f4552524f5200000000604482015260640162000212565b905060026000620009928282620009d0565b506001810180546001600160e01b031916905560020180546001600160a01b031916905590969095509350505050565b61033b8062000f4c83390190565b508054620009de9062000d70565b6000825580601f10620009ef575050565b601f01602090049060005260206000209081019062000a0f919062000a12565b50565b5b8082111562000a29576000815560010162000a13565b5090565b60008083601f84011262000a4057600080fd5b50813567ffffffffffffffff81111562000a5957600080fd5b60208301915083602082850101111562000a7257600080fd5b9250929050565b6001600160a01b038116811462000a0f57600080fd5b60008060008060006060868803121562000aa857600080fd5b853567ffffffffffffffff8082111562000ac157600080fd5b62000acf89838a0162000a2d565b9097509550602088013591508082111562000ae957600080fd5b5062000af88882890162000a2d565b909450925050604086013562000b0e8162000a79565b809150509295509295909350565b6000815180845260005b8181101562000b445760208185018101518683018201520162000b26565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600082516080602084015262000b8260a084018262000b1c565b60208501516001600160c01b0319166040858101919091528501516001600160a01b03908116606080870191909152909501519094166080909301929092525090919050565b60006020828403121562000bdb57600080fd5b813562000be88162000a79565b9392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038716815260806020820181905260009062000c3f908301878962000bef565b828103604084015262000c5481868862000bef565b915050826060830152979650505050505050565b600060033d111562000c825760046000803e5060005160e01c5b90565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff8111828210171562000cc45762000cc462000c85565b6040525050565b600060443d101562000cda5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171562000d0b57505050505090565b828501915081518181111562000d245750505050505090565b843d870101602082850101111562000d3f5750505050505090565b62000d506020828601018762000c9b565b509095945050505050565b60208152600062000be8602083018462000b1c565b600181811c9082168062000d8557607f821691505b60208210810362000da657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121562000dbf57600080fd5b815162000be88162000a79565b60408152600062000de260408301858762000bef565b905060018060a01b0383166020830152949350505050565b6001600160c01b0319813581811691600885101562000e235780818660080360031b1b83161692505b505092915050565b601f82111562000e7957600081815260208120601f850160051c8101602086101562000e545750805b601f850160051c820191505b8181101562000e755782815560010162000e60565b5050505b505050565b815167ffffffffffffffff81111562000e9b5762000e9b62000c85565b62000eb38162000eac845462000d70565b8462000e2b565b602080601f83116001811462000eeb576000841562000ed25750858301515b600019600386901b1c1916600185901b17855562000e75565b600085815260208120601f198616915b8281101562000f1c5788860151825594840194600190910190840162000efb565b508582101562000f3b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe608060405261002f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6101ea565b60008051602061031b8339815191521461004b5761004b610211565b6000336001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100af9190610227565b90508060008051602061031b83398151915280546001600160a01b0319166001600160a01b03928316179055604051908216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a260408051600481526024810182526020810180516001600160e01b0316630128736f60e51b17905290516000916001600160a01b0384169161014a9190610257565b600060405180830381855af49150503d8060008114610185576040519150601f19603f3d011682016040523d82523d6000602084013e61018a565b606091505b5091505080516000146101e35760405162461bcd60e51b815260206004820181905260248201527f504f4f4c5f494e495449414c495a4154494f4e5f4641494c45445f4552524f52604482015260640160405180910390fd5b5050610286565b8181038181111561020b57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561023957600080fd5b81516001600160a01b038116811461025057600080fd5b9392505050565b6000825160005b81811015610278576020818601810151858301520161025e565b506000920191825250919050565b6087806102946000396000f3fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03163660008037600080366000845af43d6000803e80604b573d6000fd5b503d6000f3fea26469706673582212200f74c83651b80afff3529310debe8504f073a23e59eec106c535ef5765dd152e64736f6c63430008110033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a95e49aca36f8844744cd5771c3e48d1cb425e3a6c4c8d2864fee086cff653b164736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000eb0c08ad44af89bcbb5ed6dd28cad452311b851600000000000000000000000006767e8090ba5c4eca89ed00c3a719909d503ed6

-----Decoded View---------------
Arg [0] : newImplementation (address): 0xeb0c08Ad44af89BcBB5Ed6dD28caD452311B8516
Arg [1] : registry (address): 0x06767e8090bA5c4Eca89ED00C3A719909D503ED6

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000eb0c08ad44af89bcbb5ed6dd28cad452311b8516
Arg [1] : 00000000000000000000000006767e8090ba5c4eca89ed00c3a719909d503ed6


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

The factory of the RigoBlock V3 pools.

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.