Geth接口可实现功能汇总
以太坊 JSON RPC API
以太坊 JSON RPC API(官方的DApp API开发接口)。
JSON是一种轻量级数据交换格式。它可以表示数值、字符串、序列及名/值对集合。
JSON-RPC是一种无状态轻量级远程过程调用(RPC)协议。本规范定义了数据结构及相应的处理规则。规范本身是传输无关的,可以用于进程内通信、socket套接字、HTTP 或各种消息通信环境。规范使用JSON(RFC 4627)数据格式。
Geth 1.4和Parity1.6中包含了实验性质的pub/sub支持。
JSON RPC API 清单
官方的DApp API命令空间:
- web3
- net
- eth
- db
- shh
web3
- web3_clientVersion:返回当前的客户端版本。
- web3_sha3: 返回指定数据的
Keccak-256
(不同于标准的SHA3-256
算法)哈希值。
net
- net_version: 返回当前连接网络的ID。
- net_listening: 如果客户端处于监听网络连接的状态,该调用返回true。
- net_peerCount: 返回当前客户端所连接的对端节点数量。
eth
- eth_protocolVersion: 返回当前以太坊协议的版本。
- eth_syncing: 对于已经同步的客户端,该调用返回一个描述同步状态的对象;对于未同步客户端,返回false。
- eth_coinbase: 返回客户端的coinbase地址。
- eth_mining: 如果客户端在积极挖矿则返回true。
- eth_hashrate: 返回节点挖矿时每秒可算出的哈希数量。
- eth_gasPrice: 返回当前的gas价格,单位:Wei。
- eth_accounts: 返回客户端持有的地址列表。
- eth_getBalance: 返回指定地址账户的余额。
- eth_getStorageAt:返回指定地址存储位置的值。
- eth_getRransactionCount:返回指定地址发生的交易数量。
- eth_getBlockTransactionCountByHash:返回指定块内的交易数量,使用哈希来指定块。
- eth_getBlockTransactionCountByNumber:返回指定块内的交易数量,使用块编号指定块。
- eth_getUncleCountByBlockHash:返回指定块的叔伯数量,使用哈希指定块。
- eth_getUncleCountByBlockNumber:返回指定块的叔伯数量,使用块编号指定块。
- eth_getCode:返回指定地址的代码。
- eth_sign:通过给消息添加一个前缀,可以让结果签名被识别为以太坊签名。这可以组织恶意DApp签名任意数据(例如交易)并使用 签名冒充受害者。
- eth_sendTransaction:创建一个新的消息调用交易,如果数据字段中包含代码,则创建一个合约。
- eth_sendRawTransaction:为签名交易创建一个新的消息调用交易或合约。
- eth_call:立刻执行一个新的消息调用,无需在区块链上创建交易。
- eth_estimateGas:执行并估算一个交易需要的gas用量。该次交易不会写入区块链。注意,由于多种原因,例如EVM的机制及节点的性能,估算的数值可能比实际用量大的多。
- eth_getBlockByHash:返回具有指定哈希的块。
- eth_getBlockByNumber:返回指定编号的块。
- eth_getTransactionByHash:返回指定哈希对应的交易。
- eth_getTransationByBlockHashAndIndex:返回指定块内具有指定索引序号的交易。
- eth_getTransationByBlockNumberAndIndex:返回指定编号的块内具有指定索引序号的交易。
- eth_getTransactionReceipt:返回指定交易的收据,使用哈希指定交易。需要指出的是,挂起的交易其收据无效。
- eth_getUncleByBlockHashAndIndex:返回具有指定哈希的块具有指定索引位置的叔伯。
- eth_getUncleByBlockNumberAndIndex:返回具有指定编号的块内具有指定索引序号的叔伯。
- eth_getCompilers:返回客户端中有效的编译器列表。
- eth_compoleSolidity:返回编译后的solidity代码。
- eth_compoleLLL:返回编译后的LLL代码。
- eth_compileSerpent:返回编译后的Serpent代码。
- eth_newFilter: 基于给定的选项创建一个过滤器对象,接收状态变化时的通知。要检查状态是否变化, 请调用
eth_getFilterChanges
。 - eth_newBlockFilter:在节点中创建一个过滤器,以便当新块生成时进行通知。要检查状态是否变化,请调用 eth_getFilterChanges 。
- eth_newPendingTransactionFilter:在节点中创建一个过滤器,以便当产生挂起交易时进行通知。要检查状态是否发生变化,请调用 eth_getFilterChanges 。
- eth_uninstallFilter:写在具有指定编号的过滤器。当不在需要监听时,总是需要执行该调用。另外,过滤器如果在一定时间内未接收到 eth_getFilterChanges 调用会自动超时。
- eth_getFilterChanges:轮询指定的过滤器,并返回自上次轮询之后新生成的日志数组。
- eth_getFilterLogs:返回指定编号过滤器中的全部日志。
- eth_getLogs:返回指定过滤器中的所有日志。
- eth_getWork:返回当前块的哈希、种子哈希、以及要满足的边界条件,即目标。
- eth_submitWork:用于提交POW解决方案。
- eth_submitHashrate:用于提交挖矿的哈希速率。
- eth_blockNumber:返回最新块的编号。
db
- db_putString:在本地数据库中存入字符串。(注意:这个调用已经被启用,在将来版本中将被移除。)
- db_getString:从本地数据库读取字符串。(注意:这个调用已经被启用,在将来版本中将被移除。)
- db_putHex:将二进制数据写入本地数据库。(注意:这个调用已经被启用,在将来版本中将被移除。)
- db_getHex:从本地数据库中读取二进制数据。(注意:这个调用已经被启用,在将来版本中将被移除。)
shh
shh_version:返回当前的whisper协议版本。
shh_post:发送whisper消息。
shh_newldentity:在客户端创建一个新的whisper身份标识。
shh_hasldentity:检查客户端是否持有指定身份标识的私钥。
shh_newGroup:创建分组。
shh_addToGroup:将指定身份标识加入分组。
shh_newFilter:创建一个过滤器,以便在客户端接收到匹配的whisper消息时进行通知。
shh_uninstallFilter: 写在指定编号的过滤器,当不再需要某个过滤器时,总应当执行此调用进行清理。此外, 如果在一定时间内没有收到
shh_getFilterChanges
请求,过滤器将超时。shh_getFilterChanges:轮询whisper过滤器,返回自上次调用依赖的新消息。(注意:调用 shh_getMessages 将复位本调用使用的缓冲区,因此不会收到重复的消息。)
shh_getMessages:读取匹配指定过滤器的所有消息。与 shh_getFilterChanges 不同,本调用返回所有消息。
Geth JSON-RPC管理API
Geth除了支持官方的DApp API开发接口, 还支持额外的管理API接口。类似于DApp API,这些管理API也是通过JSON-PRC协议提供,并且遵循同样的规范。Geth内置的控制台支持所有这些额外的管理API。
Geth管理API清单
除了官方的DApp API命令空间(eth、shh、web3),Geth提供了以下额外的管理API命名空间:
- admin:Geth节点管理
- debug:Geth节点调试
- miner:挖矿和有向无环图(DAG)管理
- personal:账户管理
- txpool:交易池审查
admin
admin
系列API提供了一组非标RPC方法,可供调整Geth实例的运行, 包括但不限于网络节点和RPC端结点的管理。
admin命名空间包括以下RPC调用:
- addPeer:添加远程节点
- datadir:获取链库数据目录
- nodeInfo:获取节点信息
- peers:获取已连接远程节点信息
- setSolc:设置solidity编译器路径
- startRPC:启动HTTP上的RPC服务
- startWS:启动WebSocket上的RPC服务
- stopRPC:停止HTTP上的RPC服务
- stopWS:停止WebSocket上的RPC服务
debug
debug
系列API提供了一组非标RPC方法,可供监视与调试Geth的运行, 也可以用来在运行时设置一些特定的调试标志。
- backtraceAt:设置跟踪位置
- blockProfile:启用限时区块性能检测
- cpuProfile:启用限时CPU性能检测
- dumpBlock:导出区块数据
- gcStats:获取垃圾回收统计信息
- getBlockRlp:获取RPL编码的区块数据
- goTrace:启用限时go运行时跟踪
- memStats:获取内存统计信息
- seedHash:获取区块种子哈希
- setBlockProfileRate:设置区块性能检测速率
- setHead:设置本地链头区块
- stacks:获取调用栈
- startCPUProfile:启用CPU性能检测
- startGoTrace:启用go跟踪
- traceBlock:获取区块操作码调用栈
- traceBlockByNumber:获取指定序号区块操作码调用栈
- traceBlockByHash:获取指定哈希区块操作码调用栈
- traceBlockFromFile:获取区块文件操作码调用栈
- traceTransaction:跟踪交易
- verbosity:设置日志显示级别
- vmodule:设置日志可视模式
- writeBlockProfile:启用区块性能检测
- writeMemProfile:启用内存性能检测
miner
miner
系列的API允许你远程控制节点旳挖矿操作,或者设置各种与挖矿相关的参数。
- setExtra:设置写入挖矿得到区块的额外数据
- setGasPrice:设置可接受交易的gas价格下限
- start:启动挖矿
- stop:停止挖矿
- getHashRate:获取哈希生成速率
- setEtherbase:设置挖矿收益账户
personal
personal
系列的API管理密钥库中的私钥。
- importRawKey:导入私钥
- listAccounts:列出所有账户
- lockAccount:锁定账户
- newAccount:创建新账户
- unlockAccount:解锁账户
- sendTransaction:发送交易
- sign:签名
- ecRecover:提取签名中的发起方地址
txpool
txpool
系列的API提供一组非标RPC方法,可用来审视包含所有待定及排队交易的交易池中的内容。
- content:获取池中交易详情
- inspect:获取池中交易概述
- status:获取交易池状态