Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792
Balance 0 ETH
Nonce 1
Code Size 5475 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5475 bytes
0x606060405236156101385763ffffffff60e060020a60003504166306fdde03811461013d578063095ea7b3146101c85780631088f03f146101fe57806318160ddd1461022557806323b872dd1461024a578063313ce5671461028657806331616395146102af57806345977d03146102de5780635afd7627146102f6578063600440cb1461030b57806370a082311461033a5780638444b3911461036b57806395d89b41146103a25780639738968c1461042d578063a9059cbb14610454578063af9afe731461048a578063c752ff62146104c0578063cae9ca51146104e5578063cd3265a31461055e578063ce5c073d1461057f578063d991c58f146105b2578063dd62ed3e146105e1578063eefa597b14610618578063f0dda65c1461063f578063fe537a8214610675578063ffeb7d75146106a4575b600080fd5b341561014857600080fd5b6101506106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018d5780820151818401525b602001610174565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d357600080fd5b6101ea600160a060020a0360043516602435610763565b604051901515815260200160405180910390f35b341561020957600080fd5b6101ea610791565b604051901515815260200160405180910390f35b341561023057600080fd5b6102386107a1565b60405190815260200160405180910390f35b341561025557600080fd5b6101ea600160a060020a03600435811690602435166044356107a7565b604051901515815260200160405180910390f35b341561029157600080fd5b6102996107d7565b60405160ff909116815260200160405180910390f35b34156102ba57600080fd5b6102c26107e0565b604051600160a060020a03909116815260200160405180910390f35b34156102e957600080fd5b6102f46004356107f4565b005b341561030157600080fd5b6102f4610961565b005b341561031657600080fd5b6102c26109c0565b604051600160a060020a03909116815260200160405180910390f35b341561034557600080fd5b610238600160a060020a03600435166109cf565b60405190815260200160405180910390f35b341561037657600080fd5b61037e6109ee565b6040518082600481111561038e57fe5b60ff16815260200191505060405180910390f35b34156103ad57600080fd5b610150610a3b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018d5780820151818401525b602001610174565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561043857600080fd5b6101ea610ad9565b604051901515815260200160405180910390f35b341561045f57600080fd5b6101ea600160a060020a0360043516602435610adf565b604051901515815260200160405180910390f35b341561049557600080fd5b6101ea600160a060020a0360043516602435610b0d565b604051901515815260200160405180910390f35b34156104cb57600080fd5b610238610c6a565b60405190815260200160405180910390f35b34156104f057600080fd5b6101ea60048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c7095505050505050565b604051901515815260200160405180910390f35b341561056957600080fd5b6102f4600160a060020a0360043516610e2a565b005b341561058a57600080fd5b6101ea600160a060020a0360043516610fe3565b604051901515815260200160405180910390f35b34156105bd57600080fd5b6102c2611087565b604051600160a060020a03909116815260200160405180910390f35b34156105ec57600080fd5b610238600160a060020a0360043581169060243516611096565b60405190815260200160405180910390f35b341561062357600080fd5b6101ea6110c3565b604051901515815260200160405180910390f35b341561064a57600080fd5b6101ea600160a060020a03600435166024356110c8565b604051901515815260200160405180910390f35b341561068057600080fd5b6102c26111ff565b604051600160a060020a03909116815260200160405180910390f35b34156106af57600080fd5b6102f4600160a060020a036004351661120e565b005b60078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b505050505081565b60095460009060a860020a900460ff16151561077e57600080fd5b610788838361126a565b90505b92915050565b60095460a860020a900460ff1681565b60005481565b60095460009060a860020a900460ff1615156107c257600080fd5b6107cd848484611313565b90505b9392505050565b60095460ff1681565b6009546101009004600160a060020a031681565b60006107fe6109ee565b905060035b81600481111561080f57fe5b1480610827575060045b81600481111561082557fe5b145b151561083257600080fd5b6000821161083f57600080fd5b600160a060020a033316600090815260016020526040902054610868908363ffffffff61141616565b600160a060020a03331660009081526001602052604081209190915554610895908363ffffffff61141616565b6000556005546108ab908363ffffffff61142d16565b600555600454600160a060020a031663753e88e5338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561090457600080fd5b6102c65a03f1151561091557600080fd5b5050600454600160a060020a03908116915033167f947637ad74c8018986ee33595c626316230f52029a0129e84fc7212b7b2c75028460405190815260200160405180910390a35b5050565b60095433600160a060020a03908116610100909204161461098157600080fd5b60095460a860020a900460ff161561099857600080fd5b6009805475ff000000000000000000000000000000000000000000191660a860020a1790555b565b600354600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b919050565b60006109f8610ad9565b1515610a0657506001610a35565b600454600160a060020a03161515610a2057506002610a35565b6005541515610a3157506003610a35565b5060045b5b5b5b90565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b505050505081565b60015b90565b60095460009060a860020a900460ff161515610afa57600080fd5b6107888383611455565b90505b92915050565b60065460009033600160a060020a03908116911614610b2b57600080fd5b60008211610b3857600080fd5b600160a060020a03831660009081526001602052604090205482901015610b5e57600080fd5b600160a060020a038316600090815260016020526040902054610b87908363ffffffff61141616565b600160a060020a03841660009081526001602052604081209190915554610bb4908363ffffffff61141616565b6000818155600160a060020a03851681526001602052604090819020547f2e0eddecfc49c6167981c028aca887d76127461e2b5a26b11d4aa0511e40d60192869286929190518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a16000600160a060020a0384166000805160206115188339815191528460405190815260200160405180910390a35060015b92915050565b60055481565b60095460009060a860020a900460ff161515610c8b57600080fd5b600160a060020a03338116600081815260026020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a03166040517f72656365697665417070726f76616c28616464726573732c75696e743235362c81527f616464726573732c6279746573290000000000000000000000000000000000006020820152602e01604051809103902060e060020a9004338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a03168152602001828051906020019080838360005b83811015610dca5780820151818401525b602001610db1565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f1925050501515610e1f57600080fd5b5060015b9392505050565b610e32610ad9565b1515610e3d57600080fd5b600160a060020a0381161515610e5257600080fd5b60035433600160a060020a03908116911614610e6d57600080fd5b60045b610e786109ee565b6004811115610e8357fe5b1415610e8e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905516633b6b367e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ef957600080fd5b6102c65a03f11515610f0a57600080fd5b505050604051805190501515610f1f57600080fd5b600080546004549091600160a060020a0390911690634b2ba0dd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f6f57600080fd5b6102c65a03f11515610f8057600080fd5b50505060405180519050141515610f9657600080fd5b6004547f85efc013e6a48528d2ea6e2365572f6db3ff28b9b911968161eaf0fd46d494e890600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b600654600090819033600160a060020a0390811691161461100357600080fd5b5060068054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff1983161792839055908116917f85634ebba9e270a25e5845ccc5f7819479f4edb51c85d57452434114c70dedca91839116604051600160a060020a039283168152911660208201526040908101905180910390a1600191505b50919050565b600654600160a060020a031681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600181565b60065460009033600160a060020a039081169116146110e657600080fd5b600082116110f357600080fd5b600160a060020a03831660009081526001602052604090205461111c908363ffffffff61142d16565b600160a060020a03841660009081526001602052604081209190915554611149908363ffffffff61142d16565b6000818155600160a060020a03851681526001602052604090819020547f5f502ab3f45e75f9f14918f5f5e2680d15cf6823e37114077e4488f5c3a6070992869286929190518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a1600160a060020a03831660006000805160206115188339815191528460405190815260200160405180910390a35060015b92915050565b600454600160a060020a031681565b600160a060020a038116151561122357600080fd5b60035433600160a060020a0390811691161461123e57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b6000811580159061129f5750600160a060020a0333811660009081526002602090815260408083209387168352929052205415155b156112a957600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03808416600090815260026020908152604080832033851684528252808320549386168352600190915281205490919061135a908463ffffffff61142d16565b600160a060020a03808616600090815260016020526040808220939093559087168152205461138f908463ffffffff61141616565b600160a060020a0386166000908152600160205260409020556113b8818463ffffffff61141616565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616916000805160206115188339815191529086905190815260200160405180910390a3600191505b509392505050565b60008282111561142257fe5b508082035b92915050565b60008282018381108015906114425750828110155b151561144a57fe5b8091505b5092915050565b600060403660441461146657600080fd5b600160a060020a03331660009081526001602052604090205461148f908463ffffffff61141616565b600160a060020a0333811660009081526001602052604080822093909355908616815220546114c4908463ffffffff61142d16565b600160a060020a0380861660008181526001602052604090819020939093559133909116906000805160206115188339815191529086905190815260200160405180910390a3600191505b5b50929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058209274d12d9b0929dc0a25eeacfea489154f63da31679a78aa71d557aa42fee3880029

Verified Source Code Partial Match

Compiler: v0.4.15+commit.bbb8e64f Optimization: Yes (200 runs)
SigToken.sol 406 lines
pragma solidity ^0.4.15;

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

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

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

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

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

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

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

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


/*
  * ERC20 interface
  * see https://github.com/ethereum/EIPs/issues/20
  */
contract ERC20 {
    uint public totalSupply;
    function balanceOf(address who) constant returns (uint);
    function allowance(address owner, address spender) constant returns (uint);

    function transfer(address to, uint value) returns (bool ok);
    function transferFrom(address from, address to, uint value) returns (bool ok);
    function approve(address spender, uint value) returns (bool ok);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}



/**
  * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
  *
  * Based on code by FirstBlood:
  * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
  */
contract StandardToken is ERC20
{
    using SafeMath for uint;

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

    // Interface marker
    bool public constant isToken = true;

    /**
      * Fix for the ERC20 short address attack
      *
      * http://vessenes.com/the-erc20-short-address-attack-explained/
      */
    modifier onlyPayloadSize(uint size) {
        require(msg.data.length == size + 4);
        _;
    }

    function transfer(address _to, uint _value)
        onlyPayloadSize(2 * 32)
        returns (bool success)
    {
        balances[msg.sender] = balances[msg.sender].safeSub(_value);
        balances[_to] = balances[_to].safeAdd(_value);

        Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address from, address to, uint value)
        returns (bool success)
    {
        uint _allowance = allowed[from][msg.sender];

        // Check is not needed because _allowance.safeSub(value) will throw if this condition is not met
        // if (value > _allowance) throw;

        balances[to] = balances[to].safeAdd(value);
        balances[from] = balances[from].safeSub(value);
        allowed[from][msg.sender] = _allowance.safeSub(value);

        Transfer(from, to, value);
        return true;
    }

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

    function approve(address spender, uint value)
        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
        if ((value != 0) && (allowed[msg.sender][spender] != 0)) throw;

        allowed[msg.sender][spender] = value;

        Approval(msg.sender, spender, value);
        return true;
    }

    function allowance(address account, address spender)
        constant
        returns (uint remaining)
    {
        return allowed[account][spender];
    }
}



/**
  * Upgrade target interface inspired by Lunyr.
  *
  * Upgrade agent transfers tokens to a new contract.
  * Upgrade agent itself can be the token contract, or just a middle man contract doing the heavy lifting.
  */
contract UpgradeTarget
{
    uint public originalSupply;

    /** Interface marker */
    function isUpgradeTarget() public constant returns (bool) {
        return true;
    }

    function upgradeFrom(address _from, uint256 _value) public;
}


/**
  * A token upgrade mechanism where users can opt-in amount of tokens to the next smart contract revision.
  *
  * First envisioned by Golem and Lunyr projects.
  */
contract UpgradeableToken is StandardToken
{
    /** Contract / person who can set the upgrade path. This can be the same as team multisig wallet, as what it is with its default value. */
    address public upgradeMaster;

    /** The next contract where the tokens will be migrated. */
    UpgradeTarget public upgradeTarget;

    /** How many tokens we have upgraded by now. */
    uint256 public totalUpgraded;

    /**
      * Upgrade states.
      *
      * - NotAllowed: The child contract has not reached a condition where the upgrade can bgun
      * - WaitingForAgent: Token allows upgrade, but we don't have a new agent yet
      * - ReadyToUpgrade: The agent is set, but not a single token has been upgraded yet
      * - Upgrading: Upgrade agent is set and the balance holders can upgrade their tokens
      *
      */
    enum UpgradeState {Unknown, NotAllowed, WaitingForAgent, ReadyToUpgrade, Upgrading}

    /**
      * Somebody has upgraded some of his tokens.
      */
    event LogUpgrade(address indexed _from, address indexed _to, uint256 _value);

    /**
      * New upgrade agent available.
      */
    event LogSetUpgradeTarget(address agent);

    /**
      * Do not allow construction without upgrade master set.
      */
    function UpgradeableToken(address _upgradeMaster) {
        upgradeMaster = _upgradeMaster;
    }

    /**
      * Allow the token holder to upgrade some of their tokens to a new contract.
      */
    function upgrade(uint256 value) public {
        UpgradeState state = getUpgradeState();
        require(state == UpgradeState.ReadyToUpgrade || state == UpgradeState.Upgrading);

        // Validate input value.
        require(value > 0);

        balances[msg.sender] = balances[msg.sender].safeSub(value);

        // Take tokens out from circulation
        totalSupply   = totalSupply.safeSub(value);
        totalUpgraded = totalUpgraded.safeAdd(value);

        // Upgrade agent reissues the tokens
        upgradeTarget.upgradeFrom(msg.sender, value);
        LogUpgrade(msg.sender, upgradeTarget, value);
    }

    /**
      * Set an upgrade targget that handles the process of letting users opt-in to the new token contract.
      */
    function setUpgradeTarget(address target) external {
        require(canUpgrade());
        require(target != 0x0);
        require(msg.sender == upgradeMaster); // Only a master can designate the next target
        require(getUpgradeState() != UpgradeState.Upgrading); // Upgrade has already begun

        upgradeTarget = UpgradeTarget(target);

        require(upgradeTarget.isUpgradeTarget()); // Bad interface
        require(upgradeTarget.originalSupply() == totalSupply); // Make sure that token supplies match in source and target

        LogSetUpgradeTarget(upgradeTarget);
    }

    /**
      * Get the state of the token upgrade.
      */
    function getUpgradeState() public constant returns (UpgradeState) {
        if (!canUpgrade()) return UpgradeState.NotAllowed;
        else if (address(upgradeTarget) == 0x00) return UpgradeState.WaitingForAgent;
        else if (totalUpgraded == 0) return UpgradeState.ReadyToUpgrade;
        else return UpgradeState.Upgrading;
    }

    /**
      * Change the upgrade master.
      *
      * This allows us to set a new owner for the upgrade mechanism.
      */
    function setUpgradeMaster(address master) public {
        require(master != 0x0);
        require(msg.sender == upgradeMaster);

        upgradeMaster = master;
    }

    /**
      * Child contract can enable to provide the condition when the upgrade can begun.
      */
    function canUpgrade() public constant returns (bool) {
        return true;
    }
}

contract MintableToken is StandardToken
{
    address public mintMaster;

    event LogMintTokens(address recipient, uint amount, uint newBalance, uint totalSupply);
    event LogUnmintTokens(address hodler, uint amount, uint newBalance, uint totalSupply);
    event LogSetMintMaster(address oldMintMaster, address newMintMaster);

    function MintableToken(address _mintMaster) {
        mintMaster = _mintMaster;
    }

    function setMintMaster(address newMintMaster)
        returns (bool ok)
    {
        require(msg.sender == mintMaster);

        address oldMintMaster = mintMaster;
        mintMaster = newMintMaster;

        LogSetMintMaster(oldMintMaster, mintMaster);
        return true;
    }

    function mintTokens(address recipient, uint amount)
        returns (bool ok)
    {
        require(msg.sender == mintMaster);
        require(amount > 0);

        balances[recipient] = balances[recipient].safeAdd(amount);
        totalSupply = totalSupply.safeAdd(amount);

        LogMintTokens(recipient, amount, balances[recipient], totalSupply);
        Transfer(address(0), recipient, amount);
        return true;
    }

    function unmintTokens(address hodler, uint amount)
        returns (bool ok)
    {
        require(msg.sender == mintMaster);
        require(amount > 0);
        require(balances[hodler] >= amount);

        balances[hodler] = balances[hodler].safeSub(amount);
        totalSupply = totalSupply.safeSub(amount);

        LogUnmintTokens(hodler, amount, balances[hodler], totalSupply);
        Transfer(hodler, address(0), amount);
        return true;
    }
}


contract SigToken is UpgradeableToken, MintableToken
{
    string public name = "Signals";
    string public symbol = "SIG";
    uint8 public decimals = 18;

    address public crowdsaleContract;
    bool public crowdsaleCompleted;

    function SigToken()
        UpgradeableToken(msg.sender)
        MintableToken(msg.sender)
    {
        crowdsaleContract = msg.sender;
        totalSupply = 0; // we mint during the crowdsale, so totalSupply must start at 0
    }

    function transfer(address _to, uint _value)
        returns (bool success)
    {
        require(crowdsaleCompleted);
        return StandardToken.transfer(_to, _value);
    }

    function transferFrom(address from, address to, uint value)
        returns (bool success)
    {
        require(crowdsaleCompleted);
        return StandardToken.transferFrom(from, to, value);
    }

    function approve(address spender, uint value)
        returns (bool success)
    {
        require(crowdsaleCompleted);
        return StandardToken.approve(spender, value);
    }

    // This is called to unlock tokens once the crowdsale (and subsequent audit + legal process) are
    // completed.  We don't want people buying tokens during the sale and then immediately starting
    // to trade them.  See Crowdsale::finalizeCrowdsale().
    function setCrowdsaleCompleted() {
        require(msg.sender == crowdsaleContract);
        require(crowdsaleCompleted == false);

        crowdsaleCompleted = true;
    }

    /**
     * ERC20 approveAndCall extension
     *
     * Approves and then calls the receiving contract
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        public
        returns (bool success)
    {
        require(crowdsaleCompleted);

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

        //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //it is assumed when one does this that the call *should* succeed, otherwise one would use vanilla approve instead.
        require(_spender.call(bytes4(bytes32(keccak256("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData));
        return true;
    }
}

Write Contract 26 functions

These functions modify contract state and require a wallet transaction to execute.

allowance 0xdd62ed3e
address account
address spender
returns: uint256
approve 0x095ea7b3
address spender
uint256 value
returns: bool
approveAndCall 0xcae9ca51
address _spender
uint256 _value
bytes _extraData
returns: bool
balanceOf 0x70a08231
address account
returns: uint256
canUpgrade 0x9738968c
No parameters
returns: bool
crowdsaleCompleted 0x1088f03f
No parameters
returns: bool
crowdsaleContract 0x31616395
No parameters
returns: address
decimals 0x313ce567
No parameters
returns: uint8
getUpgradeState 0x8444b391
No parameters
returns: uint8
isToken 0xeefa597b
No parameters
returns: bool
mintMaster 0xd991c58f
No parameters
returns: address
mintTokens 0xf0dda65c
address recipient
uint256 amount
returns: bool
name 0x06fdde03
No parameters
returns: string
setCrowdsaleCompleted 0x5afd7627
No parameters
setMintMaster 0xce5c073d
address newMintMaster
returns: bool
setUpgradeMaster 0xffeb7d75
address master
setUpgradeTarget 0xcd3265a3
address target
symbol 0x95d89b41
No parameters
returns: string
totalSupply 0x18160ddd
No parameters
returns: uint256
totalUpgraded 0xc752ff62
No parameters
returns: uint256
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
unmintTokens 0xaf9afe73
address hodler
uint256 amount
returns: bool
upgrade 0x45977d03
uint256 value
upgradeMaster 0x600440cb
No parameters
returns: address
upgradeTarget 0xfe537a82
No parameters
returns: address

Recent Transactions

No transactions found for this address