Contract 0x120ff67b332f03c230c64098c01c9e593b3e78d1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7c57154ea626b1cd76b074498f4121dbc8925263ad5ebd63292ba9707bf9c9730x60806040231380842021-11-26 0:38:5311 days 11 hrs ago0xe399d7504310b84d38efd56cf8a29b38801d6449 IN  Contract Creation0 FTM0.096565969614
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x7c57154ea626b1cd76b074498f4121dbc8925263ad5ebd63292ba9707bf9c973231380842021-11-26 0:38:5311 days 11 hrs ago 0xe399d7504310b84d38efd56cf8a29b38801d6449  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OrbCirculatingSupply

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at FtmScan.com on 2021-11-26
*/

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

interface IERC20Mintable {
  function mint( uint256 amount_ ) external;

  function mint( address account_, uint256 ammount_ ) external;
}

pragma solidity 0.7.5;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function sqrrt(uint256 a) internal pure returns (uint c) {
        if (a > 3) {
            c = a;
            uint b = add( div( a, 2), 1 );
            while (b < c) {
                c = b;
                b = div( add( div( a, b ), b), 2 );
            }
        } else if (a != 0) {
            c = 1;
        }
    }
}

// SPDX-License-Identifier: AGPL-3.0-or-later\
pragma solidity 0.7.5;

contract OrbCirculatingSupply {
    using SafeMath for uint;

    bool public isInitialized;

    address public ORB;
    address public owner;
    address[] public nonCirculatingORBAddresses;

    constructor( address _owner ) {
        owner = _owner;
    }

    function initialize( address _orb ) external returns ( bool ) {
        require( msg.sender == owner, "caller is not owner" );
        require( isInitialized == false );

        ORB = _orb;

        isInitialized = true;

        return true;
    }

    function ORBCirculatingSupply() external view returns ( uint ) {
        uint _totalSupply = IERC20( ORB ).totalSupply();

        uint _circulatingSupply = _totalSupply.sub( getNonCirculatingORB() );

        return _circulatingSupply;
    }

    function getNonCirculatingORB() public view returns ( uint ) {
        uint _nonCirculatingORB;

        for( uint i=0; i < nonCirculatingORBAddresses.length; i = i.add( 1 ) ) {
            _nonCirculatingORB = _nonCirculatingORB.add( IERC20( ORB ).balanceOf( nonCirculatingORBAddresses[i] ) );
        }

        return _nonCirculatingORB;
    }

    function setNonCirculatingORBAddresses( address[] calldata _nonCirculatingAddresses ) external returns ( bool ) {
        require( msg.sender == owner, "Sender is not owner" );
        nonCirculatingORBAddresses = _nonCirculatingAddresses;

        return true;
    }

    function transferOwnership( address _owner ) external returns ( bool ) {
        require( msg.sender == owner, "Sender is not owner" );

        owner = _owner;

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ORB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORBCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNonCirculatingORB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_orb","type":"address"}],"name":"initialize","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonCirculatingORBAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_nonCirculatingAddresses","type":"address[]"}],"name":"setNonCirculatingORBAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161076c38038061076c8339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055610709806100636000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b14610177578063c4d66de81461017f578063c6120531146101a5578063c6a54992146101ad578063f2fde38b146101b557610093565b8063392e53cd14610098578063665848f7146100b457806366d4ce31146100ed57806382e8430d14610107575b600080fd5b6100a06101db565b604080519115158252519081900360200190f35b6100d1600480360360208110156100ca57600080fd5b50356101e4565b604080516001600160a01b039092168252519081900360200190f35b6100f561020e565b60408051918252519081900360200190f35b6100a06004803603602081101561011d57600080fd5b81019060208101813564010000000081111561013857600080fd5b82018360208201111561014a57600080fd5b8035906020019184602083028401116401000000008311171561016c57600080fd5b5090925090506102e3565b6100d1610351565b6100a06004803603602081101561019557600080fd5b50356001600160a01b0316610360565b6100f56103fd565b6100d1610497565b6100a0600480360360208110156101cb57600080fd5b50356001600160a01b03166104ab565b60005460ff1681565b600281815481106101f457600080fd5b6000918252602090912001546001600160a01b0316905081565b60008060005b6002548110156102dd57600054600280546102c99261010090046001600160a01b0316916370a08231918590811061024857fe5b60009182526020918290200154604080516001600160e01b031960e086901b1681526001600160a01b0390921660048301525160248083019392829003018186803b15801561029657600080fd5b505afa1580156102aa573d6000803e3d6000fd5b505050506040513d60208110156102c057600080fd5b50518390610526565b91506102d6816001610526565b9050610214565b50905090565b6001546000906001600160a01b0316331461033b576040805162461bcd60e51b815260206004820152601360248201527229b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b6103476002848461065b565b5060019392505050565b6001546001600160a01b031681565b6001546000906001600160a01b031633146103b8576040805162461bcd60e51b815260206004820152601360248201527231b0b63632b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b60005460ff16156103c857600080fd5b506000805460ff196001600160a01b03841661010002610100600160a81b031990921691909117166001908117909155919050565b600080600060019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561044e57600080fd5b505afa158015610462573d6000803e3d6000fd5b505050506040513d602081101561047857600080fd5b50519050600061049061048961020e565b8390610587565b9250505090565b60005461010090046001600160a01b031681565b6001546000906001600160a01b03163314610503576040805162461bcd60e51b815260206004820152601360248201527229b2b73232b91034b9903737ba1037bbb732b960691b604482015290519081900360640190fd5b50600180546001600160a01b0383166001600160a01b0319909116178155919050565b600082820183811015610580576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600061058083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156106535760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610618578181015183820152602001610600565b50505050905090810190601f1680156106455780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b8280548282559060005260206000209081019282156106ae579160200282015b828111156106ae5781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061067b565b506106ba9291506106be565b5090565b5b808211156106ba57600081556001016106bf56fea26469706673582212208703b1bffd442ee98313ab0609ed02a35fde2f159e56151c7abe6b78ba7fff1164736f6c63430007050033000000000000000000000000e399d7504310b84d38efd56cf8a29b38801d6449

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000e399d7504310b84d38efd56cf8a29b38801d6449

-----Decoded View---------------
Arg [0] : _owner (address): 0xe399d7504310b84d38efd56cf8a29b38801d6449

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e399d7504310b84d38efd56cf8a29b38801d6449


Deployed ByteCode Sourcemap

2673:1639:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2742:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;2828:43;;;;;;;;;;;;;;;;-1:-1:-1;2828:43:0;;:::i;:::-;;;;-1:-1:-1;;;;;2828:43:0;;;;;;;;;;;;;;3473:354;;;:::i;:::-;;;;;;;;;;;;;;;;3835:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3835:272:0;;-1:-1:-1;3835:272:0;-1:-1:-1;3835:272:0;:::i;2801:20::-;;;:::i;2951:258::-;;;;;;;;;;;;;;;;-1:-1:-1;2951:258:0;-1:-1:-1;;;;;2951:258:0;;:::i;3217:248::-;;;:::i;2776:18::-;;;:::i;4115:194::-;;;;;;;;;;;;;;;;-1:-1:-1;4115:194:0;-1:-1:-1;;;;;4115:194:0;;:::i;2742:25::-;;;;;;:::o;2828:43::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2828:43:0;;-1:-1:-1;2828:43:0;:::o;3473:354::-;3527:4;3545:23;3586:6;3581:201;3600:26;:33;3596:37;;3581:201;;;3720:3;;3737:26;:29;;3688:82;;3720:3;;;-1:-1:-1;;;;;3720:3:0;;3712:23;;3764:1;;3737:29;;;;;;;;;;;;;;;;;3712:56;;;-1:-1:-1;;;;;;3712:56:0;;;;;;;-1:-1:-1;;;;;3737:29:0;;;3712:56;;;;;;;;;;3737:29;3712:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3712:56:0;3688:18;;:22;:82::i;:::-;3667:103;-1:-1:-1;3639:10:0;:1;3646;3639:5;:10::i;:::-;3635:14;;3581:201;;;-1:-1:-1;3801:18:0;-1:-1:-1;3473:354:0;:::o;3835:272::-;3981:5;;3940:4;;-1:-1:-1;;;;;3981:5:0;3967:10;:19;3958:53;;;;;-1:-1:-1;;;3958:53:0;;;;;;;;;;;;-1:-1:-1;;;3958:53:0;;;;;;;;;;;;;;;4022;:26;4051:24;;4022:53;:::i;:::-;-1:-1:-1;4095:4:0;;3835:272;-1:-1:-1;;;3835:272:0:o;2801:20::-;;;-1:-1:-1;;;;;2801:20:0;;:::o;2951:258::-;3047:5;;3006:4;;-1:-1:-1;;;;;3047:5:0;3033:10;:19;3024:53;;;;;-1:-1:-1;;;3024:53:0;;;;;;;;;;;;-1:-1:-1;;;3024:53:0;;;;;;;;;;;;;;;3097:13;;;;:22;3088:33;;;;;;-1:-1:-1;3134:3:0;:10;;-1:-1:-1;;;;;;;3134:10:0;;;;-1:-1:-1;;;;;;3134:10:0;;;;;;;3157:20;3134:3;3157:20;;;;;;2951:258;;;:::o;3217:248::-;3273:4;3291:17;3319:3;;;;;;;;;-1:-1:-1;;;;;3319:3:0;-1:-1:-1;;;;;3311:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3311:27:0;;-1:-1:-1;3351:23:0;3377:42;3395:22;:20;:22::i;:::-;3377:12;;:16;:42::i;:::-;3351:68;-1:-1:-1;;;3217:248:0;:::o;2776:18::-;;;;;;-1:-1:-1;;;;;2776:18:0;;:::o;4115:194::-;4220:5;;4179:4;;-1:-1:-1;;;;;4220:5:0;4206:10;:19;4197:53;;;;;-1:-1:-1;;;4197:53:0;;;;;;;;;;;;-1:-1:-1;;;4197:53:0;;;;;;;;;;;;;;;-1:-1:-1;4263:5:0;:14;;-1:-1:-1;;;;;4263:14:0;;-1:-1:-1;;;;;;4263:14:0;;;;;;4115:194;;;:::o;1040:181::-;1098:7;1130:5;;;1154:6;;;;1146:46;;;;;-1:-1:-1;;;1146:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:1;1040:181;-1:-1:-1;;;1040:181:0:o;1229:136::-;1287:7;1314:43;1318:1;1321;1314:43;;;;;;;;;;;;;;;;;1459:7;1495:12;1487:6;;;;1479:29;;;;-1:-1:-1;;;1479:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1531:5:0;;;1373:192::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;

Swarm Source

ipfs://8703b1bffd442ee98313ab0609ed02a35fde2f159e56151c7abe6b78ba7fff11
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.