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

add merkle tree rpc

parent 7565f5b2
...@@ -66,7 +66,9 @@ func rpcHandle(w http.ResponseWriter, r *http.Request) { ...@@ -66,7 +66,9 @@ func rpcHandle(w http.ResponseWriter, r *http.Request) {
getPendingWorkload(req.Params, resp) getPendingWorkload(req.Params, resp)
_ = json.NewEncoder(w).Encode(resp) _ = json.NewEncoder(w).Encode(resp)
return return
case "getDailyMerkleNodes":
getDailyMerkleNodes(req.Params, resp)
_ = json.NewEncoder(w).Encode(resp)
default: default:
resp.Error = &jsonError{ resp.Error = &jsonError{
Code: -32601, Code: -32601,
...@@ -150,8 +152,50 @@ func getPendingWorkload(params []byte, resp *jsonrpcMessage) { ...@@ -150,8 +152,50 @@ func getPendingWorkload(params []byte, resp *jsonrpcMessage) {
return 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) { func StartJSONRPC(listenAddress string, w *core.Witness) {
......
...@@ -442,7 +442,7 @@ func (w *Witness) GetMerkleProof(address common.Address, date string) (balance s ...@@ -442,7 +442,7 @@ func (w *Witness) GetMerkleProof(address common.Address, date string) (balance s
return object.Balance, proofs 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 == "" { if date == "" {
date = w.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