delvingbitcoin
Winternitz One Time Signatures, contrasting between Lisp and Script
Posted on: November 13, 2024 08:07 UTC
Jonas Nick recently highlighted an innovative application of WOTS+ (Winternitz One-Time Signature Plus) using expanded script opcodes proposed for the GSR project, showcasing a method for generating and verifying signatures within Bitcoin transactions.
This method involves creating a WOTS+ secret/public key pair, which then facilitates the generation of a large script encoding the public key, seed, and randomizers. This script is crucial for verifying signatures. The process exemplified includes generating a witness stack for a pretended Bitcoin transaction, which upon verification, demonstrates the validity of the transaction.
The discussion raises critical points regarding Bitcoin scripting language's limitations, specifically its inability to handle looping and structured data efficiently. These limitations result in significant increases in code size when attempting to verify multiple signatures or public keys due to the necessity of replicating hashing code lines. A comparison is drawn with an alternative approach using bllsh that considerably reduces the script size by simplifying the structure and potentially further reducing the size by generating randomization data from the seed.
Furthermore, the technical aspects of implementing WOTS+ in this context are elaborated, describing how a seeded/randomized hash function is created alongside the main Winternitz function for chaining hash functions. This explanation extends to the operational details such as calculating checksums for security measures and employing the CAT trick for signature verification.
The efficiency and simplicity offered by translating these operations into a functional lean4 implementation are underscored, suggesting ease of handling and potential for formal verification compared to the complexities observed with Bitcoin's current scripting capabilities. This exploration not only opens up discussions for enhancing script functionalities within Bitcoin but also presents a tangible example of applying WOTS+ in a manner that addresses existing scripting challenges, as demonstrated through the WOTS+ implementation and the GSR project proposal.