ETH Price: $3,996.28 (-0.04%)

Contract

0x4FbB350052Bca5417566f188eB2EBCE5b19BC964
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Rigo Token (GRG) (@$0.852)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212456412024-11-22 20:25:2314 days ago1732307123IN
RigoBlock: GRG Token
0 ETH0.0002826211.73892548
Approve212435482024-11-22 13:23:5915 days ago1732281839IN
RigoBlock: GRG Token
0 ETH0.0010428522.63540472
Approve211739922024-11-12 20:28:3524 days ago1731443315IN
RigoBlock: GRG Token
0 ETH0.0014922832.14754363
Approve211410452024-11-08 6:10:5929 days ago1731046259IN
RigoBlock: GRG Token
0 ETH0.00042199.14089779
Approve211360552024-11-07 13:24:4730 days ago1730985887IN
RigoBlock: GRG Token
0 ETH0.0007334415.90299563
Approve211103152024-11-03 23:10:5933 days ago1730675459IN
RigoBlock: GRG Token
0 ETH0.000173363.758124
Approve210113902024-10-21 3:53:3547 days ago1729482815IN
RigoBlock: GRG Token
0 ETH0.000377978.14247553
Approve209743462024-10-15 23:48:5952 days ago1729036139IN
RigoBlock: GRG Token
0 ETH0.0004617510.0094177
Approve209008072024-10-05 17:23:4762 days ago1728149027IN
RigoBlock: GRG Token
0 ETH0.000151533.28478403
Approve208921882024-10-04 12:34:1164 days ago1728045251IN
RigoBlock: GRG Token
0 ETH0.000372638.02751776
Approve207662292024-09-16 22:42:1181 days ago1726526531IN
RigoBlock: GRG Token
0 ETH0.000143873.09934255
Approve207141002024-09-09 15:58:2388 days ago1725897503IN
RigoBlock: GRG Token
0 ETH0.000289036.26530865
Approve207068852024-09-08 15:47:3589 days ago1725810455IN
RigoBlock: GRG Token
0 ETH0.000181023.90471825
Approve206990372024-09-07 13:31:3591 days ago1725715895IN
RigoBlock: GRG Token
0 ETH0.000076751.66378029
Approve206990142024-09-07 13:26:4791 days ago1725715607IN
RigoBlock: GRG Token
0 ETH0.000067831.47051148
Approve206716492024-09-03 17:49:2394 days ago1725385763IN
RigoBlock: GRG Token
0 ETH0.000065611.42241358
Approve206708142024-09-03 15:01:4795 days ago1725375707IN
RigoBlock: GRG Token
0 ETH0.000230524.99707123
Approve206566902024-09-01 15:43:1196 days ago1725205391IN
RigoBlock: GRG Token
0 ETH0.000049271.06842754
Approve206535402024-09-01 5:10:1197 days ago1725167411IN
RigoBlock: GRG Token
0 ETH0.0000270.58542742
Approve206488832024-08-31 13:35:1198 days ago1725111311IN
RigoBlock: GRG Token
0 ETH0.000035160.76226686
Transfer206348152024-08-29 14:24:35100 days ago1724941475IN
RigoBlock: GRG Token
0 ETH0.000272195.78990617
Approve206329172024-08-29 8:02:11100 days ago1724918531IN
RigoBlock: GRG Token
0 ETH0.000041270.89523102
Approve206285802024-08-28 17:28:59100 days ago1724866139IN
RigoBlock: GRG Token
0 ETH0.000107622.33359027
Approve206266772024-08-28 11:06:11101 days ago1724843171IN
RigoBlock: GRG Token
0 ETH0.000093162.00690091
Approve206097362024-08-26 2:18:35103 days ago1724638715IN
RigoBlock: GRG Token
0 ETH0.00004080.88015009
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RigoToken

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

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

/*

 Copyright 2017-2018 RigoBlock, Rigo Investment Sagl.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

*/

pragma solidity 0.4.25;
pragma experimental "v0.5.0";

contract SafeMath {

    function safeMul(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

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

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

    function safeAdd(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c>=a && c>=b);
        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;
    }
}

interface ERC20Face {

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

    function transfer(address _to, uint256 _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);
    function approve(address _spender, uint256 _value) external returns (bool success);

    function balanceOf(address _who) external view returns (uint256);
    function allowance(address _owner, address _spender) external view returns (uint256);
}

contract ERC20 is ERC20Face {

    function transfer(address _to, uint256 _value)
        external
        returns (bool success)
    {
        require(balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value)
        external
        returns (bool success)
    {
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]);
        balances[_to] += _value;
        balances[_from] -= _value;
        allowed[_from][msg.sender] -= _value;
        emit Transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value)
        external
        returns (bool success)
    {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function balanceOf(address _owner)
        external
        view
        returns (uint256)
    {
        return balances[_owner];
    }

    function allowance(address _owner, address _spender)
        external
        view
        returns (uint256)
    {
        return allowed[_owner][_spender];
    }

    uint256 public totalSupply;
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
}

contract UnlimitedAllowanceToken is ERC20 {

    uint256 constant MAX_UINT = 2**256 - 1;

    /// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance.
    /// @param _from Address to transfer from.
    /// @param _to Address to transfer to.
    /// @param _value Amount to transfer.
    /// @return Success of transfer.
    function transferFrom(address _from, address _to, uint256 _value)
        external
        returns (bool)
    {
        uint256 allowance = allowed[_from][msg.sender];
        require(
            balances[_from] >= _value
            && allowance >= _value
            && balances[_to] + _value >= balances[_to]
        );
        balances[_to] += _value;
        balances[_from] -= _value;
        if (allowance < MAX_UINT) {
            allowed[_from][msg.sender] -= _value;
        }
        emit Transfer(_from, _to, _value);
        return true;
    }
}

/// @title Rigo Token - Rules of the Rigo token.
/// @author Gabriele Rigo - <[email protected]>
/// @notice UnlimitedAllowanceToken is ERC20
contract RigoToken is UnlimitedAllowanceToken, SafeMath {

    string constant public name = "Rigo Token";
    string constant public symbol = "GRG";
    uint8 constant public decimals = 18;

    uint256 public totalSupply = 10**25; // 10 million tokens, 18 decimal places
    address public minter;
    address public rigoblock;

    /*
     * EVENTS
     */
    event TokenMinted(address indexed recipient, uint256 amount);

    /*
     * MODIFIERS
     */
    modifier onlyMinter {
        require(msg.sender == minter);
        _;
    }

    modifier onlyRigoblock {
        require(msg.sender == rigoblock);
        _;
    }

    constructor(address _setMinter, address _setRigoblock) public {
        minter = _setMinter;
        rigoblock = _setRigoblock;
        balances[msg.sender] = totalSupply;
    }

    /*
     * CORE FUNCTIONS
     */
    /// @dev Allows minter to create new tokens
    /// @param _recipient Address of who receives new tokens
    /// @param _amount Number of new tokens
    function mintToken(
        address _recipient,
        uint256 _amount)
        external
        onlyMinter
    {
        balances[_recipient] = safeAdd(balances[_recipient], _amount);
        totalSupply = safeAdd(totalSupply, _amount);
        emit TokenMinted(_recipient, _amount);
    }

    /// @dev Allows rigoblock dao to change minter
    /// @param _newAddress Address of the new minter
    function changeMintingAddress(address _newAddress)
        external
        onlyRigoblock
    {
        minter = _newAddress;
    }

    /// @dev Allows rigoblock dao to upgrade dao
    /// @param _newAddress Address of the new rigoblock dao
    function changeRigoblockAddress(address _newAddress)
        external
        onlyRigoblock
    {
        rigoblock = _newAddress;
    }
}

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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rigoblock","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"changeMintingAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"changeRigoblockAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"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":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_setMinter","type":"address"},{"name":"_setRigoblock","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenMinted","type":"event"},{"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"}]

60806040526a084595161401484a00000060035534801561001f57600080fd5b5060405160408061086a833981016040908152815160209283015160048054600160a060020a03938416600160a060020a0319918216179091556005805493909216921691909117905560035433600090815260019093529120556107e1806100896000396000f3006080604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d4578063075461721461015e578063095ea7b31461018f57806318160ddd146101c757806323b872dd146101ee578063313ce567146102185780633f04d0401461024357806351892f071461025857806370a082311461027b57806379c650681461029c578063882f7e83146102c057806395d89b41146102e1578063a9059cbb146102f6578063dd62ed3e1461031a575b600080fd5b3480156100e057600080fd5b506100e9610341565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012357818101518382015260200161010b565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016a57600080fd5b50610173610378565b60408051600160a060020a039092168252519081900360200190f35b34801561019b57600080fd5b506101b3600160a060020a0360043516602435610387565b604080519115158252519081900360200190f35b3480156101d357600080fd5b506101dc6103ed565b60408051918252519081900360200190f35b3480156101fa57600080fd5b506101b3600160a060020a03600435811690602435166044356103f3565b34801561022457600080fd5b5061022d61051d565b6040805160ff9092168252519081900360200190f35b34801561024f57600080fd5b50610173610522565b34801561026457600080fd5b50610279600160a060020a0360043516610531565b005b34801561028757600080fd5b506101dc600160a060020a0360043516610577565b3480156102a857600080fd5b50610279600160a060020a0360043516602435610592565b3480156102cc57600080fd5b50610279600160a060020a0360043516610638565b3480156102ed57600080fd5b506100e961067e565b34801561030257600080fd5b506101b3600160a060020a03600435166024356106b5565b34801561032657600080fd5b506101dc600160a060020a0360043581169060243516610766565b60408051808201909152600a81527f5269676f20546f6b656e00000000000000000000000000000000000000000000602082015281565b600454600160a060020a031681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035481565b600160a060020a0383166000818152600260209081526040808320338452825280832054938352600190915281205490919083118015906104345750828110155b801561045a5750600160a060020a03841660009081526001602052604090205483810110155b151561046557600080fd5b600160a060020a03808516600090815260016020526040808220805487019055918716815220805484900390556000198110156104c757600160a060020a03851660009081526002602090815260408083203384529091529020805484900390555b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b601281565b600554600160a060020a031681565b600554600160a060020a0316331461054857600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526001602052604090205490565b600454600160a060020a031633146105a957600080fd5b600160a060020a0382166000908152600160205260409020546105cc9082610791565b600160a060020a0383166000908152600160205260409020556003546105f29082610791565b600355604080518281529051600160a060020a038416917fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8919081900360200190a25050565b600554600160a060020a0316331461064f57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60408051808201909152600381527f4752470000000000000000000000000000000000000000000000000000000000602082015281565b3360009081526001602052604081205482118015906106ed5750600160a060020a038316600090815260016020526040902054828101115b15156106f857600080fd5b33600081815260016020908152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60008282018381108015906107a65750828110155b15156107ae57fe5b93925050505600a165627a7a723058205f519432978cd9ebc75cd0765b2ccab98e9dbe2f29d15bc44680faed95a6bc9d0029000000000000000000000000000f05552f24850e75793d38c2bd0cbd249a9ff4000000000000000000000000000f05552f24850e75793d38c2bd0cbd249a9ff4

Deployed Bytecode

0x6080604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d4578063075461721461015e578063095ea7b31461018f57806318160ddd146101c757806323b872dd146101ee578063313ce567146102185780633f04d0401461024357806351892f071461025857806370a082311461027b57806379c650681461029c578063882f7e83146102c057806395d89b41146102e1578063a9059cbb146102f6578063dd62ed3e1461031a575b600080fd5b3480156100e057600080fd5b506100e9610341565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012357818101518382015260200161010b565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016a57600080fd5b50610173610378565b60408051600160a060020a039092168252519081900360200190f35b34801561019b57600080fd5b506101b3600160a060020a0360043516602435610387565b604080519115158252519081900360200190f35b3480156101d357600080fd5b506101dc6103ed565b60408051918252519081900360200190f35b3480156101fa57600080fd5b506101b3600160a060020a03600435811690602435166044356103f3565b34801561022457600080fd5b5061022d61051d565b6040805160ff9092168252519081900360200190f35b34801561024f57600080fd5b50610173610522565b34801561026457600080fd5b50610279600160a060020a0360043516610531565b005b34801561028757600080fd5b506101dc600160a060020a0360043516610577565b3480156102a857600080fd5b50610279600160a060020a0360043516602435610592565b3480156102cc57600080fd5b50610279600160a060020a0360043516610638565b3480156102ed57600080fd5b506100e961067e565b34801561030257600080fd5b506101b3600160a060020a03600435166024356106b5565b34801561032657600080fd5b506101dc600160a060020a0360043581169060243516610766565b60408051808201909152600a81527f5269676f20546f6b656e00000000000000000000000000000000000000000000602082015281565b600454600160a060020a031681565b336000818152600260209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035481565b600160a060020a0383166000818152600260209081526040808320338452825280832054938352600190915281205490919083118015906104345750828110155b801561045a5750600160a060020a03841660009081526001602052604090205483810110155b151561046557600080fd5b600160a060020a03808516600090815260016020526040808220805487019055918716815220805484900390556000198110156104c757600160a060020a03851660009081526002602090815260408083203384529091529020805484900390555b83600160a060020a031685600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b601281565b600554600160a060020a031681565b600554600160a060020a0316331461054857600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a031660009081526001602052604090205490565b600454600160a060020a031633146105a957600080fd5b600160a060020a0382166000908152600160205260409020546105cc9082610791565b600160a060020a0383166000908152600160205260409020556003546105f29082610791565b600355604080518281529051600160a060020a038416917fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8919081900360200190a25050565b600554600160a060020a0316331461064f57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60408051808201909152600381527f4752470000000000000000000000000000000000000000000000000000000000602082015281565b3360009081526001602052604081205482118015906106ed5750600160a060020a038316600090815260016020526040902054828101115b15156106f857600080fd5b33600081815260016020908152604080832080548790039055600160a060020a03871680845292819020805487019055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60008282018381108015906107a65750828110155b15156107ae57fe5b93925050505600a165627a7a723058205f519432978cd9ebc75cd0765b2ccab98e9dbe2f29d15bc44680faed95a6bc9d0029

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

000000000000000000000000000f05552f24850e75793d38c2bd0cbd249a9ff4000000000000000000000000000f05552f24850e75793d38c2bd0cbd249a9ff4

-----Decoded View---------------
Arg [0] : _setMinter (address): 0x000F05552f24850E75793d38C2bD0CBd249A9ff4
Arg [1] : _setRigoblock (address): 0x000F05552f24850E75793d38C2bD0CBd249A9ff4

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000f05552f24850e75793d38c2bd0cbd249a9ff4
Arg [1] : 000000000000000000000000000f05552f24850e75793d38c2bd0cbd249a9ff4


Swarm Source

bzzr://5f519432978cd9ebc75cd0765b2ccab98e9dbe2f29d15bc44680faed95a6bc9d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

RigoBlock is a protocol for decentralized asset management, a standard for creating digital asset management companies.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.