Skip to main content

Overview

Each Safe Harbor agreement defines bounty terms. Understanding these ensures you receive fair compensation.

Read Bounty Terms

BountyTerms memory terms = agreement.getBountyTerms();

uint256 percentage = terms.bountyPercentage;      // e.g., 10 for 10%
uint256 cap = terms.bountyCapUsd;                 // e.g., 5_000_000
bool canRetain = terms.retainable;                // Keep from recovered?
IdentityRequirements identity = terms.identity;   // KYC level
uint256 aggregateCap = terms.aggregateBountyCapUsd;  // Total cap across whitehats

Calculate Your Bounty

Bounty = min(RecoveredValue × BountyPercentage%, BountyCapUsd)

Examples

RecoveredPercentageCapYour Bounty
$500K10%$5M$50K
$10M10%$5M$1M
$100M10%$5M$5M (capped)

Convert USD Cap to Tokens

Caps are in USD. Convert using current prices:
uint256 capUsd = terms.bountyCapUsd;  // $5,000,000
uint256 ethPrice = 2000;               // Get from oracle
uint256 capInEth = capUsd * 1e18 / ethPrice;  // 2,500 ETH

Retainable vs Return-All

Retainable (true)

uint256 recovered = 100 ether;
uint256 bounty = (recovered * 10) / 100;  // 10 ETH

// Keep bounty, send rest
payable(recovery).transfer(recovered - bounty);  // Send 90 ETH
// You keep 10 ETH

Return-All (false)

// Send everything
payable(recovery).transfer(recovered);  // Send 100 ETH

// Protocol pays bounty separately through their own process

Aggregate Bounty Cap

If aggregateBountyCapUsd > 0, total bounties across all whitehats are capped:
Total Payouts ≤ AggregateBountyCapUsd
If multiple whitehats exploit the same issue, they share the aggregate cap proportionally.
Aggregate caps cannot be used with retainable = true.

Get Recovery Address

string memory recoveryStr = agreement.getAssetRecoveryAddress("eip155:325");
// Parse to address for transfers

Tax Considerations

Bounties are likely taxable income. Keep records of:
  • Date of attack
  • Assets recovered (types and amounts)
  • Bounty received
  • USD value at time of receipt

Safe Harbor Protection

Understand your legal protections