0

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

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

然后,

我用香草 Ubuntu 构建了一个虚拟机,安装 geth (v1.7.0-stable-6c6c7b2a) 并尝试从 2017 年 10 月 29 日同步到 2017 年 12 月 20 日。我使用以下命令启动 geth:geth 控制台

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

var sync = web3.eth.syncing;sync;

给 :

{ currentBlock:1144835,highestBlock:1720228,knownStates: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 吗?这是不可接受的。

因此,我在 2017 年 12 月 29 日使用相同的香草 Ubuntu 构建了第二个虚拟机,安装 geth (1.7.3-stable-4bb3c89d) 并尝试同步。与第一个的区别:我使用快速同步模式启动: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] Rolled back headers count=2048 header=3894230->3892182 fast=3872910 ->3872910 block=0->0 每次都不会同步更多。

所以我在我的个人电脑上第三次尝试,Windows 8.1,安装 geth (1.7.3-stable-4bb3c89d) 并尝试从 01-07-2018 使用命令行同步:geth.exe --syncmode "full"安慰

现在,命令

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?

当我在网上搜索时,我能读到的唯一答案就是等待。我不想再看这个anwser,或者告诉我一个可以告诉我真正进展的真正方法。

4

1 回答 1

2

同步可能非常令人沮丧。但是,您不需要不断地重建虚拟机来尝试获得完全同步的节点。通常,您可以停止并重新启动geth,它会找到新的对等点并从中断的地方继续下载区块链。从一张白纸开始,完全同步主网需要将近一天的时间并不少见。

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

于 2018-01-10T18:34:05.880 回答