12 мая 2020

Binance Smart Chain — реализация смарт-контрактов для Binance Chain. Часть #1

Binance Smart Chain: параллельный блокчейн для реализации смарт-контрактов в Binance Chain

Оригинал: Binance Smart Chain: A Parallel Binance Chain to Enable Smart Contracts 

Введение

После запуска сети в апреле 2019 года, Binance Chain продемонстрировал высокую скорость и большую пропускную способность. Основное направление деятельности нашего чейна — собственное dApp Binance DEX, которое показало отличные результаты, в том числе низкие задержки при обработке миллионов трейдов за минимальное время. 

Гибкость и удобство использования часто находятся в обратной зависимости от производительности, а фокус на  возможности удобного выпуска активов и запуска торговых площадок также вносит свои ограничения. Наиболее востребованной функцией Binance Chain является расширение функционала при помощи Smart Contract и Virtual Machine. Эмитенты и владельцы цифровых активов стремятся добавить новые децентрализованные функции для своих активов или внедрить какой-либо вид управления и правил, чтобы сообщество могло участвовать в управлении.

Несмотря на высокий спрос по добавлению функционала смарт-контрактов, это трудное решение. Выполнение контрактов может замедлить биржевой функционал и добавить недетерминированные факторы к торговым транзакциям. Если допустить этот компромисс, возможно, будет простой идеей представить новую спецификацию VM на основе Tendermint, основанную на текущем базовом протоколе консенсуса и основной реализации RPC Binance Chain. Правда, все это потребует дополнительных усилий от всех разработчиков dApp, и не будет слишком приветствоваться.

Поэтому наше решение — к уже существующему Binance Chain добавить параллельный блокчейн, чтобы сохранить высокую производительность DEX и одновременно поддерживать функционал смарт-контрактов.

Перевод: Светлана. Редактор: Aleks. Материал подготовлен в рамках контент-проекта CryptoHedwig от CoinIndex. Хотите, чтобы мы написали о вашем проекте или взяли на себя полностью ведение блога компании на HUB-е? Давайте сотрудничать! Пишите — cryptohedwig@coinindex.agency

Принципы дизайна

После создания параллельного блокчейна в экосистеме Binance Chain, они оба будут работать бок о бок для предоставления различных услуг. Новая параллельная сеть будет называться “Binance Smart Chain” (далее “BSC”), в то время как существующая сеть остается с именем “Binance Chain” (или  “BC”).

Вот принципы дизайна BSC:

  • Автономный блокчейн: технически BSC представляет собой автономный блокчейн, а не надстройку , протокол второго уровня. Большинство основных технических и бизнес-функций BSC должны быть автономными, чтобы они могли нормально работать, даже если BC прекратит функционирование на короткий период.
  • Совместимость с Ethereum: Первой практичной и широко используемой платформой смарт-контрактов является Ethereum. Чтобы воспользоваться преимуществами зрелых приложений и сообщества, BSC выбирает совместимость с уже существующей сетью Ethereum. Это означает, что большинство dApp, экосистемных компонентов и инструментов будут работать с BSC и потребуют минимальных изменений; Узлу BSC потребуется аналогичная (или чуть выше) конфигурация инфраструктуры и навыки для работы и эксплуатации. Должен оставаться запас по мощности, чтобы поддерживать дальнейшие обновления Ethereum.
  • Стейкинг для участия в консенсусе и управлении: консенсус на базе стейкинга (PoS), является более экологичным и предоставляет гибкие возможности для управления сообществом. Ожидается, что этот консенсус должен обеспечить более высокую производительность сети в отличии от PoW систем, то есть более быстрое создание блоков и высокая пропускная способность.
  • Нативная кросс-чейн связь: BC и BSC будут написаны с собственной поддержкой кросс-чейн коммуникации. Протокол связи должен быть двунаправленным, децентрализованным и не требующим доверия. Он будет сосредоточен на перемещении цифровых активов между BC и BSC, токенов BEP2, и, в конечном итоге, токенов других, будущих стандартов. Протокол должен позаботиться о хранении минимального набора дополнительной информации on-chain.

Консенсус и кворум валидаторов

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

  1. Создавать блоки быстрее, чем Ethereum, например 5 секунд или быстрее
  2. Фиксированное время достижения финальности транзакций, в идеале, менее минуты
  3. Отсутствие инфляции, вознаграждение за блок собирается из платы за газ, который платиться в BNB
  4. Максимальная, на сколько это возможно, совместимость системы с Ethereum
  5. Обеспечение управления сетью через стейкинг.

Доказательство полномочий (Proof of Staked Authority)

Несмотря на то, что Proof-of-Work (PoW) признан всеми как отлично работающий на практике механизм построения децентрализованной сети, он не является дружественным по отношению к окружающей среде, а также требует большого количества участников для поддержки своей безопасности.

Ethereum и некоторые другие сети, такие как MATIC Bor, TOMOChain, GoChain, xDAI, используют Proof-of-Authority (PoA) или его варианты. PoA обеспечивает частичную защиту от атаки 51%, имеет лучшую эффективность и устойчивость к проблеме византийских генералов. Это может быть хорошей основой для построения сети.

Между тем, протокол PoA подвергается наибольшей критике за то, что он не настолько децентрализован, как PoW, так как валидаторы, то есть узлы, которые по очереди создают блоки, имеют полную власть и подвержены коррупции или атакам. Другие сети, такие как EOS и Cosmos, вводят различные типы Deputy Proof of Stake (DPoS), чтобы держатели токенов могли голосовать и выбирать ограниченное количество валидаторов. Это увеличивает децентрализацию и способствует управлению сообществом.

BSC предлагает объединить DPoS и PoA для достижения консенсуса, чтобы:

  1. Блоки производились ограниченным списком валидаторов
  2. Валидаторы по очереди добывали блоки в режиме PoA, аналогично консенсусному движку Ethereum Clique.
  3. Валидаторы ротируются в списке согласно размеру их стейка.

Кворум Валидаторов

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

BNB — это токен, используемый для ставок на BSC. 

Чтобы оставаться совместимыми с Ethereum и обновляться до следующих консенсусных протоколов, BSC решает использовать BC для управления стейкингом (см. раздел ниже “Стейкинг и управление”). На BC есть специальный стейкинг-модуль для BSC. Он будет принимать ставки на BSC от владельцев BNB и рассчитывать список узлов с наибольшей ставкой. Каждые сутки, в полночь по UTC, BC будет выдавать проверяемое кросс-чейновое сообщение «ValidatorSetUpdate», которым уведомляет BSC об обновлении списка валидаторов.

При создании блоков существующие валидаторы BSC проверяют, существует ли периодически сообщение «ValidatorSetUpdate», ретранслируемое на BSC. Если оно есть, они обновят список валидаторов после эпохи, то есть предварительно определенного количества времени необходимого для создания блоков. Например, если BSC создает блок каждые 5 секунд, и если период эпохи составляет 240 блоков, то текущий список валидаторов будет проверен и обновлен для следующей эпохи через 1200 секунд (20 минут).

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

Учитывая, что существует более ½ * N + 1 честных валидаторов, PoA блокчейны обычно работают надежно и корректно. Однако есть случаи, когда определенному количеству византийских валидаторов все еще удается атаковать сеть, например, через Атаку клонов. Чтобы обеспечить безопасность до уровня BC, пользователям BSC рекомендуется подождать, пока полученные блоки не будут подтверждены более чем ⅔ * N + 1 различными валидаторами. Таким образом, BSC можно доверять на уровне безопасности, аналогичном BC, и он может допускать до  ⅓ * N нечестных (византийских) узлов. 

С 21 валидатором, если время создания блоков составляет 5 секунд, для обеспечения подписей от  ⅔*N+1 участников, потребуется время (⅔ * 21 + 1) * 5 = 75 секунд. Любым критическим приложениям для BSC, возможно, придется ждать ⅔*N+1, чтобы обеспечить финальность. Тем не менее, помимо такой договоренности, BSC вводит механизм Slashing для наказания валидаторов за двойное подписание или нестабильность, что будет рассмотрено позже в разделе “Стейкинг и управление”. Slashing достаточно быстро приведет к тому, что атака клонов будет трудной или попросту невыгодной финансово. С этим улучшением ½ *N + 1 или даже меньше блоков достаточно для подтверждения большинства транзакций.

Награда

Все BSC валидаторы, в текущем списке, будут вознаграждены комиссией за транзакции в BNB. Поскольку BNB не является инфляционным токеном, это не вознаграждение за майнинг, как в сети Биткоин и Эфириум, а плата за газ. Поскольку BNB также является utility-токеном, с другими вариантами использования, делегаты и валидаторы будут по-прежнему пользоваться всеми остальными преимуществами владения BNB. 

Награда валидаторов (плата за газ), взимаемая с транзакций в каждом блоке. Валидаторы сами решают, сколько отдать делегатам, которые внесли свои стейки в BNB, голосуя за валидатора. Каждый валидатор будет по очереди производить блоки с одинаковой вероятностью (если он полностью онлайн 100% времени), поэтому в долгосрочной перспективе все стабильные узлы могут получить одинаковый размер вознаграждения. Между тем, ставки на каждого валидатора могут быть разными, поэтому возникает нелогичная ситуация, когда больше пользователей доверяют и делегируют одному валидатору, но потенциально получают меньше вознаграждения. Таким образом, для делегатов будет целесообразно отдавать свой голос тому, у кого меньше ставок, до тех пор, пока валидатор все еще остается доверенным (небезопасный валидатор несет риск потери части или даже всего стейка). В конце концов, мы придем к минимизации разброса в размере ставок среди всех валидаторов. Это, на самом деле, предотвратит концентрацию стейков и проблему “вечного победителя”, как уже можно наблюдать в некоторых других сетях.

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

Токеномика

BC и BSC используют одну и ту же экосистему для токенов BNB и BEP2. Это означает:

  1. Один и тот же токен может циркулировать в обеих сетях и передаваться между ними в обе стороны через механизм кросс-чейн связи.
  2. Обращение одного и того же токена должно управляться в обоих сетях, то есть общая эмиссия токена должна быть суммой предложения токенов в BSC и BC.
  3. Токены могут быть изначально созданы на BSC в формате, аналогичном ERC20, или на BC как BEP2, а затем созданы в другом. В обеих сетях существуют собственные способы связать их и обеспечить полное предложение токена.

Нативные токены

BNB будет работать на BSC так же, как ETH работает на Ethereum, поэтому он остается “родным” токеном для BSC и BC. Это означает, что BNB используется для оплаты большей части комиссий в Binance Chain и Binance DEX, а также для:

  • оплаты за газ при разворачивании смарт-контрактов на BSC
  • для внесения ставки за выбранных валидаторов BSC и получения соответствующей награды
  • выполнения кросс-чейн операций, например, передача токенизированных активов через BC и BSC

Начальный фонд (seed fund)

Определенное количество BNB будет сожжено на BC и созданы на BSC на стадии запуска. Эта сумма, названная “Seed Fund” будет использована для начального оборота на BSC после первого блока, который будет отправлен начальному ретранслятору BC-BSC (описанному в последующих разделах) и начальному списку валидаторов, представленному в генезис-блоке. Эти BNB используются для уплаты комиссий за транзакции на ранней стадии, чтобы передать большее количество BNB из BC в BSC через кросс-чейн механизм.

Кросс-чейн передача BNB обсуждается далее, но для передачи BC в BSC обычно необходимо заблокировать BNB на BC на адресе, управляемом системой, и разблокировать соответствующую сумму из специального контракта на целевой адрес передачи в BSC, или наоборот, если нужна передача токенов с BSC на BC. Это реализовано нативным кодом на BC и серией смарт-контрактов на BSC.

Другие токены 

BC поддерживает токены стандарта BEP2 и, в будущем, токены BEP8, которые будут родными активами сети, и их можно передавать, торговать (после листинга) благодаря быстрым транзакциям и финальности. Между тем, поскольку BSC совместим с Ethereum, будут поддерживаться токены ERC20 на BSC, который здесь называется «BEP2E». BEP2E может быть усовершенствован, с добавлением еще нескольких методов для представления дополнительной информации (название токена, его количества и адрес владельца, который определяет кросс-чейн связи). BSC и BC работают вместе, чтобы гарантировать, что один токен может циркулировать в обоих форматах с гарантией общей эмиссии.

 

Спасибо за внимание, в следующей части мы рассмотрим привязку (Binding) токенов и механизм кросс-чейн коммуникаций.

P.S. Если вы нашли ошибку или неточность и хотите помочь нам улучшить перевод, пишите на cryptohedwig@coinindex.agency