Эфириум автономный подписчик С#

существует ли какая-либо версия C# автономного подписывающего лица для транзакции. как ethereumjs-tx

var Tx = require('ethereumjs-tx') var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')

vartx = {nonce: '0x00', Gasprice: '0x09184e72a000', Gaslimit: '0x2710',: '0x00000000000000000000000000000000000000', значение: '0x00000000000000000000000000000000', стоимость: '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000н

var tx = новый Tx (rawTx) tx.sign (privateKey)

var serializedTx = tx.serialize() console.log(serializedTx.toString('hex'))

нужно подобное в С#, я пытаюсь использовать nethereum, эта реализация не работает

Как я могу подписать транзакцию с помощью С#?

var privateKey = "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c";

Теперь, используя сначала web3, вам нужно будет получить общее количество транзакций вашего адреса отправителя.

var web3 = новый Web3(); var txCount = await web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(senderAddress);

txCount будет использоваться как одноразовый номер для подписи транзакции.

Теперь, снова используя web3, вы можете создать закодированную транзакцию следующим образом:

var encoded = web3.OfflineTransactionSigning.SignTransaction(privateKey, ReceiveAddress, 10, txCount.Value);

Если нужно включить данные и газ для этого есть перегрузки.

Вы можете проверить закодированную транзакцию: Assert.True(web3.OfflineTransactionSigning.VerifyTransaction(encoded));

Или получить адрес отправителя из закодированной транзакции:

web3.OfflineTransactionSigning.GetSenderAddress(закодировано);

Чтобы отправить закодированную транзакцию, вы должны «SendRawTransaction».

var txId = await web3.Eth.Transactions.SendRawTransaction.SendRequestAsync("0x" + закодировано);

Ответы (2)

Вы в принципе сами ответили на свой вопрос.

https://nethereum.readthedocs.io/en/latest/introduction/web3/

У вас есть функция автономной подписи транзакций, но документы не обновлены. Вызов метода теперь выглядит иначе, потому что он был перемещен в статический контекст или что-то в этом роде:

Web3.OfflineTransactionSigner.SignTransaction.....

Для получения дополнительной информации проверьте это: https://github.com/Nethereum/Nethereum/issues/151

Если вы хотите использовать подписывающее устройство на основе secp256k1lib вместо Bouncy Castle, то вам, вероятно, следует использовать подписывающее устройство из проекта Nethermind:

Прокси для secp256k1lib: https://github.com/tkstanczak/nethermind/tree/master/src/Nethermind/Nethermind.Secp256k1

Фактическое использование со спецификой протокола Ethereum, на которую вы можете обратить внимание, чтобы основывать свое решение: https://github.com/tkstanczak/nethermind/blob/master/src/Nethermind/Nethermind.Core/Crypto/EthereumSigner.cs