v0.0.1
What's Changed
- Implements validation and algorithmic changes for EC-compatible sway. by @anorth in #1
- Implemented signing payloads in terms of abstract signer by @anorth in #20
- Implement opaque TipSetKey type. by @anorth in #21
- Fix integer widths of all values used in the protocol. by @anorth in #23
- Add a simple Makefile by @anorth in #24
- Add simple GitHub actions configuration to test/lint PRs by @anorth in #25
- Implement receiving new EC-compatible chains by @ranchalp in #19
- VRF implementation (#6) by @ranchalp in #28
- Decide phase by @ranchalp in #30
- Update readme and add license by @jsoares in #36
- Remove implicit justification by @ranchalp in #34
- Move message signature validation into instance, and document the message attestation properties. by @anorth in #41
- Implement PowerTable as ordered map by @ranchalp in #32
- Replace panics with errors by @matejpavlovic in #39
- Fix power duplicate entry check by @Stebalien in #45
- Use numbers for phases instead of names by @Stebalien in #46
- Add Aggregator interface and implement fake aggregator by @ranchalp in #35
- Bump golang.org/x/crypto from 0.0.0-20190611184440-5c40567a22f8 to 0.17.0 by @dependabot in #52
- Bump golang.org/x/sys from 0.0.0-20190412213103-97732733099d to 0.1.0 by @dependabot in #53
- Switch to uint64 for Instance and Round by @Kubuxu in #54
- Add explicit justification of COMMIT and CONVERGE by @ranchalp in #37
- Add explicit justification of DECIDE messages by @ranchalp in #47
- Bump golang.org/x/crypto from 0.0.0-20190611184440-5c40567a22f8 to 0.17.0 by @dependabot in #56
- Replace panics where relevant by @ranchalp in #59
- Remove comments about implicit justification by @anorth in #63
- Add comment about unrealistic message forgery in withholding adversary by @anorth in #62
- 15% improvement in tests speed by @Kubuxu in #66
- Add test demonstrating agreement on longest common prefix by @anorth in #67
- Optimize justification creation by @ranchalp in #55
- Cleanup signature payload, popagate more errors, add cbor-gen by @Kubuxu in #65
- Initial scaffolding of the f3 module by @Kubuxu in #44
- Remove tipset weights, panic on multiple strong quora by @anorth in #71
- Renames for conciseness by @anorth in #72
- chore: update cbor-gen by @Stebalien in #78
- Introduce BLS signing, adapt APIs for it to work by @Kubuxu in #70
- Remove unused payload from alarm callback by @anorth in #73
- Move network name into a host API function. by @anorth in #80
- Revert "Move network name into a host API function. (#80)" by @Kubuxu in #84
- Make GMessage justification optional, clean up some control flow for it. by @anorth in #75
- Use full TipSet object as map key, avoid using CIDs by @anorth in #79
- Move network name into a host API function. by @Kubuxu in #85
- Implement Synchronization of participants in the current instance #69 by @ranchalp in #82
- Factor out repeated code building justifications by @anorth in #88
- Include network name in Network struct by @ranchalp in #89
- Include DST and NetworkName in VRF signing by @ranchalp in #90
- Simplify synchronization of participants to simple exponential back-off by @ranchalp in #87
- Use time.Time() instead of float64 by @ranchalp in #83
- Serialize phase as an integer for signatures. by @anorth in #93
- Reorganize packages by @Kubuxu in #86
- Change semantics of delta parameter to be a bound on message delay by @anorth in #92
- Express message justification rules as data rather than procedural code by @anorth in #91
- Make message validate an exported API of instance and participant, to be called before receiving a message. by @anorth in #97
- Remove now-unused opaque message type. by @anorth in #99
- Fix message validation to check the justification signers have strong quorum by @anorth in #101
- Remove abstraction noise around VRF construction and verification by @anorth in #102
- Add API for participant to notify host of decisions, with signed justification. by @anorth in #100
- Nodes decide on strong quorum of DECIDE regardless of phase by @ranchalp in #104
- Change API so participant pulls canonical chain when starting by @anorth in #107
- Fix initialisation of delta from f3sim main by @anorth in #108
- Recover panics at participant entry points by @ranchalp in #105
- Remove self participant ID from some host methods. by @anorth in #109
- Change alarm semantics to support at most one at a time by @anorth in #110
- Participant begins new instance after terminating the previous one by @anorth in #111
- Add a test exercising multiple instances under ideal conditions by @anorth in #116
- Bump google.golang.org/protobuf from 1.30.0 to 1.33.0 by @dependabot in #123
- Fix PanicError construction and sim clock progress with historical messages. by @anorth in #120
- chore: update kyber to released version by @Stebalien in #127
- Use
go generate
to generate sources by @masih in #129 - Add local queue for messages for future instances by @anorth in #124
- Require
go.mod
is tidy during CI by @masih in #134 - Delay next instance until EC chain progresses by @anorth in #119
- Implement basic chain and types unit tests by @masih in #133
- Fix typo with ECExtend by @ranchalp in #137
- Validate EC chain invariants on instantiation by @masih in #138
- Refactor
Host
interface to optionally trace logic logs by @masih in #140 - Speed up tests by running repetitions in parallel by @masih in #141
- Upgrade to go
1.21
by @masih in #143 - Implement sortable power table and test invariants by @masih in #152
- Make ECChain opaque [][]byte in GBPFT by @anorth in #149
- Implement participant unit tests by @masih in #142
- Get PowerTable from Host during adversary testing by @masih in #157
- Test repeated messages do not interfere with consensus by @masih in #156
- Skip long tests when running in short mode by @Kubuxu in #161
- Move simulation related packages to
sim
by @masih in #159 - Move adversary APIs and type assert by @masih in #164
- Refactor
GenerateKey
API for testing only by @masih in #163 - Switch to signatures on G2, Resolves #96 by @Kubuxu in #162
- Use weights to CONVERGE VRF ticket comparison by @ranchalp in #145
- Signal whether an EC chain was accepted by an instance by @masih in #168
- Refactor
sim
package in prep for expanding the implementation by @masih in #171 - Trigger merge group checks with GitHub Actions by @masih in #174
- Enhance
Repeat
adversary tests and add comments by @masih in #167 - Implement the ability to control latency by time and point to point by @masih in #178
- Introduce additional simulation options and restructure constants by @masih in #179
- Fix a bug in simulated next instance start time by @masih in #183
- Implement
gpbft
option-based configuration with built-in defaults by @masih in #185 - Replace externally-provided acceptable chains with candidate list including possibly-decided values by @anorth in #181
- Investigate sensitivity to latency in multi instance tests by @masih in #190
- Set default Delta value to 3 seconds by @masih in #191
- Remove redundant
ReceiveECChain
receiver from adversaries by @masih in #197 - Implement skipping directly to DECIDE phase on receiving a valid (justified) DECIDE message. by @anorth in #194
- Require justification for PREPARE messages by @anorth in #193
- Limit max chain length to 100 tipsets by @anorth in #198
- Change delta backoff to 2.0 by @anorth in #199
- Reduce GC frequency to run tests faster by @masih in #204
- Adjust latency model to always return zero for local messages by @masih in #210
- Set default simulation latency to
None
by @masih in #211 - Implement divergent EC chain in simulations by @masih in #187
- Implement storage power evolution in simulations for honest participants by @masih in #202
- Ignore equivocating and duplicate messages from a sender by @anorth in #200
- Drop messages from prior rounds that can't affect the protocol outcome. by @anorth in #207
- Consistently model P2P latency to reduce max rounds in tests by @masih in #212
- Simplify simulation messaging with priority queue and parameterise GST by @masih in #209
- Truncate ECChain capacity when extending/truncating by @Stebalien in #217
- Avoid proposing chains that are longer than max. by @anorth in #206
- Implement additional EC divergence test cases by @masih in #214
- Report code coverage via Continuous Integration by @masih in #222
- Add unit tests for simulation message queue by @masih in #221
- Collect cross-package coverage by @Kubuxu in #230
- Avoid duplicating codecov coverage reports via merge queue by @masih in #231
- Remove dead Ticket.Compare function by @Stebalien in #238
- EVM-friendly TipSet and ECChain formats by @Stebalien in #216
- Introduce fuzz testing to separate unit tests from repetition tests by @masih in #219
- Update mockery and fix file name by @Stebalien in #250
- Fix Delta default value documentation by @masih in #252
- Add the ability to download corpus of fuzz tests failed on CI by @masih in #260
- Change host API to separate fetching chain from fetching power tables by @anorth in #256
- Drop spammable messages beyond max allowed lookahead rounds by @masih in #258
- Fix go vet issues and upgrade to latest
golangci-lint
by @masih in #268 - Add more parallelism to tests in t.Run() by @anorth in #263
- Use deterministic latency in tests to avid intermittent failures by @masih in #269
- Maximise test parallelism and reduce duplicate code by @masih in #275
- Adjust Fuzz honest multi-instance to avoid intermittent failures by @masih in #277
- Skip ahead to future rounds when justified by @masih in #276
- FFF-103: Async delivery of local messages by @adlrocha in #259
- Consensus over pubsub by @Kubuxu in #254
- Bump golang.org/x/net from 0.21.0 to 0.23.0 by @dependabot in #280
- Reduce GOGC while fuzzing by @Kubuxu in #282
- Upgrade go mod dependencies by @masih in #284
- Reduce GC during fuzz tests by @masih in #283
- Allow skipping to future rounds from QUALITY phase by @masih in #279
- Use offset committees to validate and queue/drop messages for future instances by @anorth in #264
- FFF-103: Message builder pattern by @adlrocha in #274
- Commit to a next power table and additional commitments by @Stebalien in #273
- CI: Exclude tests & generated code from code coverage by @Stebalien in #290
- Implement finality certificates by @Stebalien in #266
- Make message validation safe for concurrent use. by @anorth in #286
- Address finality certificate nits from #266 by @Stebalien in #292
- Make it possible to apply multiple power diffs at once by @Stebalien in #291
- Extra power diff tests & validation by @Stebalien in #293
- Add some final test cases for finality certificate deltas by @Stebalien in #297
- When starting a new instance, check for skipping rounds just once after processing all queued messages. by @anorth in #294
- Update CI & allow
golangci-lint
to emit checks by @Stebalien in #302 - Avoid loading round state for dropped messages by @anorth in #300
- Fix race conditions and Run tests with race detection in CI by @masih in #287
- Fix deprecated package in bls signer by @masih in #309
- Fix minor staticcheck issues by @masih in #310
- Remove redundant weak quorum flag from chain support by @masih in #306
- Error out fatally when strong quorum exists but not found by @masih in #311
- Rename Module to F3, pass network name to Client, fix error wrapping by @Kubuxu in #308
- F3-245: API proposal for ReceiveFinalityCertificate by @adlrocha in #296
- Enforce size limits on TipSet key and power table CID length. by @anorth in #305
- Fix plumbing of per-participant logger. by @anorth in #313
- Shortcut timeout in PREPARE when outcome is determined by @masih in #289
- Fix race condition in honest tests by @masih in #317
- Document and adjust alarm delivery precedence over network messages by @masih in #318
- Add power tables to the Certificate Store by @Stebalien in #301
- Prioritise alarm delivery by @Kubuxu in #321
- Verify decider identity when checking if sim instance is complete by @masih in #323
- Simulate skip to future instances for lagging participants by @masih in #324
- Group validation errors as top level
ValidationError
by @masih in #307 - Specify a non-zero participant count for the honest async BLS test by @Stebalien in #328
- Protect exported participant methods with tryLock by @anorth in #329
- Fix typo in interface method name by @masih in #333
- Add validation to pubsub by @Kubuxu in #320
- Broadcast supplemental data as part of
GMessage
by @masih in #338 - Merge participant Start and SkipToInstance into a single StartInstance method. by @anorth in #330
- Relax the assumption of receiving own
CONVERGE
messages synchronously by @masih in #334 - Scale power in the range 0-0xffff by @Stebalien in #118
- Save decisions in certstore by @Kubuxu in #322
- Shorten timeout at
COMMIT
phase when justified by @masih in #315 - Use consistent request broadcast pattern in simulated sync broadcasts by @masih in #339
- Feed F3 from EC chain and bootstrap by @Kubuxu in #341
- Allow optimistic early instance start in simulation by @masih in #349
- Rebroadcast last round of messages if instance has not progressed by @masih in #326
- Always offset the successive broadcasts based on current time by @masih in #353
- Allow manifest gen to create the manifest file by @Kubuxu in #352
- Fix tipset stringer max print limit and refine ec chain stringer by @masih in #357
- Use CouldReachStrongQuorumFor value when checking if CONVERGE value should become a candidate. by @anorth in #358
- Wait for boostrap epoch and boostrap CertStore power table from it by @Kubuxu in #354
- Expose message builder to users of F3 API by @Kubuxu in #361
- Move initial instance to manifest by @Kubuxu in #363
- Expose certs on the F3 API by @Kubuxu in #367
- feat: use the scaled power for winning tickets by @Stebalien in #375
- Implement backoff on base decisions by @Kubuxu in #369
New Contributors
- @anorth made their first contribution in #1
- @ranchalp made their first contribution in #19
- @jsoares made their first contribution in #36
- @matejpavlovic made their first contribution in #39
- @Stebalien made their first contribution in #45
- @dependabot made their first contribution in #52
- @Kubuxu made their first contribution in #54
- @masih made their first contribution in #129
Full Changelog: https://github.com/filecoin-project/go-f3/commits/v0.0.1