首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Miner.Start不工作,无法使用testChain开采合同(Geth v1.6.6)

Miner.Start不工作,无法使用testChain开采合同(Geth v1.6.6)
EN

Ethereum用户
提问于 2017-07-04 16:28:18
回答 1查看 964关注 0票数 2

一直在测试Nethereum,并试图获得一个基本的测试类,并按照testing文档运行,但在运行挖掘命令时遇到了问题。

问题

  1. Miner.Start一开始总是把“假”带回来。然后我无意中发现了氖2.0.0-rc5矿这个问题,它提到我应该尝试使用预发布版,其中Web3Geth是调用挖掘的新方法,尝试了这两种方式,我仍然无法得到一个真正的值,然后继续我的测试。mineResult =等待web3Geth.Miner.Start.SendRequestAsync(6);//var mineResult =等待web3.Miner.Start.SendRequestAsync(6);

这是发生问题的XUnit测试类。

代码语言:javascript
运行
复制
    using System.Threading;
    using System.Threading.Tasks;
    using Nethereum.Geth;
    using Nethereum.Hex.HexTypes;
    using Nethereum.Web3;
    using Xunit;

namespace BasicTurorial
{
    public class TestClass
    {
        [Fact]
        public async Task ShouldBeAbleToDeployAContract()
        {
            var senderAddress = "0x12890d2cce102216644c59daE5baed380d84830c";
            var password = "password";

            var abi = @"[{""constant"":false,""inputs"":[{""name"":""val"",""type"":""int256""}],""name"":""multiply"",""outputs"":[{""name"":""d"",""type"":""int256""}],""payable"":false,""type"":""function""},{""inputs"":[{""name"":""multiplier"",""type"":""int256""}],""payable"":false,""type"":""constructor""}]";
            var byteCode =
                "0x60606040523415600b57fe5b6040516020806100ac83398101604052515b60008190555b505b6079806100336000396000f300606060405263ffffffff60e060020a6000350416631df4f14481146020575bfe5b3415602757fe5b60306004356042565b60408051918252519081900360200190f35b60005481025b9190505600a165627a7a72305820ec2cf1c300fa92e0ccd1f5ce518cc43c9578fe9007797024f1424d07f491020a0029";
            var multiplier = 7;

            var web3 = new Web3();
            var web3Geth = new Web3Geth();

            var unlockAccountResult =
                await web3.Personal.UnlockAccount.SendRequestAsync(senderAddress, password, 120);

            Assert.True(unlockAccountResult);

            var transactionHash =
                await web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, multiplier);

            var mineResult = await web3Geth.Miner.Start.SendRequestAsync(6);
            //var mineResult = await web3.Miner.Start.SendRequestAsync(6);

            Assert.True(mineResult);

            var receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash);

            while (receipt == null)
            {
                Thread.Sleep(5000);
                receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash);
            }

            var contractAddress = receipt.ContractAddress;
            var contract = web3.Eth.GetContract(abi, contractAddress);

            var multiplyFunction = contract.GetFunction("multiply");

            var result = await multiplyFunction.CallAsync<int>(7);

            Assert.Equal(49, result);
        }
    }
}

完整的源代码可以在这里找到https://github.com/stradled/NethereumTest

EN

回答 1

Ethereum用户

发布于 2018-12-06 00:44:34

我碰巧遇到了同样的问题,经过几个星期的尝试和错误,这对我来说是有效的:

代码语言:javascript
运行
复制
var web3 = new Nethereum.Geth.Web3Geth("http://127.0.0.1:8454");
var mine = await web3.Miner.Start.SendRequestAsync(6);

注://请使用适用于您的本地地址和端口,本例为127.0.0.1:8454。

票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/19403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档