ETH Price: $3,759.44 (+2.47%)
Gas: 7 Gwei

Contract

0x2443d44325bb07861Cd8C9C8Ba1569b6c39D9d95
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x60806040106993902020-08-20 20:58:201370 days ago1597957100IN
 Create: ANTController
0 ETH0.04813401112.8

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To Value
107498332020-08-28 14:52:291362 days ago1598626349
Aragon: ANT Controller
0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ANTController

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2020-08-20
*/

// Sources flattened with buidler v1.4.3 https://buidler.dev

// File contracts/interfaces/IMiniMeLike.sol

pragma solidity ^0.5.0;


/**
 * @dev A sparse MiniMe-like interface containing just `generateTokens()`.
 */
interface IMiniMeLike {
    /**
     * @notice Generates `_amount` tokens that are assigned to `_owner`
     * @param _owner The address that will be assigned the new tokens
     * @param _amount The quantity of tokens generated
     * @return True if the tokens are generated correctly
    */
    function generateTokens(address _owner, uint _amount) external returns (bool);
}


// File contracts/interfaces/ITokenController.sol

pragma solidity ^0.5.0;


/**
 * @dev The MiniMe token controller contract must implement these functions
 *      ANT was compiled with solc 0.4.8, so there is no point in marking any of the functions as `view`.
 */
interface ITokenController {
    /**
    * @notice Called when `_owner` sends ether to the MiniMe Token contract
    * @param _owner The address that sent the ether to create tokens
    * @return True if the ether is accepted, false if it throws
    */
    function proxyPayment(address _owner) external payable returns (bool);

    /**
    * @notice Notifies the controller about a token transfer allowing the controller to react if desired
    * @param _from The origin of the transfer
    * @param _to The destination of the transfer
    * @param _amount The amount of the transfer
    * @return False if the controller does not authorize the transfer
    */
    function onTransfer(address _from, address _to, uint _amount) external returns (bool);

    /**
    * @notice Notifies the controller about an approval allowing the controller to react if desired
    * @param _owner The address that calls `approve()`
    * @param _spender The spender in the `approve()` call
    * @param _amount The amount in the `approve()` call
    * @return False if the controller does not authorize the approval
    */
    function onApprove(address _owner, address _spender, uint _amount) external returns (bool);
}


// File contracts/ANTController.sol

pragma solidity 0.5.17;




contract ANTController is ITokenController {
    string private constant ERROR_NOT_MINTER = "ANTC_SENDER_NOT_MINTER";
    string private constant ERROR_NOT_ANT = "ANTC_SENDER_NOT_ANT";

    IMiniMeLike public ant;
    address public minter;

    event ChangedMinter(address indexed minter);

    /**
    * @dev Ensure the msg.sender is the minter
    */
    modifier onlyMinter {
        require(msg.sender == minter, ERROR_NOT_MINTER);
        _;
    }

    constructor(IMiniMeLike _ant, address _minter) public {
        ant = _ant;
        _changeMinter(_minter);
    }

    /**
    * @notice Generate ANT for a specified address
    * @dev Note that failure to generate the requested tokens will result in a revert
    * @param _owner Address to receive ANT
    * @param _amount Amount to generate
    * @return True if the tokens are generated correctly
    */
    function generateTokens(address _owner, uint256 _amount) external onlyMinter returns (bool) {
        return ant.generateTokens(_owner, _amount);
    }

    /**
    * @notice Change the permitted minter to another address
    * @param _newMinter Address that will be permitted to mint ANT
    */
    function changeMinter(address _newMinter) external onlyMinter {
        _changeMinter(_newMinter);
    }

    // Default ITokenController settings for allowing token transfers.
    // ANT was compiled with solc 0.4.8, so there is no point in marking any of these functions as `view`:
    //   - The original interface does not specify these as `constant`
    //   - ANT does not use a `staticcall` when calling into these functions

    /**
    * @dev Callback function called from MiniMe-like instances when ETH is sent into the token contract
    *      It allows specifying a custom logic to control if the ETH should be accepted or not
    * @return Always false, this controller does not permit the ANT contract to receive ETH transfers
    */
    function proxyPayment(address /* _owner */) external payable returns (bool) {
        // We only apply this extra check here to ensure `proxyPayment()` cannot be sent ETH from arbitrary addresses
        require(msg.sender == address(ant), ERROR_NOT_ANT);
        return false;
    }

    /**
    * @dev Callback function called from MiniMe-like instances when an ERC20 transfer is requested
    *      It allows specifying a custom logic to control if a transfer should be allowed or not
    * @return Always true, this controller allows all transfers
    */
    function onTransfer(address /* _from */, address /* _to */, uint /* _amount */) external returns (bool) {
        return true;
    }

    /**
    * @dev Callback function called from MiniMe-like instances when an ERC20 approval is requested
    *      It allows specifying a custom logic to control if an approval should be allowed or not
    * @return Always true, this controller allows all approvals
    */
    function onApprove(address /* _owner */, address /* _spender */, uint /* _amount */) external returns (bool) {
        return true;
    }

    // Internal fns

    function _changeMinter(address _newMinter) internal {
        minter = _newMinter;
        emit ChangedMinter(_newMinter);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IMiniMeLike","name":"_ant","type":"address"},{"internalType":"address","name":"_minter","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"ChangedMinter","type":"event"},{"constant":true,"inputs":[],"name":"ant","outputs":[{"internalType":"contract IMiniMeLike","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newMinter","type":"address"}],"name":"changeMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"generateTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"onApprove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"onTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"proxyPayment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"}]

608060405234801561001057600080fd5b506040516106b43803806106b48339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03841617905561006081610067565b50506100b1565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f1c2b90e18b29b5d98d86b1c047d9812425c013a77295f1565720161bacb0332a90600090a250565b6105f4806100c06000396000f3fe6080604052600436106100705760003560e01c8063827f32c01161004e578063827f32c01461015957806398a835161461019f578063da682aeb146100f5578063f48c3054146101b457610070565b806307546172146100755780632c4d4d18146100b35780634a393149146100f5575b600080fd5b34801561008157600080fd5b5061008a6101e7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100bf57600080fd5b506100f3600480360360208110156100d657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610203565b005b34801561010157600080fd5b506101456004803603606081101561011857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610302565b604080519115158252519081900360200190f35b34801561016557600080fd5b506101456004803603604081101561017c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561030b565b3480156101ab57600080fd5b5061008a610475565b610145600480360360208110156101ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610491565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015460408051808201909152601681527f414e54435f53454e4445525f4e4f545f4d494e5445520000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102ba5781810151838201526020016102a2565b50505050905090810190601f1680156102e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506102ff81610550565b50565b60019392505050565b60015460408051808201909152601681527f414e54435f53454e4445525f4e4f545f4d494e54455200000000000000000000602082015260009173ffffffffffffffffffffffffffffffffffffffff1633146103c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102ba5781810151838201526020016102a2565b5060008054604080517f827f32c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790529151919092169263827f32c092604480820193602093909283900390910190829087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050506040513d602081101561046c57600080fd5b50519392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000805460408051808201909152601381527f414e54435f53454e4445525f4e4f545f414e540000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102ba5781810151838201526020016102a2565b50600092915050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f1c2b90e18b29b5d98d86b1c047d9812425c013a77295f1565720161bacb0332a90600090a25056fea265627a7a723158206d64f7ca8dc75e204cb471ac35210abb6b890af8b172b120f6468a7657e6ecac64736f6c63430005110032000000000000000000000000960b236a07cf122663c4303350609a66a7b288c0000000000000000000000000beefbeef03c7e5a1c29e0aa675f8e16aee0a5fad

Deployed Bytecode

0x6080604052600436106100705760003560e01c8063827f32c01161004e578063827f32c01461015957806398a835161461019f578063da682aeb146100f5578063f48c3054146101b457610070565b806307546172146100755780632c4d4d18146100b35780634a393149146100f5575b600080fd5b34801561008157600080fd5b5061008a6101e7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100bf57600080fd5b506100f3600480360360208110156100d657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610203565b005b34801561010157600080fd5b506101456004803603606081101561011857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610302565b604080519115158252519081900360200190f35b34801561016557600080fd5b506101456004803603604081101561017c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561030b565b3480156101ab57600080fd5b5061008a610475565b610145600480360360208110156101ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610491565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60015460408051808201909152601681527f414e54435f53454e4445525f4e4f545f4d494e5445520000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146102f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102ba5781810151838201526020016102a2565b50505050905090810190601f1680156102e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506102ff81610550565b50565b60019392505050565b60015460408051808201909152601681527f414e54435f53454e4445525f4e4f545f4d494e54455200000000000000000000602082015260009173ffffffffffffffffffffffffffffffffffffffff1633146103c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102ba5781810151838201526020016102a2565b5060008054604080517f827f32c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790529151919092169263827f32c092604480820193602093909283900390910190829087803b15801561044257600080fd5b505af1158015610456573d6000803e3d6000fd5b505050506040513d602081101561046c57600080fd5b50519392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000805460408051808201909152601381527f414e54435f53454e4445525f4e4f545f414e540000000000000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff163314610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156102ba5781810151838201526020016102a2565b50600092915050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f1c2b90e18b29b5d98d86b1c047d9812425c013a77295f1565720161bacb0332a90600090a25056fea265627a7a723158206d64f7ca8dc75e204cb471ac35210abb6b890af8b172b120f6468a7657e6ecac64736f6c63430005110032

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

000000000000000000000000960b236a07cf122663c4303350609a66a7b288c0000000000000000000000000beefbeef03c7e5a1c29e0aa675f8e16aee0a5fad

-----Decoded View---------------
Arg [0] : _ant (address): 0x960b236A07cf122663c4303350609A66A7B288C0
Arg [1] : _minter (address): 0xbEEFbEeF03c7E5a1C29E0Aa675f8E16AEe0A5FAd

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000960b236a07cf122663c4303350609a66a7b288c0
Arg [1] : 000000000000000000000000beefbeef03c7e5a1c29e0aa675f8e16aee0a5fad


Deployed Bytecode Sourcemap

2203:3276:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2426:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2426:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3410:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3410:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3410:106:0;;;;:::i;:::-;;4752:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4752:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4752:134:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3102:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3102:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3102:153:0;;;;;;;;;:::i;2397:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2397:22:0;;;:::i;4177:287::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4177:287:0;;;;:::i;2426:21::-;;;;;;:::o;3410:106::-;2626:6;;2634:16;;;;;;;;;;;;;;;;;;2626:6;;2612:10;:20;2604:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2604:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3483:25;3497:10;3483:13;:25::i;:::-;3410:106;:::o;4752:134::-;4874:4;4752:134;;;;;:::o;3102:153::-;2626:6;;2634:16;;;;;;;;;;;;;;;;;-1:-1:-1;;2626:6:0;;2612:10;:20;2604:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;2604:47:0;-1:-1:-1;3212:3:0;;;:35;;;;;;:3;:35;;;;;;;;;;;;;;;:3;;;;;:18;;:35;;;;;;;;;;;;;;;;;;:3;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;3212:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3212:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3212:35:0;;3102:153;-1:-1:-1;;;3102:153:0:o;2397:22::-;;;;;;:::o;4177:287::-;4247:4;4413:3;;4419:13;;;;;;;;;;;;;;;;;;4413:3;;4391:10;:26;4383:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4383:50:0;-1:-1:-1;4451:5:0;;4177:287;-1:-1:-1;;4177:287:0:o;5345:131::-;5408:6;:19;;;;;;;;;;;;;5443:25;;;;-1:-1:-1;;5443:25:0;5345:131;:::o

Swarm Source

bzzr://6d64f7ca8dc75e204cb471ac35210abb6b890af8b172b120f6468a7657e6ecac

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.