Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xd061D61a4d941c39E5453435B6345Dc261C2fcE0
Balance 0 ETH
Nonce 1
Code Size 1536 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

1536 bytes
0x600436101561000d576105fa565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052600015610278575b610180526101405261016052600060206102206024633f9095b76101a052610140516101c0526101bc6001545afa6100e057600080fd5b601f3d116100ed57600080fd5b6000506102205112156100ff57600080fd5b60206102c06024634b82009361024052610160516102605261025c6000610140515af161012b57600080fd5b601f3d1161013857600080fd5b6000506102c05060206103806024630940070761030052610160516103205261031c610140515afa61016957600080fd5b601f3d1161017657600080fd5b600050610380516102e0526102e05160026101605160e05260c052604060c0206101405160e05260c052604060c02054808210156101b357600080fd5b808203905090506103a05260006103a051181561027257602061046060446340c10f196103c052610160516103e0526103a051610400526103dc60006000545af16101fd57600080fd5b601f3d1161020a57600080fd5b600050610460506102e05160026101605160e05260c052604060c0206101405160e05260c052604060c0205561014051610480526102e0516104a052610160517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f06040610480a25b61018051565b636a62784260005114156102e25762ffffff541561029557600080fd5b600162ffffff5534156102a757600080fd5b60043560205181106102b857600080fd5b506004356101405233610160526101605161014051600658016100a9565b600050600062ffffff55005b63a51e190460005114156103d45762ffffff54156102ff57600080fd5b600162ffffff55341561031157600080fd5b6000610120525b6101205160040135602051811061032e57600080fd5b50602061012051016101205261010061012051101561034c57610318565b61014060006008818352015b6004610140516008811061036b57600080fd5b6020020135151561037b576103c9565b610140516004610140516008811061039257600080fd5b602002013561018052336101a0526101a05161018051600658016100a9565b610140526000505b8151600101808352811415610358575b5050600062ffffff55005b6327f18ae360005114156104755762ffffff54156103f157600080fd5b600162ffffff55341561040357600080fd5b600435602051811061041457600080fd5b50602435602051811061042657600080fd5b5060033360e05260c052604060c02060243560e05260c052604060c020541561046c5760043561014052602435610160526101605161014051600658016100a9565b6000505b600062ffffff55005b63dd289d6060005114156104dd57341561048e57600080fd5b600435602051811061049f57600080fd5b50600360043560e05260c052604060c0203360e05260c052604060c0205415600360043560e05260c052604060c0203360e05260c052604060c02055005b63fc0c546a60005114156105045734156104f657600080fd5b60005460005260206000f350005b63f77c4791600051141561052b57341561051d57600080fd5b60015460005260206000f350005b638b752bb0600051141561059257341561054457600080fd5b600435602051811061055557600080fd5b50602435602051811061056757600080fd5b50600260043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b63a099003360005114156105f95734156105ab57600080fd5b60043560205181106105bc57600080fd5b5060243560205181106105ce57600080fd5b50600360043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b5b60006000fd

Verified Source Code Partial Match

Compiler: v0.2.4+commit.7949850
Vyper_contract.vy 99 lines
# @version 0.2.4
"""
@title Token Minter
@author Curve Finance
@license MIT
"""

interface LiquidityGauge:
    # Presumably, other gauges will provide the same interfaces
    def integrate_fraction(addr: address) -> uint256: view
    def user_checkpoint(addr: address) -> bool: nonpayable

interface MERC20:
    def mint(_to: address, _value: uint256) -> bool: nonpayable

interface GaugeController:
    def gauge_types(addr: address) -> int128: view


event Minted:
    recipient: indexed(address)
    gauge: address
    minted: uint256


token: public(address)
controller: public(address)

# user -> gauge -> value
minted: public(HashMap[address, HashMap[address, uint256]])

# minter -> user -> can mint?
allowed_to_mint_for: public(HashMap[address, HashMap[address, bool]])


@external
def __init__(_token: address, _controller: address):
    self.token = _token
    self.controller = _controller


@internal
def _mint_for(gauge_addr: address, _for: address):
    assert GaugeController(self.controller).gauge_types(gauge_addr) >= 0  # dev: gauge is not added

    LiquidityGauge(gauge_addr).user_checkpoint(_for)
    total_mint: uint256 = LiquidityGauge(gauge_addr).integrate_fraction(_for)
    to_mint: uint256 = total_mint - self.minted[_for][gauge_addr]

    if to_mint != 0:
        MERC20(self.token).mint(_for, to_mint)
        self.minted[_for][gauge_addr] = total_mint

        log Minted(_for, gauge_addr, total_mint)


@external
@nonreentrant('lock')
def mint(gauge_addr: address):
    """
    @notice Mint everything which belongs to `msg.sender` and send to them
    @param gauge_addr `LiquidityGauge` address to get mintable amount from
    """
    self._mint_for(gauge_addr, msg.sender)


@external
@nonreentrant('lock')
def mint_many(gauge_addrs: address[8]):
    """
    @notice Mint everything which belongs to `msg.sender` across multiple gauges
    @param gauge_addrs List of `LiquidityGauge` addresses
    """
    for i in range(8):
        if gauge_addrs[i] == ZERO_ADDRESS:
            break
        self._mint_for(gauge_addrs[i], msg.sender)


@external
@nonreentrant('lock')
def mint_for(gauge_addr: address, _for: address):
    """
    @notice Mint tokens for `_for`
    @dev Only possible when `msg.sender` has been approved via `toggle_approve_mint`
    @param gauge_addr `LiquidityGauge` address to get mintable amount from
    @param _for Address to mint to
    """
    if self.allowed_to_mint_for[msg.sender][_for]:
        self._mint_for(gauge_addr, _for)


@external
def toggle_approve_mint(minting_user: address):
    """
    @notice allow `minting_user` to mint for `msg.sender`
    @param minting_user Address to toggle permission for
    """
    self.allowed_to_mint_for[minting_user][msg.sender] = not self.allowed_to_mint_for[minting_user][msg.sender]

Read Contract

allowed_to_mint_for 0xa0990033 → bool
controller 0xf77c4791 → address
minted 0x8b752bb0 → uint256
token 0xfc0c546a → address

Write Contract 4 functions

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

mint 0x6a627842
address gauge_addr
mint_for 0x27f18ae3
address gauge_addr
address _for
mint_many 0xa51e1904
address[8] gauge_addrs
toggle_approve_mint 0xdd289d60
address minting_user

Recent Transactions

No transactions found for this address