Первое, что вам нужно сделать, это получить pynode (язык питона мини-Bitcoin узел) программное обеспечение работает. Это легче на Linux, так как на Windows, вам нужно будет построить LevelDB использовать
ру-LevelDB, что потребует много C ++ материала установлен. Я использую Kubuntu 12.04 на VirtualBox, так как это позволяет иметь вторую "Bitcoin" на другом виртуальном IP-адрес для подключения к основному узлу компьютера.
https://github.com/jgarzik/pynode(
)
Вот шаги, чтобы получить необходимые расширения питона на (к) убунту 12:
Суд APT-получить установку питон-Setuptools
Sudo APT-получить установку питона-LevelDB
Sudo APT-получить установку Libevent-DEV
Sudo APT-получить установку питона-все-DEV
Sudo easy_install greenlet
Sudo easy_install GEventЗатем скачайте и распакуйте pynode в рабочий каталог. Я его в каталоге
/ Главная / USER / pynode /, где
USER это имя пользователя для входа. Я также создал подкаталог
/ Главная / USER / pynode / дб для blockchain.
Вам нужно будет создать
pynode-конфигурации файл. Вы можете вырезать и вставить файл ниже, но изменить IP-адрес будет другой (локальный) Bitcoin узел и изменить / дома / USER строки в ваш логин директории имя пользователя:
pynode-конфигурации# Имя хоста или IP-адрес сетевого узла для подключения к
хозяйничать = 192.168.1.101
# Порт сетевого узла для подключения (по умолчанию: 8333)
Порт = 8333
# Пользователя сервера JSON-RPC, пароль. Использует HTTP обычную проверку подлинности.
rpcuser = XXXX
rpcpass = YYYY
# JSON-RPC сервер входящий TCP-порт (по умолчанию: 9332)
rpcport = 9332
# Каталог баз
дб = / дом / USER / pynode / дб
# Лог файл, или «-» или нет значения для стандартного вывода
войти = / дом / USER / pynode / дб / node.log
# Если он присутствует, импортировать эти блоки в базу данных блока
# Loadblock = / TMP / blk0001.dat
# Если нет, отключить все проверки сигнатур в новых блоках
# (По умолчанию отключено)
NOSIG = 1
# Если нет, заставить подпись проверки на всех блоках,
# Даже те, которые обычно пропускаются, потому что они были до
# На контрольно-пропускной пункт.
# (По умолчанию отключено)
# Forcesig = 1
Затем запустите его с помощью следующей команды:
кд ~ / pynode
./node.py pynode-конфигурацииОна будет загружать все блоки с другим Bitcoin по сети (но идет гораздо быстрее, без повторной проверки).
После того, как это делается загрузки (проверив это файл журнала), вы можете прервать его.
Для создания bootstrap.datНайти и редактировать файл mkbootstrap.py, изменение журналов и каталогов БД в каталогах, используемых выше. Затем запустите его, чтобы сбросить bootstrap.dat до контрольной точки блока, указанного в строке, которая говорит
xrange (216116...
Для создания блоков в импортируемых из нескольких частей файловС другой стороны, для Bitcoins меньше, чем версия 0.8.0, запустить свой измененный файл mkbootstrap.py, который выгружает blockchain и разбивает файлы на один и те же блоки и размере, как Bitcoin создает в его каталогу_данный:
#! / USR / бен / питон
#
# mkbootstrap.py
#
# Распространяется под лицензией MIT / X11 см сопровождающего
# Файл КОПИРОВАНИЕ или http://www.opensource.org/licenses/mit-license.php.
#
импорт SYS
импорт Войти
импорт MemPool
импорт ChainDb
импорт cStringIO
импорт структура
от bitcoin.coredefs импортных СЕТЕЙ
от bitcoin.core импорта CBlock
от bitcoin.scripteval импорта *
NET_SETTINGS = {
'Mainnet': {
'Журнал': '/home/USER/pynode/mkbootstrap.log',
'Дб': '/ дом / USER / pynode / дб'
},
'Testnet3': {
'Журнал': '/home/USER/pynode/mkbootstraptest.log',
'Дб': '/ дом / USER / pynode / chaintest'
}
}
MY_NETWORK = 'mainnet'
НАСТРОЙКИ = NET_SETTINGS [MY_NETWORK]
войти = Log.Log (НАСТРОЙКИ [ 'войти'])
mempool = MemPool.MemPool (журнал)
netmagic = СЕТИ [MY_NETWORK]
chaindb = ChainDb.ChainDb (НАСТРОЙКИ, НАСТРОЙКИ [ 'БД'], журнал, mempool, netmagic,
Правда)
OUT1 = открытое ( 'bootstrap.001', '') термометру
OUT2 = открытое ( 'bootstrap.002', '') термометру
OUT3 = открытое ( 'bootstrap.003', '') термометру
сканируются = 0
отказы = 0
по высоте в xrange (212000 + 1): # последний блок для дампа (контрольных точек)
heightidx = ChainDb.HeightIdx ()
heightstr = ул (высота)
пытаться:
heightidx.deserialize (chaindb.db.Get ( 'высота' + heightstr))
кроме KeyError:
log.write ("Высота " + Ул (высота) + " не найдено.")
Продолжать
blkhash = heightidx.blocks [0]
Блок = chaindb.getblock (blkhash)
ser_block = block.serialize ()
если (высота 1000% == 0 и высота <= 90000) или (высота 100% == 0 и высота > 90000):
Распечатать "mkbootstrap: высота блока " + Ул (высота)
outhdr = netmagic.msg_start
outhdr + = struct.pack ("<я", Len (ser_block))
если высота > 210964: # написать 210965- на 3-й файл
out3.write (outhdr)
out3.write (ser_block)
высота Элиф > 188528: # написать 188529-210964 на 2-й файл
out2.write (outhdr)
out2.write (ser_block)
еще:
out1.write (outhdr)
out1.write (ser_block)
сканируются + 1 =
если (сканируются% 1000) == 1:
log.write ("Высота сканированный% d (% D сбоев)" % (
высота, неудача))
log.write ("Сканированные% D блоков (% D) отказы" % (Отсканированная, неудача))
Это позволит создать "Официальный / финал / проверяемые / не изменится" Первые два blockchain файлов (содержащие блоки до 210964), blk0001 / blk0002.dat в Bitcoin до v0.7.x также будет иметь тот же хэш после импорта:
>sha256sum самозагрузки. *7aac5826b91b4f87a2e9534e0e38e8d64ed21aff8a4eb8ff8dde4e726e67fe1a * bootstrap.001
796f65be10ef2e5fc27b97b09f312c9f8ddd7d1c3ab0f27f356a5b1dbf5a8963 * bootstrap.002
Сценарий будет также создать bootstrap.003 с оставшимися блоками (до 212000 в сценарии). Мы будем игнорировать этот сейчас. Оригинальный сценарий mkbootstrap сбрасывали один bootstrap.dat файл, чтобы заблокировать 193000; если в будущем контрольно-пропускной пункт установлен, заключительная часть 003 будет включать в себя эти блоки.
(Google для вашей собственной копии sha256sum.exe. Поместите его в каталоге Windows, и вы можете запустить его из любого места.)
Давайте импортировать блоки в Bitcoin, это займет шесть часов с SSD и быстрым процессором (3ГГц Core2), еще больше времени с обычным жестким диском и меньше CPU. Вот командная строка, импорт на пустой C для Windows: \ каталогу_данных:
"C: \ Program Files (x86) \ Bitcoin \ демон \ bitcoind.exe" -datadir = C: \ каталогу_данных -loadblock = C: \ bootstrap.001 -loadblock = C: \ bootstrap.002 -connect = 127.0.0.1 -detachdb -printtoconsoleЭто создаст одинаковые хэши блоков файлов в качестве импортируемых файлов, и будет строить окончательный индексный файл. Bitcoin не будет продолжать загрузки из сети после того, как последний блок импорта, вместо этого она будет прервана, так как у вас нет bitcoin.conf. Вот хэш-индекс файла на 0.7.1:
1ab115fd8338f0f4d112c8465418619f1219058a2e6f9baeb7621f39b362a177 * blkindex.dat
Используя этот метод, другие могут создать те же самые blockchain файлов, как вы из сетевой загрузки, импортировать их и убедиться, что они получают те же файлы в их директориях данных, как вы создали.