So signieren Sie eine Rohtransaktion mit Python

Ich weiß, dass es eine Brieftasche namens MyEtherWallet gibt, die offline mit einem privaten Schlüssel signieren kann, und es scheint eine Javascript-Bibliothek zu geben, die dies auch kann, aber gibt es eine Python-Bibliothek oder einen beliebigen Code, der die Rohtransaktion signieren kann, vorausgesetzt, ich habe eine Zeichenfolge mit einem privaten Schlüssel ?

Antworten (2)

Es gibt einige Optionen. Account.signTransactionin web3.pyist eine solche Option: https://github.com/ethereum/web3.py/blob/master/docs/web3.eth.account.rst .

das ist eine große Hilfe

Gibt es eine Python-Bibliothek oder einen Code, der die Rohtransaktion signieren kann, vorausgesetzt, ich habe eine private Schlüsselzeichenfolge?

Es gibt ein Modul namens Account in Web3.py . Dieses Modul hat eine signTransactionMethode, die so verwendet werden kann:

transaction = {
        'to': '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
        'value': 1000000000,
        'gas': 2000000,
        'gasPrice': 234567897654321,
        'nonce': 0,
        'chainId': 1
    }
key = '0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318'
signed = w3.eth.account.signTransaction(transaction, key)

w3.eth.sendRawTransaction(signed.rawTransaction)
Wenn ich dies verwende, erhalte ich diesen Fehler: raise TypeError ("Transaktion hatte ungültige Felder: %r" % ungültig)