支持的以太坊RPC方法¶
概览¶
虽然Moonbeam致力于兼容以太坊Web3 API和EVM,但开发者仍需了解Moonbeam在以太坊API JSON-RPC支持方面与以太坊之间的重要差异。
Moonbeam团队与Parity密切合作开发Frontier。Frontier是基于Substrate的以太坊兼容层,它允许开发人员运行未经修改的以太坊DApp。
尽管如此,并非所有的以太坊JSON RPC方法都被支持,一些被支持的方法返回默认值(尤其是与以太坊PoW共识机制相关的那些)。本教程将概述关于以太坊RPC支持的一些主要差异,以及首次使用Moonbeam时需要了解的事项。
基本以太坊JSON RPC方法¶
截止本文撰写时,Moonbeam支持的以太坊API的基本JSON RPC方法:
- eth_protocolVersion —— 默认返回
1
- eth_syncing —— 返回一个对象,其中包含有关同步状态或
false
的数据 - eth_hashrate —— 默认返回
"0x0"
- eth_coinbase —— 返回最新的区块作者。不仅限于已确认的区块
- eth_mining —— 默认返回
false
- eth_chainId —— 返回用于签署当前区块的Chain ID
- eth_gasPrice —— 返回每个单位gas使用的基本费用。这是目前每个网络的最低gas价格
- eth_accounts —— 返回由客户端拥有的地址列表
- eth_blockNumber —— 返回最高可用区块号
- eth_getBalance —— 返回指定地址的余额
- eth_getStorageAt —— 返回指定地址的存储内容
- eth_getBlockByHash —— 返回指定哈希的区块信息,包括伦敦升级支持后区块的
baseFeePerGas
- eth_getBlockByNumber —— 返回指定区块号的区块信息,包含伦敦升级支持后区块的
baseFeePerGas
- eth_getTransactionCount —— 返回从指定地址发送的交易数量(nonce)
- eth_getBlockTransactionCountByHash —— 返回具有指定区块哈希的区块中的交易数量
- eth_getBlockTransactionCountByNumber —— 返回具有指定区块号的区块中的交易数量
- eth_getUncleCountByBlockHash —— 默认返回
"0x0"
- eth_getUncleCountByBlockNumber —— 默认返回
"0x0"
- eth_getCode —— 返回指定区块号的指定地址的代码
- eth_sendTransaction —— 如果数据字段包含代码,则创建新的消息调用交易或创建合约。返回交易哈希,如果交易尚不可用,则返回零哈希
- eth_sendRawTransaction —— 为已签名的交易创建新的消息调用交易或创建合约。返回交易哈希,如果交易尚不可用,则返回零哈希
- eth_call —— 立即执行新的消息调用,无需在区块链上创建交易,返回已执行调用的值
- eth_estimateGas —— 返回指定交易成功所需的预计gas费。您可以选择质地指定
gasPrice
或maxFeePerGas
和maxPriorityFeePerGas
- eth_feeHistory —— 返回指定范围内(最多1024个区块)的
baseFeePerGas
、gasUsedRatio
、oldestBlock
和reward
- eth_getTransactionByHash —— 返回指定哈希的交易信息。EIP-1559交易包含
maxPriorityFeePerGas
和maxFeePerGas
字段 - eth_getTransactionByBlockHashAndIndex —— 返回指定区块哈希和指定索引位置的交易信息。EIP-1559交易包含
maxPriorityFeePerGas
和maxFeePerGas
字段 - eth_getTransactionByBlockNumberAndIndex —— 返回指定区块号和制定索引位置的交易信息。EIP-1559交易包含
maxPriorityFeePerGas
和maxFeePerGas
字段 - eth_getTransactionReceipt —— 返回指定交易哈希的交易回执。Runtime 1200添加伦敦升级支持后,新的字段
effectiveGasPrice
添加至回执,用于指定交易的gas价格 - eth_getUncleByBlockHashAndIndex —— 默认返回
null
- eth_getUncleByBlockNumberAndIndex —— 默认返回
null
- eth_getLogs —— 返回匹配指定过滤器对象的所有日志数组
- eth_getWork —— 默认返回
["0x0","0x0","0x0"]
- eth_submitWork —— Moonbeam暂不支持
- eth_submitHashrate —— Moonbeam暂不支持
过滤器相关以太坊JSON RPC方法¶
截止本文撰写时,Moonbeam支持的以太坊API的过滤器相关JSON RPC方法:
- eth_newFilter —— 根据所提供的输入创建过滤器对象。返回一个过滤器ID
- eth_newBlockFilter —— 在节点中创建过滤器以在新的区块到达时进行通知。返回一个过滤器ID
- eth_getFilterChanges —— 过滤器的轮询方法(参考以上方法)。返回自上次轮询以来发生的日志数组
- eth_getFilterLogs —— 返回匹配指定ID过滤器的所有日志数组
- eth_uninstallFilter —— 卸载指定ID的过滤器。应在不需要轮询时使用。一段时间后未使用
eth_getFilterChanges
请求过滤器超时
事件订阅以太坊JSON RPC方法¶
截止本文撰写时,Moonbeam支持的以太坊API的事件订阅JSON RPC方法:
- eth_subscribe —— 为指定订阅名称创建订阅。如果成功,则返回订阅ID
- eth_unsubscribe —— 取消指定ID的订阅
已支持订阅¶
截止本文撰写时,已支持的订阅:
- newHeads —— 每次将新的标题附加至链都会触发通知
- logs —— 返回包含在新导入区块中并匹配指定过滤条件的日志
- newPendingTransactions —— 返回所有增加至待处理状态的交易哈希
- syncing —— 表示节点开始或停止与网络同步
如果您想获得跟多关于这些订阅的详细教程,请查看事件订阅教程。
Last update:
November 7, 2023
| Created: October 1, 2021
| Created: October 1, 2021