net.corda.core.crypto / PublicKeyTree

# PublicKeyTree

`sealed class PublicKeyTree`

A tree data structure that enables the representation of composite public keys.

In the simplest case it may just contain a single node encapsulating a PublicKey – a Leaf.

For more complex scenarios, such as "Both Alice and Bob need to sign to consume a state S", we can represent the requirement by creating a tree with a root Node, and Alice and Bob as children – Leafs. The root node would specify weights for each of its children and a threshold – the minimum total weight required (e.g. the minimum number of child signatures required) to satisfy the tree signature requirement.

Using these constructs we can express e.g. 1 of N (OR) or N of N (AND) signature requirements. By nesting we can create multi-level requirements such as "either the CEO or 3 of 5 of his assistants need to sign".

### Types

Builder | `class Builder` A helper class for building a PublicKeyTree.Node.
Leaf | `class Leaf : PublicKeyTree` The leaf node of the public key tree – a wrapper around a PublicKey primitive
Node | `class Node : PublicKeyTree` Represents a node in the PublicKeyTree. It maintains a list of child nodes – sub-trees, and associated weights carried by child node signatures.

### Properties

keys | `abstract val keys: Set<PublicKey>` Returns all PublicKeys contained within the tree leaves
singleKey | `val singleKey: PublicKey` Returns the enclosed PublicKey for a PublicKeyTree with a single node

### Functions

containsAny | `fun containsAny(otherKeys: Iterable<PublicKey>): <ERROR CLASS>` Checks whether any of the given keys matches a leaf on the tree
isFulfilledBy | `abstract fun isFulfilledBy(keys: Iterable<PublicKey>): Boolean` Checks whether keys match a sufficient amount of leaf nodes `fun isFulfilledBy(key: PublicKey): <ERROR CLASS>`
toBase58String | `fun toBase58String(): String`

### Companion Object Functions

parseFromBase58 | `fun parseFromBase58(encoded: String): <ERROR CLASS>`

### Inheritors

Leaf | `class Leaf : PublicKeyTree` The leaf node of the public key tree – a wrapper around a PublicKey primitive
Node | `class Node : PublicKeyTree` Represents a node in the PublicKeyTree. It maintains a list of child nodes – sub-trees, and associated weights carried by child node signatures.