Когда-нибудь в скором времени нам нужно будет осознать, что мы живем в устаревшем мире финансов и что нам нужно построить более надежную цифровую инфраструктуру. Фактически, нам нужно преобразовать не только финансы, но и любые области, требующие высокого уровня доверия, безопасности и распределения. Для этого у нас могут быть методы блокчейна Layer-1, такие как Ethereum, но он показал проблему масштабирования, когда основная книга и вычислительная инфраструктура не могут справиться с более чем 15–30 транзакциями в секунду.
Но сейчас применяются новые методы для облегчения нагрузки на Ethereum, сохраняя при этом надежность и распределение. К ним относятся реализации Layer 1 для обмена и переход к Proof-of-Stake (PoS). Однако самые интересные достижения происходят в рамках методов Layer 2 и строятся на основной сети Ethereum (Mainnet).
State channels были первоначально реализованы в сети Bitcoin Lightning и с тех пор были масштабированы на Ethereum. При этом у нас есть две записи в реестре Mainnet, и участвующая сторона должна внести некоторые средства, которые могут быть потрачены или не потрачены. Например, скажем, Боб хочет создать побочный канал для оплаты своим клиентам и внесет 10 Eth. Затем он создаст канал-контракт. Внесенный Ether будет заблокирован на время действия канала, и его нельзя будет потратить. Затем Боб может дать 2 $Eth Алисе и 3 $Eth Кэрол. Как только он закончит с этим, он вернет завершенную транзакцию, и Боб получит обратно 5 $Eth, Алиса получит 2 $Eth, а Кэрол получит 3 Eth. В конце концов, Боб просто публикует сводные данные и будет платить комиссию за газ только за два обязательства в реестре. Реализация state channels предлагается Polygon, который обеспечивает полную совместимость с EVM и низкие комиссии за транзакции. Пример отсюда: here:
pragma solidity ^0.7.0;
contract PaymentChannel {
address public sender;
address public receiver;
uint256 public expiration;
uint256 public amount;
constructor(
address _receiver,
uint256 _amount,
uint256 _expiration
) payable {
sender = msg.sender;
receiver = _receiver;
amount = _amount;
expiration = block.timestamp + _expiration;
}
function close(uint256 _payment) public {
require(
msg.sender == receiver,
"Only the receiver can close the channel"
);
require(
_payment <= amount,
"Payment amount exceeds amount in the channel"
);
selfdestruct(receiver);
}
function extendExpiration(uint256 _expiration) public {
require(
msg.sender == sender,
"Only the sender can extend the expiration"
);
require(
_expiration > expiration,
"Expiration must be set to a longer time than the current expiration"
);
expiration = _expiration;
}
}
Одним из лучших механизмов масштабирования Ethereum является перенос транзакций за пределы сети с помощью roll-ups и side chains.
Они обрабатывают транзакции вне сети и предполагают, что транзакции действительны (в основном, подход «доверяй, но проверяй»). Они занимают вычислительные ресурсы в Mainnet только тогда, когда возникает спор по транзакциям. Таким образом, будет задержка «периода оспаривания», которая требуется до фактического подтверждения транзакций в Mainnet.
С Arbitrum наблюдатели за мошенничеством анализируют транзакции, и если обнаруживается мошенническая транзакция, наблюдатель публикует доказательство мошенничества в Mainnet. Фактически, Arbitrum может идентифицировать строки кода, относящиеся к анализу мошенничества, а затем опубликовать их в Mainnet. Затем Mainnet может вынести решение по доказательству мошенничества и решить, выполнять ли требуемый код. Для Arbitrum существует семидневный период вывода средств [here].
Optimism также использует внесетевые методы с optimistic roll-ups и предполагает, что транзакции действительны. Он использует наблюдателей (или верификаторов), чтобы определить, есть ли мошенническая транзакция, и может представить доказательство мошенничества, и в этом случае транзакция может быть удалена. Наблюдатель будет вознагражден за обнаружение мошеннической транзакции. В целом, существует задержка около семи дней для оспаривания, и транзакция отменяется, если будет установлено, что доказательство мошенничества является правильным [here]:
Они перемещают вычисления и хранение состояния вне сети и предполагают подход, не требующий доверия. После обратной публикации в Mainnet потребуется минимальное количество обновлений для изменения состояния и связанных с этим доказательств. Поскольку у нас есть доказательства в сжатой форме, мы можем быстро проверять обновленные транзакции, а также поддерживать конфиденциальность транзакций. В этом случае, в отличие от optimistic roll-ups, для которых требуется несколько дней для фиксации, с zk-Rollups (на основе zkSnarks) нам требуется всего около часа для проверки доказательств. Это гарантирует отсутствие двойных трат и платежеспособность всех транзакций. Примером является ZKsync [here]:
С zk-Rollups существуют криптографические доказательства достоверности транзакций, и затем они связываются с Mainnet. Таким образом, было бы крайне сложно совершить мошенническую транзакцию. С optimistic roll-ups отсутствует криптографическое доказательство, поэтому до фиксации обратно в Mainnet возникает задержка, чтобы можно было обнаружить мошеннические транзакции.
Это независимая side chain и отдельный блокчейн, подключенный к Mainnet. В отличие от методов roll-up, обновленные транзакции могут быть возвращены в Mainnet при необходимости. В целом, у них есть свой собственный блокчейн и свои собственные механизмы консенсуса, такие как Proof of Authority (PoA). Polygon является примером инфраструктуры side-chain. Общим недостатком side channels является то, что они, вероятно, имеют другую модель безопасности, чем основная сеть Ethereum [here]:
На мой взгляд, Zero Knowledge Proofs в автономной цепочке — лучшее решение, поскольку оно позволяет быстро проверять транзакции в основной цепочке и сохранять конфиденциальность тех, кто совершает транзакции. Мы также можем использовать выборочное раскрытие информации в ZKP, что может быть полезно для раскрытия важной информации, например, имеет ли человек право на доступ к ресурсу.
С optimistic rolls-ups мы предполагаем, что транзакции действительны, если не доказано обратное, и нам нужен период оспаривания, чтобы транзакции были оспорены до завершения. С zk-Rollups наши транзакции будут действительными, поскольку с этим связано доказательство, и у нас есть быстрая фиксация в Mainnet. К сожалению, zk-Rollups требуют глубокого понимания криптографии и блокчейна, что может замедлить разработку.
Очевидно, что Ethereum — не единственное решение, и Polygon [here], Solana [here], Cardano [here] и Polkadot [here] предоставляют альтернативы, которые масштабируются лучше, чем Ethereum. Но мы любим блокчейн, который принес нам смарт-контракты и EVM (Ethereum Virtual Machine), и многие надеются, что он сможет преодолеть свои проблемы с масштабируемостью и сохранить те же уровни распределения и безопасности.