Обозреватель Блокчейна

Zzzvo
Zus Network
Published in
4 min readDec 6, 2018

For the English version of this article, please visit https://medium.com/0chain/blockchain-explorer-d5f41d93314

Биткойн основан на доказательстве проделанной работы (Proof Of Work или PoW). Хотя технология распределённого реестра (DLT) на базе PoW естественно предотвращает некоторые византийские условия, она работает медленно и это очень дорого. Доказательство доли владения (Proof of Stake или PoS), с другой стороны, быстро завершает работу над блоками. 0chain, в своём стремлении к быстрой окончательности, принял алгоритм консенсуса, основанный на PoS. Это вариация нескольких алгоритмов на основе PoS, опубликованных за последние несколько лет. Она появилась из нашего желания разделить роли майнера и шардера, но также основана на опыте запуска тестовой сети, охватывающей несколько континентов, и на изучении поведения сетевой латентности. В этом документе мы подробно расскажем о нашей технологии. Однако, я хотел бы выделить несколько проблем и наглядно показать, как они решаются в нашем блокчейне.

PoS легко подвержен DDoS-атакам, особенно когда информация доступна заранее. Вот почему, в отличие от традиционных распределённых алгоритмов консенсуса, таких как Paxos и Raft, имеющих одного лидера, публичный блокчейн должен работать с несколькими «лидерами» каждый раз. Это не только предотвратит внешнюю угрозу, наподобие DDoS, но и внутреннюю, например, византийское условие. Мы знаем, что любой распределённых алгоритмов консенсуса, который может защищать от византийского условия, должен иметь 3 * f + 1 активных участников, с не более, чем f византийскими участниками. Тем не менее обеспечение бо́льшего количества участников, выполняющих все шаги алгоритма консенсуса, чем значение f, может привести к огромным тратам, хоть и не таким, как в PoW. Например, когда у нас есть 100 активных майнеров, сколько из них должно генерировать блок в этом раунде? Любое количество, превышающее 34, обеспечит защиту от худшего варианта византийского условия. Однако, учитывая, что в этом раунде работа завершается только над одним блоком, генерирование 34 блоков — это огромные траты ресурсов.

Именно поэтому 0chain позволяет настроить количество генераторов, предлагающих блок в каждом раунде. Это может быть гораздо меньшее число. С одной стороны, мы не хотим, чтобы число генераторов было слишком высоким, поскольку это пустая трата ресурсов, а с другой — не слишком низким, ведь это может легко привести к византийским условиям. Конечно, покуда существует перетасовка генераторов в другую группу, когда выбранная группа не работает должным образом (из-за реальных проблем, таких как разделение сети или намеренно, будучи византийским), то число генераторов может быть довольно малым. По сути, в сугубо приватных настройках вы можете установить только одного генератора, сделав консенсус похожим на CFT подобные алгоритмы консенсуса (отказоустойчивые к сбоям).

Когда несколько майнеров могут сгенерировать блок, проблема заключается в том, как обеспечить, чтобы все соглашались с одним и тем же блоком. Как и во многих протоколах с быстрой окончательностью, протокол 0chain также позволяет спекулятивное выполнение, когда блоки и форки цепи создаются спекулятивно. Однако в течение короткого времени эти форки разрешаются, и все сходятся к одному и тому же блоку этого раунда. Конечно, проще сказать, чем сделать (написать код). Большинство людей с трудом представляют, что означает иметь несколько блоков в рамках одного раунда, но в итоге блокчейн сходится в одну цепь блоков.

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

В вышеприведённом видео, блоки с пунктирными линиями представляют собой блоки, которые будут обрезаны, поскольку они являются тупиковыми. Блоки с пунктирными линиями находятся в спекулятивном состоянии, и со временем они либо приводят к завершённым блокам блокчейна, либо обрезаются. Края сплошной линии указывают на завершённые блоки. Метки на блоках имеют формат «Rnn, v, Mx», где Rnn обозначает круглое число (по модулю 100), v указывает количество голосов, а Mx указывает майнера, который сгенерировал блок. Размер блока указывает важность, которая должна быть присвоена блоку в этом раунде в соответствии с протоколом консенсуса.

Видео основано на нашей тестовой сети, которая работает в глобальном масштабе с девятью майнерами (от M0 до M8) и тремя генераторами в каждом раунде. Видео показывает, как в каждом раунде 3 майнера генерируют блок. Конечно, иногда только 2 или даже 1 майнер генерирует блок. Это может быть связано с тем, что у других майнеров нет транзакций для создания блока, или они не знают, что им нужно сгенерировать блок из-за (временной) сетевой латентности. Иногда вы можете заметить, что более двух блоков заверяются в этом раунде. Вы также увидите заверенные или даже завершённые блоки без границы, указывающие, что майнер, из которого данные извлекаются сами, не проверил блок, но консенсус был достигнут среди достаточного количества других майнеров для заверения блока.

Но самое интересное, что обозреватель блокчейна не извлекает данные из одного майнера, а выборочно из списка 9 майнеров. Обозреватель каждый раз очищается и визуализирует картину с использованием нового набора данных. Это было сделано намеренно, чтобы увидеть, есть ли серьёзная разница в блокчейне среди майнеров. Отрисовка кажется гладкой, это указывает на то, что все майнеры более или менее работают с одним и тем же набором блоков с одинаковым состоянием. Вполне вероятно, что блок может быть с границей, а затем без границы, указывающей, что он проверяется одними манерами, а не другими. Я призываю зрителей внимательно изучить и опубликовать комментарий, если вы найдёте такой блок или любые другие несоответствия.

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

--

--