How to Request Attack Mode

Submit your contracts for DAO approval to enter attack mode

Overview

After deploying contracts and creating an agreement, request attack mode to enable Safe Harbor protection and allow whitehats to test your contracts.

Prerequisites

Before requesting:

  1. Contracts deployed (via BattleChainDeployer or any other method)
  2. Agreement created via AgreementFactory
  3. Agreement adopted via adoptSafeHarbor()
  4. Commitment window extends at least 7 days

Request Attack Mode

attackRegistry.requestUnderAttack(agreementAddress);

This validates:

  • Agreement was created by official factory
  • You're the agreement owner
  • All contracts were deployed via BattleChainDeployer
  • Commitment window meets minimum requirements

For Non-BattleChainDeployer Contracts

If contracts weren't deployed via BattleChainDeployer:

attackRegistry.requestUnderAttackByNonAuthorized(agreementAddress);
⚠️

This path requires extra DAO scrutiny since there's no on-chain proof of deployment.

Skip Attack Mode Entirely

To go directly to production without attack testing:

attackRegistry.goToProduction(agreementAddress);

This immediately sets state to PRODUCTION with no Safe Harbor protection.

Check Request Status

IAttackRegistry.ContractState state = attackRegistry.getAgreementState(agreementAddress);

// 2 = ATTACK_REQUESTED (waiting for DAO)
// 3 = UNDER_ATTACK (approved!)
// 0 = NOT_DEPLOYED (rejected or not requested)

What Happens Next

OutcomeTimeline
DAO ApprovesImmediate → UNDER_ATTACK
DAO RejectsImmediate → NOT_DEPLOYED
DAO Takes No Action14 days → PRODUCTION (auto-promote)

Troubleshooting

ErrorSolution
InvalidAgreementAgreement not from official factory
NotAgreementOwnerOnly agreement owner can request
AgreementOwnerNotAuthorizedCall authorizeAgreementOwner() for each contract
InsufficientCommitmentExtend commitment window to 7+ days
EmptyContractArrayAdd contracts to agreement's BattleChain scope

How to Promote to Production

Next: Promote after stress testing