Contract Address 0x73c084388F5423c991030C3FA22249D3e02b1960

 

Overview

Total Supply:
1,000,000,000 MDR

Circulating Supply:
300,000,000 MDR

Holders:
Addresses

Price:
$0.07

Market Cap/Fully MC:
$400,000,000 (@ $0.07)

Token:
My Name Tag:
Not Available, login to update

Contract:
0x73c084388F5423c991030C3FA22249D3e02b1960

Creator:
0x7d528109c7Db392E92740C982A4e36f37c4ca684

Decimal:
8

Issuing Time :
2023-05-04 11:23

Official Website:
#

Social Profiles:
Balance
1166.8 MDR

Value
$0.00

Txn Hash
Method
Age
From
To
Quantity
0x4314c128cde39abc49298ee374a1dc411e27f38a0e0827ca7d188cc959906406 Transfer 2024-03-02 15:58:34 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 150.1000 MDR
0x96f037b72c80a7096c1e41c1e8cfe0517620f60daacd44eaf50bebccd75f22c5 Transfer 2024-03-02 15:58:13 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 150.1000 MDR
0xf6bb8f7f95375b9c9c98657410d9d76e120bd247d71aa31e474cc05b1189e134 Transfer 2024-03-02 15:56:46 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 150.1000 MDR
0xd761c5e7104591d733684481b3e1016e195d6ba43260a86d52c2b426d5809adb Transfer 2024-03-02 15:56:22 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 665.0000 MDR
0xda4eeb920f7901fdd0af30c560bb85c614bcb975f4b3de1996c4689eeca8c8d7 Transfer 2024-03-02 15:54:46 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 51.3000 MDR
0xccf3ebc49cdbef95a2a5d6d26c2291655545ff04863fd8ed24d82e9bba43deb9 Transfer 2024-02-24 13:42:50 0xe9b6757b965c37232852491c44d32185ff6c162f OUT 0xfadb471d007be01cc497754209e118d448e21f69 3,823.0000 MDR
0x292c36b2d600de31a1aaf19321f6111df4aa8e516244cd2d3b43db08422bddb2 Transfer 2024-02-23 16:51:44 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 662.1500 MDR
0xc90d849c69b8a3fcf505bc5074abddf09bca4795214d646770cf4a32e53f8e9c Transfer 2024-02-23 16:51:23 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 448.4000 MDR
0x8d3395023693da2f1bae96bae4de6c9cd5c957b1441f384c9795f686a4e211a1 Transfer 2024-02-23 16:51:08 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 448.4000 MDR
0x2315fee12db8a3d303d736bd49ba186a35b5748e18fb68af1e656a4bfb2d7aaa Transfer 2024-02-23 16:50:50 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 1,995.0000 MDR
0x5302acb8f8f0f9a503a577e3ef8c8efdc9fb8fba5f58d0ddc7510b17ea826041 Transfer 2024-02-23 16:43:50 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 268.8500 MDR
0x6742dd80d918270011e4687f2d971bdc80b5e69b14f26613978dae11f53d9633 Transfer 2024-02-22 14:05:57 0xe9b6757b965c37232852491c44d32185ff6c162f OUT 0xfadb471d007be01cc497754209e118d448e21f69 31,840.0000 MDR
0x6a0052f6b607a2a859c2797ca72457a04a7287feaa383d9ff3355ce5db25b161 Transfer 2024-02-06 14:23:36 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 3,384.8500 MDR
0x0fdfc657aab566bd05f9a0bc092da41f817b050a5282996777d55eedc6600148 Transfer 2024-02-06 14:22:45 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 2,031.1000 MDR
0xe81f2ec92d2fa7995abed67f410b2ce61283dba3911e261e18895c6240b11d78 Transfer 2024-02-06 14:21:48 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 9,025.0000 MDR
0xa63033339e513728a484595302482e83679863ec42d67ec26b1bc8a14d2d4f70 Transfer 2024-02-06 14:04:00 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 2,031.1000 MDR
0x971b7b06f66539a0d4b9b30545540a37a008d2a0998941de2e1e758370993872 Transfer 2023-11-01 10:36:19 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 769.5000 MDR
0x61ad52eb8a1f37d53758576db05c9e04e6b38e55c4c1adf2b2f4a1f77200775c Transfer 2023-11-01 10:35:31 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 1,282.5000 MDR
0x821a615529d86457a41e8ea9dad4d2c80f365963e366bff688c217f0b0253386 Transfer 2023-11-01 10:32:40 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 3,420.0000 MDR
0x81e9c19ffc52e6280f8fbf65e95076477fe8689c586b628f84e23d0a6dbb2b66 Transfer 2023-11-01 10:31:04 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 769.5000 MDR
0x086fe6dbbc295639669e5d127799c7b46618eac09fad81418fda795b6e0670f9 Transfer 2023-11-01 10:30:22 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 679.2500 MDR
0x9f44ec975f6dcae5d97a62cf0d0766cb788ad154e23622dc2978bdd40de169f9 Transfer 2023-10-18 12:52:31 0xe9b6757b965c37232852491c44d32185ff6c162f OUT 0xb6f03090cc71764407c47aa5c62940895f292895 1,000.0000 MDR
0x5ad483f4fe3ae9045e2343ec151794e168041fde6c30a010edc9cfbb89008df3 Transfer 2023-09-25 10:26:40 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 320.1500 MDR
0xbb5f0043c340d9f3b1ae25c4e5a34b9e7e62fe6ebd702f05608152b08937ef26 Transfer 2023-09-25 10:26:16 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 533.9000 MDR
0xa9705c4495e0a23c3ab85e798d66cc6908d9938711f18ee97cc9b79ea1748ee2 Transfer 2023-09-25 10:25:43 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 1,425.0000 MDR
0xe16d54105d4c30b90eef19f00e719943cb42888f8f962cf55b467b10b1212eeb Transfer 2023-09-25 10:24:31 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 320.1500 MDR
0x958ae29795e9a8ffc57d83893353f0e11aad3b8239697730d69bbd5597b7277b Transfer 2023-09-25 10:23:37 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 381.9000 MDR
0xa60eff96608ed890cf92b7ba7dfc6e35baf02355d929955d2595b7bb2ce8c670 Transfer 2023-09-09 16:13:23 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 256.5000 MDR
0xa7806238e6425b150395a993340458373af1ede152c4c398a0992a4dc48d3fd6 Transfer 2023-09-09 16:12:50 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 427.5000 MDR
0x454bc0c710126e43790aba372028348d9e423784d99c3ede78effddeb2d8e692 Transfer 2023-09-09 16:12:29 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 1,330.0000 MDR
0xb3f218d008e271e4f7c8c87a19165d4a9092cacd6ac10b31054582a2165872c1 Transfer 2023-09-09 16:12:02 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 256.5000 MDR
0xb174462e0083afea9255406d5104f7fe83012dd74917a645209a4126c0a26014 Transfer 2023-09-09 16:11:20 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 305.9000 MDR
0x7c66deea810b0b2602da7445aa75c0456c956a7d9c0f7b0b43936250d15f199b Transfer 2023-09-06 17:16:05 0xe9b6757b965c37232852491c44d32185ff6c162f OUT 0xc7191feb9eae042970e54bd9b1a9c540f54384b9 10.0000 MDR
0x21ee9e7cde47f290268698ff2ce00fda5abf16e097a6a523447abaea219aa2de Transfer 2023-09-02 08:30:14 0xe9b6757b965c37232852491c44d32185ff6c162f OUT 0xcd47684ce6cf556c6951b9a359cbfa94762e4f50 800.0000 MDR
0x56429d411696f5cc29ff4f2af0d28aa87a48a6b5b94ee55961aed3d3548b7238 Transfer 2023-09-01 16:21:32 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 475.0000 MDR
0x5d0e49b0347040e670617acd94e2bb37c4edd1300c2c1d420d06650d3b4d34ae Transfer 2023-08-28 13:50:16 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 674.5000 MDR
0x2c7f9c5ca6fc5a727bb398adac5cc7a42e197457410977db331e4519c779a3d6 Transfer 2023-08-28 13:49:28 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 2,199.2500 MDR
0x215ecd6bf4d1480459936325e46492ee3e8d315bf472a3125796ad5419399551 Transfer 2023-08-28 13:49:01 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 674.5000 MDR
0x83476235882ba439dd133568dffbe504a47ba070e347aeaae0ddc813d10a3468 Transfer 2023-08-28 13:48:49 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 470.2500 MDR
0x3a4341b25bbdc6fa9e2047ae29bb48c096db6d088283b667a5205395b482a500 Transfer 2023-08-19 10:51:58 0xe9b6757b965c37232852491c44d32185ff6c162f OUT 0xcd47684ce6cf556c6951b9a359cbfa94762e4f50 2,100.0000 MDR
0x7f38fc4b0b4b90ae147a6c4d27b4176a5111cf3d716217bb39af03d18e5c6a5a Transfer 2023-07-26 13:03:32 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 273.6000 MDR
0x82c366d3d493ab139cef4174246b0f4cb8df58a29daa3583cdb32c3199b830d3 Transfer 2023-07-26 13:02:47 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 290.7000 MDR
0x94eab9f481894c185ad7c26755837063ca9f8b2233f14a3c0993ffd570004f57 Transfer 2023-07-26 13:02:17 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 273.6000 MDR
0xe796a71da464a518017af1d15b54be0e3baf70ef7d6e83037d977b854a50c2d1 Transfer 2023-07-26 13:01:50 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 178.6000 MDR
0x3baa997965c4bb84b11760fb39d84f820c6c9ab3fb9a237b6ddd90da99646a35 Transfer 2023-07-11 13:04:47 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 28.5000 MDR
0x8bdf206d781d7068b844878180ec69334636d1552494fd9efcefbf5864e9f269 Transfer 2023-07-10 15:01:38 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 228.0000 MDR
0x13739a05f6b017a3b68ffb98f43daef36f2ce35bf20cbdb9e838cb3a8d4b6c51 Transfer 2023-07-10 15:00:08 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 228.0000 MDR
0x5aa890868b58a8e550269278f253b4f1a2797ae36d808bfcad69eec25767dbd7 Transfer 2023-07-10 14:58:32 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 594.7000 MDR
0xf46f6ea92bd0f46ede3fc38ccadaea0014b0aa109fea07859bdae93576f367b8 Transfer 2023-07-09 11:42:08 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 91.2000 MDR
0xbc83cf765068afcc504251f9470319db7ef47931ef083df2dd38b8a45f919797 Transfer 2023-07-02 13:16:05 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xe9b6757b965c37232852491c44d32185ff6c162f 119.7000 MDR

 Latest 9 ERC-20 Token Transfer Events

Txn Hash
Block
From
To
Value [Txn Fee]
0x4c8599fa5db502d29d78ad3c85e39ff7160c4775e4e645cd344af13d662eded3 16807914 2 hrs 6 mins ago 0x931cdb4f83672a7803a552414c026b7914bb72ae OUT 0x1fd1259fa8cdc60c6e8c86cfa592ca1b8403dfad 0 BLN 0.000143891192

 Latest 25 blocks (From a total of 353,417 blocks with 47,300.41 BLN in fees)

Block Transaction Gas Used Reward
16738610 31 secs ago 430 19,977,660 (99.89%)
0.16001155598032753 BLN
16738609 33 secs ago 349 19,967,071 (99.84%)
1.368512730518157196 BLN
16738608 35 secs ago 430 19,959,026 (99.80%)
1.119899900678144967 BLN

pragma solidity ^0.4.24;

contract ERC20 {
    uint256 public totalSupply;

    function balanceOf(address who) public view returns (uint256 balance);

    function allowance(address owner, address spender) public view returns (uint256 remaining);

    function transfer(address to, uint256 value) public returns (bool success);

    function approve(address spender, uint256 value) public returns (bool success);

    function transferFrom(address from, address to, uint256 value) public returns (bool success);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);

    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

library SafeMath {
    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a - b;
        assert(b <= a && c <= a);
        return c;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a && c>=b);
        return c;
    }
}

library SafeERC20 {
    function safeTransfer(ERC20 _token, address _to, uint256 _value) internal {
        require(_token.transfer(_to, _value));
    }
}

contract Owned {
    address public owner;

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner,"O1- Owner only function");
        _;
    }

    function setOwner(address newOwner) onlyOwner public {
        owner = newOwner;
    }
}

contract Pausable is Owned {
    event Pause();
    event Unpause();

    bool public paused = false;

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }
}

contract AVNrich is Owned, Pausable, ERC20 {
    using SafeMath for uint256;
    using SafeERC20 for ERC20;

    mapping (address => uint256) public balances;
    mapping (address => mapping (address => uint256)) public allowed;
    mapping (address => bool) public frozenAccount;
    mapping (address => bool) public verifyPublisher;
    mapping (address => bool) public verifyWallet;

    struct fStruct { uint256 index; }
    mapping(string => fStruct) private fileHashes;
    string[] private fileIndex;

    string public constant name = "Bullion Share";
    uint8 public constant decimals = 8;
    string public constant symbol = "BLNS";
    uint256 public constant initialSupply = 21000000;
    uint256 public validationPrice = 7 * 10 ** uint(decimals);
    address public validationWallet = address(0);

    constructor() public {
        validationWallet = msg.sender;
        verifyWallet[msg.sender] = true;
        totalSupply = initialSupply * 10 ** uint(decimals);
        balances[msg.sender] = totalSupply;
        emit Transfer(address(0),owner,initialSupply);
    }

    function () public payable {
        revert();
    }

    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool success) {
        require(_to != msg.sender,"T1- Recipient can not be the same as sender");
        require(_to != address(0),"T2- Please check the recipient address");
        require(balances[msg.sender] >= _value,"T3- The balance of sender is too low");
        require(!frozenAccount[msg.sender],"T4- The wallet of sender is frozen");
        require(!frozenAccount[_to],"T5- The wallet of recipient is frozen");

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);

        emit Transfer(msg.sender, _to, _value);

        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool success) {
        require(_to != address(0),"TF1- Please check the recipient address");
        require(balances[_from] >= _value,"TF2- The balance of sender is too low");
        require(allowed[_from][msg.sender] >= _value,"TF3- The allowance of sender is too low");
        require(!frozenAccount[_from],"TF4- The wallet of sender is frozen");
        require(!frozenAccount[_to],"TF5- The wallet of recipient is frozen");

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);

        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);

        emit Transfer(_from, _to, _value);

        return true;
    }

    function balanceOf(address _owner) public view returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) public whenNotPaused returns (bool success) {
        require((_value == 0) || (allowed[msg.sender][_spender] == 0),"A1- Reset allowance to 0 first");

        allowed[msg.sender][_spender] = _value;

        emit Approval(msg.sender, _spender, _value);

        return true;
    }

    function increaseApproval(address _spender, uint256 _addedValue) public whenNotPaused returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);

        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

        return true;
    }

    function decreaseApproval(address _spender, uint256 _subtractedValue) public whenNotPaused returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].sub(_subtractedValue);

        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);

        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

    struct TKN { address sender; uint256 value; bytes data; bytes4 sig; }

    function tokenFallback(address _from, uint256 _value, bytes _data) public pure returns (bool) {
        TKN memory tkn;
        tkn.sender = _from;
        tkn.value = _value;
        tkn.data = _data;
        uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24);
        tkn.sig = bytes4(u);
        return true;
    }

    function transferToken(address tokenAddress, uint256 tokens) public onlyOwner {
        ERC20(tokenAddress).safeTransfer(owner,tokens);
    }

    function burn(uint256 _value) public onlyOwner returns (bool) {
        require(_value <= balances[msg.sender],"B1- The balance of burner is too low");

        balances[msg.sender] = balances[msg.sender].sub(_value);
        totalSupply = totalSupply.sub(_value);

        emit Burn(msg.sender, _value);

        emit Transfer(msg.sender, address(0), _value);

        return true;
    }

    function freeze(address _address, bool _state) public onlyOwner returns (bool) {
        frozenAccount[_address] = _state;

        emit Freeze(_address, _state);

        return true;
    }

    function validatePublisher(address Address, bool State, string Publisher) public onlyOwner returns (bool) {
        verifyPublisher[Address] = State;

        emit ValidatePublisher(Address,State,Publisher);

        return true;
    }

    function validateWallet(address Address, bool State, string Wallet) public onlyOwner returns (bool) {
        verifyWallet[Address] = State;

        emit ValidateWallet(Address,State,Wallet);

        return true;
    }

    function validateFile(address To, uint256 Payment, bytes Data, bool cStore, bool eLog) public whenNotPaused returns (bool) {
        require(Payment>=validationPrice,"V1- Insufficient payment provided");
        require(verifyPublisher[msg.sender],"V2- Unverified publisher address");
        require(!frozenAccount[msg.sender],"V3- The wallet of publisher is frozen");
        require(Data.length == 64,"V4- Invalid hash provided");

        if (!verifyWallet[To] || frozenAccount[To]) {
            To = validationWallet;
        }

        uint256 index = 0;
        string memory fileHash = string(Data);

        if (cStore) {
            if (fileIndex.length > 0) {
                require(fileHashes[fileHash].index == 0,"V5- This hash was previously validated");
            }

            fileHashes[fileHash].index = fileIndex.push(fileHash)-1;
            index = fileHashes[fileHash].index;
        }

        if (allowed[To][msg.sender] >= Payment) {
            allowed[To][msg.sender] = allowed[To][msg.sender].sub(Payment);
        } else {
            balances[msg.sender] = balances[msg.sender].sub(Payment);
            balances[To] = balances[To].add(Payment);
        }

        emit Transfer(msg.sender, To, Payment);

        if (eLog) {
            emit ValidateFile(index,fileHash);
        }

        return true;
    }

    function verifyFile(string fileHash) public view returns (bool) {
        if (fileIndex.length == 0) {
            return false;
        }

        bytes memory a = bytes(fileIndex[fileHashes[fileHash].index]);
        bytes memory b = bytes(fileHash);

        if (a.length != b.length) {
            return false;
        }

        for (uint256 i = 0; i < a.length; i ++) {
            if (a[i] != b[i]) {
                return false;
            }
        }

        return true;
    }

    function setPrice(uint256 newPrice) public onlyOwner {
        validationPrice = newPrice;
    }

    function setWallet(address newWallet) public onlyOwner {
        validationWallet = newWallet;
    }

    function listFiles(uint256 startAt, uint256 stopAt) onlyOwner public returns (bool) {
        if (fileIndex.length == 0) {
            return false;
        }

        require(startAt <= fileIndex.length-1,"L1- Please select a valid start");

        if (stopAt > 0) {
            require(stopAt > startAt && stopAt <= fileIndex.length-1,"L2- Please select a valid stop");
        } else {
            stopAt = fileIndex.length-1;
        }

        for (uint256 i = startAt; i <= stopAt; i++) {
            emit LogEvent(i,fileIndex[i]);
        }

        return true;
    }

    event Burn(address indexed burner, uint256 value);
    event Freeze(address target, bool frozen);

    event ValidateFile(uint256 index, string data);
    event ValidatePublisher(address indexed publisherAddress, bool state, string indexed publisherName);
    event ValidateWallet(address indexed walletAddress, bool state, string indexed walletName);

    event LogEvent(uint256 index, string data) anonymous;
}
Block Uncle Number Difficulty Gas Used Reward

Analytics data

Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.