ETH Price: $3,322.81 (-4.90%)

Token

SharesChainToken (SCTK)
 

Overview

Max Total Supply

19,895,317,581.6056 SCTK

Holders

2,816

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,000 SCTK

Value
$0.00
0xb022d6f7954e360bc841b789f54f84da0551d61a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SharesChainToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-06-21
*/

pragma solidity ^0.4.18;

    /**
    * Math operations with safety checks
    */
    library SafeMath {
    function mul(uint a, uint b) internal pure returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function div(uint a, uint b) internal pure returns (uint) {
        assert(b > 0);
        uint c = a / b;
        assert(a == b * c + a % b);
        return c;
    }

    function sub(uint a, uint b) internal pure returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        assert(c >= a);
        return c;
    }

    function max64(uint64 a, uint64 b) internal pure returns (uint64) {
        return a >= b ? a : b;
    }

    function min64(uint64 a, uint64 b) internal pure returns (uint64) {
        return a < b ? a : b;
    }

    function max256(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min256(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
    }


    contract Owned {

        /// @dev `owner` is the only address that can call a function with this
        /// modifier
        modifier onlyOwner() {
            require(msg.sender == owner);
            _;
        }

        address public owner;
        /// @notice The Constructor assigns the message sender to be `owner`
        function Owned() public {
            owner = msg.sender;
        }

        address public newOwner;

        /// @notice `owner` can step down and assign some other address to this role
        /// @param _newOwner The address of the new owner. 0x0 can be used to create
        ///  an unowned neutral vault, however that cannot be undone
        function changeOwner(address _newOwner) onlyOwner public {
            newOwner = _newOwner;
        }


        function acceptOwnership() public {
            if (msg.sender == newOwner) {
                owner = newOwner;
            }
        }
    }


    contract ERC20Protocol {
        /* This is a slight change to the ERC20 base standard.
        function totalSupply() constant returns (uint supply);
        is replaced with:
        uint public totalSupply;
        This automatically creates a getter function for the totalSupply.
        This is moved to the base contract since public getter functions are not
        currently recognised as an implementation of the matching abstract
        function by the compiler.
        */
        /// total amount of tokens
        uint public totalSupply;

        /// @param _owner The address from which the balance will be retrieved
        /// @return The balance
        function balanceOf(address _owner) constant public returns (uint balance);

        /// @notice send `_value` token to `_to` from `msg.sender`
        /// @param _to The address of the recipient
        /// @param _value The amount of token to be transferred
        /// @return Whether the transfer was successful or not
        function transfer(address _to, uint _value) public returns (bool success);

        /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
        /// @param _from The address of the sender
        /// @param _to The address of the recipient
        /// @param _value The amount of token to be transferred
        /// @return Whether the transfer was successful or not
        function transferFrom(address _from, address _to, uint _value) public returns (bool success);

        /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
        /// @param _spender The address of the account able to transfer the tokens
        /// @param _value The amount of tokens to be approved for transfer
        /// @return Whether the approval was successful or not
        function approve(address _spender, uint _value) public returns (bool success);

        /// @param _owner The address of the account owning tokens
        /// @param _spender The address of the account able to transfer the tokens
        /// @return Amount of remaining tokens allowed to spent
        function allowance(address _owner, address _spender) constant public returns (uint remaining);

        event Transfer(address indexed _from, address indexed _to, uint _value);
        event Approval(address indexed _owner, address indexed _spender, uint _value);
    }

    contract StandardToken is ERC20Protocol {
        using SafeMath for uint;

        /**
        * @dev Fix for the ERC20 short address attack.
        */
        modifier onlyPayloadSize(uint size) {
            require(msg.data.length >= size + 4);
            _;
        }

        function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) public returns (bool success) {
            //Default assumes totalSupply can't be over max (2^256 - 1).
            //If your token leaves out totalSupply and can issue more tokens as time goes on, you need to check if it doesn't wrap.
            //Replace the if with this one instead.
            //if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            if (balances[msg.sender] >= _value) {
                balances[msg.sender] -= _value;
                balances[_to] += _value;
                Transfer(msg.sender, _to, _value);
                return true;
            } else { return false; }
        }

        function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) public returns (bool success) {
            //same as above. Replace this line with the following if you want to protect against wrapping uints.
            //if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value) {
                balances[_to] += _value;
                balances[_from] -= _value;
                allowed[_from][msg.sender] -= _value;
                Transfer(_from, _to, _value);
                return true;
            } else { return false; }
        }

        function balanceOf(address _owner) constant public returns (uint balance) {
            return balances[_owner];
        }

        function approve(address _spender, uint _value) onlyPayloadSize(2 * 32) public returns (bool success) {
            // To change the approve amount you first have to reduce the addresses`
            //  allowance to zero by calling `approve(_spender, 0)` if it is not
            //  already 0 to mitigate the race condition described here:
            //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
            assert((_value == 0) || (allowed[msg.sender][_spender] == 0));

            allowed[msg.sender][_spender] = _value;
            Approval(msg.sender, _spender, _value);
            return true;
        }

        function allowance(address _owner, address _spender) constant public returns (uint remaining) {
        return allowed[_owner][_spender];
        }

        mapping (address => uint) balances;
        mapping (address => mapping (address => uint)) allowed;
    }

    contract SharesChainToken is StandardToken {
        /// Constant token specific fields
        string public constant name = "SharesChainToken";
        string public constant symbol = "SCTK";
        uint public constant decimals = 18;

        /// SharesChain total tokens supply
        uint public constant MAX_TOTAL_TOKEN_AMOUNT = 20000000000 ether;

        /// Fields that are only changed in constructor
        /// SharesChain contribution contract
        address public minter;

        /*
        * MODIFIERS
        */

        modifier onlyMinter {
            assert(msg.sender == minter);
            _;
        }

        modifier maxTokenAmountNotReached (uint amount){
            assert(totalSupply.add(amount) <= MAX_TOTAL_TOKEN_AMOUNT);
            _;
        }

        /**
        * CONSTRUCTOR
        *
        * @dev Initialize the SharesChain Token
        * @param _minter The SharesChain Crowd Funding Contract
        */
        function SharesChainToken(address _minter) public {
            minter = _minter;
        }


        /**
        * EXTERNAL FUNCTION
        *
        * @dev Contribution contract instance mint token
        * @param recipient The destination account owned mint tokens
        * be sent to this address.
        */
        function mintToken(address recipient, uint _amount)
            public
            onlyMinter
            maxTokenAmountNotReached(_amount)
            returns (bool)
        {
            totalSupply = totalSupply.add(_amount);
            balances[recipient] = balances[recipient].add(_amount);
            return true;
        }
    }

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOTAL_TOKEN_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_minter","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052341561000f57600080fd5b60405160208061073b8339810160405280805160038054600160a060020a03909216600160a060020a031990921691909117905550506106e7806100546000396000f3006060604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100be5780630754617214610148578063095ea7b31461017757806318160ddd146101ad57806323b872dd146101d2578063313ce567146101fa57806370a082311461020d57806379c650681461022c57806395d89b411461024e578063a89c5be014610261578063a9059cbb14610274578063dd62ed3e14610296575b600080fd5b34156100c957600080fd5b6100d16102bb565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010d5780820151838201526020016100f5565b50505050905090810190601f16801561013a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015357600080fd5b61015b6102f2565b604051600160a060020a03909116815260200160405180910390f35b341561018257600080fd5b610199600160a060020a0360043516602435610301565b604051901515815260200160405180910390f35b34156101b857600080fd5b6101c06103b7565b60405190815260200160405180910390f35b34156101dd57600080fd5b610199600160a060020a03600435811690602435166044356103bd565b341561020557600080fd5b6101c06104be565b341561021857600080fd5b6101c0600160a060020a03600435166104c3565b341561023757600080fd5b610199600160a060020a03600435166024356104de565b341561025957600080fd5b6100d161058a565b341561026c57600080fd5b6101c06105c1565b341561027f57600080fd5b610199600160a060020a03600435166024356105d1565b34156102a157600080fd5b6101c0600160a060020a036004358116906024351661067a565b60408051908101604052601081527f536861726573436861696e546f6b656e00000000000000000000000000000000602082015281565b600354600160a060020a031681565b60006040604436101561031357600080fd5b8215806103435750600160a060020a03338116600090815260026020908152604080832093881683529290522054155b151561034b57fe5b600160a060020a03338116600081815260026020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a3600191505b5092915050565b60005481565b6000606060643610156103cf57600080fd5b600160a060020a03851660009081526001602052604090205483901080159061041f5750600160a060020a0380861660009081526002602090815260408083203390941683529290522054839010155b156104b157600160a060020a03808516600081815260016020908152604080832080548901905589851680845281842080548a90039055600283528184203390961684529490915290819020805487900390559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191506104b6565b600091505b509392505050565b601281565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a039081169116146104f957fe5b816b409f9cbc7c4a04c22000000061051c826000546106a590919063ffffffff16565b111561052457fe5b600054610537908463ffffffff6106a516565b6000908155600160a060020a038516815260016020526040902054610562908463ffffffff6106a516565b600160a060020a03851660009081526001602081905260409091209190915591505092915050565b60408051908101604052600481527f5343544b00000000000000000000000000000000000000000000000000000000602082015281565b6b409f9cbc7c4a04c22000000081565b6000604060443610156105e357600080fd5b600160a060020a03331660009081526001602052604090205483901061067157600160a060020a033381166000818152600160205260408082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191506103b0565b600091506103b0565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6000828201838110156106b457fe5b93925050505600a165627a7a72305820273e4c16741436dca23ae5a0de356cf68f59ecd8b989be656fc6e6fa8d78bca6002900000000000000000000000042d2b05b20565de5f2bef7503ebdad0754a5d4b4

Deployed Bytecode

0x6060604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100be5780630754617214610148578063095ea7b31461017757806318160ddd146101ad57806323b872dd146101d2578063313ce567146101fa57806370a082311461020d57806379c650681461022c57806395d89b411461024e578063a89c5be014610261578063a9059cbb14610274578063dd62ed3e14610296575b600080fd5b34156100c957600080fd5b6100d16102bb565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010d5780820151838201526020016100f5565b50505050905090810190601f16801561013a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015357600080fd5b61015b6102f2565b604051600160a060020a03909116815260200160405180910390f35b341561018257600080fd5b610199600160a060020a0360043516602435610301565b604051901515815260200160405180910390f35b34156101b857600080fd5b6101c06103b7565b60405190815260200160405180910390f35b34156101dd57600080fd5b610199600160a060020a03600435811690602435166044356103bd565b341561020557600080fd5b6101c06104be565b341561021857600080fd5b6101c0600160a060020a03600435166104c3565b341561023757600080fd5b610199600160a060020a03600435166024356104de565b341561025957600080fd5b6100d161058a565b341561026c57600080fd5b6101c06105c1565b341561027f57600080fd5b610199600160a060020a03600435166024356105d1565b34156102a157600080fd5b6101c0600160a060020a036004358116906024351661067a565b60408051908101604052601081527f536861726573436861696e546f6b656e00000000000000000000000000000000602082015281565b600354600160a060020a031681565b60006040604436101561031357600080fd5b8215806103435750600160a060020a03338116600090815260026020908152604080832093881683529290522054155b151561034b57fe5b600160a060020a03338116600081815260026020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a3600191505b5092915050565b60005481565b6000606060643610156103cf57600080fd5b600160a060020a03851660009081526001602052604090205483901080159061041f5750600160a060020a0380861660009081526002602090815260408083203390941683529290522054839010155b156104b157600160a060020a03808516600081815260016020908152604080832080548901905589851680845281842080548a90039055600283528184203390961684529490915290819020805487900390559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191506104b6565b600091505b509392505050565b601281565b600160a060020a031660009081526001602052604090205490565b60035460009033600160a060020a039081169116146104f957fe5b816b409f9cbc7c4a04c22000000061051c826000546106a590919063ffffffff16565b111561052457fe5b600054610537908463ffffffff6106a516565b6000908155600160a060020a038516815260016020526040902054610562908463ffffffff6106a516565b600160a060020a03851660009081526001602081905260409091209190915591505092915050565b60408051908101604052600481527f5343544b00000000000000000000000000000000000000000000000000000000602082015281565b6b409f9cbc7c4a04c22000000081565b6000604060443610156105e357600080fd5b600160a060020a03331660009081526001602052604090205483901061067157600160a060020a033381166000818152600160205260408082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191506103b0565b600091506103b0565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6000828201838110156106b457fe5b93925050505600a165627a7a72305820273e4c16741436dca23ae5a0de356cf68f59ecd8b989be656fc6e6fa8d78bca60029

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

00000000000000000000000042d2b05b20565de5f2bef7503ebdad0754a5d4b4

-----Decoded View---------------
Arg [0] : _minter (address): 0x42D2b05b20565de5f2beF7503ebdaD0754A5d4b4

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000042d2b05b20565de5f2bef7503ebdad0754a5d4b4


Swarm Source

bzzr://273e4c16741436dca23ae5a0de356cf68f59ecd8b989be656fc6e6fa8d78bca6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.