ETH Price: $1,586.74 (-0.61%)
Gas: 0.38 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint222804062025-04-16 8:37:2317 hrs ago1744792643IN
0xC8b19492...329F71DeF
0 ETH0.000253040.88171068
Mint222804042025-04-16 8:36:5917 hrs ago1744792619IN
0xC8b19492...329F71DeF
0 ETH0.000254350.91749963
Mint222803022025-04-16 8:16:2317 hrs ago1744791383IN
0xC8b19492...329F71DeF
0 ETH0.000309860.96350611
Mint222754302025-04-15 15:59:1133 hrs ago1744732751IN
0xC8b19492...329F71DeF
0 ETH0.000474271.75488442
Mint222741472025-04-15 11:40:4738 hrs ago1744717247IN
0xC8b19492...329F71DeF
0 ETH0.000183290.87381247
Mint222716092025-04-15 3:09:5946 hrs ago1744686599IN
0xC8b19492...329F71DeF
0 ETH0.000102930.3808791
Mint222667772025-04-14 10:57:472 days ago1744628267IN
0xC8b19492...329F71DeF
0 ETH0.000439381.67763982
Mint222667752025-04-14 10:57:232 days ago1744628243IN
0xC8b19492...329F71DeF
0 ETH0.000483341.78843072
Mint222604432025-04-13 13:47:113 days ago1744552031IN
0xC8b19492...329F71DeF
0 ETH0.00019190.66781201
Mint222588862025-04-13 8:34:233 days ago1744533263IN
0xC8b19492...329F71DeF
0 ETH0.000254510.91281713
Mint222578802025-04-13 5:12:353 days ago1744521155IN
0xC8b19492...329F71DeF
0 ETH0.000247990.92050368
Mint222537822025-04-12 15:28:474 days ago1744471727IN
0xC8b19492...329F71DeF
0 ETH0.000698122.38754677
Mint222537782025-04-12 15:27:594 days ago1744471679IN
0xC8b19492...329F71DeF
0 ETH0.00056982.42515573
Mint222518012025-04-12 8:51:474 days ago1744447907IN
0xC8b19492...329F71DeF
0 ETH0.000281150.9784096
Mint222516692025-04-12 8:25:234 days ago1744446323IN
0xC8b19492...329F71DeF
0 ETH0.000171670.5974281
Mint222462702025-04-11 14:22:475 days ago1744381367IN
0xC8b19492...329F71DeF
0 ETH0.000754462.80118765
Mint222460882025-04-11 13:46:115 days ago1744379171IN
0xC8b19492...329F71DeF
0 ETH0.000701012.64670396
Mint222443812025-04-11 8:03:475 days ago1744358627IN
0xC8b19492...329F71DeF
0 ETH0.000201360.7
Mint222429972025-04-11 3:26:355 days ago1744341995IN
0xC8b19492...329F71DeF
0 ETH0.00036751.02770773
Mint222425572025-04-11 1:57:235 days ago1744336643IN
0xC8b19492...329F71DeF
0 ETH0.000265170.9228008
Mint222422202025-04-11 0:49:596 days ago1744332599IN
0xC8b19492...329F71DeF
0 ETH0.000267570.9311551
Mint222421692025-04-11 0:39:476 days ago1744331987IN
0xC8b19492...329F71DeF
0 ETH0.000222170.98528539
Mint222374532025-04-10 8:52:476 days ago1744275167IN
0xC8b19492...329F71DeF
0 ETH0.000209160.60240919
Mint222359872025-04-10 3:58:596 days ago1744257539IN
0xC8b19492...329F71DeF
0 ETH0.000208650.9234039
Mint222353532025-04-10 1:52:116 days ago1744249931IN
0xC8b19492...329F71DeF
0 ETH0.000374571.03784889
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Minimal Proxy Contract for 0xeba9a8fdd2539d33e070c66afc1127478ba78054

Contract Name:
Token Minter

Compiler Version
vyper:0.3.1

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.1
"""
@title Token Minter
@author Curve Finance
@license MIT
"""

# Original idea and credit:
# Curve Finance's Token Minter
# https://resources.curve.fi/base-features/understanding-gauges
# https://github.com/curvefi/curve-dao-contracts/blob/master/contracts/Minter.vy
# This contract is an almost-identical fork of Curve's contract

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 initialize(_token: address, _controller: address):
    assert self.token == ZERO_ADDRESS, "already initialized"

    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]

Contract ABI

API
[{"name":"Minted","inputs":[{"name":"recipient","type":"address","indexed":true},{"name":"gauge","type":"address","indexed":false},{"name":"minted","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"function","name":"initialize","inputs":[{"name":"_token","type":"address"},{"name":"_controller","type":"address"}],"outputs":[],"gas":76092},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"gauge_addr","type":"address"}],"outputs":[],"gas":112502},{"stateMutability":"nonpayable","type":"function","name":"mint_many","inputs":[{"name":"gauge_addrs","type":"address[8]"}],"outputs":[],"gas":499362},{"stateMutability":"nonpayable","type":"function","name":"mint_for","inputs":[{"name":"gauge_addr","type":"address"},{"name":"_for","type":"address"}],"outputs":[],"gas":115095},{"stateMutability":"nonpayable","type":"function","name":"toggle_approve_mint","inputs":[{"name":"minting_user","type":"address"}],"outputs":[],"gas":38081},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2610},{"stateMutability":"view","type":"function","name":"controller","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2640},{"stateMutability":"view","type":"function","name":"minted","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3202},{"stateMutability":"view","type":"function","name":"allowed_to_mint_for","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":3232}]

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.