func exportECChain(chain *common.ECChain) { if procLog.Level() < factomlog.Info { return } // get all ecBlocks from db ecBlocks, _ := db.FetchAllECBlocks() sort.Sort(util.ByECBlockIDAccending(ecBlocks)) for _, block := range ecBlocks { data, err := block.MarshalBinary() if err != nil { panic(err) } strChainID := chain.ChainID.String() if fileNotExists(dataStorePath + strChainID) { err := os.MkdirAll(dataStorePath+strChainID, 0777) if err == nil { procLog.Info("Created directory " + dataStorePath + strChainID) } else { procLog.Error(err) } } err = ioutil.WriteFile(fmt.Sprintf(dataStorePath+strChainID+"/store.%09d.block", block.Header.DBHeight), data, 0777) if err != nil { panic(err) } } }
// Initialize Entry Credit Block Chain from database func initECChain() { eCreditMap = make(map[string]int32) //Initialize the Entry Credit Chain ID ecchain = common.NewECChain() // get all ecBlocks from db ecBlocks, _ := db.FetchAllECBlocks() sort.Sort(util.ByECBlockIDAccending(ecBlocks)) for i, v := range ecBlocks { if v.Header.DBHeight != uint32(i) { panic("Error in initializing dChain:" + ecchain.ChainID.String() + " DBHeight:" + strconv.Itoa(int(v.Header.DBHeight)) + " i:" + strconv.Itoa(i)) } // Calculate the EC balance for each account initializeECreditMap(&v) } //Create an empty block and append to the chain if len(ecBlocks) == 0 || dchain.NextDBHeight == 0 { ecchain.NextBlockHeight = 0 ecchain.NextBlock = common.NewECBlock() ecchain.NextBlock.AddEntry(serverIndex) for i := 0; i < 10; i++ { marker := common.NewMinuteNumber() marker.Number = uint8(i + 1) ecchain.NextBlock.AddEntry(marker) } } else { // Entry Credit Chain should have the same height as the dir chain ecchain.NextBlockHeight = dchain.NextDBHeight var err error ecchain.NextBlock, err = common.NextECBlock(&ecBlocks[ecchain.NextBlockHeight-1]) if err != nil { panic(err) } } // create a backup copy before processing entries copyCreditMap(eCreditMap, eCreditMapBackup) exportECChain(ecchain) // ONly for debugging if procLog.Level() > factomlog.Info { printCreditMap() } }