A ten-minute tour of all three tools.
Save a base64 XDR string to a file and point lens at it:
lens explain --file tx.xdrYou get a readable summary: what the transaction was trying to do, whether it succeeded, and if not, which operation failed and why.
To see the full structure instead of a summary:
lens decode --file tx.xdrTo get machine-readable output for scripting:
lens decode --file tx.xdr --json | jq '.operations'When two transactions differ and you can't see how:
lens diff --file expected.xdr --file actual.xdrPoint prism at a deployed contract and leave it running:
prism events --contract <CONTRACT_ID>Events stream in decoded as new ledgers close. Add --json for NDJSON output that pipes into other tools:
prism events --contract <CONTRACT_ID> --json | jq 'select(.topic[0] == "transfer")'Add focus to your Go project and use it where you'd otherwise compare strings:
import "github.com/stellar-optics/stellar-focus"When an assertion fails, the output is a structural diff of the decoded values, not two walls of base64.
See Writing assertions for the full API.
- Why XDR is hard to read — the background, if the above felt like magic
- How the three tools fit together — the design