Skip to content

Subaccords

A specialized Juror pool. Permissionless to create; one per (creator, domain_ref).

create_subaccord params

Param Type Notes
domain_ref [u8; 32] Immutable identity hash. != [0;32]. Namespaces the PDA.
evidence_spec [u8; 32] Immutable evidence-format hash. ADR-0006
staking_token Pubkey SPL mint for juror capital. ADR-0002
min_stake u64 Draw eligibility threshold (in staking_token).
aggregation Aggregation Dispute-kit tally rule: Plurality (option-index votes) or Median (scalar u64 votes — ADR-0025). ADR-0019
coherence_tol_bps u16 Median coherence band in bps of the final median: coherent iff \|vote − ruling\|·10_000 ≤ ruling·tol_bps. Default 100 (±1%); 0 = exact; validated ≤ 10_000. Inert for Plurality. Immutable — frozen onto CaseTerms per dispute (ADR-0025).
alpha_bps u16 Slash factor in bps. loss = alpha_bps · min_stake / 10_000.
review_window u64 seconds
commit_window u64 seconds
reveal_window u64 seconds
max_appeals u8 ≤ MAX_APPEALS (3). The sole panel-shape knob — round-1 size is the fixed INITIAL_NUM_JURORS (=3). ADR-0019
fee_per_juror u64 in staking_token.
authority Pubkey Pubkey::default() ⇒ immutable. Else signs propose/execute.
evidence_operator Pubkey ADR-0006 re-encryption service.

PDA

["subaccord", creator, domain_ref]

Mutability

  • Immutable: domain_ref, evidence_spec, aggregation, coherence_tol_bps, min_jury_size, shortfall_policy.
  • Mutable only via 48h timelock (propose_subaccord_update → execute_subaccord_update): min_stake, alpha_bps, review/commit/reveal_window, appeal_window, max_appeals, fee_per_juror, authority, evidence_operator, reveal_threshold_bps, max_draw_attempts (ADR-0028; Median pools require reveal_threshold_bps > 0). aggregation and coherence_tol_bps are immutable (ADR-0019/0025) — they define the pool's coherence game.
  • authority == Pubkey::default() ⇒ propose_subaccord_update reverts with ImmutableSubaccord.
accord::create_subaccord(
    ctx,
    domain_ref, evidence_spec, staking_token, min_stake,
    alpha_bps,
    review_window, commit_window, reveal_window,
    max_appeals, aggregation, fee_per_juror,
    authority,                  // Pubkey::default() => immutable
    evidence_operator,
)?;
import { createSubaccord, findSubaccordPda, Aggregation } from "@useaccord/sdk";

const [subaccord] = await findSubaccordPda(
  accord.PROGRAM_ID,
  creator,
  domainRef, // 32-byte hash
);
await createSubaccord(accord.adapter, accord.PROGRAM_ID, {
  creator,
  domainRef,
  evidenceSpec,
  stakingToken,
  minStake,
  aggregation: Aggregation.Plurality,
  alphaBps,
  reviewWindow,
  commitWindow,
  revealWindow,
  maxAppeals,
  feePerJuror,
  authority,
  evidenceOperator,
});

Why: ADR-0005. Param update flow: ADR-0005, instructions.