Как сделать несколько кошельков с одной цепочкой блоков [единый
blk0001.dat и
blkindex.dat]?
Многие из вас наверняка пользуются несколькими кошельками, запуская Bitcoin-клиент с разными значениями параметра
-datadir.
Например, один кошелек - для мелочи(или майнинга), другой - для крупных сумм
При этом каждый кошелек, будучи запущен, каждый раз синхронизируется с сетью, скачивая одну и ту же цепочку блоков, и сохраняя её в
{DATADIR}/blk0001.dat и
{DATADIR}/blkindex.dat.
И вам приходится ждать, несмотря на то, что вы только что запускали другой кошелек, и он уже синхронизировался с сетью.
Сразу возникает идея - заставить программу использовать разные кошельки[
wallet.dat и все прилегающее к ним] с одной-единственной копией цепочки блоков.
Сразу уточню: речь идет не о одновременной работе нескольких кошельков, а о экономии времени на синхронизацию цепочки блоков при последовательном запуске нескольких кошельков.
Официальный клиент Bitcoin, к сожалению, не предоставляет такую возможность.
Однако, счастливые пользователи
Linux или
Windows Vista/Windows 7/Windows 2000/Windows XP смогут обойти это ограничение.
Как - описано ниже.
ПРЕДУПРЕЖДЕНИЕ: Все, описанное в данной статье, вы делаете на свой страх и риск! Претензии по возможным проблемам не принимаются! Ну вот, отмазался, можно продолжать
Рассмотрим вариант с двумя кошельками, использующими единую цепочку блоков.
Определяемся, где у нас будут храниться кошельки и файлы цепочки блоков
[Примечание 1: внимание пользователям Windows 2000/Windows XP! Папки с кошельками и с цепочкой блоков должны находиться в пределах одного раздела(т.е., например, на диске C:)].
Допустим, лежать и кошельки, и цепочка блоков у нас будут по адресу
C:\bitcoin_data\ [для unix, соответственно,
/home/bitcoin_data/ ]
В этой папке мы создадим три подпапки:
Wallet1 (первый кошелек)
Wallet2 (второй кошелек)
blockchain (цепочка блоков).
В папку "
blockchain" у нас будет грузиться наша цепочка блоков.
В ней мы дополнительно создадим три пустых файла:
blk0001.dat [это цепочка блоков]
blkindex.dat [это индекс блоков, для быстрого поиска]
.lock [по этому файлу программа определяет, что файлы блоков сейчас заняты другим экземпляром кошелька. Именно этот файл мешает вам запустить две копии кошелька, а в нашем случае - запустить два разных кошелька на одной цепочке блоков.]
А дальше мы просто создаём symlink'и! [для Windows 2000/Windows XP это будут hardlink, но разницы почти никакой, см.
Примечание 1]
На
Windows 7/Windows Vista symlink создается командой
mklink (описание команды
http://www.windows7home.net/how-to-create-symbolic-link-in-windows-7/) из
cmd, который надо запустить от администратора [
пуск - в поисковое поле вводим "cmd", видим вверху "cmd.exe", щелкаем правой клавишей мыши по нему, выбираем "Запустить от имени администратора".]
На
Windows 2000/Windows XP symlink создать нельзя, поэтому мы будем создавать
hardlink [смотрите
Примечание 1] (описание команды
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/fsutil_hardlink.mspx).
На
linux symlink создается командой
ln (описание команды
http://rus-linux.net/MyLDP/consol/hdrguide/rusman/ln.htm) из консоли.
Примерно так(для
Windows 7/Windows Vista):
Первый кошелек.
mklink C:\bitcoin_data\Wallet1\blk0001.dat C:\bitcoin_data\blockchain\blk0001.dat
mklink C:\bitcoin_data\Wallet1\blkindex.dat C:\bitcoin_data\blockchain\blkindex.dat
mklink C:\bitcoin_data\Wallet1\.lock C:\bitcoin_data\blockchain\.lock
Второй кошелек.
mklink C:\bitcoin_data\Wallet2\blk0001.dat C:\bitcoin_data\blockchain\blk0001.dat
mklink C:\bitcoin_data\Wallet2\blkindex.dat C:\bitcoin_data\blockchain\blkindex.dat
mklink C:\bitcoin_data\Wallet2\.lock C:\bitcoin_data\blockchain\.lock
Примерно так(для
Windows 2000/Windows XP)[см.
Примечание 1]:
Первый кошелек.
fsutil hardlink create C:\bitcoin_data\Wallet1\blk0001.dat C:\bitcoin_data\blockchain\blk0001.dat
fsutil hardlink create C:\bitcoin_data\Wallet1\blkindex.dat C:\bitcoin_data\blockchain\blkindex.dat
fsutil hardlink create C:\bitcoin_data\Wallet1\.lock C:\bitcoin_data\blockchain\.lock
Второй кошелек.
fsutil hardlink create C:\bitcoin_data\Wallet2\blk0001.dat C:\bitcoin_data\blockchain\blk0001.dat
fsutil hardlink create C:\bitcoin_data\Wallet2\blkindex.dat C:\bitcoin_data\blockchain\blkindex.dat
fsutil hardlink create C:\bitcoin_data\Wallet2\.lock C:\bitcoin_data\blockchain\.lock
Примерно так(для
Linux):
Первый кошелек.
ln /home/bitcoin_data/blockchain/blk0001.dat /home/bitcoin_data/Wallet1/blk0001.dat
ln /home/bitcoin_data/blockchain/blkindex.dat /home/bitcoin_data/Wallet1/blkindex.dat
ln /home/bitcoin_data/blockchain/.lock /home/bitcoin_data/Wallet1/.lock
Второй кошелек.
ln /home/bitcoin_data/blockchain/blk0001.dat /home/bitcoin_data/Wallet2/blk0001.dat
ln /home/bitcoin_data/blockchain/blkindex.dat /home/bitcoin_data/Wallet2/blkindex.dat
ln /home/bitcoin_data/blockchain/.lock /home/bitcoin_data/Wallet2/.lock
[
Внимание: в Windows был иной порядок параметров]
Пути можно менять, учитывая ограничения для
Windows 2000/Windows XP, указанное в
Примечании 1.
Вызывать кошельки будете, указывая параметр
-datadir.
Например, для
Windows это:
bitcoin-qt.exe -datadir=C:\bitcoin_data\Wallet1\ [первый кошелек]
bitcoin-qt.exe -datadir=C:\bitcoin_data\Wallet2\ [второй кошелек]
Вот и все!
Если вам понравилась эта статья: 1GtXRBvh8egB6H8iWJUgaZwnDdhdAx6hfU - мой кошелек для цифровых эквивалентов пива