Overview
ETH Balance
0 ETH
ETH Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 13096853 | 65 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RegistryList
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 999999 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2025 Morpho Association
pragma solidity 0.8.28;
import "./interfaces/IRegistryList.sol";
contract RegistryList is IRegistryList {
address public owner;
/// @dev Owner controlled append-only list of registries.
/// @dev This registry is effectively "add-only" only if all sub-registries are also "add-only".
address[] public subRegistries;
event Constructor(address indexed owner);
event SetOwner(address indexed newOwner);
event AddSubRegistry(address indexed subRegistry);
function subRegistriesLength() external view returns (uint256) {
return subRegistries.length;
}
constructor() {
owner = msg.sender;
emit Constructor(msg.sender);
}
function setOwner(address newOwner) external {
require(msg.sender == owner, "Not owner");
owner = newOwner;
emit SetOwner(newOwner);
}
/// @dev Adding a subRegistry that reverts or makes looping too gas consuming will make new registries uneffective
/// (vaults will not be able to validate adapters that would be validated by registries that have been added after).
function addSubRegistry(address subRegistry) external {
require(msg.sender == owner, "Not owner");
subRegistries.push(subRegistry);
emit AddSubRegistry(subRegistry);
}
function isInRegistry(address adapter) public view returns (bool) {
for (uint256 i = 0; i < subRegistries.length; i++) {
if (IAdapterRegistry(subRegistries[i]).isInRegistry(adapter)) return true;
}
return false;
}
}// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2025 Morpho Association
pragma solidity >=0.5.0;
import "../../lib/vault-v2/src/interfaces/IAdapterRegistry.sol";
interface IRegistryList is IAdapterRegistry {
function owner() external view returns (address);
function subRegistries(uint256 index) external view returns (address);
function subRegistriesLength() external view returns (uint256);
function setOwner(address newOwner) external;
function addSubRegistry(address subRegistry) external;
}// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2025 Morpho Association
pragma solidity >=0.5.0;
interface IAdapterRegistry {
function isInRegistry(address account) external view returns (bool);
}{
"remappings": [
"solmate/=lib/bundler3/lib/permit2/lib/solmate/",
"@openzeppelin/contracts/=lib/metamorpho-1.1/lib/openzeppelin-contracts/contracts/",
"bundler3/=lib/bundler3/",
"ds-test/=lib/metamorpho-1.1/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/metamorpho-1.1/lib/erc4626-tests/",
"forge-gas-snapshot/=lib/bundler3/lib/permit2/lib/forge-gas-snapshot/src/",
"forge-std/=lib/forge-std/src/",
"halmos-cheatcodes/=lib/morpho-blue/lib/halmos-cheatcodes/src/",
"metamorpho-1.1/=lib/metamorpho-1.1/",
"metamorpho-v1.1/=lib/vault-v2/lib/metamorpho-v1.1/",
"metamorpho/=lib/vault-v2/lib/metamorpho/",
"morpho-blue-irm/=lib/morpho-blue-irm/src/",
"morpho-blue-oracles/=lib/morpho-blue-oracles/src/",
"morpho-blue/=lib/morpho-blue/",
"murky/=lib/universal-rewards-distributor/lib/murky/src/",
"openzeppelin-contracts/=lib/metamorpho-1.1/lib/openzeppelin-contracts/",
"openzeppelin/=lib/universal-rewards-distributor/lib/openzeppelin-contracts/contracts/",
"permit2/=lib/bundler3/lib/permit2/",
"pre-liquidation/=lib/pre-liquidation/src/",
"public-allocator/=lib/public-allocator/src/",
"safe-smart-account/=lib/safe-smart-account/",
"universal-rewards-distributor/=lib/universal-rewards-distributor/src/",
"vault-v2-adapter-registries/=lib/vault-v2-adapter-registries/src/",
"vault-v2/=lib/vault-v2/"
],
"optimizer": {
"enabled": true,
"runs": 999999
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": true
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"subRegistry","type":"address"}],"name":"AddSubRegistry","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"Constructor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"SetOwner","type":"event"},{"inputs":[{"internalType":"address","name":"subRegistry","type":"address"}],"name":"addSubRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"isInRegistry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"","type":"uint256"}],"name":"subRegistries","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subRegistriesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60808060405234604d575f80546001600160a01b031916339081178255907f385bc760a35ad4b8b2c11c6a4c6d27daa5e72ce47836b34da36a3f1258ec45ec9080a261056190816100528239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80630da7173e1461027957806313af4035146101ba578063542873411461014e5780637041c2a8146101135780638da5cb5b146100c35763e4bb26f21461005b575f80fd5b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf5760043573ffffffffffffffffffffffffffffffffffffffff811681036100bf576100b5602091610432565b6040519015158152f35b5f80fd5b346100bf575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346100bf575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf576020600154604051908152f35b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf576004356001548110156100bf5773ffffffffffffffffffffffffffffffffffffffff6101aa602092610388565b90549060031b1c16604051908152f35b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf5760043573ffffffffffffffffffffffffffffffffffffffff81168091036100bf57807fffffffffffffffffffffffff00000000000000000000000000000000000000005f5461024f73ffffffffffffffffffffffffffffffffffffffff821633146103cd565b16175f557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f80a2005b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf5760043573ffffffffffffffffffffffffffffffffffffffff81168091036100bf576102eb73ffffffffffffffffffffffffffffffffffffffff5f541633146103cd565b6001546801000000000000000081101561035b5780600161030f9201600155610388565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff84831b921b19161790557f4c5de04e0a9fb984302e76e361d50aa774fb7922dcfdc4ad004ad087ccfec9415f80a2005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6001548110156103a05760015f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b156103d457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206f776e657200000000000000000000000000000000000000000000006044820152fd5b600154905f5b828110610446575050505f90565b6024602073ffffffffffffffffffffffffffffffffffffffff61046884610388565b90549060031b1c16604051928380927fe4bb26f200000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff881660048301525afa908115610549575f916104db575b506104d357600101610438565b505050600190565b905060203d8111610542575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff82111761035b576020918391604052810103126100bf575180151581036100bf575f6104c6565b503d6104e7565b6040513d5f823e3d90fdfea164736f6c634300081c000a
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c80630da7173e1461027957806313af4035146101ba578063542873411461014e5780637041c2a8146101135780638da5cb5b146100c35763e4bb26f21461005b575f80fd5b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf5760043573ffffffffffffffffffffffffffffffffffffffff811681036100bf576100b5602091610432565b6040519015158152f35b5f80fd5b346100bf575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346100bf575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf576020600154604051908152f35b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf576004356001548110156100bf5773ffffffffffffffffffffffffffffffffffffffff6101aa602092610388565b90549060031b1c16604051908152f35b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf5760043573ffffffffffffffffffffffffffffffffffffffff81168091036100bf57807fffffffffffffffffffffffff00000000000000000000000000000000000000005f5461024f73ffffffffffffffffffffffffffffffffffffffff821633146103cd565b16175f557f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f80a2005b346100bf5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100bf5760043573ffffffffffffffffffffffffffffffffffffffff81168091036100bf576102eb73ffffffffffffffffffffffffffffffffffffffff5f541633146103cd565b6001546801000000000000000081101561035b5780600161030f9201600155610388565b81549060031b9073ffffffffffffffffffffffffffffffffffffffff84831b921b19161790557f4c5de04e0a9fb984302e76e361d50aa774fb7922dcfdc4ad004ad087ccfec9415f80a2005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6001548110156103a05760015f5260205f2001905f90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b156103d457565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206f776e657200000000000000000000000000000000000000000000006044820152fd5b600154905f5b828110610446575050505f90565b6024602073ffffffffffffffffffffffffffffffffffffffff61046884610388565b90549060031b1c16604051928380927fe4bb26f200000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff881660048301525afa908115610549575f916104db575b506104d357600101610438565b505050600190565b905060203d8111610542575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f820116820182811067ffffffffffffffff82111761035b576020918391604052810103126100bf575180151581036100bf575f6104c6565b503d6104e7565b6040513d5f823e3d90fdfea164736f6c634300081c000a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.