soroban-guard

Real-token results

Every verdict on this page is read from the report of an actual run:soroban-guard 0.4.5 against 4 live Stellar testnet contracts on 2026-10-19, with --format json. The reports are committed with this page and the table is built from them, so nothing here was copied by hand. Together: 58 pass · 2 fail · 4 unverifiable.

Every check that writes links to the transaction it settled — click a ✓ to see it on the ledger.

Stellar testnet · soroban-testnet.stellar.org

CheckSoroban Example Token (SET)16 passOpenZeppelin Pausable Token (OZPT)16 passNative XLM (SAC)10 pass · 2 failCustom-asset SAC (TEST)16 pass
decimalspassedpassedpassedpassed
balancepassedpassedpassedpassed
allowancepassedpassedpassedpassed
namepassedpassedpassedpassed
symbolpassedpassedpassedpassed
transfer_fromunauthorizedpassedpassedpassedpassed
transferzero amountpassedpassedunverifiablepassed
transferselfpassedpassedunverifiablepassed
transfernegative amountpassedpassedpassedpassed
transferover balancepassedpassedpassedpassed
transferpassedpassedunverifiablepassed
approvepassedpassedpassedpassed
transfer_frompassedpassedunverifiablepassed
burnpassedpassedfailedpassed
burn_frompassedpassedfailedpassed
transfer_fromexpiredpassedpassedpassedpassed

The contracts

Native XLM, the asset that pays the fee

Transaction fees are paid in XLM, so on the XLM contract the account that signs also pays the fee out of the balance being measured. Where that fee cannot be separated from the movement a check measures — transfer, transfer_from, and their zero-amount and self variants — the tool withholds the verdict instead of guessing. The calls did settle: each of those cells links to its transaction.

The two failures are deliberate on the contract's side: the Stellar Asset Contract refuses burn andburn_from on the native asset ("operation invalid on native asset"), so those SEP-41 clauses go unmet by a known property of XLM rather than by a defect this run discovered.

Run them yourself

The four were live on testnet on 2026-10-19. Testnet is reset from time to time, and the two example tokens, compiled at the commits listed above and deployed for this page, go with it; the asset contracts are the network's own.

Without keys, anyone gets the five reads. The writes need a holder with at least five units and a second, funded account. The two example tokens mint only to their admin, so their write rows can be repeated by whoever holds their units, not by any visitor.

# the reads
npx soroban-guard CDABMBRIDJKHHNYHEQLE3GEINB5EKHGW62SDEXEOKNPKUF2MEJQVYLV5

# all sixteen: a holder and a second account, both funded on testnet
OWNER_SECRET=$(stellar keys secret owner) \
SPENDER_SECRET=$(stellar keys secret spender) \
  npx soroban-guard <contract-id> --format json

--format json writes the report this page is built from; --format md writes a Markdown report that pastes straight into a PR.