以太网区块链在3台不同的计算机上未同步

时间:2018-01-10 12:37:33

标签: ethereum geth

我和Geth有问题,我想编译和部署一份智能合约,为了做到这一点,我已将以太币添加到我的钱包中。 我们可以在此处验证交易:https://etherscan.io/tx/0x0b3247c2c1d1f26411486ad3ee4fd47e2a8b71de56af0b0fe6759586dd18f6b5 在那里我们可以看到交易是在4 679 731块

在这里,我们可以验证钱包中的以太网数量:https://etherscan.io/address/0x704e2b488674afa69069a165d3c8a80a27c30d6f是0,075以太。

然后,

我已经构建了一个带有vanilla Ubuntu的虚拟机,安装geth(v1.7.0-stable-6c6c7b2a)并尝试从10-29-2017同步到12-20-2017。 我使用:geth console

启动geth

在我的研究中,我发现了两个可以确定同步进度的命令:

var sync = web3.eth.syncing;sync;

给:

  

{         currentBlock:1144835,         最高时间:1720228,         已知陈述:33418,         pullStates:25707,         startingBlock:1144067       }

eth.getBlock("latest").number

给:

  

0

我使用以下命令检查帐户有多少以太网:

web3.fromWei(eth.getBalance("0x704e2b488674aFa69069A165D3C8a80A27C30D6f"), "ether")

给:

  

0

所以在两个月内,我没有同步,我的geth不知道我的帐户有多少以太。 我显然已同步到1 144 835块,交易在4 679 731块,所以我认为这是正常的,但在两个月内? 我是否需要等待8个月才能开始使用Geth?这是不可接受的。

所以我在12-29-2017建立了第二个虚拟机,使用相同的香草Ubuntu,安装geth(1.7.3-stable-4bb3c89d)并尝试同步。 与第一个的区别:我使用快速syncmode启动:geth --fast --cache = 1024控制台。

现在,命令

var sync = web3.eth.syncing;sync;

给:

{
  currentBlock: 3872910,
  highestBlock: 4884396,
  knownStates: 3180,
  pulledStates: 2379,
  startingBlock: 3865878
}
eth.getBlock("latest").number

给:

  

0

web3.fromWei(eth.getBalance("0x704e2b488674aFa69069A165D3C8a80A27C30D6f"), "ether")

给:

  

0

所以在12天内,我已经同步了4倍,但在最后4天,我收到了消息: WARN [01-10 | 01:01:40]回卷头数= 2048头= 3894230-> 3892182 fast = 3872910-> 3872910块= 0-> 0 每次都不会同步更多。

所以我第三次尝试在我的个人计算机上安装了Windows 8.1,安装了geth(1.7.3-stable-4bb3c89d)并尝试从01-07-2018同步 使用命令行:geth.exe --syncmode“full”console

现在,命令

var sync = web3.eth.syncing;sync;

给:

  

{currentBlock:4881711,highestBlock:4884507,knownStates:   34771,pullStates:26470,startingBlock:4880214}

eth.getBlock("latest").number

给:

  

0

web3.fromWei(eth.getBalance("0x704e2b488674aFa69069A165D3C8a80A27C30D6f"), "ether")

给:

  

0

所以我在一天内到达了目标区块(4 679 731),但是geth总是声明我的账户中有0以太?

我的问题是:如何同步以便我可以开始使用SmartContract?

当我在网上搜索时,我能读到的唯一一个是等待。 我不想再阅读这篇文章了,或者告诉我一个可以向我展示真正进展的真实方法。

1 个答案:

答案 0 :(得分:1)

同步可能非常令人沮丧。但是,您不需要不断重建VM以尝试获得完全同步的节点。通常,您可以停止并重新启动geth,它会找到新的同行并继续从中断处继续下载区块链。从空白的平板开始,它需要接近一天来完全同步主网络并不罕见。

但你确实有其他选择。如果您只是想开发智能合约,可以使用Truffle/Ganache(以前称为TestRPC)来运行本地私有开发区块链。 Remix是一个可以连接到TestRPC的开发工具,或者您可以在其自己的内部VM中执行智能合约。如果你想连接到mainnet或testnet,你可以使用MetaMask插件,它不需要你有一个同步的本地节点(Remix也可以通过MetaMask连接)。最后,您可以尝试使用geth --light启用灯光同步模式。