mirror of
https://github.com/corda/corda.git
synced 2025-02-21 09:51:57 +00:00
Added docs for PublicKeyTree/multi-signature support
This commit is contained in:
parent
b3f3ee0562
commit
a26908e83b
BIN
docs/source/resources/public-key-tree-2.png
Normal file
BIN
docs/source/resources/public-key-tree-2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.9 KiB |
BIN
docs/source/resources/public-key-tree.png
Normal file
BIN
docs/source/resources/public-key-tree.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
@ -145,6 +145,40 @@ that has been signed by a set of parties.
|
|||||||
.. note:: These types are provisional and will change significantly in future as the identity framework becomes more
|
.. note:: These types are provisional and will change significantly in future as the identity framework becomes more
|
||||||
fleshed out.
|
fleshed out.
|
||||||
|
|
||||||
|
Multi-signature support
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Corda supports scenarios where more than one key or party is required to authorise a state object transition, for example:
|
||||||
|
"Either the CEO or 3 out of 5 of his assistants need to provide signatures".
|
||||||
|
|
||||||
|
Key Trees
|
||||||
|
^^^^^^^^^
|
||||||
|
|
||||||
|
This is achieved by public key composition, using a tree data structure ``PublicKeyTree``. A ``PublicKeyTree`` stores the
|
||||||
|
cryptographic public key primitives in its leaves and the composition logic in the intermediary nodes. Every intermediary
|
||||||
|
node specifies a *threshold* of how many child signatures it requires.
|
||||||
|
|
||||||
|
An illustration of an *"either Alice and Bob, or Charlie"* public key tree:
|
||||||
|
|
||||||
|
.. image:: resources/public-key-tree.png
|
||||||
|
:width: 300px
|
||||||
|
|
||||||
|
To allow further flexibility, each child node can have an associated custom *weight* (the default is 1). The *threshold*
|
||||||
|
then specifies the minimum total weight of all children required. Our previous example can also be expressed as:
|
||||||
|
|
||||||
|
.. image:: resources/public-key-tree-2.png
|
||||||
|
:width: 300px
|
||||||
|
|
||||||
|
Verification
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Signature verification is performed in two stages:
|
||||||
|
|
||||||
|
1. Given a list of signatures, each signature is verified against the expected content.
|
||||||
|
2. The public keys corresponding to the signatures are matched against the leaves of the public key tree in question,
|
||||||
|
and the total combined weight of all children is calculated for every intermediary node. If all thresholds are satisfied,
|
||||||
|
the public key tree requirement is considered to be met.
|
||||||
|
|
||||||
Date support
|
Date support
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user