Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы технологии блокчейн и криптовалют для менеджеров. Учебное пособие
.pdf
61
Это отдельное автономное приложение, которое позволяет хранить
свою собственную криптовалюту и использовать браузер DApp, контролируемый вами и только вами. Это означает, что закрытые ключи
(которые представляют право собственности на криптовалюту) вашего
кошелька хранятся непосредственно на вашем мобильном устройстве,
а не на централизованном устройстве обмена информацией, таком как
Coinbase.com. Для использования приложения CoinbaseWallet вам не
нужна учетная запись Coinbase. Тем не менее есть те, которые готовы
обменять это на удобство того, что их биткоины всегда под рукой через
простой в использовании веб-сайт.
С другой стороны, такие кошельки, как Mycelium и Electrum, не
хранят чьи-либо личные ключи в облаке. Пользователи владеют собственными закрытыми ключами и несут ответственность за свои средства. В случае потери закрытого ключа у этих сервисов нет никаких
прав. Преимущество, конечно, в безопасности, поскольку никто, кроме
вас, не контролирует ваши личные ключи. Однако это огромная ответственность и бремя, особенно для случайных пользователей биткоинов.
В конце концов выбор кошелька зависит только от вас.
Независимо от того, предпочитаете ли вы удобные функции, такие как оплата с помощью смартфона и QR-коды, модные кошельки
с несколькими подписями, или делаете все возможное, чтобы использовать аппаратный кошелек, распечатаете на бумаге ваш закрытый
ключ или запомните его, все сводится к вашим личным потребностям.
Вы можете подумать: хорошо, мы много говорили о биткоин-кошельках и о том, как управлять закрытыми ключами, но как мне вообще
получить биткоин? Во-первых, можно воспользоваться биткоин-банкоматом. Сначала вы сканируете свой QR-код из приложения-кошелька
для смартфона или любого другого устройства (или листа бумаги), которое может отображать QR-код. Важно то, что этот QR-код содержит
ваш биткоин-адрес. Некоторые биткоин-банкоматы работают немного
по-другому и, вместо того чтобы сканировать QR-код, они просто распечатывают бумажный кошелек для вас, как только вы заплатили эквивалентную сумму наличными, дебетовой или кредитной картой. Также
можете получить биткоин через биржу, где вы можете торговать между
различными типами традиционной валюты и криптовалютами. Например, вы можете переводить биткоины в доллары США и, естественно,
из долларов США в биткоины. Биржи важны, потому что они устанавливают цену биткоина, в связи с тем что они определяют рыночную
стоимость. Существует множество бирж, среди которых есть более

62
авторитетные. Поэтому важно проявить должную осмотрительность
при выборе биржи. Например, есть различие между централизованными и децентрализованными биржами. Централизованные биржи
просты в использовании и к ним легко получить доступ, но они представляют больший риск для ваших средств.
За прошедшие годы произошло несколько печально известных
хакерских инцидентов: взлом и банкротство биржи Mt.Gox, а также недавний взлом BitFinex, в результате которого было украдено около
120 000 биткоинов. Как правило, хранить деньги на биржах в долгосрочной перспективе небезопасно. Многие пренебрегают этим правилом и в итоге теряют все свои средства, когда происходит взлом.
Естественно, в силу тенденции децентрализации всего по соображениям безопасности теперь у нас есть децентрализованные биржи.
Они не полагаются на сторонние службы для хранения средств клиента
или выполнения какой-либо критически важной внутренней работы.
Вместо этого сделки происходят только напрямую между пользователями (вспомните P2P). Обычно это делается путем создания прокси-токенов или активов, которые представляют собой определенное количество фиатной валюты или криптовалюты. Прокси-токен – это электронное представление базового актива, такого как биткоин в блокчейн
Ethereum, совместимое со смарт-контрактами на этой платформе. Держатели токенов могут удобно торговать прокси-токенами, представляющими различные активы в цепочке.
Некоторые примеры децентрализованных бирж: Bitsquare,
Bitshares, Openledger, NXT, CounterParty и т. д.
Децентрализованные биржи не обязательно лучше централизованных, тем более что крупные централизованные биржи, как правило,
поддерживаются мощными компаниями, которые могут инвестировать
в высокий уровень безопасности, но, конечно, всегда лучше проявить
необходимую осмотрительность.
Теперь мы знаем, что кошельки помогают управлять вашей идентификацией, т. е. вашими публичными и закрытыми ключами. Мало
что можно добавить, когда вы просто напишите или распечатаете копию своего закрытого ключа или используете мнемонику как способ
вспомнить свой закрытый ключ. Но когда дело доходит до программного обеспечения кошелька, все немного сложнее. Сейчас поговорим
о некоторых механизмах кошелька и о том, как они активируют функции вашего любимого приложения – биткоин-кошелька.

63
Почему, когда пользователь системы биткоин использует программное обеспечение своего кошелька, ему не нужно загружать всю цепочку биткоинов? За это нужно поблагодарить SPV, которое расшифровывается как Simple Payment Verification. И это метод проверки того,
включены ли определенные транзакции (в частности, ваши собственные
транзакции) в блок, путем загрузки только заголовков каждого блока,
а не всего блока, который включает все транзакции. Это особенно полезно для клиентов, которые ограничены емкостью хранилища, поскольку теперь они могут работать, не сохраняя полную цепочку блоков.
Представьте себе типичный биткоин-кошелек для смартфона. У вас не
хранится весь блокчейн. Вместо этого у вас есть кошелек для отслеживания ваших ключей и компонент сетевой маршрутизации, который позволяет вам подключаться к протоколу биткоин Р2Р. Все это делается без
полной цепочки блоков, и по этой причине клиенты, на которых выполняется SPV, называются легковесными или тонкими клиентами. В SPV,
имея заголовки блоков, вы можете просто запустить доказательство
включения дерева Меркла, которое мы рассматривали ранее.
Одно из основных предположений, которое вы должны сделать
при использовании SPV, заключается в том, что заголовки входящих
блоков не из ложной цепочки. Если заголовки блоков, которые вы получаете, являются поддельными или недействительными, то транзакция, которую вы считаете действительной, на самом деле может не быть
таковой, и кто-то потенциально может удвоить ваши расходы. К счастью, в целом нормально предположить, что заголовки входящих блоков не из ложной цепочки.
Пока вы подключаетесь к множеству разных узлов, вероятность
того, что каждый из них будет контролироваться одним злоумышленником, значительно снижается. И пока вы подключены к множеству узлов, в долгосрочной перспективе цепочка, которую вы видите, будет
честной. Это основное предположение, которое мы делаем в биткоине
с самого начала. И действительно, мы не можем позволить себе разместить всю цепочку блоков на наших телефонах или других легких
устройствах, поэтому наличие тонкого клиента с SPV – вполне достойный компромисс.
Мы упоминали мультиподпись в предыдущем разделе в отношении оплаты хеша скрипта. Но чтобы еще раз объяснить и уточнить его
потенциальное использование, мы обобщаем, говоря, что мультиподпись позволяет так называемые транзакции M-of-N. Проще говоря,
мультиподписи – это способ криптографического обмена ключами

64
между участниками, который служит для распределения точек отказа.
Представьте, хотите ли вы поделиться кошельком со своей семьей или
даже с собой. Например, рассмотрим мультиподписи 2 из 3.
К примеру, у меня есть мультиподпись 2 из 3 с моими друзьями
Денисом и Галиной. Только двое из нас должны подписать транзакцию,
чтобы ее отправить. Но никто не может просто сбежать с нашим биткоином, так как вам нужно как минимум два из трех ключей. Вместо того
чтобы потерять свой закрытый ключ, а затем впоследствии потерять все
свои средства, у меня есть несколько точек отказа. После потери одного
закрытого ключа у меня все еще осталось два из трех общих ключей,
поэтому у меня все еще достаточно ключей для доступа к моим средствам по схеме с мультиподписью 2 из 3.
Вот другой пример. Некоторые биржи и компании-производители программных кошельков предоставляют услуги с мультиподписью 2 из 3 или 3 из 5. В случае с мультиподписью 2 из 3 вы сохраняете
два своих ключа, а третий ключ – доверенная третья сторона, такая как
компания или биржа. Биржа не может использовать ваши средства, поскольку у нее есть только один ключ. Но, если вы когда-нибудь потеряете один из своих ключей, компания может вмешаться и предложить
свой ключ, чтобы помочь вам вернуть свои средства. Как вы понимаете,
это работает аналогично для мультиподписи 3 из 5 или любой другой
мультиподписи M-of-N.
Обычно рекомендуется никогда не использовать псевдонимы повторно. А значит, требуется создание новой пары открытого и закрытого ключей для каждой совершаемой вами транзакции. Это нужно сделать, чтобы было сложнее определить, сколько биткоинов у вас есть
и на что вы их потратили. Кроме того, представьте, что вы не создавали
новую пару открытого и закрытого ключей для каждой транзакции,
а все ваши средства были связаны с одним идентификатором. Как
только вы потеряете соответствующий закрытый ключ, все ваши средства исчезнут. Лучше всего распределять средства между несколькими
учетными записями. В конце концов, ваши закрытые ключи – это просто случайные числа, между которыми нет никакой связи, поэтому компрометация одного ключа не зависит от других.
И открытые, и закрытые ключи в любом случае легко сгенерировать с вычислительной точки зрения. Так почему бы вам не создавать
новые открытые и закрытые ключи для каждой транзакции? Это небольшое усилие, которое потенциально может помочь сохранить ваш
опыт работы с биткоинами. Программное обеспечение кошелька, как

65
правило, справится с этим в любом случае, что значительно упрощает
соблюдение лучших практик.
Теперь, если вы учитываете вопрос безопасности и генерируете
новый открытый и закрытый ключи для каждой транзакции, естественный вопрос: как управлять увеличивающимся количеством ключей?
Это особенно актуально, если совершаете частые транзакции. Количество ключей, которыми вы управляете, может быстро стать огромным.
Традиционный способ отслеживания ключей заключается в использовании так называемых кошельков JBOK, где JBOK является аббревиатурой словосочетания «просто связка ключей». Идея кошельков
JBOK в том, что после каждой транзакции вы должны делать новую
резервную копию новой пары ключей, которую вы генерируете. В качестве альтернативы вы также можете начать с заранее созданной
группы ключей. Однако, после того как вы израсходуете все эти ключи,
у вас все равно будет та же проблема, связанная с необходимостью создания дополнительных ключей. Кошельки JBOK не слишком удобны,
потому что вам нужно хранить каждую пару ключей.
В случае с биржой проблема возрастает, поскольку постоянно
торгуют тысячи пользователей, а значит, придется иметь дело с таким
количеством ключей и даже с большим количеством резервных копий.
Это было бы довольно неуправляемо. Так что, вместо того чтобы иметь
просто связку ключей, давайте попробуем что-нибудь более умное. Что
если бы мы могли вместо этого придумать способ получения ключей из
исходного начального значения?
Это идея HD-кошельков или иерархических детерминированных
кошельков. Итак, начинаем со случайно сгенерированного начального
значения. Вместо того чтобы с этого момента создавать резервную копию каждого отдельного ключа, мы могли бы просто детерминировано
сгенерировать новую пару ключей, если известно исходное начальное
значение. Можем рассматривать эту пару ключей как главный ключ.
Сначала генерируем наш главный ключ. И для каждого последующего ключа, который хотим сгенерировать, можем просто взять хеш
главного ключа с некоторым счетчиком или номером индекса, а затем
придем к нашему производному дочернему ключу. Например, если
я хочу сгенерировать свой третий дочерний ключ, я бы добавил 3 к моему главному ключу и хешировал все это.
Мы можем рассматривать главный ключ как родительский ключ,
а любые ключи, которые сгенерированы из него, являются его дочерними ключами. И чтобы сделать вещи более интересными, также

66
можем использовать дочерние ключи в качестве родительских ключей
для создания еще большего количества дочерних ключей.
Генерируя ключи известным способом, а не случайным образом,
мы значительно уменьшаем нагрузку на кошельки, которые должны отслеживать все ваши ключи, особенно если вы имеете дело с тысячами
ключей, как это делают биржи. Конечно, биржи могут использовать кошельки HD, чтобы значительно снизить свою нагрузку, но кошельки
HD также могут быть полезны и в других местах.
Представим себе организацию с иерархической структурой, в которой руководитель контролирует наш главный ключ. Из главного
ключа мы можем сгенерировать дочерние ключи для каждого из руководителей отдела. А из ключей руководителей отделов мы можем снова
сгенерировать дочерние ключи для каждого из сотрудников отдела. Поскольку ключи выводятся иерархически, кто-то, контролирующий родительский ключ, может получить дочерний ключ и использовать его.
Если бы у всех в нашей иерархической организации был кошелек
HD, как было определено ранее, тогда руководители отделов могли бы
тратить деньги из кошельков сотрудников в своем отделе, поскольку
ключи сотрудников были сгенерированы из ключей главы отдела. Каждый ключ каким-то образом происходит от главного ключа руководителя организации, поэтому руководитель сможет тратить деньги из любого кошелька.
Мы говорили о консенсусе и Proof-of-Work, но на самом деле не
говорили о реализации майнинга в биткоинах. Далее подробно рассмот-
рим, как майнинг проявляется в реальном мире и как даже гениальный
Сатоши Накамото не мог представить себе будущее майнинга. Рассмотрим, что на самом деле делает майнер для проверки блоков.
Сначала рассмотрим общие шаги для майнинга как полного узла.
Шаг 0 (предварительный шаг для майнинга) – загрузка всей цепочки биткоинов. Это позволяет нам знать историю, чтобы можно было
проверить будущие транзакции. Примечание: этот шаг не является обязательным, если вы майните в пуле для майнинга, но об этом позже.
Шаг 1 (следующий шаг) – проверка действительности транзакций, которыми мы заполняем наш блок.
Шаг 2 – создание блока с помощью данных транзакции и всех
необходимых метаданных, таких как время, версия и цель.
Шаг 3 – поиск доказательства работы, или действительный одноразовый номер, который решает задачу хеширования прообраза (введенных данных).

67
Шаг 4 – трансляция своего блока в систему, если мы еще не видели блоки конкурентов.
Шаг 5 – получение прибыли, если ваш блок попадает в самую
длинную цепочку.
Подробно рассмотрим, как проходит каждый из этих шагов.
Шаг 0. Скачиваем историю транзакций. Этот шаг нужно сделать
только один раз по двум причинам. Если у вас есть полная история цепочки биткоинов, вам нет необходимости повторно загружать эту информацию, а необходимо только отслеживать входящие блоки от других майнеров. Если вы майнер с узлом SPV, вам нужно только хранить
заголовки блоков и запрашивать информацию у полных узлов для проверки транзакций по мере необходимости. Это означает, что этот шаг
не является обязательным. Если хотите стать полноценным независимым майнером, этот шаг необходим. Затем, когда у нас есть полная история, можно приступить к майнингу.
Шаг 1. Проверим транзакции. Пользователи биткоина каждую
секунду отправляют транзакции в сеть биткоин, и задача майнеров заключается в проверке действительности этих транзакций. Когда транзакции поступают к майнерам, они сохраняют их в «мемпуле», где
«мем» означает «память», а «пул» – «поставку» (относится к поставке
транзакций). Здесь находятся все ожидающие транзакции, прежде чем
они попадут в блок. Затем майнеры выберут транзакции для подтверждения на основе их комиссии за транзакцию, о чем речь далее. Они
проверяют действительность каждого из них, запустив скрипт разблокировки. Если этот фрагмент кода может успешно разблокировать
предыдущие биткоины, транзакция проходит.
После проверки всех этих транзакций пора сгенерировать блок.
Как упоминалось ранее, для создания блока требуется несколько частей
информации, например корень Меркла, который мы генерируем из
нашего списка транзакций. После построения данных блока наконец
можно приступить к работе над самой дорогостоящей частью процесса
майнинга – этапом, за который весь этот процесс Proof-of-Work получил название майнинга: поиск действительного одноразового номера.
Как упоминалось ранее, каждому майнеру необходимо найти одноразовый номер, который делает хэш заголовка блока меньше некоторого целевого значения.
Вот как реализуется Proof-of-Work в биткоинах и любой другой
криптовалюте. Обнаружив одноразовый номер, мы преобразовали энергию, потраченную на вычисления, непосредственно в силу голосования

68
в протоколе консенсуса Proof-of-Work. Существует два разных одноразовых номера: одноразовый номер заголовка и одноразовый номер базы
данных. Следует иметь в виду, что одноразовый номер в заголовке – это
достаточно небольшое число, размером всего 32 бита. Это означает, что
мощное устройство может определить все возможные варианты Nonce
за секунду. Если мы не находим правильного варианта, тогда меняем одноразовый номер coinbase, поле внутри транзакции coinbase. Изменяя
этот одноразовый номер, мы меняем корень Меркла, и таким образом
мы можем получить больше вариантов ответа. Проходим эти циклы,
пока наконец не найдем правильный одноразовый номер.
После нахождения одноразового номера типичный майнер передает его как можно скорее, чтобы другие майнеры знали, что блок был
найден. Эти майнеры проверят блок для себя, прежде чем принять его
в свою цепочку, а затем снова его транслировать. Если сначала транслировать блок, другие майнеры откажутся от своих предыдущих блоков и начнут майнить в этой новой, самой длинной цепочке. По крайней
мере на это есть надежда: есть вероятность, что кто-то перед вами
транслировал блок, которого вы еще не видели. Только если ваш блок
попадет в самую длинную цепочку, вы получите вознаграждение. Итак,
как мы можем этого добиться? На самом деле не можем. Все, что мы
можем сделать, – это надеяться, что нам повезет. Вот и все, что на самом деле лежит в основе Proof-of-Work, а именно случайная лотерея.
Предполагая, что наш блок попал в самую длинную цепочку, мы
получаем прибыль. Мы получаем как вознаграждение за блок, представленное транзакциями базы монет, так и комиссию за транзакцию.
Все транзакции в этом блоке добавляются в историю транзакций. Ситуация, когда наш блок не входит в самую длинную цепочку, – это когда
наш блок конкурирует с другим блоком, который был отправлен в сеть
в то же время. В этом случае майнеры скорее всего случайным образом
выберут одно из двух, например наш блок, что означает, что нам снова
повезло. Если наш блок не выбрали или он находится в форке (перевод
слова fork дословно звучит как «вилка»), который не является самой
длинной цепочкой, вы не получите прибыли.
Цепочка транзакций обычно является непрерывной и прямолинейной, т. е. обычно она не разветвляется, Но это не значит, что в принципе не может быть разветвлений. Форк – это явление в системе, при
котором одна большая цепь разветвляется на две цепи, которые после
разделения продолжают работать уже независимо друг от друга.

69
На самом деле мы никогда не будем на 100 % уверены, что наш
блок находится в самой длинной цепочке. Мы просто предполагаем,
что вероятность возникновения форка со временем снижается. Поговорим об этом подробнее, когда рассмотрим теорию игр применительно
к технологии блокчейн и криптовалютам.
Как вы интуитивно понимаете, все, что кто-либо делает, делается
с расчетом на получение некоторой прибыли. У каждого человека свое
определение прибыли, но в биткоин оно довольно простое: больше денег означает больше прибыли. Фактически любой тип механизмов стимулирования в протоколах блокчейн сосредоточен на согласовании
личной прибыли с общей прибылью. Разберем различные составляющие прибыли в биткоин.
Во-первых, начнем с обсуждения вознаграждения за блок –
наиболее значительного источника прибыли для майнеров в настоящее
время. Вознаграждение за блок – это награда, которая достается майнеру, блок которого входит в самую длинную цепочку. Как упоминалось ранее, майнер включает специальную транзакцию, а именно транзакцию coinbase. Эта транзакция позволяет чеканить биткоины и, что
более важно, стимулирует участников проверять блоки. Чтобы лучше
понять обоснование вознаграждения за блок, надо помнить, что прибыль является основным мотиватором для любой деятельности и что
более высокий стимул к честному поведению ведет к более безопасной
сети. Однако мы не можем напрямую наказывать нечестное поведение:
все анонимны и нет эффективных способов принуждения к наказанию.
Вывод таков: если мы не можем наказывать за нечестное поведение, мы
можем вознаградить и за честное поведение!
Поскольку майнеры получают вознаграждение за производство
блоков, у них появляется стимул производить больше блоков. Однако
они получают вознаграждение только в биткоинах. Это означает, что
если майнеры не видят ценности в биткоинах, они с меньшей вероятностью будут тратить деньги на электричество и оборудование, чтобы получить биткоины.
Как уже отмечали, количество биткоинов ограниченно и составляет 21 миллион. Это связано с тем, что вознаграждение за блок уменьшается вдвое каждые 210 000 (двести десять тысяч) блоков, что составляет примерно 4 года. Когда биткоин только появился, вознаграждение
за блок начиналось с 50 биткоинов, затем упало до 25 через первые два
года и с тех пор сокращается вдвое. С помощью геометрического ряда
предел предложения рассчитывается в 21 миллион биткоинов. Одно
предостережение: не все 21 миллион биткоинов будут ликвидными.

70
Например, примерно 1 миллион принадлежит Сатоши Накамото,
и вполне возможно, что эти биткоины никогда не переместятся. Кроме
того, некоторые закрытые ключи были утеряны, а некоторые биткоины
были сожжены, что уменьшило допустимый предел запаса.
Теперь, когда мы обсудили все источники дохода майнеров, можем перейти к расходам. Начнем с обсуждения постоянных затрат, а затем перейдем к переменным затратам.
Как вы все знаете, оборудование – это то, что позволяет пользователям майнить, а стоимость оборудования фиксирована. Это разовая
покупка. Существует несколько различных типов оборудования – от
обычных вычислительных устройств до специализированного оборудования для майнинга. Вначале для майнинга использовали центральный
процессор (CPU – central processing unit) компьютера, но это оказалось
неэффективно, поскольку на поиск блока при майнинге с помощью
CPU уходило много времени. Это связано с тем, что процессоры предназначены для выполнения общих вычислений, но они не очень хороши
для конкретного вычисления хэшей.
Некоторые члены игрового сообщества быстро осознали, что в их
руках есть более мощные вычислительные устройства, а именно графические процессоры. Графические процессоры (GPU – graphics
processing unit) – это устройства, обычно используемые для обработки
мультимедиа, например видеоигр. Эти устройства также являются универсальными вычислительными устройствами, поскольку они могут
обрабатывать множество различных типов вычислений, включая хеширование. Когда дело доходит до вычислений, они на порядок быстрее
процессоров, а значит, могут хешировать в 10 раз быстрее. Однако некоторые из недостатков использования графических процессоров связаны с их компонентами, не имеющими отношения к майнингу.
Например, для майнинга не требуются числа с плавающей запятой, поэтому лишние компоненты бесполезны, но все равно включены
в стоимость оборудования графического процессора. Кроме того, они
не предназначены для работы на оборудовании майнеров бок о бок, поэтому сложно управлять крупномасштабной установкой майнинга на
GPU. Именно здесь вступают в игру программируемые вентильные
матрицы (FPGA – field-programmable gate array). Это были первые
формы специализированного оборудования для майнинга в биткоинах.
Эти устройства были оптимизированы для майнинга биткоинов, но не
утратили общей вычислительной мощности. Причина такого компромисса заключалась в том, что по-прежнему существовала некоторая неопределенность в отношении будущего успеха биткоина,
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
