Difference between revisions of "Summary Block"
(4 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
The low-threshold scheme is used for the random beacon and the random tape, while the high-threshold scheme is used to certify the replicated state of the subnet. | The low-threshold scheme is used for the random beacon and the random tape, while the high-threshold scheme is used to certify the replicated state of the subnet. | ||
− | The Distributed Key Generation (DKG) protocol requires that for each signing key, | + | The Distributed Key Generation (DKG) protocol requires that for each signing key, there are a set of dealings, and that each replica can non-interactively obtain its share of the signing key from this set of dealings. |
Also recall that NNS maintains a registry that, among other things, determines the membership of a subnet. The registry (and hence the subnet membership) may change over time. Thus, subnets must agree on which registry version they use at various times for various purposes. This information is also stored in the summary block. | Also recall that NNS maintains a registry that, among other things, determines the membership of a subnet. The registry (and hence the subnet membership) may change over time. Thus, subnets must agree on which registry version they use at various times for various purposes. This information is also stored in the summary block. | ||
The summary block for epoch i contains the following data fields. | The summary block for epoch i contains the following data fields. | ||
− | * < | + | * <code>currentRegistryVersion</code>. This registry version will determine the consensus committee used throughout epoch i — all tasks performed by the consensus layer (block making, notarization, finalization) will be performed by this committee. |
− | * nextRegistryVersion. In each round of consensus, a block maker will include in its proposal the latest registry version it knows about (which must be no earlier than the block the proposed block extends). This ensures that the value nextRegistryVersion in the summary block of epoch i is fairly up to date. | + | * <code>nextRegistryVersion</code>. In each round of consensus, a block maker will include in its proposal the latest registry version it knows about (which must be no earlier than the block the proposed block extends). This ensures that the value <code>nextRegistryVersion</code> in the summary block of epoch i is fairly up to date. |
− | The value of currentRegistryVersion in epoch i is set to the value of | + | The value of currentRegistryVersion in epoch i is set to the value of <code>nextRegistryVersion</code> in epoch i − 1. |
− | * currentDealingSets. These are the dealing sets that determine the threshold signing keys that will be used to sign messages in epoch i. | + | * <code>currentDealingSets</code>. These are the dealing sets that determine the threshold signing keys that will be used to sign messages in epoch i. |
− | As | + | As will be seen later, the threshold signing committee for epoch i (i.e., the replicas that hold the corresponding threshold signing key shares) is the consensus committee for epoch i−1. |
− | * nextDealingSets. This is where dealings that are collected during epoch i − 1 are gathered and stored. | + | * <code>nextDealingSets</code>. This is where dealings that are collected during epoch i − 1 are gathered and stored. The value of <code>currentDealingSets</code> in epoch i will be set to the value of <code>nextDealingSets</code> in epoch i − 1 (which itself consists of dealings collected in epoch i − 2). |
− | * collectDealingParams. This describes the parameters that define the dealing sets to be collected during epoch i. During epoch i, block makers will include dealings in their proposed blocks that are validated relative to these parameters. | + | * <code>collectDealingParams</code>. This describes the parameters that define the dealing sets to be collected during epoch i. During epoch i, block makers will include dealings in their proposed blocks that are validated relative to these parameters. |
− | The receiving committee for these dealings is based on the nextRegistryVersion value of the summary block of epoch i. | + | The receiving committee for these dealings is based on the <code>nextRegistryVersion</code> value of the summary block of epoch i. |
For the low-threshold scheme, the dealing committee is the consensus committee for epoch i. | For the low-threshold scheme, the dealing committee is the consensus committee for epoch i. | ||
− | For the high-threshold scheme, the shares to be reshared are based on the value of nextDealingSets of epoch i. Therefore, the dealing committee is the receiving committee for epoch i − 1, which is also the consensus committee for epoch i . | + | For the high-threshold scheme, the shares to be reshared are based on the value of <code>nextDealingSets</code> of epoch i. Therefore, the dealing committee is the receiving committee for epoch i − 1, which is also the consensus committee for epoch i . |
Also observe that the threshold signing committee for epoch i is the receiving committee in epoch i − 2, which is the consensus committee for epoch i − 1 . | Also observe that the threshold signing committee for epoch i is the receiving committee in epoch i − 2, which is the consensus committee for epoch i − 1 . | ||
+ | |||
+ | ==See Also== | ||
+ | * '''The Internet Computer project website (hosted on the IC): [https://internetcomputer.org/ internetcomputer.org]''' |
Latest revision as of 10:26, 27 February 2023
This page is still work in progress
The first block in each epoch is a summary block. A summary block contains special data that will be used to manage the shares of the various threshold signature schemes. There are two threshold schemes:
- one (f + 1)-out-of-n scheme, for which a new signing key is generated every epoch;
- one (n − f)-out-of-n scheme, for which the signing key is reshared once every epoch.
The low-threshold scheme is used for the random beacon and the random tape, while the high-threshold scheme is used to certify the replicated state of the subnet.
The Distributed Key Generation (DKG) protocol requires that for each signing key, there are a set of dealings, and that each replica can non-interactively obtain its share of the signing key from this set of dealings. Also recall that NNS maintains a registry that, among other things, determines the membership of a subnet. The registry (and hence the subnet membership) may change over time. Thus, subnets must agree on which registry version they use at various times for various purposes. This information is also stored in the summary block. The summary block for epoch i contains the following data fields.
currentRegistryVersion
. This registry version will determine the consensus committee used throughout epoch i — all tasks performed by the consensus layer (block making, notarization, finalization) will be performed by this committee.nextRegistryVersion
. In each round of consensus, a block maker will include in its proposal the latest registry version it knows about (which must be no earlier than the block the proposed block extends). This ensures that the valuenextRegistryVersion
in the summary block of epoch i is fairly up to date.
The value of currentRegistryVersion in epoch i is set to the value of nextRegistryVersion
in epoch i − 1.
currentDealingSets
. These are the dealing sets that determine the threshold signing keys that will be used to sign messages in epoch i.
As will be seen later, the threshold signing committee for epoch i (i.e., the replicas that hold the corresponding threshold signing key shares) is the consensus committee for epoch i−1.
nextDealingSets
. This is where dealings that are collected during epoch i − 1 are gathered and stored. The value ofcurrentDealingSets
in epoch i will be set to the value ofnextDealingSets
in epoch i − 1 (which itself consists of dealings collected in epoch i − 2).collectDealingParams
. This describes the parameters that define the dealing sets to be collected during epoch i. During epoch i, block makers will include dealings in their proposed blocks that are validated relative to these parameters.
The receiving committee for these dealings is based on the nextRegistryVersion
value of the summary block of epoch i.
For the low-threshold scheme, the dealing committee is the consensus committee for epoch i.
For the high-threshold scheme, the shares to be reshared are based on the value of nextDealingSets
of epoch i. Therefore, the dealing committee is the receiving committee for epoch i − 1, which is also the consensus committee for epoch i .
Also observe that the threshold signing committee for epoch i is the receiving committee in epoch i − 2, which is the consensus committee for epoch i − 1 .
See Also
- The Internet Computer project website (hosted on the IC): internetcomputer.org