[NOD-1493] Implement types for serialization (#980)

* [NOD-1493] Add DbAcceptanceData.

* [NOD-1493] Add DbBlockRelations.

* [NOD-1493] Add DbBlockStatus.

* [NOD-1493] Add DbBlockGhostdagData.

* [NOD-1493] Add DbMultiset.

* [NOD-1493] Add DbPruningPoint.

* [NOD-1493] Add DbUtxoSet.

* [NOD-1493] Add DbReachabilityData.

* [NOD-1493] Add DbReachabilityReindexRoot.

* [NOD-1493] Add DbUtxoDiff.

* [NOD-1493] Add DbUtxoDiffChild.

* [NOD-1493] Make sure everything is lowercase.

* [NOD-1493] Add DbHash.

* [NOD-1493] Fix BlockHeaderStore.
This commit is contained in:
stasatdaglabs 2020-10-29 12:18:18 +02:00 committed by GitHub
parent 126e2e49bb
commit 9cf1557c37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 1628 additions and 152 deletions

File diff suppressed because it is too large Load Diff

View File

@ -10,38 +10,127 @@ message DbBlock {
message DbBlockHeader {
int32 version = 1;
repeated bytes parentHashes = 2;
bytes hashMerkleRoot = 3;
bytes acceptedIDMerkleRoot = 4;
bytes utxoCommitment = 5;
repeated DbHash parentHashes = 2;
DbHash hashMerkleRoot = 3;
DbHash acceptedIDMerkleRoot = 4;
DbHash utxoCommitment = 5;
int64 timeInMilliseconds = 6;
uint32 bits = 7;
uint64 nonce = 8;
}
message DbHash {
bytes hash = 1;
}
message DbTransaction {
int32 Version = 1;
repeated DbTransactionInput Inputs = 2;
repeated DbTransactionOutput Outputs = 3;
uint64 LockTime = 4;
bytes SubnetworkID = 5;
uint64 Gas = 6;
bytes PayloadHash = 7;
bytes Payload = 8;
int32 version = 1;
repeated DbTransactionInput inputs = 2;
repeated DbTransactionOutput outputs = 3;
uint64 lockTime = 4;
DbSubnetworkId subnetworkID = 5;
uint64 gas = 6;
DbHash payloadHash = 7;
DbHash payload = 8;
}
message DbTransactionInput {
DbOutpoint PreviousOutpoint = 1;
bytes SignatureScript = 2;
uint64 Sequence = 3;
DbOutpoint previousOutpoint = 1;
bytes signatureScript = 2;
uint64 sequence = 3;
}
message DbOutpoint {
bytes TransactionID = 1;
uint32 Index = 2;
DbTransactionId transactionID = 1;
uint32 index = 2;
}
message DbTransactionId {
bytes transactionId = 1;
}
message DbTransactionOutput {
uint64 Value = 1;
bytes ScriptPublicKey = 2;
uint64 value = 1;
bytes scriptPublicKey = 2;
}
message DbSubnetworkId {
bytes subnetworkId = 1;
}
message DbAcceptanceData {
repeated DbBlockAcceptanceData blockAcceptanceData = 1;
}
message DbBlockAcceptanceData {
repeated DbTransactionAcceptanceData transactionAcceptanceData = 1;
}
message DbTransactionAcceptanceData {
DbTransaction transaction = 1;
uint64 fee = 2;
bool isAccepted = 3;
}
message DbBlockRelations {
repeated DbHash parents = 1;
repeated DbHash children = 2;
}
message DbBlockStatus {
uint32 status = 1;
}
message DbBlockGhostdagData {
uint64 blueScore = 1;
DbHash selectedParent = 2;
repeated DbHash mergeSetBlues = 3;
repeated DbHash mergeSetReds = 4;
repeated DbBluesAnticoneSizes bluesAnticoneSizes = 5;
}
message DbBluesAnticoneSizes {
DbHash blueHash = 1;
uint32 anticoneSize = 2;
}
message DbMultiset {
bytes multiset = 1;
}
message DbUtxoSet {
repeated DbUtxoCollectionItem items = 1;
}
message DbUtxoCollectionItem {
DbOutpoint outpoint = 1;
DbUtxoEntry utxoEntry = 2;
}
message DbUtxoEntry {
uint64 amount = 1;
bytes scriptPublicKey = 2;
uint64 blockBlueScore = 3;
bool isCoinbase = 4;
}
message DbReachabilityData {
DbReachabilityTreeNode treeNode = 1;
repeated DbHash futureCoveringSet = 2;
}
message DbReachabilityTreeNode {
repeated DbHash children = 1;
DbHash parent = 2;
DbReachabilityInterval interval = 3;
}
message DbReachabilityInterval {
uint64 start = 1;
uint64 end = 2;
}
message DbUtxoDiff {
repeated DbUtxoCollectionItem toAdd = 1;
repeated DbUtxoCollectionItem toRemove = 2;
}

View File

@ -107,17 +107,17 @@ func (bms *blockHeaderStore) hashAsKey(hash *externalapi.DomainHash) model.DBKey
}
func (bms *blockHeaderStore) serializeHeader(header *externalapi.DomainBlockHeader) ([]byte, error) {
dbParentHashes := make([][]byte, len(header.ParentHashes))
dbParentHashes := make([]*serialization.DbHash, len(header.ParentHashes))
for i, parentHash := range header.ParentHashes {
dbParentHashes[i] = parentHash[:]
dbParentHashes[i] = &serialization.DbHash{Hash: parentHash[:]}
}
dbBlockHeader := &serialization.DbBlockHeader{
Version: header.Version,
ParentHashes: dbParentHashes,
HashMerkleRoot: header.HashMerkleRoot[:],
AcceptedIDMerkleRoot: header.AcceptedIDMerkleRoot[:],
UtxoCommitment: header.UTXOCommitment[:],
HashMerkleRoot: &serialization.DbHash{Hash: header.HashMerkleRoot[:]},
AcceptedIDMerkleRoot: &serialization.DbHash{Hash: header.AcceptedIDMerkleRoot[:]},
UtxoCommitment: &serialization.DbHash{Hash: header.UTXOCommitment[:]},
TimeInMilliseconds: header.TimeInMilliseconds,
Bits: header.Bits,
Nonce: header.Nonce,
@ -135,20 +135,20 @@ func (bms *blockHeaderStore) deserializeHeader(headerBytes []byte) (*externalapi
parentHashes := make([]*externalapi.DomainHash, len(dbBlockHeader.ParentHashes))
for i, dbParentHash := range dbBlockHeader.ParentHashes {
parentHashes[i], err = hashes.FromBytes(dbParentHash)
parentHashes[i], err = hashes.FromBytes(dbParentHash.Hash)
if err != nil {
return nil, err
}
}
hashMerkleRoot, err := hashes.FromBytes(dbBlockHeader.HashMerkleRoot)
hashMerkleRoot, err := hashes.FromBytes(dbBlockHeader.HashMerkleRoot.Hash)
if err != nil {
return nil, err
}
acceptedIDMerkleRoot, err := hashes.FromBytes(dbBlockHeader.AcceptedIDMerkleRoot)
acceptedIDMerkleRoot, err := hashes.FromBytes(dbBlockHeader.AcceptedIDMerkleRoot.Hash)
if err != nil {
return nil, err
}
utxoCommitment, err := hashes.FromBytes(dbBlockHeader.UtxoCommitment)
utxoCommitment, err := hashes.FromBytes(dbBlockHeader.UtxoCommitment.Hash)
if err != nil {
return nil, err
}