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

Value
$0.00

Txn Hash
Method
Age
From
To
Quantity
0xea8f346323345a40ff9caafada4cdfb9f4daf6bda37cf3ea6a9bfc6c5b6852f8 Transfer 2024-03-14 12:49:42 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x83d23c518455a44e4b0dd95b3e03deb035624fcb 75.0500 MDR
0xdf1a39db5d3ee3eb0b5ad9e106e0095673467f1e91b6577b5f7cd1b4b4c55554 Transfer 2024-03-14 12:25:36 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 75.0500 MDR
0x16c7e011f80f1c07926353773c5a65ab294315f4df48a0c3ae518a420f6166a3 Transfer 2024-02-21 18:27:41 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x089a68238654aad6054851979bc5ee735de3d461 754.3000 MDR
0x580feeec020d96d9e813e844737b130f890b71e53b9fd9a9b99b37f227414dcf Transfer 2024-02-21 18:19:47 0xa755e65fe61e6c6e8901bc40ad851945cb694cac IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 228.0000 MDR
0xd8e33c4e437283b80e1debc5a7e8cf79d399afc2e54c40c5a578a0317482296f Transfer 2024-02-21 09:00:11 0x7e996b6b63949fbfdc1206973a546284ccccc62c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 278.3500 MDR
0xb5181e77365cf8536e654ab04ee92d591bc61841e6fac29d83f8fc3a3929c080 Transfer 2024-02-21 08:59:53 0x7075a067344b2c53106d5b114a8c09088e5a647f IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 165.3000 MDR
0xad64ecf0bd514eaced23b5713909544e1dc9a3d3c7567182059a7b222db151b4 Transfer 2024-02-16 15:40:28 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 82.6500 MDR
0x70973a878b663f7c97187015b059984a3d86cfcd29e68d58c7c9cd6be6631f05 Transfer 2024-02-10 21:06:17 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x0a597cd537f3f8a2dfba5a896ce0c7a82975ff6c 265.0500 MDR
0x2a9627073aa69254b14ce61ce04022bfca5483c1fc1508eaa4fd4b242bbc86f1 Transfer 2024-02-10 19:44:31 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 265.0500 MDR
0x4bf66f444aa25bf2396e90b9571ec8ca424158e70cee5420260c33a05e25e1fb Transfer 2023-11-18 18:14:39 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 176.7000 MDR
0x1daec9e37d396ae92ac576be8ac046fffa7af1bde15bc7be0256f8b0cadb01c8 Transfer 2023-11-18 18:12:24 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 176.7000 MDR
0x6980f419c0a760b9bda8184ab4718c3e7c821a943ed0342137577dc0da138578 Transfer 2023-09-23 19:39:13 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x6d281aa7c29386900ad9bd4f848357875fdead6c 114.0000 MDR
0x921f29c59859f876a75f1905e081f27f2aad597353573a340d66945c190003e4 Transfer 2023-09-23 19:38:22 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 114.0000 MDR
0xb20a10548511a24d07a1e4297d939d4e18c096beec184b8ea1902ca911bbdd36 Transfer 2023-07-08 17:38:35 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 294.5000 MDR
0x64d870d45a176d065ad567a717abc012a3110bba838a27a3dbe9040bc39de9f1 Transfer 2023-07-07 18:24:05 0x7075a067344b2c53106d5b114a8c09088e5a647f IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 43.7000 MDR
0x10ca7557fc31d949cd67c91fbcc3974744c1cdcc6de670bc597515c79e52b764 Transfer 2023-07-07 18:23:47 0x7e996b6b63949fbfdc1206973a546284ccccc62c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 68.4000 MDR
0xbb65471f8bcf824435f44548ab88f8f78fa92aab4cf141915e92de15a7ad7573 Transfer 2023-07-07 18:23:32 0xa755e65fe61e6c6e8901bc40ad851945cb694cac IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 105.4500 MDR
0xf7400c6a094bfe9541dcc9b277ebac1c71fc5375b48c38db312fb25d38dd2444 Transfer 2023-07-07 18:23:14 0x8891295ec8a792a226c15f57eaafc456dca00a4c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 32.3000 MDR
0x53d596098407cc507d1886d43480792af4e92c40b023fb1d95dcda1123862ca8 Transfer 2023-07-07 18:22:56 0x6d281aa7c29386900ad9bd4f848357875fdead6c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 44.6500 MDR
0x036a96dcdf278b43987dd6147e5c39d03e21bb9e407bf197382a87ae94e22c4d Transfer 2023-07-04 18:12:20 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 477.8500 MDR
0x2730dbebec1f939c8f8ad515eab4f8d159a5d0840ce6de5685e33e34cbde84cf Transfer 2023-07-03 19:19:26 0x7075a067344b2c53106d5b114a8c09088e5a647f IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 56.0500 MDR
0x8d1dda003ce4442d31adda7ed904154ea453731b34c79bee3d4835b7c8416704 Transfer 2023-07-03 19:19:08 0x7e996b6b63949fbfdc1206973a546284ccccc62c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 37.0500 MDR
0xd21337ddc8c711704a83113474f0af8d47a531f011b29ad4eeba4d69b62214b8 Transfer 2023-07-03 19:18:50 0xa755e65fe61e6c6e8901bc40ad851945cb694cac IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 57.9500 MDR
0xa637ada4fa24183e272a1eae5016c8052a8155a342deebeb9becc0b817231214 Transfer 2023-07-03 19:18:26 0x8891295ec8a792a226c15f57eaafc456dca00a4c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 23.7500 MDR
0x74c0e39ecc06b1e51fdb17821e56422988e43563a8940dd555b793e3b8cb1812 Transfer 2023-07-03 19:18:05 0x6d281aa7c29386900ad9bd4f848357875fdead6c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 55.1000 MDR
0xfd326bc56a16ebd4ff914418995a41b792d5be8bb67526965473a3f10df0b326 Transfer 2023-07-03 19:17:47 0x0c849485e7aed964b5020219f50ba941cdde5622 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 123.5000 MDR
0xa5b5659981e27a870e06e4371197370f758cf97fff9dfad61c5bd983be42e339 Transfer 2023-07-03 19:17:29 0x7050660c4ec75b9d2c9b15dec6ca6b0cd26f7132 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 23.7500 MDR
0x6622b4ea51f7773e13cedcfac03cb6618cfdb614f778549f0bbbcc45ae975dc9 Transfer 2023-07-03 19:17:11 0x06fddaa2e93c80ec98750beff4fc5bc5f37d02eb IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 53.2000 MDR
0xcf4aebff6af7792bf2f2ea49f40eaf3aa74ecaec26e72f3cfc6433563579f03c Transfer 2023-07-03 17:55:53 0x83825024f33bdaa0a2882dfd837901ad98033923 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 47.5000 MDR
0x54925a1cbad36af70226ec456c62478fc6daacf2a8a7340a44eddce59986e507 Transfer 2023-06-30 15:01:05 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 296.4000 MDR
0xbd7e4c2d83e302dd3ae4287a3a6edcfb962b8046a103e99ccffddcbc82c251d0 Transfer 2023-06-30 12:45:08 0x7050660c4ec75b9d2c9b15dec6ca6b0cd26f7132 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 49.4000 MDR
0xa9df40fc608cf4186cb28ecd4ed7e390fbade42494e2d7ceda79f436a2b3d44d Transfer 2023-06-30 12:44:41 0x8891295ec8a792a226c15f57eaafc456dca00a4c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 56.0500 MDR
0xd0225e51d9e1e051df9000d687ff04ae22590321fc2c0e616260e1e523bf27c5 Transfer 2023-06-30 12:44:20 0xa755e65fe61e6c6e8901bc40ad851945cb694cac IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 73.1500 MDR
0xc128f41287eec0f8e1be8d5b5467eb2bcd5da9df3894aa7abec95c3c94445f95 Transfer 2023-06-30 12:43:59 0x7e996b6b63949fbfdc1206973a546284ccccc62c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 49.4000 MDR
0x63c3e76d6ec5ce2f0d15862f6afce34b5f772824ba97a4b695ba9fb09ebe09d8 Transfer 2023-06-30 12:04:47 0x83825024f33bdaa0a2882dfd837901ad98033923 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 68.4000 MDR
0xcfc8ed54c005ad77f2f4a0fd1ca510d6b8a275ec00f0caf58d15bea19be069c1 Transfer 2023-06-26 05:56:44 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x7e996b6b63949fbfdc1206973a546284ccccc62c 20.9000 MDR
0x83334db1b96d965d63424bbc8da705fbf0e2470ec05d6ed94f0540202a9c8e1d Transfer 2023-06-26 05:45:53 0x83825024f33bdaa0a2882dfd837901ad98033923 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 20.9000 MDR
0x767ced37ca8f83b4ed69a9d8b44f59905f748e119681b1c91abb1c3e6c1e22ee Transfer 2023-06-24 18:07:38 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 21.8500 MDR
0x3738f05668ff07fc30a8dd83c9341730544b696cf3bb695bdd15e7256fbbbdab Transfer 2023-06-24 11:31:50 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 21.8500 MDR
0xb6240cae2b2c05284019b0db7efaf0bc1e2c33d3aaa890c35b5e503c6b890d89 Transfer 2023-06-22 12:08:41 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0xa755e65fe61e6c6e8901bc40ad851945cb694cac 83.6000 MDR
0x9515a01f5896c39b86b0ef10f067caa833bb546e6382032d7986ece0648cbbb7 Transfer 2023-06-22 08:07:17 0x83825024f33bdaa0a2882dfd837901ad98033923 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 83.6000 MDR
0x2f089dab1292f4203bf152ca8412d34191ebb713cb62414d1694f6bf94150248 Transfer 2023-06-15 11:34:14 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 35.1500 MDR
0x985c107443ca7a6316bd655bdedb1c8a6d970302981139612626750aa278645f Transfer 2023-06-15 11:18:47 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 35.1500 MDR
0x88e965472be5263abec386c65edb49733b6f20bba9e3791c8768ce95fc5d2a6f Transfer 2023-06-15 10:56:32 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 159.6000 MDR
0xd962fb097bf603e4ee2b5b01d9c567821a26b16add7aa5955ae91f94cdce8b11 Transfer 2023-06-14 10:32:14 0x8891295ec8a792a226c15f57eaafc456dca00a4c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 36.1000 MDR
0x4295743c7a6b75e70dd6d7179abf57d60c95857d0440c339c07ec04181a908ea Transfer 2023-06-14 10:32:02 0x6d281aa7c29386900ad9bd4f848357875fdead6c IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 41.8000 MDR
0x3f6b8f0d62a3aed03c964a23caae98aff3ee5685cc15f41ed9224d336ad25974 Transfer 2023-06-14 10:31:41 0x06fddaa2e93c80ec98750beff4fc5bc5f37d02eb IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 34.2000 MDR
0x8bffbe5f5ff3a11920c653f4752aed425e73aa22882cf15cb63ab7f2a28370f6 Transfer 2023-06-12 12:58:37 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 47.5000 MDR
0x53eaf3e583ec037d0975dc9f28c8a282964409ea3bdbc3e1ff030f75daf33a97 Transfer 2023-06-09 14:28:37 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 23.7500 MDR
0x01f6d3ecdf076230901e96dcfa1f51a1b02d028968285533424cb8a471ec9dcc Transfer 2023-06-09 13:22:28 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 23.7500 MDR
0xbcabb78dc40a94bcb54f845fa25666a02a414a30bb40f0269109436beeb284f7 Transfer 2023-06-07 17:25:22 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0x694e1e7bea56395f0aaed0a83d6419d781c1cb71 23.7500 MDR
0xadf91504d1a124b520cc09b4836ae8de602d7a2c790df506e7b72f41d7a89950 Transfer 2023-06-07 14:38:31 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 23.7500 MDR
0x5fd08a6a3783bdb8f9f0f49456c5b03896562462107705c091456e7402823ec0 Transfer 2023-06-05 15:51:42 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 OUT 0xbc8997d9e1b864d5f2c1d440401d32569af122c9 95.0000 MDR
0xcecbbc8ca2f9e22c60bfde1fa7ec199cda4a93e6fea47f839c98ce75767eae87 Transfer 2023-06-04 06:24:25 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 59.8500 MDR
0x108068669c8c72ceb74495c3b0d585c0cedaae16ed4016b84a694edae60a1ee0 Transfer 2023-06-02 10:40:01 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0x83ba76e43511fb2bcdc1c9a9a1a57e7a10d0f106 35.1500 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.