биткойн в тестовой сети не синхронизируется

Я установил биткойн в Linux. Я запускаю его в режиме тестовой сети, но он не синхронизируется, так как не загружает блоки.

В bitcoin.conf у меня есть следующее:

rpcport=8332  # Needed for testnet as default port for testnet is 18332

Ниже то, что он показывает bitcoind getinfo:

{
    "version" : 80600,
    "protocolversion" : 70001,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 0,
    "timeoffset" : 0,
    "connections" : 0,
    "proxy" : "",
    "difficulty" : 1.00000000,
    "testnet" : true,
    "keypoololdest" : 1392428204,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "errors" : ""
}

У меня есть следующее для ufw status verboseбрандмауэра:

Status: active

To                         Action      From
--                         ------      ----
8333/tcp                   ALLOW       Anywhere
8332/tcp                   ALLOW       Anywhere
18333/tcp                  ALLOW       Anywhere
8333                       ALLOW       Anywhere
8332                       ALLOW       Anywhere
18333                      ALLOW       Anywhere
8333/tcp                   ALLOW       Anywhere (v6)
8332/tcp                   ALLOW       Anywhere (v6)
18333/tcp                  ALLOW       Anywhere (v6)
8333                       ALLOW       Anywhere (v6)
8332                       ALLOW       Anywhere (v6)
18333                      ALLOW       Anywhere (v6)

8332/tcp                   ALLOW OUT   Anywhere
18333/tcp                  ALLOW OUT   Anywhere
8333                       ALLOW OUT   Anywhere
8332                       ALLOW OUT   Anywhere
18333                      ALLOW OUT   Anywhere
8333/tcp                   ALLOW OUT   Anywhere
8332/tcp                   ALLOW OUT   Anywhere (v6)
18333/tcp                  ALLOW OUT   Anywhere (v6)
8333                       ALLOW OUT   Anywhere (v6)
8332                       ALLOW OUT   Anywhere (v6)
18333                      ALLOW OUT   Anywhere (v6)
8333/tcp                   ALLOW OUT   Anywhere (v6)

Ниже приведено содержимое debug.log:

2014-03-13 01:04:57 Bitcoin version v0.8.6.0-g03a7d67-beta ()
2014-03-13 01:04:57 Using OpenSSL version OpenSSL 1.0.1 14 Mar 2012
2014-03-13 01:04:57 Default data directory /home/jlp/.bitcoin
2014-03-13 01:04:57 Using data directory /home/jlp/.bitcoin/testnet3
2014-03-13 01:04:57 Using at most 125 connections (1024 file descriptors available)
2014-03-13 01:04:57 Using 4 threads for script verification
2014-03-13 01:04:57 init message: Verifying wallet...
2014-03-13 01:04:57 dbenv.open LogDir=/home/jlp/.bitcoin/testnet3/database ErrorFile=/h$
2014-03-13 01:04:57 Bound to [::]:18333
2014-03-13 01:04:57 Bound to 0.0.0.0:18333
2014-03-13 01:04:57 init message: Loading block index...
2014-03-13 01:04:57 Opening LevelDB in /home/jlp/.bitcoin/testnet3/blocks/index
2014-03-13 01:04:57 Opened LevelDB successfully
2014-03-13 01:04:57 Opening LevelDB in /home/jlp/.bitcoin/testnet3/chainstate
2014-03-13 01:04:58 Opened LevelDB successfully
2014-03-13 01:04:58 LoadBlockIndexDB(): last block file = 0
2014-03-13 01:04:58 LoadBlockIndexDB(): last block file info: CBlockFileInfo(blocks=1, s$
2014-03-13 01:04:58 LoadBlockIndexDB(): transaction index disabled
2014-03-13 01:04:58 LoadBlockIndexDB(): hashBestChain=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2014-03-13 01:04:58 init message: Verifying blocks...
2014-03-13 01:04:58  block index              43ms
2014-03-13 01:04:58 init message: Loading wallet...
2014-03-13 01:04:58 nFileVersion = 80600
2014-03-13 01:04:58  wallet                  441ms
2014-03-13 01:04:58 init message: Loading addresses...
2014-03-13 01:04:58 Loaded 0 addresses from peers.dat  1ms
2014-03-13 01:04:58 mapBlockIndex.size() = 1
2014-03-13 01:04:58 nBestHeight = 0
2014-03-13 01:04:58 setKeyPool.size() = 101
2014-03-13 01:04:58 mapWallet.size() = 0
2014-03-13 01:04:58 mapAddressBook.size() = 1
2014-03-13 01:04:58 AddLocal(XXX.XXX.XXX.XXX:18333,1)
2014-03-13 01:04:58 IPv4 eth0: XXX.XXX.XXX.XXX
2014-03-13 01:04:58 dnsseed thread start
2014-03-13 01:04:58 Loading addresses from DNS seeds (could take a while)
2014-03-13 01:04:58 net thread start
2014-03-13 01:04:58 addcon thread start
2014-03-13 01:04:58 opencon thread start
2014-03-13 01:04:58 msghand thread start
2014-03-13 01:04:58 dumpaddr thread start
2014-03-13 01:04:58 0 addresses found from DNS seeds
2014-03-13 01:04:58 dnsseed thread exit
2014-03-13 01:04:58 init message: Done loading
2014-03-13 01:04:59 GetMyExternalIP() received [XXX.XXX.XXX.XXX] XXX.XXX.XXX.XXX:0
2014-03-13 01:04:59 GetMyExternalIP() returned XXX.XXX.XXX.XXX
2014-03-13 01:04:59 AddLocal(XXX.XXX.XXX.XXX:18333,4)
2014-03-13 01:06:52 ThreadRPCServer method=getinfo
2014-03-13 01:06:52 keypool reserve 2
2014-03-13 01:06:52 keypool return 2
2014-03-13 01:09:09 ThreadRPCServer method=getinfo
2014-03-13 01:09:09 keypool reserve 2
2014-03-13 01:09:09 keypool return 2
2014-03-13 01:19:58 Flushed 0 addresses to peers.dat  4ms
2014-03-13 01:34:58 Flushed 0 addresses to peers.dat  18ms
2014-03-13 01:49:58 Flushed 0 addresses to peers.dat  1ms
2014-03-13 02:04:58 Flushed 0 addresses to peers.dat  22ms
2014-03-13 02:19:58 Flushed 0 addresses to peers.dat  3ms
2014-03-13 02:34:58 Flushed 0 addresses to peers.dat  44ms
2014-03-13 02:49:58 Flushed 0 addresses to peers.dat  22ms
2014-03-13 03:04:58 Flushed 0 addresses to peers.dat  34ms
2014-03-13 03:19:58 Flushed 0 addresses to peers.dat  16ms
2014-03-13 03:34:58 Flushed 0 addresses to peers.dat  32ms
...
...
...
2014-03-13 13:04:59 Flushed 0 addresses to peers.dat  20ms
2014-03-13 13:19:59 Flushed 0 addresses to peers.dat  3ms
2014-03-13 13:30:47 ThreadRPCServer method=getinfo
2014-03-13 13:30:47 keypool reserve 2
2014-03-13 13:30:47 keypool return 2
2014-03-13 13:34:59 Flushed 0 addresses to peers.dat  21ms

Может ли кто-нибудь предложить какие-либо решения, чтобы заставить биткойн синхронизировать и загружать блоки?

Обновление от 13 марта 2014 г.:

Я попытался удалить bitcoin.conf и запустить это:

bitcoind -testnet -debugnet -printtoconsole

и я получил следующее:

Bitcoin version v0.8.6.0-g03a7d67-beta ()
Using OpenSSL version OpenSSL 1.0.1 14 Mar 2012
Default data directory /home/jlp/.bitcoin
Using data directory /home/jlp/.bitcoin/testnet3
Using at most 125 connections (1024 file descriptors available)
Using 4 threads for script verification
init message: Verifying wallet...
dbenv.open LogDir=/home/jlp/.bitcoin/testnet3/database ErrorFile=/home/jlp/.bitcoin/testnet3/db.log
Bound to [::]:18333
Bound to 0.0.0.0:18333
init message: Loading block index...
Opening LevelDB in /home/jlp/.bitcoin/testnet3/blocks/index
Opened LevelDB successfully
Opening LevelDB in /home/jlp/.bitcoin/testnet3/chainstate
Opened LevelDB successfully
LoadBlockIndexDB(): last block file = 0
LoadBlockIndexDB(): last block file info: CBlockFileInfo(blocks=1, size=293, heights=0...0, time=2011-02-02...2011-02-02)
LoadBlockIndexDB(): transaction index disabled
LoadBlockIndexDB(): hashBestChain=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  height=0 date=2011-02-02 23:16:42
init message: Verifying blocks...
 block index              32ms
init message: Loading wallet...
nFileVersion = 80600
 wallet                  454ms
init message: Loading addresses...
Loaded 0 addresses from peers.dat  0ms
mapBlockIndex.size() = 1
nBestHeight = 0
setKeyPool.size() = 101
mapWallet.size() = 0
mapAddressBook.size() = 1
AddLocal(XXX.XXX.XXX.XXX:18333,1)
IPv4 eth0: XXX.XXX.XXX.XXX
dnsseed thread start
Loading addresses from DNS seeds (could take a while)
net thread start
addcon thread start
opencon thread start
msghand thread start


dumpaddr thread start
Error: To use bitcoind, you must set a rpcpassword in the configuration file:
/home/jlp/.bitcoin/bitcoin.conf
It is recommended you use the following random password:
rpcuser=bitcoinrpc
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com

Error: To use bitcoind, you must set a rpcpassword in the configuration file:
/home/jlp/.bitcoin/bitcoin.conf
It is recommended you use the following random password:
rpcuser=bitcoinrpc
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "Bitcoin Alert" admin@foo.com

init message: Done loading
dumpaddr thread stop
Shutdown : In progress...
msghand thread interrupt
Flush(false)
wallet.dat refcount=0
opencon thread interrupt
wallet.dat checkpoint
addcon thread interrupt
wallet.dat detach
wallet.dat closed
DBFlush(false) ended               1ms
StopNode()
net thread interrupt
0 addresses found from DNS seeds
dnsseed thread exit
Flushed 0 addresses to peers.dat  9ms
Committing 0 changed transactions to coin database...
Flush(true)
wallet.dat refcount=0
wallet.dat checkpoint
wallet.dat detach
wallet.dat closed
DBFlush(true) ended               1ms
Shutdown : done

В соответствии с предложением в приведенном выше ответе я добавил в bitcoin.conf следующее:

rpcuser=bitcoinrpc
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

и повторил:

bitcoind -testnet -debugnet -printtoconsole

и получил следующее:

Bitcoin version v0.8.6.0-g03a7d67-beta ()
Using OpenSSL version OpenSSL 1.0.1 14 Mar 2012
Default data directory /home/jlp/.bitcoin
Using data directory /home/jlp/.bitcoin/testnet3
Using at most 125 connections (1024 file descriptors available)
Using 4 threads for script verification
init message: Verifying wallet...
dbenv.open LogDir=/home/jlp/.bitcoin/testnet3/database ErrorFile=/home/jlp/.bitcoin/testnet3/db.log
Bound to [::]:18333
Bound to 0.0.0.0:18333
init message: Loading block index...
Opening LevelDB in /home/jlp/.bitcoin/testnet3/blocks/index
Opened LevelDB successfully
Opening LevelDB in /home/jlp/.bitcoin/testnet3/chainstate
Opened LevelDB successfully
LoadBlockIndexDB(): last block file = 0
LoadBlockIndexDB(): last block file info: CBlockFileInfo(blocks=1, size=293, heights=0...0, time=2011-02-02...2011-02-02)
LoadBlockIndexDB(): transaction index disabled
LoadBlockIndexDB(): hashBestChain=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  height=0 date=2011-02-02 23:16:42
init message: Verifying blocks...
 block index              50ms
init message: Loading wallet...
nFileVersion = 80600
 wallet                  436ms
init message: Loading addresses...
Loaded 0 addresses from peers.dat  1ms
mapBlockIndex.size() = 1
nBestHeight = 0
setKeyPool.size() = 101
mapWallet.size() = 0
mapAddressBook.size() = 1
AddLocal(XXX.XXX.XXX.XXX:18333,1)
IPv4 eth0: XXX.XXX.XXX.XXX
dnsseed thread start
net thread start
Loading addresses from DNS seeds (could take a while)
addcon thread start
opencon thread start
msghand thread start
dumpaddr thread start
init message: Done loading
0 addresses found from DNS seeds
dnsseed thread exit
connection timeout
ERROR: GetMyExternalIP() : connection to YYY.YYY.YYY.YYY:80 failed
connection timeout
ERROR: GetMyExternalIP() : connection to ZZZ.ZZZ.ZZZ.ZZZ:80 failed
GetMyExternalIP() received [XXX.XXX.XXX.XXX] XXX.XXX.XXX.XXX:0
GetMyExternalIP() returned XXX.XXX.XXX.XXX
AddLocal(XXX.XXX.XXX.XXX:18333,4)

Через некоторое время я получил следующий дополнительный ответ:

Flushed 0 addresses to peers.dat  201ms
Flushed 0 addresses to peers.dat  4ms

Может ли кто-нибудь различить сверху, в чем проблема и как ее решить?

0 addresses found from DNS seedsи то , что connection timeoutвы получаете при выполнении GetMyExternalIP(), подразумевает проблемы с конфигурацией сети. Попробуйте traceroute checkip.dyndns.orgи посмотрите, пройдет ли ваш запрос. Возвращает nslookup google.comдействительный IP? Если да, установите брандмауэр (и маршрутизатор, если последний не работает) в режим DMZ и посмотрите, не изменится ли что-нибудь.
@ Джордж Я установил и запустил traceroute checkip.dyndns.org, и я получил 13 строк (хмеля?) обратно. nslookup google.comвозвращает 11 IP-адресов для google.com. Однако я снова попытался запустить биткойн в режиме тестовой сети, и на этот раз он загружает блоки. Я не уверен, почему. Возможно, это как-то связано с тем, что я вернул IP-адрес в файл /etc/resolv.conf, который я ранее закомментировал.

Ответы (2)

Причина, по которой вы не находите узлы, заключается в том, что их может быть не так много, доступных с помощью традиционных методов начальной загрузки (многие клиенты устанавливаются с отключенным UPnP или за брандмауэрами и не могут принимать входящие соединения, а существующие узлы с входящими соединениями иногда могут быть рассредоточены). ). Если вы достаточно терпеливы, вы в конечном итоге получите связь.

Если вы не хотите быть терпеливым, есть обходной путь. Вам нужно найти имя хоста (IP-адрес или URL-адрес) биткойна, подключенного к узлам в тестовой сети. Как только вы его найдете, закройте bitcoind и отредактируйте файл конфигурации биткойнов (nano .bitcoin/bitcoin.conf) с помощью строки:

 addnode=<hostname>

Когда вы запускаете биткойн, он просматривает файл конфигурации и пытается получить доступ к каждому узлу, который вы определили таким образом.

Вы также можете просто закрыть биткойн и начать с команды:

bitcoind -dameon -addnode=<hostname>

Успешно подключенные узлы сохраняются в файле peers.dat, поэтому оба метода работают одинаково хорошо, если узел, к которому вы пытаетесь подключиться, находится в сети. Дополнительную информацию о peers.dat и о том, как его просмотреть, можно найти здесь (если вы хотите помочь другу найти подключение к тестовой сети): Как мне прочитать файл peers.dat, чтобы получить список всех увиденных пиров или что биткойн подключился к?

Я снова попытался запустить биткойн в режиме тестовой сети, и на этот раз он загружает блоки. Я не уверен, почему. Возможно, это как-то связано с тем, что я вернул IP-адрес в файл /etc/resolv.conf, который я ранее закомментировал.

Была ли это запись DNS-сервера, которую вы закомментировали? Потому что это имело бы смысл.
Это были IP-адреса серверов имен. Я не знаю, почему это повлияет на биткойн.
Вот почему вы получите 0 addresses found from DNS seedsошибку, и с этого момента все пойдет ко дну.