diff --git a/codexvalidator/basics.nim b/codexvalidator/basics.nim index 0145102..fe8adad 100644 --- a/codexvalidator/basics.nim +++ b/codexvalidator/basics.nim @@ -1,7 +1,7 @@ import std/sequtils +import pkg/stint +import pkg/questionable export sequtils - -import pkg/stint - export stint +export questionable diff --git a/codexvalidator/blocks.nim b/codexvalidator/blocks.nim index 9ab3228..00c2aab 100644 --- a/codexvalidator/blocks.nim +++ b/codexvalidator/blocks.nim @@ -7,3 +7,7 @@ export blck import ./blocks/serialization export serialization.toBytes + +import ./blocks/blockhash + +export blockhash.id diff --git a/codexvalidator/blocks/blck.nim b/codexvalidator/blocks/blck.nim index ba0e1b5..e3a87cc 100644 --- a/codexvalidator/blocks/blck.nim +++ b/codexvalidator/blocks/blck.nim @@ -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 diff --git a/codexvalidator/blocks/blockhash.nim b/codexvalidator/blocks/blockhash.nim new file mode 100644 index 0000000..ebdec38 --- /dev/null +++ b/codexvalidator/blocks/blockhash.nim @@ -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 + ) diff --git a/tests/codexvalidator/basics.nim b/tests/codexvalidator/basics.nim index 2ebfcb4..f8e4c5b 100644 --- a/tests/codexvalidator/basics.nim +++ b/tests/codexvalidator/basics.nim @@ -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 diff --git a/tests/codexvalidator/blocks/testBlock.nim b/tests/codexvalidator/blocks/testBlock.nim new file mode 100644 index 0000000..a746c9e --- /dev/null +++ b/tests/codexvalidator/blocks/testBlock.nim @@ -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()) + diff --git a/tests/codexvalidator/blocks/testSerialization.nim b/tests/codexvalidator/blocks/testSerialization.nim index a49cc5b..a4f2102 100644 --- a/tests/codexvalidator/blocks/testSerialization.nim +++ b/tests/codexvalidator/blocks/testSerialization.nim @@ -3,7 +3,6 @@ import codexvalidator/blocks import codexvalidator/blocks/serialization import codexvalidator/transaction/serialization import codexvalidator/hashing -import ../examples suite "Block serialization": diff --git a/tests/codexvalidator/testSignatures.nim b/tests/codexvalidator/testSignatures.nim index ffad4dd..20fdbea 100644 --- a/tests/codexvalidator/testSignatures.nim +++ b/tests/codexvalidator/testSignatures.nim @@ -1,7 +1,6 @@ import ./basics import pkg/blscurve import codexvalidator/signatures -import ./examples suite "Signature scheme": diff --git a/tests/codexvalidator/transaction/testSerialization.nim b/tests/codexvalidator/transaction/testSerialization.nim index 1d48380..cd15e9f 100644 --- a/tests/codexvalidator/transaction/testSerialization.nim +++ b/tests/codexvalidator/transaction/testSerialization.nim @@ -1,7 +1,6 @@ import ../basics import codexvalidator/transaction import codexvalidator/transaction/serialization -import ../examples suite "Transaction serialization": diff --git a/tests/codexvalidator/transaction/testSigning.nim b/tests/codexvalidator/transaction/testSigning.nim index 7589940..e0b4694 100644 --- a/tests/codexvalidator/transaction/testSigning.nim +++ b/tests/codexvalidator/transaction/testSigning.nim @@ -1,7 +1,6 @@ import ../basics import codexvalidator/signatures import codexvalidator/transaction -import ../examples suite "Transaction signing": diff --git a/tests/codexvalidator/transaction/testTransaction.nim b/tests/codexvalidator/transaction/testTransaction.nim index bfc82a5..1d76b5c 100644 --- a/tests/codexvalidator/transaction/testTransaction.nim +++ b/tests/codexvalidator/transaction/testTransaction.nim @@ -1,6 +1,5 @@ import ../basics import codexvalidator/transaction -import ../examples suite "Transaction": diff --git a/tests/tests.nim b/tests/tests.nim index 42c33c8..a48f16d 100644 --- a/tests/tests.nim +++ b/tests/tests.nim @@ -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.}