Gibt es eine C#-Version des Offline-Unterzeichners für die Transaktion. wie ethereumjs-tx
var Tx = require('ethereumjs-tx') var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')
var rawTx = { nonce: '0x00', gasPrice: '0x09184e72a000', gasLimit: '0x2710', to: '0x0000000000000000000000000000000000000000', value: '0x00', data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057' }
var tx = new Tx(rawTx) tx.sign(privateKey)
var serializedTx = tx.serialize() console.log(serializedTx.toString('hex'))
brauche ähnliches in c # ich versuche nethereum diese implementierung funktioniert nicht
Wie kann ich eine Transaktion mit c# signieren?
var privateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c";
Wenn Sie jetzt web3 verwenden, müssen Sie zuerst die Gesamtzahl der Transaktionen Ihrer Absenderadresse abrufen.
var web3 = neues Web3 (); var txCount = await web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(senderAddress);
Der txCount wird als Nonce zum Signieren der Transaktion verwendet.
Wenn Sie jetzt wieder web3 verwenden, können Sie eine verschlüsselte Transaktion wie folgt erstellen:
var encoded = web3.OfflineTransactionSigning.SignTransaction(privateKey, ReceiveAddress, 10, txCount.Value);
Wenn Sie die Daten und das Gas einschließen müssen, gibt es dafür Überladungen.
Sie können eine verschlüsselte Transaktion überprüfen: Assert.True(web3.OfflineTransactionSigning.VerifyTransaction(encoded));
Oder erhalten Sie die Absenderadresse aus einer verschlüsselten Transaktion:
web3.OfflineTransactionSigning.GetSenderAddress (codiert);
Um die verschlüsselte Transaktion zu senden, geben Sie "SendRawTransaction" ein.
var txId = await web3.Eth.Transactions.SendRawTransaction.SendRequestAsync("0x" + codiert);
Im Grunde hast du dir deine Frage selbst beantwortet.
https://nethereum.readthedocs.io/en/latest/introduction/web3/
Sie haben eine Offline-Transaktionssignierungsfunktion, aber die Dokumente wurden nicht aktualisiert. Der Methodenaufruf sieht jetzt anders aus, weil er in den statischen Kontext oder so ähnlich verschoben wurde:
Web3.OfflineTransactionSigner.SignTransaction.....
Weitere Informationen finden Sie hier: https://github.com/Nethereum/Nethereum/issues/151
Wenn Sie einen Unterzeichner basierend auf secp256k1lib anstelle von Bouncy Castle möchten, möchten Sie wahrscheinlich den Unterzeichner aus dem Nethermind-Projekt verwenden:
Proxy für secp256k1lib: https://github.com/tkstanczak/nethermind/tree/master/src/Nethermind/Nethermind.Secp256k1
Tatsächliche Verwendung mit den Besonderheiten des Ethereum-Protokolls, auf die Sie sich möglicherweise als Grundlage für Ihre Lösung beziehen sollten: https://github.com/tkstanczak/nethermind/blob/master/src/Nethermind/Nethermind.Core/Crypto/EthereumSigner.cs