On the XRPL, ledgers (blocks) are closed and sealed in the following way:
- A quorum of validators on the UNL collectively agrees upon a set of (mempool) transactions to apply
- The set is placed into a canonical order and applied to the last closed ledger
- The outcome is deterministically replicated by each validator
- The outcome is signed by each validator
- The validators move on to a new ledger that references the old ledger.
Each ledger contains among other things a tx root
which is a root of a merkle tree containing the transaction set applied in the creation of this ledger and the outcomes (metadata).
We add the trust assumption that a quorum of validators will never (collectively) act maliciously.
Now, by collecting validations, it is possible to prove for a specific transaction that:
- It was accepted into a specific ledger, and
- Had a specific outcome (metadata)
PoV will be a standardized succinct non-iteractive (offline) proof that an XRPL transaction was applied to the Ledger and had some specific result.
It will contain at least the following parts:
- A transaction and corresponding result (metadata) whose acceptance into a ledger is the subject of this proof.
- Valdiation signatures over a the ledger hash of the ledger the transaction was accepted into (the tx ledger), or
- An unbroken chain of ledger headers from the tx ledger to some future ledger, and
- Validation signatures over that future ledger.
- The ledger header of the tx ledger.
- The minimum set of nodes from the ledger's tx merkle tree to prove the transaction and its metadata appeared in the ledger.
The proposed format is compressed concatenated STObject transmitted as a QR code. More on this when an XLS is created.