← All Recipes
Bazantic // Recipe

Audit a Common Arcade Prize Payout on Arc

By Baranaba Mugabane

audit-a-common-arcade-prize-payout-on-arc

Did a Common Arcade paid match allocate what the Arcade says it did? Reads the match's pool, payout accounting and settlement transaction hashes from the Common Arcade Payments gateway, then independently fetches every transaction receipt and escrow event from Arc Testnet through the Arc gateway. Decodes MatchCreated, Locked, RevenueShared and Settled from the ArcadeEscrow contract and checks that the onchain prize and fee equal the reported winner and fee allocations. Verifies escrow settlement allocations, not withdrawals into wallets. Returns a VERIFIED / MISMATCH / UNVERIFIABLE verdict with per-transaction evidence and explorer links. Neither service can answer this alone: Arcade knows what should have happened, Arc proves what did.

Recipe inputs
Complete fields before a run.
Common Arcade paid match ID: mat_ followed by a UUID.
Output example
Representative published output.
{
  "match": {
    "id": "mat_b0018dc5-6c0b-4978-a914-305de6f20090",
    "game": "Blackjack duel",
    "stage": "settled",
    "network": "arc-testnet",
    "pool_id": "0xa68148eeffd1ce8b89532a56774793c4c8e19559164719119ff18cbfd35709fc",
    "chain_id": 5042002,
    "release_id": "rel_blackjack_duel_v1",
    "escrow_contract": "0xbe529edf75ebeb609dcf7ab26783dc558b735851"
  },
  "checks": [
    {
      "pass": true,
      "check": "every transaction succeeded"
    },
    {
      "pass": true,
      "check": "every transaction targets the reported escrow contract"
    },
    {
      "pass": true,
      "check": "every escrow event topic[1] equals the reported pool ID"
    },
    {
      "pass": true,
      "check": "lifecycle order MatchCreated -> Locked -> Settled"
    },
    {
      "pass": true,
      "check": "Settled.prize equals the winner allocation"
    },
    {
      "pass": true,
      "check": "Settled.fee equals accounting.feeUnits"
    },
    {
      "pass": true,
      "check": "RevenueShared creator + platform equals the fee"
    }
  ],
  "onchain": [
    {
      "tx": "0x2aabb13c407b82f1113c4559601b3281f25a8e457893051419c18371f6912495",
      "events": [
        "MatchCreated"
      ],
      "status": "success",
      "explorer": "https://testnet.arcscan.app/tx/0x2aabb13c407b82f1113c4559601b3281f25a8e457893051419c18371f6912495",
      "to_escrow": true
    },
    {
      "tx": "0xd26913cae4bef0ec7a9c77cbabae6fe9b070146af05e49446145931295669938",
      "events": [
        "Locked"
      ],
      "status": "success",
      "explorer": "https://testnet.arcscan.app/tx/0xd26913cae4bef0ec7a9c77cbabae6fe9b070146af05e49446145931295669938",
      "to_escrow": true
    },
    {
      "tx": "0x289e91f364f675c5a5d1e95213f27636540fc8d702a57cc4253cb2c1b6ccff26",
      "events": [
        "RevenueShared",
        "Settled"
      ],
      "status": "success",
      "settled": {
        "fee_usdc": "0.000250",
        "prize_usdc": "0.009750"
      },
      "explorer": "https://testnet.arcscan.app/tx/0x289e91f364f675c5a5d1e95213f27636540fc8d702a57cc4253cb2c1b6ccff26",
      "to_escrow": true,
      "revenue_shared": {
        "creator_fee_usdc": "0.000000",
        "platform_fee_usdc": "0.000250"
      }
    }
  ],
  "summary": "The Arc escrow allocated this Blackjack duel exactly as Common Arcade reports: 0.00975 USDC to the winner and a 0.00025 USDC fee, all three transactions succeeded against the reported escrow and pool. This audit does not verify withdrawals into wallets.",
  "verdict": "VERIFIED",
  "reported": {
    "fee_usdc": "0.000250",
    "winner_usdc": "0.009750",
    "creator_usdc": "0.000000",
    "platform_usdc": "0.000250",
    "prize_pool_usdc": "0.010000"
  },
  "verification_scope": "escrow-settlement",
  "withdrawals_verified": false
}