[БЕЗ_ЗВУКА]
[БЕЗ_ЗВУКА] Последняя тема,
которую я хочу обсудить, это масштабирование.
В самом начале я упомянул,
что Эфириум перерабатывает максимум 15 транзакций в секунду.
Эта цифра, конечно, может быть плавно увеличена за счет увеличения лимита блока,
но это ограничение существует не совсем случайно.
Если сегодня вы подключите свой лэптоп к сети Эфириум
и запустите полноценную ноду Эфириума у себя на лэптопе,
то вы заметите, что скорость, с которой ваш жесткий
диск записывает данные блокчейна,
вполне сравнима с той скоростью, с которой эти данные появляются на свет.
Вполне возможно, что если у вас не очень производительный лэптоп,
тогда просто из-за того, что ваш жесткий диск слишком медленный,
вы никогда не успеете за блокчейном.
Поэтому таким образом ускорять блокчейн дальше,
это не практично и это чревато тем, что только дата-центры смогут
быть полноценными нодами, то есть централизацией.
Поэтому это направление масштабирования имеет очень жесткие ограничения.
Другое направление — это то, о чем я уже говорил, это транзакции вне блокчейна.
То есть это разделение уровней транзакций и уровня расчетов.
Транзакции проводятся вне блокчейна,
и иногда мы делаем взаимозачеты уже на блокчейне.
Это более перспективная модель масштабирования,
но к ней тоже есть очень много вопросов,
и в некотором смысле она сопряжена с дополнительными рисками контрагентов.
В сети Эфириум важный вопрос кроме транзакций,
которые переводят средства с одного счета на другой, это вычисления.
Как вычислительные устройства, как компьютер, блокчейн Эфириума находится
где-то на уровне производительности компьютеров 80-х годов прошлого века.
То есть это очень-очень простенькое вычислительное устройство,
и сложные задачи вроде рендеринга мультфильмов
или каких-то крупномасштабных вычислений,
связанными с дейта-майнингом, все эти вещи, сейчас которые модны, big
data и так далее, они на таком простеньком компьютере не могут быть выполнены.
Но есть возможность проводить такие вычисления
вне блокчейна и использовать блокчейн только как арбитр.
То есть можно заложить в блокчейн контракт,
который не может выполнить весь объем требуемых вычислений,
но может проверить правильность любой части этих вычислений.
И, таким образом, если кто-то сомневается в правильности вычислений,
например, потому что они тоже провели их и они пришли к другому результату,
тогда они могут обратиться к этому контракту, указать на ту часть,
где есть разногласия, и блокчейн нас рассудит.
То есть смарт-контракт проведет только ту маленькую часть вычислений,
в которых есть разногласия,
и таким образом установит кто прав, кто виноват.
И это создает мотивацию для того,
чтобы выполнять вычисления вне блокчейна правильно, безошибочно.
Для этого тоже есть две возможности: либо,
как я уже сказал, в смарт-контракте записан
метод проверки какой-то части вычислений или мы
обращаемся к нашему любимому трюку — игре Шеллинга,
что все проводят вычисления,
потом шифруют результат, ставят ставки,
потом мы проводим расшифровку результата, и тот, кто проголосовал не за то,
что проголосовало большинство, они теряют свою ставку.
А те, кто вычисления провели правильно, эти ставки получают.
Это тоже возможность проведения вычислений вне
блокчейна и их проверки уже на самом блокчейне.
Но наиболее перспективное решение масштабируемости
Эфириума — это так называемый шардинг.
То есть когда мы один блокчейн разбиваем на много-много цепочек блоков,
которые бегут параллельно, они называются по-английски fiber,
по-русски их можно, наверное, назвать волокном.
И вот такая толстая связка волокон нам заменит тоненькую цепочку блоков.
На конференции Devcon3 в Канкуне,
в Мексике Виталий Бутерин представил дорожную
карту масштабирования по модели шардинга.
И это уже станет следующим поколением системы Эфириум.
Наверное, ее можно назвать Эфириум 2.
И, принимая передовой опыт
китайских товарищей, он это назвал «Один блокчейн — две системы».
Волокна Эфириум 2 разделены по адресам.
То есть, например, если у нас 256 волокон,
тогда каждое волокно будет содержать транзакции,
исходящие или, наоборот, адресованные тем адресам,
у которых бинарная репрезентация адреса
начинается или кончается с того 8-битового числа,
которое соответствует адресу самого волокна.
То есть на каждом волокне находятся разные адреса,
разные контракты живут на разных волокнах.
А между волокнами транзакции проходят асинхронно.
Сначала мы посылаем транзакцию на первое волокно и ждем,
пока эта транзакция будет включена в цепочку этого волокна,
и потом уже заголовок блока на волокне вместе с доказательством,
что наша транзакция включена в этот конкретный блок,
передаем как транзакцию на второе волокно.
И в этом волокне уже средства добавляются
в следующем блоке на счет адресата.
Для того чтобы перевести средства с одного адреса на другой,
мы разделяем транзакцию на дебет и на кредит.
Сначала снимаем средства с одного счета, потом ждем, потом добавляем к другому.
То есть транзакция перестает быть атомарной, она становится асинхронной.
Но это, в общем-то, не очень большая цена за то,
чтобы мы могли радикально увеличить пропускную способность системы.
И что самое интересное, что это можно сделать таким образом,
что Эфириум 2 — это просто смарт-контракт в блокчейне Эфириум 1,
то есть мы закладываем управляющий контракт на цепочку Эфириум,
который теперь уже становится Эфириум 1,
и этот смарт-контракт является
легким клиентом для всех цепочек в Эфириум 2.
Более того, в Эфириум 2 мы сразу можем реализовать Proof of Stake,
потому что те проблемы,
из-за которых Proof of Stake до сих пор не реализован в Эфириуме,
то есть что ставки находятся в той же цепочке,
по которой мы решаем консенсусную проблему,
вот этой циркулярности в данном случае нет.
Эта проблема просто не возникает.
Потому что ставки сделаны в Эфириум 1,
а консенсус, который они сохраняют, за которым они следят,
он находится на волокнах Эфириум 2.
Таким образом, Proof of Chain становится очень простым.
Просто валидаторы волокон, после того как они собрали блок,
заголовок посылают этому контракту в сети Эфириум,
и он проверяет то, что валидатор действительно имел право валидации.
Валидатор всегда выбирается псевдослучайным методом таким образом,
что вероятность становления его валидатором пропорциональна ставке,
которую он делает.
И если этот блок действительно является следующим и
валидатор не нарушил условия цепочки, то есть, например,
не валидировал два разных блока под одним и тем же номером,
тогда просто это включается в цепочку
того конкретного волокна.
А если валидатор допустил какое-то противоправное действие,
тогда его ставка сжигается, и он уже больше валидатором не является.
Таким образом, контракт в Эфириуме управляет большим
количеством волокон другого блокчейна,
где может быть уже даже другая виртуальная машина, они не
обязательно должны быть совместимыми, расчетная единица может быть другой.
То есть на этих волокнах может быть какая-то новая расчетная единица Эфир 2,
конвертируемость тоже не является частью минимального продукта.
И таким образом мы получаем систему, которая на несколько порядков
более производительна, чем старый добрый Эфириум.
[ЗВУК] [БЕЗ_ЗВУКА]