diff --git a/codexvalidator/blocks/blck.nim b/codexvalidator/blocks/blck.nim index c457e5f..2fef01c 100644 --- a/codexvalidator/blocks/blck.nim +++ b/codexvalidator/blocks/blck.nim @@ -2,6 +2,7 @@ from pkg/mysticeti import CommitteeMember, `==`, `$` import ../basics import ../transaction import ../hashing +import ../signatures import ./blockid export mysticeti.CommitteeMember @@ -12,7 +13,7 @@ type Block* = ref object author*: CommitteeMember round*: uint64 parents*: seq[BlockId] - transactions*: seq[Transaction] + transactions*: seq[Signed[Transaction]] hash: ?Hash func `hash=`*(blck: Block, hash: Hash) = diff --git a/codexvalidator/blocks/deserialization.nim b/codexvalidator/blocks/deserialization.nim index 75073b4..d7a48b2 100644 --- a/codexvalidator/blocks/deserialization.nim +++ b/codexvalidator/blocks/deserialization.nim @@ -25,7 +25,7 @@ func init*( author: CommitteeMember(message.author), round: message.round, parents: message.parents.mapIt(? BlockId.init(it)), - transactions: message.transactions.mapIt(? Transaction.init(it)) + transactions: message.transactions.mapIt(? Signed[Transaction].init(it)) ) func init*( diff --git a/codexvalidator/blocks/serialization.nim b/codexvalidator/blocks/serialization.nim index ee5215c..48a5532 100644 --- a/codexvalidator/blocks/serialization.nim +++ b/codexvalidator/blocks/serialization.nim @@ -28,14 +28,14 @@ type BlockMessage* {.proto3.} = object author* {.fieldNumber: 1, pint.}: uint32 round* {.fieldNumber: 2, pint.}: uint64 parents* {.fieldNumber: 3.}: seq[BlockIdMessage] - transactions* {.fieldNumber: 4.}: seq[TransactionMessage] + transactions* {.fieldNumber: 4.}: seq[SignedTransactionMessage] func init*(_: type BlockMessage, blck: Block): BlockMessage = BlockMessage( author: blck.author.uint32, round: blck.round, parents: blck.parents.mapIt(BlockIdMessage.init(it)), - transactions: blck.transactions.mapIt(TransactionMessage.init(it)) + transactions: blck.transactions.mapIt(SignedTransactionMessage.init(it)) ) func toBytes*(blck: Block): seq[byte] = diff --git a/codexvalidator/transaction/deserialization.nim b/codexvalidator/transaction/deserialization.nim index 7c35696..b397b89 100644 --- a/codexvalidator/transaction/deserialization.nim +++ b/codexvalidator/transaction/deserialization.nim @@ -55,7 +55,7 @@ func init(_: type Groth16Proof, message: Groth16ProofMessage): Groth16Proof = ) ) -func init*(_: type Transaction, message: TransactionMessage): ?!Transaction = +func init(_: type Transaction, message: TransactionMessage): ?!Transaction = if message.version != TransactionVersion.version0.uint32: return failure "unsupported transaction version: " & $message.version let proofInput = ? StorageProofInput.init(message.proofInput) @@ -68,7 +68,7 @@ func init*(_: type Transaction, message: TransactionMessage): ?!Transaction = else: failure "invalid transaction kind: " & $message.kind -func init( +func init*( _: type Signed[Transaction], message: SignedTransactionMessage ): ?!Signed[Transaction] = diff --git a/tests/codexvalidator/blocks/testSerialization.nim b/tests/codexvalidator/blocks/testSerialization.nim index 107a449..3b8d47a 100644 --- a/tests/codexvalidator/blocks/testSerialization.nim +++ b/tests/codexvalidator/blocks/testSerialization.nim @@ -25,7 +25,7 @@ suite "Block serialization": check protobuf.author == blck.author.uint32 check protobuf.round == blck.round check protobuf.parents == blck.parents.mapIt(BlockIdMessage.init(it)) - check protobuf.transactions == blck.transactions.mapIt(TransactionMessage.init(it)) + check protobuf.transactions == blck.transactions.mapIt(SignedTransactionMessage.init(it)) test "serializes a signed block with protobuf": let blck = Block.example @@ -79,8 +79,8 @@ suite "Block serialization": test "deserialization fails when transaction is invalid": let signed = Signed[Block].example var message = SignedBlockMessage.init(signed) - var transaction = TransactionMessage.init(Transaction.example) - transaction.version = 42'u8 + var transaction = SignedTransactionMessage.init(Signed[Transaction].example) + transaction.transaction.version = 42'u8 message.blck.transactions &= transaction let invalid = Protobuf.encode(message) let deserialized = Signed[Block].fromBytes(invalid) diff --git a/tests/codexvalidator/examples.nim b/tests/codexvalidator/examples.nim index 6736b83..c3ce821 100644 --- a/tests/codexvalidator/examples.nim +++ b/tests/codexvalidator/examples.nim @@ -94,5 +94,5 @@ proc example*(_: type Block): Block = author: CommitteeMember.example, round: uint64.example, parents: seq[BlockId].example, - transactions: seq[Transaction].example + transactions: seq[Signed[Transaction]].example )