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

Value
$0.00

Txn Hash
Method
Age
From
To
Quantity
0xf328ea828452c294755b70db6b6833560afccff87376da63929ab876ef161032 Transfer 2024-02-29 18:14:28 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0xfadb471d007be01cc497754209e118d448e21f69 45,000.0000 MDR
0xbac6b6253c3805d7a61a9709da430edf02a2ded05c04462fb814035ae5d0fcd2 Transfer 2024-02-29 18:01:19 0xee5635a1154852012d263cea5f4e5288376bccb0 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 5,700.0000 MDR
0xb5c4baa34380d03ac6c348961596bf822c085bfdeea7b7cc0746950bebf8bcbf Transfer 2024-02-29 17:11:55 0x54dc9e378bfe4106a92240f937351ba5309a5ceb IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 1,000.0000 MDR
0xca159a59ef35272bbf555198dca328764535f015e4a96fac82873264b5e49072 Transfer 2024-02-29 12:34:06 0x8175ecd00f9b8fff1764cad49c05197f5dc075ad IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 18,586.3500 MDR
0xef4454331d49979cedc7e1830edc5a7879f993a54f8cf698490e5b7108141c50 Transfer 2024-02-29 12:31:57 0xe7ce2e6cb04e44348cb12d07940176f7e6f426d9 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 18,418.6000 MDR
0x1189355fb5c3d50ae0be1540dd022bb49eb4924e4e17dcefaa002084da737503 Transfer 2024-02-03 08:43:38 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x733a3208967e8711d57fbc8d1e3edaab2876a47b 19.0000 MDR
0x509d35284c41ee26b16c33a89df514f5f7bdb5b427502163bc90b7ffde1122be Transfer 2024-02-02 11:48:29 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0xfadb471d007be01cc497754209e118d448e21f69 5,000.0000 MDR
0x81e8996c150ab9ca6bed3c390bee64c4e1b759d23d2293fd488893c738f81b38 Transfer 2024-01-27 13:23:59 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 6,437.2000 MDR
0xe07268ca6f3c11062d79aeb3302237aac6615202aef4c9a7f973605e81eedb4a Transfer 2023-10-30 14:30:18 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9d68fc0044cfb8aeca32514d054cea95d5fc9ec2 1,000.0000 MDR
0x9a6e127ecf21dee380ab5ccd5d5810b1f07ca702f1d12b5567d7a6888f4fc020 Transfer 2023-10-11 10:32:58 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 2,160.0000 MDR
0x64ef47f1ee96c555d0de0341186eac77d96028b43ce4036eef7ce12b7a73f90a Transfer 2023-10-11 10:31:52 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 20.0000 MDR
0x1610271cd10d2f9579c3af1d3030e4cb33fc816c3154a40e71311465148dfc8d Transfer 2023-10-11 10:27:19 0x8175ecd00f9b8fff1764cad49c05197f5dc075ad IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 3,200.0000 MDR
0x42d1cc44c70ab491b3f5e6fa6767cf721705c8c210301e8d2755aa66373457ef Transfer 2023-10-02 11:46:31 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 58.9000 MDR
0xf8fa0ddc8e5ea7b88f522739983a6860446058784cbbb8c2964f103e5efd427e Transfer 2023-09-28 19:07:19 0xde929497ac97721645f453b1064bea8df30bb41d IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 25.0000 MDR
0x468264b95596d8a01c0281d30b9fd05ddd8753109db525b49247e8272a6ade88 Transfer 2023-09-21 16:23:50 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9668e58c1275cf51578f2f7cf68b9b62b21335fb 83.0000 MDR
0x2ba595e1d771c8e24d550bc673411e132ea611c3f112cda550575f728425305e Transfer 2023-09-20 12:22:02 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 59.8500 MDR
0xe33243023e4d1b198ca238426fbfc0ef5a5b8ec450ae069c185fec360714fbf9 Transfer 2023-09-14 09:06:30 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 20.0000 MDR
0xd07b7f9b94a7bb8667e5fba453bf5ed6c67226ee87d17bbccdfb4c498f98f98f Transfer 2023-09-14 08:44:33 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 120.0000 MDR
0x5a7e40482074c3a2865ae2210a97142e0ccec9a224c592deda4c5d4439f5acaf Transfer 2023-09-14 08:41:42 0x029339e4cd697c63accf1c71aa45e30bc3bf525b IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 139.6025 MDR
0xfe0245620eddafe67cfa910feade7c8dc67d68dfdfa5bf1a56547b43c9915cc7 Transfer 2023-09-11 07:57:08 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 23.7500 MDR
0xcd25a9020f8b83d0da5d0c935e47a4f2a6400192d544f11fd8bf7b1b0d673ea8 Transfer 2023-09-08 18:20:59 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9668e58c1275cf51578f2f7cf68b9b62b21335fb 1,000.0000 MDR
0x711b8efb9eff1b7dc864163224105a0ebdf55ac94cfc66c84b0f3f97e14aba02 Transfer 2023-08-21 20:00:08 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x733a3208967e8711d57fbc8d1e3edaab2876a47b 1,000.0000 MDR
0x36ee2c91ad4e4da1365fe281b0782346151d006844a93c84800755e997336615 Transfer 2023-08-21 19:20:14 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0xa2e9af85781284efc50746cdac3d3d153c82627b 1,000.0000 MDR
0x281ba80cc9902341c73e469c35c12b4fc9d1e9d1b5b63bf1cea9d430dd3be224 Transfer 2023-08-21 19:17:38 0x0becfac124aeea76ee00362ad63a774633b17a18 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 2,000.0000 MDR
0x0e142bd8dbf5f16af3ac93ec8d54ec2f904ff0f7b02394cd39ba2a0878841849 Transfer 2023-08-21 19:15:02 0x449f1e8f095585cf286f92456e0276a7fd010d91 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 1,000.0000 MDR
0x0859991af8ff416627aae6c08c68b7f9e2d4db3602bc56f47eef59f65335ae9e Transfer 2023-08-17 06:05:51 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9668e58c1275cf51578f2f7cf68b9b62b21335fb 690.3100 MDR
0x634c36d7c20176ee59935fae848fa06763ee7abf4210665d91470b66a719b5b4 Transfer 2023-08-14 09:38:48 0x93dc3d57884758f0281eda9891eb5f495ddc8ef4 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 191.0000 MDR
0x72f844d12a9952534ab776123aaa372b878e66a39538f1b7ad493d951e17aa8d Transfer 2023-08-10 10:55:48 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9668e58c1275cf51578f2f7cf68b9b62b21335fb 2,700.0000 MDR
0xb3cbf0243c4f9222efca62011aaa7be5ca8678bdd325afb0f53d56a38bc758c8 Transfer 2023-08-09 13:29:00 0x733a3208967e8711d57fbc8d1e3edaab2876a47b IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 1,975.0000 MDR
0xceb3f93fbeea310eec434d39a16e1ef990aa0f8c8cf6e216372053bb4173211e Transfer 2023-07-30 15:46:16 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 9.5000 MDR
0xef69e4eab1bfe6140acfe6880cebf3760625c2cfcb9cb579ebfdebb78c4fc37f Transfer 2023-07-27 22:50:06 0xde929497ac97721645f453b1064bea8df30bb41d IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 200.0000 MDR
0xc9cf8cd6f810a87ed1c9ecd1b0b6d782c34287b55afe69bf8aa270bc8dc369ca Transfer 2023-07-25 22:58:33 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 61.1800 MDR
0x6ef828de87be73de448d6d914e3843041b85fe798110288140a29663b04831f1 Transfer 2023-07-24 18:14:14 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 30.0000 MDR
0xb8169448a39db33e97fb854889796463d07a822384a8ab3a421ee560fe5bd2d4 Transfer 2023-07-23 17:53:26 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 117.2300 MDR
0xe7cfbca58c3905c27447e8737405bcdbd77bd3cf5600294540d8ac90bbb6cd1a Transfer 2023-07-20 16:22:17 0xd0de0c63f3da08cd396593da761f56a4d6fa59c8 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 116.9450 MDR
0x0bcfdb2fdd6f883758419e3b03005316b51ded91c17d4066ace62ade4b2d2978 Transfer 2023-07-18 17:48:20 0x023efdb6bf4cb7cc2d2373ec13dedf74b34be3da IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 100.0000 MDR
0x64d768d7f7ca10fa188caf9d34244bceae398a043243bc0be9b065252d0913e2 Transfer 2023-07-18 12:10:52 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9668e58c1275cf51578f2f7cf68b9b62b21335fb 600.0000 MDR
0xd437bd7188b2285f2225e42de77139c9d2910bf275212e5711abfc1d6616c78c Transfer 2023-07-17 17:11:09 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 119.7000 MDR
0x364069631367b9d4a9ebf02e4d3916eaa2d42202bc0a14dfd3b151cfb8f34c4b Transfer 2023-07-14 09:14:35 0x83825024f33bdaa0a2882dfd837901ad98033923 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 439.7550 MDR
0xc2ff1f2af7c7d6886fc3e0e02047ed662ac4f930e025967d5571f9c6b0624b6a Transfer 2023-07-08 08:48:35 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 400.0000 MDR
0x37cc1d9d1dacc51fad68057d0a2c3ca09a251e11ef5af6d6792831f5713a019b Transfer 2023-07-08 08:36:41 0xd7c761f2495f6bf7860c5d484bed300d71da323a IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 200.0000 MDR
0x83955a0c788e425e22673814028e5dfe89b681e3a47ee173bec4c84073f7e660 Transfer 2023-07-06 12:59:02 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x545da827b8d4bf56cc6a72338eb795364c092d57 255.0000 MDR
0xf5e9c9ae6ddb5ec73ec429988aa559547fd589a6cc348cdd8963c51e40cbb235 Transfer 2023-07-04 10:58:05 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x733a3208967e8711d57fbc8d1e3edaab2876a47b 67.0000 MDR
0x4ccb9908675647cba84288fcac75022d25fcd5389be73d57b2113a7988c1e16c Transfer 2023-07-03 22:05:53 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x733a3208967e8711d57fbc8d1e3edaab2876a47b 133.0000 MDR
0x46e71f5b34b05ee021f0454f22ff95f7d75e70df7a423dd6682cf17fa7485dca Transfer 2023-07-03 22:02:50 0xd7c761f2495f6bf7860c5d484bed300d71da323a IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 1,345.0000 MDR
0x2fe7651db1be51b4a8ade125834abaef53b590e30101f3c1616d11b85b9ed088 Transfer 2023-07-03 17:59:35 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x9668e58c1275cf51578f2f7cf68b9b62b21335fb 499.1945 MDR
0x0b1c8ff6e28bbdd2d362e08ff872ca8d651424a4a0e46d5279c179e97a78552b Transfer 2023-07-02 09:25:32 0x83825024f33bdaa0a2882dfd837901ad98033923 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 397.1000 MDR
0x11f23819860feaadf5583d0939d989137a6044fe9b1c772fac1ef0a79e5f99cf Transfer 2023-06-15 17:18:47 0xa5ff4eac67c26f8d729d4e50383982c4a4b8056b IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 100.0000 MDR
0x6b63299a118d97dfbf4f64aa318172b0b3f788e043b9a61ae6244609daaf8fb3 Transfer 2023-06-14 10:37:38 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 300.0000 MDR
0xae147a7e424a8a491d6b8fbb29927798f2c9845ab42010b0b42eb846756c4ef9 Transfer 2023-06-14 10:36:02 0x82ac1920eddab254595b5ca9ac3c2615cc191325 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 50.0000 MDR
0x02a4f521ecae85526acd3d28b6564bf9138f4c81c27d6adb12ab0191c98b6b6d Transfer 2023-06-14 10:29:35 0x54dc9e378bfe4106a92240f937351ba5309a5ceb IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 250.0000 MDR
0x52428d494b6143442c412ee6979336537c72f5695ea7c82e9147ce801d6a26c7 Transfer 2023-06-13 17:53:56 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0x63dc232f5456de43b245eb07432c4c3f7276ef38 750.0000 MDR
0xf91c4bca094287805a7f63ce5b4eb69fea9172d1f87bd76b697f2d56237570bc Transfer 2023-06-13 15:36:02 0x82ac1920eddab254595b5ca9ac3c2615cc191325 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 150.0000 MDR
0x9cd88db4715377aef3189c686f4f333145c27d8b500191392330e769dec43704 Transfer 2023-06-13 12:59:50 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 36.1000 MDR
0xcbb1051f8864fe9fcc4eea0be8dff48ba7bd2ac815229325e461f6f226d29c00 Transfer 2023-06-13 11:39:26 0x73c2f271013997e66823a740dc5356e660fb50ad IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 30.0000 MDR
0x31f8ec5c8719c734c34052d9385c013c655e7c066a019688d72ab03edddd0e7d Transfer 2023-06-13 11:35:50 0xa41f7dc2c0ed85fba738dadb7ec3ba2c5849f7bc IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 64.0000 MDR
0x07715e5dd95e6a1de8dae2620f508ae54054461f097afc42a5a95dae88033c10 Transfer 2023-06-13 11:34:53 0xc02b18c0f0852eaa8e0c2057ef6d6aa6a87ceeb3 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 217.0000 MDR
0x56021167eb8d9500fa2b1d99cc550ffed9cf7b87025f8c891810c44fe81337eb Transfer 2023-06-11 00:09:34 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 203.5945 MDR
0x09c10be82874a01adfa34276aabf0ea607594a78fc5284a21928f1c0f3a7df44 Transfer 2023-06-07 20:30:10 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e OUT 0xd7c761f2495f6bf7860c5d484bed300d71da323a 150.0000 MDR
0xe57e161442c9e75c4072e9e8c5598b9fe5647041a23f8af00df6f16d940e0b62 Transfer 2023-06-03 17:20:16 0x20133264da3139b659df04cbf889b98864c7cb66 IN 0xd65eb1e06d02ecc7825b8f93a544e817b43d0e3e 201.4000 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.