[SWIP-39] Upgrade MetaVault Factory to Enable Permissionless MetaVaults

Executive summary

In this proposal, we are seeking StakeWise DAO approval to deploy new MetaVault Factory contracts on Ethereum and Gnosis Chain, allowing permissionless creation of MetaVaults with/without ERC-20 tokenization and whitelist functionality.

This will enable stakers and service providers to automatically distribute stake across multiple Vaults at once while managing a single position instead of many.

The new Factory contracts have been audited by Statemind.

Motivation

The core proposition of the Vault system is staking with maximum control by choosing operator(s) with the most suitable setup.

However, the growth of the Vault ecosystem now means that multiple great options are available, and choice has become difficult.

Our solution to this is MetaVaults - a currently permissioned functionality that allows to route your stake into multiple specific Vaults at once, in proportions you want.

Understandably, being permissioned means that only major service providers are interested in MetaVaults today (as they allow to work with multiple operators at once), while adoption among stakers remains very limited.

Hence, we propose an upgrade to the MetaVault Factory contracts which would introduce permissionless MetaVaults with ERC-20 and whitelist functionality, so that stakers who wish to stake in multiple Vaults at once could do so, optionally with full privacy and tokenization. As a reminder, all MetaVaults preserve the capacity to mint osETH.

The proposed contracts have been audited by Statemind as part of the holistic review of the StakeWise codebase.

Specification

Ethereum

{
“transactions”: [
{
“data”: “0x34f0e39e000000000000000000000000e01351f866c118fbd04d222f9262a470f1d44d90”,
“method”: “addCurator(address)”,
“operation”: “0”,
“params”: [
“0xe01351f866C118FbD04d222f9262A470F1d44d90”
],
“to”: “0xa23F7c8d25f4503cA4cEd84d9CC2428e8745933C”,
“value”: “0.0”
},
{
“data”: “0x98f25c44000000000000000000000000d30e7e4bdbd396cfbe72ad2f4856769c54ea6b0b”,
“method”: “removeCurator(address)”,
“operation”: “0”,
“params”: [
“0xD30E7e4bDbd396cfBe72Ad2f4856769C54eA6b0b”
],
“to”: “0xa23F7c8d25f4503cA4cEd84d9CC2428e8745933C”,
“value”: “0.0”
},
{
“data”: “0xaff7947d000000000000000000000000e2121568066c0a9d794bbb95d0ade0ebd81ccaf9”,
“method”: “addVaultImpl(address)”,
“operation”: “0”,
“params”: [
“0xE2121568066C0a9d794bbB95D0Ade0ebd81cCaf9”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0xaff7947d000000000000000000000000fc81d3369fbeaa6e0926eeda71e5c91724f2c079”,
“method”: “addVaultImpl(address)”,
“operation”: “0”,
“params”: [
“0xfc81D3369fBEAa6E0926eedA71E5C91724f2c079”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0xaff7947d000000000000000000000000bb1b3e55315967c65133a0e942d8ea7a992af6c7”,
“method”: “addVaultImpl(address)”,
“operation”: “0”,
“params”: [
“0xBb1B3E55315967c65133A0e942d8EA7a992aF6C7”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0xaff7947d000000000000000000000000d935a9f586dfa83df20553b40ce24f3746b258e2”,
“method”: “addVaultImpl(address)”,
“operation”: “0”,
“params”: [
“0xD935a9f586dFa83Df20553b40Ce24f3746b258E2”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0x29ce1ec500000000000000000000000076d90928645065b4d4212ee62ce1ba8f90718f14”,
“method”: “addFactory(address)”,
“operation”: “0”,
“params”: [
“0x76D90928645065b4D4212eE62ce1ba8f90718f14”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0x29ce1ec50000000000000000000000001e86e620567bb877f5ed13607a1a7b7dbcb6be66”,
“method”: “addFactory(address)”,
“operation”: “0”,
“params”: [
“0x1e86e620567bb877F5ED13607A1a7B7DBcb6BE66”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0x29ce1ec50000000000000000000000004e3de90882b3d10d067b8954909d4a4b0bb390d0”,
“method”: “addFactory(address)”,
“operation”: “0”,
“params”: [
“0x4E3dE90882B3d10D067b8954909D4A4b0Bb390D0”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0x29ce1ec5000000000000000000000000e14fa9bbdb7813025309f71ddc0fa8faae1b9141”,
“method”: “addFactory(address)”,
“operation”: “0”,
“params”: [
“0xE14FA9bBdb7813025309f71DdC0FA8fAae1B9141”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
},
{
“data”: “0x4b37c73f0000000000000000000000006107db0bdd84023228e0ab11099190e88b073c1d”,
“method”: “removeFactory(address)”,
“operation”: “0”,
“params”: [
“0x6107dB0bdd84023228E0aB11099190E88B073c1D”
],
“to”: “0x3a0008a588772446f6e656133C2D5029CC4FC20E”,
“value”: “0.0”
}
]
}

Gnosis Chain

{
“transactions”: [
{
“data”: “0x34f0e39e0000000000000000000000005dd9e7e355509bd5d29018d0af4927251d82ab9e”,
“method”: “addCurator(address)”,
“operation”: “0”,
“params”: [
“0x5dd9e7e355509Bd5d29018D0Af4927251d82Ab9E”
],
“to”: “0xa23F7c8d25f4503cA4cEd84d9CC2428e8745933C”,
“value”: “0.0”
},
{
“data”: “0x98f25c44000000000000000000000000d30e7e4bdbd396cfbe72ad2f4856769c54ea6b0b”,
“method”: “removeCurator(address)”,
“operation”: “0”,
“params”: [
“0xD30E7e4bDbd396cfBe72Ad2f4856769C54eA6b0b”
],
“to”: “0xa23F7c8d25f4503cA4cEd84d9CC2428e8745933C”,
“value”: “0.0”
},
{
“data”: “0xaff7947d0000000000000000000000000ba13125fc3a300538bb890529182df7ccc5a19b”,
“method”: “addVaultImpl(address)”,
“operation”: “0”,
“params”: [
“0x0BA13125FC3A300538bb890529182Df7CcC5a19B”
],
“to”: “0x7d014B3C6ee446563d4e0cB6fBD8C3D0419867cB”,
“value”: “0.0”
},
{
“data”: “0x29ce1ec500000000000000000000000075e6f7640137c128c91de4ee62f6f30b542e5f1b”,
“method”: “addFactory(address)”,
“operation”: “0”,
“params”: [
“0x75E6f7640137c128c91dE4Ee62F6f30b542e5f1B”
],
“to”: “0x7d014B3C6ee446563d4e0cB6fBD8C3D0419867cB”,
“value”: “0.0”
},
{
“data”: “0x4b37c73f0000000000000000000000006107db0bdd84023228e0ab11099190e88b073c1d”,
“method”: “removeFactory(address)”,
“operation”: “0”,
“params”: [
“0x6107dB0bdd84023228E0aB11099190E88B073c1D”
],
“to”: “0x7d014B3C6ee446563d4e0cB6fBD8C3D0419867cB”,
“value”: “0.0”
}
]
}

Considerations

We see this feature as a net positive for decentralization and staking experience. It also creates more distribution opportunities for Vaults, as working with multiple operators at once while receiving stake from a single source will now be very straightforward and will not require a DAO vote.

Discussion & vote

Please vote for this proposal on Snapshot: Snapshot

If any questions or concerns arise, do not hesitate to drop them in this thread.