Skip to content

Contract addresses are published at /docs/contracts.

Trust · Game of Splits docs

Security and audits

Who controls what, what nobody can touch and how the contracts were checked.

Audit status

How it was checked

There has been no third-party audit, so treat the contracts as unaudited. Here is what was done instead:

  • Two static analysers. Slither and Aderyn were run on the code, and again on the exact commit that was deployed. Every serious result was checked by hand. A second pass rechecked every result that had been dismissed.
  • Hundreds of tests. The suite of unit, fuzz, invariant and fork tests had 763 passing and 0 failing on the deployed code. The deep invariant run makes 500,000 random calls per property, checking things like “the contract always holds enough USDG to pay what it owes” and “a pause never blocks a claim or an unlock”.
  • Several review passes. Independent AI-assisted reviews and internal reviews went through each contract, and every reported issue was checked against the code. Each Medium finding was reproduced with a test before it was fixed. Four Medium findings were found and all four are fixed. No Critical or High finding was found.
  • Fixes come with tests. Each fix has a test that fails on the old code and passes on the new code.
  • Rehearsed before launch. The full deploy ran on testnet, then on a private copy of mainnet, including a deploy that was stopped partway and resumed.
  • Checked live on mainnet. After the deploy, reads on chain confirmed that the multisig Safe owns every owned contract with nothing pending, the deployer has no power left, and the timelocks are live. All 8 owned contracts have verified source on Blockscout.
  • No secrets in the code. The full git history of both repositories was scanned for keys and tokens.

The full write-up, with every finding, its status and the fix, is in the audits folder (opens in a new tab) of the contracts repository.

Who controls what

RoleCanCan’t
Owner (multisig Safe)Queue changes behind timelocks, pause new sales, revoke the keeperTouch Purses, claims, the Alms or Passes
KeeperSettle rounds, run buys and burns within capsSend bought tokens anywhere but the burn address or the Vault
PlayersShoot, claim, lock and unlockClaim for someone else

Timelocks

Booth and core settings
48 hours on mainnet
GameConfig (tokens, pass amount, split)
7 days and only between chapters
Attaching a Vault launcher
7 days, one time
Turning on Robin Among Thieves bonds
7 days
Revoking the keeper
Immediate

What always works

  • Claiming winnings, even while paused.
  • Unlocking a Pass after 24 hours.
  • Withdrawing an outlaw’s balance.
  • Ownership can’t be renounced and ownership moves in two steps.

Reporting a bug

Report security issues to support@gameofsplits.fun.