Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x61010060 | 17264809 | 552 days ago | IN | 0 ETH | 0.01891053 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CLSynchronicityPriceAdapterPegToBase
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import {IChainlinkAggregator} from '../interfaces/IChainlinkAggregator.sol'; import {ICLSynchronicityPriceAdapter} from '../interfaces/ICLSynchronicityPriceAdapter.sol'; /** * @title CLSynchronicityPriceAdapter * @author BGD Labs * @notice Price adapter to calculate price of (Asset / Base) pair by using * @notice Chainlink Data Feeds for (Asset / Peg) and (Peg / Base) pairs. * @notice For example it can be used to calculate stETH / USD * @notice based on stETH / ETH and ETH / USD feeds. */ contract CLSynchronicityPriceAdapterPegToBase is ICLSynchronicityPriceAdapter { /** * @notice Price feed for (Base / Peg) pair */ IChainlinkAggregator public immutable PEG_TO_BASE; /** * @notice Price feed for (Asset / Peg) pair */ IChainlinkAggregator public immutable ASSET_TO_PEG; /** * @notice Number of decimals in the output of this price adapter */ uint8 public immutable DECIMALS; /** * @notice This is a parameter to bring the resulting answer with the proper precision. * @notice will be equal to 10 to the power of the sum decimals of feeds */ int256 public immutable DENOMINATOR; /** * @notice Maximum number of resulting and feed decimals */ uint8 public constant MAX_DECIMALS = 18; string private _description; /** * @param pegToBaseAggregatorAddress the address of PEG / BASE feed * @param assetToPegAggregatorAddress the address of the ASSET / PEG feed * @param decimals precision of the answer * @param pairDescription description */ constructor( address pegToBaseAggregatorAddress, address assetToPegAggregatorAddress, uint8 decimals, string memory pairDescription ) { PEG_TO_BASE = IChainlinkAggregator(pegToBaseAggregatorAddress); ASSET_TO_PEG = IChainlinkAggregator(assetToPegAggregatorAddress); if (decimals > MAX_DECIMALS) revert DecimalsAboveLimit(); if (PEG_TO_BASE.decimals() > MAX_DECIMALS) revert DecimalsAboveLimit(); if (ASSET_TO_PEG.decimals() > MAX_DECIMALS) revert DecimalsAboveLimit(); DECIMALS = decimals; _description = pairDescription; // equal to 10 to the power of the sum decimals of feeds unchecked { DENOMINATOR = int256(10 ** (PEG_TO_BASE.decimals() + ASSET_TO_PEG.decimals())); } } /// @inheritdoc ICLSynchronicityPriceAdapter function description() external view returns (string memory) { return _description; } /// @inheritdoc ICLSynchronicityPriceAdapter function decimals() external view returns (uint8) { return DECIMALS; } /// @inheritdoc ICLSynchronicityPriceAdapter function latestAnswer() public view virtual override returns (int256) { int256 assetToPegPrice = ASSET_TO_PEG.latestAnswer(); int256 pegToBasePrice = PEG_TO_BASE.latestAnswer(); if (assetToPegPrice <= 0 || pegToBasePrice <= 0) { return 0; } return (assetToPegPrice * pegToBasePrice * int256(10 ** DECIMALS)) / (DENOMINATOR); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface ICLSynchronicityPriceAdapter { /** * @notice Calculates the current answer based on the aggregators. * @return int256 latestAnswer */ function latestAnswer() external view returns (int256); /** * @notice Returns the description of the feed * @return string desciption */ function description() external view returns (string memory); /** * @notice Returns the feed decimals * @return uint8 decimals */ function decimals() external view returns (uint8); error DecimalsAboveLimit(); error DecimalsNotEqual(); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IChainlinkAggregator { function decimals() external view returns (uint8); function latestAnswer() external view returns (int256); function latestTimestamp() external view returns (uint256); function latestRound() external view returns (uint256); function getAnswer(uint256 roundId) external view returns (int256); function getTimestamp(uint256 roundId) external view returns (uint256); event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 timestamp); event NewRound(uint256 indexed roundId, address indexed startedBy); }
{ "remappings": [ "aave-address-book/=lib/aave-address-book/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"pegToBaseAggregatorAddress","type":"address"},{"internalType":"address","name":"assetToPegAggregatorAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"string","name":"pairDescription","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DecimalsAboveLimit","type":"error"},{"inputs":[],"name":"DecimalsNotEqual","type":"error"},{"inputs":[],"name":"ASSET_TO_PEG","outputs":[{"internalType":"contract IChainlinkAggregator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DENOMINATOR","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PEG_TO_BASE","outputs":[{"internalType":"contract IChainlinkAggregator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b5060405162000be738038062000be78339810160408190526200003591620002ca565b6001600160a01b03808516608052831660a052601260ff831611156200006e57604051638fdc971960e01b815260040160405180910390fd5b601260ff166080516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000da9190620003d7565b60ff161115620000fd57604051638fdc971960e01b815260040160405180910390fd5b601260ff1660a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620003d7565b60ff1611156200018c57604051638fdc971960e01b815260040160405180910390fd5b60ff821660c0526000620001a182826200048b565b5060a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002099190620003d7565b6080516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002709190620003d7565b0160ff16600a0a60e052506200055792505050565b80516001600160a01b03811681146200029d57600080fd5b919050565b805160ff811681146200029d57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215620002e157600080fd5b620002ec8562000285565b93506020620002fd81870162000285565b93506200030d60408701620002a2565b60608701519093506001600160401b03808211156200032b57600080fd5b818801915088601f8301126200034057600080fd5b815181811115620003555762000355620002b4565b604051601f8201601f19908116603f01168101908382118183101715620003805762000380620002b4565b816040528281528b868487010111156200039957600080fd5b600093505b82841015620003bd57848401860151818501870152928501926200039e565b600086848301015280965050505050505092959194509250565b600060208284031215620003ea57600080fd5b620003f582620002a2565b9392505050565b600181811c908216806200041157607f821691505b6020821081036200043257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048657600081815260208120601f850160051c81016020861015620004615750805b601f850160051c820191505b8181101562000482578281556001016200046d565b5050505b505050565b81516001600160401b03811115620004a757620004a7620002b4565b620004bf81620004b88454620003fc565b8462000438565b602080601f831160018114620004f75760008415620004de5750858301515b600019600386901b1c1916600185901b17855562000482565b600085815260208120601f198616915b82811015620005285788860151825594840194600190910190840162000507565b5085821015620005475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610635620005b26000396000818161016801526102df01526000818160b10152818160d5015261030301526000818161012901526101b601526000818161018f015261023c01526106356000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637284e4161161005b5780637284e4161461010f578063910bb70c14610124578063918f867414610163578063de4aedab1461018a57600080fd5b80630417cf8e1461008d5780632e0f2625146100ac578063313ce567146100d357806350d25bcd146100f9575b600080fd5b610095601281565b60405160ff90911681526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610095565b6101016101b1565b6040519081526020016100a3565b61011761034e565b6040516100a391906103e0565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a3565b6101017f000000000000000000000000000000000000000000000000000000000000000081565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610236919061042e565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061042e565b90506000821315806102cf575060008113155b156102dd5760009250505090565b7f00000000000000000000000000000000000000000000000000000000000000006103297f0000000000000000000000000000000000000000000000000000000000000000600a610543565b6103338385610559565b61033d9190610559565b6103479190610589565b9250505090565b60606000805461035d906105c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610389906105c5565b80156103d65780601f106103ab576101008083540402835291602001916103d6565b820191906000526020600020905b8154815290600101906020018083116103b957829003601f168201915b5050505050905090565b600060208083528351808285015260005b8181101561040d578581018301518582016040015282016103f1565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561044057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561049857816000190482111561047e5761047e610447565b8085161561048b57918102915b93841c9390800290610462565b509250929050565b6000826104af5750600161053d565b816104bc5750600061053d565b81600181146104d257600281146104dc576104f8565b600191505061053d565b60ff8411156104ed576104ed610447565b50506001821b61053d565b5060208310610133831016604e8410600b841016171561051b575081810a61053d565b610525838361045d565b806000190482111561053957610539610447565b0290505b92915050565b600061055260ff8416836104a0565b9392505050565b80820260008212600160ff1b8414161561057557610575610447565b818105831482151761053d5761053d610447565b6000826105a657634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156105c0576105c0610447565b500590565b600181811c908216806105d957607f821691505b6020821081036105f957634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122050a4f9c9e3211e493d76c09148e4ec96d95c5508326cfd0bb73fc31e547968cb64736f6c63430008110033000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e8000000000000000000000000fdfd9c85ad200c506cf9e21f1fd8dd01932fbb2300000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c774254432f4254432f4554480000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637284e4161161005b5780637284e4161461010f578063910bb70c14610124578063918f867414610163578063de4aedab1461018a57600080fd5b80630417cf8e1461008d5780632e0f2625146100ac578063313ce567146100d357806350d25bcd146100f9575b600080fd5b610095601281565b60405160ff90911681526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000001281565b7f0000000000000000000000000000000000000000000000000000000000000012610095565b6101016101b1565b6040519081526020016100a3565b61011761034e565b6040516100a391906103e0565b61014b7f000000000000000000000000fdfd9c85ad200c506cf9e21f1fd8dd01932fbb2381565b6040516001600160a01b0390911681526020016100a3565b6101017f00000000000000000000000000000000000000000052b7d2dcc80cd2e400000081565b61014b7f000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e881565b6000807f000000000000000000000000fdfd9c85ad200c506cf9e21f1fd8dd01932fbb236001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610212573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610236919061042e565b905060007f000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e86001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bc919061042e565b90506000821315806102cf575060008113155b156102dd5760009250505090565b7f00000000000000000000000000000000000000000052b7d2dcc80cd2e40000006103297f0000000000000000000000000000000000000000000000000000000000000012600a610543565b6103338385610559565b61033d9190610559565b6103479190610589565b9250505090565b60606000805461035d906105c5565b80601f0160208091040260200160405190810160405280929190818152602001828054610389906105c5565b80156103d65780601f106103ab576101008083540402835291602001916103d6565b820191906000526020600020905b8154815290600101906020018083116103b957829003601f168201915b5050505050905090565b600060208083528351808285015260005b8181101561040d578581018301518582016040015282016103f1565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561044057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561049857816000190482111561047e5761047e610447565b8085161561048b57918102915b93841c9390800290610462565b509250929050565b6000826104af5750600161053d565b816104bc5750600061053d565b81600181146104d257600281146104dc576104f8565b600191505061053d565b60ff8411156104ed576104ed610447565b50506001821b61053d565b5060208310610133831016604e8410600b841016171561051b575081810a61053d565b610525838361045d565b806000190482111561053957610539610447565b0290505b92915050565b600061055260ff8416836104a0565b9392505050565b80820260008212600160ff1b8414161561057557610575610447565b818105831482151761053d5761053d610447565b6000826105a657634e487b7160e01b600052601260045260246000fd5b600160ff1b8214600019841416156105c0576105c0610447565b500590565b600181811c908216806105d957607f821691505b6020821081036105f957634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122050a4f9c9e3211e493d76c09148e4ec96d95c5508326cfd0bb73fc31e547968cb64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e8000000000000000000000000fdfd9c85ad200c506cf9e21f1fd8dd01932fbb2300000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c774254432f4254432f4554480000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : pegToBaseAggregatorAddress (address): 0xdeb288F737066589598e9214E782fa5A8eD689e8
Arg [1] : assetToPegAggregatorAddress (address): 0xfdFD9C85aD200c506Cf9e21F1FD8dd01932FBB23
Arg [2] : decimals (uint8): 18
Arg [3] : pairDescription (string): wBTC/BTC/ETH
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e8
Arg [1] : 000000000000000000000000fdfd9c85ad200c506cf9e21f1fd8dd01932fbb23
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [5] : 774254432f4254432f4554480000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.