The Zilliqa Coin (ZIL) address in the transaction details above may look like any normal address. However, the address represents a historic accomplishment. This address is not a regular ZIL address controlled by a private key. In fact, this address, to the best of our knowledge, is the first ever ZIL address controlled by a Threshold Signatures Scheme (TSS), making it also the first coin address controlled by a TSS for Schnorr signatures.
If you have been following us closely, this probably doesn’t surprise you as we achieved the same with Binance Coin (BNB)
By using TSS, we remove the burden of a single atomic private key and split the responsibility between multiple parties. In this case, two parties control the address and both of them are required to sign the transaction.
In this blog post, we will share some details about this Proof-of-Concept (PoC) project, conducted by KZen’s (building ZenGo Wallet) blockchain research team.
Threshold Signatures Scheme (TSS) removes the burden of the single atomic private key and splits the responsibility between multiple parties.
Each of the parties generates its own secret and uses this secret to distributively sign a transaction without revealing the secret to the other parties. For a high-level overview of TSS please refer to our blog post.
For this Proof-of-Concept (PoC) project we used our open source implementation of TSS for Schnorr signatures: https://github.com/KZen-networks/multi-party-schnorr
We have invested a lot of resources in implementing TSS and making it compatible and reusable for different kinds of blockchains and Digital Signatures Algorithms (DSAs). This compatibility allows us to rapidly onboard and add TSS support to new blockchains.
At KZen, we have already implemented Threshold Signatures Scheme (TSS) support for Bitcoin, (https://github.com/KZen-networks/gotham-city ) Ethereum, and Binance and wanted to experiment with other coins.
We choose ZIL for the following main reasons:
It’s worth noting that even though Zilliqa supports Schnorr Multi-Signatures (MultiSig) which allow users to add multi-party security, there are still distinct advantages to using TSS. One main advantage is that TSS transactions look exactly the same as regular transactions. Unlike with MultiSig transactions, the TSS “magic” is applied in the mathematical layer and not in the application layer:
The fact that Zilliqa has funded the KZen research team demonstrates their interest in integrating TSS functionalities with Zilliqa.
The Zilliqa blockchain network is innovative, introducing concepts such as sharding to support transactions and smart contracts at scale. However, because TSS is blockchain agnostic, it is able to easily integrate with this unique architecture. This compatibility is what allowed us to complete this PoC in one day with no need for “integration” on the Zilliqa side.
Using the SDK, we first made sure that we can generate a normal transaction.
Then we needed to change it by applying TSS generation and signing.
Of course, this part does not prove anything as any random string can be successfully converted into an address. The real challenge now is to sign a transaction from this address.
During this part, we identified that Zilliqa uses a slightly different variant of the Schnorr signatures (compared to Bitcoin’s BIP-Schnorr) and we updated our Schnorr TSS library accordingly to accommodate this variation.
We then verified that TSS works with the Zilliqa blockchain by getting success results from the API and checking the transactions in the explorer (see above). We then refactored the code to interact directly with our TSS setup instead of copy-pasting values manually. We plan to release the code as an open source project soon.
All in all, it took us only a few hours to add TSS support to this leading crypto asset. The experiment successfully demonstrated how easily blockchains can integrate our generic TSS infrastructure.