DAOs for LSD
LSD (Liquid Staking Derivative) Network allows any Ethereum address to spin up an LSD with the help of LSDN Factory. This LSD owner can range from a single user to a DAO.
DAOs that have abundant amounts of ETH can become a part of, or create, LSD Networks to potentially earn yield and more. The participants of the DAO (the community) can pool in ETH and in return each of the stakers will get a fractionalized ownership of the validators spun up by the DAO depending on their shares of ETH in the pool thanks to the underlying Stakehouse Protocol.
The DAO can put up all sorts of proposals to manage their LSD Network ranging from spinning up the LSD Network, mint protected staking tokens (dETH), withdraw network revenue from the smoothing syndicate and much more.
One of the ways to set up a DAO is using OpenZepplin's Governor, based on the Compound Governor contracts. For more details follow this link.
Now that the DAO is created, the next step is to raise a proposal. If the DAO community votes in majority for the proposal, then the proposal can be executed. The structure of a proposal is shown below:
propose(address[] targets, uint256[] values, bytes[] calldatas, string description) → uint256 proposalId
targets: Address of the target smart contracts (liquid staking network here)
values: Amount of ETH to be passed to the smart contracts.
calldata: Function signatures of different functions to call on target smart contracts
description: Agenda of the proposal
To encode a function call, use ethers. Here, is an example:
const ABI = ["function transfer(address to, uint amount)"];
const interfaceOfABI = new ethers.utils.Interface(ABI);
Const encodedFunctionData = interfaceOfABI.encodeFunctionData("transfer", [\<TRANSFER\_TO\_ADDRESS\>, ethers.utils.parseEther(\<AMOUNT\_OF\_ETH\_TO\_TRANSFER\>)]);
An example encoded function data is "0xa9059cbb0000000000000000000000001234567890123456789012345678901234567890000000000000000000000000000000000000000000000000002386f26fc10000"
.
Depending on the function being called, parameters and ABI the encoded function data will change.
A sample proposal on LSD can be, to change commission rate for the LSD Network.
Once the proposal is successful, it is ready to be executed.
The structure of execute is shown below:
execute(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) → uint256 proposalId
This will be the final step after the proposal is successfully passed.
LSD allows DAOs to manage the network efficiently. Meaning that, a DAO can decide to blacklist a node operator if the node operator is found to be malicious. DAOs can also create proposals to sell the node operator's smart wallet or appoint a new owner for the smart wallet in case the node operator wants to quit for some reason.
The use cases are limitless and hence the LSD is designed to cater to needs of organizations that want to run a liquid staking network.
The above example is one of many ways to interact with the LSD product. Other ways could be a Gnosis safe, or even using the LSD SDK Wizard here.