simd | title | authors | category | type | status | created | feature | |
---|---|---|---|---|---|---|---|---|
0065 |
Fraud Proofs for SVM |
|
Standard/Meta |
Core |
Draft |
2023-08-09 |
(fill in with feature tracking issues once accepted) |
This SIMD proposes a design for adding succinct proofs of invalid computation to Solana's SVM. This would make it much easier to verify the correctness of transactions, and to detect fraud or malicious activity.
With fraud proofs, honest participants in the network will be able to construct and gossip a fraud proof that can be easily verified in a browser that proves that the majority is faulty. Once the fraud proof is detected, clients can disconnect from the cluster, majority could be deterministically slashed by honest nodes on restart.
None
SPV: Simplified Payment Verification. This industry standard acronym describes a merkle path from a transaction to a set of quorum votes that finalize the transaction.
-
The account hash for every input account (both read and write operations).
-
The transaction count that led to the generation of that account hash.
-
The current transaction count.
-
The outcome or result of the transaction.
-
Sysvars and syscalls that read state must also track their changes wrt transaction count.
-
Sysvar and syscall state must also be merkelized into the SPV
There are two primary scenarios that need to be addressed:
-
Incorrect Transaction Computation by Majority: If the majority computes this transaction incorrectly, it becomes straightforward to verify this discrepancy, even on platforms with minimal computational power, like a web browser. Users can download the program, and all the inputs, verifiy all the inputs against the account hashes, then compute the result and see that the majority signed an invalid outcome.
-
Use of Outdated Account Version by Majority: If the majority uses an older version of an account, this can also be easily validated. This is achieved by merely requiring an SPV to demonstrate a more recent successful transaction that updated the concerned account.
Light clients need to track epoch rollover and update their view of the quorum.
-
Replay stage needs to assign a deterministic transaction count to each transaction.
-
Accounts db needs to store the transaction count that last modified the account.
-
Sysvars and system calls that read values must be tracked within the SPV as well.
This improves detection of invalid state transitions on solana.
NA
NA