CRO Price: $0.09 (-3.08%)

Contract

0x2B4CB6948010bc6Cd7ECEB54D5f10EB3400393f5

Overview

CRO Balance

Cronos Chain LogoCronos Chain LogoCronos Chain Logo0 CRO

CRO Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Minter23294182022-04-13 23:29:521031 days ago1649892592IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter18318272022-03-10 1:32:501066 days ago1646875970IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter6542552021-12-21 0:49:001145 days ago1640047740IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter6087292021-12-17 23:44:101148 days ago1639784650IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter6087282021-12-17 23:44:041148 days ago1639784644IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter6087252021-12-17 23:43:461148 days ago1639784626IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter6087212021-12-17 23:43:231148 days ago1639784603IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Calculator5643762021-12-15 0:21:151151 days ago1639527675IN
Adamant Finance: Minter
0 CRO0.1640255,000
Set Minter5498062021-12-14 0:51:171152 days ago1639443077IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5498042021-12-14 0:51:051152 days ago1639443065IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5498032021-12-14 0:50:591152 days ago1639443059IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5498012021-12-14 0:50:481152 days ago1639443048IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5498002021-12-14 0:50:421152 days ago1639443042IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5497982021-12-14 0:50:301152 days ago1639443030IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5497962021-12-14 0:50:181152 days ago1639443018IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5497952021-12-14 0:50:121152 days ago1639443012IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5235042021-12-12 6:23:011154 days ago1639290181IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5235022021-12-12 6:22:491154 days ago1639290169IN
Adamant Finance: Minter
0 CRO0.2401555,000
Set Minter5235002021-12-12 6:22:371154 days ago1639290157IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter5180252021-12-11 21:37:411154 days ago1639258661IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter2303342021-11-22 23:37:521173 days ago1637624272IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter2285672021-11-22 20:54:031173 days ago1637614443IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter2282872021-11-22 20:28:041173 days ago1637612884IN
Adamant Finance: Minter
0 CRO0.2402155,000
Set Minter2280722021-11-22 20:08:051173 days ago1637611685IN
Adamant Finance: Minter
0 CRO0.1442155,000
Set Minter2280362021-11-22 20:04:411173 days ago1637611481IN
Adamant Finance: Minter
0 CRO0.2402155,000
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Minter

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-01-17
*/

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;
// SPDX-License-Identifier: UNLICENSED


/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    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;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}


/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface ICalculator {
    function valueOfAsset(address asset, uint256 amount)
        external
        view
        returns (uint256 valueInETH);
}

struct RewardData {
    address token;
    uint256 amount;
}
struct LockedBalance {
    uint256 amount;
    uint256 unlockTime;
}

// Interface for EPS Staking contract - http://ellipsis.finance/
interface IMultiFeeDistribution {

    /* ========== VIEWS ========== */
    function totalSupply() external view returns (uint256);
    function lockedSupply() external view returns (uint256);

    function rewardPerToken(address _rewardsToken) external view returns (uint256);

    function getRewardForDuration(address _rewardsToken) external view returns (uint256);

    // Address and claimable amount of all reward tokens for the given account
    function claimableRewards(address account) external view returns (RewardData[] memory);

    // Total balance of an account, including unlocked, locked and earned tokens
    function totalBalance(address user) view external returns (uint256 amount);

    // Total withdrawable balance for an account to which no penalty is applied
    function unlockedBalance(address user) view external returns (uint256 amount);

    // Final balance received and penalty balance paid by user upon calling exit
    function withdrawableBalance(address user) view external returns (uint256 amount, uint256 penaltyAmount);

    // Information on the "earned" balances of a user
    // Earned balances may be withdrawn immediately for a 50% penalty
    function earnedBalances(address user) view external returns (uint256 total, LockedBalance[] memory earningsData);

    // Information on a user's locked balances
    function lockedBalances(address user) view external returns (uint256 total, uint256 unlockable, uint256 locked, LockedBalance[] memory lockData);

    /* ========== MUTATIVE FUNCTIONS ========== */

    // Mint new tokens
    // Minted tokens receive rewards normally but incur a 50% penalty when
    // withdrawn before lockDuration has passed.
    function mint(address user, uint256 amount) external;

    // Withdraw full unlocked balance and claim pending rewards
    function exit() external;

    // Withdraw all currently locked tokens where the unlock time has passed
    function withdrawExpiredLocks() external;

    // Claim all pending staking rewards (both BUSD and EPS)
    function getReward() external;

    // Stake tokens to receive rewards
    // Locked tokens cannot be withdrawn for lockDuration and are eligible to receive stakingReward rewards
    function stake(uint256 amount, bool lock) external;
    
    // Withdraw staked tokens
    // First withdraws unlocked tokens, then earned tokens. Withdrawing earned tokens
    // incurs a 50% penalty which is distributed based on locked balances.
    function withdraw(uint256 amount) external;
    
    /* ========== ADMIN CONFIGURATION ========== */

    // Used to let FeeDistribution know that _rewardsToken was added to it
    function notifyRewardAmount(address _rewardsToken, uint256 rewardAmount) external;
}

contract Minter is Ownable {
    using SafeMath for uint256;

    /* ========== STATE VARIABLES ========== */

    mapping(address => bool) private _minters;
    address public calculator;
    address public feeDistribution;
    address public dev;

    uint256 public addyPerProfitEth = 100;

    /* ========== CONSTRUCTOR ========== */

    constructor(address _dev, address _calculator)
        public
    {
        dev = _dev;
        calculator = _calculator;
    }

    /* ========== MODIFIERS ========== */

    modifier onlyMinter {
        require(isMinter(msg.sender) == true, "AddyMinter: caller is not the minter");
        _;
    }

    function mintFor(address user, address asset, uint256 amount) external onlyMinter {
        uint256 valueInEth = ICalculator(calculator).valueOfAsset(asset, amount);

        uint256 mintAddy = amountAddyToMint(valueInEth);
        if (mintAddy == 0) return;
        IMultiFeeDistribution(feeDistribution).mint(user, mintAddy);
        //For every 100 tokens minted, 15 additional tokens will go towards development to ensure rapid innovation.
        IMultiFeeDistribution(feeDistribution).mint(dev, mintAddy.mul(15).div(100));
    }

    /* ========== VIEWS ========== */

    function isMinter(address account) public view returns (bool) {
        return _minters[account];
    }

    function amountAddyToMint(uint256 ethProfit) public view returns (uint256) {
        return ethProfit.mul(addyPerProfitEth);
    }

    function getAddyMinted(address asset, uint256 amount) public view returns (uint256) {
        return amountAddyToMint(ICalculator(calculator).valueOfAsset(asset, amount));
    }

    /* ========== RESTRICTED FUNCTIONS ========== */

    function setAddyPerProfitEth(uint256 _ratio) external onlyOwner {
        addyPerProfitEth = _ratio;
    }

    function setCalculator(address newCalculator) public onlyOwner {
        calculator = newCalculator;
    }

    function setFeeDistribution(address newFeeDistribution) public onlyOwner {
        feeDistribution = newFeeDistribution;
    }

    function setMinter(address minter, bool canMint) external onlyOwner {
        if (canMint) {
            _minters[minter] = canMint;
        } else {
            delete _minters[minter];
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dev","type":"address"},{"internalType":"address","name":"_calculator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"addyPerProfitEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethProfit","type":"uint256"}],"name":"amountAddyToMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDistribution","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getAddyMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ratio","type":"uint256"}],"name":"setAddyPerProfitEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCalculator","type":"address"}],"name":"setCalculator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newFeeDistribution","type":"address"}],"name":"setFeeDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"canMint","type":"bool"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052606460055534801561001557600080fd5b50604051610c0b380380610c0b833981016040819052610034916100bd565b600061003e6100b9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905561010e565b3390565b600080604083850312156100cf578182fd5b82516100da816100f6565b60208401519092506100eb816100f6565b809150509250929050565b6001600160a01b038116811461010b57600080fd5b50565b610aee8061011d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391cca3db11610097578063cf456ae711610066578063cf456ae7146101bb578063daac3cc4146101ce578063e2d2c164146101e1578063f2fde38b146101f4576100f5565b806391cca3db14610178578063aa271e1a14610180578063c53468f0146101a0578063ce3e39c0146101b3576100f5565b806347eeb0b4116100d357806347eeb0b4146101405780635ec3d6ce14610155578063715018a6146101685780638da5cb5b14610170576100f5565b80631919db33146100fa5780631d00e5521461010f5780632479b17714610122575b600080fd5b61010d610108366004610838565b610207565b005b61010d61011d3660046108f8565b610271565b61012a6102b5565b6040516101379190610928565b60405180910390f35b6101486102c4565b6040516101379190610a97565b61010d610163366004610853565b6102ca565b61010d61047c565b61012a610505565b61012a610514565b61019361018e366004610838565b610523565b6040516101379190610955565b61010d6101ae366004610838565b610541565b61012a6105a2565b61010d6101c9366004610893565b6105b1565b6101486101dc3660046108f8565b610644565b6101486101ef3660046108ce565b610661565b61010d610202366004610838565b6106f1565b61020f6107b1565b6001600160a01b0316610220610505565b6001600160a01b03161461024f5760405162461bcd60e51b815260040161024690610a62565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6102796107b1565b6001600160a01b031661028a610505565b6001600160a01b0316146102b05760405162461bcd60e51b815260040161024690610a62565b600555565b6003546001600160a01b031681565b60055481565b6102d333610523565b15156001146102f45760405162461bcd60e51b815260040161024690610a1e565b60025460405163493457b560e11b81526000916001600160a01b031690639268af6a90610327908690869060040161093c565b60206040518083038186803b15801561033f57600080fd5b505afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190610910565b9050600061038482610644565b905080610392575050610477565b6003546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906103c4908890859060040161093c565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b50506003546004546001600160a01b0391821693506340c10f19925016610425606461041f86600f6107b5565b906107ef565b6040518363ffffffff1660e01b815260040161044292919061093c565b600060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b5050505050505b505050565b6104846107b1565b6001600160a01b0316610495610505565b6001600160a01b0316146104bb5760405162461bcd60e51b815260040161024690610a62565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6004546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b6105496107b1565b6001600160a01b031661055a610505565b6001600160a01b0316146105805760405162461bcd60e51b815260040161024690610a62565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6105b96107b1565b6001600160a01b03166105ca610505565b6001600160a01b0316146105f05760405162461bcd60e51b815260040161024690610a62565b801561061f576001600160a01b0382166000908152600160205260409020805460ff1916821515179055610640565b6001600160a01b0382166000908152600160205260409020805460ff191690555b5050565b600061065b600554836107b590919063ffffffff16565b92915050565b60025460405163493457b560e11b81526000916106ea916001600160a01b0390911690639268af6a9061069a908790879060040161093c565b60206040518083038186803b1580156106b257600080fd5b505afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101dc9190610910565b9392505050565b6106f96107b1565b6001600160a01b031661070a610505565b6001600160a01b0316146107305760405162461bcd60e51b815260040161024690610a62565b6001600160a01b0381166107565760405162461bcd60e51b815260040161024690610960565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000826107c45750600061065b565b828202828482816107d157fe5b04146106ea5760405162461bcd60e51b8152600401610246906109dd565b60008082116108105760405162461bcd60e51b8152600401610246906109a6565b81838161081957fe5b049392505050565b80356001600160a01b038116811461065b57600080fd5b600060208284031215610849578081fd5b6106ea8383610821565b600080600060608486031215610867578182fd5b833561087281610aa0565b9250602084013561088281610aa0565b929592945050506040919091013590565b600080604083850312156108a5578182fd5b6108af8484610821565b9150602083013580151581146108c3578182fd5b809150509250929050565b600080604083850312156108e0578182fd5b6108ea8484610821565b946020939093013593505050565b600060208284031215610909578081fd5b5035919050565b600060208284031215610921578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526024908201527f416464794d696e7465723a2063616c6c6572206973206e6f7420746865206d69604082015263373a32b960e11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b6001600160a01b0381168114610ab557600080fd5b5056fea264697066735822122072bb0effcff9cb9226f55f4c2931d11c56a2dbb7d03781d4bbd8f36e5f565b4e64736f6c634300060c0033000000000000000000000000b29cd9c87a624b940335d6d5e1d4aadf7d95beec000000000000000000000000fac5c7819fde19d006244e462db02ed7fe346e71

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806391cca3db11610097578063cf456ae711610066578063cf456ae7146101bb578063daac3cc4146101ce578063e2d2c164146101e1578063f2fde38b146101f4576100f5565b806391cca3db14610178578063aa271e1a14610180578063c53468f0146101a0578063ce3e39c0146101b3576100f5565b806347eeb0b4116100d357806347eeb0b4146101405780635ec3d6ce14610155578063715018a6146101685780638da5cb5b14610170576100f5565b80631919db33146100fa5780631d00e5521461010f5780632479b17714610122575b600080fd5b61010d610108366004610838565b610207565b005b61010d61011d3660046108f8565b610271565b61012a6102b5565b6040516101379190610928565b60405180910390f35b6101486102c4565b6040516101379190610a97565b61010d610163366004610853565b6102ca565b61010d61047c565b61012a610505565b61012a610514565b61019361018e366004610838565b610523565b6040516101379190610955565b61010d6101ae366004610838565b610541565b61012a6105a2565b61010d6101c9366004610893565b6105b1565b6101486101dc3660046108f8565b610644565b6101486101ef3660046108ce565b610661565b61010d610202366004610838565b6106f1565b61020f6107b1565b6001600160a01b0316610220610505565b6001600160a01b03161461024f5760405162461bcd60e51b815260040161024690610a62565b60405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6102796107b1565b6001600160a01b031661028a610505565b6001600160a01b0316146102b05760405162461bcd60e51b815260040161024690610a62565b600555565b6003546001600160a01b031681565b60055481565b6102d333610523565b15156001146102f45760405162461bcd60e51b815260040161024690610a1e565b60025460405163493457b560e11b81526000916001600160a01b031690639268af6a90610327908690869060040161093c565b60206040518083038186803b15801561033f57600080fd5b505afa158015610353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103779190610910565b9050600061038482610644565b905080610392575050610477565b6003546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906103c4908890859060040161093c565b600060405180830381600087803b1580156103de57600080fd5b505af11580156103f2573d6000803e3d6000fd5b50506003546004546001600160a01b0391821693506340c10f19925016610425606461041f86600f6107b5565b906107ef565b6040518363ffffffff1660e01b815260040161044292919061093c565b600060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b5050505050505b505050565b6104846107b1565b6001600160a01b0316610495610505565b6001600160a01b0316146104bb5760405162461bcd60e51b815260040161024690610a62565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6004546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b6105496107b1565b6001600160a01b031661055a610505565b6001600160a01b0316146105805760405162461bcd60e51b815260040161024690610a62565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6105b96107b1565b6001600160a01b03166105ca610505565b6001600160a01b0316146105f05760405162461bcd60e51b815260040161024690610a62565b801561061f576001600160a01b0382166000908152600160205260409020805460ff1916821515179055610640565b6001600160a01b0382166000908152600160205260409020805460ff191690555b5050565b600061065b600554836107b590919063ffffffff16565b92915050565b60025460405163493457b560e11b81526000916106ea916001600160a01b0390911690639268af6a9061069a908790879060040161093c565b60206040518083038186803b1580156106b257600080fd5b505afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101dc9190610910565b9392505050565b6106f96107b1565b6001600160a01b031661070a610505565b6001600160a01b0316146107305760405162461bcd60e51b815260040161024690610a62565b6001600160a01b0381166107565760405162461bcd60e51b815260040161024690610960565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000826107c45750600061065b565b828202828482816107d157fe5b04146106ea5760405162461bcd60e51b8152600401610246906109dd565b60008082116108105760405162461bcd60e51b8152600401610246906109a6565b81838161081957fe5b049392505050565b80356001600160a01b038116811461065b57600080fd5b600060208284031215610849578081fd5b6106ea8383610821565b600080600060608486031215610867578182fd5b833561087281610aa0565b9250602084013561088281610aa0565b929592945050506040919091013590565b600080604083850312156108a5578182fd5b6108af8484610821565b9150602083013580151581146108c3578182fd5b809150509250929050565b600080604083850312156108e0578182fd5b6108ea8484610821565b946020939093013593505050565b600060208284031215610909578081fd5b5035919050565b600060208284031215610921578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601a908201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526024908201527f416464794d696e7465723a2063616c6c6572206973206e6f7420746865206d69604082015263373a32b960e11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b6001600160a01b0381168114610ab557600080fd5b5056fea264697066735822122072bb0effcff9cb9226f55f4c2931d11c56a2dbb7d03781d4bbd8f36e5f565b4e64736f6c634300060c0033

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

000000000000000000000000b29cd9c87a624b940335d6d5e1d4aadf7d95beec000000000000000000000000fac5c7819fde19d006244e462db02ed7fe346e71

-----Decoded View---------------
Arg [0] : _dev (address): 0xB29Cd9C87a624B940335d6d5e1D4aADf7D95bEeC
Arg [1] : _calculator (address): 0xFac5C7819fdE19d006244E462Db02ed7Fe346E71

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000b29cd9c87a624b940335d6d5e1d4aadf7d95beec
Arg [1] : 000000000000000000000000fac5c7819fde19d006244e462db02ed7fe346e71


Deployed Bytecode Sourcemap

13770:2344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15767:128;;;;;;:::i;:::-;;:::i;:::-;;15535:108;;;;;;:::i;:::-;;:::i;13970:30::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14034:37;;;:::i;:::-;;;;;;;:::i;14448:542::-;;;;;;:::i;:::-;;:::i;10045:148::-;;;:::i;9394:87::-;;;:::i;14007:18::-;;;:::i;15039:105::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15651:108::-;;;;;;:::i;:::-;;:::i;13938:25::-;;;:::i;15903:208::-;;;;;;:::i;:::-;;:::i;15152:132::-;;;;;;:::i;:::-;;:::i;15292:179::-;;;;;;:::i;:::-;;:::i;10348:244::-;;;;;;:::i;:::-;;:::i;15767:128::-;9625:12;:10;:12::i;:::-;-1:-1:-1;;;;;9614:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9614:23:0;;9606:68;;;;-1:-1:-1;;;9606:68:0;;;;;;;:::i;:::-;;;;;;;;;15851:15:::1;:36:::0;;-1:-1:-1;;;;;;15851:36:0::1;-1:-1:-1::0;;;;;15851:36:0;;;::::1;::::0;;;::::1;::::0;;15767:128::o;15535:108::-;9625:12;:10;:12::i;:::-;-1:-1:-1;;;;;9614:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9614:23:0;;9606:68;;;;-1:-1:-1;;;9606:68:0;;;;;;;:::i;:::-;15610:16:::1;:25:::0;15535:108::o;13970:30::-;;;-1:-1:-1;;;;;13970:30:0;;:::o;14034:37::-;;;;:::o;14448:542::-;14351:20;14360:10;14351:8;:20::i;:::-;:28;;14375:4;14351:28;14343:77;;;;-1:-1:-1;;;14343:77:0;;;;;;;:::i;:::-;14574:10:::1;::::0;14562:51:::1;::::0;-1:-1:-1;;;14562:51:0;;14541:18:::1;::::0;-1:-1:-1;;;;;14574:10:0::1;::::0;14562:36:::1;::::0;:51:::1;::::0;14599:5;;14606:6;;14562:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14541:72;;14626:16;14645:28;14662:10;14645:16;:28::i;:::-;14626:47:::0;-1:-1:-1;14688:13:0;14684:26:::1;;14703:7;;;;14684:26;14742:15;::::0;14720:59:::1;::::0;-1:-1:-1;;;14720:59:0;;-1:-1:-1;;;;;14742:15:0;;::::1;::::0;14720:43:::1;::::0;:59:::1;::::0;14764:4;;14770:8;;14720:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14929:15:0::1;::::0;14951:3:::1;::::0;-1:-1:-1;;;;;14929:15:0;;::::1;::::0;-1:-1:-1;14907:43:0::1;::::0;-1:-1:-1;14951:3:0::1;14956:25;14977:3;14956:16;:8:::0;14969:2:::1;14956:12;:16::i;:::-;:20:::0;::::1;:25::i;:::-;14907:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14431:1;;;14448:542:::0;;;:::o;10045:148::-;9625:12;:10;:12::i;:::-;-1:-1:-1;;;;;9614:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9614:23:0;;9606:68;;;;-1:-1:-1;;;9606:68:0;;;;;;;:::i;:::-;10152:1:::1;10136:6:::0;;10115:40:::1;::::0;-1:-1:-1;;;;;10136:6:0;;::::1;::::0;10115:40:::1;::::0;10152:1;;10115:40:::1;10183:1;10166:19:::0;;-1:-1:-1;;;;;;10166:19:0::1;::::0;;10045:148::o;9394:87::-;9440:7;9467:6;-1:-1:-1;;;;;9467:6:0;9394:87;:::o;14007:18::-;;;-1:-1:-1;;;;;14007:18:0;;:::o;15039:105::-;-1:-1:-1;;;;;15119:17:0;15095:4;15119:17;;;:8;:17;;;;;;;;;15039:105::o;15651:108::-;9625:12;:10;:12::i;:::-;-1:-1:-1;;;;;9614:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9614:23:0;;9606:68;;;;-1:-1:-1;;;9606:68:0;;;;;;;:::i;:::-;15725:10:::1;:26:::0;;-1:-1:-1;;;;;;15725:26:0::1;-1:-1:-1::0;;;;;15725:26:0;;;::::1;::::0;;;::::1;::::0;;15651:108::o;13938:25::-;;;-1:-1:-1;;;;;13938:25:0;;:::o;15903:208::-;9625:12;:10;:12::i;:::-;-1:-1:-1;;;;;9614:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9614:23:0;;9606:68;;;;-1:-1:-1;;;9606:68:0;;;;;;;:::i;:::-;15986:7:::1;15982:122;;;-1:-1:-1::0;;;;;16010:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;:26;;-1:-1:-1;;16010:26:0::1;::::0;::::1;;;::::0;;15982:122:::1;;;-1:-1:-1::0;;;;;16076:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;16069:23;;-1:-1:-1;;16069:23:0::1;::::0;;15982:122:::1;15903:208:::0;;:::o;15152:132::-;15218:7;15245:31;15259:16;;15245:9;:13;;:31;;;;:::i;:::-;15238:38;15152:132;-1:-1:-1;;15152:132:0:o;15292:179::-;15423:10;;15411:51;;-1:-1:-1;;;15411:51:0;;15367:7;;15394:69;;-1:-1:-1;;;;;15423:10:0;;;;15411:36;;:51;;15448:5;;15455:6;;15411:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15394:69::-;15387:76;15292:179;-1:-1:-1;;;15292:179:0:o;10348:244::-;9625:12;:10;:12::i;:::-;-1:-1:-1;;;;;9614:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;9614:23:0;;9606:68;;;;-1:-1:-1;;;9606:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10437:22:0;::::1;10429:73;;;;-1:-1:-1::0;;;10429:73:0::1;;;;;;;:::i;:::-;10539:6;::::0;;10518:38:::1;::::0;-1:-1:-1;;;;;10518:38:0;;::::1;::::0;10539:6;::::1;::::0;10518:38:::1;::::0;::::1;10567:6;:17:::0;;-1:-1:-1;;;;;;10567:17:0::1;-1:-1:-1::0;;;;;10567:17:0;;;::::1;::::0;;;::::1;::::0;;10348:244::o;8021:106::-;8109:10;8021:106;:::o;3688:220::-;3746:7;3770:6;3766:20;;-1:-1:-1;3785:1:0;3778:8;;3766:20;3809:5;;;3813:1;3809;:5;:1;3833:5;;;;;:10;3825:56;;;;-1:-1:-1;;;3825:56:0;;;;;;;:::i;4386:153::-;4444:7;4476:1;4472;:5;4464:44;;;;-1:-1:-1;;;4464:44:0;;;;;;;:::i;:::-;4530:1;4526;:5;;;;;;;4386:153;-1:-1:-1;;;4386:153:0:o;5:130:-1:-;72:20;;-1:-1;;;;;8281:54;;8485:35;;8475:2;;8534:1;;8524:12;551:241;;655:2;643:9;634:7;630:23;626:32;623:2;;;-1:-1;;661:12;623:2;723:53;768:7;744:22;723:53;:::i;799:491::-;;;;937:2;925:9;916:7;912:23;908:32;905:2;;;-1:-1;;943:12;905:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;995:63;-1:-1;1095:2;1134:22;;72:20;97:33;72:20;97:33;:::i;:::-;899:391;;1103:63;;-1:-1;;;1203:2;1242:22;;;;340:20;;899:391::o;1297:360::-;;;1415:2;1403:9;1394:7;1390:23;1386:32;1383:2;;;-1:-1;;1421:12;1383:2;1483:53;1528:7;1504:22;1483:53;:::i;:::-;1473:63;;1573:2;1613:9;1609:22;206:20;8631:5;8193:13;8186:21;8609:5;8606:32;8596:2;;-1:-1;;8642:12;8596:2;1581:60;;;;1377:280;;;;;:::o;1664:366::-;;;1785:2;1773:9;1764:7;1760:23;1756:32;1753:2;;;-1:-1;;1791:12;1753:2;1853:53;1898:7;1874:22;1853:53;:::i;:::-;1843:63;1943:2;1982:22;;;;340:20;;-1:-1;;;1747:283::o;2037:241::-;;2141:2;2129:9;2120:7;2116:23;2112:32;2109:2;;;-1:-1;;2147:12;2109:2;-1:-1;340:20;;2103:175;-1:-1;2103:175::o;2285:263::-;;2400:2;2388:9;2379:7;2375:23;2371:32;2368:2;;;-1:-1;;2406:12;2368:2;-1:-1;488:13;;2362:186;-1:-1;2362:186::o;4727:222::-;-1:-1;;;;;8281:54;;;;2626:37;;4854:2;4839:18;;4825:124::o;4956:333::-;-1:-1;;;;;8281:54;;;;2626:37;;5275:2;5260:18;;4678:37;5111:2;5096:18;;5082:207::o;5296:210::-;8193:13;;8186:21;2740:34;;5417:2;5402:18;;5388:118::o;5513:416::-;5713:2;5727:47;;;3011:2;5698:18;;;7961:19;3047:34;8001:14;;;3027:55;-1:-1;;;3102:12;;;3095:30;3144:12;;;5684:245::o;5936:416::-;6136:2;6150:47;;;3395:2;6121:18;;;7961:19;3431:28;8001:14;;;3411:49;3479:12;;;6107:245::o;6359:416::-;6559:2;6573:47;;;3730:2;6544:18;;;7961:19;3766:34;8001:14;;;3746:55;-1:-1;;;3821:12;;;3814:25;3858:12;;;6530:245::o;6782:416::-;6982:2;6996:47;;;4109:2;6967:18;;;7961:19;4145:34;8001:14;;;4125:55;-1:-1;;;4200:12;;;4193:28;4240:12;;;6953:245::o;7205:416::-;7405:2;7419:47;;;7390:18;;;7961:19;4527:34;8001:14;;;4507:55;4581:12;;;7376:245::o;7628:222::-;4678:37;;;7755:2;7740:18;;7726:124::o;8426:117::-;-1:-1;;;;;8281:54;;8485:35;;8475:2;;8534:1;;8524:12;8475:2;8469:74;:::o

Swarm Source

ipfs://72bb0effcff9cb9226f55f4c2931d11c56a2dbb7d03781d4bbd8f36e5f565b4e

Block Transaction Gas Used Reward
view all blocks validated

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.