VaultV2Factory
0x0fbad98595b0186da120e41f77c102beb49f803c
Verification
Verified
v0.8.28+commit.7893614a
Type
Contract
23,124 bytes
ABI entries
4
2 read · 1 write
License
none
Contract information
- Address
- 0x0fbad98595b0186da120e41f77c102beb49f803c
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.28+commit.7893614a
- Optimization
- Enabled
- Creator
- 0xD835E386aa…cd9CbDFA13
- Creation tx
- 0x20a5895e63…92227f99b4
Token
Not a token
This contract does not expose ERC-20 metadata.
Read contract (2)
isVaultV2(address) → bool
vaultV2(address, address, bytes32) → address
Events (1)
CreateVaultV2
ABI
[
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "newVaultV2",
"type": "address"
}
],
"name": "CreateVaultV2",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "createVaultV2",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "isVaultV2",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "asset",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "vaultV2",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]Source code
// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2025 Morpho Association
pragma solidity 0.8.28;
import {VaultV2} from "./VaultV2.sol";
import {IVaultV2Factory} from "./interfaces/IVaultV2Factory.sol";
contract VaultV2Factory is IVaultV2Factory {
mapping(address account => bool) public isVaultV2;
mapping(address owner => mapping(address asset => mapping(bytes32 salt => address))) public vaultV2;
/// @dev Returns the address of the deployed VaultV2.
function createVaultV2(address owner, address asset, bytes32 salt) external returns (address) {
address newVaultV2 = address(new VaultV2{salt: salt}(owner, asset));
isVaultV2[newVaultV2] = true;
vaultV2[owner][asset][salt] = newVaultV2;
emit CreateVaultV2(owner, asset, salt, newVaultV2);
return newVaultV2;
}
}
Chain explorer4439msChain node124ms