Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Price_w | 17906494 | 885 days ago | IN | 0 ETH | 0.00321099 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CryptoWithStablePriceTBTC
Compiler Version
vyper:0.3.9
Contract Source Code (Vyper language format)
# @version 0.3.9
"""
@title CryptoWithStablePriceTBTC
@notice Price oracle for tricryptoLLAMA for crvUSD. Optional Chainlink included
@author Curve.Fi
@license MIT
"""
# Tricrypto-ng
interface Tricrypto:
def price_oracle(k: uint256) -> uint256: view
def coins(i: uint256) -> address: view
def totalSupply() -> uint256: view
def virtual_price() -> uint256: view
interface StableAggregator:
def price() -> uint256: view
def price_w() -> uint256: nonpayable
def stablecoin() -> address: view
interface ControllerFactory:
def admin() -> address: view
struct ChainlinkAnswer:
round_id: uint80
answer: int256
started_at: uint256
updated_at: uint256
answered_in_round: uint80
interface ChainlinkAggregator:
def latestRoundData() -> ChainlinkAnswer: view
def decimals() -> uint8: view
TRICRYPTO: public(immutable(Tricrypto))
TRICRYPTO_IX: public(immutable(uint256))
STABLESWAP_AGGREGATOR: public(immutable(StableAggregator))
STABLECOIN: public(immutable(address))
FACTORY: public(immutable(ControllerFactory))
CHAINLINK_AGGREGATOR_BTC: immutable(ChainlinkAggregator)
CHAINLINK_PRICE_PRECISION_BTC: immutable(uint256)
CHAINLINK_STALE_THRESHOLD: constant(uint256) = 86400
BOUND_SIZE: public(immutable(uint256))
use_chainlink: public(bool)
@external
def __init__(
tricrypto: Tricrypto,
ix: uint256, # 0 = TBTC
stable_aggregator: StableAggregator,
factory: ControllerFactory,
chainlink_aggregator_btc: ChainlinkAggregator,
bound_size: uint256 # 1.5% sounds ok before we turn it off
):
TRICRYPTO = tricrypto
TRICRYPTO_IX = ix
STABLESWAP_AGGREGATOR = stable_aggregator
FACTORY = factory
_stablecoin: address = stable_aggregator.stablecoin()
STABLECOIN = _stablecoin
assert tricrypto.coins(0) == _stablecoin # First coin is crvUSD
self.use_chainlink = True
CHAINLINK_AGGREGATOR_BTC = chainlink_aggregator_btc
CHAINLINK_PRICE_PRECISION_BTC = 10**convert(chainlink_aggregator_btc.decimals(), uint256)
BOUND_SIZE = bound_size
@internal
@view
def _raw_price(agg_price: uint256) -> uint256:
p_crypto_stable: uint256 = TRICRYPTO.price_oracle(TRICRYPTO_IX) # d_crvusd/d_tbtc
p_stable_agg: uint256 = agg_price # d_usd/d_crvusd
price: uint256 = p_crypto_stable * p_stable_agg / 10**18 # d_usd/d_btc
# Limit BTC price
if self.use_chainlink:
chainlink_lrd: ChainlinkAnswer = CHAINLINK_AGGREGATOR_BTC.latestRoundData()
if block.timestamp - min(chainlink_lrd.updated_at, block.timestamp) <= CHAINLINK_STALE_THRESHOLD:
chainlink_p: uint256 = convert(chainlink_lrd.answer, uint256) * 10**18 / CHAINLINK_PRICE_PRECISION_BTC
lower: uint256 = chainlink_p * (10**18 - BOUND_SIZE) / 10**18
upper: uint256 = chainlink_p * (10**18 + BOUND_SIZE) / 10**18
price = min(max(price, lower), upper)
return price
@external
@view
def raw_price() -> uint256:
return self._raw_price(STABLESWAP_AGGREGATOR.price())
@external
@view
def price() -> uint256:
return self._raw_price(STABLESWAP_AGGREGATOR.price())
@external
def price_w() -> uint256:
return self._raw_price(STABLESWAP_AGGREGATOR.price_w())
@external
def set_use_chainlink(do_it: bool):
assert msg.sender == FACTORY.admin()
self.use_chainlink = do_itContract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"tricrypto","type":"address"},{"name":"ix","type":"uint256"},{"name":"stable_aggregator","type":"address"},{"name":"factory","type":"address"},{"name":"chainlink_aggregator_btc","type":"address"},{"name":"bound_size","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"raw_price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"price_w","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_use_chainlink","inputs":[{"name":"do_it","type":"bool"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"TRICRYPTO","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"TRICRYPTO_IX","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"STABLESWAP_AGGREGATOR","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"STABLECOIN","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"BOUND_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"use_chainlink","inputs":[],"outputs":[{"name":"","type":"bool"}]}]Contract Creation Code
61059b5150602061064b5f395f518060a01c61064757604052602061068b5f395f518060a01c6106475760605260206106ab5f395f518060a01c6106475760805260206106cb5f395f518060a01c6106475760a05234610647576040516104bb52602061066b5f395f516104db526060516104fb5260805161053b5260605163e9cbd82260e052602060e0600460fc845afa61009d573d5f5f3e3d5ffd5b60203d106106475760e0518060a01c610647576101205261012090505160c05260c05161051b5260c05160405163c661065760e0525f61010052602060e0602460fc845afa6100ee573d5f5f3e3d5ffd5b60203d106106475760e0518060a01c6106475761012052610120905051186106475760015f5560a05161055b5260a05163313ce56760e052602060e0600460fc845afa61013d573d5f5f3e3d5ffd5b60203d106106475760e0518060081c6106475761012052610120905051604d81116106475780600a0a905061057b5260206106eb5f395f5161059b526104bb61018b610000396105bb610000f36003361161000c57610259565b5f3560e01c346104aa576325069aca81186100335760206104bb5f395f5160405260206040f35b63eca7e86281186100505760206104db5f395f5160405260206040f35b63c959a716811861006d5760206104fb5f395f5160405260206040f35b6393a39776811861008a57602061051b5f395f5160405260206040f35b632dd3100081186100a757602061053b5f395f5160405260206040f35b63c19e2b7081186100c457602061059b5f395f5160405260206040f35b63f4e1ae6281186100da575f5460405260206040f35b63672485c1811861013357602060206104fb5f395f5163a035b1fe6102c05260206102c060046102dc845afa610112573d5f5f3e3d5ffd5b60203d106104aa576102c090505160405261012e61030061025d565b610300f35b63a035b1fe811861018c57602060206104fb5f395f5163a035b1fe6102c05260206102c060046102dc845afa61016b573d5f5f3e3d5ffd5b60203d106104aa576102c090505160405261018761030061025d565b610300f35b63ceb7f75981186101e657602060206104fb5f395f5163ceb7f7596102c05260206102c060046102dc5f855af16101c5573d5f5f3e3d5ffd5b60203d106104aa576102c09050516040526101e161030061025d565b610300f35b634f5002fa811861025757602436106104aa576004358060011c6104aa57604052602061053b5f395f5163f851a440606052602060606004607c845afa61022f573d5f5f3e3d5ffd5b60203d106104aa576060518060a01c6104aa5760a05260a090505133186104aa576040515f55005b505b5f5ffd5b60206104bb5f395f51636872765360805260206104db5f395f5160a052602060806024609c845afa610291573d5f5f3e3d5ffd5b60203d106104aa5760809050516060526040516080526060516080518082028115838383041417156104aa5790509050670de0b6b3a76400008104905060a0525f54156104a257602061055b5f395f5163feaf968c6101605260a0610160600461017c845afa610303573d5f5f3e3d5ffd5b60a03d106104aa57610160518060501c6104aa576102205261018051610240526101a051610260526101c051610280526101e0518060501c6104aa576102a0526102209050805160c052602081015160e0526040810151610100526060810151610120526080810151610140525062015180426101205142808281188284100218905090508082038281116104aa5790509050116104a25760e0515f81126104aa57670de0b6b3a7640000810281670de0b6b3a76400008204186104aa579050602061057b5f395f5180156104aa57808204905090506101605261016051602061059b5f395f5180670de0b6b3a764000003670de0b6b3a764000081116104aa5790508082028115838383041417156104aa5790509050670de0b6b3a7640000810490506101805261016051602061059b5f395f5180670de0b6b3a764000001670de0b6b3a764000081106104aa5790508082028115838383041417156104aa5790509050670de0b6b3a7640000810490506101a05260a05161018051808281188284110218905090506101a0518082811882841002189050905060a0525b60a051815250565b5f80fda165767970657283000309000b005b5f80fd0000000000000000000000002889302a794da87fbf1d6db415c1492194663d13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018672b1b0c623a30089a280ed9256379fb0e4e62000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c00000000000000000000000000000000000000000000000000354a6ba7a18000
Deployed Bytecode
0x6003361161000c57610259565b5f3560e01c346104aa576325069aca81186100335760206104bb5f395f5160405260206040f35b63eca7e86281186100505760206104db5f395f5160405260206040f35b63c959a716811861006d5760206104fb5f395f5160405260206040f35b6393a39776811861008a57602061051b5f395f5160405260206040f35b632dd3100081186100a757602061053b5f395f5160405260206040f35b63c19e2b7081186100c457602061059b5f395f5160405260206040f35b63f4e1ae6281186100da575f5460405260206040f35b63672485c1811861013357602060206104fb5f395f5163a035b1fe6102c05260206102c060046102dc845afa610112573d5f5f3e3d5ffd5b60203d106104aa576102c090505160405261012e61030061025d565b610300f35b63a035b1fe811861018c57602060206104fb5f395f5163a035b1fe6102c05260206102c060046102dc845afa61016b573d5f5f3e3d5ffd5b60203d106104aa576102c090505160405261018761030061025d565b610300f35b63ceb7f75981186101e657602060206104fb5f395f5163ceb7f7596102c05260206102c060046102dc5f855af16101c5573d5f5f3e3d5ffd5b60203d106104aa576102c09050516040526101e161030061025d565b610300f35b634f5002fa811861025757602436106104aa576004358060011c6104aa57604052602061053b5f395f5163f851a440606052602060606004607c845afa61022f573d5f5f3e3d5ffd5b60203d106104aa576060518060a01c6104aa5760a05260a090505133186104aa576040515f55005b505b5f5ffd5b60206104bb5f395f51636872765360805260206104db5f395f5160a052602060806024609c845afa610291573d5f5f3e3d5ffd5b60203d106104aa5760809050516060526040516080526060516080518082028115838383041417156104aa5790509050670de0b6b3a76400008104905060a0525f54156104a257602061055b5f395f5163feaf968c6101605260a0610160600461017c845afa610303573d5f5f3e3d5ffd5b60a03d106104aa57610160518060501c6104aa576102205261018051610240526101a051610260526101c051610280526101e0518060501c6104aa576102a0526102209050805160c052602081015160e0526040810151610100526060810151610120526080810151610140525062015180426101205142808281188284100218905090508082038281116104aa5790509050116104a25760e0515f81126104aa57670de0b6b3a7640000810281670de0b6b3a76400008204186104aa579050602061057b5f395f5180156104aa57808204905090506101605261016051602061059b5f395f5180670de0b6b3a764000003670de0b6b3a764000081116104aa5790508082028115838383041417156104aa5790509050670de0b6b3a7640000810490506101805261016051602061059b5f395f5180670de0b6b3a764000001670de0b6b3a764000081106104aa5790508082028115838383041417156104aa5790509050670de0b6b3a7640000810490506101a05260a05161018051808281188284110218905090506101a0518082811882841002189050905060a0525b60a051815250565b5f80fda165767970657283000309000b0000000000000000000000002889302a794da87fbf1d6db415c1492194663d13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018672b1b0c623a30089a280ed9256379fb0e4e62000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000354a6ba7a18000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002889302a794da87fbf1d6db415c1492194663d13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018672b1b0c623a30089a280ed9256379fb0e4e62000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c00000000000000000000000000000000000000000000000000354a6ba7a18000
-----Decoded View---------------
Arg [0] : tricrypto (address): 0x2889302a794dA87fBF1D6Db415C1492194663D13
Arg [1] : ix (uint256): 0
Arg [2] : stable_aggregator (address): 0x18672b1b0c623a30089A280Ed9256379fb0E4E62
Arg [3] : factory (address): 0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC
Arg [4] : chainlink_aggregator_btc (address): 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c
Arg [5] : bound_size (uint256): 15000000000000000
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000002889302a794da87fbf1d6db415c1492194663d13
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 00000000000000000000000018672b1b0c623a30089a280ed9256379fb0e4e62
Arg [3] : 000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc
Arg [4] : 000000000000000000000000f4030086522a5beea4988f8ca5b36dbc97bee88c
Arg [5] : 00000000000000000000000000000000000000000000000000354a6ba7a18000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
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.