以太合约 JSON-RPC API

JSON-RPC服务器

Geth支持所有标准的web3 JSON-RPC API。JSON-RPC在多种传输方式上提供。Geth支持基于HTTP,WebSocket和Unix域套接字的JSON-RPC。必须通过命令行标志启用传输。

以太坊JSON-RPC API使用命名空间系统。RPC方法根据其用途分为几类。所有方法名称均由名称空间,下划线和名称空间中的实际方法名称组成。例如,该eth_call方法位于eth名称空间中。

可以基于每个命名空间启用对RPC方法的访问。在边栏中查找各个名称空间的文档。

HTTP服务器

要启用HTTP服务器,请使用--http标志。

geth --http

默认情况下,geth接受来自回送接口(127.0.0.1)的连接。默认监听端口为8545。您可以使用--http.port--http.addr标志来自定义地址和端口 。

geth --http --http.port 3334

必须将JSON-RPC方法名称空间列入白名单,才能通过HTTP服务器使用。-32602如果调用未列入白名单的名称空间,则会生成带有错误代码的RPC错误。默认的白名单允许访问“ eth”和“ shh”名称空间。要启用对其他API(例如帐户管理(“个人”)和调试(“调试”))的访问,必须通过该--http.api标志对其进行配置。我们不建议您通过HTTP启用此类API,因为对这些方法的访问会增加攻击面。

geth --http --http.api personal,eth,net,web3

由于可以从任何本地应用程序访问HTTP服务器,因此服务器中内置了附加保护功能,以防止滥用Web页面中的API。如果要允许从网页访问API,则必须将服务器配置为接受带有--http.corsdomain标志的跨域请求。

示例:如果要与Reth一起使用Remix,请允许来自remix域的请求。

geth --http --http.corsdomain https://remix.ethereum.org

使用--http.corsdomain '*',以便从任何来源获得。

WebSocket服务器

WebSocket端点的配置类似于HTTP传输。要启用WebSocket访问,请使用--ws标志。默认的WebSocket端口是8546。--ws.addr--ws.port--ws.api标志可用于自定义WebSocket服务器的设置。

geth --ws --ws.port 3334 --ws.api eth,net,web3

跨域请求保护也适用于WebSocket服务器。使用该 --ws.origins标志允许从网页访问服务器:

geth --ws --ws.origins http://myapp.example.com

与一样--http.corsdomain,使用--ws.origins '*'可以从任何来源访问。

IPC服务器

UNIX域套接字上还提供了JSON-RPC API。该服务器默认情况下处于启用状态,并且可以访问所有JSON-RPC名称空间。

默认情况下,侦听套接字放置在数据目录中。在Linux和macOS上,geth套接字的默认位置是

~/.ethereum/geth.ipc

在Windows上,IPC是通过命名管道提供的。geth管道的默认位置是:

\\.\pipe\geth.ipc

您可以使用该--ipcpath标志配置套接字的位置。可以使用该--ipcdisable标志禁用IPC 。

 

 

上一篇:CmsWing源码分析(6) 用户认证(一)


下一篇:以太坊Geth RLP编码源码解析