func NewFBlock(prev interfaces.IFBlock) interfaces.IFBlock { scb := new(FBlock) scb.BodyMR = new(primitives.Hash) if prev != nil { scb.PrevKeyMR = prev.GetKeyMR() scb.PrevLedgerKeyMR = prev.GetLedgerKeyMR() scb.ExchRate = prev.GetExchRate() scb.DBHeight = prev.GetDBHeight() + 1 } else { scb.PrevKeyMR = primitives.NewZeroHash() scb.PrevLedgerKeyMR = primitives.NewZeroHash() scb.ExchRate = 1 scb.DBHeight = 0 } return scb }
// When we are playing catchup, adding the transaction block is a pretty // useful feature. func (fs *FactoidState) AddTransactionBlock(blk interfaces.IFBlock) error { if err := blk.Validate(); err != nil { return err } transactions := blk.GetTransactions() for _, trans := range transactions { err := fs.UpdateTransaction(trans) if err != nil { return err } } fs.CurrentBlock = blk fs.SetFactoshisPerEC(blk.GetExchRate()) return nil }
func createECEntriesfromBlocks(fBlock interfaces.IFBlock, eBlocks []*entryBlock.EBlock, height int) []interfaces.IECBlockEntry { ecEntries := []interfaces.IECBlockEntry{} ecEntries = append(ecEntries, entryCreditBlock.NewServerIndexNumber2(uint8(height%10+1))) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(0)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(1)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(2)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(3)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(4)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(5)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(6)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(7)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(8)) ecEntries = append(ecEntries, entryCreditBlock.NewMinuteNumber(9)) trans := fBlock.GetTransactions() for _, t := range trans { ecOut := t.GetECOutputs() for i, ec := range ecOut { increase := new(entryCreditBlock.IncreaseBalance) increase.ECPubKey = primitives.Byte32ToByteSlice32(ec.GetAddress().Fixed()) increase.TXID = t.GetHash() increase.Index = uint64(i) increase.NumEC = ec.GetAmount() / fBlock.GetExchRate() ecEntries = append(ecEntries, increase) } } for _, eBlock := range eBlocks { if height == 0 { ecEntries = append(ecEntries, NewCommitChain(eBlock)) } else { ecEntries = append(ecEntries, NewCommitEntry(eBlock)) } } return ecEntries }