Погружение в технологию блокчейн: секреты EmerCoin

в 15:39, , рубрики: bitcoin, emercoin, биткойн, Блог компании Microsoft, блокчейн, криптовалюта, финансы в IT, метки:

Недавно мы рассказали об использовании технологии блокчейна в реальных проектах на примере EmerCoin, одного из первых партнеров-провайдеров сервиса блокчейн в Azure Marketplace. Продолжая цикл статей, посвященных этой теме, разберемся глубже в технологиях EmerCoin (EMC) и основных отличия ядра Emer от других криптовалют.

Cеть Emer, как и другие пиринговые сети, обладает неограниченным масштабированием, и чем больше в ней участников – тем эффективнее и стабильнее она работает. Поэтому на её основе можно делать не только Enterprise решения, но и решения всемирного масштаба.

Погружение в технологию блокчейн: секреты EmerCoin - 1

Сначала разграничим понятия:

Emer – это технология, сеть и инфраструктура.
EmerCoin – кредитные единицы, которые циркулируют внутри сети Emer.

Принято, что словом «EmerCoin» называют оба этих понятия, поэтому тоже будем следовать общепринятой семантике, применяя слово «Emer», только для того, чтобы подчеркнуть, что речь идёт именно о технологии, а не расчётно-бухгалтерском аспекте. Под словами «монеты», «деньги» и тому подобное, будут подразумеваться безналичные кредитные единицы, обращающиеся в распределённой сети криптовалюты.

История EmerCoin

Исторически, ядро EmerCoin было унаследовано от ядра Peercoin, которое в свою очередь было унаследовано от Bitcon. Peercoin добавил в свой проект ключевое нововведение – механизм Proof-of-Stake выработки консенсуса, создав гибридный механизм консенсуса, использующий два базовых механизма – и Proof-of-work(POW) и Proof-of-Stake(POS). Рассмотрим эти механизмы и сам консенсус подробнее.

Консенсусом – это алгоритм публичной криптовалюты, посредством которого рядовые участники децентрализованной сети голосуют за истинность той или иной версии строящегося блокчейна. Консенсус возникает как результат агрегированных усилий всех майнеров, которые своими ресурсами голосуют за ту или иную версию ветви блокчейна, и за это получают майнерскую награду – свеженапечатанные эмиссионные деньги и/или транзакционные платежи. Можно сказать, что майнеры продают обезличенной коин-сети сервис по поддержанию доверия к блокчейну (траста), и получают компенсацию за свои услуги в виде свежевыпущенных монет.

Что в такой распределённой сети считать голосом?

Первая очевидная идея – кошелёк. Но, злоумышленник может создать миллионы кошельков и этими «мёртвыми душами» проголосовать за ту версию блокчейна, которая ему выгодна.

Следующая идея – IP-address. Тоже не работает, так как любой провайдер может симулировать большую сеть, и снова создать полчища «мёртвых душ». Для голосования требуется ограниченный ресурс, который не может быть тиражирован и фальсифицирован.

Сатоши Накамото в системе Bitcon предложил в качестве такового Proof-of-Work – доказательство посредством вычислительной мощности. Действительно, если у вас есть компьютер вычислительной мощностью X, вы его можете виртуально разделить на N суб-компьютеров, но их суммарная вычислительная мощность так и останется X. То есть вес голоса владельца такого компьютера не увеличится.

Потом были предложены другие концепции консенсуса, ориентированные не на использование процессора, а другой вычислительный ресурс – например ёмкости дисковых накопителей, Proof-of-Capacity. Подобные концепции опираются на ограниченность физического ресурса – вычислительной мощности или дисковой ёмкости. Естественно, в процессе развития экосистемы криптовалюты это приводит к «гонке вооружений», когда майнеры вкладываются в соответствующее майнерское оборудование до тех пор, пока не достигнут паритета расходов на амортизацию оборудования и доходов от майнинга. После чего плачут «майнить стало невыгодно, крипта – надувательство».

Прорывной идеей Санни Кинга, автора Peerсoin, была концепция Proof-of-Stake, в которой в качестве ограниченного голосующего ресурса выступали монеты, контролируемые самой же системой. Это позволило выйти из ловушки: «гонка вооружений материальных ресурсов», заменив материальный ресурс (процессор, диски) на нематериальный – монеты. Это в свою очередь прекратило бессмысленный расход материальный ресурсов, невозвратно расходуемых на майнинг (электричество, оборудование).

Безопасность сети

Каждый механизм консенсуса по отдельности имеет свои недостатки. Так, например, не очень популярную PoW-криптовалюту можно атаковать, временно арендовав огромные вычислительный мощности (что несколько раз было проделано), а POS-криптовалюты потенциально уязвимы против других видов атак, например, атакой из глубины. Для защиты от последней применяются дополнительные механизмы, например, динамические контрольные точки (dynamic checkpoints), и в целом механизм POS показал себя более устойчивым, чем POW.

Тем не менее, гибридный механизм консенсуса Peercoin считается наиболее безопасным, и использовали именно его как основу для своего проекта. Для успешной атаки на Emer, атакующий должен иметь и 51% всей вычислительной мощности сети, и 51% всей денежной массы. Это создаёт для атакующего два барьера разной природы, которые и защищают сеть от компрометации.

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

Кроме того, Emer исповедуют промышленный подход к своим проектам, который предполагает максимальное следование уже существующим стандартам и спецификациям. Так как де-факто, технологии и API Bitcoin являются стандартами криптоиндустрии, компания стремится поддерживать максимальную совместимость с ними, и соответственно использование Bitcoin в качестве основы ядра.

EmerCoin: подобия и отличия

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

Погружение в технологию блокчейн: секреты EmerCoin - 2

POW+POS vs POW

Как было указано выше, EmerCoin имеет гибридный механизм консенсуса, который и определил стартовую точку проекта. Этот гибридный механизм был нами унаследован из Peercoin с единственным изменением – большим сдвигом в сторону POS. По сути, Emer является POS-криптовалютой, в которой механизм POW оставлен по соображениям безопасности, и играет хоть и важную, но вспомогательную роль, а примерно 80% блоков закрываются именно POS-ом.

Sha256

Хеш-функция закрытия блока применена та же самая, что и в Bitcoin и Peercoin – sha256. Причина заключается в том, что sha256 является стандартом и продолжает обеспечивать достаточный уровень безопасности для поддержания стабильной работы сети.

Также в силу того, что майнинг sha256 давно уже производится специализированными процессорами ASICs, можно быть увереными в двух вещах:

  • Не произойдёт революции сложности, вызванной появлением специализированного оборудования для другого алгоритма, которая может привести к встряске сети и консолидации майнинговой мощности в руках владельцев нового оборудования.
  • EmerCoin против майнинга на универсальных компьютерах, так как при таком подходе могут пострадать непричастные. Как известно, до появления ASICов был ряд вирусов, которые использовали вычислительные мощности заражённых компьютеров для майнинга биткоинов. Появление ASICов сделали такие вирусы экономически не выгодными. Тем не менее, опасность сохраняется для других криптовалют, которые майнятся на универсальных компьютерах.

10 минут

Время закрытия блока остаётся таким же, как и в Bitcoin и Peercoin – 10 минут. Сатоши выбрал удачный параметр, и сокращение времени блока может привести к большому количеству коллизий с orphan-блоками и потере стабильности сети. Рассмотрим это утверждение подробнее.

Вероятность коллизии есть время обновления сети, делённое на время закрытия блока. Время обновления сети зависит от топологии и загрузки сети, и для сети Bitcoin уже сейчас может достигать минут. Соответственно, другие криптовалюты (например Quark), которые сократили время закрытия до суб-минутных интервалов, рискуют получить постоянные форки, как только нагрузка на них вырастет до более-менее значительных величин.

Можно возразить, что есть прекрасный протокол Ghost, применяемый в Etherium, и ему не страшны форки, так как orphan-блоки (у них они называются uncles) хоть и не попадают в результирующий блокчейн, но участвуют в голосовании за ту или иную версию цепочки, поэтому там время блока может быть в районе 20 секунд.

В свою очередь, EmerCoin считает, что этот протокол имеет ряд уязвимостей. Например, сеть под протоколом Ghost может быть подвержена сетевому шторму – эффекту, возникающему в широковещательных Ethernet-сетях при достижении некоей критической нагрузки. Проще говоря, это произойдёт потому, что время обновления сети пропорционально нагрузке на сеть, то есть трафику. При достижении критической нагрузки (большом числе транзакций в секунду), время обновления станет сравнимо с временем генерации блока. При этом различные майнеры независимо произведут блоки-кандидаты на включение в блокчейн. И вот – сюрприз – эти блоки будут содержать те же самые транзакции. И эти большие блоки снова будут разосланы по сети, что создаст мультипликацию трафика, то есть снова нагрузит сеть, что вновь приведёт к задержкам ещё большему количеству uncles. Поведение сети станет подобным атаке типа DNS/NTP Amplification, только в качестве и атакующего, и жертвы выступают те же самые узлы сети, а триггером становится достижение критической нагрузки, зависящей от топологии сети.

А если ещё учесть, что в блокчейн попадёт только один из блоков-кандидатов, а сеть тратила силы не только на решение этого блока, но и на его «братьев», которые только проголосовали, но в блокчейн не вошли, то становится очевидным драматическое снижение траста принятого блокчейна в результате такого шторма, и возможность атаки мощностью менее 51%.

Поэтому подход Сатоши является самым правильным в данный момент.

Пересчёт сложности после каждого блока

В отличии от Bitcoin, где сложность майнинга пересчитывается один раз на каждые 2016 блоков (примерно раз в две недели), сложность в сети Emer (как и Peercoin) пересчитывается после каждого блока. Такой подход повышает стабильность работы сети. Приведём пример.

Допустим, после очередного пересчёта сложности, в сети Bitcon перестала работать половина майнеров. Кстати, это далеко не гипотетический случай – достаточно вовремя принять соответствующие законы в государствах, на территориях которых находятся крупные майнинг-пулы. В результате, блоки будут закрываться вдвое реже, то есть раз в 20 минут. Также вдвое вырастет время подтверждения транзакций и размер блоков. А учитывая то, что уже сейчас часто блоки достигают своего предела в 1 мегабайт, есть прямые шансы, что многие транзакции в блоки просто не попадут, и много дней будут неподтверждёнными. Это вызовет панику, и ещё большее число транзакций, связанных с желанием продать по чём есть, что только усугубит ситуацию. И система только через месяц восстановит работоспособность.

При пересчёте сложности после каждого блока такой проблемы возникнуть не может – сеть сразу же начинает адаптироваться под изменение суммарной мощности майнеров. Кроме того, так как EmerCoin является в основном POS-криптовалютой, в которой майнинг и пулы играют второстепенную роль, даже полная и одномоментная остановка всех пулов приведёт к увеличению времени блока на 20%, что будет скорректировано системой адаптации в течение суток.

Пересчёт награды за POW-блок

В EmerCoin существует ещё один механизм поддержания более-менее стабильной майнерской мощности – это петля отрицательной обратной связи по хешрейту сети (агрегированной майнерской мощности). Суть состоит в том, что майнерская награда за блок не фиксирована, как в Bitcoin, а обратно пропорцилнальна корню 4й степени из сложности сети.

В результате, если предположить, что стоимость EmerCoin возросла в фиатном исчислении, то его начнёт майнить большое количество агентов, что приведёт к росту сложности и снижению награды за блок. В результате, сеть защищается от сильной инфляции в фиатном исчислении. И наоборот – в случае сильного снижения сложности сети вследствие потери майнерами интереса к EmerCoin по любой причине – последний пытается удержать майнеров, предлагая большую награду.

Теоретически, наиболее эффективная стратегия майнинга EmerCoin – сговориться, майнить минимальной мощностью и делиться максимальным доходом между участниками. Но этого не выйдет в силу эгоистичности майнеров, которые находятся в ситуации, описанной в Дилемме Заключённого.

POS 6% APY

Так как EmerCoin является и POS-криптовалютой, то в ней можно майнить не только оборудованием, но монетами, находящимися в кошельке. В проекте была выбрана POS-награда в 6% годовых. Иными словами, если в некой транзакции монеты без движения пролежали более месяца, то они имеют шанс закрыть блок, и принести хозяину награду в 6% годовых. Если же монеты были использованы куда-либо, то срок их вылёживания «сгорает», и начинает накапливаться по новой у нового хозяина. То есть 6% – это верхний предел POS-награды, достижимый только в случае неподвижных денег. В настоящее же время, практическое значение роста денежной массы за счёт POS-награды составляет 4-5% годовых, и по мере расширения использования EmerCoin будет снижаться, достигая величин, принятых в устойчивых фиатных валютах, но не обращаясь в ноль.

В ответ на возражение: «У вас же инфляция из-за этих 6%», заметим, что EmerCoin демонстрирует дефляционность, то есть стоимость монеты растёт, причём довольно быстро. Это видно по курсу монеты, которая с начала года выросла примерно вчетверо. Такое расхождение с наивной моделью объясняется тем, что стоимость монеты отражает стоимость соответствующей экономики, и при росте экономики монета растёт тоже, и накачка денежной массы вследствие POS пренебрежимо мала по сравнению с другими факторами.

Эмиссия и сжигание

Из вышеизложенного можно сделать вывод, что денежная масса EmerCoin будет расти бесконечно. И это в первом приближении правда. Действительно, участники поддержания консенсуса продают свои услуги сети, и за это получают свеженапечатанные монеты. Однако, в системе EmerCoin действует механизм уничтожения монет, который противоположен эмиссии. Уничтожение монет происходит при использовании сервисов блокчейна – пересылке монет или покупке записей в NVS. То есть, в отличие от сети Bitcoin, где эмиссия ограничена, но механизм уничтожения отсутствует, в сети EmerCoin есть и неограниченная эмиссия, и процесс, призванный ей противодействовать. Участники, предоставляющие услуги сети, получают награду, а покупающие у сети услуги – платят за них.

Примерные оценки говорят, что с учётом известных факторов, сумма в 1 миллиард EMC будет достигнута примерно через 80 лет.

STUN rfc5389

Первым уникальным нововведением EmerCoin является использование протокола rfc5389, STUN для получения внешнего IP-адреса. Программе-кошельку за NAT-ом нужна знать внешний IP. Bitcoin его ранее получал (а другие криптовалюты и продолжают получать) запросом к централизованному серверу http://checkip.dyndns.org, но в настоящее время код этого запроса удалён из Bitcoin, и используется только UPNP или ручная конфигурация. Этот подход не подходил по ряду причин (например, UPNP некорректно работает за многослойным NAT-ом), поэтому решили избавиться от зависимости от централизованного сервера, и применить STUN, который как раз и применяется для этой цели в IP-телефонии, и является промышленным стандартом. В настоящее время группа Emer владеет наиболее полным списком публичных STUN-серверов в сети, и эти сервера используются STUN-подсистемой Emer для определения внешнего IP.

Оптимизатор транзакций

Другим уникальным нововведением, присущим только Emer, является оптимизатор транзакций.

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

Кроме того, этот алгоритм создаёт проблему «золотого песка», когда в кошельке скапливается множество транзакций-сдач на мелкие суммы.

В Emer для выбора подмножества транзакций применили подход динамического программирования, и алгоритм гарантировано находит такое подмножество, чтобы обеспечить сумму без сдачи, если такая возможна. В результате, по оценкам, средний размер транзакций снизился на 5%, что соответственно снизило скорость роста размера блокчейна. Детали об этом – в статье.

Распределённые динамические контрольные точки

К POS-криптовалютам могут быть применены некоторые экзотические атаки, специфичные для POS. Основной из них является «атака из глубины». Суть её состоит в том, что если некто получает контроль над кошельками, содержащими уже потраченные монеты, он может модельно откатить время к моменту, когда эти кошельки содержали монеты, и получив таким образом 51% монет, построить альтернативную цепочку блокчейна, более длинную чем основная, и таким образом изменить содержимое блокчейна задним числом.

Для предотвращения этой атаки используются контрольные точки (checkpoints), глубже которых система не пересматривает структуру блокчейна. В Bitcoin применены только hard checkpoints, встроенные в код кошелька, которые обновляются только с выходом нового релиза кошелька. Peercoin и Emer имеют также динамические checkpoints, когда разработчики рассылают по сети информацию о контрольных точках, что не требует обновления кода на стороне клиентов и держит актуальной структуру контрольных точек.

В текущем Peercoin и старой версии Emer контрольные точки мог рассылать только один узел. При рассылке их из нескольких узлов появлялась вероятность конфликта в сети. Cоответственно, выход из строя этого узла приводил к тому, что информация о динамических checkpoints переставала обновляться.

Emer, начиная с версии 0.5.0 содержит механизм распределённых децентрализованных checkpoints, в котором контрольные точки рассылаются независимыми узлами, и имеется алгоритм избегания «двойной рассылки». Это повышает надёжность сети, так как контрольные точки будут продолжать обновляться, даже если какие-то узлы выйдут из строя.

Смарт-контракты в стиле Ethereum

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

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

Name-Value Storage (NVS)

Основным же нововведением, имеющем внешнюю утилитарную ценность, является подсистема NVS – Name-Value Storage. Разработка этой подсистемы была инспирирована распределённым DNS от криптовалюты Namecoin.

И если подобная структура Namecoin была жёстко ориентирована на распределённый DNS, то Emer NVS представляет собою доверенное распределённое хранилище общего назначения с децентрализованным управлением. Подробнее об этой подсистеме можно прочесть на сайте.

Вкратце, подсистема представляет собою хранилище бинарных данных (до 20кб) любого вида. Данные ассоциированы с поисковым ключом длиной до 512 байт. Ключ уникален в пределах всей сети EmerCoin. То есть невозможно создать дубликат уже имеющегося ключа. Запись ассоциирована с платёжным адресом, принадлежащим владельцу некоего кошелька.

Записью может управлять только владелец платёжного адреса, и никто другой. Управление подразумевает создание новой записи взамен старой, или передача прав владения на другой платёжный адрес. Но при этом старая запись не пропадает, и тоже остаётся доступной из блокчейна. Таким образом, становится доступной полная история модификаций и смены прав владения той или иной записью.

Технически, такая запись в блокчейне представляет собою выход транзакции на 0.01EMC на платёжный адрес хозяина записи. Этот выход внутри script-контракта собственно и содержит содержимое NVS. Только владелец записи может потратить этот выход, так как только в его кошельке имеется соответствующий приватный ключ для подписи выхода. При трате этого выхода можно произвести модификацию записи, заменив в ней value или другие артибуты, включая платёжный адрес. В последнем случае, запись будет передана в кошелёк, содержащий адрес-получатель.

Взаимодействовать с подсистемой NVS можно либо посредством JSON API способом, подобным взаимодействию с кошельком Bitcoin, либо же через GUI кошелька, в специальной вкладке.

Именно эта подсистема стала основой для создания сервисов Emer, о которых пойдет речь в следующих постах.

Автор: Microsoft

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js