Skip to content

Commit 3a538b7

Browse files
committed
Mutually exclusive certs/txs in RBs
Detail chain inclusion rules to only allow RBs with certs or txs - mutually exclusive. Also provide a sentence of rationale.
1 parent fa6c726 commit 3a538b7

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

CIP-0164/README.md

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -383,35 +383,41 @@ aggregating the collected votes.
383383

384384
#### Step 5: Chain Inclusion
385385

386-
Block producers creating subsequent RBs (`RB'`) may include a certificate for
387-
the EB announced by a preceding block (`RB`) if sufficient time has elapsed for
388-
the complete certification process. As shown in Figure 4, this occurs only after
389-
the complete timing sequence has elapsed. The inclusion rules for valid chain
390-
inclusion are:
386+
Block producers creating subsequent RBs (`RB'`) may use a certificate for the EB
387+
announced by a preceding block (`RB`) if sufficient time has elapsed. See also
388+
Figure 4. Concretely, the inclusion rules are:
391389

392-
1. `RB'` **may** include a certificate for the EB announced in `RB` if and only
393-
if `RB'` is at least $3 \times L_\text{hdr} + L_\text{vote} + L_\text{diff}$
394-
slots after `RB`.
390+
1. `RB'` contains **either**
395391

396-
2. Any included certificate must be valid as defined in
397-
[Certificate Validation](#certificate-validation).
392+
a. a certificate for the EB announced in `RB`, **or**
398393

399-
3. If `RB'` cannot include a certificate due to timing constraints (i.e., fewer
400-
than $3 \times L_\text{hdr} + L_\text{vote} + L_\text{diff}$ slots have
401-
elapsed since `RB`), then `RB'` operates as a standard Praos block containing
402-
its own transactions, and the EB announced by `RB` is discarded.
394+
b. a list of transactions forming a valid extension of `RB`.
395+
396+
2. Any included certificate must be valid as defined in [Certificate
397+
Validation](#certificate-validation).
398+
399+
3. A certificate may only be included if `RB'` is at least $3 \times
400+
L_\text{hdr} + L_\text{vote} + L_\text{diff}$ slots after `RB`.
403401

404402
4. Regardless of whether `RB'` includes a certificate, it may optionally
405-
announce its own EB for future certification by subsequent blocks.
403+
announce its own EB for future certification.
406404

407405
where $L_\text{hdr}$, $L_\text{vote}$ and $L_\text{diff}$ are
408406
<a href="#protocol-parameters">protocol parameters</a> represented by a number
409407
of slots.
410408

411-
This **certificate inclusion delay** ensures certified EBs have sufficient time
412-
to diffuse throughout the network before their transactions are included in the
413-
ledger. If the next RB is produced before this minimum delay has elapsed, the EB
414-
certificate cannot be included and the EB is discarded.
409+
The certificate inclusion delay ensures certified EBs have sufficient time to
410+
diffuse throughout the network and do not impact [protocol
411+
security](#protocol-security). When a certificate is included, no further
412+
transactions are allowed in the RB for the same reason[^3]. If the next RB is
413+
produced before this minimum delay has elapsed, the EB certificate cannot be
414+
included and the EB is discarded.
415+
416+
[^3]: If transactions "after" the certificate would be allowed, a validating
417+
node would need to build the ledger state from all endorsed transactions
418+
before it can validate the transactions in the same block. This would result
419+
in much stricter timing constraints to ensure [protocol
420+
security](#protocol-security).
415421

416422
### Protocol Parameters
417423

0 commit comments

Comments
 (0)