[A12] - D-Staker 🏅

D-Staker is an innovative platform that aims to democratize staking for Ethereum investors of all levels. Our platform provides a frictionless, user-friendly experience that allows users to earn maximum returns on their Ether staking investments.

Challenges

Build a Staking Pool

Ranked 9,000 USDC

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

Integrate Tenderly Web3 Gateway

Pool 3,000 USDC

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

Test locally with zero-config forking using Infura's free archive node access

Pool 1,000 USDC

We've used ganache as our local node for development and testing forking goerli.

OpenZeppelin Defender Integration

Ranked 10,000 USDC

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

Build a Liquid Staking Pool

Ranked 12,000 USDC

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

Tenderly Simulation API Integration

Pool 6,000 USDC

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

Use fRPC to connect your dApp to Blockchain

Pool 5,000 ETH

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.

Connect the world with Chainlink

Pool 10,000 ETH

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

#BUIDLathon 2023 Infrastructure + Scalability

Pool 15,000 USDC

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).

Project details

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.