aboutsummaryrefslogtreecommitdiffstats
path: root/eth/api.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-02-10 17:56:15 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-02-10 20:30:41 +0800
commit59cd60b266ebec20e441b8508671a579630b9870 (patch)
tree55f4c409ba14206bb94beda7f1fd49f880bff008 /eth/api.go
parentbe79b4aacb57d15ae73c376099ee1688d548b6b3 (diff)
downloadgo-tangerine-59cd60b266ebec20e441b8508671a579630b9870.tar
go-tangerine-59cd60b266ebec20e441b8508671a579630b9870.tar.gz
go-tangerine-59cd60b266ebec20e441b8508671a579630b9870.tar.bz2
go-tangerine-59cd60b266ebec20e441b8508671a579630b9870.tar.lz
go-tangerine-59cd60b266ebec20e441b8508671a579630b9870.tar.xz
go-tangerine-59cd60b266ebec20e441b8508671a579630b9870.tar.zst
go-tangerine-59cd60b266ebec20e441b8508671a579630b9870.zip
eth, eth/downloader, jsre: surface state sync progress through the API
Diffstat (limited to 'eth/api.go')
-rw-r--r--eth/api.go32
1 files changed, 19 insertions, 13 deletions
diff --git a/eth/api.go b/eth/api.go
index 09ae0c468..3c01e2c11 100644
--- a/eth/api.go
+++ b/eth/api.go
@@ -152,21 +152,27 @@ func (s *PublicEthereumAPI) Hashrate() *rpc.HexNumber {
}
// Syncing returns false in case the node is currently not synching with the network. It can be up to date or has not
-// yet received the latest block headers from its pears. In case it is synchronizing an object with 3 properties is
-// returned:
+// yet received the latest block headers from its pears. In case it is synchronizing:
// - startingBlock: block number this node started to synchronise from
-// - currentBlock: block number this node is currently importing
-// - highestBlock: block number of the highest block header this node has received from peers
+// - currentBlock: block number this node is currently importing
+// - highestBlock: block number of the highest block header this node has received from peers
+// - pulledStates: number of state entries processed until now
+// - knownStates: number of known state entries that still need to be pulled
func (s *PublicEthereumAPI) Syncing() (interface{}, error) {
- origin, current, height := s.e.Downloader().Progress()
- if current < height {
- return map[string]interface{}{
- "startingBlock": rpc.NewHexNumber(origin),
- "currentBlock": rpc.NewHexNumber(current),
- "highestBlock": rpc.NewHexNumber(height),
- }, nil
- }
- return false, nil
+ origin, current, height, pulled, known := s.e.Downloader().Progress()
+
+ // Return not syncing if the synchronisation already completed
+ if current >= height {
+ return false, nil
+ }
+ // Otherwise gather the block sync stats
+ return map[string]interface{}{
+ "startingBlock": rpc.NewHexNumber(origin),
+ "currentBlock": rpc.NewHexNumber(current),
+ "highestBlock": rpc.NewHexNumber(height),
+ "pulledStates": rpc.NewHexNumber(pulled),
+ "knownStates": rpc.NewHexNumber(known),
+ }, nil
}
// PublicMinerAPI provides an API to control the miner.