ETH Price: $2,869.23 (-2.71%)

Contract

0xc3CC9369fcB8491DaD4FA64cE1Fbd3DD2d70034f

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Mint659009182023-03-02 1:07:181061 days ago1677719238IN
Hundred Finance: Minter
0 ETH0.000075280.1
Mint645718092023-02-25 22:36:391065 days ago1677364599IN
Hundred Finance: Minter
0 ETH0.00005090.1
Mint228106272022-09-04 13:45:371239 days ago1662299137IN
Hundred Finance: Minter
0 ETH0.00009610.1
Mint195862922022-08-07 2:40:081268 days ago1659840008IN
Hundred Finance: Minter
0 ETH0.000044645766 ETH0.07143059
Mint194227962022-08-05 5:10:321269 days ago1659676232IN
Hundred Finance: Minter
0 ETH0.00007417803 ETH0.10980504
Mint191097262022-08-01 10:51:341273 days ago1659351094IN
Hundred Finance: Minter
0 ETH0.000075807124 ETH0.11231034
Mint175649992022-07-13 16:19:231292 days ago1657729163IN
Hundred Finance: Minter
0 ETH0.000184444122 ETH0.32176285
Mint171702542022-07-07 6:33:521298 days ago1657175632IN
Hundred Finance: Minter
0 ETH0.000182071084 ETH0.27030277
Mint_many161826392022-06-28 7:46:331307 days ago1656402393IN
Hundred Finance: Minter
0 ETH0.001425906008 ETH0.68200791
Mint159198272022-06-26 13:58:341309 days ago1656251914IN
Hundred Finance: Minter
0 ETH0.000204583311 ETH0.30386473
Mint157871842022-06-25 15:40:511310 days ago1656171651IN
Hundred Finance: Minter
0 ETH0.000235852488 ETH0.34839481
Mint153938342022-06-22 14:16:201313 days ago1655907380IN
Hundred Finance: Minter
0 ETH0.00018205062 ETH0.31998492
Mint150577132022-06-19 6:26:311316 days ago1655619991IN
Hundred Finance: Minter
0 ETH0.000277922104 ETH0.44462556
Mint148854012022-06-17 11:24:431318 days ago1655465083IN
Hundred Finance: Minter
0 ETH0.000232512599 ETH0.34580946
Mint148685852022-06-17 7:00:111318 days ago1655449211IN
Hundred Finance: Minter
0 ETH0.000282379547 ETH0.3604175
Mint148685722022-06-17 7:00:111318 days ago1655449211IN
Hundred Finance: Minter
0 ETH0.000244231516 ETH0.3604175
Mint148269502022-06-16 18:42:391319 days ago1655404959IN
Hundred Finance: Minter
0 ETH0.00056304189 ETH0.49869921
Mint146496582022-06-15 1:07:141321 days ago1655255234IN
Hundred Finance: Minter
0 ETH0.000306601064 ETH0.45763402
Mint144194042022-06-12 15:43:381323 days ago1655048618IN
Hundred Finance: Minter
0 ETH0.000270857809 ETH0.37441863
Mint140153302022-06-07 22:28:441328 days ago1654640924IN
Hundred Finance: Minter
0 ETH0.000568175636 ETH0.78393166
Mint_many134846382022-06-02 3:21:031333 days ago1654140063IN
Hundred Finance: Minter
0 ETH0.00126594097 ETH0.50567309
Mint133903292022-06-01 2:18:041335 days ago1654049884IN
Hundred Finance: Minter
0 ETH0.000358280409 ETH0.62059778
Mint132751092022-05-30 13:33:321336 days ago1653917612IN
Hundred Finance: Minter
0 ETH0.000195522706 ETH0.28804933
Mint131827162022-05-29 7:25:581337 days ago1653809158IN
Hundred Finance: Minter
0 ETH0.000127077706 ETH0.18835423
Mint130650932022-05-27 13:32:031339 days ago1653658323IN
Hundred Finance: Minter
0 ETH0.000395347372 ETH0.40438249
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
659009182023-03-02 1:07:181061 days ago1677719238
Hundred Finance: Minter
0 ETH
659009182023-03-02 1:07:181061 days ago1677719238
Hundred Finance: Minter
0 ETH
659009182023-03-02 1:07:181061 days ago1677719238
Hundred Finance: Minter
0 ETH
659009182023-03-02 1:07:181061 days ago1677719238
Hundred Finance: Minter
0 ETH
645718092023-02-25 22:36:391065 days ago1677364599
Hundred Finance: Minter
0 ETH
645718092023-02-25 22:36:391065 days ago1677364599
Hundred Finance: Minter
0 ETH
645718092023-02-25 22:36:391065 days ago1677364599
Hundred Finance: Minter
0 ETH
645718092023-02-25 22:36:391065 days ago1677364599
Hundred Finance: Minter
0 ETH
228106272022-09-04 13:45:371239 days ago1662299137
Hundred Finance: Minter
0 ETH
228106272022-09-04 13:45:371239 days ago1662299137
Hundred Finance: Minter
0 ETH
228106272022-09-04 13:45:371239 days ago1662299137
Hundred Finance: Minter
0 ETH
228106272022-09-04 13:45:371239 days ago1662299137
Hundred Finance: Minter
0 ETH
195862922022-08-07 2:40:081268 days ago1659840008
Hundred Finance: Minter
0 ETH
195862922022-08-07 2:40:081268 days ago1659840008
Hundred Finance: Minter
0 ETH
195862922022-08-07 2:40:081268 days ago1659840008
Hundred Finance: Minter
0 ETH
195862922022-08-07 2:40:081268 days ago1659840008
Hundred Finance: Minter
0 ETH
194227962022-08-05 5:10:321269 days ago1659676232
Hundred Finance: Minter
0 ETH
194227962022-08-05 5:10:321269 days ago1659676232
Hundred Finance: Minter
0 ETH
194227962022-08-05 5:10:321269 days ago1659676232
Hundred Finance: Minter
0 ETH
194227962022-08-05 5:10:321269 days ago1659676232
Hundred Finance: Minter
0 ETH
191097262022-08-01 10:51:341273 days ago1659351094
Hundred Finance: Minter
0 ETH
191097262022-08-01 10:51:341273 days ago1659351094
Hundred Finance: Minter
0 ETH
191097262022-08-01 10:51:341273 days ago1659351094
Hundred Finance: Minter
0 ETH
191097262022-08-01 10:51:341273 days ago1659351094
Hundred Finance: Minter
0 ETH
175649992022-07-13 16:19:231292 days ago1657729163
Hundred Finance: Minter
0 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.12

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.12
"""
@title Token Minter
@author Hundred 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


treasury: 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__(_treasury: address, _controller: address):
    self.treasury = _treasury
    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.treasury).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 Security Audit

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":"constructor","inputs":[{"name":"_treasury","type":"address"},{"name":"_controller","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"gauge_addr","type":"address"}],"outputs":[],"gas":112051},{"stateMutability":"nonpayable","type":"function","name":"mint_many","inputs":[{"name":"gauge_addrs","type":"address[8]"}],"outputs":[],"gas":495727},{"stateMutability":"nonpayable","type":"function","name":"mint_for","inputs":[{"name":"gauge_addr","type":"address"},{"name":"_for","type":"address"}],"outputs":[],"gas":114593},{"stateMutability":"nonpayable","type":"function","name":"toggle_approve_mint","inputs":[{"name":"minting_user","type":"address"}],"outputs":[],"gas":37994},{"stateMutability":"view","type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2508},{"stateMutability":"view","type":"function","name":"controller","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2538},{"stateMutability":"view","type":"function","name":"minted","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2998},{"stateMutability":"view","type":"function","name":"allowed_to_mint_for","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":3028}]

604061054b61014039602061054b60c03960c05160a01c1561002057600080fd5b6020602061054b0160c03960c05160a01c1561003b57600080fd5b610140516000556101605160015561053356600436101561000d57610310565b600035601c52600051341561002157600080fd5b636a627842811415610076576004541561003a57600080fd5b600160045560043560a01c1561004f57600080fd5b600435610140523361016052610160516101405160065801610316565b6000506000600455005b63a51e1904811415610153576004541561008f57600080fd5b60016004556000610120525b610120516004013560a01c156100b057600080fd5b60206101205101610120526101006101205110156100cd5761009b565b61014060006008818352015b600461014051600881106100ec57600080fd5b602002013515156100fc5761014a565b610140516004610140516008811061011357600080fd5b6020020135610160523361018052610180516101605160065801610316565b610140526000505b81516001018083528114156100d9575b50506000600455005b6327f18ae38114156101dd576004541561016c57600080fd5b600160045560043560a01c1561018157600080fd5b60243560a01c1561019157600080fd5b60033360e05260c052604060c02060243560e05260c052604060c02054156101d6576004356101405260243561016052610160516101405160065801610316565b6000505b6000600455005b63dd289d608114156102365760043560a01c156101f957600080fd5b600360043560e05260c052604060c0203360e05260c052604060c0205415600360043560e05260c052604060c0203360e05260c052604060c02055005b6361d027b381141561024e5760005460005260206000f35b63f77c47918114156102665760015460005260206000f35b638b752bb08114156102ba5760043560a01c1561028257600080fd5b60243560a01c1561029257600080fd5b600260043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63a099003381141561030e5760043560a01c156102d657600080fd5b60243560a01c156102e657600080fd5b600360043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b505b60006000fd5b610180526101405261016052600060206102206024633f9095b76101a052610140516101c0526101bc6001545afa61034d57600080fd5b601f3d1161035a57600080fd5b60005061022051121561036c57600080fd5b60206102206024634b8200936101a052610160516101c0526101bc6000610140515af161039857600080fd5b601f3d116103a557600080fd5b600050610220506020610240602463094007076101c052610160516101e0526101dc610140515afa6103d657600080fd5b601f3d116103e357600080fd5b600050610240516101a0526101a05160026101605160e05260c052604060c0206101405160e05260c052604060c020548082101561042057600080fd5b808203905090506101c05260006101c05118156104df57602061028060446340c10f196101e05261016051610200526101c051610220526101fc60006000545af161046a57600080fd5b601f3d1161047757600080fd5b600050610280506101a05160026101605160e05260c052604060c0206101405160e05260c052604060c02055610140516101e0526101a05161020052610160517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f060406101e0a25b61018051565b61004e6105330361004e60003961004e610533036000f30000000000000000000000004adf575dbe0e6f1c5909ae9c7119927b4faabbbd000000000000000000000000b4bafc3d60662de362c0cb0f5e2de76603ea77d7

Deployed Bytecode

0x600436101561000d57610310565b600035601c52600051341561002157600080fd5b636a627842811415610076576004541561003a57600080fd5b600160045560043560a01c1561004f57600080fd5b600435610140523361016052610160516101405160065801610316565b6000506000600455005b63a51e1904811415610153576004541561008f57600080fd5b60016004556000610120525b610120516004013560a01c156100b057600080fd5b60206101205101610120526101006101205110156100cd5761009b565b61014060006008818352015b600461014051600881106100ec57600080fd5b602002013515156100fc5761014a565b610140516004610140516008811061011357600080fd5b6020020135610160523361018052610180516101605160065801610316565b610140526000505b81516001018083528114156100d9575b50506000600455005b6327f18ae38114156101dd576004541561016c57600080fd5b600160045560043560a01c1561018157600080fd5b60243560a01c1561019157600080fd5b60033360e05260c052604060c02060243560e05260c052604060c02054156101d6576004356101405260243561016052610160516101405160065801610316565b6000505b6000600455005b63dd289d608114156102365760043560a01c156101f957600080fd5b600360043560e05260c052604060c0203360e05260c052604060c0205415600360043560e05260c052604060c0203360e05260c052604060c02055005b6361d027b381141561024e5760005460005260206000f35b63f77c47918114156102665760015460005260206000f35b638b752bb08114156102ba5760043560a01c1561028257600080fd5b60243560a01c1561029257600080fd5b600260043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63a099003381141561030e5760043560a01c156102d657600080fd5b60243560a01c156102e657600080fd5b600360043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b505b60006000fd5b610180526101405261016052600060206102206024633f9095b76101a052610140516101c0526101bc6001545afa61034d57600080fd5b601f3d1161035a57600080fd5b60005061022051121561036c57600080fd5b60206102206024634b8200936101a052610160516101c0526101bc6000610140515af161039857600080fd5b601f3d116103a557600080fd5b600050610220506020610240602463094007076101c052610160516101e0526101dc610140515afa6103d657600080fd5b601f3d116103e357600080fd5b600050610240516101a0526101a05160026101605160e05260c052604060c0206101405160e05260c052604060c020548082101561042057600080fd5b808203905090506101c05260006101c05118156104df57602061028060446340c10f196101e05261016051610200526101c051610220526101fc60006000545af161046a57600080fd5b601f3d1161047757600080fd5b600050610280506101a05160026101605160e05260c052604060c0206101405160e05260c052604060c02055610140516101e0526101a05161020052610160517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f060406101e0a25b6101805156

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

0000000000000000000000004adf575dbe0e6f1c5909ae9c7119927b4faabbbd000000000000000000000000b4bafc3d60662de362c0cb0f5e2de76603ea77d7

-----Decoded View---------------
Arg [0] : _treasury (address): 0x4adF575DBe0e6F1c5909AE9c7119927b4FaabbBd
Arg [1] : _controller (address): 0xb4BAfc3d60662De362c0cB0f5e2DE76603Ea77D7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004adf575dbe0e6f1c5909ae9c7119927b4faabbbd
Arg [1] : 000000000000000000000000b4bafc3d60662de362c0cb0f5e2de76603ea77d7


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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
Loading...
Loading
[ Download: CSV Export  ]
[ 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.