Для разработчиков / С чего начать

Pickle Chain для разработчиков

Ethereum Layer 2, который исполняет вашу транзакцию немедленно, возвращает подписанное предподтверждение и запечатывает вокруг неё обычный блок в формате Ethereum. Газ платится в ETH, а стандартной поверхности eth_* хватает MetaMask, Foundry и Hardhat.

Что это

Pickle работает на собственном секвенсере на Rust с revm, закреплённым на Cancun. Когда вы отправляете транзакцию, она исполняется сразу - eth_sendRawTransaction блокирует до появления результата, а не возвращает обещание результата, - и квитанция доступна в пределах целевого интервала мини-блока, около 10 мс. Блок в формате Ethereum, оборачивающий эти мини-блоки, запечатывается с целевым интервалом около 250 мс, и именно этот блок кошельки и обозреватели считают подтверждением.

С точки зрения инструментов сеть обычна там, где это важнее всего: chain ID 78270 в публичной тестовой сети, которую документирует этот справочник, ETH для газа, лимит газа блока 30 000 000, стандартный JSON-RPC и заголовки блоков в формате Cancun. forge, ethers, viem и MetaMask работают против неё. Она необычна там, где это тоже важно, и об этом отдельная страница, а не абзац здесь.

Что это не

Модель доверия, изложенная целиком

  • Ordering: one sequencer orders every transaction. It can reorder and it can censor, and there is no forced-inclusion path from Ethereum.
  • Liveness: if the sequencer stops, mini-blocks stop and the chain halts for new execution. Replicas continue to serve derived history. The sequencer key is held in an on-chain registry and can be rotated, effective the next block.
  • Correctness: there are no fraud or validity proofs. Any replica can detect a divergence between the published data and the committed block hash, and halts when it does; nothing on-chain arbitrates it.
  • Data: everything needed to rebuild the chain is on Ethereum or committed to from Ethereum. A user relies on the operator's honesty, plus the fact that the data needed to check it is public.
  • Bridge: the messenger is a trusted key. It cannot forge or replay a message, but it can delay. Batcher and messenger keys are distinct, enforced at startup.

Pickle не представляет себя иначе, чем сетью с единственным оператором, и эта документация не публикует никаких цифр пропускной способности. Два числа каденции выше - целевые интервалы, которые старается выдерживать производитель блоков, - а не гарантии задержки и не утверждение о пропускной способности. Запечатывающий пропускает опоздавший тик вместо того, чтобы навёрстывать.

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

Как это устроено

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

  • Исполнение - немедленное, синхронное с вашим RPC-вызовом. Revert известен уже здесь.
  • Предподтверждение - мини-блок, подписанный секвенсером, с целевым интервалом около 10 мс. Ваша квитанция существует, а её blockNumber всё ещё null.
  • Подтверждение - EVM-блок, с целевым интервалом около 250 мс. Теперь blockNumber и blockHash заполнены.

Финальность - четвёртое и отдельное событие: она наступает после того, как содержащий пакет рассчитан на Ethereum. Этот сайт не употребляет это слово ни для чего другого.

Ваш первый вызов

Публичная тестовая сеть отвечает на https://rpc.picklechain.xyz. Примеры везде пишут этот адрес как $RPC_URL, чтобы та же команда без изменений работала против вашего собственного узла:

bash
export RPC_URL=https://rpc.picklechain.xyz

curl -s "$RPC_URL" \
  -X POST -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

# {"jsonrpc":"2.0","id":1,"result":"0x131be"}

0x131be - это 78270. Самому вызову не нужны ни ключ, ни аккаунт, ни заголовок сверх типа содержимого: узел ничего не аутентифицирует и отвечает любому, кто до него дотянулся. Тестовый ETH приходит из крана, по одному запросу на адрес каждые 24 часа, и состояние может быть сброшено без предупреждения.

Куда идти дальше

Ни одна страница здесь не печатает адрес контракта, и это намеренно

EVM-CALL к аккаунту без кода завершается успешно. Своп, направленный по адресу, где ничего не развёрнуто, не делает revert: он забирает ваш ETH и сообщает об успехе. Поэтому проверяйте через eth_getCode любой адрес, который вам дали, прежде чем что-либо на него отправлять.

Приложения первой стороны разрешают каждый используемый адрес из сети во время выполнения, а не вкомпилируют его, и слой цен описывает, как. Обозреватель показывает, что развёрнуто по адресу; он не верифицирует исходный код и не публикует ABI.