Reports

Smart Contract Security Assessment

Twyne liquidation incentive

Twyne is a credit delegation protocol that lets borrowers rent unused borrowing power from other lenders to boost their Liquidation LTV. Lenders earn additional yield while borrowers get to ramp up their leverage or insulate their debt.

2
Issues
0
C/H/M
Period
Dec 15, 2025 - Dec 15, 2025
Auditors
Adriro, HHK

Review Summary

Protocol Overview

Twyne is a credit delegation protocol that lets borrowers rent unused borrowing power from other lenders to boost their Liquidation LTV. Lenders earn additional yield while borrowers get to ramp up their leverage or insulate their debt.

Protocol
Twyne
Timeline
Dec 15, 2025 - Dec 15, 2025
Audit Team
Adriro, HHK

Scope

This audit covers 2 pull requests totaling approximately 250~ lines of code across 1 day of review.

Overall Assessment

Evaluation Matrix

access control

mathematics

complexity

libraries

decentralization

code stability

documentation

monitoring

testing

Key Findings

Findings Summary

0
Critical
0
High
0
Medium
1
Low
1
Informational
0
Gas
L-1 Finding

L-1: Missing slippage protection for liquidators

Low

Description:

PR#187 introduces partial refunds for borrowers during liquidation. The refund amount depends on position health: closer to external liquidation means lower refunds, while liquidator incentives increase as positions become riskier for intermediate vault LPs.

Liquidators must now refund borrowers part of the collateral, but there is no function argument allowing liquidators to set a maximum acceptable refund amount.

Impact:

Low. Liquidators cannot protect against potentially unfavourable refund amounts.

Recommendation:

Add a uint256 maxBorrowerRefund argument to liquidate() and revert if the computed refund exceeds it.

Developer Response:

Acknowledged. We expect the liquidator to do these checks outside Twyne core protocol.

I-1 Finding

I-1: Use `_getExtLiqLTV()` in `EulerCollateralVault::_invariantCollateralAmount()`

Informational

Description:

The implementation of _invariantCollateralAmount() can call _getExtLiqLTV() instead of repeating the expression.

Impact:

Informational.

Recommendation:

Use _getExtLiqLTV() to retrieve the liquidation LTV of Euler's target vault.

Developer Response:

Acknowledged.

Final Remarks

This review focused on PR#187 of the Twyne codebase. The PR updates the collateral vaults to modify the incentive for liquidators: instead of receiving the full collateral of the borrower, they now receive an amount based on how dangerous the state of the vault is. The closer to external liquidation, the higher the reward following a specific equation described inside the whitepaper. The review did not result in any medium or above severity findings, highlighting the seriousness of the Twyne team.

Methodology

Severity Classification

Critical

Immediate threat to user funds or protocol integrity

Direct loss of funds, protocol compromise

High

Significant security risk requiring urgent attention

Potential fund loss, major functionality disruption

Medium

Important issue that should be addressed

Limited fund risk, functionality concerns

Low

Minor issue with minimal impact

Best practice violations, minor inefficiencies

Gas

Findings that improve gas efficiency

Increased transaction costs

Informational

Code quality and best practice recommendations

Reduced maintainability and readability