diff --git a/eth/backend.go b/eth/backend.go index f67f9c78b..27d3f3b3f 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -132,7 +132,8 @@ type Ethereum struct { logger ethlogger.LogSystem - Mining bool + Mining bool + version string } func New(config *Config) (*Ethereum, error) { @@ -175,6 +176,7 @@ func New(config *Config) (*Ethereum, error) { blacklist: p2p.NewBlacklist(), eventMux: &event.TypeMux{}, logger: logger, + version: config.Name, } eth.chainManager = core.NewChainManager(db, eth.EventMux()) @@ -231,6 +233,7 @@ func (s *Ethereum) PeerCount() int { return s.net.PeerCoun func (s *Ethereum) Peers() []*p2p.Peer { return s.net.Peers() } func (s *Ethereum) MaxPeers() int { return s.net.MaxPeers } func (s *Ethereum) Coinbase() []byte { return nil } // TODO +func (s *Ethereum) ClientVersion() string { return s.version } // Start the ethereum func (s *Ethereum) Start() error { diff --git a/rpc/api.go b/rpc/api.go index 28ec04916..f023709ca 100644 --- a/rpc/api.go +++ b/rpc/api.go @@ -668,6 +668,8 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error return err } return p.WhisperMessages(args, reply) + case "client_version": + *reply = p.eth.GetClientVersion() default: return NewErrorWithMessage(errNotImplemented, req.Method) } diff --git a/xeth/xeth.go b/xeth/xeth.go index d4c188fec..8dd905b86 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -36,6 +36,7 @@ type Backend interface { EventMux() *event.TypeMux Whisper() *whisper.Whisper Miner() *miner.Miner + ClientVersion() string } type XEth struct { @@ -164,6 +165,10 @@ func (self *XEth) IsContract(address string) bool { return len(self.State().SafeGet(address).Code()) > 0 } +func (self *XEth) GetClientVersion() string { + return self.eth.ClientVersion() +} + func (self *XEth) SecretToAddress(key string) string { pair, err := crypto.NewKeyPairFromSec(fromHex(key)) if err != nil {