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

Value
$0.00

Txn Hash
Method
Age
From
To
Quantity
0xd1dac15d19ecc9cb1a7cae4789cb611ecffffe99a98537bfce75280c968835fa Transfer 2024-03-12 20:06:00 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x5509e003d928842833d0d044b03d8b5a0c5d27fd 21,979.0000 MDR
0x255755247becd127e734e6bc4894067546b2575829d01dde0ef6db90f3fc33a8 Transfer 2024-03-10 20:52:45 0x17dae6939fffbb422f576572c8c7673a76791356 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 10,258.0000 MDR
0x5c765c60a21cde366476c7aa3e2c5cbd573e7b7ea29bfbaf9c10b899629d1ab8 Transfer 2024-03-05 18:54:20 0xcf81029d6a5631e16762cf5f1f080e2ce5482ef9 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 11,721.0000 MDR
0x79233b2eb7808294d72f1d9d85845b7b550e97fd6dd008f34acc7a32f213194c Transfer 2024-02-29 16:58:13 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 1,997.8500 MDR
0x652121f49ab4e58f03551ef6496340bafc183f1eeb07b65f12d5fc3600acb250 Transfer 2024-02-24 17:25:53 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 1,156.1500 MDR
0x0560eccd1bb8166738d628f120d519fb3fe2be3c41d38e0a5a51e10dc657e562 Transfer 2024-02-14 18:24:33 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x20073895bd04ae0105b7bcd8578094fdd3baa64d 68,000.0000 MDR
0xf3b8699cab6387720789f724c0268d0b37963d295c1517ef09472b2b2016b983 Transfer 2024-02-14 17:58:27 0x900429d7bf8e893922b88c94d3b563370bd67490 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 6,000.0000 MDR
0x3b97e324fe501db461fcb2d15d333ae3e5a1b3473ddd5160905d5ca89d1f6e30 Transfer 2024-02-14 16:19:21 0x58839d81ee1975295b945e9338c6f28cb48e6d10 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 19,461.7000 MDR
0xf87aec073bdd722de074dfdda6fbf6b1f75d04ac0c7331f437de9ffb2db07e52 Transfer 2024-02-14 16:10:24 0xab108fff7e9b0a4e323bf0a56f4ad0bca685269e IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 15,960.0000 MDR
0xd48732aef079f5d96f428d5b4ae31f809f1445d4f07ee42bf3205d2dad7c3ba9 Transfer 2024-02-14 15:40:09 0x210a373a0d8a350bff79e90928d296c07d83e649 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 13,033.0501 MDR
0x0fffb677c0eb7b06d3e6dc9c450d054c1dde1b82329e988289c17af477ccc05b Transfer 2024-02-12 14:24:02 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 3,619.5000 MDR
0x42fc018795eadd09e38a3b3731eed52d71ef9fdb28ef78d5af8365c74c07bab7 Transfer 2024-02-11 18:03:35 0x18c6ae955d2ce754f13a74ef93c29fffdb8dbbaf IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 10,000.0000 MDR
0xde514adee61a4e70ce14937c08c215405fd0ef02cb00ec2f773e6e5ad6f92c61 Transfer 2024-02-10 22:19:29 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x20073895bd04ae0105b7bcd8578094fdd3baa64d 207,000.0000 MDR
0x2d1cb24938ed9971b89e5337ed473d6d67ef08cafd48de239a7b12d74077e2db Transfer 2024-02-10 22:08:59 0x1bc04c368fcce6bd75d06fece3af49019b60c690 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 74,166.0000 MDR
0x316058f1717b9ae1de16b203a4753b1284c7170a18584e07040ea371833bd19d Transfer 2024-02-10 22:03:11 0xf54c965f111d719b8c4897e05d62fee81d25bced IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 38,000.0000 MDR
0xb8840b30e1780d4ccc26ff80fdefc0ee63f58805996a2e334da1ddb355ec200c Transfer 2024-02-10 20:58:20 0x21b8a0fc5d309387238ce39c40d7df5c867d5a62 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 4,182.0000 MDR
0xfa7f4e2b7b84318eff5e8f59572253b135fba5bf5754cc6810f9d84112fbdba6 Transfer 2024-02-10 20:57:17 0x95c1869c23dc15a88dfd27a3c1aa64e6f8ffeaaa IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 6,359.0000 MDR
0xd5dab38f8283856b9b2eab12db621535fb3351ef3773b68b3036fbbc020bf4f7 Transfer 2024-02-10 20:47:02 0xe9ea145ac9d60540ad92aebfcc130679c74588b9 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 22,813.0000 MDR
0x1f66497a9043056685a1cffdba75d3f4ce5c555a1d831d7577e37cd0525575bd Transfer 2024-02-10 20:45:50 0x5caae37080f44d96a041fbbbce0ab47bcd4cd563 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 8,384.0000 MDR
0x8cb168daa7cc76d2695f7c5b863d3c45370ec69f03871bd521f75321f485cfed Transfer 2024-02-10 20:44:44 0xb35dc84948ee7039e5e92371df042386ad1a7c13 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 8,973.0000 MDR
0xcea587cd9957f2ea6be1889fcd51fcb5c5da63a47f6b71c9316bcb58242badf5 Transfer 2024-02-10 20:43:44 0xba322af7d42f6c74d6556b2da4bb5d16bf160bcd IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 3,668.0000 MDR
0x4390df462227bc3de8551a88985f13ce628a4da6f47dccaf97e434dd5356c7d1 Transfer 2024-02-10 20:33:05 0xb59f10b3e05b1b522e60991491c015655295a93d IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 382.0000 MDR
0xa137b5a55001d42ba4155a3c5894031245ac27b536566c66978ba0bf22073ea8 Transfer 2024-02-10 20:31:29 0x8e1f321b226ddb9d31ef43dff501a961771a1718 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 579.0000 MDR
0xbe38eb42f838c706235b36f03ec08cc6ee9e4987ae74213339db386ea3e75dab Transfer 2024-02-10 20:29:59 0x93e4c9735980ad13c1cfb839e7a8f817a61ee862 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 5,274.0000 MDR
0x16c8aba3de7e6f6f2897b37b098324ebe8f2daec2bee2b1ca805cca03e98ad74 Transfer 2024-02-08 16:00:34 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 30,948.1500 MDR
0x3bb606d18e3f65849d5c027f924250e44c12349992565ed1d8701df20748f863 Transfer 2024-01-26 17:32:38 0x5a1d7a61d9e681093026a50c7f13e9e998ad2ac9 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 177.0000 MDR
0x0870ed0fa71eb850ac1d68ff1a0b7ca37437722f5afb73d9bbb8a72eb016dfb5 Transfer 2023-12-16 12:22:34 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0xf54c965f111d719b8c4897e05d62fee81d25bced 735.0000 MDR
0x161474f0816fac07d2e7f660f87f69692323c5cc2048eddd93a535800f1d06a0 Transfer 2023-12-11 22:57:38 0x5caae37080f44d96a041fbbbce0ab47bcd4cd563 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 589.0000 MDR
0x84a96bc723d707fc32a1ce085cc21ce4b29600e128f519197839aedf95e51466 Transfer 2023-12-11 22:52:32 0xba322af7d42f6c74d6556b2da4bb5d16bf160bcd IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 589.0000 MDR
0x0f4793d93e0d55885dd8276b4a367a40955b2f017a29c94fe868c1886e3cfe1c Transfer 2023-12-11 22:43:05 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0xf54c965f111d719b8c4897e05d62fee81d25bced 1,621.0000 MDR
0xeef5dfcb242756a9f639a05c55846ddf38396d12cafedf279b59d1b074df2610 Transfer 2023-12-11 22:16:50 0x5a1d7a61d9e681093026a50c7f13e9e998ad2ac9 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 300.0000 MDR
0x33b5e8a17264827c9c2242e4793dbbc932dab776cd0430a6fecaa63e8e3a13dd Transfer 2023-12-07 16:45:48 0x6a53a8fa551034bb7f57159ff3bef00ba4921c6e IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 883.0000 MDR
0xf251a386df7338443a0c9b0a23f5df1445a8b5cacbcf1cd913a316279b1c80b2 Transfer 2023-12-02 16:50:30 0x821a9ac1f5ad961e34e486d6d3891272e6582d06 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 150.0000 MDR
0x36678d0fd825a5b72c5eca8d92c1fd07aa10c1a7fb8dfb5aa40b5bb290ae93c7 Transfer 2023-11-28 20:20:21 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0xf54c965f111d719b8c4897e05d62fee81d25bced 1,235.0000 MDR
0xc547398e0da224b6c9ba2e7d482a49e3c1d2f977d4d9a90f4c5637fd57182ea7 Transfer 2023-11-28 20:06:21 0xb1ddfd2b2e8214f648b054d02c58171a2dad37ac IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 588.0000 MDR
0xcdcea823adaf29e5d4687f803b65dbea8f2fd88044b8bd42bec405512012dd1f Transfer 2023-11-27 19:59:15 0x5a1d7a61d9e681093026a50c7f13e9e998ad2ac9 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 60.0000 MDR
0x25c93034a84be94179707797dfdf777976696cff404c02720445ac6a7926d54c Transfer 2023-11-27 18:43:03 0x6afd21573099dc16d043edb059b5a3657e157dc4 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 2,058.0000 MDR
0x4a66bdda23d183fb16f9c29c4b83ccc91a86922f4de58c609c1815624d045768 Transfer 2023-11-09 07:57:22 0x54d6fb6c14b789456ece44b585b4479808bb004f IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 110.0000 MDR
0x904e7edd3f8827b56ff189566b5b6233594d5ceab0e2e2767cdcf395899adc55 Transfer 2023-10-10 08:41:46 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0xf54c965f111d719b8c4897e05d62fee81d25bced 233.0000 MDR
0x30f57695c4651a803d3f0dc96dbdefa630e465d7e4b3e08c68cd04b679761561 Transfer 2023-10-10 08:36:43 0x5a1d7a61d9e681093026a50c7f13e9e998ad2ac9 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 366.0000 MDR
0xfb35c50f394d83549afd7e81c0ee1f50e40b0eb170652f9b25de8f35a93c4443 Transfer 2023-10-01 17:16:37 0x54d6fb6c14b789456ece44b585b4479808bb004f IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 120.0000 MDR
0x9fa8c53390c848278bdf65b5645ca17a2e12600bae7eca3e8815f971cd735f2a Transfer 2023-09-29 08:42:49 0x54d6fb6c14b789456ece44b585b4479808bb004f IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 250.0000 MDR
0x89b7008cd8013d81c449c33bb658a59e20c5ef23d8bba1e6d47194825bd22137 Transfer 2023-09-27 23:50:52 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x822664b7724f48e01ba4b8e14a6a1e10ef63ce80 2,000.0000 MDR
0x38ee5e9d1d8c05f7818c910f81c8f0ed936d7ab080c643fc42a5213a9ecae18c Transfer 2023-09-21 13:52:44 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x88b9efbcda052250192ea42e9b7aef4482898e06 1,470.0000 MDR
0x57360844e40b788559b160e726142706e825ecff0bcee2e913ce43c33111f8a4 Transfer 2023-09-20 16:28:44 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 47.5000 MDR
0xdef98e8d6133c1e33c207ccfae2c6172de6497a95c6029bc773e75d21d8cc939 Transfer 2023-08-15 20:33:36 0x9f04fb353731c42e5b6a748b0cb1acedb94c3788 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 1,230.0000 MDR
0x51d879016aba0e4896e9217295302addd73f5e4a61ab20348b93781067071608 Transfer 2023-08-15 20:25:06 0x9f04fb353731c42e5b6a748b0cb1acedb94c3788 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 588.0000 MDR
0x0b0d3a937baf60b386a25b0235a9a4cbdfb717c244778cf038e66fdc24a516e9 Transfer 2023-08-13 10:37:30 0x54d6fb6c14b789456ece44b585b4479808bb004f IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 305.0000 MDR
0x1ea896be642cabab4359ced6a29d9bc0a24b498b27a0adf702045497448f205d Transfer 2023-08-10 11:39:57 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 250.4500 MDR
0x1e58e5d429ca21962cb1c61678514ff800131748ffa9e8f9d2ebfc0099b718c8 Transfer 2023-07-30 18:35:22 0x18c6ae955d2ce754f13a74ef93c29fffdb8dbbaf IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 150.0000 MDR
0x32f71b3547607805dcd2902ad5c8ca23e337af756161ea22d298b12f76c2af34 Transfer 2023-07-30 18:27:37 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x65ab6311a4d699ffbc1d8a370043c80c401cffb7 490.0000 MDR
0x741403213f24793ed4d57ce1e2541c534577627cdffa7201b6e6134352e69ca1 Transfer 2023-07-30 09:05:37 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 2,075.7500 MDR
0xbef0e46eb2a99259aaa0992221972dde4862e58f90cc0a3052a0052ad67eddf6 Transfer 2023-07-01 19:38:47 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0xd878793495f5cb8b123b4324bc9c0ead40a9b80b 4,180.0000 MDR
0x7434347a376ad4db4aea556121c076368cc18ab4aec16b85a20260f20699cd2b Transfer 2023-06-30 18:42:23 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 OUT 0x822664b7724f48e01ba4b8e14a6a1e10ef63ce80 525.0000 MDR
0xd74ed1f91e8860ccae6158c0796b61c1d8c77239f490ea1988bd91e9208f6bf5 Transfer 2023-06-29 12:16:44 0x795552967caea555251de496479b7df6f679ac8d IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 909.0000 MDR
0xd3773a3b0782ad1d391bf5b9873a45be4bf9d242c3c8571bec2bd6a6b57e41e4 Transfer 2023-06-29 10:50:20 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 4,028.9500 MDR
0x251c17155aca1f3d8de16547deae5abc312a4765316c6a33cca3a882fbf12637 Transfer 2023-06-28 10:26:17 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x0fe9c7cac304a1a5b21f698de5e2bbf03cedb5e8 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.