MOVR Price: $6.17 (+6.03%)
Gas: 1 GWei

Contract

0x08110737CB8276B155aB18533dacF7d27e2357c8

Overview

MOVR Balance

Moonriver Chain LogoMoonriver Chain LogoMoonriver Chain Logo0 MOVR

MOVR Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint73290922024-07-14 21:56:12282 days ago1720994172IN
0x08110737...27e2357c8
0 MOVR0.001050261.25
Mint_many57016492023-12-09 5:59:12501 days ago1702101552IN
0x08110737...27e2357c8
0 MOVR0.009762332.94795062
Mint_many45328212023-06-25 5:21:18668 days ago1687670478IN
0x08110737...27e2357c8
0 MOVR0.009204992.75005843
Mint38182222023-03-14 16:24:32770 days ago1678811072IN
0x08110737...27e2357c8
0 MOVR0.000966932.5
Mint_many35986452023-02-11 6:28:54802 days ago1676096934IN
0x08110737...27e2357c8
0 MOVR0.002232782.5
Mint32973072022-12-30 7:44:42845 days ago1672386282IN
0x08110737...27e2357c8
0 MOVR0.000361951
Mint32973012022-12-30 7:43:24845 days ago1672386204IN
0x08110737...27e2357c8
0 MOVR0.000361961
Mint_many32816542022-12-28 2:11:12847 days ago1672193472IN
0x08110737...27e2357c8
0 MOVR0.000394721
Mint32681122022-12-26 3:55:00849 days ago1672026900IN
0x08110737...27e2357c8
0 MOVR0.000414031.01
Mint31259602022-12-04 17:13:06870 days ago1670173986IN
0x08110737...27e2357c8
0 MOVR0.000926312.5
Mint31064532022-12-01 21:59:36873 days ago1669931976IN
0x08110737...27e2357c8
0 MOVR0.0422703942.13854222
Mint29581372022-11-10 7:41:00895 days ago1668066060IN
0x08110737...27e2357c8
0 MOVR0.000519321.01
Mint29547082022-11-09 19:47:18895 days ago1668023238IN
0x08110737...27e2357c8
0 MOVR0.00106872.5
Mint_many29067932022-11-02 20:56:30902 days ago1667422590IN
0x08110737...27e2357c8
0 MOVR0.000833332.5
Mint29046772022-11-02 13:37:00903 days ago1667396220IN
0x08110737...27e2357c8
0 MOVR0.000513031.01
Mint28988192022-11-01 17:21:06903 days ago1667323266IN
0x08110737...27e2357c8
0 MOVR0.000801782.5
Mint_many28408972022-10-24 9:20:48912 days ago1666603248IN
0x08110737...27e2357c8
0 MOVR0.000958542.5
Mint28321062022-10-23 3:02:06913 days ago1666494126IN
0x08110737...27e2357c8
0 MOVR0.000924562.5
Mint28318822022-10-23 2:16:00913 days ago1666491360IN
0x08110737...27e2357c8
0 MOVR0.000860562.5
Mint_many27916272022-10-17 7:22:36919 days ago1665991356IN
0x08110737...27e2357c8
0 MOVR0.001213582.5
Mint_many27465222022-10-10 19:46:30925 days ago1665431190IN
0x08110737...27e2357c8
0 MOVR0.000833542.5
Mint27429352022-10-10 7:22:00926 days ago1665386520IN
0x08110737...27e2357c8
0 MOVR0.000801932.5
Mint27429272022-10-10 7:20:06926 days ago1665386406IN
0x08110737...27e2357c8
0 MOVR0.001146052.5
Mint27248342022-10-07 17:14:24928 days ago1665162864IN
0x08110737...27e2357c8
0 MOVR0.000314741.01
Mint27248282022-10-07 17:13:12928 days ago1665162792IN
0x08110737...27e2357c8
0 MOVR0.000394371.01
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.15

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.15
"""
@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}]

60406104c56101403960206104c560c03960c05160a01c6104c057602060206104c50160c03960c05160a01c6104c05761014051600355610160516004556104a856600436101561000d576102b8565b600035601c526000513461046157636a6278428114156100645760005461046157600160005560043560a01c610461576004356101405233610160526101605161014051600658016102be565b6000506000600055005b63a51e190481141561012b576001546104615760016001556000610120525b610120516004013560a01c6104615760206101205101610120526101006101205110156100af57610083565b61014060006008818352015b60046101405160088110156104615760200201356100d857610122565b6101405160046101405160088110156104615760200201356101605233610180526101805161016051600658016102be565b610140526000505b81516001018083528114156100bb575b50506000600155005b6327f18ae38114156101a35760025461046157600160025560043560a01c6104615760243560a01c6104615760063360e05260c052604060c02060243560e05260c052604060c020541561019c5760043561014052602435610160526101605161014051600658016102be565b6000505b6000600255005b63dd289d608114156101f65760043560a01c61046157600660043560e05260c052604060c0203360e05260c052604060c0205415600660043560e05260c052604060c0203360e05260c052604060c02055005b6361d027b381141561020e5760035460005260206000f35b63f77c47918114156102265760045460005260206000f35b638b752bb081141561026e5760043560a01c6104615760243560a01c61046157600560043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63a09900338114156102b65760043560a01c6104615760243560a01c61046157600660043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b505b60006000fd5b610180526101405261016052600060206102206024633f9095b76101a052610140516101c0526101bc6004545afa1561046157601f3d11156104615760005061022051126104615760206102206024634b8200936101a052610160516101c0526101bc6000610140515af11561046157601f3d111561046157600050610220506020610240602463094007076101c052610160516101e0526101dc610140515afa1561046157601f3d111561046157600050610240516101a0526101a05160056101605160e05260c052604060c0206101405160e05260c052604060c0205480821061046157808203905090506101c05260006101c051181561045b57602061028060446340c10f196101e05261016051610200526101c051610220526101fc60006003545af11561046157601f3d111561046157600050610280506101a05160056101605160e05260c052604060c0206101405160e05260c052604060c02055610140516101e0526101a05161020052610160517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f060406101e0a25b61018051565b600080fd5b6100426104a8036100426000396100426104a8036000f35b600080fd000000000000000000000000d7a8de0672131668be0366cf517dbd1c369ce200000000000000000000000000ca78ca5c3da9a5a4c960c1757456e99d9f1bc76d

Deployed Bytecode

0x600436101561000d576102b8565b600035601c526000513461046157636a6278428114156100645760005461046157600160005560043560a01c610461576004356101405233610160526101605161014051600658016102be565b6000506000600055005b63a51e190481141561012b576001546104615760016001556000610120525b610120516004013560a01c6104615760206101205101610120526101006101205110156100af57610083565b61014060006008818352015b60046101405160088110156104615760200201356100d857610122565b6101405160046101405160088110156104615760200201356101605233610180526101805161016051600658016102be565b610140526000505b81516001018083528114156100bb575b50506000600155005b6327f18ae38114156101a35760025461046157600160025560043560a01c6104615760243560a01c6104615760063360e05260c052604060c02060243560e05260c052604060c020541561019c5760043561014052602435610160526101605161014051600658016102be565b6000505b6000600255005b63dd289d608114156101f65760043560a01c61046157600660043560e05260c052604060c0203360e05260c052604060c0205415600660043560e05260c052604060c0203360e05260c052604060c02055005b6361d027b381141561020e5760035460005260206000f35b63f77c47918114156102265760045460005260206000f35b638b752bb081141561026e5760043560a01c6104615760243560a01c61046157600560043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63a09900338114156102b65760043560a01c6104615760243560a01c61046157600660043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b505b60006000fd5b610180526101405261016052600060206102206024633f9095b76101a052610140516101c0526101bc6004545afa1561046157601f3d11156104615760005061022051126104615760206102206024634b8200936101a052610160516101c0526101bc6000610140515af11561046157601f3d111561046157600050610220506020610240602463094007076101c052610160516101e0526101dc610140515afa1561046157601f3d111561046157600050610240516101a0526101a05160056101605160e05260c052604060c0206101405160e05260c052604060c0205480821061046157808203905090506101c05260006101c051181561045b57602061028060446340c10f196101e05261016051610200526101c051610220526101fc60006003545af11561046157601f3d111561046157600050610280506101a05160056101605160e05260c052604060c0206101405160e05260c052604060c02055610140516101e0526101a05161020052610160517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f060406101e0a25b61018051565b600080fd

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

000000000000000000000000d7a8de0672131668be0366cf517dbd1c369ce200000000000000000000000000ca78ca5c3da9a5a4c960c1757456e99d9f1bc76d

-----Decoded View---------------
Arg [0] : _treasury (address): 0xD7a8De0672131668be0366cF517DbD1c369cE200
Arg [1] : _controller (address): 0xca78ca5C3Da9a5a4C960C1757456E99d9F1bc76d

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d7a8de0672131668be0366cf517dbd1c369ce200
Arg [1] : 000000000000000000000000ca78ca5c3da9a5a4c960c1757456e99d9f1bc76d


Block Transaction Gas Used Reward
view all blocks collator

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
[ 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.