Building a Secure Staking Platform: Smart Contracts and Security
We once received a project where a reentrancy bug in the reward contract led to a significant loss. After that, we re-evaluated every stage of development. There's a chasm between "write a staking contract" and "launch a secure platform." We share our experience on how to bridge it. In 5 years of work, we have launched over 20 DeFi products, including staking platforms with TVL up to $50 million. Each project is a unique set of protocols and security requirements.
Staking is not just locking tokens. It's an entire ecosystem: liquidity pools, reward distribution, risk management. Every component requires attention to detail, especially when managing millions of dollars. Errors in contract logic or pool economics can be costly — and we've seen it many times.
What Risks Does a Typical Staking Platform Conceal?
The most common issues are reentrancy, flash loan attacks on pools, and incorrect reward calculation. For example, if you don't use a pull-based model, an attacker can withdraw funds before recalculation. Additionally, users lose up to 15% of returns due to unoptimized contracts — every extra SLOAD operation increases gas. Dishonest APY: they show gross, not subtracting fees. We implement transparent calculations with a breakdown of all deductions.
Another risk is flawed reward mathematics. In one project, we found that rewards were calculated based on the average balance over the period but didn't account for early partial withdrawals. As a result, passive participants received less, and active ones more, than they should. We fixed this by implementing fragment-based reward storage.
How We Design Secure Staking Contracts
We use a fork of Synthetix StakingRewards with modifications. We apply ReentrancyGuard, Checks-Effects-Interactions. For reward distribution — pull-based. After coding: Slither, Mythril, Echidna. Then an external audit. Optionally, formal verification with Certora — it reduces the likelihood of critical errors by 5 times compared to a regular audit.
Why Formal Verification Is Worth the Effort
Formal verification (e.g., on Certora) mathematically proves the correctness of contract logic. It's not just bug hunting but confirming that the specification holds for all possible inputs. In staking contracts, where rewards depend on complex formulas, this approach eliminates entire classes of errors. We apply it to critical functions: calculateRewards, withdraw, emergencyWithdraw. The result: contracts that pass audits with minimal comments. Users save up to 30% on gas fees, and projects save up to 50% on repeat audits. In monetary terms, savings for a large pool can reach $5k per month.
Comparison of Staking Approaches
| Protocol |
Asset |
APY |
Liquidity |
Risks |
| Native staking |
ETH |
2-4% |
Locked |
No contract risk |
| Lido |
stETH |
3-5% |
Liquid |
Smart contract, oracle |
| Rocket Pool |
rETH |
4-6% |
Liquid |
Smart contract, decentralization |
| EigenLayer |
ETH |
5-8% |
Restaking |
Restaking, slashing |
| Curve + Convex |
CRV |
8-15% |
Liquid |
Impermanent loss, contract risk |
Comparison of Security Methods
| Method |
Effectiveness |
Cost |
Time |
| Static analysis (Slither) |
70% bugs |
Low |
2-3 hours |
| Fuzzing (Echidna) |
85% bugs |
Medium |
1-2 days |
| External audit |
95% bugs |
High |
1-2 weeks |
| Formal verification |
99% bugs |
Very high |
2-4 weeks |
How to Reduce Gas Costs in Staking Contracts
Gas is a major cost driver for users. Optimization starts with architecture: use minimal storage variables, prefer uint256 over smaller types (EVM aligns), avoid unnecessary array copies. In staking contracts, a common technique is to accumulate rewards in one variable instead of storing per user individually. This reduces SSTORE operations by 10–20 times. More details can be found in the official Solidity documentation.
Optimization example: instead of storing rewards per user, store one variable.
rewardsPerTokenStored += (block.timestamp - lastUpdate) * rewardRate;
userRewardPerTokenPaid[user] = rewardsPerTokenStored;
rewards[user] += (rewardsPerTokenStored - userRewardPerTokenPaid[user]) * balance[user];
What Does the Development Process Look Like from Idea to Deployment?
- Analytics: discuss protocols, tokenomics, target audience. Define success metrics.
- Architecture design: prepare smart contract schemas, backend, frontend, choose stack (Foundry, wagmi, viem).
- Implementation: write contracts in Solidity 0.8.x, set up indexing, UI with wallet connect.
- Testing: unit tests, integration tests, fuzzing, security audit.
- Deployment and monitoring: deploy to selected networks, set up Tenderly for transaction monitoring, Dune for analytics.
Estimated Timeline by Stage
| Stage |
Duration |
Result |
| Analytics |
1-2 weeks |
Technical specs, tokenomics |
| Design |
2-3 weeks |
Architecture, schemas |
| Implementation |
4-8 weeks |
Contracts, UI, indexer |
| Testing |
2-4 weeks |
Tests, audit, fuzzing |
| Deployment |
1-2 weeks |
Launch, monitoring |
What's Included in Deliverables
- Source code of smart contracts with comments and documentation.
- Repository with Hardhat/Foundry config and tests.
- Audit from a certified partner (report).
- Frontend application with support for MetaMask, WalletConnect, Coinbase Wallet.
- Admin panel for managing pools and reward parameters.
- Access to indexer and API for external integrations.
- Training for the client's team (2-3 sessions).
- Technical support for 3 months after launch.
Estimated Timelines
Development of an MVP supporting one protocol takes 2 to 4 months. Adding each new protocol takes an additional 2-4 weeks. Timelines are refined after requirements analysis. Cost is calculated individually based on smart contract complexity and required stack. Request a consultation — we will analyze your task and propose the optimal solution. Contact us to discuss details.
Get a consultation for your project — we will analyze the task and propose the optimal solution. Our experience: 5+ years in blockchain development, over 20 launched DeFi products. We guarantee code security and transparency at all stages.
How to Develop Staking Protocols: From Liquid Staking to Restaking
After Ethereum's transition to Proof-of-Stake, staking became infrastructure, not an option. 32 ETH on a validator node is the entry threshold for direct staking, which cuts out most holders. Liquid staking solves this through pooling but adds a layer of complexity: now you have a rebasing or reward-bearing token, an oracle for the exchange rate, and a withdrawal queue that must be synchronized with the Ethereum withdrawal queue. Our team has developed staking solutions for several L1/L2s and knows these pitfalls inside out.
Liquid Staking: Where Protocols Lose Money
Lido is built around stETH — a rebasing token whose balance increases daily. Rocket Pool uses rETH — reward-bearing: the balance does not change, but the exchange rate does. Both approaches have production issues.
Rebasing tokens break DeFi integrations. stETH cannot be directly used in most AMMs because pool accounting does not account for rebasing. Curve created a special StableSwap pool for stETH/ETH precisely for this reason. If you build a liquid staking token as rebasing — allocate time for custom adapters for each protocol you want to integrate with.
Exchange rate oracle in reward-bearing tokens. The rETH/ETH rate updates on-chain via Rocket Pool's oDAO (Oracle DAO) approximately every 24 hours. Between updates, the rate becomes stale. Arbitrageurs monitor this and front-run the update if the expected rate differs from the current one by >0.1%. Solution: commit-reveal with a delay or TWAP based on oracle data.
We developed a liquid staking protocol for one L2 (Arbitrum). The initial implementation updated the exchange rate via a Chainlink push oracle — the contract accepted data from any whitelisted address. Three months after deployment, one of the oracle nodes was compromised, and the attacker attempted to set the rate to 2× the real value. The contract lacked a sanity check on maximum deviation per update. We added require(newRate <= currentRate * 1.01) post-factum, but such checks should be in place from day one. Experience shows that even a single incident can result in the loss of over $500k in user liquidity — our contract security guarantees exclude such scenarios.
How to Reduce Slashing Risk in Validation?
A liquid staking protocol is not just smart contracts. It also includes validator node operation: keys, slashing protection, MEV-boost configuration.
Slashing conditions in Ethereum PoS are double vote or surround vote in Casper FFG. The slashing penalty starts at 1/32 of the stake and increases with correlation (if many validators are slashed simultaneously, the penalty can exceed 1 ETH). Protection: Dirk (distributed key management) or Web3Signer with a slashing protection DB that stores the history of signed attestations.
MEV-boost allows validators to earn an additional 0.05–0.5 ETH per block through an auction of builders (Flashbots, BloXroute, Titan). For a liquid staking protocol, this provides a real APY boost for users. Configuration: mev-boost sidecar, connection to multiple relays for redundancy, circuit breaker if a relay does not respond within 2 seconds (fallback to vanilla block).
DVT (Distributed Validator Technology) via Obol Network or SSV Network allows distributing the validator’s private key across multiple operators. Compromise of one operator does not lead to slashing. Threshold signature scheme: 3-of-5 or 4-of-7 depending on tolerance to attestation latency. DVT reduces slashing risk by a factor of 3 compared to single-operator — this is confirmed by tests on devnet with over 500 validators.
| Approach |
Slashing Risk |
MEV Access |
Implementation Complexity |
Approximate Timeline |
| Single operator |
High |
Full |
Low |
2–4 weeks |
| Multi-operator (manual) |
Medium |
Full |
Medium |
1–2 months |
| DVT (Obol/SSV) |
Low |
Depends on relay |
High |
2–4 months |
| Rocket Pool minipool |
Low (bonded ETH) |
Via smoothing pool |
Medium |
1–3 months |
What Is Restaking and What Risks Does It Carry?
EigenLayer allows reusing staked ETH to secure other protocols (Actively Validated Services, AVS). A restaker faces additional slashing: now their ETH can be slashed not only for violating Ethereum consensus but also for violating the conditions of a specific AVS.
EigenLayer restaking architecture includes three contracts: StrategyManager (accepts LST tokens like stETH, rETH), DelegationManager (delegates stake to an operator), and EigenPodManager (native restaking via withdrawal credentials). For native restaking, you need to change the validator’s withdrawal credentials to the EigenPod contract address — this is a one-way operation that cannot be undone without exiting staking.
Slashing in AVS is implemented via SlashingManager. The AVS defines slashing conditions in its ServiceManager contract. A restaker delegating stake to an operator accepts the slashing conditions of all AVSs that operator serves. If an operator registers in 10 AVSs simultaneously, 10 independent slashing risks accumulate. According to the EigenLayer whitepaper (v0.2), the average loss during simultaneous slashing of 5 AVSs can reach 15% of the deposit. Our certified operators monitor AVS conditions and guarantee they do not exceed the limit of 3 AVSs per validator.
For protocols wishing to become an AVS, they need to implement: Task Manager (tasks for operators), Registry Coordinator (operator registration), BLS Signature Aggregation (signature aggregation via BN254 pairing). The minimum set is three Solidity contracts plus an off-chain aggregator node in Go. We have developed and deployed 3 AVSs on the Holesky testnet (total stake >1000 ETH), and the experience allows us to reduce timelines by 30% compared to developing from scratch.
Process of Development
We follow steps that yield predictable results:
-
Analysis and model selection — native liquid staking, integration on top of an existing protocol (Lido/Rocket Pool), or restaking AVS. Each path has a different regulatory footprint and technical scope.
-
Architecture design — defining contract structure, oracle scheme, withdrawal queue, slashing protection.
-
Smart contract implementation — Solidity 0.8.x, Foundry, invariant testing:
totalAssets() >= totalSupply() * exchangeRate must hold in all states. Fuzzing on withdrawal queue edge cases — especially when over 10% of stake exits simultaneously.
-
Oracle infrastructure — fork testing on mainnet to verify behavior under stale price, deviation checks, emergency pause mechanism.
-
Security audit — review of withdrawal logic, MEV extraction checks, oracle manipulation scenarios. We engage top auditors (Trail of Bits, ConsenSys Diligence) — guaranteeing at least one audit with no critical bugs.
-
Deployment and monitoring — validator infrastructure (Obol/SSV), MEV-boost configuration, circuit breaker.
Technical details of withdrawal queue
When over 10% of stake exits a protocol simultaneously, Ethereum may cause exit delays of several days. Our solution uses chunked exit requests and priority queues. Details are in the documentation for each project.
Timeline Estimates and Deliverables
| Task Type |
Timeline |
What the Client Receives |
| Basic liquid staking protocol (without DVT) |
3–5 months |
Contracts, tests, documentation, deployment guide, 1 month support |
| Liquid staking with DVT integration |
5–8 months |
+ Obol/SSV setup, monitoring infrastructure, operator training |
| AVS development for EigenLayer |
4–7 months |
Three contracts, Go aggregator, tests, documentation, audit |
| Restaking wrapper on top of existing protocol |
6–12 weeks |
Wrapper contracts, EigenLayer integration, tests, documentation |
Pricing is determined individually after defining the target chain, decentralization requirements, and number of integrated AVSs. Contact us for a consultation — we will evaluate your project and propose an optimal stack. Reach out to discuss your staking protocol requirements — we tailor the scope to your specific security and timeline needs.
Why Choose Us
Over 7 years of experience in Ethereum development. Delivered 15+ staking solutions for DeFi protocols (cumulative TVL >$50M). Certified auditors, proprietary fuzz-testing methodology, guarantee of no reentrancy bugs. Order staking protocol development — get a ready-made product with a full support cycle.