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, PreviousTxnID
scheint 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 PreviousTxnID
eine 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).
Das PreviousTxnID
Feld ist veraltet, defekt und sollte niemals verwendet werden. Verwenden Sie stattdessen AccountTxnID
. Es funktioniert wie folgt:
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.
Sie müssen die Transaktions-ID-Verfolgung in Ihrem Konto aktivieren. AccountSet
Sie tun dies, indem Sie eine Transaktion mit dem Wert 5 durchführen. SetFlag
Dadurch beginnt Ihr Konto, jedes Konto zu verfolgen, das es ausführt.
Fügen Sie ein PreviousTxnID
Feld 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 PreviousTxnID
Feld haben.
PreviousTxnID
Wenn Sie das Tracking für Ihr Konto deaktivieren möchten , führen Sie eine AccountSet
Transaktion mit ClearFlag
der 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.