Содержание статьи
По мере того как будет продолжаться твое путешествие по миру Bitcoin, возможностей полустандартного кошелька Bitcoin-Qt в какой-то момент явно перестанет хватать. Лучшей альтернативой является сравнительно новый кошелек Armory, которому и посвящена эта статья. Это приложение не только упростит проведение многих операций с Bitcoin, но и даст несколько важных инструментов обеспечения безопасности твоего «цифрового золота»
Для начала нужно понимать, что такое «кошелек» и чем отличается, например, от «адреса». Адрес — это идентификатор, который используется для проведения платежей. По сути это 160-битный хеш открытого ключа, состоящий из 33 алфавитно-цифровых символов и всегда начинающийся с единицы. Кошелек — это ПО, в котором хранятся суммарные балансы всех адресов пользователя, например в виде файла wallet.dat.
О недостатках Bitcoin-Qt
Распространенными кошельками являются графический Bitcoin-Qt и консольный bitcoind. Но у них, как водится, есть свои недостатки. Самая неправильная, на мой взгляд, особенность Qt-клиента заключается в том, что в нем скрыты Bitcoin-адреса, в графическом интерфейсе их нигде нет. Отсюда следует сразу несколько проблем.
Во-первых, графический интерфейс Bitcoin-Qt отображает только суммарный баланс. Однако, как я уже говорил, на самом деле адресов может быть несколько, и у каждого есть свой строго определенный баланс. Если биткоины пришли на какой-либо адрес, то они могут быть отправлены только с этого адреса, их нельзя «телепортировать» на другой адрес в кошельке без отображения этого перемещения в блокчейне. То есть с одного адреса на другой внутри кошелька биткоины можно переместить только через публичную транзакцию.
Вторая проблема связана с возвратом «сдачи» на адреса — это одна из особенностей протокола биткоина. В техническом описании цифровая монета определена как цепочка цифровых подписей. Если, например, на определенный адрес сначала пришло 2,987 биткоина, а потом еще 0,754, то на нем будет две цифровые монеты соответствующих номиналов. «Переплавлять» такие монеты в новые можно только при помощи транзакций. Например, отправить кому-то 1 биткоин можно или переплавив монету в 2,987 биткоина в монеты достоинством 1 и 1,987 биткоина, или переплавив обе монеты в монеты достоинством 1 и 2,741. Монета-остаток возвращается назад — на любой из адресов отправителя. В приведенных примерах не платилась комиссия, на деле же желательно заплатить какую-то комиссию, чтобы иметь гарантию, что транзакция будет достаточно быстро включена в блок. Например, возможен такой вариант: 0,754 осталось на исходном адресе, 1 биткоин пришел получателю, 1,986 вернулось на один из адресов отправителя, а 0,001 ушло в «сплав» для монеты, которую получит в награду майнер, нашедший блок. И в случае с Bitcoin-Qt неизвестно, какой именно из адресов использовался для получения сдачи.
Bitcoind
Справедливости ради нужно заметить, что я ругал именно графический интерфейс Bitcoin-Qt, но у него есть также и консоль, в которой доступны те же команды, что и в консольном клиенте bitcoind. Там можно и увидеть скрытые адреса, и посмотреть баланс каждого адреса, и отправить биткоины на большое количество адресов сразу в одной транзакции, и указать адрес, с которого биткоины будут отправляться.
То, что в Bitcoin-Qt сдача возвращается на ранее не использовавшийся адрес, с точки зрения конфиденциальности, конечно, оправдано, но было бы намного правильнее не прятать эти адреса от пользователя. Такой подход я вообще считаю багом из-за критического момента, который проявляется при работе с бэкапами кошелька. Надеюсь, ни для кого не секрет, что файл wallet.dat очень желательно (а точнее, обязательно) бэкапить. В бэкапе сохраняются приватные ключи только уже сгенерированных адресов. К счастью, имеется запас уже сгенерированных скрытых адресов для получения сдачи, но он конечен и недостаточно огромен, чтобы об этом можно было не беспокоиться. Размер этого запаса — всего 100 адресов. Поэтому сделанный бэкап нужно по мере необходимости обновлять. Также необходимо делать обновления, если новые адреса создаются вручную. Это очень критичный недостаток, так как этот момент далеко не очевиден для пользователя.
Кошелек же Armory этого недостатка полностью лишен. Но в Armory все это доступно сразу из графического интерфейса, и никаких скрытых адресов там, разумеется, нет. Так же как нет необходимости обновлять бэкапы даже при создании новых адресов. Это связано с тем, что адреса в Armory генерируются по цепочке: каждый новый адрес (точнее, его приватный ключ) генерируется на основе предыдущего и специального секретного ключа (уникален для каждого кошелька). Поэтому цифровые и бумажные бэкапы в достаточном количестве нужно сделать всего лишь один раз, после чего можно спокойно пользоваться кошельком. Возможность делать бумажные бэкапы встроена в функционал Armory, тот, у кого есть возможность надежно хранить такой бэкап, может делать его абсолютно никак не зашифрованным. Можно также его зашифровать или разбить такой бэкап на несколько частей (листов), чтобы хранить их в разных местах.
INFO
До недавнего времени самым главным недостатком Armory было очень высокое системное требование к объему оперативной памяти (не менее 6 Гб). Но в недавней последней версии 0.9 этот недостаток полностью устранен, и Armory теперь не занимает даже 2 Гб.
Перед тем как использовать Armory, необходимо получить полностью синхронизированную базу. Если на локалхосте пока еще нет хотя бы частично синхронизированной базы, то я рекомендую скачать ее через BitTorrent: скачивание ее с нуля через сеть биткоина довольно долгий процесс даже для SSD из-за большого количества операций с накопителем, в то время как через BitTorrent, при наличии нормального интернета, это совсем немного времени. Так как новые блоки появляются примерно раз в десять минут, скачанная база не будет синхронизирована до самого конца и ее нужно будет немного досинхронизировать.
INFO
Не бойся скачивать базу из торрентов. Если в скачанной базе будет хотя бы один косяк, то есть если она будет отличаться от настоящей, то сеть ее просто не примет. Таким образом, самое страшное, что может грозить, — базу придется качать заново из более надежного источника или в крайнем случае просто синхронизировать ее через сеть.
Также Armory для своей работы требует запущенный bitcoind, который можно установить/запустить прямо из интерфейса Armory. Несмотря на то что Armory использует для своей работы стандартную базу, он использует совсем другой файл-кошелек другого формата. Таким образом, если в файле wallet.dat были биткоины, то в Armory они не отобразятся. Перенести имеющиеся биткоины в Armory можно или через транзакцию, или вручную импортировав приватный ключ. При этом нужно иметь в виду, что ключи, импортированные вручную, в бэкапе не сохраняются и бэкапить их нужно отдельно.
INFO
Хотя формат файла-кошелька Armory бинарный, его спецификация открыта. Ознакомиться с ней можно по адресу https://bitcoinarmory.com/developers/armory-wallet-files/.
WWW
Объемный PDF-файл с подробным описанием Armory: j.mp/1foKCll
Возможности Armory
Как уже говорилось ранее, в графическом интерфейсе Armory доступны возможности, которые в Bitcoin-Qt/bitcoind доступны только через консоль: можно указать произвольный размер комиссии; можно сделать отправку на множество адресов сразу одной транзакцией (что может позволить значительно сэкономить на комиссии); если переключить Armory в режим эксперта (User -> Expert), то будет доступна возможность под названием Coin Control, которая позволяет указать, с каких именно адресов можно отправлять монеты в текущей транзакции, например, чтобы помешать стороннему наблюдателю связать свои адреса между собой. Разумеется, в Armory нет никаких скрытых адресов и отображается баланс каждого адреса.
Еще один кошелек
Electrum — очень легковесный Bitcoin-клиент, который для своей работы требует подключения к одному из серверов с полноценным узлом сети Bitcoin. Использует адреса, которые можно восстановить, зная 12 секретных упорядоченных английских слов (уникальный набор для каждого кошелка, сгенерированный случайным образом).
Внимание
Помни: когда ты шифруешь кошелек, если ты забудешь пароль, то никак не сможешь восстановить. (Если, конечно, он не был очень слабым, который легко можно сбрутфорсить.) Если ты придумываешь новый пароль, то я советую его записать до тех пор, пока ты его точно не запомнишь навсегда. Записывать нужно без пометок, которые могли бы дать подсказку постороннему, от чего именно этот пароль.
Дополнительная защита
Шифрование кошелька не является панацеей от троянов, так как троян легко сможет прочитать пароль через кейлоггер. Надежной защитой от троянов может служить, например, холодное хранение Armory или аппаратный кошелек Trezor или аналогичный. Также неплохой защитой средней степени надежности будет отказ от системы блеклистинга (Windows + обновляемый антивирус) в пользу более надежной системы вайтлистинга (Linux без сторонних репозиториев и стороннего софта + расширение noScript в браузере для защиты от эксплойтов).
В Armory также поддерживаются транзакции с мультиподписями, которые, например, позволяют проводить сделки через арбитра, у которого не будет возможности убежать с деньгами. Также есть возможность «холодного хранения» биткоинов. Подробнее об этих возможностях можно прочитать в официальном FAQ и в подробной инструкции по холодному хранению.