<p>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.</p>
<p>The reason for removal is explained in the <a href="https://github.com/bitcoin-core/secp256k1/pull/425" rel="noreferrer">pull request that removed it</a>:</p>
<blockquote>
<p>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).</p>
<p>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.</p>
</blockquote>

CC BY-SA 3.0
2017-07-27T23:18:34.877Z
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
CC BY-SA 3.0
2017-07-27T23:26:34.633Z
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.
Ava Chow
CC BY-SA 3.0
2017-07-30T03:44:46.677Z
" 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
CC BY-SA 3.0
2017-07-27T17:01:13.380Z
2017-07-27T17:01:13.380Z
2020-06-16T11:10:03.350Z
Ava Chow
<p>I was looking for the Schnorr implementation in Bitcoin Core and was surprised to see that it was removed on Nov 2016 (commit <code>e06e878fd7dcc99825025fa99aedb86bc7d5c29f</code>). Why was the source code completely removed from Bitcoin Core? Was it moved to some other development repo?</p>

CC BY-SA 3.0
2018-01-09T14:57:50.783Z
new schnorr: https://github.com/bitcoin-core/secp256k1/pull/461
Janus Troelsen
<bitcoin-core-development><schnorr-signatures><secp256k1>
Why was the Schnorr code removed from Bitcoin Core?
Consy
# Why was the Schnorr code removed from Bitcoin Core?

(Asked by: username_0 on 2017-07-27)

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?

**Tags:** bitcoin-core-development, schnorr-signatures, secp256k1

> **Comments:**
> **username_1**: new schnorr: https://github.com/bitcoin-core/secp256k1/pull/461  

---

## 1 answers

### Answer by username_2 on 2017-07-27. Score: 11 | Accepted answer

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](https://github.com/bitcoin-core/secp256k1/pull/425):

> 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.

> **Comments:**
> **username_0**: 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.  
> **username_2**: 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.  
> **username_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.  

---

