Литмир - Электронная Библиотека

И теперь, чтобы проверить все транзакции, узлу нужно загружать расширенный блок – это основной блок + отдельный свидетель.

Это была мягкая вилка, которая была реализована в 2017 году.

Она работает в текущей версии блокчейна биткойна.

Однако ограничение размера блока все равно фиксируется на одном мегабайте.

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

И это улучшение называется Segregated Witness 2X.

Это была запланированная жесткая вилка, которая должна была состояться в ноябре 2017 года, но не прошла из-за отсутствия поддержки сообщества.

Однако при этом часть сообщества, не приняв SegWit2x, произвела жесткий форк сети биткойна, увеличив размер блока биткойна до 8 Мб.

И свою ветку они назвали Bitcoin Cash.

15 мая 2018 года был обновлён протокол сети Bitcoin Cash с целью увеличения размера блока до 32 МБ.

Разработка смарт-контрактов в Ethereum - _7.jpg

Теперь давайте рассмотрим, как Ethereum относится к размеру блока.

В Ethereum размер блока может меняться и ограничен лимитом газа, указанным в заголовке блока.

Лимит газа на блок – это максимально допустимое количество газа в блоке для определения того, как много транзакций может поместиться в блок.

Например, у нас есть 5 транзакций, и каждая транзакция имеет лимит газа в 10, 20, 30, 40 и 50. Если лимит газа на блок – 100, тогда первые 4 транзакции могут поместиться в блок.

И майнеры решают какие транзакции поместить в блок.

Если попытаться включить транзакцию, которая использует больше газа, чем текущий лимит газа на блок – она будет отвергнута сетью и ваш Эфириум клиент выдаст вам сообщение “Транзакция превышает лимит газа на блок”.

Протокол позволяет майнеру блока регулировать лимит газа на блок на 0.0976 % в любом направлении.

Кто в Ethereum решает какой будет лимит газа на блок? – Майнеры. Отдельно от регулируемого протокола, стратегия с лимитом газа около 5,000,000 стоит по умолчанию в большинстве клиентов.

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

Этот размер переменного блока улучшил транзакционную скорость.

Ожидается, что он еще больше улучшится, когда Ethereum перейдет к доказательству ставки.

Мы только что обсудили сетевое решение для повышения скорости транзакций.

Теперь давайте обсудим механизм проведения транзакций вне сети.

Разработка смарт-контрактов в Ethereum - _8.jpg

Одним из решений для увеличения скорости транзакций является выгрузка некоторых транзакций из сети.

Это осуществляется между доверенными сторонами.

И эта функция в биткойне называется платежным каналом.

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

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

И примером такого решения служит сеть Lightning Network.

Сеть Lightning Network состоит из узлов и двунаправленных платежных каналов.

Платежный канал устанавливается между двумя узлами сети.

Каждый из двух узлов платежного канала блокирует в блокчейне Биткоина некоторую сумму средств для канала.

В дальнейшем пропускная способность канала будет определяться суммой заблокированных узлами средств.

Разработка смарт-контрактов в Ethereum - _9.jpg

Решение Ethereum расширяет эту концепцию платежного канала до смарт-контрактов.

Каналы состояния – это расширение концепции платежного канала для любой транзакции на уровне приложения.

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

Каналы состояния работают путем «блокировки» некоторой части состояния блокчейна в многосегментный контракт, контролируемый определенным набором участников.

Состояние, которое «блокировано», называется депозитом состояния.

Это может быть определенное количество эфира или токенов.

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

Обновление состояния канала всегда осуществляется единогласным решением сторон.

Все стороны подписывают и сохраняют свои собственные копии каждой транзакции вне сети.

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

Разработка смарт-контрактов в Ethereum - _10.jpg

Примером реализации такого протокола служит сеть Raiden Network, работающая поверх Эфериума.

Еще один подход к увеличению скорости обработки транзакций называется Sharding.

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

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

То есть скорость блокчейна ограничивается скоростью отдельного узла сети.

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

Поэтому подход заключается в blockchain sharding, где мы разбиваем все состояние сети на кучу разделов, называемых shards, которые содержат свою собственную независимую часть состояния и историю транзакций.

В этой системе определенные узлы обрабатывают транзакции только для определенных shards, тем самым в целом увеличивая пропускную способность транзакций.

Sharding является перспективным механизмом для масштабирования блокчейна.

Однако при таком подходе требуется решить такие сложные задачи, как меж shards коммуникация и общая безопасность такого разделенного блокчейна.

Децентрализованные приложения

Для понятия децентрализованного приложения может быть не одно определение.

Разработка смарт-контрактов в Ethereum - _11.jpg

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

Это открытый исходный код. В идеале код должен быть самоподдерживаемым и все изменения в коде должны определяться консенсусом или большинством его пользователей. И код должен быть доступен для проверки.

Децентрализация. Все записи о работе приложения должны храниться в общедоступной и децентрализованной цепочке блока.

Валидаторы цепочки блоков должны поощряться.

Протокол. Сообщество приложения должно согласовать криптографический алгоритм, чтобы показать доказательство ценности.

Например, Bitcoin использует Proof of Work (PoW), и Ethereum в настоящее время использует Proof of Work с планами гибридного Proof of Work/Proof of Stake (PoS) в будущем.

Если мы придерживаемся вышеприведенного определения, первым децентрализованным приложением был фактически сам биткойн.

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

3
{"b":"751545","o":1}