Contract 0x354454B8fd7dF1E5Df421ab92A6401282efeB002 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1346735a786bc0dd56d19ec97f7b88e551fdd19ed9d689cf6393dee765685739Register Vote322508932022-08-24 2:02:1136 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001598826 43
0xaaa1e45411ab5a00a116625e4f61e3a727ff168aa6a381009de000eb0bdd58a8Register Vote317124012022-08-09 23:06:5950 days 12 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001412004 38
0xf2957e2caa17069ae7978c71cae971772606472de6005337acd7b2efe3ce190aRegister Vote316789402022-08-09 1:49:1151 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.00148632 40
0x9055ac70e784ebad47556086b4bbe6345e6982164f55a7e05ba65b2157fbbfb8Register Vote316789082022-08-09 1:48:0351 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001449162 39
0x1fe8a25798a2a17b71395b7e4483cec46706b45e63f753e364f52116ee433820Register Vote316788902022-08-09 1:47:2751 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001560636 42
0x3fc5cb258927afe9d5b5d738e221fa5358cfeccdd9a561f1a495bb34b24a3929Register Vote316786992022-08-09 1:40:5351 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001449162 39
0xc7efeda3622747a9999fd53144830c153c77a5395a2bd98ebde4c3aad66ce63bRegister Vote316786562022-08-09 1:39:2751 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001412004 38
0x70f161b4c33b7539b1eede24feb8501c90f720735fb8e1aec47ad35f4bf075f0Register Vote316786232022-08-09 1:38:1751 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.00148584 40
0x85b8812094b48146c55419150e8ee5ae088bbb6998ab4203cb7b0f9fb992f401Register Vote316784702022-08-09 1:31:0951 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001449162 39
0x83b5914a25140e9df1086190bf11822f6dcfe1022c1801f44e26ea2ddc5101f8Register Vote316784072022-08-09 1:28:4551 days 9 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001523478 41
0x3c645a5c88b0f40fec4b0bf94d74524efabea9220b5bffd3812ccd1f727c060aRegister Vote316772682022-08-09 0:41:0351 days 10 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001560636 42
0x13abc2769205d52518b3c0c2674434f984c2fb96f6105135794a579db5d49073Register Vote316772342022-08-09 0:39:2551 days 10 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001634952 44
0x96565e717cb08af9a8e91cd930d9150b4219e38e1b8c328d686ebf2ef29270d1Register Vote314011222022-08-01 17:10:1458 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001932216 52
0x68afa374a99c47428d59317c69b04a803a897ca0699e95be14cfbcee0291027aRegister Vote314011082022-08-01 17:09:4658 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001896282 51
0xbe1a0458924cba65ab0b26d9f4d299c3ab8e6134f02d688af9b863b7e5ad0edaRegister Vote314010632022-08-01 17:08:1258 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001710372 46
0xe41cd5f49e2a622fd6b2f4df5216042ab645d484687dc54a16e3de6c16511722Register Vote314010502022-08-01 17:07:4658 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001896282 51
0xdb76d5cc9bd2e33f6feaeb7a26e8cd2e54b1e755d8187edcb4711a848f4d03efRegister Vote314010352022-08-01 17:07:1658 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001932216 52
0xc6dc88573ccdada603fe6cd2979ba686fe28819096c3c041a79002e0449be819Register Vote314010182022-08-01 17:06:3858 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.0018573 50
0xa2a80b0602860ceab40cc3e2c569c2961c6cfdf4525362b8e6638df0b8e65cd7Register Vote314010092022-08-01 17:06:2058 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001894446 51
0x0c49b98fe89027005ef47ea1e36cf9c7013129de35f59bd6a29c2191a4f76d22Register Vote314009952022-08-01 17:05:5258 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.0018573 50
0x2ff5d81819e32d277859f67a244292e178592982d32a80e9a3dae89337bf99f7Register Vote314009802022-08-01 17:05:2258 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001894446 51
0xb018bbed64fbddb98d3e94350d2b92fac9286570003197332de400a237f4d6f2Register Vote314009702022-08-01 17:05:0258 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001894446 51
0xc93c0fc6ded4212a32fc12d7d88ff935e92d885dcb90cf63bd6db3b8859547daRegister Vote314009612022-08-01 17:04:4458 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001895058 51
0x5dac9c80d00717791eae812eced756d2fcd155da77f972fadd0648827c929c99Register Vote314009482022-08-01 17:04:1458 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001894446 51
0x46210f5d94fa15460559111242e93a0682daeb450bba5d05f539eee199e1666cRegister Vote314009322022-08-01 17:03:4258 days 18 hrs ago0x9516747829c61e82116968a6d47ec72cb2eb654d IN  0x354454b8fd7df1e5df421ab92a6401282efeb0020 MATIC0.001894446 51
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Gameplay

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 8 : Gameplay.sol
/*

         ((((((((((((           (((((((         (((((((((((((((       
      (((        (((((((     %((      (((    (((              (((     
    %%((                (( %%((         (( %((      ((((((      (((   
   %%%((     ((((((/     ((#((     (     ((((     ((((((((((     ((   
   %%%((     ((((((((     (((     (((     (((     ((((((((((     (((  
   #%%((     ((((((((     (((              ((      (((((((((     ((   
    %%((     (((((((      ((                ((       ((((       ((    
    %%((                (((     ((((((((     ((((             (((     
    %%%((            ((((((    ((%%%%%%(((  (((((((((((((((((%        
    %%%%(((((((((((((%%%%%%((((     %%%%%%%%((    ((%%%%%%%           
     %%%%%%%%%%%%%%     %%%%%          *# %%((    ((    (((((((       
            (((((((((   (((((((((((  ((((  /((    (((((        (((    
         (((         (((          ((((            (((     ((     ((.  
       %((     (((    ((   ((((    ((    (((((     (*             ((  
     ,%#((    ((((((((((/          ((    (((((     ((    (((((((/((   
     %%%((     (((    ((    ((     (((             (((           ((   
     %%%%(((         ((((     ((   (((((,   ((((  ((%%(((((((((((     
      %%%%%%(((((((((%%%#(((((#%(((%%%%%%%#%%%%%%% %%%%%%%%%%%%       
         %%%%%%%%%%  /%%%%%%*%%%%     %%%%                            


The future of gaming is democratic.

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

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

contract Gameplay is Ownable, AccessControl {

    event Vote(string button, string votingRecordHash, uint indexed time, uint indexed voteNum);
    uint public numVotes = 0;

    bytes32 public constant REPORTER_ROLE = keccak256("REPORTER_ROLE");

    constructor(address[] memory reporters) {
        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
        for(uint i=0; i<reporters.length; i++){
            _setupRole(REPORTER_ROLE, reporters[i]);
        }
    }

    function registerVote(string memory button, string memory votingRecordHash, uint time) public onlyRole(REPORTER_ROLE){
        require(hasRole(REPORTER_ROLE, msg.sender), "NOT_REPORTER");
        numVotes++;
        emit Vote(button, votingRecordHash, time, numVotes);
    }
    
}

File 2 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 3 of 8 : AccessControl.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol)

pragma solidity ^0.8.0;

import "./IAccessControl.sol";
import "../utils/Context.sol";
import "../utils/Strings.sol";
import "../utils/introspection/ERC165.sol";

/**
 * @dev Contract module that allows children to implement role-based access
 * control mechanisms. This is a lightweight version that doesn't allow enumerating role
 * members except through off-chain means by accessing the contract event logs. Some
 * applications may benefit from on-chain enumerability, for those cases see
 * {AccessControlEnumerable}.
 *
 * Roles are referred to by their `bytes32` identifier. These should be exposed
 * in the external API and be unique. The best way to achieve this is by
 * using `public constant` hash digests:
 *
 * ```
 * bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
 * ```
 *
 * Roles can be used to represent a set of permissions. To restrict access to a
 * function call, use {hasRole}:
 *
 * ```
 * function foo() public {
 *     require(hasRole(MY_ROLE, msg.sender));
 *     ...
 * }
 * ```
 *
 * Roles can be granted and revoked dynamically via the {grantRole} and
 * {revokeRole} functions. Each role has an associated admin role, and only
 * accounts that have a role's admin role can call {grantRole} and {revokeRole}.
 *
 * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
 * that only accounts with this role will be able to grant or revoke other
 * roles. More complex role relationships can be created by using
 * {_setRoleAdmin}.
 *
 * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
 * grant and revoke this role. Extra precautions should be taken to secure
 * accounts that have been granted it.
 */
abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    /**
     * @dev Modifier that checks that an account has a specific role. Reverts
     * with a standardized message including the required role.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     *
     * _Available since v4.1._
     */
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    /**
     * @dev Revert with a standard message if `account` is missing `role`.
     *
     * The format of the revert reason is given by the following regular expression:
     *
     *  /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
     */
    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been revoked `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event. Note that unlike {grantRole}, this function doesn't perform any
     * checks on the calling account.
     *
     * [WARNING]
     * ====
     * This function should only be called from the constructor when setting
     * up the initial roles for the system.
     *
     * Using this function in any other way is effectively circumventing the admin
     * system imposed by {AccessControl}.
     * ====
     *
     * NOTE: This function is deprecated in favor of {_grantRole}.
     */
    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    /**
     * @dev Sets `adminRole` as ``role``'s admin role.
     *
     * Emits a {RoleAdminChanged} event.
     */
    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    /**
     * @dev Grants `role` to `account`.
     *
     * Internal function without access restriction.
     */
    function _grantRole(bytes32 role, address account) internal virtual {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    /**
     * @dev Revokes `role` from `account`.
     *
     * Internal function without access restriction.
     */
    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

File 4 of 8 : 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;
    }
}

File 5 of 8 : IAccessControl.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)

pragma solidity ^0.8.0;

/**
 * @dev External interface of AccessControl declared to support ERC165 detection.
 */
interface IAccessControl {
    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     *
     * _Available since v3.1._
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call, an admin role
     * bearer except when using {AccessControl-_setupRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) external view returns (bool);

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {AccessControl-_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) external;
}

File 6 of 8 : Strings.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

File 7 of 8 : ERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 8 of 8 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"reporters","type":"address[]"}],"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"button","type":"string"},{"indexed":false,"internalType":"string","name":"votingRecordHash","type":"string"},{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"voteNum","type":"uint256"}],"name":"Vote","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REPORTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"button","type":"string"},{"internalType":"string","name":"votingRecordHash","type":"string"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"registerVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260006002553480156200001657600080fd5b5060405162001dab38038062001dab83398181016040528101906200003c919062000517565b6200005c62000050620000eb60201b60201c565b620000f360201b60201c565b620000716000801b33620001b760201b60201c565b60005b8151811015620000e357620000cd7f3204c940063673962b481a0395619b3dbbd137589c419e993978c1c71bcf68ec838381518110620000b957620000b862000568565b5b6020026020010151620001b760201b60201c565b8080620000da90620005d0565b91505062000074565b50506200061e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001c98282620001cd60201b60201c565b5050565b620001df8282620002be60201b60201c565b620002ba57600180600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200025f620000eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200038d8262000342565b810181811067ffffffffffffffff82111715620003af57620003ae62000353565b5b80604052505050565b6000620003c462000329565b9050620003d2828262000382565b919050565b600067ffffffffffffffff821115620003f557620003f462000353565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000438826200040b565b9050919050565b6200044a816200042b565b81146200045657600080fd5b50565b6000815190506200046a816200043f565b92915050565b6000620004876200048184620003d7565b620003b8565b90508083825260208201905060208402830185811115620004ad57620004ac62000406565b5b835b81811015620004da5780620004c5888262000459565b845260208401935050602081019050620004af565b5050509392505050565b600082601f830112620004fc57620004fb6200033d565b5b81516200050e84826020860162000470565b91505092915050565b60006020828403121562000530576200052f62000333565b5b600082015167ffffffffffffffff81111562000551576200055062000338565b5b6200055f84828501620004e4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000620005dd82620005c6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000613576200061262000597565b5b600182019050919050565b61177d806200062e6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063a3bef4d711610066578063a3bef4d714610200578063d547741f1461021e578063ee17a7e71461023a578063f2fde38b14610256576100cf565b80638da5cb5b1461019457806391d14854146101b2578063a217fddf146101e2576100cf565b806301ffc9a7146100d4578063248a9ca3146101045780632f2ff15d1461013457806336568abe146101505780633f60d7991461016c578063715018a61461018a575b600080fd5b6100ee60048036038101906100e99190610d59565b610272565b6040516100fb9190610da1565b60405180910390f35b61011e60048036038101906101199190610df2565b6102ec565b60405161012b9190610e2e565b60405180910390f35b61014e60048036038101906101499190610ea7565b61030c565b005b61016a60048036038101906101659190610ea7565b610335565b005b6101746103b8565b6040516101819190610e2e565b60405180910390f35b6101926103dc565b005b61019c610464565b6040516101a99190610ef6565b60405180910390f35b6101cc60048036038101906101c79190610ea7565b61048d565b6040516101d99190610da1565b60405180910390f35b6101ea6104f8565b6040516101f79190610e2e565b60405180910390f35b6102086104ff565b6040516102159190610f2a565b60405180910390f35b61023860048036038101906102339190610ea7565b610505565b005b610254600480360381019061024f91906110b7565b61052e565b005b610270600480360381019061026b9190611142565b610624565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261071c565b5b9050919050565b600060016000838152602001908152602001600020600101549050919050565b610315826102ec565b61032681610321610786565b61078e565b610330838361082b565b505050565b61033d610786565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146103aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a1906111f2565b60405180910390fd5b6103b4828261090b565b5050565b7f3204c940063673962b481a0395619b3dbbd137589c419e993978c1c71bcf68ec81565b6103e4610786565b73ffffffffffffffffffffffffffffffffffffffff16610402610464565b73ffffffffffffffffffffffffffffffffffffffff1614610458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044f9061125e565b60405180910390fd5b61046260006109ed565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b60025481565b61050e826102ec565b61051f8161051a610786565b61078e565b610529838361090b565b505050565b7f3204c940063673962b481a0395619b3dbbd137589c419e993978c1c71bcf68ec6105608161055b610786565b61078e565b61058a7f3204c940063673962b481a0395619b3dbbd137589c419e993978c1c71bcf68ec3361048d565b6105c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c0906112ca565b60405180910390fd5b600260008154809291906105dc90611319565b9190505550600254827f099102f898dddb1f2eac2fac8e256ea1c5942c0fc20a38da107668b2bc59ff1786866040516106169291906113d9565b60405180910390a350505050565b61062c610786565b73ffffffffffffffffffffffffffffffffffffffff1661064a610464565b73ffffffffffffffffffffffffffffffffffffffff16146106a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106979061125e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070790611482565b60405180910390fd5b610719816109ed565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610798828261048d565b610827576107bd8173ffffffffffffffffffffffffffffffffffffffff166014610ab1565b6107cb8360001c6020610ab1565b6040516020016107dc929190611576565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081e91906115b0565b60405180910390fd5b5050565b610835828261048d565b61090757600180600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506108ac610786565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610915828261048d565b156109e95760006001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061098e610786565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b606060006002836002610ac491906115d2565b610ace919061162c565b67ffffffffffffffff811115610ae757610ae6610f60565b5b6040519080825280601f01601f191660200182016040528015610b195781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110610b5157610b50611682565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610bb557610bb4611682565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002610bf591906115d2565b610bff919061162c565b90505b6001811115610c9f577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110610c4157610c40611682565b5b1a60f81b828281518110610c5857610c57611682565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080610c98906116b1565b9050610c02565b5060008414610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda90611727565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610d3681610d01565b8114610d4157600080fd5b50565b600081359050610d5381610d2d565b92915050565b600060208284031215610d6f57610d6e610cf7565b5b6000610d7d84828501610d44565b91505092915050565b60008115159050919050565b610d9b81610d86565b82525050565b6000602082019050610db66000830184610d92565b92915050565b6000819050919050565b610dcf81610dbc565b8114610dda57600080fd5b50565b600081359050610dec81610dc6565b92915050565b600060208284031215610e0857610e07610cf7565b5b6000610e1684828501610ddd565b91505092915050565b610e2881610dbc565b82525050565b6000602082019050610e436000830184610e1f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e7482610e49565b9050919050565b610e8481610e69565b8114610e8f57600080fd5b50565b600081359050610ea181610e7b565b92915050565b60008060408385031215610ebe57610ebd610cf7565b5b6000610ecc85828601610ddd565b9250506020610edd85828601610e92565b9150509250929050565b610ef081610e69565b82525050565b6000602082019050610f0b6000830184610ee7565b92915050565b6000819050919050565b610f2481610f11565b82525050565b6000602082019050610f3f6000830184610f1b565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610f9882610f4f565b810181811067ffffffffffffffff82111715610fb757610fb6610f60565b5b80604052505050565b6000610fca610ced565b9050610fd68282610f8f565b919050565b600067ffffffffffffffff821115610ff657610ff5610f60565b5b610fff82610f4f565b9050602081019050919050565b82818337600083830152505050565b600061102e61102984610fdb565b610fc0565b90508281526020810184848401111561104a57611049610f4a565b5b61105584828561100c565b509392505050565b600082601f83011261107257611071610f45565b5b813561108284826020860161101b565b91505092915050565b61109481610f11565b811461109f57600080fd5b50565b6000813590506110b18161108b565b92915050565b6000806000606084860312156110d0576110cf610cf7565b5b600084013567ffffffffffffffff8111156110ee576110ed610cfc565b5b6110fa8682870161105d565b935050602084013567ffffffffffffffff81111561111b5761111a610cfc565b5b6111278682870161105d565b9250506040611138868287016110a2565b9150509250925092565b60006020828403121561115857611157610cf7565b5b600061116684828501610e92565b91505092915050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006111dc602f8361116f565b91506111e782611180565b604082019050919050565b6000602082019050818103600083015261120b816111cf565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061124860208361116f565b915061125382611212565b602082019050919050565b600060208201905081810360008301526112778161123b565b9050919050565b7f4e4f545f5245504f525445520000000000000000000000000000000000000000600082015250565b60006112b4600c8361116f565b91506112bf8261127e565b602082019050919050565b600060208201905081810360008301526112e3816112a7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132482610f11565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611357576113566112ea565b5b600182019050919050565b600081519050919050565b60005b8381101561138b578082015181840152602081019050611370565b8381111561139a576000848401525b50505050565b60006113ab82611362565b6113b5818561116f565b93506113c581856020860161136d565b6113ce81610f4f565b840191505092915050565b600060408201905081810360008301526113f381856113a0565b9050818103602083015261140781846113a0565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061146c60268361116f565b915061147782611410565b604082019050919050565b6000602082019050818103600083015261149b8161145f565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006114e36017836114a2565b91506114ee826114ad565b601782019050919050565b600061150482611362565b61150e81856114a2565b935061151e81856020860161136d565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006115606011836114a2565b915061156b8261152a565b601182019050919050565b6000611581826114d6565b915061158d82856114f9565b915061159882611553565b91506115a482846114f9565b91508190509392505050565b600060208201905081810360008301526115ca81846113a0565b905092915050565b60006115dd82610f11565b91506115e883610f11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611621576116206112ea565b5b828202905092915050565b600061163782610f11565b915061164283610f11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611677576116766112ea565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006116bc82610f11565b915060008214156116d0576116cf6112ea565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061171160208361116f565b915061171c826116db565b602082019050919050565b6000602082019050818103600083015261174081611704565b905091905056fea26469706673582212204f60ea92dbdc84699f4957875c0dbccd529f6ffe6bae28e6079ae4fabf4521bf64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009516747829c61e82116968a6d47ec72cb2eb654d

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

000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009516747829c61e82116968a6d47ec72cb2eb654d

-----Decoded View---------------
Arg [0] : reporters (address[]): 0x9516747829c61e82116968a6d47ec72cb2eb654d

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000009516747829c61e82116968a6d47ec72cb2eb654d


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.