существует ли какая-либо версия 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" + закодировано);
Вы в принципе сами ответили на свой вопрос.
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