Address Contract Partially Verified
Address
0xd061D61a4d941c39E5453435B6345Dc261C2fcE0
Balance
0 ETH
Nonce
1
Code Size
1536 bytes
Creator
0xc4AD0Ef3...7Be4 at tx 0x3623566c...47c004
Indexed Transactions
0
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