S Price: $0.065792 (-6.08%)
Gas: 55 Gwei

Contract

0x505d666E4DD174DcDD7FA090ed95554486d2Be44

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Deposit_and_stak...608283542026-01-21 8:01:504 days ago1768982510IN
Curve: Staking
0 S0.02309750
Deposit_and_stak...606813962026-01-19 7:19:186 days ago1768807158IN
Curve: Staking
0 S0.024987650
Deposit_and_stak...606813052026-01-19 7:17:396 days ago1768807059IN
Curve: Staking
0 S0.0219042550
Deposit_and_stak...606807292026-01-19 7:03:516 days ago1768806231IN
Curve: Staking
0 S0.0230956550
Deposit_and_stak...601702132026-01-11 19:13:3014 days ago1768158810IN
Curve: Staking
0 S0.0256155955
Deposit_and_stak...598444332026-01-07 17:26:5418 days ago1767806814IN
Curve: Staking
0 S0.0253983955
Deposit_and_stak...594314142026-01-02 12:27:2823 days ago1767356848IN
Curve: Staking
0 S0.02302750
Deposit_and_stak...585603122025-12-22 4:20:5734 days ago1766377257IN
Curve: Staking
0 S0.0291257455
Deposit_and_stak...582054192025-12-17 23:20:2638 days ago1766013626IN
Curve: Staking
0 S0.0249674450.0001
Deposit_and_stak...582033042025-12-17 22:43:2038 days ago1766011400IN
Curve: Staking
0 S0.0277831955
Deposit_and_stak...580524952025-12-16 6:56:1040 days ago1765868170IN
Curve: Staking
0 S0.0247173355
Deposit_and_stak...580277782025-12-15 22:44:0240 days ago1765838642IN
Curve: Staking
0 S0.0257459955
Deposit_and_stak...579769382025-12-15 9:06:2641 days ago1765789586IN
Curve: Staking
0 S0.0257474855
Deposit_and_stak...577115242025-12-11 19:41:5545 days ago1765482115IN
Curve: Staking
0 S0.0219101355
Deposit_and_stak...576821732025-12-11 12:20:3745 days ago1765455637IN
Curve: Staking
0 S0.0256467251
Deposit_and_stak...575908832025-12-10 11:26:2446 days ago1765365984IN
Curve: Staking
0 S0.028167755
Deposit_and_stak...575899102025-12-10 11:02:4746 days ago1765364567IN
Curve: Staking
0 S0.0294042155
Deposit_and_stak...573840222025-12-07 16:44:0749 days ago1765125847IN
Curve: Staking
0 S0.0257459955
Deposit_and_stak...573577562025-12-07 8:43:0649 days ago1765096986IN
Curve: Staking
0 S0.0244222953
Deposit_and_stak...572936812025-12-06 7:28:2450 days ago1765006104IN
Curve: Staking
0 S0.0257474855
Deposit_and_stak...567825582025-11-30 19:10:0956 days ago1764529809IN
Curve: Staking
0 S0.021724555
Deposit_and_stak...567824922025-11-30 19:08:1656 days ago1764529696IN
Curve: Staking
0 S0.021724555
Deposit_and_stak...567490562025-11-30 7:33:2156 days ago1764488001IN
Curve: Staking
0 S0.0287153453
Deposit_and_stak...566775682025-11-29 4:07:1157 days ago1764389231IN
Curve: Staking
0 S0.023406850
Deposit_and_stak...566658012025-11-28 23:16:2757 days ago1764371787IN
Curve: Staking
0 S0.0248302455
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 ##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  ]

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.