Guardian's review of EthenaLock for Ethena, published October 2026. The report records 3 findings, including 3 informational.
- Published
- Review window
- September 30 to October 6, 2026
- Language
- Solidity
- Chains
- Ethereum
- Sector
- Stablecoins, Payments
- 0 Critical
- 0 High
- 0 Medium
- 0 Low
- 3 Informational
Scope
-
GuardianOrg/mirror-chainnodesorg-ethenapay-wallet-contracts-4705b4da
64a8bf6100e1a12efe0a
2 files in scope · 230 nSLOC
| File | nSLOC | Lines |
|---|---|---|
script/DeployEthenaLock.s.sol | 60 | 92 |
src/EthenaLock.sol | 170 | 294 |
Findings 3
-
I-01 Informational Incorrect NatSpec for ZeroAddress Documentation Resolved
Description
The NatSpec for
ZeroAddressincorrectly states that it is raised when the constructor receives a zeroadmin_address. That condition actually raises the inheritedOwnableInvalidOwnererror.ZeroAddressis used when the ENA token address, the wallet passed tosunsetRelease, or the recipient passed torescueis zero.This mismatch can mislead integrators relying on generated documentation to identify and handle reverts.
Recommendation
Update the NatSpec to describe the actual conditions that raise
ZeroAddress.Resolution
Ethena Team: Fixed in 757f2d1
-
I-02 Informational Incorrect permanent insolvency claim Documentation Resolved
Description
The EthenaLock documentation states:
A shortfall of even 1 wei freezes every position permanently, with no owner lever
However,
_assertSolventcompares the current token balance againsttotalLockedAll. Anyone can transfer tokens directly to the contract without increasingtotalLockedAllor creating a position. Once the transfer covers the shortfall, matured withdrawals can succeed again, assuming normal token transfers.This description could mislead operators during incident response, causing them to overlook a valid recovery path and treat recoverable funds as permanently inaccessible.
Recommendation
Update the documentation to explain that withdrawals remain blocked while the contract is insolvent and that direct token transfers sufficient to cover the deficit can restore solvency.
Resolution
Ethena Team: Fixed in f30e52e
-
I-03 Informational Misleading custom error argument names Documentation Resolved
Description
BelowMinLockandAmountOverflowname their first argumentreceived, but the reported value does not always represent tokens received during a deposit.BelowMinLockcan report the requested deposit amount, the actual amount received, or the remaining locked balance after a withdrawal.AmountOverflowreports the total position balance after adding the deposit.These misleading names may cause integrators to misinterpret decoded revert data.
Recommendation
Consider renaming the argument to
amountinBelowMinLockandpositionAmountinAmountOverflow.Resolution
Ethena Team: Fixed in e1a12ef
No findings match.
More from Ethena
All 8 reportsPut your code through the same review.
This review started with a conversation about scope. Tell us what you are building and we will plan yours with you.