More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 251 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Collect Fees | 23942997 | 2 hrs ago | IN | 0 ETH | 0.00137939 | ||||
| Request Ether Fi... | 23940277 | 11 hrs ago | IN | 0 ETH | 0.00039258 | ||||
| Allocate | 23939838 | 13 hrs ago | IN | 0 ETH | 0.00328869 | ||||
| Request Ether Fi... | 23939398 | 14 hrs ago | IN | 0 ETH | 0.00038799 | ||||
| Allocate | 23939253 | 15 hrs ago | IN | 0 ETH | 0.00260279 | ||||
| Set Prices | 23937558 | 21 hrs ago | IN | 0 ETH | 0.00008153 | ||||
| Collect Fees | 23936236 | 26 hrs ago | IN | 0 ETH | 0.00134481 | ||||
| Allocate | 23931728 | 41 hrs ago | IN | 0 ETH | 0.00261219 | ||||
| Request Ether Fi... | 23931727 | 41 hrs ago | IN | 0 ETH | 0.00038926 | ||||
| Collect Fees | 23929139 | 2 days ago | IN | 0 ETH | 0.00135446 | ||||
| Set Prices | 23928724 | 2 days ago | IN | 0 ETH | 0.00008131 | ||||
| Allocate | 23927713 | 2 days ago | IN | 0 ETH | 0.00205565 | ||||
| Claim Ether Fi W... | 23927624 | 2 days ago | IN | 0 ETH | 0.00043096 | ||||
| Allocate | 23926674 | 2 days ago | IN | 0 ETH | 0.00416843 | ||||
| Request Ether Fi... | 23926674 | 2 days ago | IN | 0 ETH | 0.00059796 | ||||
| Collect Fees | 23921996 | 3 days ago | IN | 0 ETH | 0.00135233 | ||||
| Set Prices | 23921938 | 3 days ago | IN | 0 ETH | 0.00008149 | ||||
| Set Prices | 23918458 | 3 days ago | IN | 0 ETH | 0.00008159 | ||||
| Collect Fees | 23914849 | 4 days ago | IN | 0 ETH | 0.00136259 | ||||
| Collect Fees | 23907689 | 5 days ago | IN | 0 ETH | 0.0013529 | ||||
| Set Prices | 23906670 | 5 days ago | IN | 0 ETH | 0.00008209 | ||||
| Allocate | 23902086 | 5 days ago | IN | 0 ETH | 0.00206325 | ||||
| Set Prices | 23901998 | 5 days ago | IN | 0 ETH | 0.00008245 | ||||
| Claim Ether Fi W... | 23901996 | 5 days ago | IN | 0 ETH | 0.00033151 | ||||
| Collect Fees | 23900530 | 6 days ago | IN | 0 ETH | 0.00135967 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Deposit | 23927624 | 2 days ago | 19.63622721 ETH | ||||
| Transfer | 23927624 | 2 days ago | 8.52966629 ETH | ||||
| Transfer | 23927624 | 2 days ago | 11.10656092 ETH | ||||
| Deposit | 23901996 | 5 days ago | 15.23959845 ETH | ||||
| Transfer | 23901996 | 5 days ago | 15.23959845 ETH | ||||
| Deposit | 23884464 | 8 days ago | 7.7 ETH | ||||
| Transfer | 23884464 | 8 days ago | 7.7 ETH | ||||
| Deposit | 23876759 | 9 days ago | 106.00906374 ETH | ||||
| Transfer | 23876759 | 9 days ago | 14.93921539 ETH | ||||
| Transfer | 23876759 | 9 days ago | 7.29057044 ETH | ||||
| Transfer | 23876759 | 9 days ago | 14.86121283 ETH | ||||
| Transfer | 23876759 | 9 days ago | 7.6832793 ETH | ||||
| Transfer | 23876759 | 9 days ago | 7.10426268 ETH | ||||
| Transfer | 23876759 | 9 days ago | 5.79495917 ETH | ||||
| Transfer | 23876759 | 9 days ago | 7.71180602 ETH | ||||
| Transfer | 23876759 | 9 days ago | 8.07104102 ETH | ||||
| Transfer | 23876759 | 9 days ago | 4.67872173 ETH | ||||
| Transfer | 23876759 | 9 days ago | 7.78116055 ETH | ||||
| Transfer | 23876759 | 9 days ago | 15.59968325 ETH | ||||
| Transfer | 23876759 | 9 days ago | 4.49315132 ETH | ||||
| Deposit | 23815193 | 18 days ago | 28.7483378 ETH | ||||
| Transfer | 23815193 | 18 days ago | 9.56528559 ETH | ||||
| Transfer | 23815193 | 18 days ago | 9.89765595 ETH | ||||
| Transfer | 23815193 | 18 days ago | 9.28539625 ETH | ||||
| Deposit | 23811811 | 18 days ago | 11.09329201 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Proxy
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import {Ownable} from "./Ownable.sol";
/**
* @title Proxy
* @dev Based on Origin Protocol InitializeGovernedUpgradeabilityProxy
* https://github.com/OriginProtocol/origin-dollar/blob/master/contracts/contracts/proxies/InitializeGovernedUpgradeabilityProxy.sol
* @author Origin Protocol Inc
*/
contract Proxy is Ownable {
/**
* @notice Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
* validated in the constructor.
*/
bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/**
* @notice Emitted when the implementation is upgraded.
* @param implementation Address of the new implementation.
*/
event Upgraded(address indexed implementation);
/**
* @notice Contract initializer with Owner enforcement
* @param _logic Address of the initial implementation.
* @param _initOwner Address of the initial Owner.
* @param _data Data to send as msg.data to the implementation to initialize
* the proxied contract.
* It should include the signature and the parameters of the function to be
* called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
* This parameter is optional, if no data is given the initialization call
* to proxied contract will be skipped.
*/
function initialize(address _logic, address _initOwner, bytes calldata _data) public onlyOwner {
require(_implementation() == address(0));
assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
_upgradeTo(_logic);
if (_data.length > 0) {
(bool success,) = _logic.delegatecall(_data);
require(success);
}
_setOwner(_initOwner);
}
/**
* @notice The address of the proxy admin. This is also the contract owner.
*/
function admin() external view returns (address) {
return _owner();
}
/**
* @notice The address of the implementation contract.
*/
function implementation() external view returns (address) {
return _implementation();
}
/**
* @notice Upgrade the backing implementation of the proxy.
* Only the admin can call this function.
* @param newImplementation Address of the new implementation.
*/
function upgradeTo(address newImplementation) external onlyOwner {
_upgradeTo(newImplementation);
}
/**
* @notice Upgrade the backing implementation of the proxy and call a function
* on the new implementation.
* This is useful to initialize the proxied contract.
* @param newImplementation Address of the new implementation.
* @param data Data to send as msg.data in the low level call.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
*/
function upgradeToAndCall(address newImplementation, bytes calldata data) external onlyOwner {
_upgradeTo(newImplementation);
(bool success,) = newImplementation.delegatecall(data);
require(success);
}
/**
* @notice Fallback function.
* Implemented entirely in `_delegate`.
*/
fallback() external payable {
_delegate(_implementation());
}
/**
* @dev Delegates execution to an implementation contract.
* This is a low level function that doesn't return to its internal call site.
* It will return to the external caller whatever the implementation returns.
* @param _impl Address to delegate.
*/
function _delegate(address _impl) internal {
// solhint-disable-next-line no-inline-assembly
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), _impl, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
}
/**
* @dev Returns the current implementation.
* @return impl Address of the current implementation
*/
function _implementation() internal view returns (address impl) {
bytes32 slot = IMPLEMENTATION_SLOT;
// solhint-disable-next-line no-inline-assembly
assembly {
impl := sload(slot)
}
}
/**
* @dev Upgrades the proxy to a new implementation.
* @param newImplementation Address of the new implementation.
*/
function _upgradeTo(address newImplementation) internal {
require(newImplementation.code.length > 0, "Cannot set a proxy implementation to a non-contract address");
bytes32 slot = IMPLEMENTATION_SLOT;
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(slot, newImplementation)
}
emit Upgraded(newImplementation);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
/**
* @title Base contract that provides ownership control
* @author Origin Protocol Inc
*/
contract Ownable {
/// @notice The slot used to store the owner of the contract.
/// This is also used as the proxy admin.
/// keccak256(“eip1967.proxy.admin”) - 1 per EIP 1967
bytes32 internal constant OWNER_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
event AdminChanged(address previousAdmin, address newAdmin);
constructor() {
assert(OWNER_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
_setOwner(msg.sender);
}
/// @notice The contract owner and proxy admin.
function owner() public view returns (address) {
return _owner();
}
/// @notice Set the owner and proxy admin of the contract.
/// @param newOwner The address of the new owner.
function setOwner(address newOwner) external onlyOwner {
_setOwner(newOwner);
}
function _owner() internal view returns (address ownerOut) {
bytes32 position = OWNER_SLOT;
// solhint-disable-next-line no-inline-assembly
assembly {
ownerOut := sload(position)
}
}
function _setOwner(address newOwner) internal {
emit AdminChanged(_owner(), newOwner);
bytes32 position = OWNER_SLOT;
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(position, newOwner)
}
}
function _onlyOwner() internal view {
require(msg.sender == _owner(), "ARM: Only owner can call this function.");
}
modifier onlyOwner() {
_onlyOwner();
_;
}
}{
"remappings": [
"dependencies/@pendle-sy-1.0.0-1.0.0/:@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-4.9.3-4.9.3/contracts/",
"contracts/=src/contracts/",
"script/=script/",
"test/=test/",
"utils/=src/contracts/utils/",
"@solmate/=dependencies/solmate-6.7.0/src/",
"forge-std/=dependencies/forge-std-1.9.7/src/",
"@pendle-sy/=dependencies/@pendle-sy-1.0.0-1.0.0/contracts/",
"@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.0.2-5.0.2/contracts/",
"@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.0.2-5.0.2/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_initOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561000f575f80fd5b5061003b60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046100cd565b5f805160206107e683398151915214610056576100566100f2565b61005f33610064565b610106565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61009a5f805160206107e68339815191525490565b604080516001600160a01b03928316815291841660208301520160405180910390a15f805160206107e683398151915255565b818103818111156100ec57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52600160045260245ffd5b6106d3806101135f395ff3fe60806040526004361061006f575f3560e01c80635c60da1b1161004d5780635c60da1b146100eb5780638da5cb5b1461011b578063cf7a1d771461012f578063f851a4401461011b5761006f565b806313af40351461008e5780633659cfe6146100ad5780634f1ef286146100cc575b61008c6100875f8051602061067e8339815191525490565b61014e565b005b348015610099575f80fd5b5061008c6100a8366004610504565b61016c565b3480156100b8575f80fd5b5061008c6100c7366004610504565b610180565b3480156100d7575f80fd5b5061008c6100e6366004610569565b610191565b3480156100f6575f80fd5b506100ff61020d565b6040516001600160a01b03909116815260200160405180910390f35b348015610126575f80fd5b506100ff610228565b34801561013a575f80fd5b5061008c6101493660046105b8565b61023e565b365f80375f80365f845af43d5f803e808015610168573d5ff35b3d5ffd5b610174610333565b61017d816103b9565b50565b610188610333565b61017d81610422565b610199610333565b6101a283610422565b5f836001600160a01b031683836040516101bd929190610615565b5f60405180830381855af49150503d805f81146101f5576040519150601f19603f3d011682016040523d82523d5f602084013e6101fa565b606091505b5050905080610207575f80fd5b50505050565b5f6102235f8051602061067e8339815191525490565b905090565b5f6102235f8051602061065e8339815191525490565b610246610333565b5f61025c5f8051602061067e8339815191525490565b6001600160a01b03161461026e575f80fd5b61029960017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610624565b5f8051602061067e833981519152146102b4576102b4610649565b6102bd84610422565b801561032a575f846001600160a01b031683836040516102de929190610615565b5f60405180830381855af49150503d805f8114610316576040519150601f19603f3d011682016040523d82523d5f602084013e61031b565b606091505b5050905080610328575f80fd5b505b610207836103b9565b5f8051602061065e833981519152546001600160a01b0316336001600160a01b0316146103b75760405162461bcd60e51b815260206004820152602760248201527f41524d3a204f6e6c79206f776e65722063616e2063616c6c20746869732066756044820152663731ba34b7b71760c91b60648201526084015b60405180910390fd5b565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef5f8051602061065e8339815191525490565b604080516001600160a01b03928316815291841660208301520160405180910390a15f8051602061065e83398151915255565b5f816001600160a01b03163b116104a15760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084016103ae565b5f8051602061067e8339815191528181556040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a25050565b80356001600160a01b03811681146104ff575f80fd5b919050565b5f60208284031215610514575f80fd5b61051d826104e9565b9392505050565b5f8083601f840112610534575f80fd5b50813567ffffffffffffffff81111561054b575f80fd5b602083019150836020828501011115610562575f80fd5b9250929050565b5f805f6040848603121561057b575f80fd5b610584846104e9565b9250602084013567ffffffffffffffff81111561059f575f80fd5b6105ab86828701610524565b9497909650939450505050565b5f805f80606085870312156105cb575f80fd5b6105d4856104e9565b93506105e2602086016104e9565b9250604085013567ffffffffffffffff8111156105fd575f80fd5b61060987828801610524565b95989497509550505050565b818382375f9101908152919050565b8181038181111561064357634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52600160045260245ffdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c3ea905464f51baca913004799837301c1c00a020aa01fc82d7ba7d227cee1f464736f6c63430008170033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103
Deployed Bytecode
0x60806040526004361061006f575f3560e01c80635c60da1b1161004d5780635c60da1b146100eb5780638da5cb5b1461011b578063cf7a1d771461012f578063f851a4401461011b5761006f565b806313af40351461008e5780633659cfe6146100ad5780634f1ef286146100cc575b61008c6100875f8051602061067e8339815191525490565b61014e565b005b348015610099575f80fd5b5061008c6100a8366004610504565b61016c565b3480156100b8575f80fd5b5061008c6100c7366004610504565b610180565b3480156100d7575f80fd5b5061008c6100e6366004610569565b610191565b3480156100f6575f80fd5b506100ff61020d565b6040516001600160a01b03909116815260200160405180910390f35b348015610126575f80fd5b506100ff610228565b34801561013a575f80fd5b5061008c6101493660046105b8565b61023e565b365f80375f80365f845af43d5f803e808015610168573d5ff35b3d5ffd5b610174610333565b61017d816103b9565b50565b610188610333565b61017d81610422565b610199610333565b6101a283610422565b5f836001600160a01b031683836040516101bd929190610615565b5f60405180830381855af49150503d805f81146101f5576040519150601f19603f3d011682016040523d82523d5f602084013e6101fa565b606091505b5050905080610207575f80fd5b50505050565b5f6102235f8051602061067e8339815191525490565b905090565b5f6102235f8051602061065e8339815191525490565b610246610333565b5f61025c5f8051602061067e8339815191525490565b6001600160a01b03161461026e575f80fd5b61029960017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610624565b5f8051602061067e833981519152146102b4576102b4610649565b6102bd84610422565b801561032a575f846001600160a01b031683836040516102de929190610615565b5f60405180830381855af49150503d805f8114610316576040519150601f19603f3d011682016040523d82523d5f602084013e61031b565b606091505b5050905080610328575f80fd5b505b610207836103b9565b5f8051602061065e833981519152546001600160a01b0316336001600160a01b0316146103b75760405162461bcd60e51b815260206004820152602760248201527f41524d3a204f6e6c79206f776e65722063616e2063616c6c20746869732066756044820152663731ba34b7b71760c91b60648201526084015b60405180910390fd5b565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef5f8051602061065e8339815191525490565b604080516001600160a01b03928316815291841660208301520160405180910390a15f8051602061065e83398151915255565b5f816001600160a01b03163b116104a15760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084016103ae565b5f8051602061067e8339815191528181556040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a25050565b80356001600160a01b03811681146104ff575f80fd5b919050565b5f60208284031215610514575f80fd5b61051d826104e9565b9392505050565b5f8083601f840112610534575f80fd5b50813567ffffffffffffffff81111561054b575f80fd5b602083019150836020828501011115610562575f80fd5b9250929050565b5f805f6040848603121561057b575f80fd5b610584846104e9565b9250602084013567ffffffffffffffff81111561059f575f80fd5b6105ab86828701610524565b9497909650939450505050565b5f805f80606085870312156105cb575f80fd5b6105d4856104e9565b93506105e2602086016104e9565b9250604085013567ffffffffffffffff8111156105fd575f80fd5b61060987828801610524565b95989497509550505050565b818382375f9101908152919050565b8181038181111561064357634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52600160045260245ffdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c3ea905464f51baca913004799837301c1c00a020aa01fc82d7ba7d227cee1f464736f6c63430008170033
Loading...
Loading
Loading...
Loading
OVERVIEW
Origin Protocol is a suite of complimentary DeFi products designed to increase economic opportunity for all. Our permissionless and composable smart contracts provide superior user experiences across DeFi.Loading...
Loading
[ Download: CSV Export ]
[ 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.