This LIP proposes extending the CTE specification to support multiple cryptographic schemes, including Post-Quantum Cryptography (PQC) algorithms like SLH-DSA (also known as SPHINCS+). It utilizes the two previously reserved padding bits within the header bytes of the Public Key List (Tag 00) and Signature List (Tag 01) fields to encode the specific cryptographic scheme being used. For PQC signatures, which are typically very large, this proposal adopts a segregated proof model: only a 32-byte BLAKE3 hash of the PQC signature is stored on-chain within the Signature List field, while the full signature proof is expected to be distributed via a separate mechanism. This allows LEA blockchain transactions to gain PQC resistance while maintaining the core compactness principle of CTE.
As quantum computing advances, blockchains need to transition to PQC algorithms to ensure long-term security. However, many PQC signatures are significantly larger than traditional signatures (e.g., Ed25519 used in CTE v1.0), potentially exceeding CTE's strict Maximum Transaction Size limit (1232 bytes). Storing these large signatures directly on-chain would undermine CTE's efficiency and compactness.
This proposal aims to:
This approach maintains small transaction sizes while paving the way for quantum resistance.
This LIP modifies Sections 4.1 and 4.2 of the CTE v1.0 specification by assigning meaning to the previously reserved bits 1-0 of their respective header bytes.
00) - Updated00| Bits | Field | Description |
|---|---|---|
| 7-6 | Tag (00) |
Identifies this as a Public Key List. |
| 5-2 | Length (N) | Number of keys in the list (1-15). |
| 1-0 | Type Code (TT) |
Specifies the cryptographic scheme (see table below). |
N contiguous public keys. The size of each key depends on the Type Code.TT):TT (Bin) |
TT (Dec) |
Cryptographic Scheme | Key Size (Bytes) | Notes |
|---|---|---|---|---|
00 |
0 | Ed25519 | 32 | CTE v1.0 Default |
01 |
1 | SLH-DSA-SHA2-128f | 32 | SPHINCS+ variant public key |
10 |
2 | SLH-DSA-SHA2-192f | 48 | SPHINCS+ variant public key |
11 |
3 | SLH-DSA-SHA2-256f | 64 | SPHINCS+ variant public key |
1 + (N * Size(Type[TT])) bytes. Implementations must consider the overall transaction size limit.01) - Updated01| Bits | Field | Description |
|---|---|---|
| 7-6 | Tag (01) |
Identifies this as a Signature List. |
| 5-2 | Length (N) | Number of signatures/hashes in list (1-15). |
| 1-0 | Type Code (TT) |
Specifies the scheme and format (see table below). |
N contiguous signatures or signature hashes. The size of each item depends on the Type Code.TT):TT (Bin) |
TT (Dec) |
Cryptographic Scheme / Format | Item Size (Bytes) | Notes |
|---|---|---|---|---|
00 |
0 | Ed25519 Signature | 64 | CTE v1.0 Default, full signature |
01 |
1 | BLAKE3 Hash of SLH-DSA-SHA2-128f Signature | 32 | 256-bit hash of the corresponding full PQC signature proof |
10 |
2 | BLAKE3 Hash of SLH-DSA-SHA2-192f Signature | 32 | 256-bit hash of the corresponding full PQC signature proof |
11 |
3 | BLAKE3 Hash of SLH-DSA-SHA2-256f Signature | 32 | 256-bit hash of the corresponding full PQC signature proof |
TT = 01, 10, 11, the data represents a 32-byte hash generated using the BLAKE3 cryptographic hash function on the full PQC signature.TT = 01, 10, 11 requires obtaining the corresponding full PQC signature proof from an external source (off-chain mechanism), verifying the proof against the public key, and then hashing the proof with BLAKE3 to compare against the 32-byte hash stored in this field.1 + (N * Size(Type[TT])) bytes.The mechanism for distributing and retrieving the full PQC signature proofs corresponding to the on-chain hashes (TT = 01, 10, 11 in Tag 01) is outside the scope of this core encoding specification but is a critical component required for validation. Implementations MUST ensure a reliable and secure system for this purpose.
00 and 01 headers is the intended mechanism for extending CTE functionality without consuming new tags, maintaining the compact 2-bit tag structure. This provides 4 type codes, sufficient for the default scheme and the initial set of PQC algorithms.00 in the Public Key List and Signature List headers remain compatible with CTE v1.0 / v1.1 parsers that ignore or expect the padding bits to be zero.01, 10, 11) in either header are incompatible with older parsers. These parsers will likely fail or misinterpret the data due to unexpected key/signature sizes or formats.00 and 01. This change effectively defines CTE v1.2 (or potentially CTE v2.0 depending on community consensus regarding the significance of PQC integration and the segregated proof model).Public Key List still consumes transaction space (32, 48, or 64 bytes per key). Applications should consider the impact on the overall transaction size limit.This LIP is licensed under the MIT License, in alignment with the main LEA Project License.