129 Commits

Author SHA1 Message Date
Mark Spanbroek
5f8eef2187 when equivocating, use first received proposal 2024-12-11 15:12:55 +01:00
Mark Spanbroek
ebfe1b619e cleanup 2024-12-11 14:23:30 +01:00
Mark Spanbroek
22b473763c use threshold logical clock to move to next round 2024-12-11 14:22:39 +01:00
Mark Spanbroek
742d9e8334 signature scheme needs to support verifying signatures
So that it no longer needs to support recovering a public
key from a signature
2024-12-11 10:53:36 +01:00
Mark Spanbroek
46b7887566 rename BlockId.new() -> BlockId.init() 2024-12-10 14:43:03 +01:00
Mark Spanbroek
1830b8f99e export BlockId getters 2024-12-10 14:23:12 +01:00
Mark Spanbroek
c9209c1405 update Readme with API changes 2024-12-10 13:04:57 +01:00
Mark Spanbroek
ea9e1c01f9 derive Hash type from Block type 2024-12-10 12:28:16 +01:00
Mark Spanbroek
de854cbb5f make Block a type dependency 2024-12-09 18:07:43 +01:00
Mark Spanbroek
aa4f390a1a rename: validator.receive() -> validator.add() 2024-12-09 16:49:44 +01:00
Mark Spanbroek
416d43bed1 remove Identity type from Dependencies 2024-12-09 16:46:49 +01:00
Mark Spanbroek
8caa6e04b8 keep identity (private key) outside of the validator 2024-12-09 16:02:04 +01:00
Mark Spanbroek
456669248f move block creation outside of the validator 2024-12-09 15:58:51 +01:00
Mark Spanbroek
fc3bdde46e simplify BlockId type parameter 2024-12-09 11:14:39 +01:00
Mark Spanbroek
183890e2ca lazy calculation of block id 2024-12-09 10:59:46 +01:00
Mark Spanbroek
1f67e989bc cleanup 2024-11-28 14:24:58 +01:00
Mark Spanbroek
824d3a2f3b raise assertion in Validator.new
reason: it's a programmer error when the identity
doesn't match the committee, not a runtime error
2024-11-28 14:24:35 +01:00
Mark Spanbroek
8974ea38b3 add readme 2024-11-28 14:22:47 +01:00
Mark Spanbroek
d7fccb7323 simplify signing dependency 2024-11-27 14:29:03 +01:00
Mark Spanbroek
c768908bc8 add license 2024-11-26 14:13:56 +01:00
Mark Spanbroek
e012c694ac order dependencies in order of appearance 2024-11-26 14:13:50 +01:00
Mark Spanbroek
a8122cb27c primary proposer for a round 2024-11-26 10:59:04 +01:00
Mark Spanbroek
7218991f31 rename Round.members -> Round.proposers 2024-11-26 10:44:13 +01:00
Mark Spanbroek
ff848a20c4 avoid copying of blocks and seqs
speeds up performance test by a factor of 4
2024-11-25 15:47:01 +01:00
Mark Spanbroek
cd161d331e add performance test 2024-11-25 15:30:39 +01:00
Mark Spanbroek
a871e8d930 add fuzzing test 2024-11-25 11:29:43 +01:00
Mark Spanbroek
65938fa385 run tests in continuous integration 2024-11-21 15:19:55 +01:00
Mark Spanbroek
54edc32b41 simplify Hash dependency 2024-11-21 15:12:03 +01:00
Mark Spanbroek
7ee84f7b5c simplify Transaction dependency 2024-11-21 14:30:40 +01:00
Mark Spanbroek
030bbf3367 serialization algorithm can be set at compile time
- calculate block id once
- sign hashes, not byte sequences
- simplify Transaction abstraction
2024-11-20 15:51:34 +01:00
Mark Spanbroek
01cbefe898 add nonce to mock transaction for easier debugging 2024-11-06 16:35:20 +01:00
Mark Spanbroek
6f0035c8fa Transaction type can be set at compile time 2024-11-06 16:32:28 +01:00
Mark Spanbroek
5a9602a9be order dependencies alphabetically 2024-11-06 13:57:03 +01:00
Mark Spanbroek
7997ae0f65 move signing and hashing under dependencies 2024-11-06 13:55:14 +01:00
Mark Spanbroek
c600c5a2ef combine generic types for signing and hashing 2024-11-06 13:45:37 +01:00
Mark Spanbroek
fcf32043a1 check that equivocation is handled correctly 2024-11-06 11:27:28 +01:00
Mark Spanbroek
a4b1510663 check that validators emit blocks in the same sequence 2024-11-06 10:36:03 +01:00
Mark Spanbroek
edc81ba568 cleanup 2024-11-06 09:55:54 +01:00
Mark Spanbroek
d40737e4d7 rename tests 2024-11-06 09:55:22 +01:00
Mark Spanbroek
c94df10f3f remove workaround; seems to work with ORC now 2024-11-05 14:57:29 +01:00
Mark Spanbroek
b757074193 simulate scenario from figure 4 in the Mysticeti paper
needed fix: call updateSkipped() when proposing a block
2024-11-05 14:49:53 +01:00
Mark Spanbroek
f5fdf8e581 move code to exchange proposals to simulator 2024-11-04 14:36:19 +01:00
Mark Spanbroek
2d5f3721e4 extract network simulator from tests 2024-10-31 13:16:35 +01:00
Mark Spanbroek
e20da68dfc skip blocks using the indirect rule 2024-10-31 12:29:05 +01:00
Mark Spanbroek
7ce6f639f3 count votes from committee members only once 2024-10-30 14:50:00 +01:00
Mark Spanbroek
da66c27de7 rewording 2024-10-30 11:28:59 +01:00
Mark Spanbroek
923f09976e update certificates for older blocks 2024-10-30 11:25:24 +01:00
Mark Spanbroek
432692f472 update skipped for older blocks 2024-10-30 10:45:54 +01:00
Mark Spanbroek
099aeeb0af validator can't propose a block with too few parents 2024-10-30 10:23:56 +01:00
Mark Spanbroek
2a13ddffd4 refuse a proposal that was already received 2024-10-29 13:05:38 +01:00