## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

- Auto
- Light
- Dark

# Algorand Specifications

OneTimeSignatureSubkeyBatchID identifies an intermediate level ephemeral sub-key of a batch
and is signed by the _voting key_’s _root key_. It has the following fields:

- _Sub-Key Public key_ (SubKeyPK), the public key of this sub-key.

- _Batch_ (Batch), batch number of this sub-key.

The OneTimeSignatureSubkeyOffsetID identifies a leaf-level ephemeral sub-key and is signed
with a batch sub-key. It has the following fields:

- _Sub-Key Public key_ (SubKeyPK), the public key of this sub-key.

- _Batch_ (Batch), batch number of this sub-key.

- _Offset_ (Offset), offset of this sub-key in current batch.

Finally, OneTimeSignature is a cryptographic signature used in voting
messages between Algorand players. It contains the following fields:

- _Signature_ (Sig), a signature of message under PK.

- _Public Key_ (PK), the public key of the message signer, is part of a
leaf-level ephemeral sub-key.

- _Public Key 2_ (PK2), the public key of the current batch.

- _Public Key 1 Signature_ (PK1Sig), a signature of OneTimeSignatureSubkeyOffsetID
under PK2.

- _Public Key 2 Signature_ (PK2Sig), a signature of OneTimeSignatureSubkeyBatchID
under the _voting keys_.

> The _Old Style Signature_ (PKSigOld) is **deprecated**, still included
> in the message only for compatibility reasons.

> Important
>
> **IMPLEMENTATION:**
>
> One-Time Signature [reference implementation](https://github.com/algorand/go-algorand/blob/b6e5bcadf0ad3861d4805c51cbf3f695c38a93b7/crypto/onetimesig.go#L36).
