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-кода, который можно легко сфотографировать телефоном. Но об этом - в следующий раз.

Продолжение

From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

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:51 pm
Powered by Dreamwidth Studios