00:00 Введение
02:01 Решение проблемы византийского согласия
09:35 Строгие требования к свободному блокчейну
20:31 История до настоящего момента
22:44 Быстрое обогащение сегодня
24:03 Мини Биткойн 1/3 - Хэширование и Подпись
29:23 Мини Биткойн 2/3 - Транзакции
34:44 Мини Биткойн 3/3 - Блоки и Доказательство работы
44:47 Масштабирование блокчейна 1/2 - Приложенческий ландшафт
49:07 Масштабирование блокчейна 2/2 - Более крупные блоки
57:11 Ускорение блокчейна 1/2
59:30 Ускорение блокчейна 2/2
01:06:54 Расширение возможностей блокчейна
01:14:51 Пример использования: платежи
01:19:25 Пример использования: пассивная прослеживаемость
01:25:33 Пример использования: активная прослеживаемость
01:32:47 Пример использования: стимулированная переработка
01:35:40 Пример использования: стимулированная безопасность
01:41:30 Смягчение требований
01:44:53 Заключение
01:49:35 4.21 Блокчейны для цепочек поставок - Вопросы?
Описание
Криптовалюты привлекли большое внимание. С их помощью создавались состояния. Состояния могли как накапливаться, так и теряться. Пирамидальные схемы были широко распространены. С корпоративной точки зрения, «блокчейн» является вежливым эвфемизмом для представления схожих идей и технологий, позволяющим дистанцироваться от этих криптовалют. Примеры использования блокчейна в цепочках поставок существуют, но проблем при этом тоже много.
Полная расшифровка
Добро пожаловать в серию лекций о цепочках поставок. Я – Жоаннес Верморель, и сегодня я представлю лекцию «Блокчейны для цепочек поставок». Криптовалюты захватили воображение общественности, с их помощью создавались и терялись состояния, некоторые злодеи были пойманы и осуждены, и это будет продолжаться. На фоне всей этой суматохи термин «криптовалюта» стал слишком перегруженным для типичных крупных и консервативных компаний. Поэтому был принят термин «блокчейн», который позволяет дистанцироваться от всей безумности, происходящей в криптомире. Однако, в сущности, блокчейны и криптовалюты — это одно и то же.
Цель этой лекции — получить техническое, глубокое техническое понимание того, что происходит с блокчейнами. Если у вас есть навыки программирования, к концу лекции вы сможете при желании реализовать свой собственный прототип блокчейна. Овладев этим новым техническим пониманием блокчейна, мы начнем рассматривать примеры использования в цепочках поставок и оценим их жизнеспособность как технологий для решения проблем, а также их добавленную ценность для цепочек поставок. Приступим.
Происхождение Биткойна довольно странное. В 2008 году под псевдонимом Сатоши Накамото, что, вероятно, представляло собой командное усилие, была опубликована белая книга под названием “Bitcoin: A Peer-to-Peer Electronic Cash System”. Эта работа представляет систему и подход для нового вида электронной валюты. Текст относительно короткий, содержит несколько математических разделов, и даже математические части отчасти ошибочны.
В оригинальной работе утверждается, что система должна быть безопасной, если не менее половины хэш-мощностей находится на «правильной» стороне. Однако позже, в работе 2013 года «Majority is Not Enough: Bitcoin Mining is Vulnerable», было показано, что для обеспечения безопасности сети недостаточно, чтобы половина хэш-мощностей была честной; на самом деле требуется более двух третей хэш-мощностей.
Тем не менее, существует белая книга и программное обеспечение. Это программное обеспечение является с открытым исходным кодом, и его реализация очень низкого качества. Клиент Сатоши отличается низким качеством, и в течение первого года после публикации программного обеспечения контрибьюторы с открытым исходным кодом спешно исправляли множество ошибок и недочетов. Некоторые из этих проблем было сложно устранить из-за первоначального дизайна, что оказало долгосрочное влияние на сообщество. Многие из современных криптовалют являются форками оригинального клиента Сатоши и, в некоторой мере, до сих пор сохраняют множество неисправленных проблем.
Таким образом, получается очень странная ситуация: с одной стороны, у нас есть работа не наивысшего качества и программное обеспечение, которое, безусловно, низкого качества, а с другой стороны, команда Сатоши Накамото совершила поразительное открытие. По сути, проблема была известна как проблема византийского согласия. Это задача распределенных вычислений. Представьте, что у вас есть участники, и все они видят, каким должен быть статус системы, который в цифровом мире можно представить как длинную последовательность нулей и единиц — информационную нагрузку. Участники могут обновлять состояние системы, переключать биты, добавлять или удалять их, и делать всё это одновременно. Они могут общаться друг с другом, а задача византийского согласия состоит в том, чтобы все честные участники в определенный момент договорились о том, каким является состояние системы до последнего бита.
Проблема становится крайне сложной, если среди участников есть византийцы, действующие как противники и пытающиеся запутать остальных. Поразительное открытие Биткойна заключается в том, что если вернуться в 2008 год и спросить экспертов, они, вероятно, сказали бы, что невозможно решить проблему византийского согласия в полностью децентрализованном виде без центрального органа. Однако открытие Сатоши Накамото — консенсус Накамото — заключается в том, что им удалось найти способ решения этой проблемы.
Решение является очень удивительным. Это выглядит как алгоритмическая задача, но суть Биткойна заключается в том, что Сатоши Накамото решил ее, добавив денежные стимулы, финансовое вознаграждение. Это не просто алгоритмическое решение; это алгоритм, который работает исключительно благодаря тому, что внутри системы встроены денежные стимулы, побуждающие участников действовать определенным образом.
Чтобы создать эти стимулы, нам нужна электронная валюта, с помощью которой можно их сконструировать. Именно этим и занимается Биткойн. Если вы хотите иметь электронную валюту, перед вами встают как минимум две очень сложные задачи. Первая — двойное расходование. Если у вас есть определенное количество цифровых денег, представленных в виде битов информации, что мешает вам скопировать их и потратить один раз для оплаты чего-либо, а затем повторно использовать ту же сумму для оплаты другого? Эта проблема известна как двойное расходование и является одной из самых сложных задач, решаемых Биткойном.
Вторая проблема — эмиссия монет. Откуда берутся эти деньги? Любопытно, что обычно при столкновении с очень сложной задачей применяется метод “разделяй и властвуй”, когда большую проблему разбивают на несколько подзадач, решаемых отдельно, после чего решается общая задача. Интересно, что в Биткойне имеется две принципиально разные и сложные проблемы: двойное расходование и эмиссия монет. Вместо метода “разделяй и властвуй”, Биткойн использует подход объединения и запутывания, который был новаторским для своего времени, решая обе проблемы одновременно. Решение, как мы увидим позже в лекции, оказывается удивительно простым.
Эта лекция не посвящена в первую очередь тому, что делает цифровую валюту хорошей валютой, ведь для этого нужна отдельная лекция. Тем не менее, блокчейны не могут функционировать без финансовых стимулов, созданных посредством цифровых валют, поддерживающих сам блокчейн. Когда мы говорим, что криптовалюты и блокчейны — это по сути одно и то же, имеется в виду, что если вы хотите иметь блокчейн, вы будете транслировать сообщения, и эти сообщения будут транзакциями с денежными потоками. Взгляд с точки зрения криптовалют сосредоточен на денежном аспекте, тогда как подход блокчейна уделяет больше внимания метаданным, накладываемым на транзакции.
Помните, что вся модель безопасности этих систем блокчейнов/криптовалют зависит от экономических стимулов, встроенных в систему. Невозможно полностью отделить экономические цели и цели криптовалют от блокчейна — это всего лишь вопрос точки зрения.
Теперь давайте кратко рассмотрим требования, предъявляемые к системе блокчейна/криптовалют, и как их можно потенциально смягчить. Первое требование — неотказуемость. Неотказуемость означает, что в качестве участника никто не может помешать вам транслировать транзакцию. Никто не может помешать выполнению корректной транзакции. Это очень важно, ведь если существует участник, способный это сделать, то по сути появляется центральный орган. Более того, ни один участник не может помешать выполнению корректной транзакции, и никто не может лишить вас возможности совершать транзакции, используя ваши монеты или заставив некорректную транзакцию пройти.
Второе требование — анонимность. Технически, Биткойн является псевдоанонимной сетью, но в сущности требование анонимности означает, что не ведется список участников. В подлинном блокчейне участники могут появляться и покидать систему в любой момент без центрального контролера. Поскольку участники могут свободно входить и выходить, никто не отслеживает их личность. Это не означает, что система должна быть полностью анонимной; просто в настоящем каноническом блокчейне необходимо обеспечить возможность свободного входа и выхода.
Затем я отмечаю требование массовой масштабируемости, что особенно сложно для блокчейнов, потому что, как мы увидим, такие распределенные системы по своей природе не так легко масштабировать. Напротив, масштабирование блокчейна чрезвычайно трудно. В основе лежит противоречие: если разрешить любому участнику транслировать произвольное большое количество сообщений, транзакций или обновлений системы, один участник может перегрузить сеть, заспамив её. Таким образом, все блокчейны вынуждены справляться с этой проблемой масштабируемости, решая её посредством финансовых стимулов.
Идея заключается в том, чтобы стоимость транзакции — элементарного сообщения, транслируемого в блокчейне — оставалась примерно на уровне десятой части цента. Это очень дешево – представьте, что за отправку электронного письма вам пришлось бы заплатить десятую часть цента. Это не бесплатно, но стоимость остается крайне низкой. Так, если у вас регулярное использование и требуется транзакция, например, для перемещения товара на складе, это приемлемо; стоимость остается очень низкой. Однако, установив комиссию в 0.1 цента, вы делаете транзакции слишком дорогими для злоумышленника, который хотел бы заспамить сеть миллиардами транзакций, что очень легко сделать при отсутствии сборов. Каждая транзакция должна оплачивать комиссию за своё существование и распространение; в противном случае злоумышленник мог бы заспамить распределенную систему без препятствий.
Таким образом, комиссии за транзакции — это ещё один аспект экономической инженерии, направленный на поддержание жизнеспособности блокчейна. Вы должны суметь поддерживать комиссию в 0.1 цента независимо от масштаба, ведь еще одна проблема массовой масштабируемости заключается в том, что при миллионах транзакций их стоимость может взлететь до небес. Это серьезная проблема, которой мы хотим избежать. Мы не желаем ситуации, когда на автобус приходят 100 человек, желающих проехать в определенное время, а мест оказывается лишь 50. Если это случится, возникнет какой-то механизм аукциона, и цена за билет резко поднимется. В терминах блокчейна это означает, что стоимость транзакций взлетит. Кстати, подобные проблемы наблюдаются в нескольких блокчейнах в настоящее время. Например, в сети Bitcoin Core довольно часто комиссия за транзакцию превышает десять долларов, и это серьезная проблема.
Нам также требуется достаточно низкая задержка. То, что Сатоши Накамото обнаружил в 2008 году — консенсус Накамото — работает весьма хорошо, но, по сути, это очень медленный процесс. Когда я говорю “очень медленный”, имеется в виду, что для сходимости участников к общему состоянию системы требуется примерно час. Это не катастрофически медленно, но и не очень быстро. Если мы хотим заниматься делами, связанными с цепочками поставок, где необходимо проводить платежи или отслеживать перемещение товаров, было бы гораздо лучше, если бы задержка системы составляла около трех секунд и меньше — как при быстрой оплате кредитной картой.
Наконец, одним из последних требований является инфраструктура. Когда я говорю о программной инфраструктуре, поддерживающей блокчейн или криптовалюту, она должна быть общественным благом, финансируемым по какому-то согласованному социальному контракту. Это то, чего, я считаю, Сатоши Накамото не предвидел в 2008 году. Если вы хотите эксплуатировать очень сложную распределённую по всему миру систему, необходимо создать и поддерживать огромное количество программной инфраструктуры. Проблема в том, что если у вас нет социально приемлемого способа финансировать все эти усилия, появляются противники, не только как византийские недоброжелатели в сети, пытающиеся запутать других участников относительно состояния сети, но и как противники, которые захватывают сам исходный код и делают с программной инфраструктурой то, что идёт вразрез с интересами более широкой общины. В истории криптовалют уже имелись случаи враждебного захвата контроля одной командой другой, при этом новые команды преследуют цели, совсем не совпадающие с интересами более широкой общины. Это тип атак, скорее, социальной инженерии, который Сатоши Накамото в 2008 году не предвидел. Однако после десятилетия работы такого рода атаки теперь гораздо яснее для наблюдателей криптомира.
Теперь, история до настоящего момента: это серия лекций о цепочке поставок. Мы находимся в четвёртой главе. В первой главе я представил свои взгляды на цепочку поставок как область исследования и практику, и мы увидели, что для этого требуются очень специфические методологии. Вся вторая глава посвящена методологиям цепочки поставок, пригодным для работы в этой сфере. Большинство наивных методологий не выживают при столкновении с реальностью, особенно когда присутствуют конфликты интересов. Кстати, многие аспекты из второй главы, где я рассматриваю конфликты интересов, очень актуальны для сегодняшней лекции, поэтому я приглашаю аудиторию, если вы ещё не видели лекции из второй главы, ознакомиться с ними. Третья глава посвящена проблемам цепочки поставок, то есть лекциям, где я сосредотачиваюсь исключительно на проблемах цепочки поставок, а не на решениях. Идея в том, чтобы действительно понять проблему, прежде чем начинать придумывать решения.
Четвёртая глава представляет собой, по сути, собрание вспомогательных наук. Блокчейн — это крайняя тема, которую я добавляю в конце этой главы, но, в сущности, вспомогательные науки — это дисциплины, которые действительно поддерживают современные практики цепочки поставок. Так же, как можно ожидать, что современный врач обладает некоторыми знаниями по химии, не обязательно быть блестящим химиком, чтобы быть блестящим врачом. Общее мнение таково, что с современной точки зрения медицины, если вы ничего не знаете о химии, вы не можете считаться хорошим врачом по современным стандартам. По моему мнению, то же самое относится и к цепочке поставок. Существует ряд вспомогательных наук, по которым вам нужно иметь определённые базовые знания, если вы хотите реализовать достаточно современную практику цепочки поставок.
Теперь, для данной лекции я сначала представлю Mini Bitcoin — игрушечную реализацию блокчейна. Это должно прояснить, как работают криптовалюты и в чём заключалось ключевое открытие Сатоши Накамото в 2008 году. Это также должно прояснить три очень большие проблемы, с которыми мы сталкиваемся при проектировании блокчейнов, а именно: масштабируемость, задержка и выразительность. Эти три проблемы существенно влияют на те случаи использования цепочки поставок, которые мы можем строить на основе блокчейна. Крайне важно понимать ограничения, присущие блокчейнам, поскольку они в сущности ограничивают то, что мы можем сделать в цепочках поставок, и тип ценности, которую мы можем создать. Наконец, во второй части лекции я рассмотрю ряд кейсов использования цепочки поставок, где в разной степени цепочка поставок может внести свой вклад.
Цель Mini Bitcoin — создать игрушечный блокчейн, упрощённую версию Bitcoin с нуля. Мы не будем слишком подробно останавливаться на всех технических деталях, поскольку в реальной жизни разработка блокчейна — это дело, требующее внимания к множеству деталей. Здесь я хочу изложить общую структуру, чтобы значительно упростить её по сравнению с реальной системой, и чтобы мы могли за несколько слайдов понять, что происходит, как это проектируется и как работает.
В этом очень простом примере мы собираемся создать валюту, где каждая монета стоит ровно один биткойн. У вас есть набор монет, каждая из которых стоит ровно один биткойн, и единственное, что вы можете сделать, это по сути перевести одну монету от одного участника к другому. Если у участника много монет, он может перевести их все, но мы рассматриваем очень простую валюту, где нет дробных значений и прочих нюансов.
Чтобы создать этот Mini Bitcoin, нам нужны всего три специальных функции: хеш-функция, функция подписи и функция проверки. Эти функции уже были стандартом ещё в 2008 году, так что, когда был изобретён Bitcoin, все криптографические строительные блоки уже существовали. Сатоши Накамото не изобретал ни один из этих инструментов. Эти специальные криптографические функции, также известные как ловушечные функции, были хорошо известны, стандартны и широко использовались уже в 2008 году. Ключевое нововведение Сатоши Накамото заключалось в том, чтобы использовать эти функции в очень особом порядке, как мы и увидим.
У нас есть эти три функции: хеш-функция, о которой я не буду вдаваться в подробности здесь, но о которой я уже рассказывал на предыдущей лекции. Это криптографическая версия хеш-функции, которая может принять любое сообщение, серию бит произвольной длины, и создать дайджест длиной 256 бит. Функцию практически невозможно обратить. Если у вас есть дайджест, единственный способ определить сообщение, которое его породило, — это знать само сообщение заранее.
Функция подписи может принять сообщение, закрытый ключ и создать подпись, которая снова составляет 256 бит. Функция подписи работает в паре с функцией проверки. Для тех, кто может быть не знаком с асимметричной криптографией, идея заключается в том, что существуют механизмы, позволяющие иметь пару публичного и закрытого ключей. С помощью закрытого ключа вы можете создать подпись и опубликовать сообщение, не раскрывая свой закрытый ключ. Любой участник может воспользоваться функцией проверки, чтобы взять сообщение, вашу подпись и ваш публичный ключ и убедиться, что сообщение подписано закрытым ключом, ассоциированным с этим публичным ключом.
Эти ловушечные функции невозможно обратить, так что если вы не знаете исходного сообщения, вы не можете восстановить его из хеш-функции, то есть из дайджеста в исходное сообщение. То же самое касается и закрытого ключа — вы не сможете создать подпись для нового сообщения, если у вас его нет.
Эти три специальные функции доступны практически во всех современных программных средах, будь то C++, Python, Java, C# или другие. Это является частью стандартной среды, предоставляющей доступ к этим классам криптографических функций.
Теперь давайте рассмотрим ситуацию, когда я должен быть владельцем монеты номер один. Что это значит? Это означает, что в рамках этого византийского консенсуса существует общее согласие между всеми участниками этой мини-сети Bitcoin, что, в составе UTXO (непотраченных выходов транзакций), эта монета действительно существует. Когда я говорю «эта монета», я имею в виду сообщение, которое включает публичный ключ номер один и подпись ноль. Я просто предполагаю, что это часть набора монет, и все участники соглашаются, что эта монета действительно существует и готова к трате. Теперь, как владелец монеты номер один, как мне на самом деле потратить эту монету, чтобы передать право собственности на неё кому-либо другому?
Я делаю это, создавая подпись. Подпись формируется следующим образом: я использую специальную функцию «sign» и подписываю сообщение. Это сообщение будет состоять из публичного ключа номер один, подписи ноль и затем публичного ключа номер два. Публичный ключ номер два — это буквально адрес, на который я отправляю деньги. Тот, кто владеет закрытым ключом, ассоциированным с этим публичным ключом номер два, станет получателем моей транзакции. Итак, я подписываю эту транзакцию, и для её подписи я использую закрытый ключ номер один. Единственный участник, который может создать эту подпись номер один, — это тот, у кого есть секрет, закрытый ключ номер один, ассоциированный с публичным ключом номер один.
Если я хочу, чтобы вся сеть узнала, что эта транзакция совершена, мне нужно транслировать транзакцию. Транзакция — это просто сообщение, которое содержит публичный ключ номер один, подпись ноль, публичный ключ номер два и подпись один, которую я только что создал. Это просто перечень элементов, составляющих транзакцию. Когда я публикую эту транзакцию от одного к двум, по сути, монета номер один выходит из пула монет, а монета номер два входит в пул монет как часть системы. Именно поэтому так важно иметь этот византийский консенсус. Он нужен для того, чтобы предотвратить возможность потратить деньги, которыми вы не владеете, и запутать сеть относительно права собственности на монеты. Однако если проблему византийского консенсуса удаётся решить, существует твёрдое соглашение о монетах, которые действительно принадлежат системе. Как только монета потрачена, владелец номер два получает монету. Монета может покидать сеть, а новая монета создаётся и входит в систему.
Этот механизм можно повторять: монету номер два можно передать монете номер три, используя ту же систему — создать подпись, транслировать транзакцию и так далее.
Кстати, каждый раз, когда я говорю, что используется функция «sign», подразумевается, что все наблюдатели могут воспользоваться функцией «verify», чтобы проверить корректность подписи. По сути, когда участники наблюдают за транзакциями, первое, что они делают — использовать функцию «verify», которую я упоминал ранее, чтобы проверить, что транзакция действительно корректна. Проводится два проверки: каждый участник должен убедиться, что монета, которая передаётся, уже была частью состояния системы, что гарантирует её действительность, и что транзакция валидна с точки зрения подписи. То, что я здесь не рассмотрел — это проблема двойного расхода. Как предотвратить одновременное совершение двух конфликтующих транзакций и как исключить запутывание сети, если противник попытается одновременно транслировать две конфликтующие транзакции, отправляя одни и те же деньги двум разным участникам?
Также я не объяснил, откуда берутся эти монеты. Как они появляются в системе изначально? Суть открытия Сатоши Накамото и его Консенсуса Накамото заключается в решении этих двух проблем одновременно.
Предложение Сатоши Накамото заключается в том, чтобы ввести особый класс участников в сеть, ныне именуемых «майнерами».
Майнеры, по сути, прослушивают сеть и собирают все транзакции, которые были транслированы. Они собирают эти транслированные транзакции и помещают их в контейнер, называемый «блок». Блок — это просто совокупность транслированных кем угодно транзакций в одноранговой сети.
Первая транзакция блока будет специальной транзакцией, называемой «coinbase». Coinbase — это уникальная транзакция, которая создаёт одну новую монету в этой установке Mini Bitcoin «из воздуха». Первая транзакция — это coinbase, создающая одну новую монету из ничего, а затем в блоке следует перечень транзакций, которые были транслированы, согласно восприятию майнера. Майнер может не успеть зафиксировать все транзакции в сети Bitcoin, но он старается сделать это.
Coinbase — это особенная транзакция, и я объясню, как её создать, поскольку она уникальна. Сначала мы создаём хеш блока, частичный хеш (H1a). Этот хеш по сути является хешем сообщения, которое начинается с хеша предыдущего блока (H0b), конкатенированного со всеми транзакциями, присутствующими в блоке.
Затем coinbase представляет собой кортеж, который включает хеш H1a, за которым следует nonce. Nonce — это случайное число, выбранное майнером, и оно имеет своё значение. Coinbase также содержит публичный ключ майнера. Coinbase включает хеш всего содержания блока, содержит случайное число и публичный ключ майнера. Этот публичный ключ позже будет использоваться майнером для запроса coinbase в качестве обычной монеты. В этой установке Mini Bitcoin монеты эмитируются со скоростью один биткойн за блок. В реальности, в сети Bitcoin Core или Bitcoin Cash, процесс гораздо сложнее, но большую часть сложности можно упростить для ясности.
Идея заключается в том, что для того, чтобы блок считался действительным, нам необходимо создать coinbase. Однако если остановиться на этом, все майнеры могли бы заявлять, что у них есть блок в любое время, и каждый из них стремился бы сказать: «Я могу сформировать пакет, дайджест всех этих транзакций. Я могу создать coinbase. Пожалуйста, дайте мне этот дополнительный биткойн». Как же разобраться с тем, что все майнеры соревнуются за то, чтобы их версия блока была признана сетью единственно истинной?
Сатоши Накамото ввёл концепцию доказательства работы (proof of work). Хеш coinbase, который является большим 256-битным числом, должен быть больше порогового значения сложности. Этот процесс похож на решение головоломки, и единственный способ решить эту головоломку — найти такой coinbase, чей хеш соответствует требуемой сложности. Майнер может пробовать множество случайных чисел для nonce в надежде первым достигнуть уровня сложности и заполучить блок себе.
В Bitcoin сложность является адаптивной, и сеть использует усовершенствованный алгоритм скользящего среднего, чтобы поддерживать сложность на уровне примерно 10 минут на блок. Если блоки находятся в среднем быстрее, чем за 10 минут, сложность будет возрастать до тех пор, пока блоки не будут находиться каждые 10 минут в среднем. Если же блоки начинают находиться каждые 11 минут, сложность снижается, чтобы среднее время нахождения блока оставалось около 10 минут.
Предложение Сатоши Накамото заключается в том, что майнеры всегда следуют за самой длинной валидной цепочкой. Цепочка блоков должна соответствовать цели сложности, чтобы считаться валидной. При создании блока вы всегда строите его на существующем блоке, за исключением генезис-блока, который является исходной точкой. Правило касается не просто самой длинной цепочки, а самой длинной валидной цепочки. Другие майнеры проверяют, что все транзакции, указанные в блоке, действительно валидны, убеждаясь, что подписи соответствуют и что расходуемые монеты доступны для трат. Они поддерживают это состояние, и именно так Bitcoin способен решить как проблему двойных трат, так и проблему эмиссии монет. У нас есть все необходимое для создания блокчейна.
На самом деле, если вы хотите создать настоящий блокчейн промышленного уровня, необходимо учитывать массу дополнительных аспектов. Во-первых, вам хотелось бы иметь дробные количества. Вероятно, вы не хотите обладать всего одним биткойном за раз; вам нужен механизм, позволяющий переводить несколько или дробные количества биткойнов.
Что касается монет, вы бы хотели иметь транзакции, которые могут одновременно использовать множество монет в качестве входов и создавать множество монет на выходе. Это не будут транзакции “один к одному”, связывающие одну монету с одной; это будут транзакции “многие к многим”, когда множество входных монет связываются с множеством выходных монет. Кстати, именно так работают современные биткойн-сети.
Также существуют комиссии за транзакции, о которых я упоминал. Если позволить людям бесконечно рассылать транзакции, они могли бы отправлять деньги туда-сюда между одними и теми же адресами, создавая перегрузку в сети. Идея заключается в том, что комиссия по сути означает, что определённая часть транзакции перенаправляется майнеру. Обычно в большинстве вариантов Bitcoin правило гласит, что общая сумма входов должна быть, с денежной точки зрения, немного больше, чем общая сумма выходов. Недостающая часть стоимости, этот разрыв, выплачивается майнеру в виде вознаграждения.
Теперь мы завершили наш мини-Bitcoin. Если вы умеете программировать, у вас есть все элементы, необходимые для реализации собственного блокчейна. Кстати, вы также можете повторять блоки, и именно это я делаю здесь. То, что вы только что сделали с одним блоком, можно повторить точно такими же формулами для другого блока, используя второй код. Это похоже на транзакции; один и тот же механизм повторяется снова и снова.
Масштабировать блокчейн — задача крайне сложная. В кратком техническом документе 2018 года я представил обзор применения Bitcoin. Идея заключается в том, что в зависимости от объёма данных, с которым взаимодействуют ваши блокчейны, количество данных, которые необходимо обработать и передать, сильно варьируется в зависимости от того, как вы используете блокчейн. По сути, оно варьируется от примерно 100 байт для передачи (порядка величины приватного ключа) до 10 порядков величины, если приходится иметь дело со всем блокчейном.
Трудно осознать, что в зависимости от ваших задач количество вычислительных ресурсов, которое вам придётся задействовать для выполнения работы, может отличаться в 10 порядках величины. Один порядок величины означает увеличение ресурсов в 10 раз, а при 10 порядках вы можете перейти от одного до 10 миллиардов. Это поразительно и невероятно. В этом обзорном ландшафте приложений существует два основных различия: on-chain и off-chain приложения. Off-chain приложения — это те, которые работают только с данными, создаваемыми вами или вашими близкими партнёрами. Если вы крупная компания, возможно, вам придётся обрабатывать миллионы транзакций, и это будут только ваши собственные транзакции. По объёму данных они могут быть большими, но управляемыми, поскольку напрямую связаны с вашим бизнесом.
С другой стороны, on-chain приложения обрабатывают все транзакции, транслируемые по сети. Их объём может быть значительно больше, особенно если вы небольшой участник, которому нужно обрабатывать все транзакции в крупной сети, что может быть в миллионы раз больше, чем те транзакции, которые вас непосредственно касаются.
Кроме того, нам необходимо различать компоненты, которые можно назвать «денежными шестерёнками», и «денежными землями». Денежные шестерёнки — это фундаментальные компоненты, способствующие достижению консенсуса. Если их убрать, блокчейн перестанет работать, поскольку консенсус больше не будет достигаться. Денежные земли, наоборот, являются дополнительными компонентами, которые могут быть построены поверх инфраструктуры блокчейна. Они не являются строго необходимыми для его функционирования.
Обычно, когда речь идёт о применении в цепочке поставок, мы относимся к метаданным, находящимся в сфере «денежных земель». То, что мы делаем, не является строго необходимым для работы блокчейна; он может функционировать и без нашего специфического применения.
Что касается масштабирования блокчейна для реальных применений в цепочке поставок, необходимо учитывать, что блокчейн должен справляться с миллионами транзакций. Крупные компании обрабатывают миллионы транзакций еженедельно, что не является чем-то исключительным в мире цепочки поставок. Однако блокчейны плохо масштабируются, что подтверждается тем фактом, что майнеры должны обрабатывать все транзакции всех участников.
Чтобы решить эту проблему, были внедрены некоторые инновации, такие как решения, обсуждавшиеся ранее в лекции. Основная цель — сделать технологию блокчейна более масштабируемой и пригодной для обработки огромных объёмов транзакций, характерных для применения в цепочке поставок. Если вы хотите, чтобы блокчейн использовался для целей цепочки поставок, он должен справляться не только с транзакциями одной компании, но и со всеми транзакциями компаний, участвующих в блокчейн-инициативе. Это может стать чрезвычайно большим, или, точнее, действительно очень большим, возможно, даже чрезмерно большим. Вот что нам предстоит увидеть, и здесь на помощь пришли, по сути, две значимые статьи. Когда Сатоши Накамото опубликовал свою работу, он говорил, что с развитием аппаратного обеспечения эта проблема будет решена, и мы сможем масштабироваться столько, сколько потребуется. Так и должно было быть. Однако оказалось, что это сложно, и уже более десяти лет практически все участники этого пространства блокчейна и криптовалют сталкиваются с проблемой масштабируемости.
Первая значимая статья — ECMH, Elliptic Curve Multiset Hash. Это довольно техническая работа, но основной вывод заключается в том, что вам не нужно хранить все транзакции; достаточно хранить лишь монеты, готовые к тратам. Этот набор монет, которые можно потратить, в экосистеме Bitcoin технически называется UTXO. Например, размер UTXO в сети Bitcoin Core в настоящее время слегка меньше пяти гигабайт. Это размер набора данных UTXO, тогда как размер блокчейна Bitcoin Core составляет чуть менее 350 гигабайт, причем блокчейн растет существенно быстрее, чем UTXO.
Статья ECMH предлагает вам хэш-функцию, обладающую свойствами мультисетов. По сути, это хэш-функция, которую можно обновлять при добавлении или удалении элементов в вашей коллекции. Вы не сохраняете сам набор или мультисет, а лишь хэш, и можете добавлять или удалять элементы. Это свойство, подобное множеству, означает, что вы можете выполнять сложения или удаления в любом порядке и всё равно получать один и тот же хэш. С помощью ECMH можно получить обязательство UTXO, которое позволяет сообществу обходиться без полного блокчейна. Большинство участников сообщества не обязаны работать с полным блокчейном, а могут обходиться только UTXO. Чтобы повторить: размер UTXO сети Bitcoin Core составляет пять гигабайт, а размер блокчейна — 350 гигабайт, так что вы фактически выигрываете два порядка величины. Это очень значительно. По сути, с ECMH вы выигрываете два порядка величины в хранении постоянных данных, что является огромным преимуществом.
Вторая статья — Graphene, новый протокол распространения блоков с использованием согласования множеств. Graphene позволяет практически выиграть два порядка величины в пиковых требованиях к пропускной способности. В этой упрощённой модели Bitcoin, которую я только что описал, у вас постоянно есть майнеры и транзакции, транслируемые по принципу peer-to-peer для всей сети. Пропускная способность, пожалуй, является одной из наиболее решённых проблем Bitcoin, но, тем не менее, возникает проблема с пропускной способностью в момент нахождения блока. Чтобы майнер мог заявить о нахождении блока, ему необходимо распространить coinbase, в котором он говорит: «Смотрите, у меня есть coinbase, который соответствует цели сложности». Затем все остальные майнеры должны загрузить весь блок, и если это делается наивно, им придётся проверить, что блок действительно валиден, а не просто то, что coinbase соответствует цели сложности.
Каждый раз, когда находится блок, возникает пиковая нагрузка, так как вы хотите, чтобы время, затрачиваемое на передачу полного блока при наивном подходе, было значительно меньше 10-минутного интервала. В Bitcoin сложность настроена так, что среднее время между двумя последовательными блоками составляет примерно 10 минут. Таким образом, вы хотите, чтобы передача блока занимала лишь малую часть этого времени, скажем, менее 30 секунд, если хотите сохранить стабильность сети. Однако это означает, что блок должен передаваться в течение 30 секунд, что накладывает ограничение на пиковую пропускную способность. Скорость передачи блока будет ограничена вашей пропускной способностью.
Идея заключается в том, что с помощью Graphene, технологии сжатия, вам не придётся передавать весь блок, поскольку большая его часть уже была транслирована по сети. Единственное, что нужно передать — это набор для согласования, который информирует ваших пиров (других майнеров) о том, какие транзакции были включены, а какие — нет, и делает это абсолютно надёжно. Если сделать так, можно снова сократить пиковую пропускную способность на два порядка величины, что весьма значимо.
Это вызывает огромный интерес, например, Graphene мог бы работать в сетях Bitcoin Cash или в новейших сетях eCash из-за чисто технических обстоятельств. Он не сработал бы в сети Bitcoin Core. Это было одним из тех аспектов, которые Сатоши Накамото не предусматривал.
Последнее требование, которое я упоминал в своём списке, заключается в том, что поддержка программного обеспечения требует наличия социального контракта, чтобы существовали команды, способные заниматься обслуживанием и интегрировать новые открытия в ваш блокчейн. В противном случае вы останетесь с тем уровнем производительности и стабильности, который был характерен десятилетие назад или на момент создания блокчейна.
Теперь перед нами стоит другая проблема: ускорение блокчейна. Классическая сеть Bitcoin имеет среднее время между блоками в 10 минут, и если вы хотите иметь полную уверенность в состоянии консенсуса, вам нужно дождаться нескольких блоков. Как правило, люди рассчитывают, что для абсолютной уверенности необходимо дождаться шести подтверждений, что даёт интервал в один час. Идея заключалась в том, чтобы сделать интервал между блоками короче. Однако проблема в том, что чем меньше время, тем меньше должны быть блоки, что подрывает масштабируемость. Редкие блоки означают, что они могут быть очень большими, как бы это ни было хорошо, поскольку это помогает сети справляться с огромным количеством транзакций.
Учитывая задержки в глобальной сети, этот 10-минутный интервал не является оптимальным, но находится в пределах допустимого для эффективной работы распределённого консенсуса с очень большими блоками, которые могут достигать одного терабайта по размеру. Это звучит колоссально, но если смотреть на применение в масштабах человечества, именно этого и требует задача. Вам нужно, чтобы блоки были существенно разнесены по времени для сохранения масштабируемости. Однако тогда возникает проблема медленной работы сети. Один час для подтверждения транзакции может быть приемлем для электронной коммерции, где не требуется мгновенное действие после оплаты, поскольку доставка и так состоится не раньше завтрашнего дня. Но если требуется оперативное реагирование на складе или в точке продаж, это слишком медленно. Это как если бы оплата кредитной картой занимала целый час для подтверждения — очень медленно.
Наша цель — добиться времени подтверждения порядка трёх секунд или меньше. Это потому, что с точки зрения человеческого восприятия, три секунды на подтверждение воспринимаются как достаточно быстрое время. Представьте себе оплату кредитной картой; если в процессе платежа вы считаете «раз-два-три», это воспринимается как быстрое. Если можно обеспечить полную безопасность в этот промежуток времени, вы получите отличный пользовательский опыт для большинства случаев. Хотя этого всё еще недостаточно для связи между машинами с минимальной задержкой, для большинства случаев, связанных с участием человека, это вполне приемлемо.
На протяжении почти десятилетия предлагались многочисленные решения для устранения этой задержки. Подавляющее большинство из них было не очень хорошими. У всех были различные ограничения, которые подрывали Bitcoin или его масштабируемость, или это были наивные решения, появившиеся вскоре после публикации Bitcoin. Большинство таких решений основывалось на выборе лидера, который действовал бы как временный централизованный орган на определённый срок, предоставляя услуги с низкой задержкой. Однако проблема с выбором лидера заключается в том, что при переходе от одного лидера к другому процесс может быть крайне запутанным, и качество обслуживания может варьироваться — большую часть времени задержка составит несколько секунд, а иногда целый час. Это воспринимается всеми как простой простой простой простой простой простой простой простой простой простой простой простой простой простой простой простой простой downtime сети.
Понадобилось десятилетие, чтобы была опубликована, на мой взгляд, достойная работа. Это решение — блестящая работа анонимной команды под названием Team Rocket, опубликованная в мае 2018 года: Snowflake to Avalanche, еще одно семейство протоколов метастабильного консенсуса для криптовалют. В этой статье представлена серия из трех алгоритмов: Snowflake, Snowball и Avalanche. Каждый алгоритм построен на основе предыдущего, и, кстати, настоящая магия заключается в алгоритме Snowball, который как раз и не упоминается в названии статьи.
В сущности, то, что они разработали, — это метастабильность, и это очень интересно. Помните, когда у вас есть противоречивые транзакции, не имеет значения, какая из них выбрана, поскольку улучшение задержки заключается в предотвращении двойного расходования или фактическом сокращении временного интервала, в течение которого может возникнуть неоднозначность по поводу двойного расходования. Идея создания чего-то метастабильного заключается в том, чтобы иметь протокол, в котором участники постоянно общаются друг с другом. Цель в том, что если существуют две противоречивые транзакции, сеть достигнет метастабильного равновесия. Сеть быстро сойдется к одной интерпретации истины; не имеет значения, какой именно, главное, чтобы это была одна. Таким образом, если есть противоречивые объекты, сеть обсудит и разрешит конфликт.
Snowflake предоставляет процесс медленного слияния, в то время как Snowball, в данной статье, предлагает трюк, позволяющий экспоненциально ускорить процесс, что приводит к гораздо более быстрой сходимости. Avalanche вносит некоторые свойства графа, связанные с графом транзакций. Однако, по моему личному мнению, вклад Avalanche значительно слабее; на самом деле именно Snowball творит чудеса. Вы можете захотеть реализовать Avalanche, но один лишь Snowball даст вам примерно 99% необходимой метастабильности.
У этого подхода есть один недостаток. При использовании доказательства выполнения работы Сатоши Накамото и блоков любой наблюдатель может вмешаться и засвидетельствовать произошедшее, воспроизвести весь процесс и всё проверить. Безопасность не зависит от того, находится ли наблюдатель онлайн. Наблюдатель может быть как онлайн, так и офлайн, и это не имеет значения. Это отличная модель безопасности, которая не зависит от постоянного подключения к сети.
С другой стороны, Avalanche требует, чтобы наблюдатель постоянно следил за сетевыми чатами для обеспечения безопасности. Позднему наблюдателю невозможно присоединиться и переоценить безопасность прошлых транзакций. Однако нас это не особенно волнует, так как если вы находитесь в сети в реальном времени, вы оцениваете безопасность происходящих транзакций. Для того, что произошло в прошлом, когда вас не было, доказательство выполнения работы и блоки по-прежнему предоставляют способ валидации транзакций.
Avalanche не против Bitcoin; он дополняет его. Один из слабых аспектов решения «Snowflake к Avalanche» заключается в том, что оно не предоставляет чистого решения проблемы эмиссии монет. Чтобы получить лучшее из обоих миров, было бы идеально сохранить дизайн, напоминающий Bitcoin, с доказательством выполнения работы и большими блоками, дополнив его безопасностью с низкой задержкой.
Для того чтобы избежать определённых видов атак Sybil, которые могут запутать Avalanche, можно использовать доказательство доли (proof of stake). Это вводит уровни экономической взаимосвязанности, что является весьма типичным для мышления Bitcoin. Чтобы достичь желаемой безопасности, следует создать сеть экономических взаимосвязей, гарантирующую, что все остаются честными. Существуют способы инженерно решать возникающие проблемы для достижения меньшей задержки.
Теперь, продолжая тему выразительности, мы ищем нечто большее, чем просто финансовые транзакции, поскольку речь идёт о цепочке поставок и использовании блокчейна для этих целей. Финансовые транзакции необходимы на заднем плане, но мы хотим иметь возможность делать больше. Вопрос в том, как включить эту дополнительную логику?
В кругах криптовалют многие криптовалюты ввели понятие смарт-контрактов. Смарт-контракт по своей сути представляет собой программу, которую майнеры запускают непосредственно на блокчейне. Майнеры проверяют валидность транзакций, но если вы можете включить язык программирования или ассемблерный код в состав вашей транзакции, майнеры смогут запускать программы и проверять, что они удовлетворяют определённым свойствам. Именно это обычно реализуется на Ethereum, и это называется смарт-контрактом. Существует девиз «код есть закон», что означает, что мы доверяем выполнению программы, поскольку её корректность подтверждена самими майнерами.
Однако я считаю этот подход глубоко ошибочным по двум совершенно разным направлениям. Первая проблема заключается в том, что вы значительно усугубляете проблему масштабируемости. Масштабирование блокчейна уже само по себе очень сложно, так как вам приходится направлять все эти транзакции майнерам. Майнерам не нужно делать много с этими транзакциями; им достаточно просто проверить подпись. Майнер потенциально может обработать огромное количество транзакций, поскольку количество проверок для каждой транзакции минимально. А теперь представьте, если майнеру придётся не только проверять транзакции, но и запускать произвольные программы от всех компаний. Это становится чрезвычайно сложно, и именно это происходит уже давно в сети Ethereum и других криптовалютах, ориентированных на сложные контракты.
Хотя более поздние криптовалюты, такие как Ethereum, извлекли пользу из лучшей инженерии, они всё равно сталкиваются с гораздо более сложной проблемой масштабируемости. Как только они достигают определённого уровня известности и активности в сети, все они сталкиваются с масштабными проблемами. Всё сводится к тому, что вам необходимо выполнять все эти программы.
Вторая основная проблема смарт-контрактов заключается в том, что они по сути являются неизменяемыми программами. Когда вы размещаете программы в блокчейне, происходит следующее: вы доверяете этим программам, поскольку они работают автономно. Под «автономно» подразумевается, что майнеры, имеющие финансовые стимулы, запускают эти программы для сообщества, и весь процесс является прозрачным и проверяемым. Однако главная проблема неизменяемых программ заключается в том, что если возникает ошибка, её невозможно исправить.
История смарт-контрактов представляет собой бесконечную серию нарушений, приводящих к огромным потерям для тех, кто ими управляет. Даже Ethereum пришлось пережить масштабный форк, приведший к появлению Ethereum и Ethereum Classic, потому что взлом смарт-контракта оказался настолько серьёзным, что операторы решили, что лучше откатить проблему, чем подрывать неизменяемость, которую должен предоставлять блокчейн. Обходного пути нет, и если вы реализуете что-то нетривиальное в смарт-контракте, вы подвергаетесь риску взлома.
В 2018 году я опубликовал другой подход под названием Tokida, который демонстрирует, как можно запускать произвольные программы параллельно с блокчейном. В Tokida программа является открытым программным обеспечением и работает по модели «доверяй, но проверяй». Все заинтересованные в результате контракта люди могут проверить его, если захотят, и с точки зрения производительности это более гибко, так как остальному сообществу не обязательно запускать вашу программу. Если вы хотите исправить своё программное обеспечение, вы всё равно можете сделать это в любое время, при этом остальное сообщество будет в курсе ваших изменений.
Если происходит нарушение, это не является критической проблемой, потому что вы можете его исправить, а сообщество сможет оценить, что патч был выполнен добросовестно. Суть в том, что для модели безопасности в целях цепочки поставок вам в основном достаточно принципа «доверяй, но проверяй». Вам просто нужно обеспечить, чтобы если кто-то обманывал, все остальные это заметили, и этого будет достаточно. Для самой валюты вы хотите предотвратить мошенничество с самого начала. Но для смарт-контрактов вам не требуется такая же степень безопасности, как для валюты. Возможность обнаружить мошенничество после его совершения является достаточной. Если кто-то начнёт обманывать в вашем бизнесе, вы просто перестанете работать с этим партнером, и на этом история закончится. Вам не нужно иметь что-то, что предотвращает мошенничество с самого начала. Доверие является основополагающим в бизнесе, и если вы работаете с партнером, у вас уже есть определённая степень доверия к нему.
Теперь мы переходим ко второй части лекции, которая посвящена вариантам использования. Я считаю, что основное применение блокчейнов всё ещё заключается в платежах. Оплата поставщикам, особенно за границей, может оказаться настоящей проблемой. Расчеты по банковскому переводу могут быть медленными, в некоторых случаях занимая до двух недель. Платежные процессы в банковской системе далеки от стандартов XXI века, что может привести к таким ошибкам, как двойная оплата крупных счетов.
Я считаю, что существует множество вариантов использования платежей, особенно когда речь идет о реализации сложных механизмов, таких как задержанные платежи, условные платежи или штрафы за продукцию, которая не соответствует требованиям качества или срокам. С программируемыми деньгами вы можете реализовать все эти схемы способами, которые раньше казались научной фантастикой.
Однако у этого варианта использования есть два оговорки. Во-первых, криптовалюты всё ещё невероятно волатильны, что означает, что их стоимость может драматически колебаться с течением времени. Эта волатильность остаётся постоянной проблемой, но за последнее десятилетие она уменьшалась. Волатильность была ещё выше десять лет назад, и с тех пор постепенно снижалась, однако всё ещё находится вне зоны комфорта большинства крупных компаний. Наблюдение ежедневных колебаний величиной 10% для этих криптовалют по-прежнему является нормой. Десять лет назад это было около 50%. Вторая проблема для платежей заключается в существовании тысяч криптовалют, что создаёт проблему выбора одной и согласования с вашим партнером. Однако существуют роботизированные системы обмена валют, способные конвертировать любую криптовалюту в другую с очень низкими комиссиями, например, 0.1%, что помогает смягчить эту проблему.
Еще один вариант использования — пассивная прослеживаемость. Прослеживаемость имеет решающее значение во многих отраслях, таких как аэрокосмическая, фармацевтическая и автомобильная, поскольку это может быть вопросом жизни и смерти. Например, поддельные автозапчасти могут привести к смертельным авариям, если они выйдут из строя под нагрузкой. Невзаимозаменяемые токены (NFT) можно использовать для улучшения прослеживаемости до нового уровня. NFT — это как переносимый серийный номер. При безопасных транзакциях только владелец этого номера, с помощью своих приватных ключей, может передать номер другому участнику. Использование NFT может предотвратить подделки, даже со стороны первоначальных эмитентов.
Чтобы реализовать прослеживаемость на основе NFT, вам нужны только QR-коды и смартфон, что делает это решение в основном программным. Технология блокчейн предлагает способ поддержания прозрачной прослеживаемости от производства до потребителя. Однако существуют проблемы. Во-первых, все должны договориться об одном формате и одном блокчейне. Блокчейн передает бинарные данные, поэтому если вы хотите использовать его для целей прослеживаемости, формат должен быть согласован. Это становится сложной задачей, поскольку многие отрасли и компании имеют свои уникальные форматы и стандарты.
То, что люди не всегда осознают, — это насколько гибкими могут быть цепочки поставок в реальном мире. Например, даже в аэрокосмической отрасли, где прослеживаемость осуществляется на отлично, вы заметите, что на этапе А документ, сопровождающий деталь, представляет собой PDF. На следующем этапе это тот же PDF, но отсканированный, а затем — возможно, тот же скан с аннотациями и повторным сканированием. В сущности, предполагается, что человек сможет вмешаться и расшифровать документ. Однако, если вы хотите работать на блокчейне, вы не можете допустить такой свободный процесс. Вам необходимо полностью специфицировать бинарный формат всех данных, которые вы хотите разместить в блокчейне; в противном случае вы теряете программный аспект, позволяющий работать с программными инструментами.
Объединить все стандарты сложно, и вам придется выбрать один блокчейн, поскольку для работы прослеживаемости необходимо, чтобы все участники, по крайней мере в одном секторе и регионе, использовали один блокчейн. Проблема в том, что при выборе одного блокчейна возникают огромные конфликты интересов. Поскольку блокчейн никогда не может быть полностью отделён от его базовой криптовалюты, если вы инвестируете в криптовалюту, вы оказываетесь в конфликте интересов в том смысле, что у вас появляется личная заинтересованность в том, чтобы компания выбрала блокчейн, связанный с вашей криптовалютой.
Такие конфликты интересов повсеместны и трудны для оценки, поскольку блокчейны, как правило, анонимны. Если вы хотите опробовать ситуацию и получить обратную связь о том, какой блокчейн выбрать, вы должны учитывать потенциальные конфликты интересов, которые могут возникнуть среди ваших сотрудников. Компании, управляющие большими цепочками поставок, обычно имеют множество участников, и эти проблемы усугубляются.
Теперь рассмотрим более враждебный пример. Представьте себе фармацевтические компании, работающие в очень бедных странах, например, в некоторых африканских странах, где они сталкиваются с серьёзными проблемами подделки лекарств. Проблема в том, что в этих бедных странах все посредники до некоторой степени коррумпированы. Коррумпированные посредники могут взять настоящую коробку с реальными товарами, заменить настоящие лекарства на поддельные, а затем продать эту коробку на рынке. Люди, покупающие поддельные лекарства, могут оказаться в критическом состоянии и действительно нуждаться в препарате. Это очень серьёзная проблема в бедных странах, и воспроизведение упаковки для подделки лекарств является тривиальной задачей. Одним из возможных решений является использование блокчейнов и токенов для активной прослеживаемости, что напоминает, как работает налог на добавленную стоимость (НДС) в Европе. НДС трудно обмануть, так как он создает схему социальной инженерии, в которой компании переплетены со своими честными поставщиками.
Идея заключается в том, чтобы взять ту же концепцию и применить её к блокчейну. Например, предположим, что вы — фармацевтическая компания, производящая лекарство. Вы продаете упаковку лекарства посреднику или оптовику по более высокой цене, скажем, за $15 вместо фактической цены в $10. Происходит передача права собственности на токен, и оптовик может выкупить $1 от стоимости, снижая свою цену до $14. Затем оптовик продает упаковку лекарства дистрибьютору, и снова происходит передача права собственности на токен. После того как дистрибьютор предъявляет токен, он может выкупить $1 от стоимости, которую только что приобрёл, и так далее, до конечного потребителя.
Когда конечный потребитель получает коробку с лекарствами, он платит $11, и, отсканировав QR-код со смартфоном, может выкупить $1, который возвращается ему. Приложение выполняет две функции: во-первых, оно позволяет конечному потребителю вернуть лишний доллар, а во-вторых, проверяет всю цепочку прослеживаемости и отображает её клиенту. Конечный потребитель получает информацию о том, что он только что вернул лишний доллар, и серийный номер теперь помечен как использованный.
В конечном итоге конечный потребитель не может передать токен кому-либо еще, а лицо, которое только что получило коробку, может увидеть в своем мобильном приложении, что вся цепочка прослеживаемости проверена, и это настоящая коробка. Идея заключается в том, что с этими финансовыми стимулами становится очень трудно обманывать, поскольку распространение лекарств без соответствующего серийного номера становится невозможным. В конце цепочки люди могут быть бедными, но они всё равно хотят удостовериться, что могут проверить подлинность лекарства, особенно если оно предназначено для лечения угрозы жизни. Это то, что я называю активной прослеживаемостью, при которой у вас есть невзаимозаменяемый токен (NFT) с наложенным финансовым механизмом, дающим стимулы всем участникам для выполнения определённых действий.
В случае с лекарствами каждый конечный потребитель имеет финансовый стимул для регистрации серийного номера. Без этого стимула люди могут не отмечать коробку как использованную, и поддельные лекарства могут вновь появиться в сети. Отмечая серийный номер как использованный, он не может быть использован повторно никем. Однако этот подход требует согласованности и участия всех участников, и все посредники должны будут играть в эту финансовую игру. Хотя это и действительный вариант использования, он требует значительной координации между многими сторонами.
Ещё одно потенциальное применение — это стимулирование переработки посредством систем возврата депозитов. Эти системы существуют уже давно и более или менее распространены в зависимости от страны. Исходный производитель обычно является участником сети, наилучшим образом способным повторно использовать, перерабатывать или ремонтировать оборудование, продвигаемое по цепочке поставок. Однако внедрение этих систем сопряжено с трением, и задача заключается в том, чтобы ещё больше снизить это трение. Блокчейн и криптовалюты предлагают способ снизить уровень трения для микроплатежей и потенциально уменьшить необходимую инфраструктуру для предотвращения мошенничества.
Например, если бы вы возвращали 20 центов каждый раз, когда люди приносят обратно стеклянную бутылку, противники могли бы использовать систему в своих целях, производя поддельные бутылки и извлекая выгоду по марже от продажи восстановленных частей. Блокчейны могут обеспечить простой способ смягчения таких махинаций, но по сути это является лишь постепенным улучшением. Я не утверждаю, что системы возврата депозитов новы; они существуют уже давно. Речь идет лишь о том, чтобы немного снизить трение, чтобы появилось больше вариантов использования.
Ещё один интересный вариант использования — это обеспечение безопасности, поскольку цепочки поставок уязвимы к кибератакам. Цепочки поставок распределены географически по замыслу, что означает, что IT-системы и устройства разбросаны повсеместно. По своей природе площадь для атак велика, и сделать иначе сложно. Цепочка поставок должна быть связана с клиентами, поставщиками, партнерами и сторонними логистическими провайдерами, что создаёт огромную поверхность для атак. Хотя системная интеграция, например, EDI, может быть полезной при заказе у поставщиков и улучшении времени отклика, более тесная интеграция также порождает дополнительные проблемы с безопасностью.
Примером этой уязвимости является инцидент с Colonial Pipeline, когда, казалось бы, незначительная служба, связанная с выставлением счетов, была взломана, что привело к тому, что весь трубопровод не работал в течение недели и поставило под угрозу критическую инфраструктуру в США. Как может помочь блокчейн в этом контексте? Один из подходов — разместить небольшое количество биткойнов, примерно на 100 долларов, в каждой системе и устройстве, даже в IoT-устройствах. Публикуя информацию о том, что все системы и устройства имеют этот запас, вы создаёте стимул для хакеров попытаться проникнуть в ваши системы и украсть деньги.
Однако это не кража; это рассматривается как вознаграждение для хакеров за проникновение в вашу систему. Если хакеру удастся, скажем, проникнуть в IoT-устройство, он сможет присвоить сумму, находящуюся внутри. Кроме того, если он обратится к вам и расскажет, как это удалось и как устранить проблему, вы можете выплатить вторую часть вознаграждения, стоимостью около 300 долларов в биткойнах. Создавая стимул, вы финансируете работу этичных хакеров, которые тестируют вашу безопасность. Если только недобросовестные акторы будут иметь стимул атаковать ваши системы, вы обнаружите взлом с их участием, что может быть весьма опасно, как это произошло с Colonial Pipeline. Однако если дать стимул честным, этичным хакерам проникнуть в вашу систему, то, скорее всего, те, кто получит доступ, окажутся честными людьми, которые затем расскажут вам, как исправить систему, чтобы предотвратить проблемы. Интересно то, что эти запасы являются публичными, поэтому, если вы внедрите их в свою сеть, вы сможете прозрачно отслеживать, произошёл ли взлом. Вы также можете вести внешний мониторинг всех устройств, даже если IoT-устройство не подключено к интернету. Если вы увидите, что монеты, ранее находившиеся в устройстве, начали перемещаться, это означает, что устройство каким-то образом было взломано, и это крайне важно знать.
Помните, что при громких взломах, о которых сообщается в прессе, обычно злоумышленники находятся в системах месяцами, прежде чем окончательно решают требовать выкуп. Используя данную систему безопасности на базе блокчейна, вы создаёте механизм раннего предупреждения. Даже если неэтичные хакеры проникнут в систему, они могут просто забрать деньги и скрыться, не прибегая к запутанному процессу выкупа.
Это иной способ думать о безопасности и, вероятно, не тот вариант использования блокчейна, о котором вы думали в контексте цепочки поставок. Но, как видите, интересные варианты использования в цепочке поставок всегда включают какой-либо денежный стимул, что очень напоминает особенности мышления Биткойна в контексте работы с блокчейном.
Как я уже упоминал, разработка блокчейнов чрезвычайно сложна по сравнению с практически любым альтернативным решением. Можно ожидать, что создать блокчейн-решение будет как минимум в два порядка сложнее. Поэтому, когда вы думаете, что можете решить проблему, затратив одну неделю работы инженера-программиста, умножьте это время на 100 — и это даст вам представление о том, сколько усилий потребуется для реализации того же с помощью блокчейна. Есть ситуации, когда это имеет смысл; не то чтобы высокая стоимость делала его неприбыльным, но он принципиально сложен, и это нужно учитывать. Затраты также значительно выше в плане вычислительных ресурсов. Обычно масштабирование блокчейна очень сложно, и по сравнению с не-блокчейн-решением вы в итоге тратите в 100 раз больше вычислительных ресурсов на любые операции с блокчейном. В некоторых случаях вам это может быть безразлично, но во многих других увеличение затрат на вычислительное оборудование в 100 раз имеет существенное значение.
Вопрос в том, как попробовать альтернативы? Почти в каждой ситуации, где используется блокчейн, существует не-блокчейн альтернатива. Обычно это достигается путём смягчения требований. С точки зрения добавленной стоимости, если вы готовы отказаться от свойства невозможности отрицания, о котором я говорил в начале этой лекции, вы можете создать некий консорциум. Этот консорциум будет использовать контрольную базу данных, публиковать журналы, которые могут проверяться любыми третьими сторонами внутри консорциума или, возможно, компаниями и организациями, находящимися за его пределами. Одним из ключевых моментов будет чёткое определение бинарных форматов, чтобы участники могли работать программно. При таком подходе вы получите большую часть той ценности, которую в противном случае обеспечивал бы блокчейн.
Отличным примером для цепочки поставок является GS1 для штрих-кодов. GS1 — это организация, выделяющая штрих-коды, и она занимается этим уже десятилетиями. Эта организация была создана как отдельное юридическое лицо, поэтому в своё время управление штрих-кодами не осуществлялось непосредственно IBM. GS1 обеспечивает добавленную стоимость, сопоставимую с блокчейном, без реального использования блокчейна. Однако этот подход требует наличия центрального органа или консорциума, которому можно доверять. Во многих отраслях с высокой концентрацией участников, таких как фармацевтика, создание консорциума, где уже есть значительная доля рынка, может оказаться не слишком сложным.
В заключение, консенсус Сатоши Накамото является поразительным открытием. Ещё в 2008 году, если бы вы спросили экспертов по распределённым системам, возможно ли решить проблему византийского консенсуса без привлечения центрального органа, большинство ответило бы отрицательно, так как это казалось невозможным. Идея была настолько далека от того, что люди считали возможным, что они даже не искали решения в этом направлении. В этом смысле это было поразительным открытием. Как я продемонстрировал на примере мини-Биткойна, это очень простая идея, имеющая применения не только в области денег, несмотря на то, что деньги являются основным вариантом использования.
Нужно помнить, что для каждого варианта использования блокчейна существует, как правило, не-блокчейн альтернатива, гораздо проще в эксплуатации. Нам действительно нужно оценить, стоят ли дополнительные накладные расходы, связанные с блокчейном, всех тех хлопот, которые он приносит. В заключение никогда не забывайте, что блокчейн принципиально связан со своей базовой валютой, и это порождает первопричину всех конфликтов интересов.
В одной из моих предыдущих лекций об антагонистических рыночных исследованиях я изложил свои взгляды на то, как выбирать корпоративных поставщиков, и обсудил проблемы, связанные с отзывами. Многие интуитивные подходы к решению этих проблем подрываются из-за конфликта интересов. С блокчейнами и криптовалютами проблема усугубляется в тысячу раз. У каждого есть огромные стимулы, если он владеет Биткойном, Bitcoin Cash, eCash или любой другой криптовалютой. Их инвестиции создают значительный предвзятый настрой, и если ваша компания выберет направление, благоприятное для конкретного блокчейна, это может также оказаться выгодным для их инвестиций.
У меня нет хорошего решения этой проблемы, но я советую быть осведомленным и подготовленным. Большинство информации, найденной в интернете о криптовалютах, ненадежны, так как многие люди имеют конфликт интересов, продвигая предпочитаемую валюту. Никому не доверяйте, кроме коллег, которым вы бы доверили свою жизнь. Полагайтесь на собственное суждение или на суждения коллег, которые понимают, что происходит. Конфликты интересов в блокчейнах приводят к неожиданному поведению, особенно в цепочках поставок, где обычно присутствуют долгосрочные отношения и высокий уровень доверия.
Организации, управляющие большими цепочками поставок, могут быть не готовы к уровню недоверия, наблюдаемому в криптовалютном пространстве. Это завершает лекцию. Давайте взглянем на вопросы.
Question: Блокчейн и Биткойн — это не одно и то же; один является уникальным, а другой — базовой технологией.
Да, семантика и терминология важны. Я знал во время подготовки этой лекции, что будут люди, указывающие на то, что они не совсем одно и то же. Однако, если вы хотите рассмотреть чистый блокчейн в техническом смысле, то репозиторий Git, например GitHub, является блокчейном. Репозитории Git существуют около 15 лет, и они не сводили мир с ума. Из этих репозиториев не расходуются миллиарды евро и долларов.
Суть в том, что блокчейн работает только в зависимости от той добавленной стоимости, которую он создаёт. Что отличает Биткойн от Git, несмотря на то, что оба являются блокчейнами, так это то, что в Биткойне встроены финансовые стимулы, которые активируют определённые аспекты технологии. Вот в чём подвох. Если убрать все денежные аспекты и стимулы, заложенные в систему, останется просто техническая структура данных, не представляющая никакого интереса. Да, это красивая структура данных — Git является красивой структурой данных — но она не сводила бы с ума весь рынок, и, безусловно, люди не стали бы говорить: “О, этот репозиторий Git стоит миллиардов.” Есть нечто иное. Отбросив придирчивость к терминологии, я считаю, что основная причина, по которой многие компании перешли на терминологию блокчейна, заключалась в попытке внести некоторое различие в дискурс по сравнению с криптовалютами, которые воспринимались как настоящий дикий запад.
Question: Блокчейн — это технология, которая обеспечивает децентрализованный консенсус, но с определённой ценой — задержками, проблемами масштабируемости и экологической нагрузкой.
Абсолютно. Кстати, я также могу затронуть вопрос экологической нагрузки. Дело в том, что когда существует процесс эмиссии денег, независимо от того, как они эмитируются — центральным банком для евро, Федом для доллара или иным способом — если экономические субъекты могут инвестировать для получения выгоды от этой эмиссии, они будут инвестировать до предельной стоимости. Так что, если центральный банк напечатает 100, и я смогу инвестировать 90, чтобы получить те 100, я это сделаю.
Как бы ни был устроен процесс эмиссии, люди будут тратить до предельной стоимости, чтобы получить соответствующую полезность. Оказалось, что поскольку Bitcoin Core растёт в цене, люди готовы платить большие суммы за электроэнергию, чтобы получить эти вновь созданные биткойны. Однако процесс экспоненциально замедляется, что означает, что через несколько десятилетий количество вновь создаваемых биткойнов сократится почти до нуля, и, следовательно, сумма, которую люди будут готовы платить за подтверждение работы, практически исчезнет. Это временная проблема, и сейчас в основном используется неиспользуемая резервная мощность электроэнергии.
Я согласен с вашим выводом; он обеспечивает децентрализованный консенсус с точки зрения византийского консенсуса, и да, с этим связаны огромные накладные расходы. Абсолютно, это правильный вывод.
Question: Зачем использовать его в цепочке поставок? Какую проблему решает децентрализованная парадигма? Какие проблемы она приносит?
Я привёл различные примеры использования в своей лекции. Децентрализация избавляет вас от необходимости создания консорциума. Проблема в том, что если у вас есть центральный орган, которому вы доверяете, и этот орган честен, то отлично — вам не нужен блокчейн. Загвоздка в том, что делать, когда такого органа нет?
Даже в областях, где существовали централизованные власти, например, при использовании банковских переводов для платежей, контроль осуществляют центральные органы – существуют «привратники», которыми являются банки, а затем центральные банки. Я бы сказал, что нам, можно сказать, не не хватает центральных властей shortage, но тем не менее, в 2021 году расчёты с моими зарубежными клиентами по платежам всё ещё занимали две недели. Это 21-й век; я могу отправить электронное письмо, и оно будет получено этими клиентами за считанные секунды, но отправка банковского перевода занимает недели. Поэтому, очевидно, существуют проблемы, которые иногда крайне трудно решить, потому что, возможно, дело не в отсутствии центральных властей, а в их избытке, или же проблема настолько сложна, что собрать людей для выработки решения не удаётся.
Я описал некоторые примеры использования, например, активную прослеживаемость, когда вы работаете в бедной стране, где все посредники коррумпированы. Это ещё одна проблема, при которой нельзя никому доверять. При эпидемической коррупции решить эти проблемы чрезвычайно сложно. Это ситуация, в которой децентрализованный блокчейн может предоставить способ создать систему, которая будет обеспечивать честность участников. Вот в чём суть: от участников не ожидается изначальная честность; их программно обеспечивают, чтобы они оставались честными в процессе управления цепочкой поставок. Если же все и так очень честны, а центральные власти функционируют, то добавленная ценность оказывается минимальной.
Question: How do you deal with the existence of ASICs (Application-Specific Integrated Circuits) hardware specialized in mining and farms to ensure no one can easily have 51% of the power of the networks?
Исторически ASIC были положительной силой для безопасности сети Bitcoin Core. Почему так происходит? Потому что существует ещё одна проблема в современном ландшафте: ботнеты. Ботнеты — это огромные флоты скомпрометированных компьютеров, которыми управляют преступные организации и которые буквально берут под контроль миллионы обычных устройств, таких как компьютеры, принтеры и камеры наблюдения. Эти организации не хотят лишать вас возможности использовать ваше устройство, так как это повлечёт за собой ремонт и удаление вредоносного ПО.
С точки зрения безопасности, современная ситуация такова, что у преступных организаций в распоряжении буквально десятки миллионов компьютеров бесплатно. Эти организации, управляющие ботнетами, если вы посмотрите обновления безопасности от Microsoft, то увидите, что пару раз в год Microsoft уничтожала абсолютно огромные ботнеты. Они сообщали, например: “Мы выпустили это обновление Windows, и, кстати, мы только что уничтожили этот ботнет из 50 миллионов машин.” Это впечатляет. Таким образом, ASIC означают, что нет смысла играть с обычным оборудованием, как в ваших стандартных компьютерах. Следовательно, преступники, управляющие ботнетами, не могут использовать их для майнинга криптовалют, что устраняет один из способов монетизации ботнетов. Это вынуждает майнеров оставаться приверженными валюте.
Понимаете, ASIC не являются проблемой; наоборот, это именно то решение, которое гарантирует, что эта дополнительная вычислительная мощность не приведёт к хаосу или не позволит использовать возможности, доступные через ботнеты. Ботнеты уже представляют собой огромную проблему для всех, и мы не хотим давать им ещё больше силы.
Question: What are your thoughts on the Telegram Open Network that couldn’t see the light due to U.S courts? What are your thoughts in general on cryptocurrencies issued by messengers? Does it bring anything new?
Ну, я считаю, что ситуация вполне предсказуема для Telegram, а также для Facebook и любой другой компании, которая хочет работать как публичная компания. Существуют общие регуляции, согласно которым, если вы компания, то должны соблюдаться требования KYC (Know Your Customer), и я не собираюсь вдаваться в подробности. По сути, если вы большая компания, можно ожидать, что во многих юрисдикциях будут существовать требования KYC. Я не намерен обсуждать, адекватны ли эти регуляции или нет; я лишь говорю, что требования KYC широко распространены во многих странах.
Если вы вернётесь к тому, что делает блокчейн блокчейном, как я описывал в списке требований, пункт номер два заключается в том, что участники анонимны. Таким образом, в дело вступают требования KYC. Если вы хотите управлять блокчейном, вы должны быть готовы сохранить некую псевдоанонимность всех, кто участвует в этой сети, что означает, что с точки зрения требований KYC вы совершенно не подходите.
Я не до конца понял, что же думали эти компании, но не могу представить компанию, которая одновременно стремится быть публичной и подчиняться таким органам, как SEC в США или AMF во Франции, и при этом участвовать в схеме, которая явно противоречит тем требованиям KYC, которые широко применяются к крупным компаниям. По моему мнению, они, вероятно, испытывали терпимость регуляторов, чтобы увидеть, ослабят ли они правила только для них, только потому что они большие. Возможно, всё прошло не так, как они ожидали, и поэтому они отказываются от этого. В сущности, кроме этого, я считаю, что, например, если Telegram или Facebook согласятся просто продвигать криптовалюту, а не управлять ею, они действительно смогут придать ей огромный импульс. Однако проблема в том, что, поскольку они будут лишь продвигать, а не управлять, они мало чем выигрывают для себя, если только они не создадут конфликт интересов, при котором они будут выигрывать от роста этой валюты. Кстати, Илон Маск, я смотрю на тебя, когда ты начинаешь твитить о Биткоине и о том, что твоя компания имеет позицию по этому поводу. Это буквально игра, которую можно сыграть: сначала вы приобретаете долю криптовалюты, а затем буквально поднимаете её, делая очень заметные заявления. Пусть стоимость растёт, а затем, когда она станет выше, продаёте её. Кстати, этот процесс называется pump and dump. Вероятно, Telegram и Facebook поняли, что единственный способ получить прибыль, просто продвигая валюту, а не управляя ею, — это pump and dump, и они не хотели, чтобы их репутация пострадала из-за подобных махинаций.
Question: Seven years ago, I saw many startups bringing blockchain technology to supply chain-related fields. None of them succeeded, at least at scale. Do you know any that succeeded and proved to work at scale?
Хороший вопрос. Во-первых, я не считаю, что где-либо на планете существует блокчейн, который доказуемо масштабируется и действительно работает в больших масштабах. Если посмотреть на эксперимент Bitcoin Core, то всё идёт не очень хорошо. Сеть полностью перегружена; она перегружена уже четыре года. Это действительно противоположность масштабируемости. Если обратить внимание на Bitcoin Cash, это другой блокчейн. Они достигли некоторого прогресса, но у них так и не нашлось времени; возникли внутренние разногласия, и поэтому они так и не завершили все инженерные работы для его функционирования. Есть ещё одна, как я упоминал, недавно созданная ветка под названием eCash, которая по сути является форком Bitcoin Cash, где снова пытаются реализовать все те функции, которые не были реализованы в оригинальном клиенте Сатоши, поскольку большинство проблем масштабируемости связано с исходным клиентом Сатоши. Есть надежда, что они смогут достичь массовой масштабируемости, но опять же, это скорее теоретическая перспектива. Это не доказано в том смысле, что на сегодняшний день существует что-то, что работает на гипермасштаб, хотя есть основания полагать, что это, в определённой степени, возможно. Кстати, я публиковал работу на эту тему, если вам будет интересно ознакомиться с моей публикацией о блоках размером в терабайт для Биткоина.
Сейчас никто так и не смог добиться масштабируемости подобных систем. Это очень сложно. Масштабирование базового уровня — первая задача, а затем, очевидно, стартапы, желающие применить это в цепочках поставок, стремятся создать нечто ещё более продвинутое. Им необходимо иметь базовый уровень, который масштабируется, а затем они хотят работать с цепочками поставок в масштабах. Я считаю, что ни одному из них не удалось добиться успеха, потому что, как я уже описывал, да, есть случаи применения в цепочках поставок, и да, есть возможность для дополнительной ценности, но сначала необходимо решить крайне сложные проблемы масштабируемости и задержек. Возможно, им не удалось добиться успеха, и вы можете заметить, что упоминаемые мной статьи не так уж стары. Я имею в виду, что статьи по Avalanche буквально всего лишь несколько лет давности. Были достигнуты некоторые прорывы, которые всё ещё достаточно недавние, и потребуется ещё много времени. Чтобы масштабироваться, нужно достигать прорывов на уровне теоретической алгоритмики, что крайне затруднительно.
Алгоритмы, которые я описывал, такие как Avalanche, ужасающим образом сложно реализовать корректно. Существует множество деталей, в которых можно ошибиться, и в контексте блокчейна любая ошибка может привести к взлому, атакам и потере денег. Последствия наличия багов и проблем при работе в мире блокчейна крайне серьёзны. Это не то же самое, что обычное корпоративное программное обеспечение, которое, если даёт сбой, можно перезапустить, вручную исправить затронутые данные и продолжить работу. В случае с блокчейнами, как только возникает масштабное повреждение, ущерб может оказаться необратимым, и это очень сложное положение для работы.
Я считаю, что многие стартапы, вступившие в эту сферу, были абсолютно не готовы с точки зрения инженерного мышления, необходимого для преодоления вызовов функционирования в мире блокчейна. Хорошей инженерии недостаточно; для успеха требуется действительно выдающаяся инженерия.
На этом завершается секция вопросов и ответов к этой лекции. Следующая лекция будет посвящена математической оптимизации для цепочек поставок и состоится в среду, 25 августа. Я планирую взять небольшой отпуск. Кстати, в отличие от блокчейна, математическая оптимизация применяется ежедневно во многих цепочках поставок. Применений огромное множество, и случаи использования весьма практичны. Мы не говорим о нишевых случаях; возможности применения колоссальны.
Математическая оптимизация тесно связана со статистическим обучением и принятием наилучших решений в цепочке поставок. До встречи в следующий раз.