SHRINCS: 324-byte stateful post-quantum signatures with static backups

SHRINCS-L. On-Liquid Performance Report

We have designed and benchmarked a version of SHRINCS optimized for Liquid (the signature verifier is written on Simplicity). It has the same building blocks as an original SHRINCS, but trades the signature size for the number of hash operations required to verify the signature. For comparison, Simplicity verifiers for different signature instances:

  • SLH-DSA: ~770,000 kWU
  • SHRINCS: ~222,000 kWU (stateless)
  • SHRINCS-L: ~92,500 kWU (stateless) and ~37,800+ kWU (stateful)

The specification and parameters for an initial and -L versions can be found here.

General params: n=16, w=4, l=64, S_wn=140, h_sf=207, h_sl=24, d=2, k=6, a=22, R_SIZE=32

Keys size:

    Seed (backup):  48 bytes
    Secret key:     96 bytes
    Public key:     32 bytes

Stateful signature:

    |  q, count | size, bytes | witness, vBytes | hash ops |   kWU   |  fee, $  | sat/vB |
    --------------------------------------------------------------------------------------
    |   1       |    1092     |      9439       |    55    |  37.755 |    0.6   |  0.11  |
    --------------------------------------------------------------------------------------
    |   2       |    1108     |      9444       |    56    |  37.774 |   0.82   |  0.13  |
    --------------------------------------------------------------------------------------
    |  10       |    1236     |      9612       |    64    |  38.445 |   0.68   |  0.10  |
    --------------------------------------------------------------------------------------
    | 100       |    2676     |     11337       |   154    |  45.345  |  0.89   |  0.11  |

Stateless signature:

    | size, bytes | witness, vBytes | hash ops |    kWU   |  fee, $  | sat/vB |
    --------------------------------------------------------------------------
    |    4396     |      23113      |    247   |  92.450  |   1.59   |  0.10  |

Signing and verification time:

    Stateful signing time:                  3742.92 ms
    Stateful verification time (local):     0.015506 ms
    Stateless signing time:                 17974.8 ms
    Stateless verification time (local):    0.073762 ms

Machine: Intel Core i5, 16 GB RAM (one thread, w/o parallelization)

Mainnet transactions: (q=1), (q=2), (q=10), (q=100), (stateless)

2 Likes