Json-RPC操做Ethereum 節點

準備工做

  • 本地搭建以太坊私鏈,使用POA共識。節點開啓IPC。

功能描述

  • 試過一些rpc包和go-ethereum 的rpc包,都不是很好用。有些命令好使,有些就報錯。沒有去深究這些rpc包生成的json有什麼異常。直接本身實現。實現其實很簡單,並且用起來也更靠譜。

上碼

package eth

import (
    "bytes"
    "io/ioutil"
    "net/http"
)

type ethRequest struct {
    general
    Method string `json:"method"`
    Params []interface{} `json:"params"`
}

type general struct {
    JsonRPC string `json:"jsonrpc"`
    ID int `json:"id"`
}

//生成ethRequest,Marshal 成[]byte ,傳入do函數便可操做ethereum 節點
func do(jsonParam []byte)([]byte,error){
    reader := bytes.NewReader(jsonParam)
    url := "http://127.0.0.1:8545"
    request, err := http.NewRequest("POST", url, reader)
    if err != nil {
        return []byte(""),err
    }
    request.Header.Set("Content-Type", "application/json;charset=UTF-8")
    client := http.Client{}
    resp, err := client.Do(request)
    if err != nil {
        return []byte(""),err
    }
    respBytes, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return []byte(""),err
    }
    return respBytes,nil
}

其餘說明

相關文章
相關標籤/搜索