Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x1cB453F8...88dC088Be The constructor portion of the code might be different and could alter the actual behaviour of the contract
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
0x6080604052348015600e575f5ffd5b50604051610264380380610264833981016040819052602b916085565b5f80546001600160a01b039485166001600160a01b03199182161790915560018054938516938216939093179092556002805491909316911617905560be565b80516001600160a01b03811681146080575f5ffd5b919050565b5f5f5f606084860312156096575f5ffd5b609d84606b565b925060a960208501606b565b915060b560408501606b565b90509250925092565b610199806100cb5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806368df23951461004e578063741bef1a1461007e578063a035b1fe14610090578063d15b03a8146100a6575b5f5ffd5b600254610061906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f54610061906001600160a01b031681565b6100986100b9565b604051908152602001610075565b600154610061906001600160a01b031681565b5f80546001546002546040516379ae612760e11b81526001600160a01b03928316600482015290821660248201526ec097ce7bc90715b34b9f1000000000604482015291169063f35cc24e90606401602060405180830381865afa158015610123573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610147919061014c565b905090565b5f6020828403121561015c575f5ffd5b505191905056fea26469706673582212200ddb3e4326de0115faec1e7308f67dfd13d5e392e19143873a700d187fe48f6264736f6c634300081c0033000000000000000000000000aaab71749b1f7ade61ea58555763f49c916a140e000000000000000000000000297612c171fc8adce32ac333085a9ee1f2bcc1da000000000000000000000000cd6863bb697d7cee5b7ed8dea7d803374f7e4aa6
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806368df23951461004e578063741bef1a1461007e578063a035b1fe14610090578063d15b03a8146100a6575b5f5ffd5b600254610061906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b5f54610061906001600160a01b031681565b6100986100b9565b604051908152602001610075565b600154610061906001600160a01b031681565b5f80546001546002546040516379ae612760e11b81526001600160a01b03928316600482015290821660248201526ec097ce7bc90715b34b9f1000000000604482015291169063f35cc24e90606401602060405180830381865afa158015610123573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610147919061014c565b905090565b5f6020828403121561015c575f5ffd5b505191905056fea26469706673582212200ddb3e4326de0115faec1e7308f67dfd13d5e392e19143873a700d187fe48f6264736f6c634300081c0033
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.