Commit c01567df authored by 贾浩@五瓣科技's avatar 贾浩@五瓣科技

add merkle tree rpc

parent 7565f5b2
......@@ -66,7 +66,9 @@ func rpcHandle(w http.ResponseWriter, r *http.Request) {
getPendingWorkload(req.Params, resp)
_ = json.NewEncoder(w).Encode(resp)
return
case "getDailyMerkleNodes":
getDailyMerkleNodes(req.Params, resp)
_ = json.NewEncoder(w).Encode(resp)
default:
resp.Error = &jsonError{
Code: -32601,
......@@ -150,8 +152,50 @@ func getPendingWorkload(params []byte, resp *jsonrpcMessage) {
return
}
func findNode(params []byte, resp *jsonrpcMessage) {
func getDailyMerkleNodes(params []byte, resp *jsonrpcMessage) {
// date string, depth int, rootHash common.Hash
paramList := make([]interface{}, 0)
err := json.Unmarshal(params, &paramList)
if err != nil || len(paramList) < 1 || len(paramList) > 3 {
resp.Error = &jsonError{
Code: -32602,
Message: "invalid params",
}
return
}
var date string
var depth = 1
var rootHash common.Hash
_, err = time.Parse("2006-01-02", paramList[1].(string))
if err != nil {
resp.Error = &jsonError{
Code: -32602,
Message: "invalid params",
}
return
}
date = paramList[1].(string)
if len(paramList) >= 2 {
_depth, ok := paramList[2].(float64)
if !ok {
resp.Error = &jsonError{
Code: -32602,
Message: "invalid params",
}
return
}
depth = int(uint(_depth))
}
if len(paramList) >= 3 {
rootHash = common.HexToHash(paramList[3].(string))
}
nodes := witness.GetDailyMerkleNodes(date, depth, rootHash)
resp.Result, _ = json.Marshal(nodes)
}
func StartJSONRPC(listenAddress string, w *core.Witness) {
......
......@@ -442,7 +442,7 @@ func (w *Witness) GetMerkleProof(address common.Address, date string) (balance s
return object.Balance, proofs
}
func (w *Witness) GetDailyMerkleProofs(date string, depth int, rootHash common.Hash) (proofs [][]common.Hash) {
func (w *Witness) GetDailyMerkleNodes(date string, depth int, rootHash common.Hash) (proofs [][]common.Hash) {
if date == "" {
date = w.date
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment