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

update: add global workload response

parent 4eb077d6
...@@ -129,10 +129,10 @@ func getPendingWorkload(params []byte, resp *jsonrpcMessage) { ...@@ -129,10 +129,10 @@ func getPendingWorkload(params []byte, resp *jsonrpcMessage) {
return return
} }
workload := witness.GetPendingWorkload(common.HexToAddress(addressList[0])) workload, globalWorkload := witness.GetPendingWorkload(common.HexToAddress(addressList[0]))
temp := map[string]interface{}{ temp := map[string]interface{}{
"workload": workload, "workload": workload,
"global_workload": globalWorkload,
} }
resp.Result, _ = json.Marshal(temp) resp.Result, _ = json.Marshal(temp)
......
...@@ -23,6 +23,7 @@ type Witness struct { ...@@ -23,6 +23,7 @@ type Witness struct {
db *trie.Database db *trie.Database
state *StateDB state *StateDB
pendingProof map[common.Address]*witnessv1.ValidatedProof pendingProof map[common.Address]*witnessv1.ValidatedProof
pendingWorkload uint64
mtTreeCache map[string]*tree.MerkleTree mtTreeCache map[string]*tree.MerkleTree
date string date string
rpc *ChainRPC rpc *ChainRPC
...@@ -89,9 +90,9 @@ func (w *Witness) AddPendingProof(miner common.Address, proofs []*witnessv1.Vali ...@@ -89,9 +90,9 @@ func (w *Witness) AddPendingProof(miner common.Address, proofs []*witnessv1.Vali
} }
for _, proof := range proofs { for _, proof := range proofs {
workload += proof.Workload workload += proof.Workload
w.pendingWorkload += proof.Workload
} }
w.pendingProof[miner] = &witnessv1.ValidatedProof{Workload: workload} w.pendingProof[miner] = &witnessv1.ValidatedProof{Workload: workload}
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"miner": miner.Hex(), "miner": miner.Hex(),
"proof_count": len(proofs), "proof_count": len(proofs),
...@@ -382,14 +383,14 @@ func (w *Witness) GetMerkleProof(address common.Address) (workload uint64, proof ...@@ -382,14 +383,14 @@ func (w *Witness) GetMerkleProof(address common.Address) (workload uint64, proof
return object.Workload, proofs return object.Workload, proofs
} }
func (w *Witness) GetPendingWorkload(address common.Address) (workload uint64) { func (w *Witness) GetPendingWorkload(address common.Address) (workload, globalWorkload uint64) {
w.Lock() w.Lock()
proof, ok := w.pendingProof[address] proof, ok := w.pendingProof[address]
w.Unlock() w.Unlock()
if !ok { if !ok {
return 0 return 0, w.pendingWorkload
} }
return proof.Workload return proof.Workload, w.pendingWorkload
} }
func (w *Witness) LoadMerkleProof(date string) { func (w *Witness) LoadMerkleProof(date string) {
......
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