Transactions

如何在 Ripple 交易中正確使用 PreviousTxnID?

  • July 15, 2014

目前我正在用 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. 它的工作原理如下:

  1. 您必須使用完全規範的簽名,並且應該在所有交易上設置完全規範的標誌 (0x80000000)。否則,交易 ID 可能(理論上)被惡意修改。
  2. 您必須在您的帳戶上啟用交易 ID 跟踪。您通過執行設置為 5 的AccountSet事務來執行此操作SetFlag。這會導致您的帳戶開始跟踪它執行的每個帳戶。
  3. 在您的交易中包含一個PreviousTxnID包含先前交易 ID 的欄位。這將確保交易僅在具有預期的先行交易時才適用。

現在,用 nop 替換事務將使任何具有PreviousTxnID欄位的後續事務無效。

如果您希望PreviousTxnID為您的帳戶禁用跟踪,請執行設置為 5的AccountSet交易。ClearFlag

引用自:https://bitcoin.stackexchange.com/questions/29477