En este momento estoy implementando una sobrescritura de transacciones con NOP en Ripple. Quiero almacenar información sobre una transacción que estoy sobrescribiendo dentro del NOP. Mirando el PreviousTxnID
campo, parece ser ideal para este propósito. Sin embargo, cuando intento usarlo me sale un error de:
{
"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"
}
}
}
¿Cuál es la forma correcta de PreviousTxnID
sobrescribir una transacción anterior en Ripple? (digamos, una transacción que enviamos que nunca entró en un libro mayor debido al uso de LastLedgerSequence).
El PreviousTxnID
campo está obsoleto, roto y nunca debe usarse. En su lugar, utilice AccountTxnID
. Funciona de la siguiente manera:
Debe usar firmas completamente canónicas y debe configurar el indicador completamente canónico (0x80000000) en todas sus transacciones. De lo contrario, la identificación de la transacción podría (en teoría) modificarse maliciosamente.
Debe habilitar el seguimiento de ID de transacción en su cuenta. Para ello, realice una AccountSet
transacción con SetFlag
el valor 5. Esto hace que su cuenta comience a rastrear cada cuenta que ejecuta.
Incluya un PreviousTxnID
campo en sus transacciones que contenga el ID de la transacción anterior. Esto garantizará que una transacción solo se aplique si tiene la transacción predecesora esperada.
Ahora, reemplazar una transacción con un nop invalidará cualquier transacción sucesora que tenga un PreviousTxnID
campo.
Si desea deshabilitar PreviousTxnID
el seguimiento de su cuenta, realice una AccountSet
transacción con ClearFlag
el valor 5.
Puede encontrar las opciones válidas de AccountSet en la documentación: https://ripple.com/wiki/Transaction_Format#AccountSet_.283.29 (PreviousTxnID no es una de ellas).
PreviousTxnID parece ser un campo devuelto por rippled, no un parámetro que usted mismo establezca.