Обзор кода QuarkChain от Andre Cronje

0
1022
views

Команда ICOdaily подготовила перевод статьи «Обзор кода QuarkChain» от Andre Cronje

Еще больше новых проектов, переводов интересных статьей и новостей на нашем телеграм канале


Обзор кода QuarkChain — глубокое погружение

Проигнорируем хайп и 1 000 000 TPS и зададимся вопросом, могут ли они получить 50 000 TPS? Похоже на то.

Сегодня я буду делать обзор кода QuarkChain, результаты, описанные здесь были также приведены в обзоре на ICO QuarkChain, который был опубликован нами вчера. Мы будем делать все больше обзоров, чтобы дать вам понять, почему наши обзоры ICO оцениваются так, как оцениваются, так что обзор кода является очень важной метрикой в нашем анализе.

QuarkChain — это высокомощная, р2р, транзакционная система. Мы не будем оборачивать против них то, что они используют заумные термины для привлечения клиентов. Обещают 1 000 000 TPS… Так…Если кто-нибудь из вас читал мои предыдущие работы, то знают, что я думаю об одном миллионе TPS. Я просто не понимаю этой одержимости и так далее, а также я не понимаю цели этого числа.

Можем ли мы все, как сообщество, сделать шаг назад и посмотреть на нашу нынешнюю экосистему. Сейчас наши самые высокопроизводительные блокчейны максимизируют примерно 2 000 TPS, так можем ли мы, скажите пожалуйста, нацеливаться на уровень производительности 10 000 TPS? Можем ли мы, в таком случае, нацеливаться на 50 000 TPS?

У нас еще есть значительное число целей для достижения, перед тем, как мы достигнем отметки 1 000 000 TPS. Знаете, что я хочу увидеть? Я хочу увидеть обещание, что блокчейн будет выдавать 13,431 TPS. Хочу зайти на сайт и увидеть надпись “мы можем достичь 13,431 TPS”, вот в это я поверю. А если вы заявляете мне, что можете достичь 1 000 000 TPS, то я автоматически отмечу вас как мошенника.

Давайте взглянем на техническую составляющую.


Двухслойные блокчейны, шарды располагаются на первом слое, а корневая цепочка на втором слое. Давайте все рассмотрим, Ethereum является корневой цепочкой, у вас есть много чего от сайдчейна Ethereum, а у нас есть РОА, цепочки децентрализованных приложений (из Loom Network), каждая из этих цепочек уходит корнями в Ethereum. Вот это такое элементарное объяснение этого двухслойного подхода.

Сейчас Ethereum использует токены ERC20 (это дало нам токены EOS, TRX), вместо того, чтобы они все были на Ethereum в качестве ERC20 токенов, они теперь выступают в качестве сайдчейнов. Это объяснение поможет вам понять идею эластичных шардинг блокчейнов, новые токены добавляются, мы добавляем новый блок, но каждый из них по-прежнему подтверждается в основной цепочке Ethereum.

Так что держите в голове картину того, множества сайдчейнов, пустивших корни в Ethereum, пока мы будем говорить о двухслойном подходе. Мы рассмотрим каждую концепцию в данном обзоре, но об одной, однако, стоит упомянуть отдельно. Это кроссшардовые транзакции.

В моем примере двухслойного блокчейна выше, мы говорили о сайдчейнах, таких, к примеру, как РОА и Loom Networks dAppChain. Однако проблема состоит в том, что эти две сети изначально не могут взаимодействовать друг с другом. И не будут, пока вы не создадите какую-либо форму кроссчейн моста. В QuarkChain они разработаны в качестве объектов первого класса. В основном мы говорим, что они являются неотъемлемой частью системы, разница между отправкой ончейн транзакций, в сравнении с шардовой кроссчейн транзакцией также проста, как смена адреса назначения.

Держа в уме эти высокоуровневые концепции, давайте взглянем на код:

Итак, мы начали с pyquarkchain, я предполагаю, что они просто клонировали pyethereum. Я знаю, что я не должен говорить так пессимистично, но с грузом проектов, код которых я рассматривал, клонирование кажется нормой.

Какой приятный сюрприз я тут нашел. Я даже пытался копаться в нескольких файлах, которые, я был уверен, не были копиями, все были сделаны самостоятельно. Тут все также есть много то, что было импортировано из Ethereum, к примеру, для систем EVM и P2P, но стоит отметить, что это просто сырые заимствования.

Некоторые статистические данные репо: 286 коммитов, 4 ветви, 4 вкладчика. Мне нравится коэффициент вкладчика, используется управление ветвями, коммиты маленькие, но содержат много вещества. Хорошее начало.

Используется запрос на включение и управление возникающими проблемами. Приятно видеть это.

Быстрое сравнение баз двух кодов (pyquarkchain & pyethereum)

Хорошие комментарии. Давайте обратимся к фактической функциональности.

Testnet сейчас работает на восьми шардах (это настраивается). Майнинг осуществляется при помощи proof-of-work. Каждый отдельный шард работает между 100-200 TPS, общий TPS, тем самым составляет примерно 1.1k.

Итак, ребятам нужен дизайнер. Мне нравился Bootstrap, когда он вышел в 2011 году, но нужно, чтобы ребята приступили к работе с материалом. Кошелек достаточно прямолинеен, для этого у меня есть мой обычный комментарий по поводу того, что он не относится к HTTP. Сертификат требует десяти минут, ну ребят, вы серьезно?

Кошелек использует ethereumjs-util.

Мы видим функции getNodes и selectNode. Давайте рассмотрим их поподробнее.

Они защищены и полагаю не взломаются сегодня для нас.

Давайте поговорим о функциональности. Вспомните, как мы ранее описывали сайдчейны, то форму изолированного шардинга, разделяющую все на составные части. Я совсем не хочу сказать, что данная система выполняет шардинг, но интересная вещь здесь это одна из особенностей, о которой они упоминали ранее — Simple account management (Простое управление учетной записью). Позвольте мне привести цитату.

“Только один аккаунт нужен для всех шардов. Все криптовалюты с разных шардов хранятся в одном смарт-кошельке.” Основная проблема всех клонов Ethereum (WanChain, POA, dAppChains и т. д.) состоит в том, что все они распределяют архитектуру открытого/закрытого ключа. Это означает, что если у вас есть пара открытого/закрытого ключа на Ethereum, то эта же пара есть у вас и на WanChain, POA, dAppChains и других подобных клонах.

А в двухслойной сети, пример которой мы приводили выше, у вас бы была эта пара ключей для каждой стороны сайдчейна. Не было бы это причиной конфликта? Как мне отправить мои 10 WAN на мой POA адрес? Это невозможно. Может на QuarkChain возможно? Так каким образом это работает?

Первым делом нам нужно взглянуть на то, почему наше (мое) первоначальное предложение относительно сайдчейн двухслойной архитектуры было неправильным. Мы можем назвать тот подход шардинг пространства имен (каждый сайдчейн/токен получает свое собственное имя).

QuarkChain занимается тем, что создает своего рода параллельный шардинг. Таким образом, в отличии от примеров сайдчейна, тут все больше похоже на то, как параллели в Etherem запускаются друг за другом. Если Ethereum A “устает”, вы переносите ваши средства на Ethereum B. По этой причине, я назову это настоящим шардингом, так как тут каждый шард не является частью общего, а копией общего, все работают конкурентно и изолированно.

Таким образом, если у меня есть ключ, то он работает на Ethereum A, Ethereum B, Ethereum C и так далее, а я могу перемещать свои средства между этими узлами, но не станет ли это снова причиной конфликта? У вашего открытого ключа есть дополнения от каждого харда, с которым он работает, таким образом это можно записать как ключ + ID шарда, таким образом, если у вас есть базовый адрес 0x1, у вас также есть 0x1a, 0x1b, 0x1c т.д. Таким образом, если вы хотите переместить средства с адреса 0x1a на адрес 0x1b, вы просто используете тот адрес, на который хотите сделать перевод. Вот так они позволяют владеть одним ключом, сохраняя тем временем кроссшард взаимодействие.

Тут две параллельные цепи не могут достичь консенсуса, таким образом им нужно положиться на рутчейн для того, чтобы достигнуть консенсуса, таким образом выходит, что основная функция рутчейна это эти самые кроссчейн транзакции. В нормальной транзакции на Ethereum у вас есть адрес А, отправляющий какую-то информацию на адрес B, теперь же у вас есть блокчейн А, отправляющий информацию на блокчейн В. Та же самая концепция, но стороны отправляющие и принимающие, в данном вопросе, совершенно разного масштаба.

Исходя из того, что теперь это параллельные цепочки, что будет, если все вдруг просто станут выполнять транзакции на Ethereum A и никто не будет использовать В, С и т.д.? В таком случае Ethereum A перегрузится и это будет сказываться на пропускной способности. Данное обстоятельство послужит причиной того, что вычеты возрастут, и если вы хотели дешевых транзакций, то вам следует использовать Ethereum B, а если же оба А и В имеют одинаковую загруженность, то вы могли бы использовать С.

Данная концепция представляет собой подчиненный рынку совместный майнинг, благодаря структуре вознаграждения, нагрузка разделена между шардами. Но вот какая может быть проблема: все ваши средства на Ethereum A и вы захотели участвовать в ICO на Ethereum C, а Etehereum A перегружен и ва приходится платить высокие отчисления для того, чтобы сделать трансфер от А к С. И вам придется не только платить высокие взносы, но также придется ждать рутчейнов, чтобы закончить ваши транзакции, что прибавит дополнительных расходов.

Не представляю, как они избавятся от этой проблемы, но я вижу данный аспект, в качестве проблемы. Также микроменеджмент, который пользователям приходится выполнять между их собственными шардами, будет создавать неприятный пользовательский опыт. Я думаю, что это две ключевые задачи, которые требуют решения.

Таким образом мы увидели, что на практике TPS меньше заявленного. Учитывая, что перегрузка может происходить на параллельной цепочке, нам нужно рассмотреть расходы на рутчейне.

Сначала давайте взглянем на теоретическую сторону TPS.

Нынешние шарды работают с, давайте возьмем, 150 TPS, таким образом, 1m/150 будет означать, что потребовалось 6 667 шардов, тогда шардинг будет поддерживать 2 000 000 000 шардов. Так мы, конечно теоретически, собираемся заниматься микроуправлением 6 667 шардов, при помощи того, что будем перемещать средства? Давайте на практике возьмем, примерно, 10 шардов для, примерно, 1 500 TPS.

Следом идет процессор, я сумел выдать примерно 5 000 TPS на одном ядре (которое было отведено только для работы с TPS), так что на практике у нас есть, скажем, 1 000. Если вы присматриваетесь к какому-нибудь монстру на облачных веб-сервисах Amazon, инстанс m5.24xlarge, с, скажем, 72 ядрами, тогда удастся выдать 72 000 TPS, учитывая, что было достаточно транзакций для выполнения в параллели и вам не пришлось делать их синхронно. Помните, что причина, по которой мы выполняем транзакции синхронно заключена в том, что транзакция 0x2, должна испытывать влияние транзакции 0x1. Если у меня есть 10 QKC и я отправляю 10 на А и 10 на В, и они обрабатываются в параллели и могут добиться успешного выполнения, то тогда нам придется обрабатывать их параллельно. Но давайте предположим, что у нас есть 72 шарда и мы можем запустить каждый из них на процессоре, тогда, скажем, есть возможность говорить о 72 000 шардов.

Мы сказали, что практически рассмотрим примерно 10 шардов, но давайте вместо этого скажем, что возможно 10 000 TPS (с высокой вероятностью).

Даже на 20 шардах, которые все еще допустимы, мы видим 20 000 TPS. Я продолжаю не верить в утверждение об 1 000 000 TPS, но разработчики движутся к системе с потенциальными 10 000 — 50 000 TPS.

И это мы еще даже не начинали говорить о кластере. О нем я расскажу в другой статье, так как, мне кажется, что вы уже начали скучать.

Выводы

У разработчиков есть много чего, чего нет у многих ICO, обзоры на которые были написаны мной. Да, есть вещи, с которыми я не согласен, но сказать честно, я впечатлен. Я думаю, что разработчикам следовало бы отказаться от цифры в 1 000 000 TPS и просто заявить о 50 000 TPS и, по-моему мнению, они могут выдать такое число (а еще им нужно найти себе экспертов по UI/UX).

Я думаю, что их разработка нова, отлично выполнена, и я определенно собираюсь еще больше поиграть с их testnet. Меня раздражает то, что я все еще не взломал ее.

 

 


Еще больше новых проектов, переводов интересных статьей и новостей на нашем телеграм канале

Предыдущая статьяОбзор ICO QuarkChain от СrushСrypto
Следующая статьяAkropolis
ПОДЕЛИТЬСЯ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here