Transactions
如何在 Ripple 交易中正確使用 PreviousTxnID?
目前我正在用 Ripple 中的 NOP 實現事務覆蓋。我想在 NOP 中儲存有關我正在覆蓋的事務的資訊。從這個
PreviousTxnID
領域來看,它似乎是實現這一目的的理想選擇。但是,當我嘗試使用它時,出現以下錯誤:{ "id": 11, "status": "success", "type": "response", "result": { "engine_result": "tefWRONG_PRIOR", "engine_result_code": -184, "engine_result_message": "This previous transaction does not match.", "tx_blob": "1200032200000000240000F69555DA10915AA58303872299078F4CD9AD81D4771219C38764BE84B3AB3D6763977268400000000000000F7321025D9E40A50D78347EB8AFF7A36222BBE173CB9D06E68D109D189FF8616FC211077446304402204710D875B7DFC0F9A9F2101F67E0043AE255258BF9F6F21BCF7D42BC19B3A41E0220554CAB999EF43FD3EF720C6869D63F2E324AD774662B51AE4599F50B60E9B4DA8114448BD3912AA0E86A18B17784E7177B262FC38D73", "tx_json": { "Account": "rfESTMcbvbvCBqU1FTvGWiJP8cmUSu4GKg", "Fee": "15", "Flags": 0, "PreviousTxnID": "DA10915AA58303872299078F4CD9AD81D4771219C38764BE84B3AB3D67639772", "Sequence": 63125, "SigningPubKey": "025D9E40A50D78347EB8AFF7A36222BBE173CB9D06E68D109D189FF8616FC21107", "TransactionType": "AccountSet", "TxnSignature": "304402204710D875B7DFC0F9A9F2101F67E0043AE255258BF9F6F21BCF7D42BC19B3A41E0220554CAB999EF43FD3EF720C6869D63F2E324AD774662B51AE4599F50B60E9B4DA", "hash": "B1932085BA94FEBE7A360D71359752A1666C48CCBBD97DFF16FFFA8626EDA253" } } }
PreviousTxnID
在 Ripple 中覆蓋先前交易的正確方法是什麼?(比如說,我們送出的一筆交易由於使用了 LastLedgerSequence 而從未進入賬本)。
該
PreviousTxnID
欄位已被棄用、損壞且永遠不應使用。相反,使用AccountTxnID
. 它的工作原理如下:
- 您必須使用完全規範的簽名,並且應該在所有交易上設置完全規範的標誌 (0x80000000)。否則,交易 ID 可能(理論上)被惡意修改。
- 您必須在您的帳戶上啟用交易 ID 跟踪。您通過執行設置為 5 的
AccountSet
事務來執行此操作SetFlag
。這會導致您的帳戶開始跟踪它執行的每個帳戶。- 在您的交易中包含一個
PreviousTxnID
包含先前交易 ID 的欄位。這將確保交易僅在具有預期的先行交易時才適用。現在,用 nop 替換事務將使任何具有
PreviousTxnID
欄位的後續事務無效。如果您希望
PreviousTxnID
為您的帳戶禁用跟踪,請執行設置為 5的AccountSet
交易。ClearFlag