Review Your First Request

Evaluate an attack mode request as a DAO member — check for mainnet copycats, verify terms, and approve or reject.

⚖️
You are the DAO
A protocol wants to open their contracts for attack. You decide if they're allowed to.
Your job is to prevent abuse — mainly ensuring no one copies a live mainnet protocol onto BattleChain to have it "attacked" and drained under Safe Harbor cover.
ℹ️

Prerequisites: You must be the registry moderator or part of the DAO multisig to approve or reject requests.


Find Pending Requests

Watch for AgreementStateChanged events where newState = 2 (ATTACK_REQUESTED), or query directly:

cast call 0x9E62988ccA776ff6613Fa68D34c9AB5431Ce57e1 \
  "getAgreementState(address)(uint8)" \
  $AGREEMENT_ADDRESS \
  --rpc-url https://testnet.battlechain.com:3051
ValueState
2ATTACK_REQUESTED — needs your review
3UNDER_ATTACK — already approved

Get the Agreement Details

Pull the full agreement to review scope and terms:

IAgreement agreement = IAgreement(agreementAddress);
AgreementDetails memory details = agreement.getDetails();

string memory protocolName = details.protocolName;
BountyTerms memory terms = details.bountyTerms;
// terms.bountyPercentage, terms.bountyCapUsd, terms.retainable ...

Check which contracts are in scope and how they were deployed:

address[] memory contracts = agreement.getBattleChainScopeAddresses();

for (uint i = 0; i < contracts.length; i++) {
    address deployer = attackRegistry.getContractDeployer(contracts[i]);
    // address(0) = NOT deployed via BattleChainDeployer — extra scrutiny required
}

Review Checklist


Make Your Decision

Approve

cast send 0x9E62988ccA776ff6613Fa68D34c9AB5431Ce57e1 \
  "approveAttack(address)" \
  $AGREEMENT_ADDRESS \
  --rpc-url https://testnet.battlechain.com:3051 \
  --account battlechain

This moves the agreement to UNDER_ATTACK, enables Safe Harbor protection, and opens the contracts to whitehats.

Reject

cast send 0x9E62988ccA776ff6613Fa68D34c9AB5431Ce57e1 \
  "rejectAttackRequest(address)" \
  $AGREEMENT_ADDRESS \
  --rpc-url https://testnet.battlechain.com:3051 \
  --account battlechain

This returns the agreement to NOT_DEPLOYED. The protocol can fix whatever was wrong and resubmit.


Red Flags

⚠️

Reject or investigate further if you see:

  • Bytecode matches a known mainnet contract
  • Protocol name mimics a live protocol
  • No verifiable contact information
  • Bounty percentage above 25%
  • Non-BattleChainDeployer submission with no explanation

What's Next