ETH Price: $2,953.78 (-0.10%)

Contract

0xd125E7a0cEddF89c6473412d85835450897be6Dc

Overview

ETH Balance

Taiko Alethia LogoTaiko Alethia LogoTaiko Alethia Logo0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Deposit_and_stak...36005122025-12-11 12:59:3744 days ago1765457977IN
Curve: Staking
0 ETH0.000011720.03063
Deposit_and_stak...27812942025-10-09 4:58:09107 days ago1759985889IN
Curve: Staking
0 ETH0.000010170.03063
Deposit_and_stak...27801992025-10-09 3:04:05107 days ago1759979045IN
Curve: Staking
0 ETH0.000008770.02735
Deposit_and_stak...27799792025-10-09 2:41:07107 days ago1759977667IN
Curve: Staking
0 ETH0.000008050.0251
Deposit_and_stak...27421952025-10-06 4:49:39110 days ago1759726179IN
Curve: Staking
0 ETH0.000009990.03063
Deposit_and_stak...27420412025-10-06 4:32:49110 days ago1759725169IN
Curve: Staking
0 ETH0.000010.03065
Deposit_and_stak...26878352025-10-02 5:09:05114 days ago1759381745IN
Curve: Staking
0 ETH0.000010510.027
Deposit_and_stak...26874982025-10-02 4:28:01114 days ago1759379281IN
Curve: Staking
0 ETH0.000008810.027
Deposit_and_stak...26464252025-09-29 2:54:51117 days ago1759114491IN
Curve: Staking
0 ETH0.000009870.03063
Deposit_and_stak...26463552025-09-29 2:46:31117 days ago1759113991IN
Curve: Staking
0 ETH0.000009870.03063
Deposit_and_stak...25978882025-09-25 8:11:37121 days ago1758787897IN
Curve: Staking
0 ETH0.00000870.027
Deposit_and_stak...25958162025-09-25 3:53:41121 days ago1758772421IN
Curve: Staking
0 ETH0.000335421.025
Deposit_and_stak...25955432025-09-25 3:18:49121 days ago1758770329IN
Curve: Staking
0 ETH0.00000870.027
Deposit_and_stak...25826572025-09-24 4:34:49122 days ago1758688489IN
Curve: Staking
0 ETH0.00004030.125
Deposit_and_stak...25825782025-09-24 4:26:31122 days ago1758687991IN
Curve: Staking
0 ETH0.00004030.125
Deposit_and_stak...25748672025-09-23 14:54:05123 days ago1758639245IN
Curve: Staking
0 ETH0.000009670.03
Deposit_and_stak...25536132025-09-22 5:18:07124 days ago1758518287IN
Curve: Staking
0 ETH0.00000870.027
Deposit_and_stak...24981522025-09-18 15:32:35128 days ago1758209555IN
Curve: Staking
0 ETH0.000010650.03
Deposit_and_stak...24918122025-09-18 8:35:55128 days ago1758184555IN
Curve: Staking
0 ETH0.000089550.2300001
Deposit_and_stak...24883862025-09-18 3:01:33128 days ago1758164493IN
Curve: Staking
0 ETH0.00005120.152217
Deposit_and_stak...19027472025-08-29 5:18:39148 days ago1756444719IN
Curve: Staking
0 ETH0.000068790.1900001
Deposit_and_stak...18010042025-08-26 2:08:23151 days ago1756174103IN
Curve: Staking
0 ETH0.000045760.125
Deposit_and_stak...17337222025-08-23 15:09:45154 days ago1755961785IN
Curve: Staking
0 ETH0.000048780.1
Deposit_and_stak...17336802025-08-23 15:06:57154 days ago1755961617IN
Curve: Staking
0 ETH0.000036550.1
Deposit_and_stak...16837562025-08-22 0:01:27155 days ago1755820887IN
Curve: Staking
0 ETH0.000049780.1520591
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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)

# pragma version 0.3.10
# pragma evm-version paris

"""
@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 StableSwap:
    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(n_coins, bound=MAX_COINS):

        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(n_coins, bound=MAX_COINS):

        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
        StableSwap(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

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":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]}]

6108c6610011610000396108c6610000f360003560e01c60026003820660011b6108c001601e39600051565b6354fd4d5081186108b557346108bb5760208060805260056040527f312e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f36108b5565b6210d5a781186108b557610144361034176108bb576000610340526100e8566108b5565b63c0c702dc81186108b557610164361034176108bb57610104358060a01c6108bb57610340525b6004358060a01c6108bb576040526024358060a01c6108bb576060526044358060a01c6108bb5760805260843560040160098135116108bb578035600081600981116108bb57801561015b57905b8060051b6020850101358060a01c6108bb578160051b60c00152600101818118610136575b50508060a052505060a43560040160098135116108bb57803560208160051b0180836101e03750505060e4358060011c6108bb57610320526000546002146108bb57600260005560026064351015610213576013610360527f6e5f636f696e73206d757374206265203e3d32000000000000000000000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6009606435111561028457601b610360527f6e5f636f696e73206d757374206265203c3d4d41585f434f494e5300000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6000606435600981116108bb5780156103ca57905b8061036052610360516101e0518110156108bb5760051b61020001516102c0576001610317565b6103605160a0518110156108bb5760051b60c0015163dd62ed3e61038052306103a0526040516103c0526020610380604461039c845afa610306573d600060003e3d6000fd5b60203d106108bb5761038090505115155b15610321576103bf565b6103605160a0518110156108bb5760051b60c0015163095ea7b3610380526040516103a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103c0526020610380604461039c6000855af1610389573d600060003e3d6000fd5b3d6103a057803b156108bb5760016103e0526103b9565b60203d106108bb57610380518060011c6108bb576103e0525b6103e050505b600101818118610299575b505060605163dd62ed3e6103605230610380526080516103a0526020610360604461037c845afa610400573d600060003e3d6000fd5b60203d106108bb576103609050516104865760605163095ea7b36103c0526080516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104005260206103c060446103dc6000855af1610468573d600060003e3d6000fd5b60203d106108bb576103c0518060011c6108bb576104205261042050505b6000606435600981116108bb57801561056457905b8061036052610360516101e0518110156108bb5760051b610200015115610559576103605160a0518110156108bb5760051b60c001516323b872dd61038052336103a052306103c052610360516101e0518110156108bb5760051b61020001516103e0526020610380606461039c6000855af161051d573d600060003e3d6000fd5b3d61053457803b156108bb5760016104005261054d565b60203d106108bb57610380518060011c6108bb57610400525b610400905051156108bb575b60010181811861049b575b505061034051156106115760405163fd9de6316103605260606103405161038052806103a052806103800160006101e0518083528060051b600082600981116108bb5780156105cd57905b8060051b61020001518160051b6020880101526001018181186105af575b5050820160200191505090508101905060c4356103c05250803b156108bb5760006103606101a461037c6000855af161060b573d600060003e3d6000fd5b50610822565b6103205161078c5760026064351861069157604051630b4c7e4d610360526101e051156108bb57600060051b61020001516103805260026101e051106108bb57600160051b61020001516103a05260c4356103c052803b156108bb576000610360606461037c6000855af161068b573d600060003e3d6000fd5b50610822565b60036064351861072257604051634515cef3610360526101e051156108bb57600060051b61020001516103805260026101e051106108bb57600160051b61020001516103a05260036101e051106108bb57600260051b61020001516103c05260c4356103e052803b156108bb576000610360608461037c6000855af161071c573d600060003e3d6000fd5b50610822565b600f610360527f57726f6e6720617267756d656e747300000000000000000000000000000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd610822565b60405163b72df5de6103605260408061038052806103800160006101e0518083528060051b600082600981116108bb5780156107e257905b8060051b61020001518160051b6020880101526001018181186107c4575b5050820160200191505090508101905060c4356103a05250803b156108bb57600061036061018461037c6000855af1610820573d600060003e3d6000fd5b505b6060516370a0823161038052306103a0526020610380602461039c845afa61084f573d600060003e3d6000fd5b60203d106108bb576103809050516103605261036051156108bb57608051636e553f6561038052610360516103a052336103c052803b156108bb576000610380604461039c6000855af16108a8573d600060003e3d6000fd5b5060206103606003600055f35b60006000fd5b600080fd009d00c1001a841908c6810600a16576797065728300030a0014

Deployed Bytecode

0x60003560e01c60026003820660011b6108c001601e39600051565b6354fd4d5081186108b557346108bb5760208060805260056040527f312e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f36108b5565b6210d5a781186108b557610144361034176108bb576000610340526100e8566108b5565b63c0c702dc81186108b557610164361034176108bb57610104358060a01c6108bb57610340525b6004358060a01c6108bb576040526024358060a01c6108bb576060526044358060a01c6108bb5760805260843560040160098135116108bb578035600081600981116108bb57801561015b57905b8060051b6020850101358060a01c6108bb578160051b60c00152600101818118610136575b50508060a052505060a43560040160098135116108bb57803560208160051b0180836101e03750505060e4358060011c6108bb57610320526000546002146108bb57600260005560026064351015610213576013610360527f6e5f636f696e73206d757374206265203e3d32000000000000000000000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6009606435111561028457601b610360527f6e5f636f696e73206d757374206265203c3d4d41585f434f494e5300000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6000606435600981116108bb5780156103ca57905b8061036052610360516101e0518110156108bb5760051b61020001516102c0576001610317565b6103605160a0518110156108bb5760051b60c0015163dd62ed3e61038052306103a0526040516103c0526020610380604461039c845afa610306573d600060003e3d6000fd5b60203d106108bb5761038090505115155b15610321576103bf565b6103605160a0518110156108bb5760051b60c0015163095ea7b3610380526040516103a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103c0526020610380604461039c6000855af1610389573d600060003e3d6000fd5b3d6103a057803b156108bb5760016103e0526103b9565b60203d106108bb57610380518060011c6108bb576103e0525b6103e050505b600101818118610299575b505060605163dd62ed3e6103605230610380526080516103a0526020610360604461037c845afa610400573d600060003e3d6000fd5b60203d106108bb576103609050516104865760605163095ea7b36103c0526080516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104005260206103c060446103dc6000855af1610468573d600060003e3d6000fd5b60203d106108bb576103c0518060011c6108bb576104205261042050505b6000606435600981116108bb57801561056457905b8061036052610360516101e0518110156108bb5760051b610200015115610559576103605160a0518110156108bb5760051b60c001516323b872dd61038052336103a052306103c052610360516101e0518110156108bb5760051b61020001516103e0526020610380606461039c6000855af161051d573d600060003e3d6000fd5b3d61053457803b156108bb5760016104005261054d565b60203d106108bb57610380518060011c6108bb57610400525b610400905051156108bb575b60010181811861049b575b505061034051156106115760405163fd9de6316103605260606103405161038052806103a052806103800160006101e0518083528060051b600082600981116108bb5780156105cd57905b8060051b61020001518160051b6020880101526001018181186105af575b5050820160200191505090508101905060c4356103c05250803b156108bb5760006103606101a461037c6000855af161060b573d600060003e3d6000fd5b50610822565b6103205161078c5760026064351861069157604051630b4c7e4d610360526101e051156108bb57600060051b61020001516103805260026101e051106108bb57600160051b61020001516103a05260c4356103c052803b156108bb576000610360606461037c6000855af161068b573d600060003e3d6000fd5b50610822565b60036064351861072257604051634515cef3610360526101e051156108bb57600060051b61020001516103805260026101e051106108bb57600160051b61020001516103a05260036101e051106108bb57600260051b61020001516103c05260c4356103e052803b156108bb576000610360608461037c6000855af161071c573d600060003e3d6000fd5b50610822565b600f610360527f57726f6e6720617267756d656e747300000000000000000000000000000000006103805261036050610360518061038001601f826000031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd610822565b60405163b72df5de6103605260408061038052806103800160006101e0518083528060051b600082600981116108bb5780156107e257905b8060051b61020001518160051b6020880101526001018181186107c4575b5050820160200191505090508101905060c4356103a05250803b156108bb57600061036061018461037c6000855af1610820573d600060003e3d6000fd5b505b6060516370a0823161038052306103a0526020610380602461039c845afa61084f573d600060003e3d6000fd5b60203d106108bb576103809050516103605261036051156108bb57608051636e553f6561038052610360516103a052336103c052803b156108bb576000610380604461039c6000855af16108a8573d600060003e3d6000fd5b5060206103606003600055f35b60006000fd5b600080fd009d00c1001a

Block Transaction Gas Used Reward
view all blocks sequenced

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  ]

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.