From 9c6cf960b46fc71d62ebb5c2d7a1b32634afc2e4 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 19 Nov 2019 18:22:04 +0100 Subject: [PATCH] internal/web3ext, les: update clique JS and make it work with the light client (#20318) Also fix the input formatter on clique_getSnapshot and clique_getSigners so that integers as well as hex number strings are accepted. --- internal/web3ext/web3ext.go | 9 +++++++-- les/client.go | 4 +++- light/lightchain.go | 5 +++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/internal/web3ext/web3ext.go b/internal/web3ext/web3ext.go index 53f2425e7..dbffbd2a8 100644 --- a/internal/web3ext/web3ext.go +++ b/internal/web3ext/web3ext.go @@ -74,7 +74,7 @@ web3._extend({ name: 'getSnapshot', call: 'clique_getSnapshot', params: 1, - inputFormatter: [null] + inputFormatter: [web3._extend.utils.fromDecimal] }), new web3._extend.Method({ name: 'getSnapshotAtHash', @@ -85,7 +85,7 @@ web3._extend({ name: 'getSigners', call: 'clique_getSigners', params: 1, - inputFormatter: [null] + inputFormatter: [web3._extend.utils.fromDecimal] }), new web3._extend.Method({ name: 'getSignersAtHash', @@ -102,6 +102,11 @@ web3._extend({ call: 'clique_discard', params: 1 }), + new web3._extend.Method({ + name: 'status', + call: 'clique_status', + params: 0 + }), ], properties: [ new web3._extend.Property({ diff --git a/les/client.go b/les/client.go index b367681f3..1ad44e16d 100644 --- a/les/client.go +++ b/les/client.go @@ -176,7 +176,9 @@ func (s *LightDummyAPI) Mining() bool { // APIs returns the collection of RPC services the ethereum package offers. // NOTE, some of these services probably need to be moved to somewhere else. func (s *LightEthereum) APIs() []rpc.API { - return append(ethapi.GetAPIs(s.ApiBackend), []rpc.API{ + apis := ethapi.GetAPIs(s.ApiBackend) + apis = append(apis, s.engine.APIs(s.BlockChain().HeaderChain())...) + return append(apis, []rpc.API{ { Namespace: "eth", Version: "1.0", diff --git a/light/lightchain.go b/light/lightchain.go index 02b90138a..90ea26323 100644 --- a/light/lightchain.go +++ b/light/lightchain.go @@ -143,6 +143,11 @@ func (lc *LightChain) Odr() OdrBackend { return lc.odr } +// HeaderChain returns the underlying header chain. +func (lc *LightChain) HeaderChain() *core.HeaderChain { + return lc.hc +} + // loadLastState loads the last known chain state from the database. This method // assumes that the chain manager mutex is held. func (lc *LightChain) loadLastState() error {