Merge pull request #2941 from XRPLF/blog-update

Add clarification on the VDR blog post
This commit is contained in:
Amarantha Kulkarni
2025-01-10 12:15:44 -08:00
committed by GitHub

View File

@@ -54,7 +54,7 @@ The original investigation believed that the spread would be contained to only t
### Triggering Transaction
On 25 November, 3 identical PaymentChannelClaim transactions - other than the sequence number - were submitted that referenced a RippleState (trustline) ledger object (instead of a PayChannel object, as expected). These all failed successfully, without crashing the ledger. Then the same account submitted a TrustSet for that RippleState object, and submitted the same PaymentChannelClaim transaction again. The TrustSet transaction made the RippleState ledger object more likely to be in the cache, which then crashed any node that had it in its cache. One of the [transactions](https://livenet.xrpl.org/transactions/5729C3A94A9950419292649D9E649F0BDC9D86499EE5A0CDB009DEA963DAF727) can be seen in ledger [92346897](https://livenet.xrpl.org/ledgers/92346897).
On 25 November, 3 identical PaymentChannelClaim transactions - other than the sequence number - were submitted that referenced a RippleState (trustline) ledger object (instead of a PayChannel object, as expected). These all failed successfully, without crashing the ledger. Then the same account submitted a TrustSet for that RippleState object, and submitted the same PaymentChannelClaim transaction again. The TrustSet transaction made the RippleState ledger object more likely to be in the cache, which then allowed the following PaymentChannelClaim transaction to crash any node that had it in its cache. One of the [transactions](https://livenet.xrpl.org/transactions/5729C3A94A9950419292649D9E649F0BDC9D86499EE5A0CDB009DEA963DAF727) can be seen in ledger [92346897](https://livenet.xrpl.org/ledgers/92346897).
The current hypothesis for the spread is that some nodes had flushed that RippleState ledger object out of their cache and were thus able to process the transaction and propagate it to other nodes. This would also explain why there were still some crashes later when nodes started catching up again, and why the crashes eventually did stop (after the crash, a node wouldnt have its cache populated, so it would be correctly handle the invalid PaymentChannelClaim).