Ammalgam Bug Bounty
Maximum reward
$25,000
Severity
Max. Reward
Critical$25,000
High$5,000
Deposit required
$50
Findings submitted
88
Start date
9 Jul 2026
KYC
Required to join
Please sign in as a researcher to join the bounty.
Log inIn scope
Severity
Min and Max Reward
Critical$1,000 to $25,000
High
$500 to $5,000
Contract upgrades after the first round of bug bounty feedback with added features around the schedule of interest rates based on utilization.
Name | Description | Asset |
|---|---|---|
| Interest V1.1.0 | External Library used to calculate interest accrual. | |
| Validation V1.1.0 | External library used to validate new loans at time of creation. | |
| Liquidation V1.1.0 | External library used to compute liquidations. | |
| SaturationAndGeometricTWAPState V1.1.0 | External contract used to compute time weighted average price and track liquidation saturation risk across price curve. | |
| AmmalgamPair V1.1.0 | The pair contract implementation with core logic and entry points for all interactions. | |
| PairLockedLoans V1.1.0 | A version of AmmalgamPair with some lending functionality disabled to be available to upgrade to in the case of an emergency. | |
| PairBlockLendingFundRemoval V1.1.0 | A version of AmmalgamPair with some lending functionality disabled to be available to upgrade to in the case of an emergency. | |
| PairFrozen V1.1.0 | A version of AmmalgamPair with all functionality disabled to be available to upgrade to in the case of an emergency. | |
| PairBlockedBorrowLiquidity V1.1.0 | A version of AmmalgamPair with borrow liquidity functionality disabled to be available to upgrade to in the case of an emergency. | |
| PairBlockedBorrow V1.1.0 | A version of AmmalgamPair with borrow underlying asset functionality disabled to be available to upgrade to in the case of an emergency. | |
| PairBlockedAllBorrow | A version of AmmalgamPair with borrowing of liquidity and underlying asset functionality disabled to be available to upgrade to in the case of an emergency. |
Out of scope
Out of Scope
The following are considered known issues and are not eligible for rewards. For generic exclusions, see the Cantina Bug Bounty Out-of-Scope Policy.
- Any issue that does not result in an on-chain loss of funds
- Informational findings and design choices related to the protocol
- Issues that are ultimately user errors and can easily be caught in the frontend (for example, transfers to
address(0)) - Rounding errors and off-by-one behavior in the ERC-4626 helper interfaces that do not result in a loss of funds
- Relatively high gas consumption
- Findings involving
borrowLiquidity()on contracts deployed in July of 2026. - Loss of funds resulting from violent market price movements, specifically any price increase greater than 33% or price decrease greater than 25% within a single block or 8-second period, or a repeated movement of price over multiple blocks.
- Use of for loop to pass time and
sync()without any validation of economic viability of liquidations at each iteration. - Behavior on any L2 or alternative L1 that we are not deployed on.
Submissions that depend on price change and passing of time with no checks for potential interventions at each block or 8 second period of time. If you POC relies on a large price change in one block, or multiple blocks followed by a passing of time to update the TWAP, it will be auto rejected. Below is an example of a function used within a submitted POC that will be automatically rejected with no deposit refund.
function _moveAndSettle(uint256 yIn, uint256 xOut) private { // A separate market actor moves spot down by about 24.9%, within the bounty bound. vm.startPrank(MARKET); y.transfer(address(pair), yIn); pair.swap(xOut, 0, MARKET, ""); vm.stopPrank();
// Hold the new market price long enough for the configured TWAP state to // converge without any additional same-block price movement. for (uint256 i; i < 60; ++i) { vm.warp(block.timestamp + 8); pair.sync(); }}Default Out of Scope
Standard out-of-scope items per the Cantina Bug Bounty Out-of-Scope Policy.