ETH Price: $3,240.69 (-0.53%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim126786012021-06-21 16:05:331312 days ago1624291533IN
0xC5276525...e7FE07748
0 ETH0.001629829
Claim124769382021-05-21 9:36:321343 days ago1621589792IN
0xC5276525...e7FE07748
0 ETH0.00224840
Claim124434192021-05-16 4:38:311348 days ago1621139911IN
0xC5276525...e7FE07748
0 ETH0.00224840
Claim123863382021-05-07 9:23:061357 days ago1620379386IN
0xC5276525...e7FE07748
0 ETH0.00252945.00000145
Claim123828752021-05-06 20:21:411358 days ago1620332501IN
0xC5276525...e7FE07748
0 ETH0.00449680
Claim123678862021-05-04 12:56:211360 days ago1620132981IN
0xC5276525...e7FE07748
0 ETH0.002191839.00000145
Buy123678842021-05-04 12:56:051360 days ago1620132965IN
0xC5276525...e7FE07748
0 ETH0.0049945739
Buy123570392021-05-02 20:54:531362 days ago1619988893IN
0xC5276525...e7FE07748
0 ETH0.0032336828.6
Claim123405772021-04-30 7:41:081364 days ago1619768468IN
0xC5276525...e7FE07748
0 ETH0.001642242
Buy123405702021-04-30 7:38:331364 days ago1619768313IN
0xC5276525...e7FE07748
0 ETH0.0047492742
Claim123336432021-04-29 6:04:061365 days ago1619676246IN
0xC5276525...e7FE07748
0 ETH0.0024025542.75
Claim123335122021-04-29 5:32:571365 days ago1619674377IN
0xC5276525...e7FE07748
0 ETH0.002135638
Claim123162512021-04-26 13:37:241368 days ago1619444244IN
0xC5276525...e7FE07748
0 ETH0.00234660
Buy123162402021-04-26 13:34:321368 days ago1619444072IN
0xC5276525...e7FE07748
0 ETH0.0070436355
Claim123161742021-04-26 13:17:451368 days ago1619443065IN
0xC5276525...e7FE07748
0 ETH0.002385161
Buy123161732021-04-26 13:16:571368 days ago1619443017IN
0xC5276525...e7FE07748
0 ETH0.0078127561
Claim123160862021-04-26 13:02:251368 days ago1619442145IN
0xC5276525...e7FE07748
0 ETH0.0028150
Claim123159702021-04-26 12:39:331368 days ago1619440773IN
0xC5276525...e7FE07748
0 ETH0.002697648
Claim123142732021-04-26 6:20:081368 days ago1619418008IN
0xC5276525...e7FE07748
0 ETH0.00224840.00000145
Claim123097542021-04-25 13:33:131369 days ago1619357593IN
0xC5276525...e7FE07748
0 ETH0.0012750240.5
Claim123097452021-04-25 13:31:391369 days ago1619357499IN
0xC5276525...e7FE07748
0 ETH0.0022756140.5
Buy123097362021-04-25 13:29:431369 days ago1619357383IN
0xC5276525...e7FE07748
0 ETH0.0039336241
Claim123095872021-04-25 12:55:481369 days ago1619355348IN
0xC5276525...e7FE07748
0 ETH0.002191839.00000134
Buy123077892021-04-25 6:22:451369 days ago1619331765IN
0xC5276525...e7FE07748
0 ETH0.0057629745
Buy123016792021-04-24 7:48:411370 days ago1619250521IN
0xC5276525...e7FE07748
0 ETH0.0063750765
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xE8480841...455e66ADd
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ScaleBuying

Compiler Version
v0.7.0+commit.9e61f92b

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 6: ScaleBuying.sol
// SPDX-License-Identifier: UNLICENSED
// This code is the property of the Aardbanq DAO.
// The Aardbanq DAO is located at 0x829c094f5034099E91AB1d553828F8A765a3DaA1 on the Ethereum Main Net.
// It is the author's wish that this code should be open sourced under the MIT license, but the final 
// decision on this would be taken by the Aardbanq DAO with a vote once sufficient ABQ tokens have been 
// distributed.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

pragma solidity >=0.7.0;
import "./SafeMathTyped.sol";
import "./Erc20.sol";
import './Minter.sol';
import "./IPricer.sol";
import "./ILiquidityEstablisher.sol";

/// @notice Allow buying of tokens in batches of increasing price.
contract ScaleBuying is IPricer
{
    /// @notice The token to use for purchasing
    Erc20 public paymentAsset;
    /// @notice The token that is being bought
    Erc20 public boughtAsset;
    /// @notice The minter for the token being bought
    Minter public minter;
    /// @notice The date in unix timestamp (seconds) when the sale closes.
    uint64 public closingDate;
    /// @notice The address to which the funds should be sent to.
    address public treasury;
    /// @notice The location of the ILO, used to know when tokens can be claimed.
    ILiquidityEstablisher public liquidityEstablisher;
    /// @notice The amount that has been awarded so far.
    uint256 public amountAwarded;
    /// @notice The initial price for the sale.
    uint256 public initialPrice;
    /// @notice The price increase for each token block.
    uint256 public priceIncrease;
    /// @notice The amount of tokens per block.
    uint256 public tokensPerPriceBlock;
    /// @notice The number of blocks up for sale.
    uint256 public maxBlocks;

    /// @notice The amounts of tokens claimable by an address.
    mapping(address => uint256) public amountsClaimable;

    /// @notice Constructs a ScaleBuying
    /// @param _paymentAsset The token address to be used for payment.
    /// @param _boughtAsset The token address to be issued.
    /// @param _minter The minter for the issued token.
    /// @param _treasury The address to receive all funds.
    /// @param _initialPrice The initial price per token.
    /// @param _priceIncrease The increase of the price per token for each block.
    /// @param _tokensPerPriceBlock The tokens in each block.
    /// @param _maxBlocks The maximum number of blocks on sale.
    /// @param _closingDate The date in unix (seconds) timestamp that the sale will close.
    constructor (Erc20 _paymentAsset, Erc20 _boughtAsset, Minter _minter, address _treasury, uint256 _initialPrice, 
        uint256 _priceIncrease, uint256 _tokensPerPriceBlock, uint256 _maxBlocks, uint64 _closingDate)
    {
        paymentAsset = _paymentAsset;
        boughtAsset = _boughtAsset;
        minter = _minter;
        treasury = _treasury;
        amountAwarded = 0;
        initialPrice = _initialPrice;
        priceIncrease = _priceIncrease;
        tokensPerPriceBlock = _tokensPerPriceBlock;
        maxBlocks = _maxBlocks;
        closingDate = _closingDate;

        allocateTokensRaisedByAuction();
    }

    // CG: This allocates the amount of tokens that was already bought on auction before\
    //     switching over to this Scale Buying.
    function allocateTokensRaisedByAuction() 
        private
    {
        uint256 price = initialPrice;
        
        uint256 buyerAAmount = 7165 ether;
        amountsClaimable[0xEE779e4b3e7b11454ed80cFE12Cf48ee3Ff4579E] = buyerAAmount;
        emit Bought(0xEE779e4b3e7b11454ed80cFE12Cf48ee3Ff4579E, buyerAAmount, price);
        
        uint256 buyerBAmount = 4065 ether;
        amountsClaimable[0x6C4f3Db0E743A9e8f44A756b6585192B358D7664] = buyerBAmount;
        emit Bought(0x6C4f3Db0E743A9e8f44A756b6585192B358D7664, buyerAAmount, price);

        uint256 buyerCAmount = 355 ether;
        amountsClaimable[0x0FB79E6C0F5447ffe36a0050221275Da487b0E09] = buyerCAmount;
        emit Bought(0x0FB79E6C0F5447ffe36a0050221275Da487b0E09, buyerAAmount, price);

        amountAwarded = buyerAAmount + buyerBAmount + buyerCAmount;
    }

    /// @notice Set the ILO to use to track if liquidity has been astablished and thus claims can be allowed.
    /// @param _liquidityEstablisher The ILO.
    function setLiquidityEstablisher(ILiquidityEstablisher _liquidityEstablisher)
        external
    {
        require(address(liquidityEstablisher) == address(0), "ABQDAO/already-set");

        liquidityEstablisher = _liquidityEstablisher;
    }

    /// @notice The event emitted when a claim is executed.
    /// @param claimer The address the claim has been processed for.
    /// @param amount The amount that was claimed.
    event Claimed(address indexed claimer, uint256 amount);
    /// @notice Claim ABQ bought for the given address. Claims can only be processed after liquidity has been established.
    /// @param _target The address to process claims for.
    function claim(address _target)
        external
    {
        // CG: Claims cannot be executed before liquidity is established or closed more than a week ago.
        require(liquidityEstablisher.isLiquidityEstablishedOrExpired(), "ABQDAO/cannot-claim-yet");

        uint256 amountClaimable = amountsClaimable[_target];
        if (amountClaimable > 0)
        {
            bool isSuccess = boughtAsset.transfer(_target, amountClaimable);
            require(isSuccess, "ABQDAO/could-not-transfer-claim");
            amountsClaimable[_target] = 0;
            emit Claimed(_target, amountClaimable);
        }
    }

    /// @notice The event emitted when tokens are bought.
    /// @param buyer The address that may claim the tokens.
    /// @param amount The amount of token bought.
    /// @param pricePerToken The price per token that the tokens were bought for.
    event Bought(address indexed buyer, uint256 amount, uint256 pricePerToken);
    /// @notice Buy tokens in the current block.
    /// @param _paymentAmount The amount to spend. This will be transfered from msg.sender who should approved this amount first.
    /// @param _target The address that the amounts would be bought for. Tokens are distributed after calling the claim method.
    function buy(uint256 _paymentAmount, address _target) 
        external
        returns (uint256 _paymentLeft)
    {
        // CG: only allow buys before the ico closes.
        require(block.timestamp <= closingDate, "ABQDAO/ico-concluded");

        (uint256 paymentLeft, uint256 paymentDue) = buyInBlock(_paymentAmount, _target);
        // CG: transfer payment
        if (paymentDue > 0)
        {
            bool isSuccess = paymentAsset.transferFrom(msg.sender, treasury, paymentDue);
            require(isSuccess, "ABQDAO/could-not-pay");
        }
        return paymentLeft;
    }

    function buyInBlock(uint256 _paymentAmount, address _target)
        private
        returns (uint256 _paymentLeft, uint256 _paymentDue)
    {
        uint256 currentBlockIndex = currentBlock();
        uint256 tokensLeft = tokensLeftInBlock(currentBlockIndex);

        if (currentBlockIndex >= maxBlocks)
        {
            // CG: If all block are sold out, then amount bought should be zero.
            return (_paymentAmount, 0);
        }
        else
        {
            uint256 currentPriceLocal = currentPrice();
            uint256 tokensCanPayFor = _paymentAmount / currentPriceLocal;
            if (tokensCanPayFor == 0)
            {
                return (_paymentAmount, 0);
            }
            if (tokensCanPayFor > (tokensLeft / 1 ether))
            {
                tokensCanPayFor = tokensLeft / 1 ether;
            }

            // CG: Get the amount of tokens that can be bought in this block.
            uint256 paymentDue = SafeMathTyped.mul256(tokensCanPayFor, currentPriceLocal);
            tokensCanPayFor = SafeMathTyped.mul256(tokensCanPayFor, 1 ether);
            amountsClaimable[_target] = SafeMathTyped.add256(amountsClaimable[_target], tokensCanPayFor);
            amountAwarded = SafeMathTyped.add256(amountAwarded, tokensCanPayFor);
            minter.mint(address(this), tokensCanPayFor);
            emit Bought(_target, tokensCanPayFor, currentPriceLocal);
            uint256 paymentLeft = SafeMathTyped.sub256(_paymentAmount, paymentDue);
            
            if (paymentLeft <= currentPriceLocal)
            {
                return (paymentLeft, paymentDue);
            }
            else
            {
                // CG: should this block be sold out, buy the remainder in the next box.
                (uint256 subcallPaymentLeft, uint256 subcallPaymentDue) = buyInBlock(paymentLeft, _target);
                paymentDue = SafeMathTyped.add256(paymentDue, subcallPaymentDue);
                return (subcallPaymentLeft, paymentDue);
            }
        }
    }

    /// @notice Get the current price per token.
    /// @return _currentPrice The current price per token.
    function currentPrice()
        view
        public
        override
        returns (uint256 _currentPrice)
    {
        return SafeMathTyped.add256(initialPrice, SafeMathTyped.mul256(currentBlock(), priceIncrease));
    }

    /// @notice Get the current block number, starting at 0.
    function currentBlock() 
        view
        public
        returns (uint256 _currentBlock)
    {
        return amountAwarded / tokensPerPriceBlock;
    }

    /// @notice Get the amount of tokens left in a given block.
    /// @param _block The block to get the number of tokens left for.
    /// @return _tokensLeft The number of tokens left in the given _block.
    function tokensLeftInBlock(uint256 _block)
        view
        public
        returns (uint256 _tokensLeft)
    {
        uint256 currentBlockIndex = currentBlock();

        if (_block > maxBlocks || _block < currentBlockIndex)
        {
            return 0;
        }

        if (_block == currentBlockIndex)
        {
            //CG: non overflow code: return ((currentBlockIndex + 1) * tokensPerPriceBlock) - amountAwarded;
            return SafeMathTyped.sub256(SafeMathTyped.mul256(SafeMathTyped.add256(currentBlockIndex, 1), tokensPerPriceBlock), amountAwarded);
        }
        else
        {
            return tokensPerPriceBlock;
        }
    }
}

File 2 of 6: Erc20.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0;

interface Erc20
{
    function symbol() view external returns (string memory _symbol);
    function decimals() view external returns (uint8 _decimals);
    
    function balanceOf(address _owner) 
        view
        external
        returns (uint256 _balance);
        
    event Transfer(address indexed from, address indexed to, uint256 value);
    function transfer(address _to, uint256 _amount) 
        external
        returns (bool _success);
    function transferFrom(address _from, address _to, uint256 _amount)
        external
        returns (bool _success);

    function approve(address _spender, uint256 _amount) 
        external
        returns (bool _success);
}

File 3 of 6: ILiquidityEstablisher.sol
// SPDX-License-Identifier: UNLICENSED
// This code is the property of the Aardbanq DAO.
// The Aardbanq DAO is located at 0x829c094f5034099E91AB1d553828F8A765a3DaA1 on the Ethereum Main Net.
// It is the author's wish that this code should be open sourced under the MIT license, but the final 
// decision on this would be taken by the Aardbanq DAO with a vote once sufficient ABQ tokens have been 
// distributed.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
pragma solidity >=0.7.0;

interface ILiquidityEstablisher
{
    function isLiquidityEstablishedOrExpired()
        external
        view
        returns (bool _isEstablishedOrExpired);
}

File 4 of 6: IPricer.sol
// SPDX-License-Identifier: UNLICENSED
// This code is the property of the Aardbanq DAO.
// The Aardbanq DAO is located at 0x829c094f5034099E91AB1d553828F8A765a3DaA1 on the Ethereum Main Net.
// It is the author's wish that this code should be open sourced under the MIT license, but the final 
// decision on this would be taken by the Aardbanq DAO with a vote once sufficient ABQ tokens have been 
// distributed.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
pragma solidity >=0.7.0;

interface IPricer
{
    function currentPrice()
        view
        external
        returns (uint256 _currentPrice);
}

File 5 of 6: Minter.sol
// SPDX-License-Identifier: UNLICENSED
// This code is the property of the Aardbanq DAO.
// The Aardbanq DAO is located at 0x829c094f5034099E91AB1d553828F8A765a3DaA1 on the Ethereum Main Net.
// It is the author's wish that this code should be open sourced under the MIT license, but the final 
// decision on this would be taken by the Aardbanq DAO with a vote once sufficient ABQ tokens have been 
// distributed.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
pragma solidity >=0.7.0;

interface Minter
{
    function mint(address _target, uint256 _amount) external;
}

File 6 of 6: SafeMathTyped.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMathTyped {
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul256(uint256 a, uint256 b) internal pure returns (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-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "uint256 overflow");

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div256(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "Can't divide by 0");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub256(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "uint256 underflow");
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add256(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "uint256 overflow");

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod256(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "Can't mod by 0");
        return a % b;
    }

    /**
    * @dev returns the greater of two numbers
    */
    function max256(uint256 a, uint256 b) internal pure returns (uint) {
        return a > b ? a : b;
    }

    /**
    * @dev returns the lesser of two numbers
    */
    function min256(uint256 a, uint256 b) internal pure returns (uint) {
        return a < b ? a : b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract Erc20","name":"_paymentAsset","type":"address"},{"internalType":"contract Erc20","name":"_boughtAsset","type":"address"},{"internalType":"contract Minter","name":"_minter","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_initialPrice","type":"uint256"},{"internalType":"uint256","name":"_priceIncrease","type":"uint256"},{"internalType":"uint256","name":"_tokensPerPriceBlock","type":"uint256"},{"internalType":"uint256","name":"_maxBlocks","type":"uint256"},{"internalType":"uint64","name":"_closingDate","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pricePerToken","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"inputs":[],"name":"amountAwarded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountsClaimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boughtAsset","outputs":[{"internalType":"contract Erc20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_paymentAmount","type":"uint256"},{"internalType":"address","name":"_target","type":"address"}],"name":"buy","outputs":[{"internalType":"uint256","name":"_paymentLeft","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closingDate","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentBlock","outputs":[{"internalType":"uint256","name":"_currentBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPrice","outputs":[{"internalType":"uint256","name":"_currentPrice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityEstablisher","outputs":[{"internalType":"contract ILiquidityEstablisher","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"contract Minter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentAsset","outputs":[{"internalType":"contract Erc20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ILiquidityEstablisher","name":"_liquidityEstablisher","type":"address"}],"name":"setLiquidityEstablisher","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"}],"name":"tokensLeftInBlock","outputs":[{"internalType":"uint256","name":"_tokensLeft","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerPriceBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101155760003560e01c80635a58bd5d116100a2578063a628828f11610071578063a628828f146103c2578063a80ffd9a146103ea578063e12ed13c1461042c578063e3db4fe71461044a578063f8c340501461047e57610115565b80635a58bd5d146102da57806361d027b31461030e5780637deb6025146103425780639d1b464a146103a457610115565b80631e83409a116100e95780631e83409a146101f85780632083569e1461023c5780633814f8a41461025a57806338e12e581461027857806351b8f4bb1461029657610115565b80622589261461011a578063075461721461014e578063162e9669146101825780631d0806ae146101da575b600080fd5b61012261049c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101566104c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c46004803603602081101561019857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104e6565b6040518082815260200191505060405180910390f35b6101e26104fe565b6040518082815260200191505060405180910390f35b61023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610504565b005b610244610844565b6040518082815260200191505060405180910390f35b61026261084a565b6040518082815260200191505060405180910390f35b610280610850565b6040518082815260200191505060405180910390f35b6102d8600480360360208110156102ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610856565b005b6102e261095e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610316610984565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61038e6004803603604081101561035857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109aa565b6040518082815260200191505060405180910390f35b6103ac610bed565b6040518082815260200191505060405180910390f35b6103ca610c12565b604051808267ffffffffffffffff16815260200191505060405180910390f35b6104166004803603602081101561040057600080fd5b8101908080359060200190929190505050610c2c565b6040518082815260200191505060405180910390f35b610434610c94565b6040518082815260200191505060405180910390f35b610452610ca9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610486610ccf565b6040518082815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915090505481565b60065481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395bdec046040518163ffffffff1660e01b815260040160206040518083038186803b15801561056c57600080fd5b505afa158015610580573d6000803e3d6000fd5b505050506040513d602081101561059657600080fd5b8101908080519060200190929190505050610619576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41425144414f2f63616e6e6f742d636c61696d2d79657400000000000000000081525060200191505060405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115610840576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106fb57600080fd5b505af115801561070f573d6000803e3d6000fd5b505050506040513d602081101561072557600080fd5b81019080805190602001909291905050509050806107ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f41425144414f2f636f756c642d6e6f742d7472616e736665722d636c61696d0081525060200191505060405180910390fd5b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a836040518082815260200191505060405180910390a2505b5050565b60095481565b60085481565b60055481565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f41425144414f2f616c72656164792d736574000000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260149054906101000a900467ffffffffffffffff1667ffffffffffffffff16421115610a42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41425144414f2f69636f2d636f6e636c7564656400000000000000000000000081525060200191505060405180910390fd5b600080610a4f8585610cd5565b915091506000811115610be25760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610b3057600080fd5b505af1158015610b44573d6000803e3d6000fd5b505050506040513d6020811015610b5a57600080fd5b8101908080519060200190929190505050905080610be0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f41425144414f2f636f756c642d6e6f742d70617900000000000000000000000081525060200191505060405180910390fd5b505b819250505092915050565b6000610c0d600654610c08610c00610c94565b600754610f83565b611026565b905090565b600260149054906101000a900467ffffffffffffffff1681565b600080610c37610c94565b9050600954831180610c4857508083105b15610c57576000915050610c8f565b80831415610c8857610c80610c78610c70836001611026565b600854610f83565b6005546110ae565b915050610c8f565b6008549150505b919050565b600060085460055481610ca357fe5b04905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b6000806000610ce2610c94565b90506000610cef82610c2c565b90506009548210610d0857856000935093505050610f7c565b6000610d12610bed565b90506000818881610d1f57fe5b0490506000811415610d3b578760009550955050505050610f7c565b670de0b6b3a76400008381610d4c57fe5b04811115610d6957670de0b6b3a76400008381610d6557fe5b0490505b6000610d758284610f83565b9050610d8982670de0b6b3a7640000610f83565b9150610dd4600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611026565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e2360055483611026565b600581905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff167fa9a40dec7a304e5915d11358b968c1e8d365992abf20f82285d1df1b30c8e24c8385604051808381526020018281526020019250505060405180910390a26000610f368a836110ae565b9050838111610f5057808297509750505050505050610f7c565b600080610f5d838c610cd5565b91509150610f6b8482611026565b935081849950995050505050505050505b9250929050565b600080831415610f965760009050611020565b6000828402905082848281610fa757fe5b041461101b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f75696e74323536206f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b6000808284019050838110156110a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f75696e74323536206f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600082821115611126576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f75696e7432353620756e646572666c6f7700000000000000000000000000000081525060200191505060405180910390fd5b60008284039050809150509291505056fea26469706673582212200db1a694bea9e95129bdc87f4ea2fae7e53b30fb0831389c1ac1fda5df34a96364736f6c63430007000033

Deployed Bytecode Sourcemap

1127:9814:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1382:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2260:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1895:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5467:633;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2163:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2071:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1811:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4781:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1697:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1584:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6753:608;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9570:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1485:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10253:685;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9871:162;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1296:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1987:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1216:25;;;;;;;;;;;;:::o;1382:20::-;;;;;;;;;;;;;:::o;2260:51::-;;;;;;;;;;;;;;;;;:::o;1895:27::-;;;;:::o;5467:633::-;5647:20;;;;;;;;;;;:52;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5639:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5742:23;5768:16;:25;5785:7;5768:25;;;;;;;;;;;;;;;;5742:51;;5826:1;5808:15;:19;5804:289;;;5853:14;5870:11;;;;;;;;;;;:20;;;5891:7;5900:15;5870:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5853:63;;5939:9;5931:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6027:1;5999:16;:25;6016:7;5999:25;;;;;;;;;;;;;;;:29;;;;6056:7;6048:33;;;6065:15;6048:33;;;;;;;;;;;;;;;;;;5804:289;;5467:633;;:::o;2163:24::-;;;;:::o;2071:34::-;;;;:::o;1811:28::-;;;;:::o;4781:251::-;4942:1;4901:43;;4909:20;;;;;;;;;;;4901:43;;;4893:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5003:21;4980:20;;:44;;;;;;;;;;;;;;;;;;4781:251;:::o;1697:49::-;;;;;;;;;;;;;:::o;1584:23::-;;;;;;;;;;;;;:::o;6753:608::-;6844:20;6964:11;;;;;;;;;;;6945:30;;:15;:30;;6937:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:19;7035:18;7057:35;7068:14;7084:7;7057:10;:35::i;:::-;7013:79;;;;7153:1;7140:10;:14;7136:189;;;7180:14;7197:12;;;;;;;;;;;:25;;;7223:10;7235:8;;;;;;;;;;;7245:10;7197:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7180:76;;7279:9;7271:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7136:189;;7342:11;7335:18;;;;6753:608;;;;:::o;9570:231::-;9660:21;9706:87;9727:12;;9741:51;9762:14;:12;:14::i;:::-;9778:13;;9741:20;:51::i;:::-;9706:20;:87::i;:::-;9699:94;;9570:231;:::o;1485:25::-;;;;;;;;;;;;;:::o;10253:685::-;10344:19;10381:25;10409:14;:12;:14::i;:::-;10381:42;;10449:9;;10440:6;:18;:48;;;;10471:17;10462:6;:26;10440:48;10436:98;;;10521:1;10514:8;;;;;10436:98;10560:17;10550:6;:27;10546:385;;;10720:122;10741:85;10762:42;10783:17;10802:1;10762:20;:42::i;:::-;10806:19;;10741:20;:85::i;:::-;10828:13;;10720:20;:122::i;:::-;10713:129;;;;;10546:385;10900:19;;10893:26;;;10253:685;;;;:::o;9871:162::-;9944:21;10006:19;;9990:13;;:35;;;;;;9983:42;;9871:162;:::o;1296:24::-;;;;;;;;;;;;;:::o;1987:28::-;;;;:::o;7369:2083::-;7465:20;7487:19;7524:25;7552:14;:12;:14::i;:::-;7524:42;;7577:18;7598:36;7616:17;7598;:36::i;:::-;7577:57;;7672:9;;7651:17;:30;7647:1798;;7797:14;7813:1;7789:26;;;;;;;;7647:1798;7866:25;7894:14;:12;:14::i;:::-;7866:42;;7923:23;7966:17;7949:14;:34;;;;;;7923:60;;8021:1;8002:15;:20;7998:100;;;8064:14;8080:1;8056:26;;;;;;;;;;7998:100;8148:7;8135:10;:20;;;;;;8116:15;:40;8112:132;;;8221:7;8208:10;:20;;;;;;8190:38;;8112:132;8339:18;8360:56;8381:15;8398:17;8360:20;:56::i;:::-;8339:77;;8449:46;8470:15;8487:7;8449:20;:46::i;:::-;8431:64;;8538;8559:16;:25;8576:7;8559:25;;;;;;;;;;;;;;;;8586:15;8538:20;:64::i;:::-;8510:16;:25;8527:7;8510:25;;;;;;;;;;;;;;;:92;;;;8633:52;8654:13;;8669:15;8633:20;:52::i;:::-;8617:13;:68;;;;8700:6;;;;;;;;;;;:11;;;8720:4;8727:15;8700:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8770:7;8763:51;;;8779:15;8796:17;8763:51;;;;;;;;;;;;;;;;;;;;;;;;8829:19;8851:48;8872:14;8888:10;8851:20;:48::i;:::-;8829:70;;8947:17;8932:11;:32;8928:506;;9006:11;9019:10;8998:32;;;;;;;;;;;;8928:506;9188:26;9216:25;9245:32;9256:11;9269:7;9245:10;:32::i;:::-;9187:90;;;;9309:51;9330:10;9342:17;9309:20;:51::i;:::-;9296:64;;9387:18;9407:10;9379:39;;;;;;;;;;;;7369:2083;;;;;;:::o;277:456:4:-;338:7;587:1;582;:6;578:47;;;612:1;605:8;;;;578:47;637:9;653:1;649;:5;637:17;;682:1;677;673;:5;;;;;;:10;665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;724:1;717:8;;;277:456;;;;;:::o;1589:173::-;1650:7;1670:9;1686:1;1682;:5;1670:17;;1711:1;1706;:6;;1698:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1753:1;1746:8;;;1589:173;;;;:::o;1329:174::-;1390:7;1423:1;1418;:6;;1410:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1457:9;1473:1;1469;:5;1457:17;;1494:1;1487:8;;;1329:174;;;;:::o

Swarm Source

ipfs://0db1a694bea9e95129bdc87f4ea2fae7e53b30fb0831389c1ac1fda5df34a963

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  ]

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.