مستندات دارا
مرجع فنیعملیات
این صفحه فقط به انگلیسی موجود است.

Incident response

Incidents are how the platform reports what it must never fix silently. Each has a kind, a severity and two flags: blocks_trading (closes the trading gate: no BUY, SELL or TRANSFER) and blocks_issuance (no issue, burn or refill for the asset). Open incidents are under Admin → Reconciliation; an open incident with the same source is reused, so repeated detection does not flood operators. Resolving needs a note and is audited.

General procedure

  1. Acknowledge in the console (owner = you). Do not resolve until the cause is understood.
  2. Contain: if money or keys may be at risk and the incident does not already block trading, use Admin → Emergency (pause one asset or all). Freeze affected customers if their accounts are involved.
  3. Investigate with the evidence the incident links: the reconciliation run (node and ledger read), the chain movements (Dara Scan shows each movement and whether a platform intent explains it), the audit log.
  4. Correct only through the platform's own flows (issue/burn/refill with the human signers, clawback, cash entries with four-eyes). Never edit balances in the database.
  5. Resolve with a note naming the cause and the correction. Then resume: resolve the incident, then resume each paused asset (two deliberate steps).

Kinds

KindSeverity / blocksMeansResponse
UNEXPLAINED_TOKEN_MOVEMENTCRITICAL, trading + issuanceOne of our assets moved with no matching intent (no MEMO_HASH of ours)Key-compromise playbook below
UNEXPECTED_AUTHORITY_CHANGECRITICAL, tradingA signer, threshold or flag of one of our accounts changed without an intentKey-compromise playbook; verify the account layout (ceremony.Verify runs at every start)
UNKNOWN_HOLDERCRITICAL, trading + issuanceAn authorized trustline of our asset on an account we did not createAUTH key or issuer compromise: revoke the trustline (freeze path), claw back, rotate AUTH
SUPPLY_OUTSIDE_TRUSTLINESCRITICALOur asset in a claimable balance, liquidity pool or contract balanceIdentify how it got there (it needs an authorized holder's key); claw back where possible
UNEXPECTED_OPERATIONCRITICALA DEX offer or other operation on our asset by our accounts that no intent asked forTreat as key misuse
SAC_DEPLOYEDWARNINGSomeone deployed the asset's Stellar Asset Contract (anyone may)No funds can move through it without authorized holders; note it, watch SUPPLY_OUTSIDE_TRUSTLINES
INDEXER_GAPCRITICALThe indexer cannot read a ledger it needs (outside the node's history)Check the Galexie lake (deploy/datalake/; refill a gap with galexie scan-and-fill) and the backend's BACKFILL_* settings; STELLAR_RPC_RUNBOOK.md
CHANNEL_SEQUENCE_FOREIGNCRITICALSomeone else used a channel account's sequence; the channel is quarantinedChannel key compromise: rotate by replacing channels (KEY_MANAGEMENT.md)
CHAIN_OPERATION_UNRESOLVEDCRITICALAn intent's outcome could not be proven (RECONCILIATION_REQUIRED); its holds stayFind each attempt's hash on-chain; if one applied, its effect is real: post it through the handler path with engineering; if none can ever apply (maxTime passed on every node), fail it
AUTHORIZATION_CHANGE_FAILEDCRITICALA freeze or unfreeze did not apply on-chainRetry from the console; check AUTH key and issuer flags
RESERVE_SHORTFALLCRITICAL, issuance + BUY for the assetSupply above unexpired backingNew approved reserve snapshot, or burn from COLD
EMERGENCY_PAUSECRITICALA Platform Admin paused tradingResolve when the reason is gone, then resume assets
reconciliation checksper checkOne kind per failing checkRECONCILIATION_RUNBOOK.md

Key-compromise playbook

  1. The incident already stops trading. Pause everything (Emergency) to stop issuance too.
  2. Identify the key: the movement's source account and the signers that could have signed it (AUTHORITY_MATRIX.md §2).
  3. Rotate it through the human signers (KEY_MANAGEMENT.md); for a channel, replace the channels.
  4. Contain the tokens: freeze the receiving accounts if they are ours, claw back what was moved, re-issue to the rightful holders under normal four-eyes and signatures (CLAWBACK_POLICY.md).
  5. Run reconciliation; it must pass before trading resumes. Write the post-incident report.

Communication

Customer-facing status comes from the gate (/v1/status): the wallet shows "trading paused" automatically. Any statement beyond that (cause, impact, timeline) is the operator's decision and must not include customer data.

در این صفحه