We built a liquid staking system that leverages ssv.network and allows anyone to stake any amount of ether that they wanted. On that way we could assure that everyone could participate in the ethereum ecosystem. A liquid staking system can be important for Ethereum's scalability and infrastructure for several reasons: - Increased Security: It would incentivize more users to stake their Ethereum tokens (ETH) to help secure the network. More staked ETH means a more secure network, which is essential for building trust in the system. - Improved Liquidity: A liquid staking system would allow users to earn staking rewards while still being able to use their staked ETH for other purposes, such as trading or lending. This would increase the liquidity of ETH, making it more easily accessible to users and potentially increasing its overall value. - Infrastructure Development: It could also incentivize the development of new infrastructure and services that are built on top of the Ethereum network. For example, it could encourage the development of new decentralized finance (DeFi) applications that rely on staked ETH for security and liquidity. The way that we made this was in the form of a EIP4626(https://eips.ethereum.org/EIPS/eip-4626) Vault. On that way stakers could still use their LSD tokens on any defi protocol. We use ssv.network(https://ssv.network/) for the infrastructure and operators administration. Also we built a backend service that build generate new validator keys, choose operators between the offered by ssv.network, distribute the validator key between them, and registry the validator and send the staked ether to the Ethereum's deposit contract. All triggered by a OpenZeppelin Defender's Sentinel automatically. Rewards would be available for claim and ether could be unstaked when available (after the validators are disasembled). We are using Chainlink Price Feeds to calculate the balances of the contract in usd: - The total assets of the contract (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L252-L255) - The amount of ether staking of each user(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L261-L264) - The total rewards earn (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L266-L269) - The total historical rewards earn (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L271-L274) - The rewards of each user(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L289-L296) Use the getLatestPrice(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L298-L309) function go get the price of usd
We've deployed our contracts using Tenderly Web3 Gateway on Goerli running using foundry in this way: forge create --rpc-url $TENDERLY_GATEWAY_RPC \ --constructor-args $DEPOSIT_CONTRACT_ADDRESS $SSV_TOKEN_ADDRESS $SSV_NETWORK_ADDRESS $SSV_REGISTRY_ADDRESS $WETH_ADDRESS $ETH_USD_PRICE_FEED_ADDRESS \ --private-key $PRIVATE_KEY \ --etherscan-api-key $ETHERSCAN_API_KEY \ --verify \ src/StakingPool.sol:StakingPool The contract is deployed and verified. You can see it in the link below: https://goerli.etherscan.io/address/0xC1619edED1f8E923492D481e428C5860EB156829#code
We've used ganache as our local node for development and testing forking goerli.
We integrate the OpenZeppelin Defender using the `Sentinel` product to monitor the staking contract. The sentinel listens the `StakeReached` event and our backend send the `registerValidatorAndDeposit` transaction to register a new validator and founding it Screenshot of the Sentinel configuration: https://drive.google.com/file/d/14kv8G7lQpu1tZoNuQ1_byCreIKCkvsPv/view?usp=sharing
We built a liquid staking system that leverages ssv.network and allows anyone to stake any amount of ether that they wanted. On that way we could assure that everyone could participate in the ethereum ecosystem. A liquid staking system can be important for Ethereum's scalability and infrastructure for several reasons: - Increased Security: It would incentivize more users to stake their Ethereum tokens (ETH) to help secure the network. More staked ETH means a more secure network, which is essential for building trust in the system. - Improved Liquidity: A liquid staking system would allow users to earn staking rewards while still being able to use their staked ETH for other purposes, such as trading or lending. This would increase the liquidity of ETH, making it more easily accessible to users and potentially increasing its overall value. - Infrastructure Development: It could also incentivize the development of new infrastructure and services that are built on top of the Ethereum network. For example, it could encourage the development of new decentralized finance (DeFi) applications that rely on staked ETH for security and liquidity. The way that we made this was in the form of a EIP4626(https://eips.ethereum.org/EIPS/eip-4626) Vault. On that way stakers could still use their LSD tokens on any defi protocol. We use ssv.network(https://ssv.network/) for the infrastructure and operators administration. Also we built a backend service that build generate new validator keys, choose operators between the offered by ssv.network, distribute the validator key between them, and registry the validator and send the staked ether to the Ethereum's deposit contract. All triggered by a OpenZeppelin Defender's Sentinel automatically. Rewards would be available for claim and ether could be unstaked when available (after the validators are disasembled). We are using Chainlink Price Feeds to calculate the balances of the contract in usd: - The total assets of the contract (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L252-L255) - The amount of ether staking of each user(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L261-L264) - The total rewards earn (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L266-L269) - The total historical rewards earn (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L271-L274) - The rewards of each user(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L289-L296) Use the getLatestPrice(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L298-L309) function go get the price of usd
We've implemented tenderly simulation for simulate the transaction before them are transfered to the rpc node. In that way we can be sure that the transaction won't revert and we would save gas to the user. The simulation has been implemented in these types of transactions: 1 - stake() - Stake ETH on the Staking Pool - https://github.com/rotcivegaf/D-Staker/blob/b516a30e8a4ade520e4c8b90763940aab905689f/frontend/src/lib/StakeForm.svelte#L61 2 - unstake() - Unstake the ETH available from the Staking Pool - https://github.com/rotcivegaf/D-Staker/blob/879de607c35fb9c6599efac7abd48bac27bf2bcd/frontend/src/routes/dashboard/%2Bpage.svelte#L119 3 - claim() - Claim pending rewards from the staking pool - https://github.com/rotcivegaf/D-Staker/blob/879de607c35fb9c6599efac7abd48bac27bf2bcd/frontend/src/routes/dashboard/%2Bpage.svelte#L85
https://www.youtube.com/watch?v=UVFwUlrIbZ0 We've been configured fRPC as our RPC node. There are several advantages of a decentralized rpc over a centralized one. Scalability: Decentralized RPC can handle a larger volume of requests than centralized architectures, as the workload is distributed across multiple providers. This makes it easier to scale the system as the number of clients and requests grows. Fault tolerance: Decentralized RPC architectures are more resilient to failures than centralized architectures. If one server fails or becomes overloaded, the other servers can continue to handle requests, ensuring that the system remains operational. Security: Decentralized RPC architectures can provide better security than centralized architectures, as they are less vulnerable to attacks that target a single point of failure. Censorship resistant: A decentralized RPC will be less vulnerable to censorship since a provider could be replaced by another easily. We've configured an easy command that will configure fRPC with our providers keys and it will start the node. Then we point our sistem to that rpc enpoint.
We are using Chainlink Price Feeds to calculate the balances of the contract in usd: - The total assets of the contract (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L252-L255) - The amount of ether staking of each user(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L261-L264) - The total rewards earn (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L266-L269) - The total historical rewards earn (https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L271-L274) - The rewards of each user(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L289-L296) Use the getLatestPrice(https://github.com/rotcivegaf/D-Staker/blob/cbb6e29abad1153d42343375a7ba3720c00c3a57/src/StakingPool.sol#L298-L309) function go get the price of usd
We built a liquid staking system that leverages ssv.network and allows anyone to stake any amount of ether that they wanted. On that way we could assure that everyone could participate in the ethereum ecosystem. A liquid staking system can be important for Ethereum's scalability and infrastructure for several reasons: - Increased Security: It would incentivize more users to stake their Ethereum tokens (ETH) to help secure the network. More staked ETH means a more secure network, which is essential for building trust in the system. - Improved Liquidity: A liquid staking system would allow users to earn staking rewards while still being able to use their staked ETH for other purposes, such as trading or lending. This would increase the liquidity of ETH, making it more easily accessible to users and potentially increasing its overall value. - Infrastructure Development: It could also incentivize the development of new infrastructure and services that are built on top of the Ethereum network. For example, it could encourage the development of new decentralized finance (DeFi) applications that rely on staked ETH for security and liquidity. The way that we made this was in the form of a EIP4626(https://eips.ethereum.org/EIPS/eip-4626) Vault. On that way stakers could still use their LSD tokens on any defi protocol. We use ssv.network(https://ssv.network/) for the infrastructure and operators administration. Also we built a backend service that build generate new validator keys, choose operators between the offered by ssv.network, distribute the validator key between them, and registry the validator and send the staked ether to the Ethereum's deposit contract. All triggered by a OpenZeppelin Defender's Sentinel automatically. Rewards would be available for claim and ether could be unstaked when available (after the validators are disasembled).
With D-Staker, investors can easily stake their Ether without the need for technical expertise or specialized knowledge. Our advanced algorithms optimize the staking process, ensuring users earn higher yields than current implementations. Our platform provides a stress-free experience, allowing users to focus on maximizing their returns and growing their investments.
Our user-friendly interface guides users through the staking process, making it easy to understand and participate. D-Staker is designed to minimize friction, making staking accessible to all types of investors. We believe in democratizing staking and providing equal opportunities to all users, regardless of their experience or resources.