Часть 1. Дэн Лаример о EOS, операционной системе на блокчейне. Конференции Consensus 2017, Нью-Йорк, 22 мая. Теперь на русском.
Благодаря инициативе @vik у нас теперь есть полная русскоязычная озвучка доклада Дэна Лариме о блокчейн платформе асинхронных смарт контрактов EOS, включая не только основной доклад, но и последующую дискуссию с ответами на вопросы из зала. Рекомендую потратить немного времени (ролик всего на 40 минут) - оно того стоит, если конечно, вы интересуетесь криптовалютами, блокчейном и информационным будущим:
Ниже приведён полный текст доклада, если вам легче воспринимать информацию в текстовом виде, а не визуально. В конце этого поста также приведены ссылки на проекты, которые Дэн упоминает по ходу своего доклада - там можно получить дополнительную информацию как о самой платформе EOS, так и об используемых технологиях.
Доклад открыл вступительным словом Брендан Блумер (Brendan Blumer), исполнительный директор EOS; затем Дэн Лаример выступил с презентацией о EOS; и в дискуссии после доклада принял участие Брок Пирс (Brock Pierce) из Blockchain Capital.
Вступительное слово
Меня зовут Брендан Бломер, я предприниматель и венчурный капиталист. Я принимал участие во многих сферах, начиная от виртуальных валют и онлайн-видео игр и заканчивая продажей недвижимости.
Пару лет назад я занялся блокчейн технологиями и начал изучать индустрию в поисках платформ, которые, я думал, помогут сделать блокчейн настоящим мейнстримным предприятием.
Я нашел очень талантливую группу людей, которые работали в крупнейших интеллектуальных компаниях.
Мы вместе работали над проектом последние девять месяцев, и я очень рад рассказать вам немного больше о EOS, но без дальнейших церемоний я бы хотел представить вам нашего технического директора Дэна Ларимера.
Основной доклад Дэна Ларимера
Спасибо Брендан, сегодня я собираюсь рассказать о EOS, но прежде, чем я это сделаю, начну с того, как все начиналось.
Биткоин зародился в 2008 году, доказав работоспособность концепции распределенной бухгалтерской книги и с тех пор начали зарождаться блокчейн технологии, захватывающие всё больше приложений.
Ethereum пытается заключать универсальные смарт контракты на основе блокчейна. И мы считаем, что в будущем всё будет на блокчейне и для этого потребуется абсолютно новый уровень производительности.
Так что же такое высокая производительностью?
Вот примеры из реальной жизни: целых 20,000 транзакций в секунду нужно лишь для создания Visa и MasterCard, не говоря уже о других платежных системах. 52,000 лайков в секунду на Facebook, не включая новые посты, голосования и другие действия, которые совершают пользователи. Когда вы работаете в финансовой сфере и пытаетесь торговать, иногда это тысячи транзакций в секунду на одной торговой паре.
Так что представьте себе объединение всего этого в одну платформу, да такое, чтобы они хорошо взаимодействовали.
Для этого потребуются миллионы транзакций в секунду. Это огромный масштаб. Это то, что нужно нашей отрасли сейчас, и это то, что технология блокчейна дает нам сегодня.
Существует огромный разрыв между тем, что мы можем сделать и тем, где мы должны быть. Поэтому я собираюсь поговорить о том, как мы доберемся туда, и я собираюсь начать с истории моих четырёх лет разработок в области блокчейн.
Еще в 2013 году я ввёл понятие блокчейн, как децентрализованной автономной компании. Сейчас это называется ДАО и это общепринятый термин, но впервые его предложил я в своём блоге.
Тогда я намеревался сделать BitShares – децентрализованную биржу на блокчейне.
В то время единственными блокчейнами были биткойн-клоны и Ripple. У меня были совершенно другие требования.
Для работы биржи нужны быстрые транзакции, которые не могут быть переупорядочены. Вам нужна окончательность очень быстро и поэтому требуется очень низкая латентность и очень высокая пропускная способность.
Для того, чтобы добиться этого я создал алгоритм делегированного подтверждения доли и это обеспечило нам быстрые подтверждения. Но я всё еще использовал технологию и архитектуру, взятые у Биткоина.
Поэтому в 2015 мне пришлось переделать всё заново. Чтобы получить более высокую производительность я заимствовал технологии биржи Lmax, которая обрабатывает миллионы транзакций в одном потоке и создал графен. Доказано, что он может совершать сто тысяч транзакций в секунду на локальном компьютере в распределенной среде.
Он может посылать 20,000 транзакций в секунду. Это одноранговая пиринговая сеть в Интернете, организованная разными людьми, не только мной.
Так что это очень проверенная технология. Мы также ввели другие инновации, включая самофинансирование и саморегулирование. Поэтому блокчейн может самостоятельно нанимать людей для работы и быть уверенным, что его развитие будет продолжаться.
Мы также ввели уровни доступов для аккаунтов. В BitShares, как вы знаете, у вас нет открытых ключей и хэшей, которые вы отправляете. У вас есть имена учётных записей, и вы отправляете деньги друг другу и обратно по именам. Это очень удобно и просто. К тому же в BitShares самая продвинутая система уровней доступа при работе с несколькими обязательными подписями.
С точки зрения мультисиг вы подписываете транзакции в блокчейне и вы можете изменить ваши ключи, не влияя на других участников, которые вам предоставили мультисиг.
Например, я могу позволить другому аккаунту управлять моей учетной записью и для этого мне нет необходимости менять все ключи. Поэтому я призываю вас изучить возможности динамической иерархической структуры мультисигов.
Большие длинные слова, но там много свойств и это было новшеством в BitShares.
Затем в 2016 году мы захотели сделать блокчейн мейнстримом, и это означало создание социальных сетей на блокчейне.
У социальных сетей совершенно другие требования, это ещё больший вызов, чем создание децентрализованной биржи.
Люди ожидают, что смогут писать, голосовать и комментировать бесплатно. У вас должны быть бесплатные транзакции и бесплатная регистрация – вы не захотите взимать плату за регистрацию с пользователей.
Нет требования «Знай своего клиента» и других барьеров на вход, иначе люди просто покинут вашу социальную сеть. Платформа должна быть настолько проста в использовании, чтобы люди даже не осознавали, что они используют блокчейн.
И мы достигли этого в STEEM – первой социальной сети на блокчейне, в которой есть и стар и млад. Люди, которые никогда не сталкивались с криптой, вовлекаются, когда осознают, что в STEEM они могут зарабатывать криптовалюту на тысячи долларов за постинг простых уроков по макияжу.
В 2016 году мы поняли это. В январе началась работа, в феврале начал работу блокчейн, к началу марта мы запустили веб сайт, три месяца спустя мы уже были в списке топ 10,000 сайтов в мире.
У нас есть 15,000 активных пользователей, которые голосуют и пишут посты каждый день и 35,000 уникальных посетителей в день на STEEM. Это минимум. Так как есть множество других сайтов клонов, ведь STEEM это просто блок эксплорер публичного блокчейна публичной базы данных.
Есть много неискушенных пользователей, от которых нельзя ожидать, что они защитят свой компьютер и полностью защитят свой секретный ключ, поэтому мы должны сделать их ключи устойчивым. Чтобы в случае, когда их ключи будут скомпрометированы, они могли бы вернуть свою учетную запись. Потому что это не просто потеря денег, это ещё и потеря индивидуальности, всех своих подписчиков и всего остального. Им нужна возможность вернуть вой аккаунт, вернуть свое имя. Или они не станут использовать платформу. Это справедливо не только для социальных сетей, но и в других приложениях пользователи ожидают примерно одного и того же.
Поэтому STEEM внедрил механизм восстановления взломанных аккаунтов. Для этого мы используем любой старый ключ владельца в сочетании с другим лицом, выполняющим проверку подлинности - это тот, кто создал учетную запись для вас.
Вы можете вернуть назад свой аккаунт, и эта возможность была использовано много много раз многими пользователями, когда их учетные записи были взломаны.
И мы усилили безопасность путем блокировки счетов в течение определенного периода времени. Так что, если вас взломают, у вас есть шанс обнаружить это и успеть восстановить аккаунт до того, как все средства на нём исчезнут навсегда.
Время - главный фактор безопасности. Вы не узнаете, что ваш биткоин кошелёк взломан, до тех пор, пока деньги не исчезнут и будет уже слишком поздно что-то делать с этим. Здесь, если вас взломают, вы получите уведомление. Эй, я это на авторизовывал! Вы обращаетесь к своему партнёру по восстановлению. Вы возвращаете свою учетную запись. Вы не теряете денег, вы отменяете транзакцию. Это именно то, что я делал последние несколько лет.
Я считаю, что STEEM является ярким примером того, как должны выглядеть децентрализованные приложения: неотличимыми от централизованных аналогов и соответствовать ожиданиям пользователей.
Неожиданный факт заключается в том, что STEEM и BitShares оказались наиболее используемыми блокчейнами по количеству транзакций, создаваемых фактическими пользователями.
Это доля рынка Биткоина, Ethereum, STEEM и BitShares в терминах фактических транзакций на блокчейне. Не многие понимают, но это настоящая инициатива снизу. У нас не было большого финансирования, но это действительно показывает, что мы сделали то, чем люди могут пользоваться. Пользователи взаимодействуют на них, и мы сейчас используем менее 1% вычислительной мощности этих сетей. Есть ещё много возможностей для их масштабирования.
Теперь представьте, что вы поместили их всех в один общий блокчейн и вы поймёте, что он будет очень переполнен, как на некоторых других платформах.
Где мы находимся сегодня? Сегодня у нас есть компьютер и множество людей, пытающихся создавать приложения поверх него. Но у этих разработчиков приложений есть огромный пробел, который надо закрыть. Потому что каждому приложению требуется целая куча сервисов, в которых им нужна операционная система, которая обеспечивает все те вещи, которые являются общими для STEEM и BitShares: управление аккаунтами, восстановление, управление правами доступа, базы данных.
Поэтому каждое приложение пытается преодолеть этот пробел, и все делают это по-своему, что запутывает пользователей, и это сложно всё сделать правильно.
Кроме того, поскольку всё это реализуется на уровне приложений и выполняется в относительно неэффективной среде сценариев, это похоже на запуск Windows Vista на 286 процессоре. Она просто потребляет слишком много ресурсов, и для вашего приложения не остаётся места, потому что у вас заканчивается газ.
Это то, что вы видите в централизованных приложениях. Поэтому мы не хотим, чтобы платформа мешала приложению.Что мы хотим, это чтобы на платформе можно было бы создавать приложения, такие как STEEM, то есть нужна поддержка веб-приложений, чтобы пользователям не приходилось бы загружать и устанавливать что-либо.
Мы ориентируемся на миллионы пользователей. Если вы не можете поддерживать миллионы пользователей, вы не сможете построить бизнес, который будет расти и вернуть ваши вложения. Или стоимость транзакции будет настолько высокой, что вы не будете конкурентоспособны по цене с вашими централизованными соперниками.
Это должно быть бесплатно для ваших пользователей. Вы не захотите взимать микро-платежи каждый раз, когда кто-то загружает вашу веб-страницу. Вы захотите предложить им фримиум модель и использовать разные варианты монетизации, если планируете взимать плату с пользователей за что-то. В любом случае, этот выбор должен быть за приложением, а не за платформой, на которой оно работает.
Приложение должно быть отзывчивым. Когда пользователь нажимает кнопку «Отправить», ответ должен прийти немедленно. И должна быть возможность апгрейда. Никакой бизнес план, никакое приложение не переживёт первый контакт с реальным рынком. Вам нужна возможность вносить изменения, чтобы улучшать ваш бизнес и адаптироваться к постоянно меняющимся условиям рынка и добавлять новые функции, которые нужны пользователям. Если вы не сможете этого делать, пользователи уйдут от вас.
Это в дополнение ко всем другим фишкам, которые вам нужны. Имена в аккаунтах означают, что не нужны ключи и причудливая криптография; тысячи действий в секунду, восстановление учётных записей. И кое-что, о чём часто забывают - это исправление багов. Программирование - это несовершенное искусство. Есть только один способ написать код правильно и бесконечное количество способов допустить ошибку. Так что статистически вам гарантировано, что когда-нибудь появится ошибка, и иногда ошибка в коде может стоить миллионы, как это было в случае с The DAO и в других случаях.
Поэтому не важно, как тщательно вы тестируете программы, сколько глаз смотрели ваш код, сколько бы формальных проверок вы не делали, какой язык программирования вы используете - всегда будут ошибки в стеке, которые окажут на вас влияние.
Поэтому ошибки и возможность обновления идут рука об руку и вам нужно быть готовыми к этому. И если вы не готовы, значит у вас нет реалистичного представления о разработке программного обеспечения или бизнесе.
EOS предлагает первую операционную систему на блокчейне. Она предоставляет каждому приложению свою собственную базу данных с несколькими индексами, сортировками по индексам. Она обрабатывает все права доступа, имена аккаунтов, восстановление учётных записей и вам не нужно беспокоиться обо всём этом. Вы можете просто думать только о том, что вы хотите, чтобы ваши пользователи делали и какие у них должны быть права доступа, планируя взаимодействие между внутренними приложениями и внутреннюю связь приложений. И всё это делается параллельной обработкой, поэтому все приложения могут запускаться параллельно, и вы можете содержать узлы, которые запускают только те приложения, которые нужны именно вам. Вам не нужно обслуживать бизнес всех, вы можете обрабатывать только свой собственный бизнес.
Хотя производители блоков должны запускать всё, они могут распределять свою рабочую нагрузку по кластеру машин, если это необходимо. Так что они могут масштабироваться горизонтально. Все это стало возможным благодаря асинхронной связи между приложениями, и поскольку наши приложения с самого начала разрабатываются с асинхронной связью, это также означает, что наши приложения разработаны и для связи с другими блокчейнами, связь с которыми по определению является асинхронной.
Внутренняя связь между локальными приложениями, а также внешняя связь с другими копиями EOS или другими блокчейнами, поддерживающими совместимые протоколы доступа, позволяет вам создавать частные корпоративные сети, которые могут связываться с публичными блокчейнами. Так что EOS - это первая операционная система на блокчейне, обеспечивающая гораздо более быструю разработку приложений и значительно снижающая затраты.
Я хочу вернуть вас к STEEM, где мы используем такой же подход к дизайну приложений, и мы смогли с двумя инженерами построить полноценный блокчейн на C++ всего за несколько месяцев, и такой же подход можно использовать и здесь, за исключением того, что вам не нужно делать всё то, что мы уже сделали в STEEM, так что разработка ваших приложений должна пойти намного быстрее.
Я хочу немного углубиться и рассказать, как сделать всё это. Поэтому я приношу свои извинения перед технически подготовленной аудиторий, но цель состоит в поддержке тысяч децентрализованных приложений коммерческого масштаба, путем их параллельного запуска и устранения узкого места производительности одиночного центрального процессора.
Однопоточная производительность никуда не денется. Интел тратит миллиарды долларов каждый год, пытаясь улучшить производительность на несколько процентов. Все стремятся к параллельности, так работают видео карты и многоядерные процессоры.
Я уже говорил об асинхронной связи и разграничении процессов аутентификации и действий при построении смарт-контрактов - это целая куча вычислений, которые нужно произвести, чтобы убедиться, кому и что позволено делать, есть ли достаточные права доступа и необходимый баланс.
Но после того, как вы решили, что им разрешено делать это, фактическое действие, которое вы делаете, - это уменьшаете баланс одного аккаунта и увеличиваете баланс другого.
Мы разделяем эту логику на шаги только для чтения, которые могут выполняться параллельно, и шаги записи, которые следует запускать последовательно. Это повышает производительность и даёт много возможностей для распараллеливания операций и оптимизации.
Ещё одна вещь, которую мы делаем для поддержания масштабируемости - это публикация исходного кода в блокчейне вместо записи скомпилированной версии.
Исходный код - это понятный человеку код, который мы на самом деле пишем. Когда вы публикуете исходный код, вы можете ориентироваться на любую архитектуру, вы можете менять виртуальные машины, вы можете использовать Интел или ARM, и это дает огромную гибкость для оптимизации производительности уже после того, как вы опубликовали свое приложение.
Это также означает, что мы устраняем концепцию газа. Газ - это когда мы должны подсчитывать точное количество инструкций. Вы можете менять условия выполнения программы, не меняя ее назначения, а исходный код фиксирует намерение пользователей, тогда как способ выполнения больше связан с конкретной реализацией.
У нас уже есть алгоритм делегированного подтверждения доли для выбора производителей блоков, которые принимают решения в сети. Производители блоков в любых блокчейнах имеют возможность решать, какие транзакции включать в блоки, что означает что они могут понимать транзакции и понимать аккаунты и это может быть использовано для замораживания сломанных учетных записей. Поэтому, если произойдёт ситуация, как в The DAO, учетную запись можно заморозить до тех пор, пока люди не поймут, как нужно исправить программу, вместо того, чтобы делать хардфорк всей сети.
У производителей блоков есть власть совместным решением обновить один контракт, одно приложение, не затрагивая всех остальных. Это означает, что вам не нужно делать хардфорк сети, чтобы исправить ошибку в одном приложении.
В идеале приложения будут иметь собственную встроенную систему управления для принятия решения о том, когда следует обновлять код. Этот механизм используется в качестве последнего спасительного средства, когда приложение облажалось по крупному или когда приложение настолько плохо, что не может обновить само себя или, возможно, в приложении отменена возможность обновления, потому что оно отлично работало в течение двух лет, и никто не ожидал, что в нём есть ошибка и обновления были отключены, чтобы люди могли пользоваться им как автономным приложением.
Но мы знаем, что нет ничего идеального и даже после годов тестирования и использования люди всё ещё находят проблемы, требующие улучшения кода, например в Open SSL.
Ещё один уровень гибкости это возможность поддержки нескольких виртуальных машин, так как вся связь между приложениями осуществляется на блокчейне путём сообщений с четко определенным форматом.
Виртуальные машины не волнует, на каком языке или виртуальной машине работает другое приложение. Поэтому мы ожидаем, что это будет очень быстрый язык, такой же быстрый или даже быстрее, чем Lua, и это легко изолируемый код.
WebAssembly - это стандарт, у которого есть много сторонников в индустрии, и его можно сделать детерминированным. Это то, что мы сделали сейчас, и поскольку у нас есть возможность управления, мы можем добавить другие языки и другие системы для расширения в будущем. Мы говорили о избираемых производителях блоков, но мы также предлагаем новую концепцию, рассматривайте её как одноранговое соглашение об условиях обслуживания, которое мы называем Конституцией. Идея заключается в том, что каждая из двух сторон может подписывать контракты с контрагентами, поскольку они подписывают один и тот же контракт, то все пользователи являются участниками одного договора друг с другом, такой договор будет юридически обязательным для всех, устанавливая общую юрисдикцию для всех. Каждый раз, когда вы подписываете транзакцию, вы также подтверждаете своё согласие с договором, а процесс управления позволяет сообществу обновлять Условия обслуживания по мере необходимости. И это значит, что если возникает спор, потому споры случаются, ошибки случаются, да. Тогда есть процесс и уже установленная юрисдикция и вам не нужно беспокоиться о том, что люди привлекут вас к суду в какой-либо зарубежной юрисдикции в соответствии с местными законами, о которых вы понятия не имеете.
И, конечно, у нас здесь есть финансирование, дальше я расскажу о том, как самоподдерживаются такие системы как BitShares и STEEM. Последнее, на чём мы сосредоточились - это удобства для разработчиков. Мы искренне считаем, что разработчики должны иметь возможность подстраивать приложения под потребности пользователей, а не вынуждать пользователей мириться с ограничениями базовой платформы.
Устранение комиссий является одной из таких вещей. Если платформа требует комиссионных, то вы должны адаптировать пользователей к оплате комиссий, если платформа использует хэши как имена учетных записей, вам придётся адаптировать пользователей к этому.
Мы считаем, что программы должны быть достаточно гибкими, чтобы пользователи думали о том, какие возможности им нужны, а разработчики могли бы реализовать эти пожелания.
Всё абсолютно прозрачно, все базы данных имеют определённую схему, поэтому вы можете написать свой блок эксплорер и исследовать состояние всего блокчейна в удобном для человека виде. Все сообщения, проходящие между всеми приложениями, также определяются схемой, поэтому каждый может читать всё, что происходит между всеми, благодаря системе управления доступами.
Скажем, я даю вашему аккаунту право торговать за меня на бирже и я даю право другому пользователю постить в социальной сети от моего имени и эти права будут разделены друг от друга и ими легко управлять с помощью мультисига и структурирования. Итак, у нас есть новый уровень обобщения архитектуры прав доступа STEEM и BitShares.