func ParseFactoidBlock(chainID, hash string, rawBlock []byte, blockTime string) (*Block, error) { answer := new(Block) fBlock := new(block.FBlock) _, err := fBlock.UnmarshalBinaryData(rawBlock) if err != nil { return nil, err } answer.ChainID = chainID answer.PartialHash = fBlock.GetHash().String() answer.FullHash = fBlock.GetLedgerKeyMR().String() answer.PrevBlockHash = fmt.Sprintf("%x", fBlock.PrevKeyMR.Bytes()) transactions := fBlock.GetTransactions() answer.EntryCount = len(transactions) answer.EntryList = make([]*Entry, answer.EntryCount) answer.BinaryString = fmt.Sprintf("%x", rawBlock) for i, v := range transactions { entry := new(Entry) bin, err := v.MarshalBinary() if err != nil { return nil, err } entry.BinaryString = fmt.Sprintf("%x", bin) entry.Timestamp = TimestampToString(v.GetMilliTimestamp() / 1000) entry.Hash = v.GetHash().String() entry.ChainID = chainID entry.JSONString, err = v.JSONString() if err != nil { return nil, err } entry.SpewString = v.Spew() answer.EntryList[i] = entry } answer.JSONString, err = fBlock.JSONString() if err != nil { return nil, err } answer.SpewString = fBlock.Spew() answer.IsFactoidBlock = true return answer, nil }