Масштабирование Ethereum, путем увеличения блока
Никто не задумывался, где хранится блокчейн ? Думаете у майнеров ? Ответ — нет. Он хранится у тысяч людей, которые поставили себе полные ноды.
Вот тут https://www.ethernodes.org/network/1 можно посмотреть распределение таких серверов по миру. Это обычные люди, тру последователи и их труд не оплачивается. Они устанавливают у себя клиент Geth или Parity, скачивают полностью весь блокчейн в процессе синхронизации и именно на их серверах стоит Ethereum Virtual Machine
https://ethereum.stackexchange.com/questions/5975/what-are-the-types-of-nodes-in-ethereum
Когда-то блокчейн эфира весил несколько гигов и это было просто забавным поставить себе такую программу и быть причастным к чему-то большому. Потом это стало более сотни гигабайт и людям надо было делать себе апгрейд, т. к. для такого большого количества запросов, которое делает EVM нужен SSD (обладающий куда большей скоростью случайного чтения/записи, чем HDD). Сейчас говорят, что размер блокчейна превысил 500 гигов и близится к терабайту. Т. е. Людям, которые являются узлами децентрализованного суперкомпьютера надо делать апгрейды за свой счет, чтобы оставаться в системе. Немного несправедливо, вам не кажется ?
И тут я вспомнил про бардак, который был в сети эфира в начале этого месяца. Как быть, если опять какой-нибудь бредовый дАпп или стремная биржа устроит такой спам в сети ? Или кто-то сделает парочку нормальных дАппов и они будут реально работать и приносить пользу, но грузить сеть. Каспер + шардинг решают проблему, но есть большой вопрос — когда ? А может есть какое-то промежуточное решение ?
На данный момент блок эфира ограничен 8M лимита газа на транзакции в нем. И все вознаграждение за подтверждение блока достается майнерам. А это 3 Eth эмиссии + сумма всех комиссий в блоке.
Можно выпустить некий апгрейд, чтобы поднять лимит газа в блоке раз в 5–10. Это увеличит предельный размер блока и тем самым частично решит проблему масштабируемости до лучших времен.
Но тут есть проблема.
Как мы знаем, обработкой транзакций занимаются полные ноды, их около 15К, они занимают почти терабайт на SSD и судя по всему работают почти на пределе. x10 блоки не все они потянут и это будет ударом по децентрализации. Кому-то придется закрываться и это будет нехорошо, что человек много лет поддерживал полную ноду, докупал SSD, а тут ему поставили перед фактом — вкладывайся еще или забивай на этот процесс.
Неплохим ходом было бы начать вознаграждать владельцев полных нод за их работу. Но за чей счет ? Если бы майнеры с ними как-то поделились было бы прекрасно. Но нельзя менять правила игры прямо на ходу, т. е. воткнуть в роадмап такой апгрейд это уже серьезное нарушение. Надо сделать так, чтобы майнеров это не задевало.
Вариант, который приходит сходу в голову — участить блоки на 10%, чтобы майнеры чаще получали свое вознаграждение, а комиссии разделить между владельцами полных нод. Понятно, что это довольно серьезное обновление и надо делать хардфорк. Но если Каспер с шардингом будут задерживаться, то сеть эфира в случае очередного хайпа может оказаться слабым звеном в развитии криптовалютной отрасли и как промежуточное решение нечто подобное прекрасно бы подошло.
Апд. После небольшого исследование выяснилось, что полная нода может занимать около 100 Гб, если “подрезать” ее (pruning). Более подробно вот тут https://medium.com/coinmonks/how-a-pruned-ethereum-node-can-fully-verify-the-blockchain-bbe9f29663ed
Этот процедура удаляет прошлые, промежуточные состояния блокчейна (например посмотреть состояние какого-либо аккаунта по состоянию 2 года назад), но при этом мы все еще имеем полную ноду, которая может верифицировать транзакции. И мы можем посмотреть состояния блокчейна на любой момент времени, просто это будет занимать больше времени.
Также выяснилось, что не существует trustless метода проверки, что нода является действительно Полной. Т. е. в теории, если мы решаем вознаграждать Полные ноды, томогут появиться злоумышленники, которые будут выдавать себя за них.
Резюме.
- Награждать полные ноды нету ни технической возможности ни реальной необходимости, ввиду того, что 100 Гб не такое уж и много, чтобы быть угрозой децентрализации.
- В теории размер блока можно поднять в несколько раз, например раз в 5–10 и ноды с этим справятся.
- Но т. к. вопрос размера блока решается майнерами, то вряд ли они это сделают. В случае большого количества транзакций им выгоднее текущая модель, по которой в блок попадает тот, кто больше платит. -> Вопрос к Ethereum Foundation, не хотят ли они увеличить размер блока в своем следующем хардфорке