func NewAdminBlock(prev interfaces.IAdminBlock) interfaces.IAdminBlock { block := new(AdminBlock) block.Header = new(ABlockHeader) if prev != nil { block.Header.SetPrevBackRefHash(primitives.NewZeroHash()) block.Header.SetDBHeight(prev.GetDBHeight() + 1) } else { block.Header.SetPrevBackRefHash(primitives.NewZeroHash()) } return block }
func (list *DBStateList) NewDBState(isNew bool, directoryBlock interfaces.IDirectoryBlock, adminBlock interfaces.IAdminBlock, factoidBlock interfaces.IFBlock, entryCreditBlock interfaces.IEntryCreditBlock, eBlocks []interfaces.IEntryBlock, entries []interfaces.IEBEntry) *DBState { dbState := new(DBState) dbState.DBHash = directoryBlock.DatabasePrimaryIndex() dbState.ABHash = adminBlock.DatabasePrimaryIndex() dbState.FBHash = factoidBlock.DatabasePrimaryIndex() dbState.ECHash = entryCreditBlock.DatabasePrimaryIndex() dbState.isNew = isNew dbState.DirectoryBlock = directoryBlock dbState.AdminBlock = adminBlock dbState.FactoidBlock = factoidBlock dbState.EntryCreditBlock = entryCreditBlock dbState.EntryBlocks = eBlocks dbState.Entries = entries // If we actually add this to the list, return the dbstate. if list.Put(dbState) { return dbState } // Failed, so return nil return nil }
func (c *DirectoryBlock) SetABlockHash(aBlock interfaces.IAdminBlock) error { hash := aBlock.DatabasePrimaryIndex() c.SetEntryHash(hash, aBlock.GetChainID(), 0) return nil }
func CheckBlockPairIntegrity(block interfaces.IAdminBlock, prev interfaces.IAdminBlock) error { if block == nil { return fmt.Errorf("No block specified") } if prev == nil { if block.GetHeader().GetPrevBackRefHash().IsZero() == false { return fmt.Errorf("Invalid PrevBackRefHash") } if block.GetHeader().GetDBHeight() != 0 { return fmt.Errorf("Invalid DBHeight") } } else { if block.GetHeader().GetPrevBackRefHash().IsSameAs(prev.GetHash()) == false { return fmt.Errorf("Invalid PrevBackRefHash") } if block.GetHeader().GetDBHeight() != (prev.GetHeader().GetDBHeight() + 1) { return fmt.Errorf("Invalid DBHeight") } } return nil }