開発者へ / はじめに

開発者のための Pickle Chain

トランザクションを即座に実行し、署名付きの事前確認を返し、その周りに Ethereum 形式の通常のブロックを封印する Ethereum Layer 2。ガスは ETH で支払い、標準の eth_* の面だけで MetaMask、Foundry、Hardhat に足ります。

それは何か

Pickle は revm を Cancun に固定した独自の Rust シーケンサーを動かします。 トランザクションを送るとその場で実行され、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 は フォーセットから得られ、1 アドレスにつき 24 時間に 1 回、状態は予告なくリセットされることがあります。

次に読むもの

ここのどのページもコントラクトアドレスを印字しません。それは意図的です

コードのないアカウントへの EVM の CALL は成功します。何も デプロイされていないアドレスへ経路付けられたスワップは revert せず、あなたの ETH を取って 成功を報告します。ですから渡されたアドレスは、何かを送る前に eth_getCode で 確認してください。

ファーストパーティのアプリケーションは、使うアドレスをすべて、埋め込むのではなく実行時に チェーンから解決しており、価格レイヤーがその方法を 記しています。エクスプローラーはあるアドレスに何がデプロイされているかを表示します。 ソースの検証はせず、ABI も公開しません。