Моя склонность — всё подвергать сомнению и блокчейн[1] не оказался исключением. Давайте взглянем на Цикл зрелости технологии (Gartner Hype Cycles). Где по Вашему находится Блокчейн? Естественно каждый для себя определит своё нахождение на том или ином цикле, которое свойственно проекту на каком-то из стадий разработки. Кто-то во всю развивает бизнес приложение и видит будущие горизонты, а кто-то только начинает знакомство. Но если взглянуть шире? Блокчейн неоспоримо засел в мысли и показал большой потенциал по трансформации многих сегментов взаимоотношения людей. Но у меня остаётся доля сомнения в отношении некоторых текущих принципов его работы. В итоге, я вижу эту стадию где-то на уровне пика завышенных ожиданий (Peak of inflated expectations) — общественный ажиотаж с чрезмерным энтузиазмом и нереалистичными ожиданиями. Что означает, впереди ещё ждать такие циклы как: Избавление от иллюзий, Преодоление недостатков, Плато продуктивности.
Поэтому, если Вам интересна критика и предположение иного подхода в определении консенсуса, то добро пожаловать под кат.
Обратимся к Биткоину[2]. Это одноранговая денежная система, в которой электронные транзакции совершаются участниками напрямую, минуя финансовые институты (доверенного лица/посредника). Где защита от двойной траты достигается путём консенсуса в пиринговой сети, основанном на доказательстве проделанной работы (Proof of Work[3]). В качестве стимула для поддержания системы эмиссируется криптовалюта и начисляется совместно с комиссией майнерам, которые данную работу выполняют. Возникает закономерный вопрос, а это не посредники? Да, с них убрали принцип доверия, в следствии чего уходит и ответственность (не кого будет винить), но ведь они и есть третья сторона, которым участники транзакций оплачивают за предоставленную услугу (обеспечение надёжности). Более того, огромная часть вознаграждения сейчас происходит за счёт эмиссии, а это означает, что те кто сейчас приобретает криптовалюту, сами того не подозревая (или подозреваете?), оплачивают за уже совершенные транзакции предшественников. Например, данный вопрос поднимался в 9 пункте от Gartner. В дальнейшем, когда эмиссия прекратится, то получаемая из этого ранее сумма распределится в качестве комиссии, что существенно взвинтит стоимость транзакции. С технической стороны этот вопрос может решиться увеличением размера блока или иными решениями типа SegWit[4] (только, на как долго решится?). Но экономическая сторона всё равно страдает. Надёжность обеспечивается тогда, когда кол-во майнеров огромно, ведь подразумевалось «один процессор — один голос». А в итоге они попадут в конкурентную среду, где единственным средством в перетягивании одеяла будет размер комиссии, в общем кто-то вырастет и останется на плаву, а кто-то уйдёт, либо будет поглощён. И от сюда возникает следствие — себестоимость транзакции. Чем система более децентрализована, тем стоимость транзакций будет выше. Чем она более централизована — тем ниже. Это обычные экономические реалии, подобная мысль уже была, только в отношении энергоэффективности, например здесь.
Следующий момент заключается в том, что хоть это и денежная система, но она замкнута сама в себе, иными словами блокчейн взаимодействует с миром через среду основанной на доверии. Также любой блокчейн зависит от собственной криптовалюты, обеспечивающая стимулирование надежности данной сети и осуществление транзакций. Соответственно, с одной стороны — это единая расчётная единица, что хорошо, с другой стороны — это прямая зависимость для функционирования приложений (уже не связанных с деньгами, но задействовавшие данный блокчейн) от судьбы её криптовалюты и стоимости транзакций. Дополнительно эффект замкнутости порождает вопрос, по какому правилу осуществлять эмиссию? Ведь тут уже, кто на что горазд: кто-то ограничивает, кто-то нет, а кто-то и вовсе применил принцип сжигания, как например в Proof of Burn (доказательство сжигания).
Обратимся к Ethereum[5]. Примечательно, что необходимость в собственной криптовалюте в Ethereum более оправдана, т.к. необходима для осуществления смарт-контрактов и работы приложений. Эмиссия здесь не ограничена, но со временем стремится к нулю. В итоге экономическая сторона в отношении майнеров здесь такая же. Но на сколько данный способ эмиссии обладает гибкостью в отношении экономических процессов? Ведь уровень денежной массы является одним из основных элементов функционирования денежной системы и экономики в целом. С другой стороны, если предположить, что весь мир перешёл на блокчейн, тогда например бесконечная эмиссия, которая будет привязана допустим к интенсивности транзакций, то своим ускорением покажет рост экономики, а при спаде кол-ва транзакций наоборот, спадает соответственно интенсивность эмиссии, то такая модель кажется жизнеспособной.
Вернёмся к блокчейн — это цепочка блоков с записями о транзакциях, формирующихся непрерывно, защищенность обеспечивается криптографией. Каждый блок содержит информацию о предыдущем блоке. Блокчейн представляет собой распределённый реестр данных, полная копия которой или её части одновременно хранится на множестве компьютеров. Формирование новых блоков осуществляется по определённому алгоритму консенсуса, как описывал выше, например, основанной на доказательстве проделанной работы (Proof of Work) или иных. При этом, частым явлением является ветвление цепи, это когда одновременно формируется несколько новых блоков, каждый из которых считают предыдущим один и тот же блок. Ветвление прекратится, как только будет найден новый блок, который продолжит любую из ветвей. Все узлы переключатся на ту цепь, которая имеет самую длинную версию и продолжат работать над её удлинением. Т.е. блокчейн представляется линейным. Теперь представьте, на сколько такой блокчейн перегружен лишней работой? Полная актуальная версия цепи хранится на специальных узлах сети, называемые полными нодами, остальные узлы (лёгкие кошельки, используемые пользователями) обращаются к полным в случае необходимости проверить что-либо. Полную версию блокчейна может скачать любой желающий. Но с учётом того, что блокчейн развивается уже не только для транзакций, но и в качестве реестра различных событий, и также даёт возможность работы различных приложений. А в графическом виде блокчейн представляется линейным, то на сколько увеличится размер такой цепи в будущем? Ведь огромный размер приведёт к риску централизации. Лишь единицы смогут держать полную ноду исчисляемую Тб, а значит единицы смогут вступить в сговор и навязывать правила.
Рассмотрим Proof of Stake[3]. Доказательство доли — это второй наиболее известный алгоритм консенсуса, который является альтернативой Proof of Work. Аргументом в пользу PoS является отсутствие в необходимости огромных вычислений и предоставляет малый входной порог. В изначальном PoS идея заключается в том, что вместо вычислительной мощности как в PoW (требующая больших затрат), вероятность создать новый блок пропорциональна доле владения (криптовалютой) пользователя в системе. Соответственно, чтобы нарушить данную систему, потребуются значительные средства и вместе с этим нарушив устойчивость блокчейна сам же и пострадаешь. Но такой подход приводит к тем же результатам централизации, что и в PoW, только быстрее. Поскольку даёт ту же мотивацию накопления средств в одних руках. В результате появились вариации PoS, это: Proof of Activity (доказательство активности — гибридная схема PoW и PoS); Delegated Proof of Stake (делегированное подтверждение доли) и Leased Proof of Stake (арендованное подтверждение доли). DPoS основан на том, что владелец доли, посредством голосования пропорционально своей доли, делегирует обязанность определённому числу делегатов, которые по очереди в случайном порядке генерируют блоки. LPoS основан на том, что пользователи могут сдавать в аренду (вместо голоса как на DPoS) свой баланс узлам (нодам), тем самым получая часть прибыли. Кол-во узлов ограничено для улучшения характеристик скорости работы блокчейна. В итоге, по сути в целом PoS напоминает банковскую систему, только трансформировавшуюся. С тем же успехом, можно было создать блокчейн среди банков, где каждый, кто имеет лицензию, должен быть полной нодой и своим балансом участвовать в генерации блоков (зависящий от вкладчиков) и делать это между собой для оптимизации бизнес процессов, а в дальнейшем и предоставление различных IT решений для работы приложений.
3D Блокчейн. Доказательство на лицо (PoF)
В общем можно и дальше рассуждать о правильности или неправильности того или иного принципа. Однозначно проблемы существуют и бесспорно пути решения будут. Но отталкиваясь от старых парадигм, произойдёт лишь наложение друг на друга различных решений и в результате увидим только усложнение системы, а извечное противостояние останется. Иначе говоря, до тех пор пока блокчейн будет основан на стимулировании средствами для обеспечения надёжности, будет одновременное стимулирование системы к централизации.
Взгляните на рисунок, это задача. Необходимо соединить все 9 точек четырьмя линиями, идущими непрерывно друг за другом. Данная задача демонстрирует принципы выхода за рамки
Обратимся опять к статье от Сатоши Накомото[2]. Там говорилось, что если один голос это IP-адрес, то такую схему можно скомпрометировать. В итоге добавили «сложность», чтобы схема была иной «один процессор — один голос». Т.е. привязка идёт к физическому миру. Тогда, быть может в физическом мире найти замену процессора. Или быть может, чтоб процессор действовал от чьего-то лица?
Назовём криптовалюту как сервис и обратимся к участникам блокчейна (помимо майнеров):
- Есть криптовалюта как сервис, для осуществления денежных транзакций и смарт-контрактов, в условиях которых также прописано осуществление данных транзакций.
- Есть сервисы обеспечивающие те или иные IT решения (медицинская карточка, цифровая стоматология, реестр недвижимости, системы голосования, интернет вещей, страхование и прочие решения не связанные с денежными транзакциями, но включающее то или иное решение где возможно и необходимо использование распределённого реестра данных), т.е. децентрализованные приложения.
- Есть клиенты данных сервисов. Они могут быть как физические лица, так и юридические лица (группа лиц). Которые осуществляют транзакции в данных сервисах.
Блокчейн на криптовалюте мы уже знаем, блокчейн на приложениях — их хоть и будет большое кол-во, но у них есть общий недостаток — экономический стимул завоёвывать рынок. Но вот клиенты, это те участники на которых обратим внимание. Вся суть блокчейна сводится к тому, чтобы обеспечить клиентов осуществлять сделки в сети без доверия и без третьей стороны, что должно было уменьшить стоимость транзакций и эффективность. Но как мы убедились выше, это не совсем так. В таком случае я пришёл к выводу, что именно клиенты должны, совершая свои транзакции (сделки), осуществлять консенсус блокчейна. Поскольку их необходимость совершать транзакции и есть стимул. Более того, именно клиентов наибольшее кол-во, а значит именно они способны реализовать самый максимальный эффект децентрализации. В результате будет схема «одно лицо — один голос», такую схему невозможно скомпрометировать, нельзя подговорить огромное кол-во людей на пагубные действия. Любая транзакция отправляемая в сеть будет осуществлена человеком или группой лиц посредством вычислительной машины (смартфон, компьютер, терминал и прочее оборудование). Единственное, что для этого потребуется — это верификация клиента (лица) посредством биометрии, которая послужит закрытым ключом. Это будет невозможно потерять, украсть, отключить (владелцем блокчейна является сам клиент, а информация по биометрии нигде не хранится).
Взгляните на схему формирования блока.
Условно представим, что Х, А, Б, В, С, Г, Д, Е это пользователи. Под словом транзакция также подразумевается сделка. Разберём пример с пользователем Б.
- Пользователь Б отправляет транзакцию пользователю С. Данная транзакция называется Тб и находится в статусе ожидания.
- Её валидность и запись в открытый блок осуществляет чужая подтверждённая транзакция, в данном случае Та.
- В открытый блок, уже принадлежащей транзакции Тб, также записывается информация его валидатора — транзакция Та.
- Транзакция Тх, являющаяся валидатором транзакции Та, проверяет цепочку блоков, принадлежащих пользователю Б, и относящаяся к сервису в котором была осуществлена транзакция Тб, на:
- Присутствие другого открытого блока, где такая же транзакция Тб, но другой валидатор (не Та). В таком случае аннулируется тот блок, в котором время присутствия с момента отправки транзакции валидатора наименьшее.
- Присутствие другого открытого блока, где иная транзакция пользователя Б в данном сервисе. В этом случае проверяется достаточность средств (если это денежная транзакция) при исполнении сделок, также учитывается время и принимается решение об аннулировании того или иного открытого блока, либо наоборот оставить.
- Присутствие иных отправленных транзакций, на случай если одна из них ушла в офлайн.
- Если всё нормально, транзакция Тх, подтвердив валидность транзакции Тб, записывает свою информацию в блок транзакции Тб.
- Т.к. в отношении Тб всё нормально, Транзакция Тб проверяет валидность своего первого валидатора — транзакции Та. Если всё нормально, информация транзакции Тб записывается в блок принадлежащей транзакции Та.
- Транзакция Та закрывает блок валидатора … (подробнее по аналогии в 10 пункте на примере закрытия блока Тх).
- Далее, транзакция Тб открывает новый блок, но не для блокчейна пользователя Б, а для случайной транзакции иного пользователя, отправившего транзакцию, которая находится в статусе ожидания. В данном случае это Тв, пользователя В.
- Повторяется процесс в отношении транзакции Тв (с 2 по 6 пункт).
- С момента как Тв записалась в блок транзакции Тб. Тб осуществляет закрытие блока транзакции Тх. При этом также Тб и Тв проверяют транзакцию Тх.
- Процессы повторяются и в результате рано или поздно закрываются (но быть может расформировываются) блоки транзакций Та, Тб, Тв и т.д.
Сложность подобного подхода заключается в том, что в блоке принадлежащей транзакции Тб все 5 транзакций валидаторов должны подтвердить Тб. Представим, что в блоке транзакции Тв, в момент его закрытия, Те отклонила валидность Тв. Это весомое «заявление», но как видите, Те уже была подтверждена транзакциями Тг и Тд, и более того, заключена ими в блок. Тг и Тд также являются валидаторами Тв. В таком случае Те также проверяют транзакции Та и Тб. Если она не подтверждается, Те отклоняется и блок транзакции Тд ищет иную транзакцию из ожидания. Если Те валидна, то происходит повторная проверка Тв всеми транзакциями и при повторном отклонении транзакцией Те или иной, блок Тв аннулируется. Тв признаётся не валидной. В следствии этого закрытые блоки Тх, Та и Тб содержат неактуальную информацию, т.е. ложь. Что бы это исправить, необходим обратный процесс — распад блока.
Если Тв оказалась невалидна, то в блоке Тх происходит малый распад. Это самый минимальный урон, поправление которого возможно благодаря иному блоку с малым распадом. Они способны произвести обмен главными транзакциями и закрыть друг другу блоки. В блоках Та и Тб происходит частичный распад (полу распад) до валидной транзакции, далее происходит повторение процессов.
В результате этого можно заключить вывод, что при вероятности подобного сценария, пользователя необходимо ограничить в способности отправить следующую транзакцию в конкретном сервисе до того момента, как предыдущая полностью закроется, включая закрытие блоков его валидаторов. Это естественно не сыграет на пользу скорости осуществления транзакций. Но в то же время, представьте какова вероятность подобного сценария? Она минимальна и возможна только при атаках. Атаки также маловероятны, т.к. такой пользователь сам себя скомпрометирует и будет известен не только в виртуальных просторах, но и в реальных. Возможен и иной подход при применении различных каналов состояния, либо иные методы способствующие отправке нескольких транзакций одновременно в одном сервисе. Всё это технические вопросы, которые решаемы по ходу.
Теперь представим данный блокчейн графически. У нас есть различные сервисы (ось X) на блокчейне (разные криптовалюты — государственные или нет, платформы смарт-контрактов, приложения и т.п.) предоставляющие тем самым возможности (услуги и продукты) клиентам (ось Y), которыми являются как физ. лица, так и юр. лица. А также транзакции клиентов (ось Z). В итоге получается, что у одного лица в разных сервисах свой блокчейн, но при этом связан воедино с остальными. Иными словами Если пользователь Б зарегистрировался в сервисе 1 (например, криптовалюта ЦБ), то все транзакции порождённые пользователем Б в данном сервисе будут записываться последовательно цепочкой в его (пользователя) блокчейне, относящийся к данному сервису. При этом сервис 1 также будет вести последовательность цепочки, но чередуя транзакции от всех пользователей сервиса (т.е. своеобразно будет нодой, последовательно записывающая блоки порождённые пользователями данного сервиса), но при этом не является основным хранителем цепочки, а лишь представляется резервом. Это обусловлено тем, что исходя из схемы формирования блока, каждая транзакция порождённая пользователем Б также записывается в блоки иных шестерых участников (в их блокчейн), это принимающий транзакцию (пользователь С) и пять валидаторов (Та, Тх, Тв, Тг, Тд каждая из которых могла быть осуществлена в ином сервисе). Удивительно, это совпало с теорией шести рукопожатий. Если верить которой, то совершая все участники транзакции будут условно соединены друг с другом как одно целое. Это значит, если кото-то захочет изменить информацию в своём блоке, то данному лицу потребуется подговорить изменить её ещё у шестерых участников, те в свою очередь у своих и далее до конца.
Когда пользователь регистрируется в каком-либо из сервисов, порождается генезис блок. В результате есть два способа генерировать первые блоки транзакций:
- Два генезис блока открывают блок чужой транзакции, тем самым становятся его валидаторами.
- Один генезис блок способен открыть два блока разных транзакций, где каждая из транзакция в дальнейшем выступит в качестве второго валидатора.
Далее всё по схеме формирования блоков.
Заключение
Бесспорно, многих может оттолкнуть подобный подход доказательства на лицо (Proof of Face), т.к. для его осуществления требуется верификация пользователя, включая биометрию, но которая послужит своеобразным закрытым ключом. (заметьте, биометрия в PoF не должна храниться в электронном виде где либо, она лишь является закрытым ключом для генерации публичного). Но с другой стороны, все страны (в том числе различные организации) сейчас ведут разработки по верификации посредством биометрии, и рано или поздно произойдёт переход с бумажного паспорта на цифровой. А его информация будет либо централизована (что уже мало вероятно), либо заключена в блокчейн, который вероятнее всего будет работать на Proof of Stake с криптовалютой от ЦБ, где полными нодами будут банки. Соответственно через них пойдут уже не только денежные транзакции, но и любые сделки. В общем и в целом всё это сугубо последствиями описанными выше, это зависимость от криптовалюты блокчейна, зависимость от стоимости транзакций, а также вероятность осуществления контроля (операторами — полными нодами) ввиду склонности к централизации в угоду экономических/политических интересов.
Тогда подход основанный на Proof of Face, который позволит пользователям быть собственниками своего блокчейна в каждом сервисе отдельно, выглядит более приемлемо. Окончательная невозможность централизации позволит любому оставаться в сети, т.к. сценарий, когда миллионы людей захотят одновременно не принимать транзакции от конкретного человека исключены. Бесплатность простых транзакций так, как это происходит в реальном мире при передаче наличных денег из рук в руки. Отсутствие платы для работы приложений, что действительно сократит издержки осуществляющим сервис. Независимость блокчейна от судьбы той или иной криптовалюты. Малый размер цепочки блоков, т.к. каждая цепочка формируется у каждого пользователя личная и отдельно по каждому сервису, что положительно скажется на скорости валидации. Соответственно и скорость транзакций теоритически будет выше, чем в ныне существующих блокчейнах. Сохранность данных цепочек обеспечивается в устройствах самих пользователей, где каждый блок пользователя синхронизирован с ещё 6 участниками. А также в нодах, записывающих блоки своих пользователей. Примените теперь принципы критографии к схеме формирования блоков и последовательности формирования цепочек, что в совокупе обеспечит помимо защищенности и сохранности информации ещё и конфиденциальность. Ведь не обязательно в каждом блоке сохранять всю информацию по каждому валидатору, а можно лишь её часть, применив например дерево Меркла.
В общем, основной посыл направлен на то, что консенсус осуществлять должны сами пользователи осуществляющие сделки, что и является их стимулом. Каким образом, я предположил выше описанный подход. Реализация же подобного блокчейна может быть тремя способами:
- На государственном уровне, при переходе из бумажного паспорта на цифровой.
- Как Open Source проект отдельного блокчейна.
- В качестве Сайдчейна.
В первом случае, это быстро и легально (когда процесс трансформации происходит сообща во всех областях и уровнях). Не будет встречать сопротивления. Но в начале пути будет развиваться внутри одного государства. Присутствует риск чрезмерного контроля.
Во втором случае, регистрация пользователей будет происходить со стороны сервиса (коммерческих организаций). Таким образом будет реализовываться в качестве альтернативы существующим базам данных.
Третий способ подразумевает, что ныне существующие блокчейны — это сервисы в рамках данного подхода, предоставляющие различные IT решения для конкретных задач. А консенсус PoF позволит объединить их и породить полную взаимосвязь.
Есть истина истенней чем другая истина, но есть истина лучше, потому истинно то, что полезно.
P.S. В момент написания статьи, я к сожалению не был знаком с решениями основанными на DAG (направленный ациклический граф), реализованных в Byteball и в IOTA. Но суть от вышеизложенного не меняется. Вероятно, используя DAG, можно исключить такое свойство как распад блока и вообще создание блока, оставив лишь схему, заодно решив задачу с одновременной отправкой нескольких транзакций.
Список литературы
[1] Блокчейн
[2] Перевод статьи Сатоши Накомото. Биткойн: система цифровой пиринговой наличности
[3] Что такое Proof-of-Work и Proof-of-Stake
[4] Что такое Segregated Witness
[5] White Paper Ethereum перевод
Автор: KaIN389