forked from cerc-io/ipld-eth-server
605b0a96ae
* Add graphql server * Update Makefile * Update log_filters constraint * Add GetLogFilter to repo * Update travis (use Makefile, go fmt, go vet) * Add logFilter schema and resolvers * Add GetWatchedEvent to watched_events_repo * Add watchedEventLog schema and resolvers
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package node
|
|
|
|
import (
|
|
"context"
|
|
|
|
"strconv"
|
|
|
|
"github.com/ethereum/go-ethereum/core/types"
|
|
"github.com/ethereum/go-ethereum/p2p"
|
|
"github.com/ethereum/go-ethereum/rpc"
|
|
"github.com/vulcanize/vulcanizedb/pkg/core"
|
|
)
|
|
|
|
func Info(client *rpc.Client) core.Node {
|
|
node := core.Node{}
|
|
node.NetworkId = NetworkId(client)
|
|
node.GenesisBlock = GenesisBlock(client)
|
|
node.Id, node.ClientName = IdClientName(client)
|
|
return node
|
|
}
|
|
|
|
func IdClientName(client *rpc.Client) (string, string) {
|
|
var info p2p.NodeInfo
|
|
modules, _ := client.SupportedModules()
|
|
if _, ok := modules["admin"]; ok {
|
|
client.CallContext(context.Background(), &info, "admin_nodeInfo")
|
|
return info.ID, info.Name
|
|
}
|
|
return "", ""
|
|
}
|
|
|
|
func NetworkId(client *rpc.Client) float64 {
|
|
var version string
|
|
client.CallContext(context.Background(), &version, "net_version")
|
|
networkId, _ := strconv.ParseFloat(version, 64)
|
|
return networkId
|
|
}
|
|
|
|
func ProtocolVersion(client *rpc.Client) string {
|
|
var protocolVersion string
|
|
client.CallContext(context.Background(), &protocolVersion, "eth_protocolVersion")
|
|
return protocolVersion
|
|
}
|
|
|
|
func GenesisBlock(client *rpc.Client) string {
|
|
var header *types.Header
|
|
client.CallContext(context.Background(), &header, "eth_getBlockByNumber", "0x0", false)
|
|
return header.Hash().Hex()
|
|
}
|