Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
AvKATMorphoPriceFeedOracle
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 50 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.28;
import { IOracle } from "@morpho-blue/src/interfaces/IOracle.sol";
import { IPriceFeed } from "../../../interfaces/shared/IPriceFeed.sol";
contract AvKATMorphoPriceFeedOracle is IOracle {
IPriceFeed public priceFeed;
address public avKAT;
address public KAT;
constructor(address _priceFeed, address _avKAT, address _KAT) {
priceFeed = IPriceFeed(_priceFeed);
avKAT = _avKAT;
KAT = _KAT;
}
function price() external view override returns (uint256) {
return priceFeed.convertTokenBalance(avKAT, KAT, 1e36);
}
}// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title IOracle /// @author Morpho Labs /// @custom:contact [email protected] /// @notice Interface that oracles used by Morpho must implement. /// @dev It is the user's responsibility to select markets with safe oracles. interface IOracle { /// @notice Returns the price of 1 asset of collateral token quoted in 1 asset of loan token, scaled by 1e36. /// @dev It corresponds to the price of 10**(collateral token decimals) assets of collateral token quoted in /// 10**(loan token decimals) assets of loan token with `36 + loan token decimals - collateral token decimals` /// decimals of precision. function price() external view returns (uint256); }
// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.28;
abstract contract IPriceFeed {
error TokenPairMissing();
// Gets token price in USD (WAD)
function _getTokenBalanceInUSD(address src, uint256 value) internal view virtual returns (uint256);
// Converts token src to token dst
function _convertTokenBalance(address src, address dst, uint256 value) internal view virtual returns (uint256) {
if (src == dst || value == 0) return value;
revert TokenPairMissing();
}
function getTokenBalanceInUSD(address src, uint256 value) external view returns (uint256) {
return _getTokenBalanceInUSD(src, value);
}
// Converts token src to token dst
function convertTokenBalance(address src, address dst, uint256 value) external view returns (uint256) {
return _convertTokenBalance(src, dst, value);
}
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@spectra-core/src/=lib/spectra-core/src/",
"@pythnetwork/pyth-sdk-solidity/=node_modules/@pythnetwork/pyth-sdk-solidity/",
"hardhat/=node_modules/hardhat/",
"@morpho-blue/=lib/morpho-blue/",
"ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"morpho-blue/=lib/morpho-blue/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin-erc20-basic/=lib/spectra-core/lib/openzeppelin-contracts/contracts/token/ERC20/",
"openzeppelin-erc20-extensions/=lib/spectra-core/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/",
"openzeppelin-erc20/=lib/spectra-core/lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/",
"openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
"openzeppelin-math/=lib/spectra-core/lib/openzeppelin-contracts/contracts/utils/math/",
"openzeppelin-proxy/=lib/spectra-core/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/",
"openzeppelin-utils/=lib/spectra-core/lib/openzeppelin-contracts/contracts/utils/",
"solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/",
"spectra-core/=lib/spectra-core/",
"v3-core/=lib/v3-core/"
],
"optimizer": {
"enabled": true,
"runs": 50
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"address","name":"_avKAT","type":"address"},{"internalType":"address","name":"_KAT","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"KAT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"avKAT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052348015600e575f5ffd5b50604051610264380380610264833981016040819052602b916085565b5f80546001600160a01b039485166001600160a01b03199182161790915560018054938516938216939093179092556002805491909316911617905560be565b80516001600160a01b03811681146080575f5ffd5b919050565b5f5f5f606084860312156096575f5ffd5b609d84606b565b925060a960208501606b565b915060b560408501606b565b90509250925092565b610199806100cb5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806368df23951461004e578063741bef1a1461007e578063a035b1fe14610090578063d15b03a8146100a6575b5f5ffd5b600254610061906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f54610061906001600160a01b031681565b6100986100b9565b604051908152602001610075565b600154610061906001600160a01b031681565b5f80546001546002546040516379ae612760e11b81526001600160a01b03928316600482015290821660248201526ec097ce7bc90715b34b9f1000000000604482015291169063f35cc24e90606401602060405180830381865afa158015610123573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610147919061014c565b905090565b5f6020828403121561015c575f5ffd5b505191905056fea26469706673582212200ddb3e4326de0115faec1e7308f67dfd13d5e392e19143873a700d187fe48f6264736f6c634300081c0033000000000000000000000000ab162c41ad27df8614edd43f886857bb2054c23e000000000000000000000000297612c171fc8adce32ac333085a9ee1f2bcc1da000000000000000000000000cd6863bb697d7cee5b7ed8dea7d803374f7e4aa6
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806368df23951461004e578063741bef1a1461007e578063a035b1fe14610090578063d15b03a8146100a6575b5f5ffd5b600254610061906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f54610061906001600160a01b031681565b6100986100b9565b604051908152602001610075565b600154610061906001600160a01b031681565b5f80546001546002546040516379ae612760e11b81526001600160a01b03928316600482015290821660248201526ec097ce7bc90715b34b9f1000000000604482015291169063f35cc24e90606401602060405180830381865afa158015610123573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610147919061014c565b905090565b5f6020828403121561015c575f5ffd5b505191905056fea26469706673582212200ddb3e4326de0115faec1e7308f67dfd13d5e392e19143873a700d187fe48f6264736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ab162c41ad27df8614edd43f886857bb2054c23e000000000000000000000000297612c171fc8adce32ac333085a9ee1f2bcc1da000000000000000000000000cd6863bb697d7cee5b7ed8dea7d803374f7e4aa6
-----Decoded View---------------
Arg [0] : _priceFeed (address): 0xaB162c41Ad27DF8614eDd43F886857Bb2054C23e
Arg [1] : _avKAT (address): 0x297612c171fc8ADce32ac333085a9Ee1F2BCC1Da
Arg [2] : _KAT (address): 0xCD6863bB697d7CEE5b7Ed8deA7D803374F7e4Aa6
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ab162c41ad27df8614edd43f886857bb2054c23e
Arg [1] : 000000000000000000000000297612c171fc8adce32ac333085a9ee1f2bcc1da
Arg [2] : 000000000000000000000000cd6863bb697d7cee5b7ed8dea7d803374f7e4aa6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.