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
All contracts that can not be upgraded.
Name | Description | Asset |
|---|---|---|
| AmmalgamFactory V1 | Factory used to create new AmmalgamPairs. | |
| BeaconController V1 | A contract that managed contracts that can be used to upgrade to in the BeaconProxy contract. | |
| TrasparentUpgradeableProxy V1 | Proxy Contract for the SaturationGemoetriTWAPState contract. | |
| HookRegistry V1 | A admin controlled registry of allowed token hooks that can be called. | |
| TimelockController V1 | A contract used to protect the proxies to be upgraded immediately. | |
| ERC20LiquidityTokenFactory | The factory that deploys the Liquidity receipt token for a new pair. | |
| ERC4626DepositTokenFactory | The factory that deploys the underlying asset deposit receipt token for a new pair. | |
| ERC4626DebtTokenFactory | The factory that deploys the debt receipt token for the underlying assets for a new pair. | |
| ERC20DebtLiquidityTokenFactory | The factory that deploys the liquidity debt receipt token for a new pair. |
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.