What is compared
After every transaction, the two builds must have left the same observable state.
What is compared
| Compared | |
|---|---|
| Account bytes | Every account's data, byte for byte. |
| Lamports | Every account's balance. |
| Ownership and metadata | Each account's owner, executable flag and rent metadata. |
| Logs | Every log line, events included. |
| Return data | The program that set it and its bytes. |
| Errors | The transaction error, exactly as the runtime reports it. |
The one line that is not compared
The runtime’s own Program <address> consumed N of M compute units lines differ by design: that difference is the tare. Nothing else in the logs is skipped.
How the two runs are set up
- Each build is loaded at the same program address.
- Both start from the same accounts, built-ins, SPL programs and sysvars, under the same metering.
- Sibling programs in the workspace use the same stock binary on both sides.
- State is kept across the transactions of a sequence, on each side separately.
Comparison counts
The report counts the comparisons actually made: inputs, account bytes, lamports, logs, return data and errors. They are in proof.json.