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

0
428
views

 


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

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


Обзор кода Ankr — системы распределенного облачного вычисления

Казалось бы, что механизм Proof of Useful Work (Доказательство Полезной работы) должен быть отличной идеей… но есть ряд недостатков.

Стоит сказать, что это обзор кода системы, а не ICO, но это не остановит меня от тщательного анализа протокола консенсуса. Меня очень сильно заинтриговал протокол Proof of Useful Work. На сайте разработчики говорят о многих фактических преимуществах их разработки, а не только технических, но Вам придется изучить сайт самостоятельно. О чем же еще идет речь на сайте?

“Ankr это система распределенного облачного вычисления, работающая на доверенном оборудовании. Ankr предоставляет блокчейн ресурсов, вычисления и эффективности, а также интегрированную систему подачи данных, использующую как криптографические примитивы, так и доверенное оборудование.”

“Протокол консенсуса PoUW позволяет системе использовать самодостаточный фреймворк. Вместо того, чтобы терять электричество и вычислительную мощность, как это происходит с системами Bitcoin и Ethereum, PoUW использует эти ресурсы для удовлетворения потребностей предприятий и потребителей.”

“Протокол работает на процессорах с дистанционной аттестацией, поддерживающих SGX, чтобы гарантировать безопасность и конфиденциальность.  Подход, используемый системой PoUW, раскрывает огромный потенциал неиспользуемых вычислительных мощностей по всему миру, путем предоставления достаточного количества инициатив: следуя данной схеме, каждый, кто вносит вклад в вычислительную способность сети, получает оплату, а те, кто участвует в создании блока, получают дополнительную плату”.

Все началось с ряда хайповых идей, таких как: облачное вычисление, протокол PoUW, вместо протокола PoW, сайдчены Plasma, внедренные в качестве мультичейна Plasma, NOS, криптографические примитивы и доверенная среда выполнения (TEE).

Слишком много для меня, чтобы вникнуть разом. Давайте начнем с Proof of Work. Почему мы используем именно этот протокол? Вообще, что такое Proof of Work? По-сути, этот протокол – это игра в угадайку, мы знаем ответ, но не знаем, как попасть туда. Мы начинаем угадывать разные подстановки, пока не узнаем ответ. Весь процесс занимает достаточно времени на выполнение (в зависимости от сложности), но процесс легко и быстро проверяется.

Таким образом этот протокол, если нам нужно доказать факт того, что что-то произошло. Протокол доказывает, что кто-то затратил время (сложность) на угадывание ответа, таким образом мы узнаем, что они получили финансовый(электрический) ущерб.

Каким образом протокол PoUW составит конкуренцию протоколу PoW? Следую описанию, которое дали сами разработчики, продукт составит конкуренцию, делая немного полезных вычислений. К примеру, мы имеет большой сервер ферм, пытающийся решить проблему N=NP, так почему бы не направить вычислительную мощность сюда? Проблема связана с доказательством. Как будет доказано то, что действия прошли правильно? Протокол PoW берет много времени на работу, но очень прост в доказательстве. Однако, если это было недетерминированное вычисление, тогда я бы повторно провел вычисление, чтобы доказать, что работа была выполнена правильно.

Таким образом, чтобы показать, что все было сделано правильно (и доказать это), понадобится столько же времени. Не слишком эффективно, не та ли?

Таким образом, вместо этого появляется Проверяемое Вычисление (Verifiable Computing). Данная идея представляет собой функциональную работу аутсорсинга. Будучи уверенным в том, что правильная работа была рассчитана, я бы, вместо этого, дал эту часть  работы на обработку 3+ рабочим и когда хотя бы два результата вернулись,  я бы смог сравнить их. Если они совпадут, то работа будет являться проверенной, консенсус завершен, а рабочие получили награду за правильную работу сети. Но теперь мы видим интересное утверждение: ”Каждый рабочий награжден за правильную работу сети”. Довольно сильно отличается от принципов работы PoW, где только тот, кто первым получит ответ, будет вознагражден (случаи не всегда связаны с более длинными цепями, другая тема для другого дня).

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

Почему бы всем блокчейнам не использовать данный подход? Потому что длинна вычислительной ленты неизвестна. Что если потребуется десять лет на то, чтобы получить ответ. Задача PoW – давать нам блок каждую эпоху (не важно, какой может быть эпоха). Если время, требуемое для решения неизвестно, то как мы сможем узнать, когда появится следующий блок? А что если работа вообще не будет выполнена? Говорит ли это о том, что каждый узел в сети должен будет иметь чип SGX?

Слишком много вопросов без ответа возникает, когда речь заходит об PoUW.

Давайте оставим все вопросы позади (включая сторонние сети Plasma и Родных Оракулов)  и приступим к самому коду.

Я немного заинтересовался ERC223, token-smart-contract, go-ethereum, plasma-mvp, bitcoin, pouw (самый большой), april_demo (почему мы переключились с dash системы обозначения на underscore?)

ERC223, ERC777, ERC820, все пытаются сделать токены Ethereum наиболее используемыми и привилегированными. Функции не знаю о переносе ERC токенов (если они только они не используют доказательство и транчсфер), поэтому вместо этого существует множество реализаций для решения данной проблемы, используя обратные запросы и функции, осуществляющие обратные запросы. Очень приятно видеть больше понимания данной проблемы, но тут ничего нет в репо, так что двинемся дальше.

Решение, что токены ANK (Серьезно, ANK? А почему не ANKR?) будут стандартными токенами ERC20, имеет смысл, но в конце-концов, разработчики все еще не пишут, ни одного децентрализованного приложения.

go-ethereum, 361 коммит стоит за главным узлом, ничего интересного.

plasma-mvp, 12 коммитов стоят за AdityaSripal, 39 коммитов впереди, а 110 — за omisego.

bitcoin, поддерживается ветвь

Давайте рассмотрим pouw and april_demo, jumping into april_demo first.

Посмотрим на веб-приложения.

Кажется, что данный сегмент использует bitcoind-rpc-client, клиент для запуска команд bitcoin RPC.

Вижу Axios (для HTTP) и bitcoin-core, посмотрим для чего они.

Блок-проводник.

Блоки поступают от HTTP API (давайте посмотрим на это)

API это абстрактный слой для bitcoind-rpc-client. Порт 20011.

Очень большие блоки. Вижу тут интересные поля.  “confirmations”, предполагаю, что это выполняет подтверждение работы, “nonce”, что оно делает в системе PoW? “difficulty”, тот же вопрос, что и к предыдущему пункту. “chainwork”, доказательство работы выполнено? “nextblockhash”, поэтому блок обновляется после запечатывания?

Больше вопросов, чем ответов и у нас закончились данные, в которых мы можем покопаться, так что двинемся дальше.

Посмотрим на протокол PoUW, давайте ребята, сделайте мой обзор супер выдающимся, покажите мне что-нибудь потрясающее.

[Заметьте, некоторые части кода, рассматриваемые тут, в настоящее время не являются доступными широким массам, а будут реализованы позже]

Включены драйверы Intel SGX, имеет смысл.

Я никогда не составлял SGX библиотеки, поэтому не имею понятия, что тут относится к boilerplate, а что к настоящему коду, так что нам потребуется больше времени. Как и в случае со всеми проектами, написанными на языке С, давайте начнем с main.cpp.

measure.h или parserfactory.h выглядит как наши цели.

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

Очень много скриптов, давайте посмотрим.

Тестирование неправильного против успешного вычисления для блоков, разработка, основанная на тестах. Приятно видеть такое.

Тесты и скрипты python выглядят очень хорошо. И хотя тут использован PoC код, он не предназначен для чтения.

Итак, сделав выводу, основываясь на то, что мне удалось увидеть, фолдинг белка формирует успешную сеть, miner-python запрашивает задания и публикует результаты на леджер биткоина, а анализ статики подтверждает выход из фолдинга. Обратимся к фолдингу протеина.

Не так много того, на что посмотреть. pouw запрашивает protain_folding (слово белок написано с ошибкой) (да, бялок), который запрашивает GeneticAlgorithm. Мне интересно, каким образом они сделают его более обобщенным для функций, чем фолдинг белка.


Заключение:

Мне потребуется больше кода для анализа. PoUW (я думаю, что Verifiable Computing имеет больше приложений для масштабирования смарт-контрактов, чем блокчейн), плазма (Aditya Sripal похоже в команде, и они, похоже, довольно много работают над плазмой) и родные оракулы (хотя я все еще уверен, что это разрушает детерминированный характер блокчейна) являются интересным выбором.

Участие SGX в сети делает сеть ограниченной. Участие в работе сети могут принимать только те, кто обладает соответствующим оборудованием. Полезные задания трудно обобщить, и вы не сможете выполнять длительные задания для обобщения блоков.

Амбициозные идеи, но я не думаю, что они выполнимы практически. Очень молодая команда, интересные советники. Проект представляет немало идей, хоть они и разобщены.

 

 

 

 


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

 

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

Please enter your comment!
Please enter your name here