L2 solutions: Введение в Neon EVM

Конспект доклада Дмитрия Рожкова, Software Engineer в Neon Labs, в котором он рассказывает про решение второго уровня, объединяющее черты Ethereum и Solana, для адаптации dApps разработчиков на Solidity к среде Solana на Rust.

О проекте Solana

alt_text

Solana — молодой проект, родился в 2017 году под началом Анатолия Яковенко. Сейчас это растущая, популярная, быстрая, дешевая сеть. Если говорить о скорости, то время нахождения блока — 0,04 секунды, в блок помещается 20 тысяч транзакций. Цена транзакции $0,00025. То есть, в секунду — 70 тысяч транзакций. Если говорить о популярности Solana, то у меня лично есть несколько знакомых, которые пользуются приложением Stepn, в котором люди набирают баллы за ходьбу, и им за это платят токены. На Solana построено очень много различных популярных dApps.

Почему разработка на Solana — боль

alt_text

Если разработчики захотят что-то быстро и дешево построить на Solana, они неминуемо наткнутся на ряд барьеров. У Solana сложная архитектура, что приводит Solidity-разработчиков в отчаяние, а Rust-разработчиков в восторг (про этих ребят в Solana шутят, что они «жуют стекло»).

У Solana другая структура транзакций, виртуальная машина Berkeley Packet Filter (BPF), язык не Solidity и не Vyper, а Rust. Solidity-разработчику приходится пройти через все стадии: гнев, отрицание и депрессию и т.д. в связи с этим.

Какое решение нашли в Neon Labs

alt_text

На самом деле мы придумали два подхода. Первый подход заключается в создании компилятора на Solidity, который будет компилировать в BPF-формат. Но мы склонились ко второму подходу и решили развивать его. Мы решили предоставить знакомый интерфейс RPC APIи транслировать готовые, скомпилированные пользовательские Solidity-контракты, транзакции в RPC API Solana. Все привычные программы вроде Metamask и т.д. могут без проблем работать с Neon так же, как они работают с Ethereum. За это отвечает Neon RPC API web3 proxy, который транслирует транзакции в Solana.

alt_text

Еще один компонент — контракт, который мы написали на Rust. Это, по факту, наша версия имплементации виртуальной машины Ethereum. То есть, внутри происходит магия и транзакции транслируются виртуальной машине на Solana. При этом меняется состояние в блокчейне Neon. То есть, у нас есть Ethereum смарт-контракты или dApps, которые хостятся на Solana, но находятся в стейте блокчейна Neon и в едином адресном пространстве блокчейна Neon. Через адресное пространство Neon можно адресовать свои контракты и послать «эфироподобные» транзакции в Solana.

Дальнейшее развитие идеи

alt_text

В будущем может понадобиться вызывать контракты Solidity из блокчейна Neon. Или с целью оптимизации интерфейсов Ethereum, можно делать эти интерфейсы в нативной имплементацией контрактов на Solana. В этом случае Neon облегчает и удешевляет их выполнение на Solana.

Как работает Neon EVM

alt_text

В ядре Neon EVM есть реализация ERC-20 wrapper, который прячет в себе контракт Solana под названием SPL-токен, который намного дешевле. У нас есть партнер MoraSwap — по сути, форк Uniswap. Этот dApp, как раз, на подобных precompied контрактах и строит свою логику.

Блокчейн Neon полностью децентрализованный. У него нет единой точки отказа и если откажет ведущая нода Solana или выпадет ведущий оператор RPC API, — стейт Neon не станет неконсистентным и блокчейн продолжит работу.

Операторы никак не могут скомпрометировать транзакции, так как пользователи применяют подписи приватным ключом, который проверяется «на борту» контракта Neon EVM. Все исходники блокчейна Neon открыты на neonlabs.org. Периодически код проходит экспертизу, также команда Neon рада контрибьюторам.

Контракт, который появится в майннете Solana, управляется исключительно контрактом governance, то есть — решения принимаются голосованием владельцев стейка Neon.

alt_text

Разработчикам Solidity нужно взять инструменты, к которым они привыкли (Hardhat, Remix, Truffle, etc.) и немножко поменять конфигурацию, то есть вставить туда адрес RPC API Neon и это все заработает.

Как строится токеномика

alt_text

В Solana иначе, нежели в Ethereum, строится стоимость газа. Средняя комиссия порядка 5К lamports — SOL. Минимальная транзакция в Neon — две проверки: проверка 256 Solana и проверка хеша Ethereum. Также Solana берет комиссию за выделение одного байта — около 6,5К lamports за 1 байт. Цена газа выражается в нативных токенах Neon и формируется на основе актуального рыночного соотношения NEON/SOL. К этой стоимости прибавляется комиссия от операторов Neona, которые хостят у себя RPC API — нанимают людей, платят за электричество и т.д. Операторы забирают на себя порядка 10%.

Ссылки

alt_text

Читайте также

Больше мероприятний