coordinator/cosign/src/delay.rs literally demonstrates how we'd need to rewrite our handling of transactions with this change. It can be cleaned up a bit but already identifies ergonomic issues. It also doesn't model passing an &mut txn to an async function, which would also require using the droppable wrapper struct. To locally see this build, run RUSTFLAGS="-Zpanic_abort_tests -C panic=abort" cargo +nightly build -p serai-cosign --all-targets To locally see this fail to build, run cargo build -p serai-cosign --all-targets While it doesn't say which line causes it fail to build, the only distinction is panic=unwind. For more context, please see #578.
Coordinator
-
tendermintis an implementation of the Tendermint BFT algorithm. -
tributary-sdkis a micro-blockchain framework. Instead of a producing a blockchain daemon like the Polkadot SDK or Cosmos SDK intend to,tributaryis solely intended to be an embedded asynchronous task within an application.The Serai coordinator spawns a tributary for each validator set it's coordinating. This allows the participating validators to communicate in a byzantine-fault-tolerant manner (relying on Tendermint for consensus).
-
cosigncontains a library to decide which Substrate blocks should be cosigned and to evaluate cosigns. -
substratecontains a library to index the Substrate blockchain and handle its events. -
tributaryis our instantiation of the Tributary SDK for the Serai processor. It includes theTransactiondefinition and deferred execution logic. -
p2pis our abstract P2P API to service the Coordinator. -
libp2pis our libp2p-backed implementation of the P2P API. -
srccontains the source code for the Coordinator binary itself.