Криптовалютой называют особую разновидность электронного платежного средства. Bitcoin. Как это работает

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

Настоящие деньги?

Первое место в списке главных заблуждений насчет Bitcoin занимает идея о том, что Bitcoin это очередные «бумажки», пускай и электронные, которые лишь представляют «настоящие» деньги, являются эдакими долговыми расписками. Отсюда берет начало большинство остальных заблуждений: раз это бумажки, то они ничего не стоят; их можно напечатать или уничтожить сколько угодно; их можно подделать; их можно скопировать.

Повторюсь - все это не более, чем заблуждения. В основе идеи Bitcoin лежало желание создать не очередные «бумажки», которые представляют реальные деньги, такие как золото, а аналог самого золота. Взять те свойства золота, благодаря которым оно является идеальными деньгами, и сделать электронную валюту на их основе.

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

Допустим человек весь день усердно добывал золото и добыл в итоге 1 кг. Для него стоимость добытого золота равна одному дню усердной работы. После тяжелого рабочего дня он решил отдохнуть и сходить в кинотеатр. По счастливому совпаденью кассир отдавал билеты в обмен на золото. Почему? Потому что кассиру нравится золото, но не нравится весь день работать с киркой. Поэтому он готов оказать услугу - отдать билет - в обмен на 1 кг золота. Фактически же он обменивает свою услугу на один день тяжелой работы.

Теперь представим другую ситуацию. Изобрели копир, который работает с золотом. И любой человек может за минуту из одного 1 кг золота сделать 10 кг. В данной ситуации кассир уже не будет обменивать билеты на золото, так как теперь он сам легко сможет его напечатать столько, сколько захочется. Золото перестанет иметь какую-либо ценность и его уже нельзя будет использовать в качестве денег.

В Bitcoin процесс добычи монеток тоже требует ресурсов и времени. Но в данном случае это не человеческие ресурсы, а компьютерные.

Условно ограниченный ресурс
Чем дольше добывается золото, тем труднее (затратнее по ресурсам) становится его добывать. Это гарантирует, что инфляция будет под контролем.

В Bitcoin похожее поведение достигается путем введения функции скорости суммарно добываемых монеток от времени. Эта функция обратно пропорциональная, т. е. скорость со временем падает и стремится к нулю. Если взять интеграл этой функции по времени, то получится экспонента. Приблизительно такая:

Здесь видно, что общее число монеток стремится к 21 000 000. Подробности работы Bitcoin будут рассмотрены далее. А пока нужно знать две вещи: монетки появляются в системе пачками приблизительно каждые 10 минут, количество монеток в одной пачке - 50, и оно уменьшается вдвое каждые 4 года.

Материальность
Это уже свойство не столько золота, сколько любой не электронной валюты. Один слиток золота нельзя дважды обменять на услугу или товар. Т. е. в один момент времени он может быть либо у продавца, либо у покупателя.

Такое поведение естесственно для материальной валюты, но не для электронной. Чтобы добиться такого поведения виртуальных денег, нужно приложить немало смекалки. В Bitcoin это поведение обеспечено механизмом транзакций. Все транзакции объеденяются в цепочки. Каждая транзакция берет монетки из одной или нескольких существующих транзакций и указывает, кому они предназначаются. Поэтому всегда можно проверить всю цепочку на валидность.

Сложность добычи, ограниченный ресурс, материальность - эти свойства, плюс использование криптографии для обеспечения безопасности, позволяют использовать Bitcoin в качестве денег. На них основано ядро Bitcoin. Это не просто договоренности. Все они заложены в системе by design, и по-другому она работать не будет. Настало время рассмотреть этот самый дизайн.

Цепочка блоков

Любая электронная платежная система должна где-то и как-то хранить транзакции. В Bitcoin вся информация хранится в цепочке блоков. Блоки передаются в формате JSON. Каждый блок содержит заголовок и список транзакций. Заголовок состоит из нескольких свойств, среди которых есть хэш предыдущего блока. Таким образом вся цепочка блоков хранит все транзакции за все время работы Bitcoin.

В текущих версиях программы Bitcoin цепочка блоков скачивается целиком каждым клиентом, что делает систему полностью децентрализованной. Данные никак не шифруются и любой может вручную проследить все транзакции. Существует даже специальный сайт - Bitcoin Block Explorer , на котором можно легко посмотреть всю информацию о блоках и транзакциях.

На момент написания статьи количество блоков в цепочке было равно 110 968, и, как я уже говорил ранее, это количество приблизительно через каждые 10 минут увеличивается на 1. Это значит, что кто-то из участников смог создать новый блок.

Кстати говоря, все участники делятся на две группы: на тех, кто работает над новым блоком и кто не работает. По статистике эти группы соотносятся как 1 к 3. Зачем вообще создавать блоки, да еще каждые 10 минут? В блоках записываются транзакции. Каждый блок содержит все транзакции, которые проходили во время его создания, т. е. за 10 минут.

Работает это следующим образом. Один из клиентов создает новую транзакцию и рассылает ее другим клиентам, которые заняты генерацией блока. Они добавляют эту транзакцию к своему блоку и продолжают генерацию. Рано или поздно у кого-то получится сгенерировать блок. Такой блок запечатывается (к нему больше не добавляются транзакции) и рассылается по сети. Далее клиенты проверяют блок и транзакции внутри него на валидность. Если никаких проблем нет, то транзакции считаются одобренными. К этому моменту свежий блок уже доехал до каждого клиента и добавлен в цепочку. После этого процесс повторяется - клиенты начинают генерировать очередной блок и собирать в него новые транзакции.

Блок

Рассмотрим содержимое блока и процесс его генерации более подробно. Пример блока можно найти на все том же Bitcoin Block Explorer . Блок состоит из заголовка и списка транцакций. Заголовок состоит из следующих свойств:

hash - SHA-256 хэш заголовка блока. Такой хэш является достаточно случайным, а время его вычисления предсказуемо. Хочу заметить, что хэшируется только заголовок, без транзакций. Так что число транзакций не будет сильно влиять на время вычисления хэша.

ver - Версия схемы блока. На данный момент у всех блоков одна версия - 1.

prev_block - Хэш предыдущего блока в цепочке. Благодаря этому свойству цепочку нельзя подделать, заменив в ней один из блоков, так как хэш блока всегда зависит от хэша предыдущего блока в цепочке. Изменив один из блоков, придется пересоздавать все последующие.

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

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

time - uint32_t представляющее время создания блока. Максимально допустимый год - 2106.

bits - Одно из самых важных свойств. Является сокращенной формой целевого значения хэша. Блок считается сгенерированным (валидным), когда его хэш меньше этого целевого значения. Целевое значение определяет сложность создания блока. Чем оно меньше, тем меньше вероятность подобрать подходящий хэш за одну итерацию. Это свойство обновляется каждые две недели.

Происходит это следующим образом. Подсчитывается число сгенерированных блоков за последние две недели и сравнивается с эталоном (1 блок каждые 10 минут). Если блоков слишком много, то сложность увеличивается. Если блоков слишком мало - уменьшается. Таким образом система адаптируется к увеличению числа пользователей и, как следствие, суммарной мощности их компьютеров.

nonce - Число, которое, начиная с нуля, инкрементируется после каждой итерации вычисления хэша. Собственно, так и происходит перебор, пока хэш не будет меньше целевого значения. Чтобы каждый новый хэш отличался от предыдущего, должно отличаться хотя бы одно из свойств заголовка блока.

Например, версия никогда не меняется. Хэш предыдущего блока обновляется тогда, когда кто-нибудь нас опередит и сгенерирует новый блок. Merkle root обновляется при добавлении транзакции. Время - каждые несколько секунд. Bits (целевое значение, сложность) - каждые две недели. Все это слишком долго. Чтобы не ждать, пока обновится одно из свойств и существует nonce.

Рассмотрим гипотетическую ситуацию. Все значения nonce были проверены и ни одно из них не подходит. За это время ни одно другое свойство не изменилось. Происходит переполнение nonce и оно снова начинается с нуля. Получается, что далее хэши будут повторяться. Чтобы избежать подобных ситуаций, после переполнения nonce, меняется специальное свойство одной из транзакций. После этого обновляется Merkle root и хэши заголовка блока уже не будут повторяться.

n_tx - Количество транзакций в списке.

size - Размер блока в байтах.

Транзакции

Транзакции содержатся в блоках в виде списка. Они, также как и блоки, выстраиваются в цепочки. Каждая транзакция должна указать, откуда она берет деньги (из какой существующей транзакции), и куда направляет.

Для указания адресата используется его публичный ключ. Чтобы адресат мог использовать полученные деньги, он должен создать новую транзакцию, которая будет брать деньги с предыдущей и перенаправлять их по другому адресу. Чтобы доказать, что человек использует для перевода именно свои деньги, а не чужие, он должен оставить в своей транзакции свою цифровую подпись. Тогда в любой момент времени можно удостоверится, что все транзакции в системе являются валидными.

На практике все это реализовано с помощью следующих свойств:

hash - Хэш всей транзакции. Получается, что транзакции хешируются дважды. Первый раз во время вычисления хэша транзакции. Второй раз во время вычисления хэша блока. Кроме того каждый блок ссылается на хэш предыдущего блока, а каждая транзакция - на хэш предыдущей транзакции (или транзакций). Если изменить транзакцию и каким-то чудом ее хэш не поломается, то поломаются все остальные хэши и измененная цепочка блоков будет отвергнута всеми клиентами.

ver - Версия схемы транзакции. Пока она ни разу не менялась, так что везде равна 1.

vin_sz - Количество предыдущих транзакций, из которых деньги переводятся на новые адреса. Одна или более.

vout_sz - Количество адресов, на которые переводятся деньги. Один или более.

lock_time - Пока не используется и везде равно 0. Идея в том, чтобы создавать отложенные транзакции, чтобы они добавлялись не в текущий генерируемый блок, а, например, в слещующий. Подразумевается, что в этом свойстве указано количество блоков, которые должна пропустить транзакция перед добавлением. Это дает возможность в течении некоторого времени изменить транзакцию и переподписать ее.

size - Размер транзакции в байтах. Подразумевается размер транзакции в формате JSON.

in - Содержит список входов (источников) транзакции. В качестве входов используются выходы предыдущих транзакций (prev_out ). У каждого выхода есть следующие свойства:

hash - Хэш предыдущей транзакции.

n - Так как у транзакции может быть несколько выходов, то нужно указывать, из какого из них берутся деньги. Для этого и существует данное свойство. В нем содержится порядковый номер выхода предыдущей транзакции, начиная с 0.

scriptSig - В этом свойстве отправитель должен доказать, что он переводит именно свои деньги, а не чужие. Для этого он указавает публичный ключ получателя предыдущей транзакции, т. е. свой ключ, так как он должен быть получателем. Кроме того он добавляет ECDSA подпись этой же транзакции, которая сделана его приватным ключем. Это доказывает, что он распоряжается своими деньгами, а не чужими.

После списка входов транзакции (in ) указывается список выходов (out ), т. е. адресатов. Каждый выход имеет следующие свойства:

value - Содержит количество денег, которые будут переведены по новому адресу. Они берутся из предыдущих транзакций. Поэтому данное число не должно превышать их сумму. Например, мы хотим взять 10 монеток из одной транзакции и 20 из другой и направить 25 по новому адресу. Чтобы оставшися 5 монеток не пропали, мы посылаем их самим себе, как сдачу. Таким образом в нашей транзакции будет два адресата, одним из которых являемся мы сами. Value всегда указывается в наномонетах, чтобы избежать дробных чисел.

scriptPubKey - Это свойство, вместе с scriptSig составляют сценарий на модифицированном Forth-like языке . ScriptPubKey содержит операторы языка и хэш публичного ключа получателя транзакции. Сценарий проверяет транзакцию на валидность. Использование подобного сценария дает богатые возможности для описания условий получения денег адресатом. Например, можно заставить получателя указывать пароль вместо ECDSA.

Суммарное количество денег на входе транзакции всегда равно суммарному количеству на выходе. В противном случае деньги либо возникали из воздуха, либо исчезали из оборота. Но в самом начале был график, по которому видно, что число денег экспоненциально растет. Так откуда берутся новые деньги в системе?

На мой вкус, эмиссия денег реализовано просто и элегантно. В каждом блоке первая транзакция в списке является особой транзакцией. У нее всегда один вход, у которого вместо свойства scriptSig есть свойство coinbase . Это свойство может содержать что угодно.

Выход у транзакции также всегда один. Он перенаправляет 50 монеток тому, кто сгенерировал блок, в котором расположена эта транзакция. Это своего рода награда за потраченное время и ресурсы на генерацию блока. Создавая новый блок в цепочке, клиент вносит вклад в работу Bitcoin.

Каждые четыре года эта награда уменьшается вдвое, таким образом суммарное количество монеток в обороте стабилизируется. После этого даже если злоумышленник создаст блок с помощью модифицированной версии программы и припишет себе 50 монеток, этот блок не будет добавлен в цепочку, так как его отвергнут другие честные клиенты, которых должно быть большинство.

Стабильность работы системы основана на количестве пользователей, у которых запущен официальный клиент. Пока их большинство, Bitcoin ничего не угрожает.

Заключение

Proof of work (доказательство работы) - результат работы, которого трудно добиться, но легко проверить. Работа сети Bitcoin основана на этом принципе. Проверить хэш (результат работы) можно за доли секунды. А для того, чтобы его подобрать, требуется много работы.

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

Цена в долларах - это немного другое. Она никак не заложена в Bitcoin и определяется исключительно рынком. Ведь золото само по себе тоже не гарантирует вам определенную цену в долларах. Ее гарантирует лишь человек, который хочет обменять золото на доллары.

Изначальная стоимость золота определялась исключительно тем, кто его добывал. За добытое золото он просил столько, чтобы можно было компенсировать усилия на его добычу. А уже после этого на цену золота начинает влиять рынок.

Как только Bitcoin попал на рынок, его ценность определяется исключительно уровнем доверия к системе. Чем больше человек будут доверять, тем больше купят Bitcoin, тем больше долларов в него вложат и, как следствие, тем дороже будет Bitcoin.

Прежде чем люди смогут доверять Bitcoin, они должны узнать, обладает ли эта система достаточной степенью безопасности, а также можно ли ее использовать в качестве денег, т. е. обладает ли она свойствами денег, которые я перечислил в начале. Узнать это наверняка можно только разобравшить в принципах работы Bitcoin.

Надеюсь, что после этой статьи уровень доверия к Bitcoin хотя бы немного вырастет.

Метки:

Добавить метки

Bitcoin напоминает швейцарские механические часы: снаружи четко выполняет задачу, в понимании которой нет ничего сложного. Но если открыть заднюю крышку, то можно увидеть нетривиальный механизм, состоящий из множества шестеренок и прочих деталей. Однако полностью разобраться в том, как все это работает, технически подкованному человеку вполне реально.

Одно из первых подробных технических описаний Bitcoin на русском было опубликовано в начале 2011 года на Хабре в статье «Bitcoin. Как это работает» . Как правильно пишет хабраюзер OpenMinded: «У Bitcoin есть такая особенность - чем больше начинаешь в нем разбираться, тем больше возникает новых вопросов. Есть только два выхода - либо разобраться до конца, либо просто научиться пользоваться интерфейсом программы. Иначе не будет покидать чувство, что где-то обязательно должен быть подвох».

Что такое криптовалюта? Если кратко, то это децентрализованная валюта с защитой от повторного использования, основанной на достижениях современной криптографии. Идея состоит в том, что каждая транзакция необратима и подтверждается вновь генерируемыми блоками, отвечающим определенным требованиям. Эти блоки вычисляются всем сообществом, объединяются в цепочку и доступны всем для просмотра в виде единой базы данных. Процедура вычисления блоков называется майнинг.

Сеть построена таким образом, что один блок находится с определенной периодичностью, независимо от вычислительных мощностей, - то есть сложность вычислений саморегулируется. При этом, пока сеть растет, каждый вновь сгенерированный блок содержит еще и новые монеты. В случае с Bitcoin и еще некоторыми видами криптовалют количество монет, которые могут находиться в обращении, ограничено на уровне протокола, и количество вновь добываемых монет постепенно уменьшается в геометрической прогрессии так, что оно никогда не превысит заданного лимита. Каждый пользователь, который сгенерировал блок, получает фиксированную награду, а также комиссию транцакций, которые он подтвердил, включив их в блок.

Первая криптовалюта

Как заметил Марк Андрессен (один из создателей первого графического интернет-браузера NCSA Mosaic и основатель венчурного фонда, активно инвестирующего в Bitcoin-стартапы), Bitcoin стал результатом двух десятилетий интенсивных исследований и разработок почти анонимных энтузиастов. И действительно, первая электронная наличность DigiCash появилась в 1990 году благодаря усилиям криптографа Дэвида Чома. Однако система DigiCash имела три существенных недостатка по сравнению с Bitcoin: она была централизованной, закрытой и слишком сильно опередила свое время, ведь даже NCSA Mosaic появился только в 1993 году, а фирма Чома обанкротилась в 98-м как раз перед массовым распространением и коммерциализацией интернета.


Технология Bitcoin является одним из первых успешных практических решений так называемой задачи о византийских генералах. Кратко она формулируется так: как установить доверие между сторонами, связанными только по каналу связи, которому нельзя доверять? Одним из ключевых моментов в решении служит криптографический метод proof-of-work - те самые «бесполезные» вычисления, которые заведомо должны проводиться долго, но доказательство того, что они были, должно проверяться моментально.

Bitcoin-клиенты делятся на два вида: толстые/тяжелые (Bitcoin-qt, Armory) и тонкие/легкие (Electrum, Multibit). Отличие заключается в том, что толстые клиенты для своей работы требуют локальную копию всей базы данных с логом всех транзакций за все время существования сети, а тонкие клиенты выкачивают информацию из децентрализованной сети только по мере необходимости. Для существования сети необходимо наличие в ней толстых клиентов, однако и тонкие клиенты дают возможность полноценно использовать Bitcoin - например, это особенно логично на смартфонах.

20 Гб - текущий объем базы данных обо всех операциях в Bitcoin



Со временем размер базы данных будет только расти, так же как и емкость носителей информации. Из чего же состоит БД? БД - это блокчейн, цепочка блоков данных в формате JSON. Каждый блок содержит всю необходимую для функционирования сети информацию, свой порядковый номер и хеш-сумму предыдущего блока. Естественно, в самом первом блоке такой хэш-суммы нет. Причем к хешу (шестнадцатеричному числу) выдвигаются строгие требования: он должен начинаться с определенного количества нулей, а если точнее, должен быть меньше специального параметра под названием «bits». Обратно пропорциональный ему параметр называется «сложность». Этот механизм позволяет надежно хранить все прочие необходимые данные в распределенной сети, ведь если изменить хотя бы один символ в блоке, то его хеш изменится целиком и все нули моментально пропадут.

Что же за вычисления происходят при майнинге и как добиться таких красивых хешей, которые, по сути, являются абсолютно случайными числами? Майнинг - это не что иное, как брутфорс. Брутфорс, который осуществляется не с целью атаки, а с целью защиты. Система такова, что брутфорсить в ней с целью защиты намного выгоднее, чем с целью атаки. Просто потому, что с целью защиты брутфорсит большинство (а на практике все).

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

Себестоимость биткойна

До монополии центробанков деньгами служили золото и серебро, у которых есть значительная себестоимость добычи, в то время как стоимость печати стодолларовой банкноты, не обеспеченной редким активом, в 800 раз ниже ее номинала. А себестоимость эмиссии цифрового доллара вообще нулевая.

У биткоинов же, несмотря на их цифровую сущность, существует значительная себестоимость, аналогично золотым и серебряным монетам. Причем чем больше биткоинов существует, тем эта себестоимость выше, аналогично тому, как золото или серебро со временем все сложнее добывать из-за их ограниченного количества.

Максимально возможное количество биткоинов также ограниченно, поскольку это сумма убывающей геометрической прогрессии, которая конечна. Стоимость необеспеченных бумажных денег существует только за счет законов, обязывающих принимать их в качестве оплаты и монополии центробанков. Если полностью демонополизировать печатный станок, бумажные или цифровые деньги не могли бы одновременно иметь стоимость и не иметь реального обеспечения, если печатные станки имели бы возможность осуществлять неограниченную эмиссию.

Именно поэтому в системе Bitcoin, в которой отсутствует какая-либо монополия, нет возможности неограниченной эмиссии. Даже нематериальность биткоинов - их преимущество как платежного средства перед золотом из-за отсутствия массы и объема, а также наличия неограниченной точной делимости (в данный момент делимость до восьмого знака после запятой, однако при необходимости ее можно увеличить), чтобы их точно «хватило на всех».

Но есть и недостаток. Биткоины уступают золоту в том, что они в данный момент не имеют тотального признания, государства пока еще не хранят в них свои резервы в отличие от золота (хотя Южная Осетия об этом однажды задумывалась). И даже наоборот - ряд центробанков открыто выступил против биткоинов. Но в серебре резервы государства или центробанки тоже не хранят.

Механизмы контроля

Итак, ограничение эмиссии Bitcoin осуществляется за счет сложности. Но может возникнуть вопрос: а как же регулируется этот параметр в никем не регулируемой системе? Во-первых, в блоки включается время в формате UNIX, то есть количество секунд, прошедших с полуночи первого января 1970 года (так называемая эра UNIX). Время берется из часов системы, на которой был найден блок. Этот параметр напрямую влияет на сложность майнинга: ее периодически пересчитывают так, чтобы среднее время между блоками оставалось равным десяти минутам.

Возникает вопрос: может ли майнер мухлевать со сложностью, специально подсовывая неправильное время? Нет, поскольку майнер, который найдет следующий блок цепочки, будет случайным. Небольшие отклонения в системном времени, конечно же, некритичны, но если отклонение сильное, то награда за нахождение блока с неправильным временем получена не будет, так как такой блок станет орфаном.

Блоки-орфаны - это еще один важный элемент в механизме самоконтроля Bitcoin. Они могут возникать даже при отсутствии неправильного времени - например, когда два разных блока найдены почти одновременно, это вполне штатная ситуация.

Допустим, два независимых друг от друга майнера одновременно нашли два блока с требуемыми хешами и о блоке-конкуренте узнали только после нахождения своего. У таких блоков будут одни и те же порядковые номера, но сами блоки вряд ли будут идентичными, поскольку адреса для зачисления награды в них будут разными. Но в блокчейне недопустимы блоки с одинаковыми порядковыми номерами. Какой же из них туда войдет? Дело в том, что, скорее всего, разные майнеры будут искать nonce для нового блока, включая в него разные хеши. В цепочку войдет тот блок, хеш которого раньше войдет в следующий.

А что, если почти одновременно найдены два новых блока с одинаковыми порядковыми номерами, но теперь уже с разными хешами предыдущего блока? ОК, не проблема. Просто ищем следующий блок. Теоретически параллельные цепочки могут постоянно удлиняться, но чем больше длина, тем меньше вероятность существования таких раздвоений цепочки. Согласно протоколу биткоина и программному коду Bitcoin-клиентов, награда за включенный в цепочку блок будет считаться полученной только после включения в цепочку 120 последующих блоков. То есть максимально допустимая длина временно раздвоенной цепочки - 120 блоков. На практике длина временного раздвоения цепочки редко достигает даже трех блоков, так что вероятность, что она достигнет 120, стремится к нулю. То же самое можно сказать и про коллизию адресов, но, чтобы вероятность коллизии можно было действительно считать нулевой, необходимо, чтобы генератор случайных чисел создавал действительно случайные числа.

Усложняем задачу: майнерские пулы

Все, что я говорил выше о майнерах (например, про системное время), не относится к майнерам, объединяющимся в вычислительный пул, за исключением децентрализованного пула P2Pool. В случае майнинга на централизованном пуле непосредственным поиском блоков занимается сам пул, платя своим пользователям за предоставление ему вычислительных мощностей. В настоящее время в одиночку майнингом могут заниматься только специальные дата-центры.

Как же пул узнает о том, что пользователь ищет для него блок? Доказательством усиленного поиска блока служат присылаемые пользователем шары. Шара - это блок, хеш которого отвечает пониженному требованию сложности. Сеть, конечно же, такой блок не примет, и в блокчейн он не войдет. Шары требуются только пулу, чтобы удостовериться, что требуемый nonce в блоке действительно ищется.

Вопросы?

Как я и предупреждал, чем больше говоришь о технологии Bitcoin, тем больше вопросов возникает. Я описал только часть базовых вещей, чтобы дать хотя бы небольшое представление о том, как же протокол справляется с возложенной на него задачей. Всем интересующимся советую обратиться, например, к англоязычной вики . В протоколе биткоина есть еще много интересных вещей, например, есть даже специальный скриптовый язык, который, скорее всего, будет использоваться на практике в будущем.

Интереcные форки

Большинство форков Bitcoin, включая вторую по популярности криптовалюту Litecoin, лучше подходящую для микроплатежей аналогично серебру, мало чем отличаются от оригинала. Существует около сотни мусорных клонов Bitcoin, шансы на значительное признание у которых крайне низки.


  • Litecoin появился в 2011 году. В отличие от Bitcoin, где в качестве алгоритма хеширования используется SHA-256, Litecoin использует scrypt, который более требователен к памяти, что затрудняет разработку ASIC-майнеров. Помимо этого, общее количество монет, находящихся в обращении, в четыре раза больше, чем у Bitcoin, что составляет 750 миллионов. Еще стоит заметить, что периодичность нахождения блоков у Litecoin составляет две с половиной минуты против десяти минут у Bitcoin.
  • PPCoin, он же Peercoin (август 2012), отличается от Bitcoin тем, что использует не только криптогафический метод защиты proof-of-work , использующий вычислительную мощность, но и proof-of-stake, использующий монеты, которые долго лежат без движения, за которые также начисляют награду. Для того, что пробить защиту proof-of-stake нужно заполучить половину всей внутренний денежной массы системы. Но если кто-то начнёт её скупать, то по закону рынка пиркоины сразу же начнут расти в цене, что очень сильно усложнит их скупку. Кроме того, нужно отметить, что конечного верхнего предела общего количества пиркоинов нет, хотя скорость их появления конечно же строго ограничена. Автор посчитал, что не стоит излишне стимулировать накопления как в Bitcoin.
  • Dogecoin - яркий пример того, что криптовалюты еще не устоялись. Появившись в конце ноября - начале декабря 2013 года, Dogecoin объединил один из интернет-мемов с криптовалютой, приобретя тем самым бешеную популярность. С технической же точки зрения Dogecoin от Litecoin почти ничем не отличается. Не исключено, что к моменту выхода номера про данную валюту уже забудут, - точно так же, впрочем, не исключено и обратное.
  • Primecoin - еще одна криптовалюта от автора Peercoin. На этот раз он реализовал криптовалюту с полезными вычислениями - поиском простых чисел. Кстати, за нахождение ранее неизвестных простых чисел даже объявлены денежные вознаграждения (не в рамках данной системы, а вообще, то есть за доллары/фиат). Так как система появилась недавно, сомнительно, что с помощью нее были найдены ранее неизвестные простые числа.

Большинство криптовалют отличаются от Bitcoin лишь некоторыми нюансами. Например, одни более анонимны и безопасны, другие работают со смарт-контрактами. Однако существуют системы, которые пошли намного дальше. Яркий пример - криптовалюта Ripple (XRP). О ее выдающейся популярности свидетельствует уже тот факт, что сегодня по капитализации Рипл занимает 4 место. Чем эта сеть заинтересовала пользователей и как смогла добиться таких выдающихся показателей, мы поговорим далее.

Ripple (с англ. переводится как «рябь на воде») представляет собой глобальную систему взаиморасчетов. Она имеет свои уникальные особенности, которые отличают Рипл от других криптовалют. Это не альткоин биткоина - с BTC система имеет мало общего. Она не использует традиционный блокчейн, который мы привыкли видеть в большинстве криптовалют.

Принцип деятельности системы базируется на основе договоренностей, так называемого консенсуса. Для наглядности возьмем в качестве примера такую схему. Вам нужно отдать своему партнеру в другой стране 100 долларов. Встретиться лично не получается, отправлять переводом накладно, а потому вы договариваетесь со своим знакомым поставщиком, который находится в той местности, и он отдает свои деньги вашему партнеру.

Этому знакомому затем третьи лица переводят ценности, эквивалентные ста долларам, причем это может происходить как в любой удобной ему валюте, так даже быть возвращено материальными вещами. В итоге все получают, что хотят, хотя мало кто из всей цепочки знает друг друга - все взаимодействие основано на доверии. В Ripple роль таких людей выполняют серверные узлы.

Основа системы Рипл - это реестр (по англ. ledger) в виде распределенной базы данных, где хранятся все данные об аккаунтах и транзакциях пользователей. При его работе используется протокол RPCA - Ripple Protocol consensus algorithm.

Обновляется реестр каждые несколько секунд и самый актуальный в данный момент времени называется LCL - Last Close Ledger. Копии реестра хранятся на серверах сети, которые еще называют узлами.

С внешним миром, а точнее с магазинами, обменными пунктами, система взаимодействует через так называемые «шлюзы». Любой желающий, кто хочет провести транзакцию, должен отправить шлюзу деньги с помощью банковской карты, электронной платежной системы. Далее деньги можно менять на любую валюту мира. При этом система сделает это по самому выгодному курсу.



Ripple нацелена на работу с крупными финансовыми учреждениями

Когда в систему поступает заявка на новую транзакцию, она распространяется по сети подобно ряби на воде. Инициатором такой заявки может быть любой узел. Остальные сервера решают стоит ли ее добавлять в реестр или отвергнуть. Так формируются наборы кандидатов для добавления. На их рассмотрение серверам отводится определенное время.

С каждой итерацией проверки наборы стают все больше похожими друг на друга. Как только разница между ними сводится к минимуму, считается что система пришла к консенсусу. Непринятые заявки остаются в наборах и отправляются на новый этап рассмотрения совместно с только что поступившими транзакциями. Таким образом реестр сети обновляется каждые несколько секунд.

Ripple позволяет пользователям переводить друг другу средства в любой валюте -долларах, евро, кронах, мексиканских песо, иенах, рупиях, и даже драгоценными металлами, такими как платина, золото, серебро. Причем перевод занимает считанные секунды.

Платформа имеет также свою внутреннюю валюту XRP. Все монеты были выпущены на страте проекта. Их количество - 100 миллиардов токенов. Причем только около 7 миллиардов XRP были распределены между пользователями за время существования системы, большая половина осталась во владении Ripple Labs. Такое положение естественно вызывает опасения у сообщества, поскольку компания имеет все возможности для манипулирования курсом. И они не беспочвенны.

Наглядный пример произошел на бирже Bitstamp, когда Джед МакКалеб пытался продать около 100 миллионов монет системы, что равнялось около 1 миллиону долларов. Бирже пришлось заморозить средства МакКалеба, иначе обрушение курса было бы неминуемым.

Чтобы снизить напряжение среди сообщества, Ripple Labs оставшиеся в ее распоряжении монеты заблокировала с помощью смарт-контрактов. Всего их 55 и каждому соответствует по миллиарду токенов. Раз месяц один контракт истекает, и компания имеет право распоряжаться высвободившимися средствами. Преимущественно она направляет их на поддержание текущей деятельности Ripple Labs и дальнейшее развитие системы.

Поскольку все монеты были выпущены изначально, майнинг Ripple не производится. А потому заработать с помощью вычислительных мощностей своего компьютера XRP не получится. В первое время компания раздавала токены за участие в разнообразных проектах, однако позднее такая возможность получить монеты была приостановлена.

Монета Рипл делится на миллион частей, именуемых drop (капля). При проведении транзакций с каждого участника снимается около 0.00001 XRP. Это настолько мизерные средства, что их даже комиссией назвать сложно. Главная цель такого списания -защита от спама. Если сеть начнут атаковать большим количеством транзакций, размер комиссии будет автоматически подниматься для тех аккаунтов, которые это делают, и в конце концов атака захлебнется, поскольку окажется невыгодной.

Самый интересный нюанс с XRP - снимаемые комиссионные средства уничтожаются, таким образом количество монет в системе постоянно уменьшается.

Криптовалюта Рипл хоть и считается децентрализованной, поскольку серверов (узлов) в сети большое количество, однако не в полном смысле этого слова. Сервер создать и добавить в систему может кто-угодно. Однако прежде чем его допустят к обработке транзакций, необходимо пройти аттестацию Ripple Labs и получить звание доверенного узла. Для этого необходимо:

  • иметь отменную репутацию;
  • всегда быть доступным в сети;
  • иметь хорошее Интернет-соединение.

При этом сторонних серверов в системе сравнительно немного. Большая часть узлов принадлежит самой компании.

В то время как традиционные криптовалюты ориентированы на простых пользователей и нацелены стать альтернативной системой платежей, Рипл, наоборот активно интегрируется в банковскую отрасль. Основные клиенты системы - крупные банки и финансовые организации, которым система предлагает выгодные способы мгновенного перевода денег по всему миру.

Команда проекта и инвесторы

В Ripple Labs сегодня больше сотни высокопрофессиональных сотрудников. Возглавляет компанию Брэд Гарлингхаус (Brad Garlighouse). В совет директоров входят влиятельные в представители финтех-отрасли:

  • Chris Larsen;
  • Takashi Okita;
  • Anja Mauel.

Также среди членов команды такие признанные специалисты, как:

  • Дэвид Шварц;
  • Патрик Гриффин;
  • Маркус Тричер;
  • Стефан Томас.


Крис Ларсен - стоял у истоков создания Ripple Labs

Ripple Labs стабильно и успешно привлекает инвестиции, которые вкладывает в дальнейшее развитие проекта. В компанию вливают средства такие крупные инвесторы, как:

  • Andreessen Horowitz;
  • Google Ventures;
  • Accenture;
  • SBI Holdings и другие.

Официальный сайт компании - ripple.com. Здесь можно не только ближе познакомиться с системой, но и узнать последние новости Ripple.

Ripple - как все начиналось

Начало проекта было заложено еще в 2004 году. Тогда Райан Фуггер, выдающийся программист из Канады, начал работать над платежной системой Ripplepay, которую запустил уже в 2005 году. Система представляла собой одноранговую p2p-сеть - с ней пользователи имели равные права и все денежные переводы совершались на принципах взаимного доверия. Широкую популярность Ripplepay не получила в интернет сообществе из-за нехватки финансирования, однако существование продолжала.

Позднее Фуггер знакомится с Джедом МакКалебом, который известен как создатель файлообменной сети eDonkey. В 2011 году они полностью обновляют систему, позаимствовав у биткоина идею децентрализации, но отказавшись при этом от майнинга. В 2012 году к ним присоединяется Крис Ларсен и создается дочерняя компания OpenCoins, которая занимается усовершенствованием платежного функционала.

Уже в следующем году ее переименовывают на Ripple Labs. Большинство членов старой команды покидают проект, возглавляет его теперь Ларсен и свою деятельность компания нацеливает преимущественно на работу с крупными финансовыми учреждениями. Первый значительный успех в этом направлении - сотрудничество с немецким банком Fidor в 2014 году. После этого на Ripple обратили внимание другие крупные игроки финансового мира, в частности, WesternUnion.

В 2016 году компании удалось привлечь инвестиций на 55 миллионов долларов. Из ведущих банков с Рипл начинают совместную деятельность:

  • National Australia Bank;
  • Shanghai Huarui Bank;
  • BMO Financial Group;
  • Standard Chartered и другие.

В начале 2017 года Рипл подписывает договор с Национальным банком Абу-Даби, который работает в 17 странах мира. Сегодня список финансовых организаций, с которыми Ripple сотрудничает, обширен.



Среди партнеров Ripple всемирно известные банки, которые имеют филиалы по всему миру

Основные преимущества системы

Разработчики системы утверждают, что их основная цель - позволить пользователям полностью контролировать свои финансовые средства и проводить платежи между разными странами с минимальными затратами в считанные секунды. По их мнению, обмен деньгами должен происходить с той же скоростью, что и обмен информацией. Что касается крупных банков, то по подсчетам платформа позволяет на каждой транзакции им экономить более 3,5 доллара.

Таким образом к основным плюсам Риппл можно отнести:

  • высокую скорость транзакций в сети;
  • безопасность проведения платежей;
  • возможность работы с разными валютами;
  • мизерные комиссионные сборы;
  • дефляционность родных монет, которые после проведения платежей уничтожаются.

Капитализация валюты сегодня составляет почти 8, 5 миллиардов долларов. И это при цене в 20 центов за монету, что составляет около 12 рублей. При этом курс Ripple к рублю, а также другим валютам начал активно расти с середины весны 2017 года, что наглядно видно со следующего графика.



График роста стоимости XRP по отношению к рублю

Исходя из этого, прогноз Ripple выглядит многообещающим. Поскольку с компанией готовы сотрудничать такие крупные воротилы финансового мира, успех в ближайшие годы ей обеспечен, и монеты системы будут в долгосрочной перспективе только дорожать.

Как купить криптовалюту Ripple

Простые пользователи системы могут приобрести XRP с помощью бирж. В частности, с Рипл работают:

  • Bitstamp;
  • Kraken;
  • Gatehub;
  • CoinOne;
  • Bitflip.

Чтобы купить Ripple за рубли, сперва необходимо пройти регистрацию на выбранной бирже, которая работает с рублями, например, на EXMO и пополнить счет. После чего меняем рубли на биткоин, доллары или евро и уже за них приобретает XRP.

Напрямую купить монеты системы за рубли можно на молодой бирже bitflip.cc, которая к тому же имеет русскоязычный интерфейс. Однако поскольку она еще не доказала свою надежность, вводить на площадку крупные суммы денег не стоит. Попробовать купить монеты системы можно и с помощью обменных пунктов. Однако таких предложений осталось совсем немного.

Где хранить Ripple

Ранее кошелек для хранения монет можно было создать на Ripple Trade. Но больше компания его не поддерживаем и многие перешли на GateHub. Чтобы создать бумажник на этом ресурсе, переходим по ссылке signin.gatehub.net/signup и заполняем поля. После чего активируем и верифицируем аккаунт. Для этого необходимо будет указать такие данные, как номер телефона, настоящие имя и фамилию, а также прикрепить сканы документов, удостоверяющих личность.

Кроме того, для хранения подходит аппаратный кошелек Ripple от компании Ledger. Помимо XRP устройство поддерживает такие известные криптовалюты как Bitcoin, LiteCoin, Ethereum, Zcash и другие. Чтобы создать бумажник на своем компьютере, качаем программу, подходящую вашей системе, на сайте rippex.net/carteira-ripple.php#/ и устанавливаем.

Хотите, чтобы о криптовалюте Рипл узнало как можно больше людей - поделитесь ссылкой на статью в социальных сетях!



Похожие статьи