calculate block id based on block hash

This commit is contained in:
Mark Spanbroek 2024-12-10 16:10:12 +01:00
parent 343b4bdccd
commit 04d66b8bd9
12 changed files with 47 additions and 17 deletions

View File

@ -1,7 +1,7 @@
import std/sequtils
import pkg/stint
import pkg/questionable
export sequtils
import pkg/stint
export stint
export questionable

View File

@ -7,3 +7,7 @@ export blck
import ./blocks/serialization
export serialization.toBytes
import ./blocks/blockhash
export blockhash.id

View File

@ -1,12 +1,15 @@
import pkg/mysticeti
from pkg/mysticeti import CommitteeMember, `==`
import ../basics
import ../transaction
import ../hashing
import ./blockid
export mysticeti.CommitteeMember
export mysticeti.`==`
type Block* = ref object
author*: CommitteeMember
round*: uint64
parents*: seq[blockid.BlockId]
parents*: seq[BlockId]
transactions*: seq[Transaction]
id*: blockid.BlockId
hash*: ?Hash

View File

@ -0,0 +1,15 @@
import ../basics
import ./blck
import ./blockid
import ./serialization
import ../hashing
func id*(blck: Block): BlockId =
without var hash =? blck.hash:
hash = Hash.hash(blck.toBytes())
blck.hash = some hash
BlockId.init(
blck.author,
blck.round,
hash
)

View File

@ -1,11 +1,11 @@
import std/unittest
export unittest
import std/sequtils
export sequtils
import pkg/stint
export unittest
export sequtils
export stint
import ./examples
export examples

View File

@ -0,0 +1,12 @@
import ../basics
import codexvalidator/blocks
import codexvalidator/hashing
suite "Blocks":
test "have a correct block id":
let blck = Block.example
check blck.id.author == blck.author
check blck.id.round == blck.round
check blck.id.hash == Hash.hash(blck.toBytes())

View File

@ -3,7 +3,6 @@ import codexvalidator/blocks
import codexvalidator/blocks/serialization
import codexvalidator/transaction/serialization
import codexvalidator/hashing
import ../examples
suite "Block serialization":

View File

@ -1,7 +1,6 @@
import ./basics
import pkg/blscurve
import codexvalidator/signatures
import ./examples
suite "Signature scheme":

View File

@ -1,7 +1,6 @@
import ../basics
import codexvalidator/transaction
import codexvalidator/transaction/serialization
import ../examples
suite "Transaction serialization":

View File

@ -1,7 +1,6 @@
import ../basics
import codexvalidator/signatures
import codexvalidator/transaction
import ../examples
suite "Transaction signing":

View File

@ -1,6 +1,5 @@
import ../basics
import codexvalidator/transaction
import ../examples
suite "Transaction":

View File

@ -2,6 +2,7 @@ import ./codexvalidator/testSignatures
import ./codexvalidator/transaction/testTransaction
import ./codexvalidator/transaction/testSigning
import ./codexvalidator/transaction/testSerialization
import ./codexvalidator/blocks/testBlock
import ./codexvalidator/blocks/testSerialization
{.warning[UnusedImport]:off.}