使用 ethers.js 和 kzg-wasm 发送 EIP-4844 Blob 交易
Source: Dev.to
介绍
EIP‑4844 在 Proto‑Danksharding 中引入了 blob 交易(类型 3)。在实际发送 blob 交易时会受到工具链、RPC 支持以及交易准备等方面的限制。本文总结了使用 ethers.js v6 与 kzg‑wasm 的实操实验,重点说明哪些方法可行、哪些不可行,以及如何快速搭建最小化环境。
如果你只想创建一个 blob 而不想动代码,https://blobsender.xyz 允许任何人编写消息并将其作为 blob 提交到以太坊。浏览器钱包和连接器目前尚不支持 blob 交易。
Sepolia 上的 RPC 支持
RPC 支持是主要的摩擦点之一。我们测试了约 20 家 Sepolia RPC 提供商;许多会拒绝 blob 交易或缺少 EIP‑4844 支持。以下公共 RPC 端点表现可靠:
https://sepolia.infura.io/v3/YOUR_API_KEYhttps://ethereum-sepolia-rpc.publicnode.comhttps://eth-sepolia.api.onfinality.io/publichttps://0xrpc.io/sephttps://sepolia.drpc.org
此列表已放入仓库,以节省他人的测试时间。
仓库与脚本
所有可运行的示例均在此处:https://github.com/0xKurt/eip-4844-ethers-examples
仓库包含两个脚本,均使用 ethers.js v6 与 kzg‑wasm 发送类型 3 交易:
send-blob.ts
一个简单的 blob 交易,准备固定大小的 blob,生成 KZG 承诺和证明,并发送交易。
send-blob-contract.ts
将 blob 交易与合约调用相结合,演示如何在合约交互的同时携带 blob 数据。
发送 blob 交易(高层步骤)
- 准备固定大小的 blob。
- 生成 KZG 承诺和证明。
- 使用
type: 3发送交易。
使用 Blobscan 检查 blob
Blobscan 可用于检查:
- Blob 版本化哈希
- Blob 燃气价格
- 其他与 blob 相关的元数据
脚本会打印出使用 ethers 返回的 blob 版本化哈希生成的 Blobscan 直接链接,便于验证和检查。
进一步阅读
完整的步骤演练、代码以及交易流程可在原始 Medium 文章中查看:https://medium.com/@Kurt0x/sending-eip-4844-blob-transactions-using-ethers-js-and-kzg-wasm-d84224be6b81