1. 程式人生 > >Geth JSON RPC API中文文件

Geth JSON RPC API中文文件

Geth除了支援官方的DApp API開發介面,還支援額外的管理API介面。類似於DApp API,這些管理API也是通過JSON-PRC協議提供,並且遵循同樣的規範。Geth內建的控制檯支援所有這些額外的管理API。Geth管理API官方文件中文版由匯智網翻譯整理,訪問地址:Geth管理API文件

如果要快速高效地學習以太坊應用開發,推薦匯智網的以太坊智慧合約與DApp開發入門

啟用管理API

要通過Geth的RPC訪問端結點提供這些管理API,需要在啟動geth時使用--${interface}api選項,其中${interface}可以是rpc,表示HTTP上的端結點,或者是ws

,表示WebSocket上的端結點,或者ipc,表示unix套接字或windows命名管道上的端結點。

例如下面的命令啟用unix套接字和http上的訪問端結點:

~$ geth --ipcapi admin,eth,miner --rpcapi eth,web3 --rpc
  • 在unix套接字上的端結點,提供以下API:admin、miner和官方DApp API即eth。
  • 在http上的端結點,提供以下API:web3、eth

HTTP上的RPC介面必須同時顯式地使用--rpc標誌開啟。

需要注意的是,在HTTP(rpc)或WebSocket(ws)上提供API將允許所有人訪問API,因此請仔細審查你要提供哪些API服務。預設情況下,Geth在IPC端結點上提供所有的API,在HTTP和WebSocket介面上僅提供db、eth、net和web3這幾個API。

要檢視提供了哪些API,可以使用modules呼叫。例如在unix系統上通過ipc介面呼叫:

~$ echo '{"jsonrpc":"2.0","method":"rpc_modules","params":[],"id":1}' | nc -U $datadir/geth.ipc

響應結果將列出所有啟用的API模組以及其版本號:


{  
   "id":1,
   "jsonrpc":"2.0",
   "result":{  
      "admin":"1.0",
      "db":"1.0",
      "debug":"1.0",
      "eth":"1.0",
      "miner":"1.0",
      "net":"1.0",
      "personal":"1.0",
      "shh":"1.0",
      "txpool":"1.0",
      "web3":"1.0"
   }
}

使用管理API

Geth提供的管理API與官方DApp API採用相同的規範,因此可以擴充套件Web3以支援這些額外的API。

不同的函式被分為多個邏輯組。下面給出JavaScript控制檯上的示例,不過很容易將這些示例轉換為RPC請求。

例如,在Geth終端啟動挖礦:

> miner.start()

通過IPC端結點啟動挖礦:

~$ echo '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' | nc -U $datadir/geth.ipc

通過HTTP端結點啟動挖礦:

~$ curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":74}' localhost:8545

可以在啟動挖礦時傳入一個引數指定挖礦執行緒數:

Geth終端啟動4個執行緒挖礦:

> miner.start(4)

通過IPC端結點啟動4個執行緒挖礦:

~$ echo '{"jsonrpc":"2.0","method":"miner_start","params":[4],"id":1}' | nc -U $datadir/geth.ipc

通過HTTP端結點啟動4個執行緒挖礦:

~$ curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[4],"id":74}' localhost:8545

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:獲取交易池狀態