Масштабирование Ethereum: технический обзор решений уровня 2
11 апреля 2023 г.По мере роста популярности Ethereum потребность в эффективной и масштабируемой сети становится все более актуальной. Текущие ограничения уровня 1 Ethereum, в том числе медленное время транзакций и высокая плата за газ, препятствуют его способности справляться с растущим спросом.
Вот тут-то и приходит на помощь масштабируемость уровня 2.
Вынося часть вычислений за пределы сети, решения уровня 2, такие как каналы состояний, Plasma и Rollups, стремятся повысить пропускную способность транзакций и снизить комиссию, предоставляя более эффективную и масштабируемую сеть как для разработчиков, так и для пользователей.
По мере распространения децентрализованных приложений и возможности их массового внедрения понимание и использование решений уровня 2 становится все более важным для разработчиков и пользователей, чтобы обеспечить непрерывный рост и успех экосистемы Ethereum.
Понимание каналов состояний и их работы
Каналы состояния, основанные на Filecoin и Consensys, были первым решением масштабируемости, с которым я когда-либо сталкивался, для решения проблем, связанных с проблемами Ethereum (масштабируемость).
В то время я погрузился в любопытство, чтобы узнать больше, и нашел этот удивительный блог с помощью Graph, протокола индексации для запросов к таким сетям, как Эфириум и IPFS.
Их платформа позволяет разработчикам создавать открытые API, называемые подграфами, которые обеспечивают легкий доступ к данным.
https://thegraph.com/blog/the- график-приносит-состояние-каналов-в-эфириум/?embedable=true
Каналы состояний обеспечивают очень широкий и простой подход к взаимодействию блокчейна и в основном проводятся вне сети. Это снижает риск для участников без ущерба для безопасности.
Одной из наиболее важных особенностей является то, что он также помогает решить проблемы, связанные с высокой комиссией за газ и медленным временем обработки транзакций, которые являются хорошо известными характеристиками сети Ethereum.
Это было сделано путем предоставления двум или более сторонам возможности проводить несколько транзакций вне сети без необходимости транслировать каждую транзакцию в сеть Ethereum.
Вместо этого в сеть передаются только начальное и конечное состояния канала, что снижает объем необходимых вычислений и повышает масштабируемость.
Наконец, в отличие от сетей, каналы работают с фиксированным набором живых участников. Сети каналов помогают облегчить некоторые из этих проблем, однако из-за проблем с маршрутизацией и ликвидностью они в настоящее время нежизнеспособны в качестве решений (наряду с усугублением проблемы копирования, упомянутой выше).
Постоянная работа каналов также не решена.
Случаи использования
Государственные каналы имеют широкий спектр реальных вариантов использования, от микроплатежей и игр до децентрализованных финансов (DeFi) и одноранговых торговых площадок.
Одним из примеров государственного канала в действии является Raiden Network, децентрализованная автономная платежная сеть, которая использует государственные каналы для обеспечения быстрых и дешевых платежей на сеть Эфириум.
Кроме того, государственные каналы могут снизить комиссию для пользователей за счет минимизации количества транзакций, которые необходимо выполнить в основной цепочке.
Это связано с тем, что только начальное открытие и окончательное закрытие канала требуют транзакции в основной цепочке, а все последующие транзакции могут выполняться вне цепочки.
Кроме того, государственные каналы могут обеспечить повышенную конфиденциальность для пользователей, поскольку транзакции, которые происходят вне сети, не видны для более широкой сети. Это может быть особенно важно для определенных случаев использования, например, в финансовых транзакциях или других важных приложениях.
Ниже представлен монорепозиторий по каналу состояния различных приложений, использующих канал состояния:
https://github.com/statechannels/apps?embedable=true
Изучение преимуществ и механизмов плазмы
Дуэт, основанный основателем Ethereum Виталиком Бутериным вместе с Джозефом Пуном, опубликовал статью еще в 2017 году, в которой представил новое масштабируемое решение второго уровня под названием Plasma.
Plasma — это платформа масштабируемости для общедоступных блокчейнов, таких как Ethereum. Цепочки Plasma, как определено в оригинальном техническом документе Plasma, создаются поверх другой цепочки блоков (называемой «корневой цепочкой»).
Каждая «дочерняя цепочка» простирается от корневой цепочки и обычно поддерживается смарт-контрактом, опубликованным в родительской цепочке.
Это означает, что Plasma может достичь гораздо более высокой пропускной способности транзакций, чем только основная сеть Ethereum, сохраняя при этом безопасность и децентрализацию, которые делают Ethereum таким эффективным.
Контракт Plasma функционирует, помимо прочего, как мост, позволяющий пользователям перемещать активы между основной сетью Ethereum. и плазменная цепь. Хотя это делает их похожими на сайдчейны, плазменные цепи выигрывают — «по крайней мере, в некоторой степени» — от Ethereum. Безопасность основной сети.
Это отличается от сайдчейнов, которые несут полную ответственность за свою безопасность.
Также важно отметить, что одним из ключевых преимуществ Plasma является повышенная масштабируемость, которая достигается за счет переноса части вычислительной работы за пределы цепочки.
Это означает, что большее количество транзакций может выполняться с большей скоростью при сохранении безопасности и целостности сети.
Еще одним существенным преимуществом Plasma является значительное снижение комиссий за транзакции, которое стало возможным благодаря уникальной функции обработки внутрисетевых транзакций вне блокчейна, что делает его привлекательным вариантом для организаций и частных лиц, стремящихся использовать сеть Ethereum более экономично. и эффективным образом.
Благодаря уникальному подходу Plansma к обработке больших объемов данных и транзакций, не перегружая основную сеть Ethereum и не жертвуя производительностью и безопасностью, децентрализованные приложения, предназначенные для миллионов пользователей и построенные в сети Ethereum, часто считают ее хорошим уровнем 2. для дальнейшего развития.
В целом, Plasma представляет собой значительный шаг вперед в экосистеме Ethereum, предлагая ряд преимуществ, которые делают его привлекательным решением как для компаний, разработчиков, так и для пользователей.
Опираясь на плазму:
GenericTransaction
– это библиотека Solidity, определяющая универсальный формат транзакций для приложений на основе Ethereum. Он использует список из пяти элементов, включая txType, входы, выходы, txData и метаданные.
Библиотека предоставляет функции для декодирования транзакции из байтов, закодированных в RLP, получения выходных данных по определенному индексу и декодирования элемента RLP в выходные данные. Он также включает структуру для транзакции и вывод для хранения декодированных данных.
Библиотека предназначена для других контрактов Solidity для стандартизированной обработки общих транзакций.
Итак, допустим, вы вносите средства в контракт Plasma. Затем вы можете использовать функцию startExit
, чтобы инициировать процесс выхода этих средств, что означает, что вы хотите вывести их из контракта Plasma.
Этот процесс может занять некоторое время, но как только он завершится, вы можете использовать функцию finalizeExit
, чтобы завершить процесс вывода средств и получить свои средства.
Конечно, фактическая реализация контракта Plasma будет намного сложнее, включая такие элементы, как доказательства мошенничества и подтверждение блокировки. Но, надеюсь, этот пример даст вам представление о том, как Plasma можно использовать на практике.
https://gist.github.com/LucidSamuel/c46778a8f169d2d7b795258c39164fcf?embedable=true/ р>
Начало работы с накопительными пакетами
Коллапы — это решение для масштабирования, предназначенное для решения проблем, связанных с высокой комиссией за транзакции и медленным временем обработки в сети Ethereum. Подобно другим решениям уровня 2, таким как Plasma и каналы состояния, Rollups перемещает вычислительную работу вне цепочки.
Однако вместо того, чтобы использовать отдельную цепочку или сайдчейн, Rollups использует смарт-контракт в основной сети Ethereum для проверки и пакетной обработки транзакций.
Такой подход позволяет Rollups достигать высокого уровня масштабируемости, сохраняя при этом безопасность и децентрализацию сети Ethereum.
Роллапы — многообещающее решение для улучшения масштабируемости Ethereum и снижения затрат на газ. Они обеспечивают несколько преимуществ, таких как увеличение количества транзакций, обрабатываемых в сети в секунду, а также сокращение времени обработки транзакций и перегрузки.
Объединяя несколько транзакций в пакеты, накопительные пакеты значительно сокращают количество газа, необходимого для выполнения транзакций в сети, что приводит к снижению платы за газ.
Несмотря на эти преимущества, Rollup поддерживает безопасность и децентрализацию сети Ethereum, поскольку для проверки они полагаются на смарт-контракт в основной сети Ethereum.
Это гарантирует, что накопительные пакеты остаются безопасными и устойчивыми к атакам, обеспечивая пользователям спокойствие при использовании сети.
Если вы разработчик, желающий начать работу с Rollups, вот пример полного приложения обмена и моста Ethereum DeFi, которое использует Rollups для масштабирования:
Во-первых, давайте начнем со смарт-контракта для накопительного пакета:
pragma solidity ^0.8.0;
contract MyRollup {
struct Transaction {
address from;
address to;
uint amount;
}
Transaction[] public transactions;
function batchTransfer(Transaction[] memory _txs) public {
for (uint i = 0; i < _txs.length; i++) {
transactions.push(_txs[i]);
}
}
function processBatch() public {
for (uint i = 0; i < transactions.length; i++) {
Transaction memory tx = transactions[i];
tx.to.transfer(tx.amount);
}
delete transactions;
}
}
Этот накопительный контракт позволяет отправлять и обрабатывать пакетные транзакции вне сети, снижая плату за газ и перегрузку в основной сети Ethereum.
Далее у нас есть смарт-контракт обмена DeFi:
pragma solidity ^0.8.0;
interface IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
contract MyDeFiSwap {
IERC20 public token;
constructor(address _token) {
token = IERC20(_token);
}
function swap(uint amount) public {
// Transfer tokens from user to contract
require(token.transferFrom(msg.sender, address(this), amount), "Transfer failed");
// Perform swap logic here
// ...
// Transfer swapped tokens back to user
require(token.transfer(msg.sender, swappedAmount), "Transfer failed");
}
}
Функция swap
в этом контракте позволяет пользователям обменивать токены, передавая их в контракт, выполняя обмен и возвращая замененные токены обратно пользователю.
Наконец, у нас есть промежуточный контракт, который взаимодействует с своп-контрактами Rollup и DeFi:
pragma solidity ^0.8.0;
interface IMyRollup {
function batchTransfer(Transaction[] memory _txs) external;
function processBatch() external;
}
interface IMyDeFiSwap {
function swap(uint amount) external;
}
contract MyBridge {
IMyRollup public rollup;
IMyDeFiSwap public swap;
constructor(address _rollup, address _swap) {
rollup = IMyRollup(_rollup);
swap = IMyDeFiSwap(_swap);
}
function swapAndBatchTransfer(Transaction[] memory _txs, uint swapAmount) public {
swap.swap(swapAmount);
rollup.batchTransfer(_txs);
rollup.processBatch();
}
}
Функция swapAndBatchTransfer
в этом контракте выполняет обмен токенов в контракте обмена DeFi, группирует передачу токенов нескольким получателям с помощью контракта Rollup, а затем обрабатывает пакет вне сети, чтобы уменьшить расход газа. сборы.
Важно отметить, что в реальном приложении будет дополнительный код для пользовательских интерфейсов, тестирования и развертывания.
В целом накопительные пакеты предлагают несколько преимуществ, которые могут помочь сделать сеть Ethereum более эффективной, масштабируемой и экономичной, что делает их многообещающим решением для решения проблем, с которыми сталкивается сеть.
Чтобы использовать Rollups, ведущие организации, использующие эту технологию, также предоставляют существующие примеры кода, такие как реализация Optimistic Rollup от команды Optimism, реализация ZK-Rollups от Matter Labs, и Реализация Taiko Labs ZK-EVM.
Сравнение и применение решений уровня 2
Решения для масштабирования уровня 2, такие как каналы состояний, Plasma и Rollup, набирают популярность среди разработчиков благодаря их способности решать проблемы высоких комиссий и медленной обработки транзакций в сети Ethereum.
Однако у каждого решения есть свои преимущества и недостатки, и вы должны тщательно продумать, какой подход лучше всего подходит для вас, исходя из их конкретных вариантов использования.
Разработчику крайне важно понимать технические различия между каналами состояний, Plasma и Rollups, чтобы определить наиболее подходящее решение уровня 2 для конкретного варианта использования.
Эти решения предлагают различные подходы к повышению эффективности и масштабируемости сети Ethereum.
Каналы состояния позволяют пользователям открывать канал между двумя сторонами в основной цепочке, проводя несколько транзакций без немедленной фиксации их в цепочке блоков.
Этот подход значительно снижает затраты на газ и увеличивает пропускную способность транзакций, что делает его подходящим для таких случаев использования, как микроплатежи за онлайн-контент или услуги, такие как видео с оплатой за просмотр, услуги с оплатой за использование, такие как совместное использование поездок или велосипедов, и игры.
Однако стороны должны быть в сети и готовы подписывать транзакции, а разрешение споров может быть дорогостоящим из-за необходимости подключаться к сети для этого.
Plasma использует сайдчейн для обработки транзакций вне сети, что снижает затраты на газ и увеличивает пропускную способность транзакций. Он может поддерживать более сложную функциональность смарт-контрактов, чем каналы состояния, и подходит для случаев использования, которые включают частые, но небольшие транзакции.
Децентрализованные биржи (DEX) и игры, где игроки могут совершать внутриигровые покупки или делать ставки на результаты игры, являются примерами вариантов использования Plasma.
Однако пользователям необходимо выйти из боковой цепи, чтобы перевести свои средства в основную цепь, что может занять много времени и средств.
Кроме того, реализация Plasma все еще находится в активной разработке, и изучается несколько подходов.
Коллапы используют смарт-контракты в основной цепочке для пакетной обработки и проверки транзакций вне сети, обеспечивая высокий уровень масштабируемости и пользуясь преимуществами безопасности и децентрализации сети Ethereum.
Они могут поддерживать ту же функциональность смарт-контрактов, что и основная цепочка, что делает их полезными для случаев использования, требующих высокой степени безопасности и децентрализации. Примерами реальных -мировые приложения Rollups.
Пользователям не нужно выходить из основной цепи, чтобы рассчитаться со своими средствами, что делает ее более удобной для пользователя.
Однако реализация накопительных пакетов может быть более сложной, чем каналы состояний или Plasma, из-за необходимости в дополнительной инфраструктуре, такой как агрегатор, а первоначальный депозит, необходимый для использования накопительного пакета, может быть высоким, что делает его менее доступным для небольших пользователей.
В целом, лучшее решение уровня 2 для данного варианта использования будет зависеть от таких факторов, как типы проводимых транзакций, желаемый уровень децентрализации и допустимый уровень сложности.
Тщательно оценив сильные и слабые стороны каждого решения, вы сможете выбрать решение, которое наилучшим образом соответствует их потребностям.
Заключение
Подводя итог, можно сказать, что решения уровня 2 имеют решающее значение для будущего Ethereum. Они предлагают многообещающее решение для повышения масштабируемости, эффективности и удобства использования сети. Это открывает новые возможности для различных приложений и вариантов использования.
Поэтому для разработчиков и заинтересованных сторон в сообществе Ethereum важно продолжать исследовать и создавать инновационные решения, чтобы обеспечить устойчивый прогресс и процветание сети.
Оригинал