Gibt es eine Bibliothek zum Decodieren/Codieren von Rohtransaktionen?

Ich möchte die Rohtransaktion in JSON analysieren, dann einige Werte ändern und wieder in Hex codieren. JSON so:

{
"addresses": [
    "346vcZZ6QV4nr68fybMEuA7qxxQeyKWoPS"
], 
"block_height": -1, 
"block_index": -1, 
"confirmations": 0, 
"double_spend": false, 
"fees": 0, 
"hash": "e09c37cca11208a8c372a1e397dcff0382b4d78cdde157ce8824d028dc185a80", 
"inputs": [
    {
        "age": 0, 
        "output_index": 1, 
        "prev_hash": "c15bb773cdd5bb63a65766f5680684ce991c126698db0aa020e3058081742874", 
        "script_type": "empty", 
        "sequence": 4294967295
    }
], 
"outputs": [
    {
        "addresses": [
            "346vcZZ6QV4nr68fybMEuA7qxxQeyKWoPS"
        ], 
        "script": "a9141a75cd53e9740caadbf83cbefdd087cdceb978a487", 
        "script_type": "pay-to-script-hash", 
        "value": 14000000
    }
], 
"preference": "low", 
"received": "2018-08-21T08:05:02.841875145Z", 
"relayed_by": "54.160.159.32", 
"size": 83, 
"total": 14000000, 
"ver": 2, 
"vin_sz": 1, 
"vout_sz": 1
}

Ich habe versucht, bitcoinj zu verwenden, aber es gibt ein sehr einfaches Objekt ohne viele Felder zurück.

Was versuchst du zu ändern? Die meisten Felder im json sind in einer Transaktion nicht wirklich vorhanden

Antworten (1)

Probieren Sie diese Python-Bibliothek aus (Haftungsausschluss: Ich habe sie geschrieben)

from btctools import Transaction

>>> tx = Transaction.from_hex('0100000000010153159b2a077d8dfbe4dca4b6b3a9e0ccedb4962ca73280526e6a1eeb1e8e9adc2a00000000ffffffff04a08f3e00000000001976a914de755835002260891962f1e671a2bf7605788d0f88ac0046c3230000000017a914c7c9b5f51244f39f81ec01146eb0d1d98d4bbd4c872052a6000000000017a91469f376599f0ffcaacd6a79854b1ee99513bb7b35870006f21600000000220020701a8d401c84fb13e6baf169d59684e17abd9fa216c8cc5b9fc63d622ff8c58d04004830450221009360af3ec3f9d4ae8acc3ab2213f3f9344cb322b4ea447490bb297a9a4c1d207022067027b032e54b3efb9e885604349ec4f1b6446eed8ed208c6fe6eeae9ace921a0148304502210097cf932eb37513c201b577472d70f1553f338d6439e9181607ec75f2e83fa148022052368c88085838521efc64cf509b95dd53d8c825089acd3ff681e74d3a2b4959016952210266edd4ef2953675faf0662c088a7f620935807d200d65387290b31648e51e253210372ce38027ee95c98cdc54172964fa3aecf9f24b85c139d3d203365d6b691d0502103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f88053ae00000000')
>>> tx
Transaction(inputs=1, outputs=4)

>>> tx.json()
{'locktime': 0,
 'size': 448,
 'txid': '0f6787fe25b631c73db598769eff70d616645eb61ad8c6f7408bc4341917aca5',
 'version': 1,
 'vin': [{'scriptSig': {'hex': ''},
   'sequence': 4294967295,
   'txid': 'dc9a8e1eeb1e6a6e528032a72c96b4edcce0a9b3b6a4dce4fb8d7d072a9b1553',
   'vout': 42,
   'witness': ['',
    '30450221009360af3ec3f9d4ae8acc3ab2213f3f9344cb322b4ea447490bb297a9a4c1d207022067027b032e54b3efb9e885604349ec4f1b6446eed8ed208c6fe6eeae9ace921a01',
    '304502210097cf932eb37513c201b577472d70f1553f338d6439e9181607ec75f2e83fa148022052368c88085838521efc64cf509b95dd53d8c825089acd3ff681e74d3a2b495901',
    '52210266edd4ef2953675faf0662c088a7f620935807d200d65387290b31648e51e253210372ce38027ee95c98cdc54172964fa3aecf9f24b85c139d3d203365d6b691d0502103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f88053ae']}],
 'vout': [{'scriptPubKey': {'asm': 'OP_DUP OP_HASH160 de755835002260891962f1e671a2bf7605788d0f OP_EQUALVERIFY OP_CHECKSIG',
    'hex': '76a914de755835002260891962f1e671a2bf7605788d0f88ac'},
   'value': 0.041},
  {'n': 1,
   'scriptPubKey': {'asm': 'OP_HASH160 c7c9b5f51244f39f81ec01146eb0d1d98d4bbd4c OP_EQUAL',
    'hex': 'a914c7c9b5f51244f39f81ec01146eb0d1d98d4bbd4c87'},
   'value': 6.0},
  {'n': 2,
   'scriptPubKey': {'asm': 'OP_HASH160 69f376599f0ffcaacd6a79854b1ee99513bb7b35 OP_EQUAL',
    'hex': 'a91469f376599f0ffcaacd6a79854b1ee99513bb7b3587'},
   'value': 0.109},
  {'n': 3,
   'scriptPubKey': {'asm': 'OP_0 701a8d401c84fb13e6baf169d59684e17abd9fa216c8cc5b9fc63d622ff8c58d',
    'hex': '0020701a8d401c84fb13e6baf169d59684e17abd9fa216c8cc5b9fc63d622ff8c58d'},
   'value': 3.8496}]}