I was looking for the Schnorr implementation in Bitcoin Core and was surprised to see that it was removed on Nov 2016 (commit e06e878fd7dcc99825025fa99aedb86bc7d5c29f). Why was the source code completely removed from Bitcoin Core? Was it moved to some other development repo?

up vote 10 down vote accepted

The Schnorr implementation was never in Bitcoin Core. Rather it is in the libsecp256k1 library that is a subtree in Bitcoin Core. The commit you reference is actually a commit in that library which appears in Core's commit history because the subtree in Core is periodically updated with the libsecp256k1 upstream source code.

The reason for removal is explained in the pull request that removed it:

This module implemented a naive custom Schnorr signature scheme, though several flaws have been discovered with its approach since (lack of commitment to public keys, ability for 3rd parties to adapt signatures to related keys, and a multisigning API that is vulnerable to cancellation attacks, restart attacks that leak a private key to cosigners).

I have been working on a better scheme, but I don't believe this should be upstream until it's been vetted in more thorough ways. People assumed that it being included in the repository was a sign that it was final, so I'm removing it to avoid any confusion.

  • 2
    is there any visibility on Bitcoin Core Schnorr development or it is done privately. Since Schnorr is an answer to Bitcoin scalability, strange to see no code is committed on core. – Consy Jul 27 '17 at 23:18
  • 4
    Schnorr signatures (specifically Schnorr signature aggregation) is currently completely experimental and being worked on in private by some Bitcoin Core contributors. It is currently not something that Core as a whole is working on (if such a thing could even happen). Implementing Schnorr signature aggregation also requires a fork, which would also require a BIP and many other things. None of those exist yet as the cryptography details of Schnorr signature stuff is not even complete. Thins that are WIP will never be in committed to Core until they are complete. – Andrew Chow Jul 27 '17 at 23:26
  • 3
    " and being worked on in private by some Bitcoin Core contributors" ... It's being worked on in public, in other pull requests on the repository. (there is private work too, e.g. our academic publications on it, but the protocol development is public.) Some of us are a bit sensitive about our work being taken and fraudulently advertised as someone elses, esp since this has recently happened, but we still prefer to work in public. – G. Maxwell Jul 30 '17 at 3:44

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.