Блокчейны Ethereum не синхронизируются на 3 разных компьютерах

У меня проблема с Geth, я хочу скомпилировать и развернуть смарт-контракт, и для этого я добавил эфир в свой кошелек. Мы можем проверить сделку здесь: https://etherscan.io/tx/0x0b3247c2c1d1f26411486ad3ee4fd47e2a8b71de56af0b0fe6759586dd18f6b5, где мы можем увидеть транзакция находится в 4 679731 блоке

Здесь мы можем проверить количество эфира в кошельке: https://etherscan.io/addressb48c0870a6e06e06e4e06e6e06e6e06e5 а>, что составляет 0,075 эфира.

Потом,

Я создал виртуальную машину с ванильным Ubuntu, установил geth (v1.7.0-stable-6c6c7b2a) и попытался выполнить синхронизацию с 29.10.2017 по 20.12.2017. Я запускаю geth с помощью: geth console

В своем исследовании я нашел две команды, которые могут определять ход синхронизации:

var sync = web3.eth.syncing;sync;

давать :

{currentBlock: 1144835, highBlock: 1720228, knownStates: 33418, pullStates: 25707, startBlock: 1144067}

eth.getBlock("latest").number

давать :

0

Я использовал следующую команду, чтобы проверить, сколько эфиров у учетной записи:

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

давать :

0

Итак, через два месяца я не синхронизируюсь, и мой гет не знает, сколько эфиров у меня на аккаунте. У меня, по-видимому, есть синхронизация с блоком 1 144 835, а транзакция находится в блоке 4 679 731, так что я думаю, что это нормально, но через два месяца? Нужно ли мне ждать 8 месяцев, чтобы начать пользоваться Geth? Это неприемлемо.

Итак, 29.12.2017 я построил вторую виртуальную машину с той же ванильной Ubuntu, установил geth (1.7.3-stable-4bb3c89d) и попытался выполнить синхронизацию. Отличие от первого: я запускаю с быстрым режимом синхронизации: geth --fast --cache = 1024 console.

Теперь команды

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 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, highBlock: 4884507, knownStates: 34771, pullStates: 26470, startBlock: 4880214}

eth.getBlock("latest").number

давать :

0

и

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

давать :

0

Итак, я достиг целевого блока (4 679 731) за один день, но geth всегда сообщает, что в моем аккаунте 0 эфиров?

У меня вопрос: как мне выполнить синхронизацию, чтобы начать работу со SmartContract?

Когда я ищу в Интернете, единственный ответ, который я могу прочитать, - это ждать. Я больше не хочу читать этот ответ или рассказывать мне реальный метод, который может показать мне реальный прогресс.


person Jeff    schedule 10.01.2018    source источник


Ответы (1)


Синхронизация может быть очень неприятной. Однако вам не нужно постоянно перестраивать виртуальные машины, чтобы попытаться получить полностью синхронизированный узел. Обычно вы можете просто остановить и перезапустить geth, и он найдет новых одноранговых узлов и возобновит загрузку блокчейна с того места, где остановился. Начиная с чистого листа, для полной синхронизации основной сети нередко требуется около суток.

Однако у вас есть альтернативы. Если вы просто хотите разработать смарт-контракты, вы можете использовать Truffle / Ganache (ранее TestRPC). для запуска локального частного блокчейна разработчика. Remix - это инструмент разработки, который может подключаться к TestRPC, или вы можете выполнять смарт-контракты в его собственном внутреннем ВМ. Если вы хотите подключиться к основной или тестовой сети, вы можете использовать плагин MetaMask, который не требует наличия синхронизированного локального узла (Remix также может подключаться через MetaMask). Наконец, вы можете попробовать использовать geth --light, чтобы включить режим синхронизации света.

person Adam Kipnis    schedule 10.01.2018