You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: protocol-spec.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -2006,15 +2006,15 @@ The `close` method terminates all background operations. This interface is most
2006
2006
2007
2007
### 5.3 Inner Consensus Programming Interface
2008
2008
2009
-
The consumer application provides the inner consensus programming interface to the PBFT box. PBFT will call these functions to query state and signal events.
2009
+
The consumer application provides the inner consensus programming interface to core PBFT. PBFT will call these functions to query state and signal events.
@@ -2083,13 +2083,13 @@ The design goal of Sieve is to augment PBFT consensus protocol with three main d
2083
2083
2084
2084
- As OBC allows execution of arbitrary chaincode, such chaincode may introduce *non-deterministic* transactions. Although non-deterministic transaction should in principle be disallowed by, e.g., careful inspection of chaincode, using domain specific languages (DSLs), or by otherwise enforcing determinism, the design goal of Sieve is to provide a separate *consensus fabric-level* protection against *non-deterministic* transactions that can be used in combination with the above mentioned approaches.
2085
2085
2086
-
To this end, Sieve detects and *sieves out non-deterministic transactions* (that manifest themselves as such). Hence, Sieve does not require all input transactions to consensus (i.e., the replicated state machine) to be deterministic. This feature of Sieve is new and has not been implemented by any existing Byzantine fault tolerant consensus protocols. The challenge behind
2086
+
To this end, Sieve detects and *sieves out non-deterministic transactions* (that manifest themselves as such). Hence, Sieve does not require all input transactions to consensus (i.e., the replicated state machine) to be deterministic. This feature of Sieve is new and has not been implemented by any existing Byzantine fault tolerant consensus protocols.
2087
2087
2088
2088
A protocol achieving the above two goals should not be designed and implemented from scratch, and should reuse existing PBFT implementation, lowering code complexity and simplifying reasoning about a new consensus protocol. To this end, inspired by [6], Sieve is designed using a modular approach, reusing the core PBFT component of `obcpbft`.
2089
2089
2090
2090
Although the details of Sieve will appear elsewhere, we briefly outline some design and implementation aspects below.
2091
2091
2092
-
In a nutshell, Sieve requires deterministically agree on the output of the execution of a request. If the request was deterministic in the first place, all correct replicas will have obtained the same output, and they can agree on this very result. However, if a request happens to produce divergent outputs at correct replicas, Sieve may detect this divergent condition, and the replicas will agree to discard the result of the request, thereby retaining determinism.
2092
+
In a nutshell, Sieve requires replicas to deterministically agree on the output of the execution of a request. If the request was deterministic in the first place, all correct replicas will have obtained the same output, and they can agree on this very result. However, if a request happens to produce divergent outputs at correct replicas, Sieve may detect this divergent condition, and the replicas will agree to discard the result of the request, thereby retaining determinism.
2093
2093
2094
2094
Notice that, as discussed further below, Sieve allows false negatives, i.e., execution of *non-deterministic* requests that execute with the same result at a sufficient number of replicas. However, Sieve allows no false positives and any discarded request is certainly non-deterministic.
0 commit comments