FRAX Price: $0.83 (-17.70%)

Contract

0xF0d4c12A5768D806021F80a262B4d39d26C58b8D

Overview

FRAX Balance | FXTL Balance

0.000000006280356875 FRAX | 416 FXTL

FRAX Value

Less Than $0.01 (@ $0.83/FRAX)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Deposit_and_stak...312769572026-01-25 18:10:259 mins ago1769364625IN
Curve: Deposit-and-stake
0 FRAX0.000008580.0012003
Deposit_and_stak...312629112026-01-25 10:22:137 hrs ago1769336533IN
Curve: Deposit-and-stake
0 FRAX0.00000530.00099995
Deposit_and_stak...312510632026-01-25 3:47:1714 hrs ago1769312837IN
Curve: Deposit-and-stake
0 FRAX0.000005050.0012
Deposit_and_stak...312305172026-01-24 16:22:2525 hrs ago1769271745IN
Curve: Deposit-and-stake
0 FRAX0.000041170.0012
Deposit_and_stak...312304432026-01-24 16:19:5726 hrs ago1769271597IN
Curve: Deposit-and-stake
0 FRAX0.00003860.0015
Deposit_and_stak...312283622026-01-24 15:10:3527 hrs ago1769267435IN
Curve: Deposit-and-stake
0 FRAX0.000023490.001268
Deposit_and_stak...312280702026-01-24 15:00:5127 hrs ago1769266851IN
Curve: Deposit-and-stake
0 FRAX0.000011070.001
Deposit_and_stak...312276592026-01-24 14:47:0927 hrs ago1769266029IN
Curve: Deposit-and-stake
0 FRAX0.000009130.0012
Deposit_and_stak...312275072026-01-24 14:42:0527 hrs ago1769265725IN
Curve: Deposit-and-stake
0 FRAX0.00000880.00100025
Deposit_and_stak...312263932026-01-24 14:04:5728 hrs ago1769263497IN
Curve: Deposit-and-stake
0 FRAX0.000009690.00109925
Deposit_and_stak...312052192026-01-24 2:19:0940 hrs ago1769221149IN
Curve: Deposit-and-stake
0 FRAX0.000007650.002115
Deposit_and_stak...311749282026-01-23 9:29:272 days ago1769160567IN
Curve: Deposit-and-stake
0 FRAX0.000009930.001
Deposit_and_stak...311723182026-01-23 8:02:272 days ago1769155347IN
Curve: Deposit-and-stake
0 FRAX0.000006790.00100025
Deposit_and_stak...311646642026-01-23 3:47:192 days ago1769140039IN
Curve: Deposit-and-stake
0 FRAX0.000004990.0012003
Deposit_and_stak...311646132026-01-23 3:45:372 days ago1769139937IN
Curve: Deposit-and-stake
0 FRAX0.000005820.0012003
Deposit_and_stak...311294072026-01-22 8:12:053 days ago1769069525IN
Curve: Deposit-and-stake
0 FRAX0.000011280.0012
Deposit_and_stak...310938532026-01-21 12:26:574 days ago1768998417IN
Curve: Deposit-and-stake
0 FRAX0.000035030.001
Deposit_and_stak...310912952026-01-21 11:01:414 days ago1768993301IN
Curve: Deposit-and-stake
0 FRAX0.000011450.00100025
Deposit_and_stak...310742302026-01-21 1:32:514 days ago1768959171IN
Curve: Deposit-and-stake
0 FRAX0.000008190.00163
Deposit_and_stak...310737782026-01-21 1:17:474 days ago1768958267IN
Curve: Deposit-and-stake
0 FRAX0.000009780.001
Deposit_and_stak...310527042026-01-20 13:35:195 days ago1768916119IN
Curve: Deposit-and-stake
0 FRAX0.000009390.00100025
Deposit_and_stak...310509012026-01-20 12:35:135 days ago1768912513IN
Curve: Deposit-and-stake
0 FRAX0.000009540.001
Deposit_and_stak...310501122026-01-20 12:08:555 days ago1768910935IN
Curve: Deposit-and-stake
0 FRAX0.000008280.0015
Deposit_and_stak...310498732026-01-20 12:00:575 days ago1768910457IN
Curve: Deposit-and-stake
0 FRAX0.000008470.0015
Deposit_and_stak...310498342026-01-20 11:59:395 days ago1768910379IN
Curve: Deposit-and-stake
0 FRAX0.000007990.00149925
View all transactions

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
264689342025-10-06 11:02:59111 days ago1759748579
Curve: Deposit-and-stake
0 FRAX
264053032025-10-04 23:41:57112 days ago1759621317
Curve: Deposit-and-stake
0 FRAX

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CurveDeposit&StakeZap

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

# @version 0.3.10

"""
@title CurveDeposit&StakeZap
@custom:version 1.0.0
@author Curve.Fi
@license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved
@notice A zap to add liquidity to pool and deposit into gauge in one transaction
"""

version: public(constant(String[8])) = "1.0.0"


# External Contracts
from vyper.interfaces import ERC20

interface Pool2:
    def add_liquidity(amounts: uint256[2], min_mint_amount: uint256): nonpayable

interface Pool3:
    def add_liquidity(amounts: uint256[3], min_mint_amount: uint256): nonpayable

interface PoolStableNg:
    def add_liquidity(_amounts: DynArray[uint256, MAX_COINS], _min_mint_amount: uint256): nonpayable

interface MetaZap:
    def add_liquidity(pool: address, _amounts: DynArray[uint256, MAX_COINS], _min_mint_amount: uint256): nonpayable

interface Gauge:
    def deposit(lp_token_amount: uint256, addr: address): nonpayable


MAX_COINS: constant(uint256) = 9


@external
@nonreentrant('lock')
def deposit_and_stake(
        deposit: address,
        lp_token: address,
        gauge: address,
        n_coins: uint256,
        coins: DynArray[address, MAX_COINS],
        amounts: DynArray[uint256, MAX_COINS],
        min_mint_amount: uint256,
        use_dynarray: bool,
        pool: address = empty(address),
) -> uint256:
    """
    @notice Deposit coins into pool and stake obtained LP tokens into gauge.
            Zap address should be passed to `deposit` arg in case of meta-pool deposit with underlying coins.
    @param deposit Zap address for meta-pool deposit with underlying coins, pool address for other cases.
    @param lp_token The address of LP token
    @param gauge The address of gauge
    @param n_coins The number of tokens (underlying or wrapped for meta-pools)
    @param coins List of addresses of coins (underlying or wrapped for meta-pools)
    @param amounts List of amounts of coins to deposit (underlying or wrapped for meta-pools)
    @param min_mint_amount Minimum amount of LP tokens to mint from the deposit
    @param use_dynarray True - plain stable, meta stable with underlying coins
                        False - twocrypto, tricrypto, meta stable with wrapped coins
    @param pool The address of meta-pool in case of deposit with underlying coins
    @return Amount of LP tokens staked into gauge
    """
    assert n_coins >= 2, 'n_coins must be >=2'
    assert n_coins <= MAX_COINS, 'n_coins must be <=MAX_COINS'

    # Ensure allowance for swap or zap
    for i in range(MAX_COINS):
        if i == n_coins:
            break
        if amounts[i] == 0 or ERC20(coins[i]).allowance(self, deposit) > 0:
            continue
        ERC20(coins[i]).approve(deposit, max_value(uint256), default_return_value=True)

    # Ensure allowance for gauge
    if ERC20(lp_token).allowance(self, gauge) == 0:
        ERC20(lp_token).approve(gauge, max_value(uint256))

    # Transfer coins from owner
    for i in range(MAX_COINS):
        if i == n_coins:
            break

        if amounts[i] > 0:
            assert ERC20(coins[i]).transferFrom(msg.sender, self, amounts[i], default_return_value=True)

    # Deposit into pool
    if pool != empty(address):  # meta-pool deposit with underlying coins, deposit is zap here
        MetaZap(deposit).add_liquidity(pool, amounts, min_mint_amount)
    elif use_dynarray:  # plain stable pool
        PoolStableNg(deposit).add_liquidity(amounts, min_mint_amount)
    else:
        if n_coins == 2:  # twocrypto or meta-pool deposit with wrapped coins
            Pool2(deposit).add_liquidity([amounts[0], amounts[1]], min_mint_amount)
        elif n_coins == 3:  # tricrypto
            Pool3(deposit).add_liquidity([amounts[0], amounts[1], amounts[2]], min_mint_amount)
        else:
            raise "Wrong arguments"

    # Stake into gauge
    lp_token_amount: uint256 = ERC20(lp_token).balanceOf(self)
    assert lp_token_amount > 0 # dev: swap-token mismatch

    Gauge(gauge).deposit(lp_token_amount, msg.sender)

    return lp_token_amount


@payable
@external
def __default__():
    pass

Contract Security Audit

Contract ABI

API
[{"stateMutability":"nonpayable","type":"function","name":"deposit_and_stake","inputs":[{"name":"deposit","type":"address"},{"name":"lp_token","type":"address"},{"name":"gauge","type":"address"},{"name":"n_coins","type":"uint256"},{"name":"coins","type":"address[]"},{"name":"amounts","type":"uint256[]"},{"name":"min_mint_amount","type":"uint256"},{"name":"use_dynarray","type":"bool"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"deposit_and_stake","inputs":[{"name":"deposit","type":"address"},{"name":"lp_token","type":"address"},{"name":"gauge","type":"address"},{"name":"n_coins","type":"uint256"},{"name":"coins","type":"address[]"},{"name":"amounts","type":"uint256[]"},{"name":"min_mint_amount","type":"uint256"},{"name":"use_dynarray","type":"bool"},{"name":"pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]}]

61088461001161000039610884610000f35f3560e01c60026003820660011b61087e01601e395f51565b6354fd4d508118610878573461087a5760208060805260056040527f312e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f3610878565b6210d5a78118610878576101443610341761087a575f610340526100e456610878565b63c0c702dc8118610878576101643610341761087a57610104358060a01c61087a57610340525b6004358060a01c61087a576040526024358060a01c61087a576060526044358060a01c61087a57608052608435600401600981351161087a5780355f816009811161087a57801561015657905b8060051b6020850101358060a01c61087a578160051b60c00152600101818118610131575b50508060a052505060a435600401600981351161087a57803560208160051b0180836101e03750505060e4358060011c61087a57610320525f5460021461087a5760025f556002606435101561020b576013610360527f6e5f636f696e73206d757374206265203e3d32000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6009606435111561027b57601b610360527f6e5f636f696e73206d757374206265203c3d4d41585f434f494e5300000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b5f6009905b80610360526064356103605118610296576103bb565b610360516101e05181101561087a5760051b61020001516102b857600161030c565b6103605160a05181101561087a5760051b60c0015163dd62ed3e61038052306103a0526040516103c0526020610380604461039c845afa6102fb573d5f5f3e3d5ffd5b60203d1061087a5761038090505115155b15610316576103b0565b6103605160a05181101561087a5760051b60c0015163095ea7b3610380526040516103a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103c0526020610380604461039c5f855af161037a573d5f5f3e3d5ffd5b3d61039157803b1561087a5760016103e0526103aa565b60203d1061087a57610380518060011c61087a576103e0525b6103e050505b600101818118610280575b505060605163dd62ed3e6103605230610380526080516103a0526020610360604461037c845afa6103ee573d5f5f3e3d5ffd5b60203d1061087a576103609050516104705760605163095ea7b36103c0526080516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104005260206103c060446103dc5f855af1610452573d5f5f3e3d5ffd5b60203d1061087a576103c0518060011c61087a576104205261042050505b5f6009905b8061036052606435610360511861048b5761054b565b610360516101e05181101561087a5760051b610200015115610540576103605160a05181101561087a5760051b60c001516323b872dd61038052336103a052306103c052610360516101e05181101561087a5760051b61020001516103e0526020610380606461039c5f855af1610504573d5f5f3e3d5ffd5b3d61051b57803b1561087a57600161040052610534565b60203d1061087a57610380518060011c61087a57610400525b6104009050511561087a575b600101818118610475575b505061034051156105f15760405163fd9de6316103605260606103405161038052806103a05280610380015f6101e0518083528060051b5f826009811161087a5780156105b257905b8060051b61020001518160051b602088010152600101818118610594575b5050820160200191505090508101905060c4356103c05250803b1561087a575f6103606101a461037c5f855af16105eb573d5f5f3e3d5ffd5b506107ee565b6103205161075f5760026064351861066b57604051630b4c7e4d610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260c4356103c052803b1561087a575f610360606461037c5f855af1610665573d5f5f3e3d5ffd5b506107ee565b6003606435186106f657604051634515cef3610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260036101e0511061087a57600260051b61020001516103c05260c4356103e052803b1561087a575f610360608461037c5f855af16106f0573d5f5f3e3d5ffd5b506107ee565b600f610360527f57726f6e6720617267756d656e747300000000000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd6107ee565b60405163b72df5de610360526040806103805280610380015f6101e0518083528060051b5f826009811161087a5780156107b357905b8060051b61020001518160051b602088010152600101818118610795575b5050820160200191505090508101905060c4356103a05250803b1561087a575f61036061018461037c5f855af16107ec573d5f5f3e3d5ffd5b505b6060516370a0823161038052306103a0526020610380602461039c845afa610818573d5f5f3e3d5ffd5b60203d1061087a5761038090505161036052610360511561087a57608051636e553f6561038052610360516103a052336103c052803b1561087a575f610380604461039c5f855af161086c573d5f5f3e3d5ffd5b50602061036060035f55f35b005b5f80fd009a00bd001884190884810600a16576797065728300030a0014

Deployed Bytecode

0x5f3560e01c60026003820660011b61087e01601e395f51565b6354fd4d508118610878573461087a5760208060805260056040527f312e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f3610878565b6210d5a78118610878576101443610341761087a575f610340526100e456610878565b63c0c702dc8118610878576101643610341761087a57610104358060a01c61087a57610340525b6004358060a01c61087a576040526024358060a01c61087a576060526044358060a01c61087a57608052608435600401600981351161087a5780355f816009811161087a57801561015657905b8060051b6020850101358060a01c61087a578160051b60c00152600101818118610131575b50508060a052505060a435600401600981351161087a57803560208160051b0180836101e03750505060e4358060011c61087a57610320525f5460021461087a5760025f556002606435101561020b576013610360527f6e5f636f696e73206d757374206265203e3d32000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6009606435111561027b57601b610360527f6e5f636f696e73206d757374206265203c3d4d41585f434f494e5300000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b5f6009905b80610360526064356103605118610296576103bb565b610360516101e05181101561087a5760051b61020001516102b857600161030c565b6103605160a05181101561087a5760051b60c0015163dd62ed3e61038052306103a0526040516103c0526020610380604461039c845afa6102fb573d5f5f3e3d5ffd5b60203d1061087a5761038090505115155b15610316576103b0565b6103605160a05181101561087a5760051b60c0015163095ea7b3610380526040516103a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103c0526020610380604461039c5f855af161037a573d5f5f3e3d5ffd5b3d61039157803b1561087a5760016103e0526103aa565b60203d1061087a57610380518060011c61087a576103e0525b6103e050505b600101818118610280575b505060605163dd62ed3e6103605230610380526080516103a0526020610360604461037c845afa6103ee573d5f5f3e3d5ffd5b60203d1061087a576103609050516104705760605163095ea7b36103c0526080516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104005260206103c060446103dc5f855af1610452573d5f5f3e3d5ffd5b60203d1061087a576103c0518060011c61087a576104205261042050505b5f6009905b8061036052606435610360511861048b5761054b565b610360516101e05181101561087a5760051b610200015115610540576103605160a05181101561087a5760051b60c001516323b872dd61038052336103a052306103c052610360516101e05181101561087a5760051b61020001516103e0526020610380606461039c5f855af1610504573d5f5f3e3d5ffd5b3d61051b57803b1561087a57600161040052610534565b60203d1061087a57610380518060011c61087a57610400525b6104009050511561087a575b600101818118610475575b505061034051156105f15760405163fd9de6316103605260606103405161038052806103a05280610380015f6101e0518083528060051b5f826009811161087a5780156105b257905b8060051b61020001518160051b602088010152600101818118610594575b5050820160200191505090508101905060c4356103c05250803b1561087a575f6103606101a461037c5f855af16105eb573d5f5f3e3d5ffd5b506107ee565b6103205161075f5760026064351861066b57604051630b4c7e4d610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260c4356103c052803b1561087a575f610360606461037c5f855af1610665573d5f5f3e3d5ffd5b506107ee565b6003606435186106f657604051634515cef3610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260036101e0511061087a57600260051b61020001516103c05260c4356103e052803b1561087a575f610360608461037c5f855af16106f0573d5f5f3e3d5ffd5b506107ee565b600f610360527f57726f6e6720617267756d656e747300000000000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd6107ee565b60405163b72df5de610360526040806103805280610380015f6101e0518083528060051b5f826009811161087a5780156107b357905b8060051b61020001518160051b602088010152600101818118610795575b5050820160200191505090508101905060c4356103a05250803b1561087a575f61036061018461037c5f855af16107ec573d5f5f3e3d5ffd5b505b6060516370a0823161038052306103a0526020610380602461039c845afa610818573d5f5f3e3d5ffd5b60203d1061087a5761038090505161036052610360511561087a57608051636e553f6561038052610360516103a052336103c052803b1561087a575f610380604461039c5f855af161086c573d5f5f3e3d5ffd5b50602061036060035f55f35b005b5f80fd009a00bd0018

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
0xF0d4c12A5768D806021F80a262B4d39d26C58b8D
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.