Review Your First Request
Evaluate an attack mode request as a DAO member — check for mainnet copycats, verify terms, and approve or reject.
Prerequisites: You must be the registry moderator or part of the DAO multisig to approve or reject requests.
Prefer a UI? The Approvals dashboard lists every pending request with full protocol details, and lets you approve or reject directly once you connect the moderator Safe — no cast needed. The steps below show the equivalent on-chain calls.
Find Pending Requests
Watch for AgreementStateChanged events where newState = 2 (ATTACK_REQUESTED), or query directly:
cast call 0x22134e878c409a0Eab7259d873b38e26Ca966d3C \
"getAgreementState(address)(uint8)" \
$AGREEMENT_ADDRESS \
--rpc-url https://testnet.battlechain.com
| 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 0x22134e878c409a0Eab7259d873b38e26Ca966d3C \
"approveAttack(address)" \
$AGREEMENT_ADDRESS \
--rpc-url https://testnet.battlechain.com \
--account battlechain
This moves the agreement to UNDER_ATTACK, enables Safe Harbor protection, and opens the contracts to whitehats.
Reject
cast send 0x22134e878c409a0Eab7259d873b38e26Ca966d3C \
"rejectAttackRequest(address)" \
$AGREEMENT_ADDRESS \
--rpc-url https://testnet.battlechain.com \
--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