Татарин>> То есть, если зависимость чуть сложнее прямого следствия, то она не существует?
Полл> Если мы говорим о технической стороне дела, то требуется говорить в технических терминах.
Что есть блокчейн.
Блокчейн есть свободно копируемая в Интернете (или ФИДО, или почтовыми голубями) таблица из трех столбцов с одной неформатированной строкой внизу. Всем удачи - приступайте к финансовому захвату мира!
Если что-то не понятно: первый столбец таблицы это нумерация строк в ней. Ячейка второго столбца может содержать любые сообщения, не противоречащие правилам системы. Ячейка последнего столбца - цифровая подпись этой строки, сгенерированная на содержании самой строки и цифровой подписи предыдущей строки.
Неформатированная строка внизу таблицы служит для записи обращений-заявок любого участника системы.
Как это работает?
Мы сейчас не касаемся проблемы копирования нашей таблицы между различными участниками (нодами) системы, поговорим о самой работе в качестве средства обмена деньгами.
Итак, у нас есть гениальный мега-закер Синдзи, который решил сделать первую в мире №3001 криптовалюту - "Крипточейн".
Он помещает в сети таблицу из двух строк:
#1 | Shinji Public-key - 72386FGHdjvdsYT%
. Правила криптовалюты "Крипточейн": Правило 1 - все сообщения в сети "Крипточейн" должны соответствовать этим правилам. Правило 2 - для электронной подписи строк таблицы используется протокол RHS-215 по подписи предыдущей строки и дописанной после нее содержимого ячейки второго столбца таблицы, плюс ключ "х", где х - натуральное число от 0 до бесконечности. ЭЦП строки со 193 позиции должна содержать столько подряд идущих цифр "8", сколько на тот момент в системе штрафных баллов за излишнюю срочность генерации предыдущих строк. Штрафной балл ставится каждой строке, которое появилось в системе быстрее, чем за 1 минуту. Один штрафной бал снимается за 10 сообщений подряд, отправленных с промежутком более 2 минут. Правило 3 - за подписание строки ее автор может указать любого клиента системы, который получит вознаграждение. Правило 4 - ... Royalties - Shinji. | сформированная_ЭЦП_строки-указанный_х
Неформатированная строка: "Hello World! Flood: Зацените, какую мега-кульную штуку я (Shinji из #1) придумал! ЭЦП_на_ключе_Синдзи".
Алиса шарится по сети Интернет и натыкается на таблицу Синдзи, скачивает ее и решает присоединиться. Для чего в неформатированную строку дописывает сообщение в соответствии с правилами "Крипточейна": "Hello World! Alice Public-key - 723%&^gfsudgv&YT76dsYT%
. Flood: Я в деле! ЭЦП_на_ключе_Алисы".
Следом на сайт Синдзи заходит Боб, скачивает таблицу, уже дополненную Алисой, и так же решает присоединиться, причем активно.
Для чего он пишет для таблицы строку #2:
#2 | Shinji Public-key 72386FGHdjvdsYT%^ - confirmed. Royalties Shinji - confirmed, Shinji has 1 crch. Правила криптовалюты "Крипточейн"... - confirmed. Alice Public-key - 723%&^gfsudgv&YT76dsYT%
. Flood: Зацените, какую мега-кульную штуку я (Shinji из #1) придумал! - confirmed. Flood: Я в деле! (Алиса) - confirmed. Royalties - Bob. | сформированная_ЭЦП_строки
Стирает из неформатированной строки ранее написанное в нее и дописывает:
"Hello World! Bob Public-key - BJH87686GHJFER5432d. Flood: Ради такого случая я даже съем последний бутер с сыром! ЭЦП_на_ключе_Боба"
После чего высылает сделанное им Синдзи и Алисе. Синдзи и Алиса получают дополнение к таблице Крипточейна, проверяют ее ЭЦП, после чего проверяют соответствие сведений в этой строке правилам Крипточейна и при отсутствии ошибок и противоречий в сведениях содержимому более ранних строк - дописывают это дополнение в свои копии таблицы. Подробней о копировании таблицы будем говорить завтра.
На сейчас у нас в Крипточейне один подтвержденный пользователь - Синдзи, и он уже успел получить свое вознаграждение за первый блок, или "монету", в системе - для простоты мы не рассматриваем алгоритм расчета вознаграждения в нашей криптовалюте. Будем условно считать, что это вознаграждение равно 1 Крипте - единице нашей криптовалюты Крипточейн. Одна зарегистрированная заявка от пользователя Алиса и одна поданная заявка от пользователя Боб.
Наша система продолжает жить дальше.
Алиса дописывает в неформатированную строку: "Hello World! Flood: Боб, я тоже хочу бутер с сыром! ЭЦП"
Синдзи дописывает в неформатированную строку: "Hello World! Flood: Боб, продай половину бутера! ЭЦП"
После чего пишет строку #3, в которой подтверждает регистрацию Алисы в системе, регистрирует заявку от пользователя Боб, подтверждает выплату вознаграждения Бобу (да, до подтверждения его регистрации в системе) и записывает на вечное хранение в системе обращения к Бобу от себя и Алисы. Ну и заодно указывает себя как получателя вознаграждения за эту строку.
Боб указывает в неформатированной строке, что половина бутерброда стоит половину крипточейна - все честно.
Алиса, прочитав сообщение от Боба - пишет в неформатированной строке, что она переводит Бобу половину крипточейна.
Синдзи, прочитав сообщение от Боба - пишет в неформатированной строке, что он переводит половину крипточейна из того крипточейна, чей перевод ему подтвержден в #2. После чего начинает писать строку #4. Однако тут он обнаруживает, что сообщение Алисы противоречит правилам Крипточейна - она не указала строку, в которой подтверждается наличие у нее денег. И ее перевод не регистрирует, оставляя в неформатированной строке. Может так же скинуть об этом комментарий Алисе опять же в неформатированной строке, может ничего не сказать - это в данном случае не важно. Важно, что Алиса с перекусом пока что обломалась. Перевод Синдзи в системе регистрируется.
В строке #5 в соответствии с правилами Крипточейна может быть зачисление средств на кошелек Боба и их изъятие из кошелька Синдзи, может быть запрос на согласие Боба на прием перевода средств от Синдзи. Если наш Крипточейн не требует согласия автора кошелька - перевод Бобу пройдет сразу, если в нашей криптовалюте зачисление требует согласия владельца кошелька - может потребоваться еще два шага, сперва на регистрацию согласия в системе, затем на подтверждение его.
Если у нас в системе для каких-то запросов будет требоваться подтверждение подтверждения и так далее - итераций станет соответственно больше. Но для упрощения мы остановимся на строке #5, считая, что Боб получил свои 0.5 криптокоина, а Синдзи - половину бутерброда, и на двоих у них сейчас 5 криптокоинов, заработанных на обеспечении функционирования криптовалюты для флуда с Алисой.
Завтра в нашу систему добавятся такие замечательные люди, как Чарли и Мэллори, и обсудим технику копирования нашей БД и безопасных связей в этом душевном коллективе.
Пока что для нас важны затраты вычислительной мощности Алисы (ноды-кошелька, не ведущего майнинга) на функционирования системы. Они равны считыванию обновлений БД и проверки ЭЦП в ее строках. Это (для Биткоина в самый интенсивный период использования системы) примерно в 4-6 раз меньше затрат вычмощностей и пропускной способности канала в Интернет на фоновую музыку в интернет-плеере или работа не очень навороченного виджета на рабочем столе.