```
pub trait KeyOwnerProofSystem<Key> {
type Proof: Codec;
type IdentificationTuple: Codec;
// Required methods
fn prove(key: Key) -> Option<Self::Proof>;
fn check_proof(
key: Key,
proof: Self::Proof
) -> Option<Self::IdentificationTuple>;
}
```

## Expand description

Something which can compute and check proofs of a historical key owner and return full identification data of that key owner.

## Required Associated Types§

#### type Proof: Codec

#### type Proof: Codec

The proof of membership itself.

#### type IdentificationTuple: Codec

#### type IdentificationTuple: Codec

The full identification of a key owner and the stash account.

## Required Methods§

#### fn prove(key: Key) -> Option<Self::Proof>

#### fn prove(key: Key) -> Option<Self::Proof>

Prove membership of a key owner in the current block-state.

This should typically only be called off-chain, since it may be computationally heavy.

Returns `Some`

iff the key owner referred to by the given `key`

is a
member of the current set.

#### fn check_proof(
key: Key,
proof: Self::Proof
) -> Option<Self::IdentificationTuple>

#### fn check_proof( key: Key, proof: Self::Proof ) -> Option<Self::IdentificationTuple>

Check a proof of membership on-chain. Return `Some`

iff the proof is
valid and recent enough to check.

## Object Safety§

This trait is

**not**object safe.