mirror of
https://github.com/PeernetOfficial/core.git
synced 2026-07-17 02:47:51 +01:00
56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
/*
|
|
File Name: Block Record.go
|
|
Copyright: 2021 Peernet s.r.o.
|
|
Author: Peter Kleissner
|
|
|
|
Each record inside the block has this basic structure:
|
|
Offset Size Info
|
|
0 1 Record type
|
|
1 8 Date created. This remains the same in case of block refactoring.
|
|
9 4 Size of data
|
|
13 ? Data (encoding depends on record type)
|
|
|
|
*/
|
|
|
|
package blockchain
|
|
|
|
// RecordTypeX defines the type of the record
|
|
const (
|
|
RecordTypeProfile = 0 // Profile data about the end user.
|
|
RecordTypeTagData = 1 // Tag data record to be referenced by one or multiple tags. Only valid in the context of the current block.
|
|
RecordTypeFile = 2 // File
|
|
RecordTypeInvalid1 = 3 // Do not use.
|
|
RecordTypeCertificate = 4 // Certificate to certify provided information in the blockchain issued by a trusted 3rd party.
|
|
RecordTypeContentRating = 5 // Content rating (positive).
|
|
RecordTypeContentReport = 6 // Content report (negative).
|
|
)
|
|
|
|
// BlockDecoded contains the decoded records from a block
|
|
type BlockDecoded struct {
|
|
Block
|
|
RecordsDecoded []interface{} // Decoded records. See BlockRecordX structures.
|
|
}
|
|
|
|
// decodeBlockRecords decodes all raw records in the block and returns a high-level decoded structure
|
|
// Use decodeBlockRecordX instead for specific record decoding.
|
|
func decodeBlockRecords(block *Block) (decoded *BlockDecoded, err error) {
|
|
decoded = &BlockDecoded{Block: *block}
|
|
|
|
files, err := decodeBlockRecordFiles(block.RecordsRaw, block.NodeID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, file := range files {
|
|
decoded.RecordsDecoded = append(decoded.RecordsDecoded, file)
|
|
}
|
|
|
|
if profileFields, err := decodeBlockRecordProfile(block.RecordsRaw); err != nil {
|
|
return nil, err
|
|
} else if len(profileFields) > 0 {
|
|
decoded.RecordsDecoded = append(decoded.RecordsDecoded, profileFields)
|
|
}
|
|
|
|
return decoded, nil
|
|
}
|