func ParseAdminBlock(chainID, hash string, rawBlock []byte, blockTime string) (*Block, error) { answer := new(Block) aBlock := new(common.AdminBlock) _, err := aBlock.UnmarshalBinaryData(rawBlock) if err != nil { return nil, err } answer.ChainID = chainID fullHash, err := aBlock.LedgerKeyMR() if err != nil { return nil, err } answer.FullHash = fullHash.String() partialHash, err := aBlock.PartialHash() if err != nil { return nil, err } answer.PartialHash = partialHash.String() answer.EntryCount = len(aBlock.ABEntries) answer.PrevBlockHash = fmt.Sprintf("%x", aBlock.Header.PrevLedgerKeyMR.GetBytes()) answer.EntryList = make([]*Entry, answer.EntryCount) answer.BinaryString = fmt.Sprintf("%x", rawBlock) for i, v := range aBlock.ABEntries { marshalled, err := v.MarshalBinary() if err != nil { return nil, err } entry := new(Entry) entry.BinaryString = fmt.Sprintf("%x", marshalled) entry.Hash = v.Hash().String() entry.Timestamp = blockTime entry.ChainID = chainID entry.JSONString, err = v.JSONString() if err != nil { return nil, err } entry.SpewString = v.Spew() entry.ShortEntry = v.Interpret() answer.EntryList[i] = entry } answer.JSONString, err = aBlock.JSONString() if err != nil { return nil, err } answer.SpewString = aBlock.Spew() answer.BinaryString = fmt.Sprintf("%x", rawBlock) answer.IsAdminBlock = true return answer, nil }