lamed: (Default)
[personal profile] lamed
К оглавлению

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

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

HELLO

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

0805121215

Компьютер работает с числами, а мы видим вместо них буквы. Все просто.

Итак, для того, чтобы создать электронную подпись (в варианте, который используется в биткойне), нам понадобится 85-значное случайное число. Очень важно, чтобы оно было совершенно случайным. Это число мы будем называть закрытым (секретным, приватным) ключом. Его нужно хранить в строжайшем секрете.

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

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

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

Давайте повторим.

Закрытый (приватный) ключ мы храним в секрете и подписываем с его помощью документы.

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

Как это можно использовать?

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

Когда вы следующий раз придете за своими деньгами, вы вручите ему документ, в котором написано: “Прошу выдать мне содержимое ячейки №…” Этот документ вы должны подписать своей электронной подписью. Служащий подойдет к ячейке, прочтет открытый ключ, который написан на дверце и с его помощью проверит вашу подпись на документе. Если подпись верна, служащий откроет ячейку и выдаст вам деньги.

Всё.

По такому же принципу работает наша бухгалтерская книга. В ней написано:

256) 2.435823 монет принадлежат обладателю открытого ключа ABCDEF
257) 6.238324 монет принадлежат обладателю открытого ключа GHIJKL
258) ...
...

Если вы захотите передать 5 монет Бобу, вам сначала нужно спросить, какой у него открытый ключ. Он скажет: “Мой открытый ключ - QRTZYX”. Тогда вы напишете следующий документ:

Взять:
Монеты, записанные в строке (257) <подпись>
Передать:
5 монет - обладателю открытого ключа QRTZYX
1.238321 монет - обладателю открытого ключа GHIJKL

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

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

Обратите внимание, из чего она состоит.

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

У нее есть выходы - один или несколько - куда деньги направляются. Заметьте, что 1.238321 монет вернулись опять к GHIJKL. Это сдача - непотраченные деньги.

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

Вот вам настоящая транзакция для примера: https://blockchain.info/ru/tx/13cd8c11f04fc99192c3e416dc96f674b363709cc21de27300c1114b3c51f2d9
Попробуйте найти в ней знакомые элементы.

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

1P2duUbxxSAvUAxm4XBxa3JABCRkKVPwFg

Этот набор букв и цифр называют биткойн-адресом. Когда вы просите кого-то отправить вам биткойны, вы даете ему свой адрес - или в таком виде, или в виде QR-кода, который можно легко сфотографировать телефоном. Но об этом - в следующий раз.

Продолжение

July 2017

S M T W T F S
      1
2345678
910 1112131415
16171819202122
23242526272829
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2017 06:42 pm
Powered by Dreamwidth Studios