https://blog.sui.io/mysticeti-consensus-reduce-latency/
https://arxiv.org/pdf/2310.14821
https://github.com/MystenLabs/sui
https://github.com/MystenLabs/sui/tree/main/consensus
**// crates/sui-core/src/authority_server.rs**
// 3) All transactions are sent to consensus (at least by some authorities)
// For certs with shared objects this will wait until either timeout or we have heard back from consensus.
// For certs with owned objects this will return without waiting for certificate to be sequenced.
// For uncertified transactions this will wait for fast path processing.
// First do quick dirty non-async check.
...
...
let certificates_without_shared_objects = consensus_transactions
.iter()
.filter_map(|tx| {
if let ConsensusTransactionKind::CertifiedTransaction(certificate) = &tx.kind {
(!certificate.contains_shared_object())
// Certificates already verified by callers of this function.
.then_some(VerifiedCertificate::new_unchecked(*(certificate.clone())))
} else {
None
}
})
.collect::<Vec<_>>();
if !certificates_without_shared_objects.is_empty() {
self.state.enqueue_certificates_for_execution(
certificates_without_shared_objects,
epoch_store,
);
}
return Ok((None, Weight::zero()));