githubEdit

⚛️Post-quantum transactions

NextGen cryptography already on KLY

circle-info

PQC - Post-Quantum Cryptography

Intro

As we said earlier, we use Dilithium and BLISS signatures as post-quantum signature schemes. Depending on the Dilithium mode, the size of the keys may change, but the structure of the key pair remains unchanged. Also, since post-quantum schemes usually have large public keys, the address of the post-quantum key pair will be the BLAKE3arrow-up-right hash of the public key. Here's what it looks like:

Disclaimer

triangle-exclamation

Generate account

Output:

Dilithium

BLISS

circle-check

Initial process to activate post-quantum account

Post-quantum algorithms usually have a large public key. It would not be rational to use it when sending a large number of transactions.

For this reason, the hash of the public key is used as an ID for such accounts. This will be your address

For example, in the examples above that we generated, the addresses will be:

However, to verify the signature, the network must store the public key:address pairs somewhere so that the small address can be used in the transaction instead of the large public key.

Therefore, when initially replenishing an account, it is worth adding the pqcPub field to the payload.

Example:

circle-check

PQC => Ed25519

Dilithium

BLISS

Then, this transaction can be send to mempool with default way:

PQC => BLS

Same as Ed25519 => BLS(multisig address) transaction

PQC => TBLS

Same as Ed25519 => TBLS(thresholdsig address) transaction

PQC => PQC

Same as Ed25519 => PostQuantum(Dilithium/BLISS) transaction

What's the point of adding the support for two algorithms?

We decided to add Dilithium and BLISS support because:

  • BLISS have a short enough signatures

  • Dilithium is a prime candidate for NIST certification

So it was kind of like a compromise. In any case, only users can choose what to us

Last updated