// End of Block means packing the current block away, and setting // up the next block. // this function is to replace the existing function: ProcessEndOfBlock func (fs *FactoidState) ProcessEndOfBlock2(nextBlkHeight uint32) { var hash, hash2 fct.IHash if fs.currentBlock != nil { // If no blocks, the current block is nil hash = fs.currentBlock.GetHash() hash2 = fs.currentBlock.GetLedgerKeyMR() } fs.currentBlock = block.NewFBlock(fs.GetFactoshisPerEC(), nextBlkHeight) t := block.GetCoinbase(fs.GetTimeMilli()) err := fs.currentBlock.AddCoinbase(t) if err != nil { panic(err.Error()) } fs.UpdateTransaction(t) if hash != nil { fs.currentBlock.SetPrevKeyMR(hash.Bytes()) fs.currentBlock.SetPrevLedgerKeyMR(hash2.Bytes()) } cp.CP.AddUpdate( "blockheight", // tag "status", // Category fmt.Sprintf("Directory Block Height: %d", nextBlkHeight), // Title "", // Msg 0) }
// End of Block means packing the current block away, and setting // up the next block. func (fs *FactoidState) ProcessEndOfBlock() { var hash, hash2 fct.IHash if fs.GetCurrentBlock() == nil { panic("Invalid state on initialization") } hash = fs.currentBlock.GetHash() hash2 = fs.currentBlock.GetLedgerKeyMR() fs.PutTransactionBlock(hash, fs.currentBlock) fs.PutTransactionBlock(fct.FACTOID_CHAINID_HASH, fs.currentBlock) fs.dbheight += 1 fs.currentBlock = block.NewFBlock(fs.GetFactoshisPerEC(), fs.dbheight) t := block.GetCoinbase(fs.GetTimeMilli()) err := fs.currentBlock.AddCoinbase(t) if err != nil { panic(err.Error()) } fs.UpdateTransaction(t) if hash != nil { fs.currentBlock.SetPrevKeyMR(hash.Bytes()) fs.currentBlock.SetPrevLedgerKeyMR(hash2.Bytes()) } cp.CP.AddUpdate( "blockheight", // tag "status", // Category fmt.Sprintf("Directory Block Height: %d", fs.GetDBHeight()), // Title "", // Msg 0) }
func (db *BoltDB) Put(bucket string, key fct.IHash, value fct.IBlock) { b := []byte(bucket) k := key.Bytes() db.PutRaw(b, k, value) }
func (db *BoltDB) Get(bucket string, key fct.IHash) (value fct.IBlock) { return db.GetRaw([]byte(bucket), key.Bytes()) }
func cp(a fct.IHash) [fct.ADDRESS_LENGTH]byte { r := new([fct.ADDRESS_LENGTH]byte) copy(r[:], a.Bytes()) return *r }