Обзор программных кошельков для Komodo (KMD)

Decker
14 min readFeb 25, 2019

--

В этой статье я постараюсь рассказать вам о различных программных кошельках для хранения KMD (Komodo) и ассетов (независимых “монет”, фактически, сторонних блокчейнов на платформе Komodo). Почему-то на многих русскоязычных ресурсах приходится сталкиваться с утверждением, что дескать у Komodo до сих пор нет “нормального” кошелька или в качестве единственного возможного варианта, как правило, называют Agama Wallet, хотя это далеко не так. Здесь, мы постараемся разобраться со всем этим более подробно.

Начнем с того, что исторически KMD (Komodo) является форком ZCash у которого изначально не было собственного GUI кошелька, “официальная” графическая оболочка для самого ZEC появилась сравнительно недавно - zec-qt-wallet . До этого в качестве графической оболочки пользователи ZEC использовали zcash-swing-wallet-ui , который представлял собой wrapper между пользовательским GUI и консольными командами / RPC-вызовами, написанный на Java. Фактически последний анонсированный командой ZCash “кошелек” также является GUI-оболочкой, wrapper’ом, но уже созданным с использованием Qt.

Откуда же пошло утверждение про “отсутствие нормального кошелька”? И что вообще можно считать кошельком?

С точки зрения пользователя кошельком является некое ПО, которое поддерживает функции хранения монет (или если быть точным, приватных ключей, принадлежащих вашим адресам), возможность их отправки и получения, а также ряд других привычных функций. К примеру, у Bitcoin наиболее распространенным кошельком является хорошо известный всем Bitcoin Core , который представляет собой GUI приложение, построенное с использованием Qt и обеспечивает все вышеуказанные функции. Наверное каждый второй пользователь знакомый с криптовалютами так или иначе пользовался им.

Bitcoin Core (Bitcoin-Qt)

Фактически, Bitcoin Core состоит из нескольких частей: bitcoind (демон), bitcoin-cli (утилита, позволяющая преобразовывать консольные команды в RPC вызовы к демону) и bitcoin-qt (демон, интегрированный с графической Qt оболочкой). Для того чтобы стать участником сети Bitcoin и иметь возможность хранить / отправлять монеты достаточно запустить bitcoind и дождаться окончания процесса синхронизации с сетью. После этого можно будет создавать адреса, отправлять монеты используя RPC вызовы к демону или, воспользовавшись утилитой bitcoin-cli. Например для того чтобы узнать баланс достаточно сделать RPC запрос:

curl — user myusername — data-binary ‘{“jsonrpc”: “1.0”, “id”:”curltest”, “method”: “getbalance”, “params”: [“*”, 6] }’ -H ‘content-type: text/plain;’ http://127.0.0.1:8332/

Или же воспользоваться утилитой bitcoin-cli:

bitcoin-cli getbalance “*” 6

Выглядит сложновато, но на самом деле все просто. Демон bitcoind поднимает свой собственный HTTP сервер и принимает запросы на 8332/tcp порту. В первом случае мы формируем JSON запрос для получения текущего баланса и отправляем его с помощью утилиты curl демону, который возвращает нам в ответ суммарный баланс всех адресов нашего кошелька. Такая схема взаимодействия называется RPC (remote procedure call). Утилита bitcoin-cli представляет собой следующий уровень абстракции и избавляет нас от необходимости формировать JSON запрос вручную и указывать номер порта и имя / пароль пользователя для доступа к HTTP серверу. Вместо этого она считывает необходимые параметры из файла bitcoin.conf и позволяет послать тот же самый запрос “в упрощенной форме”. Согласитесь, гораздо проще набрать bitcoin-cli <запрос> , чем указывать все необходимые параметры для curl.

Однако, такой способ удобен только для систем, которые не имеют графического интерфейса, например, для серверов и т.п., где использование GUI фактически не нужно. Для обычной рабочей станции (ПК) с установленной десктопной версией Linux, или же Windows, или MacOS -все это излишне. И пользователи этих ОС привыкли пользоваться bitcoin-qt, т.е. графической оболочкой.

Из всего вышесказанного мы поняли, что функции кошелька, хранения монет и т.п. — реализует сам демон bitcoind (он консольный), все остальное лишь интерфейсы для работы с ним. Взаимодействие с демоном может осуществляться как из консоли, так и с помощью графического интерфейса (GUI).

С появлением ZCash (ZEC) разработчики по всей видимости не фокусировались именно на создании GUI кошелька. Поэтому ZEC, как вы знаете, не имеет в своем составе zcash-qt (и по сей день). В “базовый комплект” ZEC входит сам демон zcashd, а также уже знакомая нам утилита zcash-cli для общения с ним из консоли.

То же самое справедливо и для Komodo (KMD), в котором есть komodod (демон) и komodo-cli - утилита для управления им из командной строки. Именно отсюда и берет начало распространенный миф про “нормальный кошелек”, т.к. с точки зрения пользователя у того же Bitcoin есть bitcoin-qt, а вот ZEC и KMD лишены подобного приложения.

Долгое время для ZEC и KMD действительно не было графического интерфейса, однако с появлением zcash-swing-wallet-ui его адаптировали под все форки ZEC’а, в том числе и KMD - Komodo Desktop GUI Wallet :

Komodo Desktop GUI Wallet (Komodo Swing Wallet UI)

Для понимания сути важно еще раз отметить, что в случае с bitcoin-qt -мы имеем дело с демоном и GUI оболочкой интегрированными в “один флакон”, т.е. кроме запуска bitcoin-qt для начала работы нам больше не требуется ничего. В случае же со swing wallet - это просто графическая оболочка для работы которой обязательно необходимо наличие запущенного демона komodod.

Какое-то время swing wallet оставался единственным графическим интерфейсом для Komodo. Однако с появлением Agama Wallet все изменилось:

Agama Wallet

Agama является приложением написанным на NodeJS и имеет два режима работы:

  • Native Mode - обычный режим, в котором Agama выступает в качестве GUI для демона komodod. При выборе этого режима Agama запустит демон komodod в фоне (фактически, дистрибутив Agama включает в себя бинарный файл komodod для трех операционных систем - Windows, Linux и MacOS), дождется его синхронизации с сетью, после чего вы сможете использовать GUI для управления вашими монетами. Фактически, здесь Agama также обменивается информацией с демоном посредством RPC запросов, т.е. любое ваше действие в GUI приводит к тому, что Agama автоматически формирует соответствующих JSON-RPC запрос к демону, аналогично примеру с curl, рассмотренному выше. Вся разница в том, что это происходит прозрачно для пользователя, т.е. он не задумывается над тем что происходит “внутри” на самом деле. Так, например, при отправке транзакции используется стандартный метод sendtoaddress или sendmany, а при отправке анонимной z-транзакции (напомню, что с 15 февраля 2019 года транзакции данного типа в сети KMD больше не существуют) - zsendmany. Таким образом Agama в Native Mode является просто GUI оболочкой, наглядным для пользователя интерфейсом взаимодействия с демоном. Собственно этот факт и непонимание принципов работы всей схемы в целом породил очередной миф о “глючности” и неудобстве использования приложения. Приведу простой пример, если предыдущий запуск демона завершился некорректно, например произошло нештатное завершение работы ПК, то при следующем запуске komodod будет пересканировать ваш кошелек, чтобы проверить корректность существующих в нем транзакций и исправить ошибки, в случае их нахождения. Из-за специфики демона в некоторых случаях во время rescan’а кошелька он перестает отвечать на RPC запросы до завершения текущего задания, со стороны Agama’ы это может смотреться так, как будто приложение “подвисло” или работает некорректно. Т.к. Agama периодически запрашивает у демона какую-то информацию (например ваш баланс или текущий статус синхронизации, высоту последнего блока в блокчейне и т.п.) … В случае если такое произошло, не стоит винить во всем GUI, гораздо проще открыть debug.log вашего komodod и посмотреть последние записи, чтобы понять что на самом деле происходит с демоном в данный момент. Если это rescan - то вы увидите соответствующие строчки в debug.log.
  • Lite Mode (SPV, Electrum) - в этом режиме Agama будет работать как Electrum кошелек. В данном варианте работы вам не потребуется скачивание полного блокчейна KMD на свой ПК, вся работа с сетью будет осуществляться с использованием Electrum-серверов, поддерживаемых Komodo. Для тех, кому это понятие в новинку или для тех кто просто никогда раньше не интересовался подробностями “как это работает” вкратце поясню: весь скачанный блокчейн находится на удаленном ElectrumX сервере. При отправке монет Agama запрашивает с Electrum сервера ваши UTXO (неизрасходованные “выходы”), отображает вам ваш баланс (т.е. сумму ваших UTXO или количество монет которыми вы владеете), после чего подписывает транзакцию вашим приватным ключом и отправляет ее в сеть, опять же через Electrum сервер. Процесс абсолютно безопасен, т.к. приватные ключи никогда не покидают вашего ПК, в сеть транслируется уже подписанная вашим ключом транзакция. Т.е. фактически только публичная информация, которая и так содержится в блокчейне. Lite Mode в Agama по-сути является самым быстрым и удобным способом взаимодействия с сетью Komodo для отправки / получения монет. Т.к. в данном случае нагрузка на ресурсы вашего ПК минимальна: вам не нужно дополнительное место на HDD / SSD для хранения всего блокчейна, вы не являетесь узлом сети, поэтому ресурсы вашего CPU и интернет-трафик не расходуются во время обработки / валидации транзакций, плюс, вам не нужно ждать полной синхронизации с сетью при запуске кошелька, т.к. Electrum сервера всегда содержат полностью синхронизированную версию блокчейна. Еще одним плюсом использования Lite Mode в Agama является поддержка других монет. Т.к. Agama умеет общаться с Electrum серверами (а это в целом унифицированный протокол) она может обращаться как к Electrum серверам Komodo, так и других монет, например, BTC, ZEC, HUSH и т.п. Таким образом Agama представляет собой мультивалютный кошелек, в котором вы можете хранить все свои криптоактивы. Это гораздо удобнее и безопаснее, чем хранить их на биржах и т.п. Гарантией безопасности в данном случае выступает ваша пассфраза (passphrase), которую вы вводите при входе в Agama. Обратите внимание, что пассфраза является единственным способом получения доступа ко всем вашим монетам. Если по каким-то причинам вы забудете ее или она окажется скомпрометированной или недостаточно надежной - вы потеряете доступ к вашим монетам навсегда. Или же злоумышленники получат возможность легко украсть их у вас. Старайтесь использовать в качестве пассфразы сгенерированный Agama’ой seed (идентификатор) из 24 слов или сложную комбинацию вроде bop4e7yo1CMa29DQ, которую невозможно подобрать за разумное время или найти в одном из распространенных словарей.
Agama Passphrase (24 word seed)

Конечно и seed из 24-х слов, и пассфразу в приведенном выше примере, состоящую из строчных и заглавных букв и цифр практически невозможно запомнить и постоянно держать в голове. Но, во-первых именно благодаря надежности выбранной вами пассфразы осуществляется безопасный доступ ко всем вашим монетам, а во-вторых пассфразу можно “сохранить” в Agama’е, заменив ее PIN’ом. Т.е. для доступа вам необходимо будет ввести PIN-код, а Agama уже подставит для входа сохраненную полную пассфразу. Использовать ли такой “быстрый вход” по PIN’у или нет, каждый решает сам для себя. Т.к. в данном случае пассфраза (хоть и в зашифрованном виде) хранится на вашем ПК и вредоносное ПО теоретически может попытаться скопировать ее и отправить злоумышленникам, которые зная что она зашифрована небольшим цифровым паролем (PIN’ом) с легкостью могут расшифровать ее. Впрочем то же самое можно сказать и про ввод пассфразы с помощью метода Copy & Paste (например в варианте когда мы копируем ее из менеджера паролем или из “секретного” текстового файла), т.к. теоретически вредоносное ПО может перехватывать любую информацию из вашего буфера обмена. Чтобы обезопасить себя от подобного рода угроз - можно порекомендовать использовать кошелек в “защищенной среде”, т.е. на ПК с установленным и обновляемым антивирусом, на котором по-возможности не устанавливается дополнительное ПО из непроверенных источников и который не используется для активного интернет-серфинга другими пользователями.

Тема безопасности, как вы уже наверное поняли, настолько обширна, что выходит далеко за рамки этого обзора. Но все же для понимания сути, расскажу еще немного про пассфразы. Так, например, в рассматриваемом выше примере seed:

fix stem detail hair sister chair long process voice effort then latin radar lake void dentist funny atom afraid song gather reason creek mechanic

соответствует приватному ключу

03cf7550b4df8b05bcb4fdf4c6d6fb38776c37f3a8bd13d2021ee50800530b87db

или следующим адресам и WIF в различных сетях:

  • BTC: 13DCQCV69qVaFokxQjnLiNF4cGFt9CZUi8 (L23oFx2gxRHnNcHm9SLAPgx1vKDbaKiGd9ZtUFqfUm8Laot6VYKR)
  • KMD: RBVPUiNNkfJ9Kp89sumTotaGNXiUtXSDGx (UtqdZdefTeG2qf5rKz1kA8dErPGjfRytPewi3WdLwUM3UfrKba3v)
  • ETH: 0x02bEeCbcB6558ad335a048e3E428636e247e2bfA

И т.д. “Потеряв” пассфразу вы автоматически теряете доступ ко всем монетам во всех сетях. То же самое верно, если пассфраза была скомпрометирована, т.е. стала известна кому-то еще кроме вас. В этом случае вы просто “дарите” доступ ко всем вашим монетам неизвестным, т.к. они могут воспользоваться этой пассфразой и перевести все ваши монеты себе. То же самое возможно в ситуации когда вы используете достаточно простую пассфразу, легко подбираемую по словарю или используете в качестве пассфразы любую публичную информацию, например, год своего рождения, номер телефона, номер автомобиля, имя домашнего питомца и т.п. Т.к. никто не мешает злоумышленникам взять все известные в мире клички собак (даже если вы называете вашу собаку “BadCommandOrFileName777”, поверьте, такая комбинация с большой вероятностью также будет проверена злоумышленником) и попробовать их в качестве парольной фразы. Автоматизировать этот процесс достаточно легко. Обладание пассфразой эквивалентно знанию приватных ключей от каждой монеты, потеря или компрометация пассфразы равносильно потере приватных ключей ко всем монетам.

Также, вы можете в любой момент “сконвертировать” вашу пассфразу в WIF и импортировать ее в другой кошелек. Так, например, если у меня есть средства на адресе Bitcoin в Agama’е, но я хочу использовать их в Bitcoin Core, я могу получить WIF для импорта в Bitcoin из меню Tools -> Seend to key pair в Agama:

Как видно, все достаточно просто. Кстати, равносильно и обратное. Если у вас есть WIF от Bitcoin, полученный с помощью dumpprivkey - вы можете использовать его в качестве пассфразы для входа в Agama. Удобно, согласитесь?

Если вы еще ни разу не пробовали использовать Agama, определенно стоит попробовать. ПО постоянно совершенствуется и обрастает новыми полезными функциями, так, например, в одной из последних версий была добавлена полноценная поддержка ETH и ERC20 токенов (вы также можете использовать их в Lite Mode без скачивания блокчейна ETH на свой ПК), а также мгновенный обмен между некоторыми монетами с использованием сервиса CoinSwitch:

Agama, обмен с использованием сервиса CoinSwitch

Данная возможность является экспериментальной на момент написания этой статьи, подробнее узнать о том, как ее активировать вы можете в Discord у KomodoPlatform.

Естественно, что интерфейс Agama Wallet отличается от всем известного и где-то минималистичного интерфейса Bitcoin Core. Однако, для поклонников Qt Style интерфейса у Komodo, в отличие от ZCash, есть полноценный Native Qt Wallet - KomodoQt (KomodoOcean):

Komodo-Qt (KomodoOcean)

Разработка кошелька поддерживается независимыми разработчиками, а его исходные коды доступны на GitHub в официальном репозитории KomodoPlatform. Внешне кошелек выглядит абсолютно также как и Bitcoin Core, но поддерживает Z-транзакции (вкладка Z-Send) для ассетов, а также имеет ряд других специфических для Komodo улучшений. Фактически Komodo-Qt представляет собой первый в мире полноценный Qt кошелек для zcash форка, ни одна из других монет, которая является форком zcash не имеет подобной разработки. Строго говоря, KMD (Komodo) в его нынешнем виде можно считать форком ZEC достаточно условно, т.к. KMD уже давно “перерос” стадию форка и представляет собой замкнутую экосистему со множеством собственных разработок, отсутствующих в ZEC и других монетах. Если попытаться рассказать о том, чем KMD отличается от ZEC - то материал может не уместиться и на страницах нескольких статей, здесь и dPoW, CC (CryptoConditions), и ассеты (assetchains), и BaaS сервисы и много чего еще, включая ~5.1% APR.

Наверное уместным будет сделать небольшое отступление по-поводу последнего. В KMD вы можете получать дополнительный доход (около 5% или 5.1% годовых) просто за хранение ваших монет (!). Раньше для 5% APR использовалась терминология interest, теперь же “бонусный процент” принято называть rewards (вознаграждение). На скриншоте Komodo-Qt выше он наглядно виден. Смысл достаточно простой. Для получения rewards (interest) нужно иметь больше 10 KMD у себя в кошельке (строго говоря нужно иметь от 10 KMD в виде одного или нескольких utxo, т.е. иметь неизрасходованные выходы от 10 и более KMD на своих адресах). Далее, на них автоматически начисляются 5% годовых просто за то что вы владеете / храните их. Отличительной особенностью здесь является отсутствие необходимости (!) держать запущенным кошелек. rewards начисляются даже в случае, если ваш кошелек не находится в сети, т.е. выключен. В момент получения вами KMD данный факт фиксируется в блокчейне (поле nLockTime в транзакции), а в момент расходования, т.е. отправки кому-либо монет, данное поле анализируется, разница между временем когда монеты пришли к вам в кошелек и когда вы их отправляете как раз и является временем за которое начисляется процент. Проверить какой процент вознаграждения уже начислен на ваш KMD адрес можно здесь, а рассчитать процент здесь.

Так, например, имея 1000 KMD на балансе вы будете получать около 4.167 KMD в месяц:

5% вознаграждения для всех холдеров KMD

Не забываем что процент годовой, а также накопительный. Т.е. в первый месяц вы получите 1000×0,05÷12 = 4.167 KMD, во второй месяц процент уже от суммы 1004.167 KMD и т.п. Таким образом с 1000 хранимых KMD за год вы получите примерно 51.162 KMD. Единственный момент - вы должны получать (“снимать”) ваше вознаграждение раз в месяц, иначе процент перестает начисляться. Для получения вознаграждения необходимо нажать кнопку Claim в Agama, или просто раз в месяц отправлять весь доступный баланс самому себе. В момент отправки транзакции APR будет автоматически добавлен к вашим монетам. Т.е. по истечении первого месяца, отправив 1000 KMD самому себе, вы получите 1004.167 KMD.

В Komodo-Qt текущее значение вашего rewards отображается на главном экране в соответствующей графе. Если вы отправите все ваши монеты на свой же адрес, то вы получите отправляемое количество + APR бонус, т.е. rewards.

Получать бонус (claim rewards) вы можете так часто, как вам нравится. Т.е. вы можете получать свой reward хоть ежедневно, основным правилом является не забывать, что если за месяц вы ни разу не получали вознаграждение, то по истечении месяца оно просто перестает расти. Поэтому важно проделывать эту операцию хотя бы раз в месяц (месяц считается с момента получения KMD на ваш кошелек). Будьте внимательны, т.к. например, выводы с пулов обычно меньше 10 KMD, а на суммы меньше 10 KMD APR не начисляется. Т.е. если у вас есть к примеру 3 вывода с пула в 7 KMD, 3 KMD, и 5 KMD, т.е. на ваш кошелек были три входящие транзакции с указанным количеством, то % reward начисляться не будет (!), для того чтобы он начал начисляться вам необходимо объединить эти входы, т.е. перевести 15 KMD самому себе на свой же адрес.

Вернемся теперь к Komodo-Qt. В репозитории существует несколько веток — master (для Windows), Linux (для Linux) и MacOS (для MacOS). Komodo-Qt доступен в виде бинарных файлов только для платформы Windows, для Linux и MacOS кошелек придется собрать из исходников, согласно инструкциям приведенным в каждой ветке. Это не так сложно как кажется изначально, основное правило - следовать мануалу размещенному в файле README.md соответствующей ветки. В случае возникновения проблем, вопросов или необходимости получения консультации по сборке достаточно задать интересующий вас вопрос на канале #wallet-ocean-qt в Discord’е Komodo.

Внутренне Komodo-Qt подобно bitcoin-qt, представляет собой интегрированные демон и Qt GUI, таким образом komodo-qt - это полноценный native wallet, в отличие от рассмотренных нами ранее GUI надстроек.

p.s. Для начала работы с komodo-qt не забудьте создать файл конфигурации komodo.conf, а также загрузить на ПК ZCashParams файлы, так, как это описано в инструкции.

Выше мы рассмотрели возможные варианты работы с KMD на ПК:

  • komodod + komodo-cli - для желающих работать с консольной версией кошелька.
  • komodo swing wallet ui - графическая оболочка (GUI-надстройка) над komodod, написанная на Java.
  • Agama Wallet - полноценный Electrum (SPV) кошелек в Lite Mode, и GUI надстройка в Native Mode.
  • Komodo-Qt (KomodoOcean) - аналог bitcoin-qt для KMD c Qt-style интерфейсом, аналогичным Bitcoin Core.

Однако, как же обстоят дела с мобильными версиями? Возможно ли использовать KMD на мобильных устройствах с Android и iOS?

Заранее отвечу что, да, конечно возможно. Но обзор мобильных кошельков - это уже тема для отдельной статьи. Поэтому здесь мы лишь ограничимся перечислением их названий и ссылками:

Некоторые из перечисленных здесь мобильных кошельков на момент написания статьи доступны только в Android версии, iOS же версия, доступна либо через TestFlight (способ бета-тестирования приложений от Apple), либо пока недоступна вовсе. По мере появления обновлений - информация в этой статье будет дополнена.

Также за бортом обзора остались различные 3rd-party десктопные и web-кошельки с поддержкой KMD (Komodo), такие как Magnum Wallet, Chameleon Wallet и т.п. Отчасти потому что на данный момент они находятся либо в стадии разработки, либо по другим причинам. Информация о них также будет консолидирована со временем и добавлена в статью.

Искренне надеюсь что данная статья помогла вам определиться с выбором десктопного кошелька для KMD или по-крайней мере, узнать какую-то новую полезную для вас информацию.

--

--