ETH Price: $3,608.33 (+4.70%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Write Hash168210102023-03-13 19:00:35662 days ago1678734035IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash168210102023-03-13 19:00:35662 days ago1678734035IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash168210092023-03-13 19:00:23662 days ago1678734023IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash167712512023-03-06 19:00:35669 days ago1678129235IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash167712512023-03-06 19:00:35669 days ago1678129235IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash167712502023-03-06 19:00:23669 days ago1678129223IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash167214742023-02-27 19:00:35676 days ago1677524435IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash167214742023-02-27 19:00:35676 days ago1677524435IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash167214732023-02-27 19:00:23676 days ago1677524423IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash166716982023-02-20 19:00:35683 days ago1676919635IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash166716982023-02-20 19:00:35683 days ago1676919635IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash166716972023-02-20 19:00:23683 days ago1676919623IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash166217832023-02-13 19:00:35690 days ago1676314835IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash166217822023-02-13 19:00:23690 days ago1676314823IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash166217822023-02-13 19:00:23690 days ago1676314823IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash165717002023-02-06 19:00:35697 days ago1675710035IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash165716992023-02-06 19:00:23697 days ago1675710023IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash165716992023-02-06 19:00:23697 days ago1675710023IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash165215922023-01-30 19:00:35704 days ago1675105235IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash165215912023-01-30 19:00:23704 days ago1675105223IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash165215912023-01-30 19:00:23704 days ago1675105223IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019691275
Write Hash164714592023-01-23 19:00:35711 days ago1674500435IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash164714592023-01-23 19:00:35711 days ago1674500435IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash164714582023-01-23 19:00:23711 days ago1674500423IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
Write Hash164213042023-01-16 19:00:35718 days ago1673895635IN
0x6c937A11...8AdD1ac6C
0 ETH0.0019700275
View all transactions

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
IpfsHashRecord

Compiler Version
v0.5.1+commit.c8a2cb62

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-11-19
*/

pragma solidity 0.5.1;

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}


/**
 * @title WhitelistAdminRole
 * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.
 */
contract WhitelistAdminRole {
    using Roles for Roles.Role;

    event WhitelistAdminAdded(address indexed account);
    event WhitelistAdminRemoved(address indexed account);

    Roles.Role private _whitelistAdmins;

    constructor () internal {
        _addWhitelistAdmin(msg.sender);
    }

    modifier onlyWhitelistAdmin() {
        require(isWhitelistAdmin(msg.sender), "WhitelistAdminRole: caller does not have the WhitelistAdmin role");
        _;
    }

    function isWhitelistAdmin(address account) public view returns (bool) {
        return _whitelistAdmins.has(account);
    }

    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        _addWhitelistAdmin(account);
    }

    function renounceWhitelistAdmin() public {
        _removeWhitelistAdmin(msg.sender);
    }

    function _addWhitelistAdmin(address account) internal {
        _whitelistAdmins.add(account);
        emit WhitelistAdminAdded(account);
    }

    function _removeWhitelistAdmin(address account) internal {
        _whitelistAdmins.remove(account);
        emit WhitelistAdminRemoved(account);
    }
}


/**
 * @title IpfsHashRecord
 * @dev Record IPFS hash to Ethereum contract by emitting log.
 */
contract IpfsHashRecord is WhitelistAdminRole {

  // eventSig is the first 4 bytes of the Keccak256 hash of event name
  // auction_bidding: 0x636fe49e
  // auction_receipt: 0x4997644b
  // bancor_trading: 0x285a30e1
  event Recorded (bytes4 indexed eventSig, uint256 indexed createdAt, bytes32 ipfsHash);

  /**
   * @dev Write ipfsHash as log
   */
  function writeHash(bytes4 _eventSig, bytes32 _ipfsHash) public onlyWhitelistAdmin {
    emit Recorded(_eventSig, uint256(now), _ipfsHash);
  }

  /**
   * @dev Add admin
   */
  function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
    super.addWhitelistAdmin(account);
  }

  /**
   * @dev Renounce admin
   */
  function renounceWhitelistAdmin() public {
    super.renounceWhitelistAdmin();
  }

  /**
   * @dev Check whether address is admin or not
   */
  function isWhitelistAdmin(address account) public view returns (bool) {
    return super.isWhitelistAdmin(account);
  }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_eventSig","type":"bytes4"},{"name":"_ipfsHash","type":"bytes32"}],"name":"writeHash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"eventSig","type":"bytes4"},{"indexed":true,"name":"createdAt","type":"uint256"},{"indexed":false,"name":"ipfsHash","type":"bytes32"}],"name":"Recorded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"}]

608060405261001c33610021640100000000026401000000009004565b610297565b61004281600061008864010000000002610710179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b6100a18282610174640100000000026401000000009004565b151515610116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610240576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610819806102a66000396000f3fe60806040526004361061005c576000357c01000000000000000000000000000000000000000000000000000000009004806308ff5000146100615780634c5a628c146100c55780637362d9c8146100dc578063bb5f747b1461012d575b600080fd5b34801561006d57600080fd5b506100c36004803603604081101561008457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610196565b005b3480156100d157600080fd5b506100da610295565b005b3480156100e857600080fd5b5061012b600480360360208110156100ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061029f565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061034e565b604051808215151515815260200191505060405180910390f35b61019f3361034e565b1515610239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001807f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081526020017f6e6f742068617665207468652057686974656c69737441646d696e20726f6c6581525060400191505060405180910390fd5b42827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fcce1e83193e72316b7ae3946d6b86b2c9a7f16dd6bf064fa2f9321cd6bd3224c836040518082815260200191505060405180910390a35050565b61029d610360565b565b6102a83361034e565b1515610342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001807f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081526020017f6e6f742068617665207468652057686974656c69737441646d696e20726f6c6581525060400191505060405180910390fd5b61034b8161036b565b50565b60006103598261041a565b9050919050565b61036933610437565b565b6103743361034e565b151561040e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001807f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081526020017f6e6f742068617665207468652057686974656c69737441646d696e20726f6c6581525060400191505060405180910390fd5b61041781610491565b50565b60006104308260006104eb90919063ffffffff16565b9050919050565b61044b81600061060e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6104a581600061071090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61061882826104eb565b15156106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61071a82826104eb565b15151561078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820dc702c7b006a2d51412b147f29ebcd018bac8478f7850530552964b073f9b95e0029

Deployed Bytecode

0x60806040526004361061005c576000357c01000000000000000000000000000000000000000000000000000000009004806308ff5000146100615780634c5a628c146100c55780637362d9c8146100dc578063bb5f747b1461012d575b600080fd5b34801561006d57600080fd5b506100c36004803603604081101561008457600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919080359060200190929190505050610196565b005b3480156100d157600080fd5b506100da610295565b005b3480156100e857600080fd5b5061012b600480360360208110156100ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061029f565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061034e565b604051808215151515815260200191505060405180910390f35b61019f3361034e565b1515610239576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001807f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081526020017f6e6f742068617665207468652057686974656c69737441646d696e20726f6c6581525060400191505060405180910390fd5b42827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167fcce1e83193e72316b7ae3946d6b86b2c9a7f16dd6bf064fa2f9321cd6bd3224c836040518082815260200191505060405180910390a35050565b61029d610360565b565b6102a83361034e565b1515610342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001807f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081526020017f6e6f742068617665207468652057686974656c69737441646d696e20726f6c6581525060400191505060405180910390fd5b61034b8161036b565b50565b60006103598261041a565b9050919050565b61036933610437565b565b6103743361034e565b151561040e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001807f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732081526020017f6e6f742068617665207468652057686974656c69737441646d696e20726f6c6581525060400191505060405180910390fd5b61041781610491565b50565b60006104308260006104eb90919063ffffffff16565b9050919050565b61044b81600061060e90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6104a581600061071090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61061882826104eb565b15156106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61071a82826104eb565b15151561078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820dc702c7b006a2d51412b147f29ebcd018bac8478f7850530552964b073f9b95e0029

Deployed Bytecode Sourcemap

2413:988:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2778:144:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2778:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3124:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3124:84:0;;;:::i;:::-;;2963:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2963:115:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2963:115:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;3277:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3277:121:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3277:121:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2778:144;1513:28;1530:10;1513:16;:28::i;:::-;1505:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2900:3;2881:9;2872:44;;;;2906:9;2872:44;;;;;;;;;;;;;;;;;;2778:144;;:::o;3124:84::-;3172:30;:28;:30::i;:::-;3124:84::o;2963:115::-;1513:28;1530:10;1513:16;:28::i;:::-;1505:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3040:32;3064:7;3040:23;:32::i;:::-;2963:115;:::o;3277:121::-;3341:4;3361:31;3384:7;3361:22;:31::i;:::-;3354:38;;3277:121;;;:::o;1895:93::-;1947:33;1969:10;1947:21;:33::i;:::-;1895:93::o;1771:116::-;1513:28;1530:10;1513:16;:28::i;:::-;1505:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1852:27;1871:7;1852:18;:27::i;:::-;1771:116;:::o;1638:125::-;1702:4;1726:29;1747:7;1726:16;:20;;:29;;;;:::i;:::-;1719:36;;1638:125;;;:::o;2150:154::-;2218:32;2242:7;2218:16;:23;;:32;;;;:::i;:::-;2288:7;2266:30;;;;;;;;;;;;2150:154;:::o;1996:146::-;2061:29;2082:7;2061:16;:20;;:29;;;;:::i;:::-;2126:7;2106:28;;;;;;;;;;;;1996:146;:::o;809:203::-;881:4;925:1;906:21;;:7;:21;;;;898:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;984:4;:11;;:20;996:7;984:20;;;;;;;;;;;;;;;;;;;;;;;;;977:27;;809:203;;;;:::o;531:183::-;611:18;615:4;621:7;611:3;:18::i;:::-;603:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;701:5;678:4;:11;;:20;690:7;678:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;531:183;;:::o;273:178::-;351:18;355:4;361:7;351:3;:18::i;:::-;350:19;342:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;439:4;416;:11;;:20;428:7;416:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;273:178;;:::o

Swarm Source

bzzr://dc702c7b006a2d51412b147f29ebcd018bac8478f7850530552964b073f9b95e

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  ]

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.