More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 974 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit_and_stak... | 19300917 | 1 hr ago | IN | 0 frxETH | 0.00000038 | ||||
Deposit_and_stak... | 19298238 | 2 hrs ago | IN | 0 frxETH | 0.00000043 | ||||
Deposit_and_stak... | 19292592 | 5 hrs ago | IN | 0 frxETH | 0.00000035 | ||||
Deposit_and_stak... | 19288760 | 8 hrs ago | IN | 0 frxETH | 0.00000041 | ||||
Deposit_and_stak... | 19284350 | 10 hrs ago | IN | 0 frxETH | 0.00000039 | ||||
Deposit_and_stak... | 19281492 | 12 hrs ago | IN | 0 frxETH | 0.00000042 | ||||
Deposit_and_stak... | 19280932 | 12 hrs ago | IN | 0 frxETH | 0.00000038 | ||||
Deposit_and_stak... | 19280602 | 12 hrs ago | IN | 0 frxETH | 0.00000045 | ||||
Deposit_and_stak... | 19276777 | 14 hrs ago | IN | 0 frxETH | 0.00000035 | ||||
Deposit_and_stak... | 19274922 | 15 hrs ago | IN | 0 frxETH | 0 | ||||
Deposit_and_stak... | 19236395 | 37 hrs ago | IN | 0 frxETH | 0.00000042 | ||||
Deposit_and_stak... | 19233044 | 39 hrs ago | IN | 0 frxETH | 0.00000037 | ||||
Deposit_and_stak... | 19229432 | 41 hrs ago | IN | 0 frxETH | 0.00000037 | ||||
Deposit_and_stak... | 19216326 | 2 days ago | IN | 0 frxETH | 0.00000039 | ||||
Deposit_and_stak... | 19214772 | 2 days ago | IN | 0 frxETH | 0.00000011 | ||||
Deposit_and_stak... | 19209550 | 2 days ago | IN | 0 frxETH | 0.00000033 | ||||
Deposit_and_stak... | 19209474 | 2 days ago | IN | 0 frxETH | 0.00000033 | ||||
Deposit_and_stak... | 19200478 | 2 days ago | IN | 0 frxETH | 0.00000038 | ||||
Deposit_and_stak... | 19199836 | 2 days ago | IN | 0 frxETH | 0.00000033 | ||||
Deposit_and_stak... | 19199612 | 2 days ago | IN | 0 frxETH | 0.00000033 | ||||
Deposit_and_stak... | 19199521 | 2 days ago | IN | 0 frxETH | 0.00000033 | ||||
Deposit_and_stak... | 19196273 | 2 days ago | IN | 0 frxETH | 0.00000035 | ||||
Deposit_and_stak... | 19194287 | 2 days ago | IN | 0 frxETH | 0.00000038 | ||||
Deposit_and_stak... | 19185761 | 2 days ago | IN | 0 frxETH | 0.00000042 | ||||
Deposit_and_stak... | 19177661 | 2 days ago | IN | 0 frxETH | 0 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CurveDeposit&StakeZap
Compiler Version
vyper:0.3.10
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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]}]
Contract Creation Code
61088461001161000039610884610000f35f3560e01c60026003820660011b61087e01601e395f51565b6354fd4d508118610878573461087a5760208060805260056040527f312e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f3610878565b6210d5a78118610878576101443610341761087a575f610340526100e456610878565b63c0c702dc8118610878576101643610341761087a57610104358060a01c61087a57610340525b6004358060a01c61087a576040526024358060a01c61087a576060526044358060a01c61087a57608052608435600401600981351161087a5780355f816009811161087a57801561015657905b8060051b6020850101358060a01c61087a578160051b60c00152600101818118610131575b50508060a052505060a435600401600981351161087a57803560208160051b0180836101e03750505060e4358060011c61087a57610320525f5460021461087a5760025f556002606435101561020b576013610360527f6e5f636f696e73206d757374206265203e3d32000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6009606435111561027b57601b610360527f6e5f636f696e73206d757374206265203c3d4d41585f434f494e5300000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b5f6009905b80610360526064356103605118610296576103bb565b610360516101e05181101561087a5760051b61020001516102b857600161030c565b6103605160a05181101561087a5760051b60c0015163dd62ed3e61038052306103a0526040516103c0526020610380604461039c845afa6102fb573d5f5f3e3d5ffd5b60203d1061087a5761038090505115155b15610316576103b0565b6103605160a05181101561087a5760051b60c0015163095ea7b3610380526040516103a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103c0526020610380604461039c5f855af161037a573d5f5f3e3d5ffd5b3d61039157803b1561087a5760016103e0526103aa565b60203d1061087a57610380518060011c61087a576103e0525b6103e050505b600101818118610280575b505060605163dd62ed3e6103605230610380526080516103a0526020610360604461037c845afa6103ee573d5f5f3e3d5ffd5b60203d1061087a576103609050516104705760605163095ea7b36103c0526080516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104005260206103c060446103dc5f855af1610452573d5f5f3e3d5ffd5b60203d1061087a576103c0518060011c61087a576104205261042050505b5f6009905b8061036052606435610360511861048b5761054b565b610360516101e05181101561087a5760051b610200015115610540576103605160a05181101561087a5760051b60c001516323b872dd61038052336103a052306103c052610360516101e05181101561087a5760051b61020001516103e0526020610380606461039c5f855af1610504573d5f5f3e3d5ffd5b3d61051b57803b1561087a57600161040052610534565b60203d1061087a57610380518060011c61087a57610400525b6104009050511561087a575b600101818118610475575b505061034051156105f15760405163fd9de6316103605260606103405161038052806103a05280610380015f6101e0518083528060051b5f826009811161087a5780156105b257905b8060051b61020001518160051b602088010152600101818118610594575b5050820160200191505090508101905060c4356103c05250803b1561087a575f6103606101a461037c5f855af16105eb573d5f5f3e3d5ffd5b506107ee565b6103205161075f5760026064351861066b57604051630b4c7e4d610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260c4356103c052803b1561087a575f610360606461037c5f855af1610665573d5f5f3e3d5ffd5b506107ee565b6003606435186106f657604051634515cef3610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260036101e0511061087a57600260051b61020001516103c05260c4356103e052803b1561087a575f610360608461037c5f855af16106f0573d5f5f3e3d5ffd5b506107ee565b600f610360527f57726f6e6720617267756d656e747300000000000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd6107ee565b60405163b72df5de610360526040806103805280610380015f6101e0518083528060051b5f826009811161087a5780156107b357905b8060051b61020001518160051b602088010152600101818118610795575b5050820160200191505090508101905060c4356103a05250803b1561087a575f61036061018461037c5f855af16107ec573d5f5f3e3d5ffd5b505b6060516370a0823161038052306103a0526020610380602461039c845afa610818573d5f5f3e3d5ffd5b60203d1061087a5761038090505161036052610360511561087a57608051636e553f6561038052610360516103a052336103c052803b1561087a575f610380604461039c5f855af161086c573d5f5f3e3d5ffd5b50602061036060035f55f35b005b5f80fd009a00bd001884190884810600a16576797065728300030a0014
Deployed Bytecode
0x5f3560e01c60026003820660011b61087e01601e395f51565b6354fd4d508118610878573461087a5760208060805260056040527f312e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f3610878565b6210d5a78118610878576101443610341761087a575f610340526100e456610878565b63c0c702dc8118610878576101643610341761087a57610104358060a01c61087a57610340525b6004358060a01c61087a576040526024358060a01c61087a576060526044358060a01c61087a57608052608435600401600981351161087a5780355f816009811161087a57801561015657905b8060051b6020850101358060a01c61087a578160051b60c00152600101818118610131575b50508060a052505060a435600401600981351161087a57803560208160051b0180836101e03750505060e4358060011c61087a57610320525f5460021461087a5760025f556002606435101561020b576013610360527f6e5f636f696e73206d757374206265203e3d32000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b6009606435111561027b57601b610360527f6e5f636f696e73206d757374206265203c3d4d41585f434f494e5300000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd5b5f6009905b80610360526064356103605118610296576103bb565b610360516101e05181101561087a5760051b61020001516102b857600161030c565b6103605160a05181101561087a5760051b60c0015163dd62ed3e61038052306103a0526040516103c0526020610380604461039c845afa6102fb573d5f5f3e3d5ffd5b60203d1061087a5761038090505115155b15610316576103b0565b6103605160a05181101561087a5760051b60c0015163095ea7b3610380526040516103a0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103c0526020610380604461039c5f855af161037a573d5f5f3e3d5ffd5b3d61039157803b1561087a5760016103e0526103aa565b60203d1061087a57610380518060011c61087a576103e0525b6103e050505b600101818118610280575b505060605163dd62ed3e6103605230610380526080516103a0526020610360604461037c845afa6103ee573d5f5f3e3d5ffd5b60203d1061087a576103609050516104705760605163095ea7b36103c0526080516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104005260206103c060446103dc5f855af1610452573d5f5f3e3d5ffd5b60203d1061087a576103c0518060011c61087a576104205261042050505b5f6009905b8061036052606435610360511861048b5761054b565b610360516101e05181101561087a5760051b610200015115610540576103605160a05181101561087a5760051b60c001516323b872dd61038052336103a052306103c052610360516101e05181101561087a5760051b61020001516103e0526020610380606461039c5f855af1610504573d5f5f3e3d5ffd5b3d61051b57803b1561087a57600161040052610534565b60203d1061087a57610380518060011c61087a57610400525b6104009050511561087a575b600101818118610475575b505061034051156105f15760405163fd9de6316103605260606103405161038052806103a05280610380015f6101e0518083528060051b5f826009811161087a5780156105b257905b8060051b61020001518160051b602088010152600101818118610594575b5050820160200191505090508101905060c4356103c05250803b1561087a575f6103606101a461037c5f855af16105eb573d5f5f3e3d5ffd5b506107ee565b6103205161075f5760026064351861066b57604051630b4c7e4d610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260c4356103c052803b1561087a575f610360606461037c5f855af1610665573d5f5f3e3d5ffd5b506107ee565b6003606435186106f657604051634515cef3610360526101e0511561087a575f60051b61020001516103805260026101e0511061087a57600160051b61020001516103a05260036101e0511061087a57600260051b61020001516103c05260c4356103e052803b1561087a575f610360608461037c5f855af16106f0573d5f5f3e3d5ffd5b506107ee565b600f610360527f57726f6e6720617267756d656e747300000000000000000000000000000000006103805261036050610360518061038001601f825f031636823750506308c379a061032052602061034052601f19601f61036051011660440161033cfd6107ee565b60405163b72df5de610360526040806103805280610380015f6101e0518083528060051b5f826009811161087a5780156107b357905b8060051b61020001518160051b602088010152600101818118610795575b5050820160200191505090508101905060c4356103a05250803b1561087a575f61036061018461037c5f855af16107ec573d5f5f3e3d5ffd5b505b6060516370a0823161038052306103a0526020610380602461039c845afa610818573d5f5f3e3d5ffd5b60203d1061087a5761038090505161036052610360511561087a57608051636e553f6561038052610360516103a052336103c052803b1561087a575f610380604461039c5f855af161086c573d5f5f3e3d5ffd5b50602061036060035f55f35b005b5f80fd009a00bd0018
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Loading...
Loading
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.