From a26908e83bc489ad17e50255636d244c1252b202 Mon Sep 17 00:00:00 2001 From: Andrius Dagys Date: Mon, 26 Sep 2016 12:09:15 +0100 Subject: [PATCH] Added docs for PublicKeyTree/multi-signature support --- docs/source/resources/public-key-tree-2.png | Bin 0 -> 6065 bytes docs/source/resources/public-key-tree.png | Bin 0 -> 8627 bytes docs/source/transaction-data-types.rst | 34 ++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 docs/source/resources/public-key-tree-2.png create mode 100644 docs/source/resources/public-key-tree.png diff --git a/docs/source/resources/public-key-tree-2.png b/docs/source/resources/public-key-tree-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc70e11e21e9d29c718ba445efab3c985130587 GIT binary patch literal 6065 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∈*$B2!~OuW%@Ry=V=_-z3MXGW_;T zwxm3!btk#$TGa85;<@fnE2%hH_6^U&ckC_KeJAd^X$21K5%L$0IoZ=1%98Z1kT>$e=TH? zcdD3=lmyNiBy63J78|(r+HtBTbeD66+(2ZXoz6XlnYK^>_`K&*uZ15j!~|^oFeswt8;DN~Aln_Yj zfR6|BL0{4T)_8iyO=h6Vszv0smkg~_Cw%_bua1liUP@03DC=A7Qs+UqN+?bqRB53~ zIt0tS6>-?z7Rs*@etP)*IQT4<%0DtMx!e1kyApOip;4mHn~_&d@@H2TDETm(pAn!; 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 a=fxFSH6cEME)4G_7l@|5My0yVi~j*Lv^F9D literal 0 HcmV?d00001 diff --git a/docs/source/transaction-data-types.rst b/docs/source/transaction-data-types.rst index 9b179df7c5..af27722187 100644 --- a/docs/source/transaction-data-types.rst +++ b/docs/source/transaction-data-types.rst @@ -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 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 ------------