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 。