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
4425 MDR

Value
$0.00

Txn Hash
Method
Age
From
To
Quantity
0x445d8645d1e8187638bb5fc4835a232f465440ea0009f558216bb383e778a318 Transfer 2023-12-18 20:45:34 0xca0524689a25e8eff175857eb8e2ca48936b95ca IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 3,000.0000 MDR
0xf5661692a0235b7b25dea2e7a2d3decdecd9299609cbe4cafb299d01b2f9ecc7 Transfer 2023-12-05 15:50:36 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,425.0000 MDR
0x6a64e0860f5c308522811a6f9927e99267ce91cd1283270cfdddd1c62ce7a78f Transfer 2023-10-21 14:25:25 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x5d582725f9955171c976b6b2bb3f2e39d36c5b5c 1,300.0000 MDR
0xbf01062f05960f2f300b10d673b257fb9444723da79147727ae8756fe6b3b22a Transfer 2023-10-21 14:09:01 0xecbd1ebb02d5dbcced6548e3b1d062f41c1c8a69 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,300.0000 MDR
0x6d8f2962339ee2ade126e12fa6516de32520b673d3c43cb1c1426ec3b7ae0f65 Transfer 2023-10-21 13:49:40 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x5d582725f9955171c976b6b2bb3f2e39d36c5b5c 949.9689 MDR
0x6f8fb35028f3d5975759d788a9a356bdd3d89f3ca123dc6fdd277874db5db0d8 Transfer 2023-10-18 23:47:58 0x41036fc91247a8a3b1b8fd63d1acbdb93be57be5 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 561.4500 MDR
0x915e1929df63727748bd118ce747c7f5cf9a33600d9e28f58db54c82abd2776c Transfer 2023-10-18 23:47:16 0xb34c2485903b0a5144035c4a62e290292df37e77 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 85.5000 MDR
0xce4e80b63023e359a5f1b0be08df04bcd317a0c611537ef06fdc0da802503de2 Transfer 2023-10-18 23:46:16 0x7cef0b44e01fbce2e4cd49d196acb47e66325899 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 195.7000 MDR
0x575d8faf004f4f778570cda0d4201ab5284420502976f791b248307ca950cf5f Transfer 2023-10-15 13:42:55 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x5d582725f9955171c976b6b2bb3f2e39d36c5b5c 3,500.0000 MDR
0xb076c0f0b7f00ef774e1207cd63413b6ac7fbe7e843eb3c1a364fe59b46999a1 Transfer 2023-10-15 13:26:01 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x5d582725f9955171c976b6b2bb3f2e39d36c5b5c 1,000.0000 MDR
0x0aa9286b96f69abdf85e17f093f7615a0f0a6dd1ab7b7122b6dae1af3e273fd2 Transfer 2023-10-10 17:59:22 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,582.7000 MDR
0x82dfb0c02a49055d123ddff6b35819c891e9d02204b75205ac15f794df58fe3b Transfer 2023-09-25 09:46:34 0x16b3d369bc32c7de411b77b3dda896da4e039100 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 50.3500 MDR
0x2f602a715eddc9d0a05533e48f1d198b8468156108fc4ae4d3bc00308889eae6 Transfer 2023-09-25 09:42:10 0x41036fc91247a8a3b1b8fd63d1acbdb93be57be5 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 623.2000 MDR
0xbcd6c8628459e6fe3fb8f4408d99d2eb0db3d22b97721e1b9dd662a5e1099a2e Transfer 2023-09-25 09:40:58 0xb34c2485903b0a5144035c4a62e290292df37e77 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 50.3500 MDR
0xe04a96097d2c77ea2dad166b8b7378d4c8345ca758044a737c5706cff7cbb41d Transfer 2023-09-17 23:04:48 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 2,000.0000 MDR
0x2c54b65d8bbe89722b325c6ca4d2ba05c6eacd32b88e33e6eea52548fd26c2fc Transfer 2023-09-12 16:02:18 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 200.0000 MDR
0x635a08cf62873afe2eb3c9b94541f8a51a8412a87b37c6e8021f48b0cb9138f6 Transfer 2023-09-12 15:50:33 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 2,000.0000 MDR
0x183b432c8f8e04edbc0781136832f6650c2fbdb839a10b7b95e526dd74c201af Transfer 2023-08-13 22:54:24 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 2,000.0000 MDR
0x2d136ebcf58ab57b69dc0a7012db09ad8ec1b3a7520a8bfbc5b3543951504f24 Transfer 2023-08-13 19:01:54 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 2,000.0000 MDR
0xd28aa02bea80a874baa975c5c3b3fc0eab6db67c0e92d0a52dee1a78b0af2b94 Transfer 2023-08-13 14:12:36 0xbe910cac5d7e6178da70cd71e3cfd979be849582 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 2,000.0000 MDR
0x2f3f84fffc2faa5670cff3930adc28993b300fefeb4b443a086c7c23a8027338 Transfer 2023-08-13 14:02:18 0x1725d42731663ceb87cefe741e731c262498b07d IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 897.7500 MDR
0x619f41f7c0c8fb78fe79080b9c6489dca9fc53f34aa5f30b475e87d89696912e Transfer 2023-08-13 14:00:03 0xbe910cac5d7e6178da70cd71e3cfd979be849582 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 2,000.0000 MDR
0xe102435813444f8c0a4e8d7b8f793c396a3736b207a2bb02941bccfd57832877 Transfer 2023-08-13 13:58:33 0xbe910cac5d7e6178da70cd71e3cfd979be849582 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 2,000.0000 MDR
0x27cb1fecbca15e5e2200578073c5cdf4c8d65bed99692ce6bd36097af223872e Transfer 2023-08-11 15:11:03 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 2,000.0000 MDR
0x0e597f96a8d5f22dc2707a32bb6a06d6620bb686048a4a12098871e5f2094626 Transfer 2023-08-01 13:42:58 0xed239c64375d0f8c187c588a65fc950f02c4d293 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 349.0000 MDR
0x7b67bd1823357b8456d51d86a0760e746c1de83a2b70f5645ecd507d13292989 Transfer 2023-07-31 19:48:40 0x8640fdb4546f4fb3fb9c1dad46f09974e36dff67 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 730.3004 MDR
0xc2d1178d3ab53ae5c0ed1b52a7fb7a2cc94cd641bc775fb22d839f01fbb50fb4 Transfer 2023-07-30 17:36:52 0x0becfac124aeea76ee00362ad63a774633b17a18 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 997.6263 MDR
0x2c543b8fef3685284a8dc58f84298deb434344cfc33592717db9a288ccfde731 Transfer 2023-07-30 13:25:16 0xecbd1ebb02d5dbcced6548e3b1d062f41c1c8a69 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,570.0000 MDR
0x9a9cf9adcf08140a98e5a0a67a4ac338799ca01a55f3268bec37f1c42429c668 Transfer 2023-07-30 13:21:55 0xdd3056b0329e23b2014557a4f80e339c63f2011a IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 4,714.0000 MDR
0x0bee832a50293006b36f88ce052eea383309529703c353abfc2540a4cec0edfd Transfer 2023-07-27 19:51:15 0xa0719026cec1c4770e89282b598665f59bd9ee49 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 351.0000 MDR
0x1d816b82d77b93c0e382cedf70c4a8123ccc6a72f8f66e9cb2711e8eb50bc231 Transfer 2023-07-27 14:29:18 0x0becfac124aeea76ee00362ad63a774633b17a18 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,420.7423 MDR
0xae2b38f65e7cae8f0322cec8f4ead6c400c7c54e0e46c4e9705a01029e83d8a1 Transfer 2023-07-26 18:28:29 0x5299697d2a903ce48ea9d13b6445c233d750655d IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 125.0000 MDR
0x202f0ecc2936b752ab487238f8fdc7d1795bdf5938ba3e6396978dd87d81024e Transfer 2023-07-26 18:24:17 0x84652cd2bc0204503d8a984fe258eecab2c5e47f IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 217.0000 MDR
0x81cf0e52029ce00f03217e89d89530b4de91d37fa5125f2023ff2eaa2f4524a0 Transfer 2023-07-25 21:16:03 0xca0524689a25e8eff175857eb8e2ca48936b95ca IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 930.0000 MDR
0x49ff26532eb88f151a0ddcde73e89052a12b1ff3a87dc1a5e3beda788a22b485 Transfer 2023-07-25 20:44:36 0x00aec0cc35ebacdd2d0bdc2a152567cb82b3c875 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 133.0000 MDR
0x5bdd547b384738bd40c5310ae06ec90e9c549830c83cbce58563b1dfe5eaa18f Transfer 2023-07-23 16:11:32 0x0becfac124aeea76ee00362ad63a774633b17a18 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 65.3000 MDR
0x85909b8edcda43e247f679bd36c97fe7f6cde9180a9c535c6c249cd6ec1f0ed8 Transfer 2023-07-14 15:51:42 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 1,959.6500 MDR
0xa1d25b7ff2964f8abc4710d6a0713bf0b180b403092abbee5e862266ffbbd90f Transfer 2023-07-14 14:14:02 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,955.1000 MDR
0x4c1a95a596d12b711eb36ce1f9b4b4dd7ef17d8922649f6f2764afe457a34b76 Transfer 2023-06-25 22:13:47 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 155.0000 MDR
0xb3cf1be7598aa598946bcf3baea126e8182370955bf09d05362e56abf7221551 Transfer 2023-06-25 21:50:41 0xdb29e9d0260f0fe710c3850d4fe2392f861540b3 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 155.8000 MDR
0x1acf130abba2dc7194776afc57d8b5304bc6432456164a13cccfd0d270f72aa7 Transfer 2023-06-23 13:48:35 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 540.0000 MDR
0x0016be934def58a2e280293849fe88323f3a571a2eadbd2b93426a21fe89e41d Transfer 2023-06-23 13:41:38 0x8f51a99302a741bace1f4410d86c9c890df38840 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 540.0000 MDR
0x3bb93b706e19e9fe751b21f61cadefe1266529d91ff4c065b168a9dbd468b72c Transfer 2023-06-22 00:06:56 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 465.0000 MDR
0xdaa3fe5b5ba6d800dd1b51cdc3efbc715e40f93153476a0fcfe77fe44a70460b Transfer 2023-06-21 22:34:08 0xca0524689a25e8eff175857eb8e2ca48936b95ca IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 465.0000 MDR
0x605d32f9ffbf41182784aba1977bad4ee7b4948df9ad33f62fbb5f9304ca68ba Transfer 2023-06-20 01:44:11 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 600.0000 MDR
0x5fc80db3ddc6bac9bb9355e151d4b7d92ddc154e114dc4e2126f16bb8e4ee481 Transfer 2023-06-19 23:44:59 0x8640fdb4546f4fb3fb9c1dad46f09974e36dff67 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 593.7500 MDR
0x0daa2e6c1200219c8d5fdd52c156a23eb7775705e0fb9cc769217e65332a99e1 Transfer 2023-06-19 15:29:53 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 3,480.0000 MDR
0x71f2504006c3a1c0b791d26a8a0b27a101be2e1cef790f01db8c69b4bc15e7f9 Transfer 2023-06-19 15:22:05 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 25.0000 MDR
0x0eb20527f35f4ebeb67435b320c5dda9099997b700327ba141bbd76e1823447f Transfer 2023-06-19 15:09:29 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 665.0000 MDR
0xb7a4db093417f115e62cc96c375b20f0cead9865433cf126fac2c19c4a2cdac4 Transfer 2023-06-19 15:08:44 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,425.0000 MDR
0x71810cb85838ad23f8317af72ed37d90699a2069aeb5597e9f76db21d5eafef3 Transfer 2023-06-19 15:07:59 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,425.0000 MDR
0xa6dd6db37f669ddd9529f7252584fc9b14a61dcbcd472867ddf28ff84dafbcb1 Transfer 2023-06-14 11:52:29 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 1,000.0000 MDR
0xb36aeba0db2229046083e26ab8ba9a1aa0e17075e73b97de8ece26a003b11dfb Transfer 2023-06-14 11:52:02 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 1,162.2000 MDR
0xc35ec4237e0fcd60d9540ed66aad80fa8f69a1bce02be40def2d844a35c5cafc Transfer 2023-06-14 11:36:20 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 1,805.0000 MDR
0xe9ebc72c2367795f10356b8c74f4f1f6c840b4a40f79a150096f902dc94a54d0 Transfer 2023-06-14 11:35:56 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 357.2000 MDR
0xa07bdf95dbdeb278515cdf0180752f851596055dfcbe142ff3f9a24b721ad501 Transfer 2023-06-12 23:29:52 0xbe910cac5d7e6178da70cd71e3cfd979be849582 OUT 0x28a5ff8f2106e9ac9cf27c3adf276d8be40b2f84 60.8000 MDR
0xd9747af732b90d6481dccf0934554c62629ee0bc8b56a4992f87fa07397c777b Transfer 2023-06-12 14:42:04 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 23.7500 MDR
0xfd9c1dfd3b664c37ec1f871eb069b79e5574ba42330602cde6324365a7815ac9 Transfer 2023-06-12 14:41:49 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 27.5500 MDR
0x04ed7788f84662b2a3882fcfd8575d8cc3ca65c2eb90d5cbf6b36fcc4e27840c Transfer 2023-06-12 14:19:34 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xbe910cac5d7e6178da70cd71e3cfd979be849582 9.5000 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.