From e61035c5a3630e4f6fd0fb3e5346a4eed8cedc80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Tue, 25 Apr 2017 14:31:15 +0300 Subject: [PATCH] cmd, eth, les, mobile: make networkid uint64 everywhere --- cmd/faucet/faucet.go | 4 ++-- cmd/puppeth/wizard_genesis.go | 2 +- cmd/utils/flags.go | 4 ++-- eth/backend.go | 6 +++--- eth/config.go | 2 +- eth/gen_config.go | 4 ++-- eth/handler.go | 6 +++--- eth/helper_test.go | 2 +- eth/peer.go | 8 ++++---- eth/protocol.go | 2 +- eth/protocol_test.go | 4 ++-- ethstats/ethstats.go | 4 ++-- internal/ethapi/api.go | 4 ++-- les/backend.go | 6 +++--- les/handler.go | 6 +++--- les/peer.go | 8 ++++---- mobile/geth.go | 4 ++-- 17 files changed, 38 insertions(+), 38 deletions(-) diff --git a/cmd/faucet/faucet.go b/cmd/faucet/faucet.go index f87cfdb72..1c5c43edc 100644 --- a/cmd/faucet/faucet.go +++ b/cmd/faucet/faucet.go @@ -61,7 +61,7 @@ var ( apiPortFlag = flag.Int("apiport", 8080, "Listener port for the HTTP API connection") ethPortFlag = flag.Int("ethport", 30303, "Listener port for the devp2p connection") bootFlag = flag.String("bootnodes", "", "Comma separated bootnode enode URLs to seed with") - netFlag = flag.Int("network", 0, "Network ID to use for the Ethereum protocol") + netFlag = flag.Uint64("network", 0, "Network ID to use for the Ethereum protocol") statsFlag = flag.String("ethstats", "", "Ethstats network monitoring auth string") netnameFlag = flag.String("faucet.name", "", "Network name to assign to the faucet") @@ -179,7 +179,7 @@ type faucet struct { lock sync.RWMutex // Lock protecting the faucet's internals } -func newFaucet(genesis *core.Genesis, port int, enodes []*discv5.Node, network int, stats string, ks *keystore.KeyStore, index []byte) (*faucet, error) { +func newFaucet(genesis *core.Genesis, port int, enodes []*discv5.Node, network uint64, stats string, ks *keystore.KeyStore, index []byte) (*faucet, error) { // Assemble the raw devp2p protocol stack stack, err := node.New(&node.Config{ Name: "geth", diff --git a/cmd/puppeth/wizard_genesis.go b/cmd/puppeth/wizard_genesis.go index a67812e92..705e01031 100644 --- a/cmd/puppeth/wizard_genesis.go +++ b/cmd/puppeth/wizard_genesis.go @@ -120,7 +120,7 @@ func (w *wizard) makeGenesis() { // Query the user for some custom extras fmt.Println() fmt.Println("Specify your chain/network ID if you want an explicit one (default = random)") - genesis.Config.ChainId = big.NewInt(int64(w.readDefaultInt(rand.Intn(65536)))) + genesis.Config.ChainId = new(big.Int).SetUint64(uint64(w.readDefaultInt(rand.Intn(65536)))) fmt.Println() fmt.Println("Anything fun to embed into the genesis block? (max 32 bytes)") diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index af9585bd0..afaa7214b 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -148,7 +148,7 @@ var ( Usage: "Number of recent ethash mining DAGs to keep on disk (1+GB each)", Value: eth.DefaultConfig.EthashDatasetsOnDisk, } - NetworkIdFlag = cli.IntFlag{ + NetworkIdFlag = cli.Uint64Flag{ Name: "networkid", Usage: "Network identifier (integer, 1=Frontier, 2=Morden (disused), 3=Ropsten)", Value: eth.DefaultConfig.NetworkId, @@ -806,7 +806,7 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) { cfg.LightPeers = ctx.GlobalInt(LightPeersFlag.Name) } if ctx.GlobalIsSet(NetworkIdFlag.Name) { - cfg.NetworkId = ctx.GlobalInt(NetworkIdFlag.Name) + cfg.NetworkId = ctx.GlobalUint64(NetworkIdFlag.Name) } // Ethereum needs to know maxPeers to calculate the light server peer ratio. diff --git a/eth/backend.go b/eth/backend.go index 03c2e38e5..f864b1d88 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -80,7 +80,7 @@ type Ethereum struct { MinerThreads int etherbase common.Address - netVersionId int + networkId uint64 netRPCService *ethapi.PublicNetAPI } @@ -118,7 +118,7 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { engine: CreateConsensusEngine(ctx, config, chainConfig, chainDb), shutdownChan: make(chan bool), stopDbUpgrade: stopDbUpgrade, - netVersionId: config.NetworkId, + networkId: config.NetworkId, etherbase: config.Etherbase, MinerThreads: config.MinerThreads, } @@ -347,7 +347,7 @@ func (s *Ethereum) Engine() consensus.Engine { return s.engine } func (s *Ethereum) ChainDb() ethdb.Database { return s.chainDb } func (s *Ethereum) IsListening() bool { return true } // Always listening func (s *Ethereum) EthVersion() int { return int(s.protocolManager.SubProtocols[0].Version) } -func (s *Ethereum) NetVersion() int { return s.netVersionId } +func (s *Ethereum) NetVersion() uint64 { return s.networkId } func (s *Ethereum) Downloader() *downloader.Downloader { return s.protocolManager.downloader } // Protocols implements node.Service, returning all the currently configured diff --git a/eth/config.go b/eth/config.go index 7049940d3..a09ca76f3 100644 --- a/eth/config.go +++ b/eth/config.go @@ -72,7 +72,7 @@ type Config struct { Genesis *core.Genesis `toml:",omitempty"` // Protocol options - NetworkId int // Network ID to use for selecting peers to connect to + NetworkId uint64 // Network ID to use for selecting peers to connect to SyncMode downloader.SyncMode // Light client options diff --git a/eth/gen_config.go b/eth/gen_config.go index 56fba1d89..955facf8f 100644 --- a/eth/gen_config.go +++ b/eth/gen_config.go @@ -15,7 +15,7 @@ import ( func (c Config) MarshalTOML() (interface{}, error) { type Config struct { Genesis *core.Genesis `toml:",omitempty"` - NetworkId int + NetworkId uint64 SyncMode downloader.SyncMode LightServ int `toml:",omitempty"` LightPeers int `toml:",omitempty"` @@ -72,7 +72,7 @@ func (c Config) MarshalTOML() (interface{}, error) { func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { type Config struct { Genesis *core.Genesis `toml:",omitempty"` - NetworkId *int + NetworkId *uint64 SyncMode *downloader.SyncMode LightServ *int `toml:",omitempty"` LightPeers *int `toml:",omitempty"` diff --git a/eth/handler.go b/eth/handler.go index fb8a0fd57..16e371227 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -60,7 +60,7 @@ func errResp(code errCode, format string, v ...interface{}) error { } type ProtocolManager struct { - networkId int + networkId uint64 fastSync uint32 // Flag whether fast sync is enabled (gets disabled if we already have blocks) acceptTxs uint32 // Flag whether we're considered synchronised (enables transaction processing) @@ -96,7 +96,7 @@ type ProtocolManager struct { // NewProtocolManager returns a new ethereum sub protocol manager. The Ethereum sub protocol manages peers capable // with the ethereum network. -func NewProtocolManager(config *params.ChainConfig, mode downloader.SyncMode, networkId int, maxPeers int, mux *event.TypeMux, txpool txPool, engine consensus.Engine, blockchain *core.BlockChain, chaindb ethdb.Database) (*ProtocolManager, error) { +func NewProtocolManager(config *params.ChainConfig, mode downloader.SyncMode, networkId uint64, maxPeers int, mux *event.TypeMux, txpool txPool, engine consensus.Engine, blockchain *core.BlockChain, chaindb ethdb.Database) (*ProtocolManager, error) { // Create the protocol manager with the base fields manager := &ProtocolManager{ networkId: networkId, @@ -733,7 +733,7 @@ func (self *ProtocolManager) txBroadcastLoop() { // EthNodeInfo represents a short summary of the Ethereum sub-protocol metadata known // about the host peer. type EthNodeInfo struct { - Network int `json:"network"` // Ethereum network ID (1=Frontier, 2=Morden, Ropsten=3) + Network uint64 `json:"network"` // Ethereum network ID (1=Frontier, 2=Morden, Ropsten=3) Difficulty *big.Int `json:"difficulty"` // Total difficulty of the host's blockchain Genesis common.Hash `json:"genesis"` // SHA3 hash of the host's genesis block Head common.Hash `json:"head"` // SHA3 hash of the host's best owned block diff --git a/eth/helper_test.go b/eth/helper_test.go index 21ac3724e..0260b9d77 100644 --- a/eth/helper_test.go +++ b/eth/helper_test.go @@ -173,7 +173,7 @@ func newTestPeer(name string, version int, pm *ProtocolManager, shake bool) (*te func (p *testPeer) handshake(t *testing.T, td *big.Int, head common.Hash, genesis common.Hash) { msg := &statusData{ ProtocolVersion: uint32(p.version), - NetworkId: uint32(DefaultConfig.NetworkId), + NetworkId: DefaultConfig.NetworkId, TD: td, CurrentBlock: head, GenesisBlock: genesis, diff --git a/eth/peer.go b/eth/peer.go index 6884fee8e..42ead5396 100644 --- a/eth/peer.go +++ b/eth/peer.go @@ -230,7 +230,7 @@ func (p *peer) RequestReceipts(hashes []common.Hash) error { // Handshake executes the eth protocol handshake, negotiating version number, // network IDs, difficulties, head and genesis blocks. -func (p *peer) Handshake(network int, td *big.Int, head common.Hash, genesis common.Hash) error { +func (p *peer) Handshake(network uint64, td *big.Int, head common.Hash, genesis common.Hash) error { // Send out own handshake in a new thread errc := make(chan error, 2) var status statusData // safe to read after two values have been received from errc @@ -238,7 +238,7 @@ func (p *peer) Handshake(network int, td *big.Int, head common.Hash, genesis com go func() { errc <- p2p.Send(p.rw, StatusMsg, &statusData{ ProtocolVersion: uint32(p.version), - NetworkId: uint32(network), + NetworkId: network, TD: td, CurrentBlock: head, GenesisBlock: genesis, @@ -263,7 +263,7 @@ func (p *peer) Handshake(network int, td *big.Int, head common.Hash, genesis com return nil } -func (p *peer) readStatus(network int, status *statusData, genesis common.Hash) (err error) { +func (p *peer) readStatus(network uint64, status *statusData, genesis common.Hash) (err error) { msg, err := p.rw.ReadMsg() if err != nil { return err @@ -281,7 +281,7 @@ func (p *peer) readStatus(network int, status *statusData, genesis common.Hash) if status.GenesisBlock != genesis { return errResp(ErrGenesisBlockMismatch, "%x (!= %x)", status.GenesisBlock[:8], genesis[:8]) } - if int(status.NetworkId) != network { + if status.NetworkId != network { return errResp(ErrNetworkIdMismatch, "%d (!= %d)", status.NetworkId, network) } if int(status.ProtocolVersion) != p.version { diff --git a/eth/protocol.go b/eth/protocol.go index 40997da7a..4bc8bee72 100644 --- a/eth/protocol.go +++ b/eth/protocol.go @@ -105,7 +105,7 @@ type txPool interface { // statusData is the network packet for the status message. type statusData struct { ProtocolVersion uint32 - NetworkId uint32 + NetworkId uint64 TD *big.Int CurrentBlock common.Hash GenesisBlock common.Hash diff --git a/eth/protocol_test.go b/eth/protocol_test.go index 74180bedd..2056ee0a8 100644 --- a/eth/protocol_test.go +++ b/eth/protocol_test.go @@ -55,7 +55,7 @@ func testStatusMsgErrors(t *testing.T, protocol int) { wantError: errResp(ErrNoStatusMsg, "first msg has code 2 (!= 0)"), }, { - code: StatusMsg, data: statusData{10, uint32(DefaultConfig.NetworkId), td, currentBlock, genesis}, + code: StatusMsg, data: statusData{10, DefaultConfig.NetworkId, td, currentBlock, genesis}, wantError: errResp(ErrProtocolVersionMismatch, "10 (!= %d)", protocol), }, { @@ -63,7 +63,7 @@ func testStatusMsgErrors(t *testing.T, protocol int) { wantError: errResp(ErrNetworkIdMismatch, "999 (!= 1)"), }, { - code: StatusMsg, data: statusData{uint32(protocol), uint32(DefaultConfig.NetworkId), td, currentBlock, common.Hash{3}}, + code: StatusMsg, data: statusData{uint32(protocol), DefaultConfig.NetworkId, td, currentBlock, common.Hash{3}}, wantError: errResp(ErrGenesisBlockMismatch, "0300000000000000 (!= %x)", genesis[:8]), }, } diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go index c16163ace..8765da8fa 100644 --- a/ethstats/ethstats.go +++ b/ethstats/ethstats.go @@ -323,10 +323,10 @@ func (s *Service) login(conn *websocket.Conn) error { var network, protocol string if info := infos.Protocols["eth"]; info != nil { - network = strconv.Itoa(info.(*eth.EthNodeInfo).Network) + network = fmt.Sprintf("%d", info.(*eth.EthNodeInfo).Network) protocol = fmt.Sprintf("eth/%d", eth.ProtocolVersions[0]) } else { - network = strconv.Itoa(infos.Protocols["les"].(*eth.EthNodeInfo).Network) + network = fmt.Sprintf("%d", infos.Protocols["les"].(*eth.EthNodeInfo).Network) protocol = fmt.Sprintf("les/%d", les.ProtocolVersions[0]) } auth := &authMsg{ diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index f0bc3aa4b..f9eed8797 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1435,11 +1435,11 @@ func (api *PrivateDebugAPI) SetHead(number hexutil.Uint64) { // PublicNetAPI offers network related RPC methods type PublicNetAPI struct { net *p2p.Server - networkVersion int + networkVersion uint64 } // NewPublicNetAPI creates a new net API instance. -func NewPublicNetAPI(net *p2p.Server, networkVersion int) *PublicNetAPI { +func NewPublicNetAPI(net *p2p.Server, networkVersion uint64) *PublicNetAPI { return &PublicNetAPI{net, networkVersion} } diff --git a/les/backend.go b/les/backend.go index 783e6e94e..646c81a7b 100644 --- a/les/backend.go +++ b/les/backend.go @@ -61,7 +61,7 @@ type LightEthereum struct { engine consensus.Engine accountManager *accounts.Manager - netVersionId int + networkId uint64 netRPCService *ethapi.PublicNetAPI } @@ -87,7 +87,7 @@ func New(ctx *node.ServiceContext, config *eth.Config) (*LightEthereum, error) { accountManager: ctx.AccountManager, engine: eth.CreateConsensusEngine(ctx, config, chainConfig, chainDb), shutdownChan: make(chan bool), - netVersionId: config.NetworkId, + networkId: config.NetworkId, } if eth.blockchain, err = light.NewLightChain(odr, eth.chainConfig, eth.engine, eth.eventMux); err != nil { return nil, err @@ -187,7 +187,7 @@ func (s *LightEthereum) Protocols() []p2p.Protocol { // Ethereum protocol implementation. func (s *LightEthereum) Start(srvr *p2p.Server) error { log.Warn("Light client mode is an experimental feature") - s.netRPCService = ethapi.NewPublicNetAPI(srvr, s.netVersionId) + s.netRPCService = ethapi.NewPublicNetAPI(srvr, s.networkId) s.protocolManager.Start(srvr) return nil } diff --git a/les/handler.go b/les/handler.go index fbb9e9906..64023af0f 100644 --- a/les/handler.go +++ b/les/handler.go @@ -95,7 +95,7 @@ type ProtocolManager struct { lightSync bool txpool txPool txrelay *LesTxRelay - networkId int + networkId uint64 chainConfig *params.ChainConfig blockchain BlockChain chainDb ethdb.Database @@ -128,7 +128,7 @@ type ProtocolManager struct { // NewProtocolManager returns a new ethereum sub protocol manager. The Ethereum sub protocol manages peers capable // with the ethereum network. -func NewProtocolManager(chainConfig *params.ChainConfig, lightSync bool, networkId int, mux *event.TypeMux, engine consensus.Engine, blockchain BlockChain, txpool txPool, chainDb ethdb.Database, odr *LesOdr, txrelay *LesTxRelay) (*ProtocolManager, error) { +func NewProtocolManager(chainConfig *params.ChainConfig, lightSync bool, networkId uint64, mux *event.TypeMux, engine consensus.Engine, blockchain BlockChain, txpool txPool, chainDb ethdb.Database, odr *LesOdr, txrelay *LesTxRelay) (*ProtocolManager, error) { // Create the protocol manager with the base fields manager := &ProtocolManager{ lightSync: lightSync, @@ -310,7 +310,7 @@ func (pm *ProtocolManager) Stop() { log.Info("Light Ethereum protocol stopped") } -func (pm *ProtocolManager) newPeer(pv, nv int, p *p2p.Peer, rw p2p.MsgReadWriter) *peer { +func (pm *ProtocolManager) newPeer(pv int, nv uint64, p *p2p.Peer, rw p2p.MsgReadWriter) *peer { return newPeer(pv, nv, p, newMeteredMsgWriter(rw)) } diff --git a/les/peer.go b/les/peer.go index f45605593..ab55bafe3 100644 --- a/les/peer.go +++ b/les/peer.go @@ -48,8 +48,8 @@ type peer struct { rw p2p.MsgReadWriter - version int // Protocol version negotiated - network int // Network ID being on + version int // Protocol version negotiated + network uint64 // Network ID being on id string @@ -69,7 +69,7 @@ type peer struct { fcCosts requestCostTable } -func newPeer(version, network int, p *p2p.Peer, rw p2p.MsgReadWriter) *peer { +func newPeer(version int, network uint64, p *p2p.Peer, rw p2p.MsgReadWriter) *peer { id := p.ID() return &peer{ @@ -384,7 +384,7 @@ func (p *peer) Handshake(td *big.Int, head common.Hash, headNum uint64, genesis if rGenesis != genesis { return errResp(ErrGenesisBlockMismatch, "%x (!= %x)", rGenesis[:8], genesis[:8]) } - if int(rNetwork) != p.network { + if rNetwork != p.network { return errResp(ErrNetworkIdMismatch, "%d (!= %d)", rNetwork, p.network) } if int(rVersion) != p.version { diff --git a/mobile/geth.go b/mobile/geth.go index be04e4603..4d679fb53 100644 --- a/mobile/geth.go +++ b/mobile/geth.go @@ -54,7 +54,7 @@ type NodeConfig struct { // EthereumNetworkID is the network identifier used by the Ethereum protocol to // decide if remote peers should be accepted or not. - EthereumNetworkID int + EthereumNetworkID int64 // uint64 in truth, but Java can't handle that... // EthereumGenesis is the genesis JSON to use to seed the blockchain with. An // empty genesis state is equivalent to using the mainnet's state. @@ -148,7 +148,7 @@ func NewNode(datadir string, config *NodeConfig) (stack *Node, _ error) { ethConf := eth.DefaultConfig ethConf.Genesis = genesis ethConf.SyncMode = downloader.LightSync - ethConf.NetworkId = config.EthereumNetworkID + ethConf.NetworkId = uint64(config.EthereumNetworkID) ethConf.DatabaseCache = config.EthereumDatabaseCache if err := rawStack.Register(func(ctx *node.ServiceContext) (node.Service, error) { return les.New(ctx, ðConf)