zhu_s (zhu_s) wrote,
zhu_s
zhu_s

This journal has been placed in memorial status. New entries cannot be posted to it.

Categories:

3 века денег: наличные, банки, криптовалюты, ч.2

Ниже – пояснения, схематизированные до уровня «для первоклассников», как это в принципе устроено. Описания Биткойна в русской и англоязычной wiki (а также в специализированних Биткойн wiki по ссылкам в конце) вполне полны и информативны. Но без предварительного объяснения этой в принципе несложной (хотя и весьма изощрённой в деталях) технологии «на пальцах» вы вряд ли сможете просто дочитать эти тексты до конца, споткнувшись о специальные термины.

Водяные знаки на купюрах из битов

Когда я даю кассиру супермаркета рубль за купленную бутылку водки (на практике рублей за это нужно серьёзно больше, чем 1, но для примера неважно), понимание «подлинности» этой транзакции включает в себя 3 составляющих: (i) я должен понять, что даю рубль именно тому, кому следует – в данном случае человеку, обладающему правом легально выпустить меня из магазина с бутылкой; (ii) кассир должен (по внешнему виду и, возможно, защитным признакам) понять, что я дал ему «законное платёжное средство»; (iii) не обязательно, но в принципе не лишне для кассира понять, что именно я имею право распоряжаться в данной транзакции этим рублём, т.е. что я достал его из своих широких штанин, а не из штанов соседа по очереди.

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

Пусть теперь рубль представляет собой просто фразу – «Я, такой-то, даю рубль кассиру», которую я должен во всеуслышание проорать на весь супермаркет. Подчеркну – это не озвучка намерения дать некий (золотой, бумажный и т.п.) «рубль», и не звуковое сопровождение соответствующего действа. А сам этот публичный возглас -  и есть теперь «рубль», существующий, стало быть, лишь в процессе его передачи и никак иначе.

Чтобы это заявление приобрело общепринятые атрибуты денег, оно должен включать в себя следующие 3 ссылки: (i) «адрес» - некоторое уникальное «имя» получателя («кассира» в нашем примере), позволяющее ему и только ему распорядиться полученным от меня «рублём», т.е. «выкрикнуть» в дальнейшем аналогичную фразу типа «Я, «имя кассира», даю рубль <кому-то>?»; (ii) «подпись», позволяющую однозначно установить, что именно я и никто иной, так распорядился данным рублём и имел на это право, т.е. был «адресатом» в некоем предыдущем «выкрике»; (iii) «имя» этого предыдущего выкрика, т.е. «рубля», который я теперь хочу сделать достоянием кассира.

В принципе - это и есть все реквизиты, которое должно нести в себе «правильное» (т.е. проверяемое на подлинность) денежное сообщение. Чтобы, как и в практике с обычными денежными купюрами и монетами, расчеты с помощью фраз позволяли группировать «рубли» в пачки, а также (поскольку невозможно заплатить рубль, оторвав 1/10 от 10-рублевой купюры) – получать «сдачу», сообщение должно позволять иметь несколько «входов» - ссылок на предыдущие выкрики и несколько адресов-«выходов», включая, в частности, и мой (т.е. отправителя) для получения сдачи. Принципиально это мало что меняет. В нижеследующих абзацах - несколько технических ссылок на криптографические термины, которые совсем не дружащие с элементарной математикой могут пропустить и сразу перейти к следующей главке.

[Техническое] Техпроцесс чеканки биткойнов

Для электронного подписывания любых сообщений, включая и денежные, общераспространена технология с использованием пар ключей (приватного и публичного, где первый представляет собой случайное число в определённом диапазоне, в Биткойне – строку из 256 битов, второй – некую трудно обращаемую функцию от него). Подпись, как и в любых других приложениях, использующих электронную подпись с открытым ключом, представляет собой некоторое преобразование исходного сообщения с использованием приватного ключа, результат которого передается всем вместе с сообщением и публичным ключом.

Проверка представляет собой некое быстро выполнимое вычисление с исходным сообщением, подписью и публичным ключом, которое, если всё в порядке, должно дать известный результат, например, 0. При этом вычислить/подобрать сам приватный ключ, используя эти данные, практически невозможно.

Для обозначения/ нумерации транзакций и блоков (см. ниже) используется хеширование (дословно – мешанина из битов исходного сообщения) – преобразование (остальной части) транзакции в цепочку битов фиксированной длины (в Биткойне -256, т.е. 32 байта). Как и электронная подпись, оно также представляющее собой одностороннюю, трудно инвертируемую функцию. Восстановить сообщение, зная хеш, вычислительно невозможно, при этом вероятность коллизий, т.е. совпадения хешей 2 различающихся сообщений, ничтожно мала. Нумерация транзакций (биткойнов) с помощью хешей, а не с помощью серийных номеров, как это происходит с ЦБ-шной наличкой, позволяет обойтись без централизованного регистратора.

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

В итоге у нас получается цифровая монетка (транзакция) примерно следующего вида:

{хеш; хеш предыдущей транзакции; подпись и публичный ключ отправителя для ее проверки; адрес (публичный ключ) получателя},

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

Можно, как обычные деньги, преобразовать это сообщение и в «физическую» форму – монеты (вряд ли кто не видел хотя бы изображения таких монет на картинке), бумажки и даже платежной карты, заранее отправив энную сумму на некий адрес, и передав с помощью этой монетки/бумажки/карты приватный ключ от него получателю. Можно организовать и обращение сертификатами таких адресов, подобно тому, как при золотом стандарте банкноты представляли собой сертификаты монетарного золота в хранилищах банков/ЦБ.

Однако при этом возникает вопрос доверия к плательщику (а вдруг он уже воспользовался этим приватным ключом, или дал его кому-то еще?), что исключается, когда получатель сам генерирует свои ключи и адреса (что рекомендуется и делается по умолчанию приложениями каждый раз заново для каждой новой транзакции, однако и все ваши старые адреса остаются валидными).
<окончание>
Tags: Деньги, Криптовалюты
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 7 comments