1

我在本地机器上运行私有以太坊区块链服务器。我设置了创世文件,创建了一些节点,并在 Solidity 中创建了一个合约。目的是在专用网络上获得一个带有智能合约的运行区块链。由于我们在 .NET 框架上开发,我们希望使用 Nethereum 与区块链进行交互。

区块链设置良好,节点在区块链上设置良好,我可以使用 Nethereum 与节点交互并查询它们。但是,每当我尝试进行任何交易时,它都会失败并显示错误消息“发生一个或多个错误。(无效的发件人:eth_sendRawTransaction)”。无论这只是发送以太币还是部署合约。

我的创世文件如下: { "config": { "chainId": 1515, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000050055000000000000000000000000005005Block"0:" , "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "clique": { "period": 0, "epoch": 30000 } }, "nonce": "0x0 ", "timestamp": "0x0", "extraData": "0x000000000000000000000000000000000000000000000000000000000000000039FBa5910Ecd5A3AbB81493F898bFecf7046a9E20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x47b760", "difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": " 0x000000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas": null }difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance" : "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas": null }difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance" : "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas": null }0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "余额”:“0x999999999”}},“数字”:“0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePer }Gas”:0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "余额”:“0x999999999”}},“数字”:“0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePer }Gas”:0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", “gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:null }0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", “gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:null }0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:空}0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:空}

我按如下方式启动节点: geth --nousb --datadir=node1/ --networkid 1515 --syncmode full --port 30310 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr localhost --http.port 8545 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2" --password node1/password.txt

请注意,网络 ID 确实与链 ID 匹配,并且在两个地方都指定了。

使用 Nethereum 进行交易的 C# 代码如下所示:

            var accountFilePath = @"<path-to-keystore>\keystore\UTC--2021-09-12T23-49-11.299662900Z--39fba5910ecd5a3abb81493f898bfecf7046a9e2";
            var account = Account.LoadFromKeyStore(File.ReadAllText(accountFilePath), password, 1515);

            var web3 = new Web3(account, "http://127.0.0.1:8545");

            var unlock = web3.Personal.UnlockAccount.SendRequestAsync(account.Address, password, 120);
            while (!unlock.IsCompleted) { }

            var send = web3.TransactionManager.SendTransactionAsync(account.Address, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077", new HexBigInteger(20));
            while (!send.IsCompleted) { }

            string senderAddress = account.Address;

            var estimateGas = web3.Eth.DeployContract.EstimateGasAsync(abi, contractByteCode, senderAddress);
            while (!estimateGas.IsCompleted) { }

            var deployReceipt = web3.Eth.DeployContract.SendRequestAndWaitForReceiptAsync(abi, contractByteCode, senderAddress, estimateGas.Result, null);
            while (!deployReceipt.IsCompleted) { }

据我所知,这应该将以太币从节点 1 发送到节点 2,然后部署合约。但是,两个交易都没有成功。我已确保我的链 ID 和网络 ID 相同,Nethereum 解锁帐户并签署交易,所以这应该不是问题。为了以防万一,我确实尝试过手动解锁帐户,但这没有任何区别。我查过了,交易有正确的链 ID 和发送者地址。

我已经为此工作了几天,但我离找到解决方案还差得远。任何帮助表示赞赏。

4

0 回答 0