Wie verwende ich PreviousTxnID richtig in einer Ripple-Transaktion?

Im Moment implementiere ich eine Transaktionsüberschreibung mit NOPs in Ripple. Ich möchte Informationen zu einer Transaktion speichern, die ich im NOP überschreibe. Wenn man sich das Feld ansieht, PreviousTxnIDscheint es für diesen Zweck ideal zu sein. Wenn ich jedoch versuche, es zu verwenden, erhalte ich eine Fehlermeldung von:

{
  "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"
    }
  }
}

Was ist der richtige Weg, um PreviousTxnIDeine vorherige Transaktion in Ripple zu überschreiben? (z. B. eine von uns eingereichte Transaktion, die aufgrund der Verwendung von LastLedgerSequence nie in ein Hauptbuch gelangt ist).

Antworten (2)

Das PreviousTxnIDFeld ist veraltet, defekt und sollte niemals verwendet werden. Verwenden Sie stattdessen AccountTxnID. Es funktioniert wie folgt:

  1. Sie müssen vollständig kanonische Signaturen verwenden, und Sie sollten das vollständig kanonische Flag (0x80000000) für alle Ihre Transaktionen setzen. Andernfalls könnte die Transaktions-ID (theoretisch) böswillig geändert werden.

  2. Sie müssen die Transaktions-ID-Verfolgung in Ihrem Konto aktivieren. AccountSetSie tun dies, indem Sie eine Transaktion mit dem Wert 5 durchführen. SetFlagDadurch beginnt Ihr Konto, jedes Konto zu verfolgen, das es ausführt.

  3. Fügen Sie ein PreviousTxnIDFeld in Ihre Transaktionen ein, das die ID der vorherigen Transaktion enthält. Dadurch wird sichergestellt, dass eine Transaktion nur gilt, wenn sie die erwartete Vorgängertransaktion hat.

Wenn Sie jetzt eine Transaktion durch ein nop ersetzen, werden alle Nachfolgetransaktionen ungültig, die ein PreviousTxnIDFeld haben.

PreviousTxnIDWenn Sie das Tracking für Ihr Konto deaktivieren möchten , führen Sie eine AccountSetTransaktion mit ClearFlagder Einstellung 5 durch.

Die gültigen AccountSet-Optionen finden Sie in der Dokumentation: https://ripple.com/wiki/Transaction_Format#AccountSet_.283.29 (PreviousTxnID gehört nicht dazu.)

PreviousTxnID scheint ein Feld zu sein, das von Rippled zurückgegeben wird, kein Parameter, den Sie selbst festlegen.