func host_init() { var e error BtcRootDir := sys.BitcoinHome() common.GocoinHomeDir = common.CFG.Datadir + string(os.PathSeparator) common.Testnet = common.CFG.Testnet // So chaging this value would will only affect the behaviour after restart if common.CFG.Testnet { // testnet3 common.GenesisBlock = btc.NewUint256FromString("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943") common.Magic = [4]byte{0x0B, 0x11, 0x09, 0x07} common.GocoinHomeDir += common.DataSubdir() + string(os.PathSeparator) BtcRootDir += "testnet3" + string(os.PathSeparator) common.MaxPeersNeeded = 2000 } else { common.GenesisBlock = btc.NewUint256FromString("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f") common.Magic = [4]byte{0xF9, 0xBE, 0xB4, 0xD9} common.GocoinHomeDir += common.DataSubdir() + string(os.PathSeparator) common.MaxPeersNeeded = 5000 } // Lock the folder os.MkdirAll(common.GocoinHomeDir, 0770) sys.LockDatabaseDir(common.GocoinHomeDir) fi, e := os.Stat(common.GocoinHomeDir + "blockchain.dat") if e != nil { os.RemoveAll(common.GocoinHomeDir) fmt.Println("You seem to be running Gocoin for the fist time on this PC") fi, e = os.Stat(BtcRootDir + "blocks/blk00000.dat") if e == nil && fi.Size() > 1024*1024 { fmt.Println("There is a database from Satoshi client on your disk...") if textui.AskYesNo("Do you want to import this database into Gocoin?") { import_blockchain(BtcRootDir + "blocks") } } } fmt.Println("Loading UTXO-db and P2SH/P2KH outputs of", btc.UintToBtc(common.AllBalMinVal), "BTC or more") __exit := make(chan bool) __done := make(chan bool) go func() { for { select { case s := <-killchan: fmt.Println(s) chain.AbortNow = true case <-__exit: __done <- true return } } }() ext := &chain.NewChanOpts{NotifyTxAdd: wallet.TxNotifyAdd, NotifyTxDel: wallet.TxNotifyDel, LoadWalk: wallet.NewUTXO, UTXOVolatileMode: common.FLAG.VolatileUTXO, UndoBlocks: common.FLAG.UndoBlocks, SetBlocksDBCacheSize: true, BlocksDBCacheSize: int(common.CFG.Memory.MaxCachedBlocks)} sta := time.Now().UnixNano() common.BlockChain = chain.NewChainExt(common.GocoinHomeDir, common.GenesisBlock, common.FLAG.Rescan, ext) sto := time.Now().UnixNano() if chain.AbortNow { fmt.Printf("Blockchain opening aborted after %.3f seconds\n", float64(sto-sta)/1e9) common.BlockChain.Close() sys.UnlockDatabaseDir() os.Exit(1) } al, sy := sys.MemUsed() fmt.Printf("Blockchain open in %.3f seconds. %d + %d MB of RAM used (%d)\n", float64(sto-sta)/1e9, al>>20, qdb.ExtraMemoryConsumed>>20, sy>>20) common.StartTime = time.Now() __exit <- true _ = <-__done }
func host_init() { var e error BtcRootDir := sys.BitcoinHome() if common.CFG.Datadir == "" { common.GocoinHomeDir = BtcRootDir + "gocoin" + string(os.PathSeparator) } else { common.GocoinHomeDir = common.CFG.Datadir + string(os.PathSeparator) } common.Testnet = common.CFG.Testnet // So chaging this value would will only affect the behaviour after restart if common.CFG.Testnet { // testnet3 common.GenesisBlock = btc.NewUint256FromString("000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943") common.Magic = [4]byte{0x0B, 0x11, 0x09, 0x07} common.GocoinHomeDir += "tstnet" + string(os.PathSeparator) BtcRootDir += "testnet3" + string(os.PathSeparator) network.AlertPubKey, _ = hex.DecodeString("04302390343f91cc401d56d68b123028bf52e5fca1939df127f63c6467cdf9c8e2c14b61104cf817d0b780da337893ecc4aaff1309e536162dabbdb45200ca2b0a") common.MaxPeersNeeded = 100 } else { common.GenesisBlock = btc.NewUint256FromString("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f") common.Magic = [4]byte{0xF9, 0xBE, 0xB4, 0xD9} common.GocoinHomeDir += "btcnet" + string(os.PathSeparator) network.AlertPubKey, _ = hex.DecodeString("04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284") common.MaxPeersNeeded = 1000 } // Lock the folder os.MkdirAll(common.GocoinHomeDir, 0770) os.MkdirAll(common.GocoinHomeDir+"wallet", 0770) sys.LockDatabaseDir(common.GocoinHomeDir) fi, e := os.Stat(common.GocoinHomeDir + "blockchain.dat") if e != nil { os.RemoveAll(common.GocoinHomeDir) fmt.Println("You seem to be running Gocoin for the fist time on this PC") fi, e = os.Stat(BtcRootDir + "blocks/blk00000.dat") if e == nil && fi.Size() > 1024*1024 { fmt.Println("There is a database from Satoshi client on your disk...") if textui.AskYesNo("Do you want to import this database into Gocoin?") { import_blockchain(BtcRootDir + "blocks") } } } // cache the current balance of all the addresses from the current wallet files wallet.LoadAllWallets() fmt.Println("Loading UTXO database while checking balance of", len(wallet.MyWallet.Addrs), "addresses... (press Ctrl-C to interrupt)") __exit := make(chan bool) __done := make(chan bool) go func() { for { select { case s := <-killchan: fmt.Println(s) chain.AbortNow = true case <-__exit: __done <- true return } } }() ext := &chain.NewChanOpts{NotifyTx: wallet.TxNotify, NotifyStealthTx: wallet.StealthNotify, LoadWalk: wallet.NewUTXO, LoadFlush: wallet.DoPendingStealths} sta := time.Now().UnixNano() common.BlockChain = chain.NewChainExt(common.GocoinHomeDir, common.GenesisBlock, common.FLAG.Rescan, ext) sto := time.Now().UnixNano() if chain.AbortNow { fmt.Printf("Blockchain opening aborted after %.3f seconds\n", float64(sto-sta)/1e9) common.BlockChain.Close() sys.UnlockDatabaseDir() os.Exit(1) } wallet.ChainInitDone() al, sy := sys.MemUsed() fmt.Printf("Blockchain open in %.3f seconds. %d + %d MB of RAM used (%d)\n", float64(sto-sta)/1e9, al>>20, qdb.ExtraMemoryConsumed>>20, sy>>20) common.StartTime = time.Now() __exit <- true _ = <-__done }