A previous quantum resistant lock script was implemented using SPHINCS+, but its signature is quite large (from 8K to 50K). On a blockchain, storage is precious, and large signatures also impact TPS.
Here we use SHRINCS, developed by BlockStream, which can achieve a signature of only 324 bytes in the minimal scenario. There are two methods of verifying SHRINCS: stateful and stateless. With stateful verification, the signature can be as small as 324 bytes, but the state (a count) must be stored on the local device.The other method is stateless verification, which works like SPHINCS+ but with a much smaller signature size (2.5K bytes). For most scenarios, a stateful signature can be used to unlock. In specific scenarios, such as transferring a wallet to another device, a stateless signature can be used.
Thus we have made a new lock based on SHRINCS:
You can try it via this demo wallet on testnet:
or chrome web store: https://chromewebstore.google.com/detail/ckb-testnet-wallet-beta/nghimcjehoahofjcapbgcgfbbebobdgb
SHRINCS in rust: GitHub - XuJiandong/shrincs-rs · GitHub