Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PendleSparkLinearDiscountOracle
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: SEE LICENSE IN LICENSE
pragma solidity ^0.8.19;
contract PendleSparkLinearDiscountOracle {
uint256 private constant SECONDS_PER_YEAR = 365 days;
uint256 private constant ONE = 1e18;
address public immutable PT;
uint256 public immutable maturity;
uint256 public immutable baseDiscountPerYear; // 100% = 1e18
constructor(address _pt, uint256 _baseDiscountPerYear) {
require(_baseDiscountPerYear <= 1e18, "invalid discount");
require(_pt != address(0), "zero address");
PT = _pt;
maturity = PTExpiry(PT).expiry();
baseDiscountPerYear = _baseDiscountPerYear;
}
function latestRoundData()
external
view
returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
{
uint256 timeLeft = (maturity > block.timestamp) ? maturity - block.timestamp : 0;
uint256 discount = getDiscount(timeLeft);
require(discount <= ONE, "discount overflow");
return (0, int256(ONE - discount), 0, 0, 0);
}
function decimals() external pure returns (uint8) {
return 18;
}
function getDiscount(uint256 timeLeft) public view returns (uint256) {
return (timeLeft * baseDiscountPerYear) / SECONDS_PER_YEAR;
}
}
interface PTExpiry {
function expiry() external view returns (uint256);
}{
"remappings": [
"forge-std/=lib/forge-std/src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pt","type":"address"},{"internalType":"uint256","name":"_baseDiscountPerYear","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"PT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseDiscountPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeLeft","type":"uint256"}],"name":"getDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maturity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60e060405234801561001057600080fd5b5060405161051538038061051583398101604081905261002f9161013e565b670de0b6b3a764000081111561007f5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a5908191a5cd8dbdd5b9d60821b60448201526064015b60405180910390fd5b6001600160a01b0382166100c45760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610076565b6001600160a01b0382166080819052604080516370c264df60e11b8152905163e184c9be916004808201926020929091908290030181865afa15801561010e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101329190610178565b60a05260c05250610191565b6000806040838503121561015157600080fd5b82516001600160a01b038116811461016857600080fd5b6020939093015192949293505050565b60006020828403121561018a57600080fd5b5051919050565b60805160a05160c0516103436101d26000396000818160c80152610174015260008181606c015281816101b501526101e60152600060ef01526103436000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063204f83f9146100675780632336dbe4146100a1578063313ce567146100b4578063598e5451146100c3578063d94073d4146100ea578063feaf968c14610129575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61008e6100af366004610292565b610168565b60405160128152602001610098565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6101117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610098565b6101316101a9565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610098565b60006301e133806101997f0000000000000000000000000000000000000000000000000000000000000000846102c1565b6101a391906102d8565b92915050565b600080600080600080427f0000000000000000000000000000000000000000000000000000000000000000116101e057600061020a565b61020a427f00000000000000000000000000000000000000000000000000000000000000006102fa565b9050600061021782610168565b9050670de0b6b3a76400008111156102695760405162461bcd60e51b8152602060048201526011602482015270646973636f756e74206f766572666c6f7760781b604482015260640160405180910390fd5b600061027d82670de0b6b3a76400006102fa565b90989097506000965086955085945092505050565b6000602082840312156102a457600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101a3576101a36102ab565b6000826102f557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101a3576101a36102ab56fea2646970667358221220488959df7a0ddcf0c122ac8f00f4134f683e54699397cddbd0e4f0fc15c7765564736f6c634300081300330000000000000000000000004d4062bad41e03b1cdee4c06263f96eb8183234100000000000000000000000000000000000000000000000002c68af0bb140000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063204f83f9146100675780632336dbe4146100a1578063313ce567146100b4578063598e5451146100c3578063d94073d4146100ea578063feaf968c14610129575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000006837a38081565b6040519081526020015b60405180910390f35b61008e6100af366004610292565b610168565b60405160128152602001610098565b61008e7f00000000000000000000000000000000000000000000000002c68af0bb14000081565b6101117f0000000000000000000000004d4062bad41e03b1cdee4c06263f96eb8183234181565b6040516001600160a01b039091168152602001610098565b6101316101a9565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610098565b60006301e133806101997f00000000000000000000000000000000000000000000000002c68af0bb140000846102c1565b6101a391906102d8565b92915050565b600080600080600080427f000000000000000000000000000000000000000000000000000000006837a380116101e057600061020a565b61020a427f000000000000000000000000000000000000000000000000000000006837a3806102fa565b9050600061021782610168565b9050670de0b6b3a76400008111156102695760405162461bcd60e51b8152602060048201526011602482015270646973636f756e74206f766572666c6f7760781b604482015260640160405180910390fd5b600061027d82670de0b6b3a76400006102fa565b90989097506000965086955085945092505050565b6000602082840312156102a457600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176101a3576101a36102ab565b6000826102f557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156101a3576101a36102ab56fea2646970667358221220488959df7a0ddcf0c122ac8f00f4134f683e54699397cddbd0e4f0fc15c7765564736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004d4062bad41e03b1cdee4c06263f96eb8183234100000000000000000000000000000000000000000000000002c68af0bb140000
-----Decoded View---------------
Arg [0] : _pt (address): 0x4D4062bAD41E03b1cdee4C06263F96EB81832341
Arg [1] : _baseDiscountPerYear (uint256): 200000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004d4062bad41e03b1cdee4c06263f96eb81832341
Arg [1] : 00000000000000000000000000000000000000000000000002c68af0bb140000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 33 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.