Скрытые особенности Биткоина
Обзор неочевидных для многих отличий Биткоина от существующих платежных систем
Ранее в статье «Биткоин — принципиально новая монетарная система» речь шла о том, что любая денежная (монетарная) система базируется на трех основных составляющих — денежной массе, денежных транзакциях и владении деньгами. В отличие от управляемой и монополизированной государством традиционной монетарной системы, основанной на фиатных (фидуциарных) деньгах, Биткоин является децентрализованной денежной системой и управляется правилами (протоколом), зашитыми в его программный код. Это в корне меняет три основных составляющих, лежащих в основе этой системы — деньги эмитирует программный код, а не государство; транзакции между контрагентами осуществляются напрямую, без посредников; распоряжаться деньгами на биткоин-адресах может только владелец их приватных ключей, никто другой не может получить к ним доступ.
Но помимо этого Биткоин, как платежная система, имеет ряд других уникальных особенностей о которых либо не знают, либо не придают им значения.
1. В Биткоин-сети нет аккаунтов.
В отличие от других платежных систем, у пользователей Биткоина нет своего аккаунта, т.е. счета, который был бы каким-то образом привязан к пользователю. Клиенты банков имеют аккаунты в виде банковских счетов, идентифицируемых по паспорту и/или налоговому номеру клиента. Банковские карты платежных сетей Visa и MasterCard также связаны с аккаунтами их пользователей. Клиенты электронной платежной сети PayPal имеют аккаунты, связанные с адресом их электронной почты. Во всех других платежных системах существуют какие-то способы идентификации личности и её счетов. В Биткоине этого нет!
С одной стороны это делает пользование Биткоином псевдонимным. С другой — в случае утраты приватных ключей восстановить доступ к биткоин-адресам невозможно. В Биткоине только приватный ключ дает право пользования деньгами, хранящимися на соответствующем ему биткоин-адресе. Нет ключа — нет биткоинов! Или, как говорится в популярной среди биткоинеров поговорке — ”Not your keys, not your coins” (Не твои ключи, — не твои биткоины).
Из этого следует, что вся ответственность за хранение денег в Биткоине лежит только на владельце приватных ключей от биткоин-адреса. Никто не сможет помочь ему восстановить доступ при утрате ключей!
Отчасти эта проблема решается сторонними сервисами верхнего уровня, которые предоставляют доступ к аккаунту клиента и через него — к приватным ключам, которые хранятся на серверах этих сервисов. Это делается за счет утраты анонимности — пользователь должен указать свои реквизиты для восстановления доступа к аккаунту, как правило, — e-mail и/или номер телефона. А по требованиям KYC/AML и свои личные данные — имя и фамилию, адрес проживания и т.п.
Например, в популярном веб-кошельке Blockchain.info приватные ключи от биткоин-адресов клиентов хранятся в зашифрованном виде на серверах сервиса, а клиенты получают к ним доступ, войдя в свой аккаунт на сайте или приложении для смартфона по паролю и используя для надежности двухфакторную авторизацию. Кроме того, клиенты могут скачать свои приватные ключи (точнее — seed-фразу) и хранить у себя. Это дает им возможность воспользоваться любым другим кошельком, который поддерживает seed.
2. В биткоин-кошельках не хранятся биткоины.
Эта парадоксальная фраза сбивает с толку многих начинающих (и не только) пользователей Биткоина. Но в действительности это так! В Биткоин кошельках хранятся приватные ключи от биткоин-адресов, а не сами монеты. Более того, см. п.3…
3. Биткоины не существуют как сущности.
Звучит, как каламбур, но это так! Ранее, в п.1, для простоты понимания я написал, что биткоины «хранятся на биткоин-адресе». В действительности это не совсем так. Биткоин (монета) не является объектом, даже цифровым. Его невозможно представить в виде набора данных. И, поскольку это не объект, его невозможно хранить в том понимании, которое мы обычно вкладываем в понятие «хранение». Биткоин (монета) существует только в контексте транзакции. Да и сами транзакции в Биткоин-сети отличаются от банковских записей в бухгалтерских книгах. И это — следующая особенность Биткоин-сети , которая может многих окончательно запутать.
4. Биткоины не отправляются ни на адреса, ни с адресов.
В отличие от банковских транзакций, которые суть перевод денежных средств с одного банковского счета на другой, транзакция в Биткоине реализована по-другому — это разблокирование неизрасходованных средств выхода осуществленной ранее транзакции (UTXO — unspent transaction output) при помощи приватного ключа биткоин-адреса отправителя и блокирование переводимой суммы при помощи публичного ключа адреса получателя. Поскольку можно использовать только всю сумму на неизрасходованном выходе, остаток (сдача) блокируется публичным ключом адреса отправителя.
После этого получатель может таким же образом разблокировать своим приватным ключом неизрасходованный выход этой новой транзакции (UTXO) и заблокировать публичным ключом нового получателя переводимую ему сумму, осуществляя новый перевод.
Ниже на картинке приведен пример простой транзакции. У отправителя (его принято называть Элис/Alice) на неизрасходованном выходе (UTXO) ранней транзакции есть 10 BTC. Элис переводит 8 BTC получателю (принято называть Бобом/Bob), а остаток (сдача) в размере 2 BTC возвращается на биткоин-адрес отправителя (Элис). При этом выход с 10 BTC становится израсходованным и создаются два новых неизрасходованных выхода (UTXO) — c 8 BTC и 2 BTC. Но первый может теперь разблокировать только Боб, а второй — только Элис.
Пример транзакции в Биткоине.
Из этого следует, что баланс любого биткоин-адреса — это сумма всех неизрасходованных выходов транзакций (UTXO), которые заблокированы публичным ключом владельца этого адреса.
Пусть вас не пугает эта сложность, Биткоин использует криптографические алгоритмы и, с точки зрения криптографии, это достаточно простая схема. К тому же, позволяющая отследить всю цепочку транзакций вплоть до первой эмиссионной.
По сути, это выглядит как перевод с одного биткоин-адреса на другой с возвратом остатка (сдачи) на биткоин-адрес отправителя (не обязательно тот, с которого был осуществлен перевод). Но, как вы теперь понимаете, в реальности это осуществляется путем разблокирования приватным ключом отправителя и нового блокирования переводимых сумм публичными ключами получателей.
Из этого следует очередная особенность:
5. Биткоины никогда не бывают в пути.
Банковские транзакции подразумевают реальное движение сумм переводов между счетами. Сначала со счета отправителя снимается переводимая сумма и он уменьшается на эту сумму. Затем средства перемещаются по банковским и межбанковским каналам, проходя через транзитные счета, пока не поступят на счет получателя, который увеличивается на переводимую сумму. Т.е. какое-то время существует ситуация при которой деньги со счета отправителя уже сняты, а на счет получателя еще не зачислены.
В Биткоине такого нет! До тех пор, пока биткоин-транзакция не будет в составе нового блока записана в блокчейн, средства остаются на биткоин-адресе отправителя. Фактически самого движения нет, есть одновременный акт передачи монет с адреса на адрес в момент записи блока с транзакцией в блокчейн.
А как же «двойная трата», спросите вы? Да, действительно, если я отправляю средства на адрес получателя, а они сразу с моего адреса не списываются, значит я могу снова отправить их на адрес другого получателя. Одними и теми же монетами купить пиццу и пиво к ней!
На самом деле, большинство программных кошельков это не позволяют делать. Но никто не мешает это сделать напрямую, послав подписанное распоряжение о переводе средств в Биткоин-сеть. Что же произойдет в этом случае? Да всё просто! Одна из двух транзакций не пройдет. И не обязательно это будет вторая. Тут возможны два случая:
- Обе транзакции попали в один мемпул. Майнер пропустит одну и забракует по нехватке средств вторую.
- Транзакции попали в разные мемпулы (к разным майнерам). В блокчейн будет записан блок только с одной транзакцией. После этого вторая транзакция станет невалидной.
Так что, или пицца, или пиво! :)
P.S. Есть еще и другие особенности Биткоина, но об этом в следующей статье.