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
| Value | State |
|---|---|
2 | ATTACK_REQUESTED — needs your review |
3 | UNDER_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