JSON-RPC API是与以太坊交互比较流行的方法,在主要的以太坊节点实现(如Geth 和 Parity)以及许多第三方web服务(如INFURA)中都可以用。
使用 URL 或者 ConnectionInfo urlOrConnectionInfo 作为一个一个 JSON-RPC HTTP API 连接到 networkish 网络。
如果 urlOrConnectionInfo 没有被指定, 默认值是http://localhost:8545
。 如果网络没有被指定, 它将会自动使用 eth_chaindId
查询网络节点并返回 eth_networkId
从而确定网络。
每个节点的实现略有不同,可能需要特定的命令行标志、配置或UI设置,以启用JSON-RPC、解锁帐户或公开特定的api。请参考他们的文档。
返回一个由该以太坊节点管理的JsonRpcSigner,地址为addressOrIndex。如果没有提供addressOrIndex,则使用第一个帐户(account #0)。
返回此provider管理的所有帐户地址的列表。
允许向provider发送原始消息。
这可以用于后端特定的调用,比如调试或特定的帐户管理。
JsonRpcSigner是一个简单的Signer,它由一个连接的JsonRpcProvider支持。
创建这个signer的provider
返回一个新的Signer对象,该对象在发送交易时不执行额外的检查。详情请参阅getUncheckedSigner。
发送交易并返回一个解析为不透明交易哈希的Promise。
使用密码请求节点解除锁定(如果被锁了)。
JSON-RPC API仅在发送交易时提供交易哈希作为响应,但ether Provider要求在返回交易之前填充交易的所有细节。 例如,燃料价格(gas price)和燃料限制(gas limit)可能由节点或自动包含在内的nonce调整,在这种情况下,不透明的交易哈希已经丢弃了这一点。
为了解决这个问题,JsonRpcSigner立即查询provider的详细信息,用返回的交易哈希来填充TransactionResponse对象。
一些后端不立即响应,直到区块被挖出,才发布它负责签署的交易的细节。
UncheckedSigner不填充任何附加信息,并将一个模拟的类似TransactionResponse的对象作为立即返回的结果, 其中大部分属性设置为null,但如果只需要这些,则可以快速获得交易哈希。
StaticJsonRpcProvider inherits JsonRpcProvider
ethers Provider将频繁执行getNetwork
调用,以确保网络调用和网络通信是一致的。
在像MetaMask这样的客户端情况下,这是需要的,因为用户可以随时改变网络,在这种情况下,检查chainId的成本是本地的,因此很便宜。
在像MetaMask这样的客户端情况下是非常有必要的,因为用户可能随时改变网络, 在这种情况下,检查chainId的成本是在本地的,因此很便宜。
众所周知,在某些情况下网络不能改变,如当连接到一个INFURA端点,在这种情况下,可以使用SStaticJsonRpcProvider来将一直缓存链ID,可以减少网络流量和往返查询chain ID的次数。
这个Provider 只应在网络不能更改时使用。
许多方法是不常见的或特定于某些以太坊节点(例如Parity 与 Geth)才有的。这些方法包括帐户和管理员管理、调试、更深层次的区块和交易探索以及其他服务(如Swarm和Whisper)。
可以使用jsonRpcProvider.send 来获得这些方法。
- 大多数以太坊节点提供的JSON-RPC 方法 (包括不常见的方法)
- Parity's Trace Module 可用于跟踪和调试EVM中执行的交易(需要自定义配置)
- Geth's Debug Module 调试交易和内部缓存状态等。
- Additional Geth Methods
- Additional Parity Methods