From e04986528c8adcabbc5525c5142d930536e41b32 Mon Sep 17 00:00:00 2001 From: Dave Collins Date: Wed, 9 Oct 2013 19:34:02 -0500 Subject: [PATCH] Add --nocheckpoints option. This commit provides a new flag, --nocheckpoints, to disable built-in checkpoints. Checkpoints are used for a number of things such a ensuring the block chain being downloaded matches various known good blocks, allowing quicker verification on old blocks since scripts don't have to be executed, and preventing forks from old blocks, etc. --- blockmanager.go | 4 ++++ config.go | 47 ++++++++++++++++++++++++----------------------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/blockmanager.go b/blockmanager.go index c00003f09..a201d6fa3 100644 --- a/blockmanager.go +++ b/blockmanager.go @@ -730,6 +730,10 @@ func newBlockManager(s *server) (*blockManager, error) { quit: make(chan bool), } bm.blockChain = btcchain.New(s.db, s.btcnet, bm.handleNotifyMsg) + bm.blockChain.DisableCheckpoints(cfg.DisableCheckpoints) + if cfg.DisableCheckpoints { + log.Info("[BMGR] Checkpoints are disabled") + } log.Infof("[BMGR] Generating initial block node index. This may " + "take a while...") diff --git a/config.go b/config.go index fe5260add..6032fb530 100644 --- a/config.go +++ b/config.go @@ -39,29 +39,30 @@ var ( // // See loadConfig for details on the configuration load process. type config struct { - ShowVersion bool `short:"V" long:"version" description:"Display version information and exit"` - ConfigFile string `short:"C" long:"configfile" description:"Path to configuration file"` - DataDir string `short:"b" long:"datadir" description:"Directory to store data"` - AddPeers []string `short:"a" long:"addpeer" description:"Add a peer to connect with at startup"` - ConnectPeers []string `long:"connect" description:"Connect only to the specified peers at startup"` - DisableListen bool `long:"nolisten" description:"Disable listening for incoming connections -- NOTE: Listening is automatically disabled if the --connect option is used or if the --proxy option is used without the --tor option"` - Port string `short:"p" long:"port" description:"Listen for connections on this port (default: 8333, testnet: 18333)"` - MaxPeers int `long:"maxpeers" description:"Max number of inbound and outbound peers"` - BanDuration time.Duration `long:"banduration" description:"How long to ban misbehaving peers. Valid time units are {s, m, h}. Minimum 1 second"` - RPCUser string `short:"u" long:"rpcuser" description:"Username for RPC connections"` - RPCPass string `short:"P" long:"rpcpass" description:"Password for RPC connections"` - RPCPort string `short:"r" long:"rpcport" description:"Listen for JSON/RPC messages on this port"` - DisableRPC bool `long:"norpc" description:"Disable built-in RPC server -- NOTE: The RPC server is disabled by default if no rpcuser/rpcpass is specified"` - DisableDNSSeed bool `long:"nodnsseed" description:"Disable DNS seeding for peers"` - Proxy string `long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"` - ProxyUser string `long:"proxyuser" description:"Username for proxy server"` - ProxyPass string `long:"proxypass" description:"Password for proxy server"` - UseTor bool `long:"tor" description:"Specifies the proxy server used is a Tor node"` - TestNet3 bool `long:"testnet" description:"Use the test network"` - RegressionTest bool `long:"regtest" description:"Use the regression test network"` - DbType string `long:"dbtype" description:"Database backend to use for the Block Chain"` - Profile string `long:"profile" description:"Enable HTTP profiling on given port -- NOTE port must be between 1024 and 65536"` - DebugLevel string `short:"d" long:"debuglevel" description:"Logging level {trace, debug, info, warn, error, critical}"` + ShowVersion bool `short:"V" long:"version" description:"Display version information and exit"` + ConfigFile string `short:"C" long:"configfile" description:"Path to configuration file"` + DataDir string `short:"b" long:"datadir" description:"Directory to store data"` + AddPeers []string `short:"a" long:"addpeer" description:"Add a peer to connect with at startup"` + ConnectPeers []string `long:"connect" description:"Connect only to the specified peers at startup"` + DisableListen bool `long:"nolisten" description:"Disable listening for incoming connections -- NOTE: Listening is automatically disabled if the --connect option is used or if the --proxy option is used without the --tor option"` + Port string `short:"p" long:"port" description:"Listen for connections on this port (default: 8333, testnet: 18333)"` + MaxPeers int `long:"maxpeers" description:"Max number of inbound and outbound peers"` + BanDuration time.Duration `long:"banduration" description:"How long to ban misbehaving peers. Valid time units are {s, m, h}. Minimum 1 second"` + RPCUser string `short:"u" long:"rpcuser" description:"Username for RPC connections"` + RPCPass string `short:"P" long:"rpcpass" description:"Password for RPC connections"` + RPCPort string `short:"r" long:"rpcport" description:"Listen for JSON/RPC messages on this port"` + DisableRPC bool `long:"norpc" description:"Disable built-in RPC server -- NOTE: The RPC server is disabled by default if no rpcuser/rpcpass is specified"` + DisableDNSSeed bool `long:"nodnsseed" description:"Disable DNS seeding for peers"` + Proxy string `long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"` + ProxyUser string `long:"proxyuser" description:"Username for proxy server"` + ProxyPass string `long:"proxypass" description:"Password for proxy server"` + UseTor bool `long:"tor" description:"Specifies the proxy server used is a Tor node"` + TestNet3 bool `long:"testnet" description:"Use the test network"` + RegressionTest bool `long:"regtest" description:"Use the regression test network"` + DisableCheckpoints bool `long:"nocheckpoints" description:"Disable built-in checkpoints. Don't do this unless you know what you're doing."` + DbType string `long:"dbtype" description:"Database backend to use for the Block Chain"` + Profile string `long:"profile" description:"Enable HTTP profiling on given port -- NOTE port must be between 1024 and 65536"` + DebugLevel string `short:"d" long:"debuglevel" description:"Logging level {trace, debug, info, warn, error, critical}"` } // btcdHomeDir returns an OS appropriate home directory for btcd.