These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | 4591ab1 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Refactor factory module implementation Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c4d854d | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Replace protobuf timer events by stdevents Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c266222 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Replace legacy Init event by stdevents.Init Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
The documentation is generated from this commit.
| Commit: | f947afc | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Remove legacy proto-related code Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 82fecc1 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add a pingpong sample with custom events Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 3c2cd3d | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Move Trantor types to stdtypes Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 5b01ac9 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Remove follow-up events (#522) * Remove follow-up event stripping functions * Remove Next field from Event protobuf * Remove usages of follow-up events * Re-introduce simulation code handling follow-ups Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | dae3090 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Use big.Int encoded as string for vote weights (#506) * Use big.Int encoded as string for vote weights * Check validity of externally received memberships * Use large node weights in Trantor tests Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 201930e | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Garbage-collect batch DB (#502) * Remove deduplication from fake batch db * Simplify fake batch db events * Re-generate protobufs * Remove forgotten ts store from fake batch db * Add garbage-collection to fake batch db * Re-generate protobufs * Clean up respondIfReady signature in msc * Make ISS aware of batch db module ID * Garbage-collect batch db state from ISS * Explain behavior of BatchStored in a comment Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | f40ba06 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Make mempool not drop transactions (#501) * Rename deliveredrequests to deliveredtxs * Add methods for querying client progress * Update mempool-related protobuf definitions * Re-generate protobufs * Clean up and add imports for future code * Adapt mempool transaction lookup to new protobufs * Make mempool aware of the current epoch This is required for not emitting the same transactions multiple times in the same epoch, but still re-emitting transactions that have not been delivered in a previous epoch. The main changes to the logic of the mempool itself are not yet included in this commit to simplify review. They will follow in the next commit. * Make mempool not drop transactions The explanation of how this works is written in the comments in the beginning of the updated formbatches.go file. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 5a38766 | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Externalize Preprepare Validity checker (#494)
| Commit: | 2b0887c | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Externalize Checkpoint validation to dedicated module (#493)
| Commit: | 9724a09 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add timeouts and batch size to mempool The mempool itself can now wait for a transaction batch to fill. After a request for a new batch, the mempool waits until one of: - it has a full batch with the configured number of transactions - it has a full batch with the configured maximum total payload size - a configurable timeout Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c23f045 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Proper DSL implementation of the Pingpong example * Add proper DSL implementation of pingpong sample * Clean up DSL and low-level pingpong implementation * Generate pingpong protobufs, types, and functions Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c18d0c4 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Parametrize availability layer sub-certificate limit The limit on the number of sub-certificates is not hard-coded to 5 any more, but is a proper parameter of the Trantor system. Some tests were designed before the code was even generalized to support more than one sub-certificate (the limit effectively being 1) and stopped working after the code supported 5 sub-certificates by default. Tests that should have failed were passing due to this. This test makes this limit a proper parameter that can be higher by default, but still set to 1 in tests. Details: * Remove obsolete Certs field from MSC params * Use parameter template for availability module * Remove unused field in dynamic availability params * Re-generate protobufs * Set default subcert limit to 5, but test with 1 Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 3c0168a | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Sanitize messages and add handler for modules that do not tolerate transport events (#460) * Add handler for modules that do not tolerate transport events * Sanitize all messages
| Commit: | c04fb51 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Weighted voting (#459) * Introduce VoteWeight type * Add serialization to VoteWeight type * Generalize quorums on weighted membership * Use generalized quorum in checkpoint protocol * Work around strange rxgo behavior with empty sums * Set default weight in all memberships to 1 * Use weighted voting in PBFT * Update comments for blacklist leader policy * Use generalized quorums in leader selection policy * Use generalized quorums in multisig collector Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | b1ca5f0 | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Get rid of unused TxIDString and BatchIDString types (#448)
| Commit: | 090d024 | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Orderers DSL cleanup (#434)
| Commit: | 89b8f22 | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Update Orderers module to use DSL (#432)
| Commit: | 9a4d85a | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Update appmodule to use DSL (#428)
| Commit: | ee63441 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Commonpb cleanup, Rename req to tx (#422) If there is still any transaction referred to as "request", it's a mistake and should be fixed. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 0cbd755 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Clean up empty certificates (#417) * Simplify certs * Add `empty` field to DeliverCert event * Remove special case for empty batch ID * Update (generalize) PBFT view change comments Now the orderer does not necessarily order availability certificates. The comments now reflect that. * Fix handling of malformed proposals The `aborted` flag must be set to true rather than taken over from the proposal. * Clean up producing and handling empty certificates Instead of encoding an empty certificate through an ad-hoc special value, use a dedicated flag to tell the batch fetcher that it should not even look at the certificate. * Fix rebasing artifacts Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | ca66145 | |
|---|---|---|
| Author: | André Breda | |
| Committer: | GitHub | |
Codegen: fix `repeated bytes` issue (#419) - Distinguish between `bytes` and repeated types. - Use DSL types in mempoolpb. - Skip linting for generated code (since some generated files now contain type conversions that are technically not needed). Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com> Co-authored-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 1872c98 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Use unified Membership abstraction (#415) The membership is now defined as a protobuf and the corresponding generated type is used everywhere where membership information is required. No more `map[t.NodeID]t.NodeAddress`. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 3e8be36 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Types cleanup (#413) Move module-specific type definitions from the general types package to more appropriate places. Clean up serialization package. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 3a54139 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | GitHub | |
Clean up Protobufs (#406) Complete refactoring of the protocol buffers definitions and usage. Most of the obsolete definitions have been removed and the existing definitions refactored to the same standard. Roughly, each module defines its own protobufs.
| Commit: | dee2eaf | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Cleanup ISS module and update to DSL * Update ISS to use DSL * Cleanup unused files and proto messages * Changed zero value from nil (see #401) * Check checkpoint membership (with warning if cannot be checked)
| Commit: | dc5675e | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | GitHub | |
Add documentation for the factory module (#369) Co-authored-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | bc208a2 | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Batchfetcher and mempool modules update to DSL codegen. (#348) * Use DSL's codegen on batchfetcher and mempool * Fix #353 * Add support for map types to DSL's codegen
| Commit: | e047c9c | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | Alejandro Ranchal-Pedrosa | |
Update availability module This is a squash of multiple @ranchalp's commits: - Reimplement the availability module using codegen - Have orderer's module verify preprepare certificates - Have av. module compute certificate batch without waiting for request - Clean unused internal/dsl/ availability code Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 8c00e80 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Implement orderer validity checker selection Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c1a0440 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Rename CertData to Data in PBFT Preprepare message Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 2e41001 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Improve Segment abstraction, add proposals to it Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 386504f | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Use full membership information in segment struct Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 0abb1d9 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Store segment seqNrs and proposals in a map Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 14c64a5 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add instance ID to PBFT deliver events Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 14e2a42 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Refactor checkpoint instantiation and epoch data The epoch configuration is now passed directly to the checkpoint protocol at creation, rather than in a separate event. The relevant code is refactored to remove redundancy. The epoch data is augmented by the membership of the epoch immediately preceding the epoch to which the checkpoint is associated. It is this membership that created the checkpoint (the checkpoint of epoch e is created by nodes of epoch e-1) The preceding membership needs to be used to verify checkpoint certificates. This is not the case yet and must be addressed in a future commit. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 8d91f82 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Include leader policy in checkpoints Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | e0cead7 | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | Alejandro Ranchal-Pedrosa | |
Add stateful LeaderSelectionPolicy to EpochData for snapshots
| Commit: | 560e4c5 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Remove dedicated NewLogFile event and use NewEpoch The function EventNewEpochLogger is meant to serve as an example. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 651e385 | |
|---|---|---|
| Author: | Alejandro Ranchal Pedrosa | |
| Committer: | Alejandro Ranchal-Pedrosa | |
Add function to split logging on specific event tracked
| Commit: | c3d8688 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Generate code for dsl request-response syntax
| Commit: | 50f81b6 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Remove an unused codegen extension
| Commit: | c531b38 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add origin fields to the model
| Commit: | 1e811c4 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Handle string fields annotated with [(mir.type) = error]
| Commit: | 8f6b0e6 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add code generation for handling net messages
| Commit: | 51c8c35 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Code generation prototype core
| Commit: | e52a660 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Delete unused proto imports Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 58191dd | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add epoch to new orderer params Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 9b96d0d | |
|---|---|---|
| Author: | Alejandro Ranchal-Pedrosa | |
| Committer: | GitHub | |
Create PBFT orderers outside of ISS This commit implements the new Orderers factory module that creates PBFT orderers (SB instances). PBFT orderers are no longer contained within the iss package, removing an odd handling of events by the sbeventservice (now removed). This commit also implements the new orderers and ordererspb packages, and the issutil package that contains functions called by both iss and orderers. Also, isspbftpb is now ordererspbftpb. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com> Co-authored-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 98271cb | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Fix bug when catching up during epoch transition Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c9818f8 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add more metadata to EpochConfig protobuf Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | b984330 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Implement client watermarks Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 56dcb76 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add maputil Trnasform, small cosmetic changes Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | a4aafef | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Pass whole StableCheckpoint to SMR RestoreState Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | f9a097c | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add EpochProgress event to checkpoint protos Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 5d31ab7 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Take checkpointing out of ISS The checkpoint protocol now runs separately from ISS. It has its own factory module where each checkpoint is created using a separate instance of the protocol. The application now also receives the stable checkpoints. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 1cc1eb5 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Separate checkpoint protobufs in their own package This is only to prepare the ground for the whole checkpointing protocol to be put in a separate package. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | af36d26 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Add sample pingpong protocol (used in video)
| Commit: | 98a5c48 | |
|---|---|---|
| Author: | André Breda | |
| Committer: | Matej Pavlovic | |
Implement threshold criptography
| Commit: | dbf2492 | |
|---|---|---|
| Author: | André Breda | |
| Committer: | Matej Pavlovic | |
threshcrypto: Add DSL module
| Commit: | 545cd85 | |
|---|---|---|
| Author: | André Breda | |
| Committer: | Matej Pavlovic | |
Format code
| Commit: | fe46984 | |
|---|---|---|
| Author: | André Breda | |
| Committer: | Matej Pavlovic | |
api,dummy: Validate signature share origin in VerifyShare
| Commit: | 7dab5ba | |
|---|---|---|
| Author: | André Breda | |
| Committer: | Matej Pavlovic | |
Move threshcrypto messages to separate package
| Commit: | 0519300 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Rename Deliver event to DeliverCert Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | f3e7efe | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Use separate event for batch delivery, PR comments Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 46f9a0d | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add batchdb interface to proto files
| Commit: | 8ac0e6e | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Consolidate comments and delete dead code Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | e108d38 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Slightly reorganize code based on review comments Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | edb5bbe | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Implement factory module Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 8c70e04 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Adapt ISS to use availability module Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | c898a28 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Keep track of memberships internally Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 7cdb6cc | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Chat app reconfiguration Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | d4077a8 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Refactor state stanpshot and add membership to it WARNING! Stable checkpoint verification has been disabled because it is buggy. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 2cd39e5 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Rename bcbpb.Request to bcbpb.BroadcastRequest
| Commit: | e9c6fe0 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Use requestpb.Request instead of []byte to represent transactions
| Commit: | 0c95e7a | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Use bytes instead of string in protobufs for hashes Unlike in go, where a string represents an arbitrary sequence of bytes, in protobufs, it must be possible to encode a string in UTF-8.
| Commit: | 9c6831f | |
|---|---|---|
| Author: | Denis Kolegov | |
| Committer: | GitHub | |
add type field to request (#165)
| Commit: | 8ec0caf | |
|---|---|---|
| Author: | Denis Kolegov | |
| Committer: | GitHub | |
Add NewConfig event (#159)
| Commit: | a7f195e | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Fix grpctransport protobuf generation The generated files had been moved, but the proto file hadn't. Moved the proto file accordingly.
| Commit: | f0cd685 | |
|---|---|---|
| Author: | Sergey Fedorov | |
| Committer: | Sergey Fedorov | |
protos: Remove unused WALLoadAll event Signed-off-by: Sergey Fedorov <sergey.fedorov@protocol.ai>
| Commit: | 09ba60b | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Move ContextStoreOrigin and DslOrigin to separate proto files It helps to avoid cyclic dependencies of proto files.
| Commit: | f29d350 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add events and boilerplate for the availability layer Similarly to the interface between the availability layer and the mempool, the interface between the consensus layer and the availability layer is pull-oriented: the consensus layer requests (pulls) availability certificates from the availability layer.
| Commit: | 847f2da | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add boilerplate and documentation for mempool events
| Commit: | 8ff4692 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add event types for mempool The interface between the availability layer and the mempool is pull-based. Push-based architecture was also considered, but it would basically require replicating the mempool structure in the availability layer module.
| Commit: | 42ee689 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add Batch and Transaction IDs to the mempool interface The idea is to encapsulate batch and transaction IDs in the mempool module to allow for more flexibility (e.g., the ID of a batch can be a simple hash or a Merkle tree root) and avoid potential subtle bugs (e.g., different modules could accidentally use different hash functions). It also helps to make the code more expressive.
| Commit: | 734fc0a | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add multisig collector prototype The prototype implements the desired interface and is supposed to work properly in the crash-stop model. However, it does not use a real persistent storage (and, hence, does not support node recovery). The prototype implements a Byzantine fault-tolerant protocol, but it is susceptible to DOS attacks from Byzantine nodes. Finally, at the moment, the prototype assumes reliable delivery of messages between correct nodes.
| Commit: | 89ffbd0 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Verify stable checkpoint messages Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 3de3466 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add protoc plugin to generate code to simplify dsl implementation The plugin generates more generic-friendly enums for oneof fields marked with a special annotation mir.event_type. In future iterations, the plugin can be extended to automatically generate most of the boilerplate code associated with programming in mir.
| Commit: | 8d6c2c4 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Periodic catching up, configurable epoch retention Sending stable checkpoints to nodes that are suspected of having fallen behind now happens periodically. The number of old epochs to keep is now configurable. Only epochs that are older than the latest stable checkpoint minus a configuration parameter are garbage-collected. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 194461d | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Remove unused functions and parameters Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 038d507 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Implement end-of-segment checkpoints in PBFT These checkpoints are necessary for liveness. Each SB instance must be live independently of the other instances. In particular, even instances that delivered all slots in a segment must keep running until a global stable checkpoint is reached. Otherwise the system might get stuck. Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 09ef8ef | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Implement DSL modules The high-level goal is to make it possible to implement distributed protocols in mir with a syntax that is very close to the standard pseudocode notations as well as to separate the protocol logic from the boilerplate. The way it is done is basically by creating a domain-specific language inside go. The motivating example can be found in pkg/bcb/bcbmodule.go. The core implementation is in pkg/dsl/dslmodule.go. The rest is mostly boilerplate and auxiliary functions.
| Commit: | 7fcf7c7 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Fix naming of the contextStore field in proto files
| Commit: | 2736a64 | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Small refactoring of ContextStore
| Commit: | add752d | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add constructors for EventList
| Commit: | 3d20db0 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Remove ClientTracker, ReqStore, and request refs Since the availability layer will not be handled by ISS, related modules are now removed and the ISS protocol itself significantly simplified (e.g. no dealing with request references only or waiting for requests to become available). Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>
| Commit: | 7b9bb3f | |
|---|---|---|
| Author: | Andrei Tonkikh | |
| Committer: | Andrei Tonkikh | |
Add contextstore implementation The goal of contextstore is to simplify context recovery when working with modules like Crypto and Hasher. Currently, using these modules requires creating a new protobuf type each time the user wants to verify a signature or compute a hash. This is associated with a lot of boilerplate code. ContextStore allows saving the context locally in the module and only sending an automatically generated id in a standard ContextStoreOrigin protobuf.
| Commit: | d224aa2 | |
|---|---|---|
| Author: | Matej Pavlovic | |
| Committer: | Matej Pavlovic | |
Generalize WAL module Signed-off-by: Matej Pavlovic <matopavlovic@gmail.com>