Skip to content

Commit

Permalink
Clarify and reformat
Browse files Browse the repository at this point in the history
  • Loading branch information
xandkar committed Apr 20, 2021
1 parent 2b46895 commit 429c01d
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions 0029-multisignature-keys.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ applications not listed above.
This change should not affect any current Hotspot owners or HNT holders as it
is a purely additive change to existing key types.

We believe that this feature will enable new ownership organization of HST, HNT and
Hotspots on the network.
We believe that this feature will enable new ownership organization of HST, HNT
and Hotspots on the network.

# Detailed Explanation
[detailed-explanation]: #detailed-explanation
Expand All @@ -64,11 +64,11 @@ Roughly, the schemes are:
1. Multi-signature public key: `| net-type | key-type | m | n | multihash-digest-of-n-public-keys |`;
2. Multi-signature: `| public-key[0]..public-key[n-1] | isig[1]..isig[m] |`.

More precisely, given a sequence `n` public keys: `public-key[0]..public-key[n-1]`,
a `multihash-digest-of-n-public-keys` is its multihash digest and `isig[1]..isig[m]`
is a sequence of triples: `i | len | sig` where `i` is the index into the
preceding sequence of public keys, `len` is the length of the following
signature (in bytes) and `sig` is the signature.
More precisely, given a sequence of `n` public keys:
`public-key[0]..public-key[n-1]`, a `multihash-digest-of-n-public-keys` is its
multihash digest and `isig[1]..isig[m]` is a sequence of triples: `i | len |
sig` where `i` is the index into the preceding sequence of public keys, `len`
is the length of the following signature (in bytes) and `sig` is the signature.

#### Illustration:

Expand All @@ -95,10 +95,12 @@ requires knowledge of:
### Verification

After parsing the scalar components of the multi-pub-key and multi-signature,
we consider the signature to be valid if all of the following is true:
we consider the multi-signature to be valid if _all_ of the following
conditions are true:
1. we have at least `M` scalar signatures within the composite multi-signature;
2. _all_ of the provided signatures _uniquely_ point to a public key within
`0..N-1`;
2. _all_ of the provided scalar signature triples _uniquely_ point to a public
key within `0..N-1` range (i.e. any isig containing an-already-seen index -
invalidates the multi-signature);
3. at least `M` of the scalar signatures pass verification.

# Drawbacks
Expand All @@ -118,7 +120,6 @@ time, intend to update `vars_v1` but may do so at a later date.
# Unresolved Questions
[unresolved]: #unresolved-questions


# Deployment Impact
[deployment-impact]: #deployment-impact

Expand Down

0 comments on commit 429c01d

Please sign in to comment.