-
Notifications
You must be signed in to change notification settings - Fork 453
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A DAO using Schnorr signatures for all Reddit wallstreetbets members #5984
Comments
After a bit of research, it seems that getting Schnorr signatures up and running is not only a requirement for "large-scale collective money ownership" but can also be a step towards an efficient cross-chain liquidity pool where a group of stakeholders manage/co-sign transfers from/to wallets. It seems that there are Python bindings available for the |
Update: I've extended the Coincurve Python bindings with support for Schnorr signatures. In summary, I had to write a few additional CFFI bindings for methods related to Schnorr signatures and public key management but now I'm able to sign and verify digital signatures fully in Python, using the |
Hey everyone, chiming in since I got tagged in the OP. A 4.4million-out-of-8.8million spend would be a really nice benchmark which may perhaps even have applications in the real world. If I understand correctly, what complicates the implementation of this idea is that MuSig only supports true multisignatures, i.e. n-of-n and therefore every signer must sign individually to produce a final signature. This is unfortunately easy to misunderstand, because in contrast to the applied crypto literature, "multisignature" in Bitcoin refers to the more general t-of-n constructions. After activation of taproot, applications can emulate a t-of-n threshold signature using a disjunction of t-of-t multisignatures. This is due to the Merkle Tree of spending conditions in taproot. Take every t-combination of the n signers and append the corresponding t-of-t aggregate key to the Merkle Tree. But in your scenario, the number of leafs would be astronomically large (8 million choose 4 million). The best bet is to build this application using FROST threshold signatures. Schnorr threshold signatures are similar to multisignatures, but have an interactive key setup process in order to split every signers key into shards that can be sent to every other signer. @jesseposner is working on an implementation of FROST in libsecp-zkp. |
@jonasnick thanks for your comment! I decided to tackle the My follow-up question was indeed how to convert this scheme to |
Update: I now have a fully functional implementation of FROST in Python, using the more mature
So the code seems to correctly generate a 64-byte Schnorr signature that could be embedded in a Bitcoin transaction. A few notes:
|
Is the frost-dalek library able to produce BIP-340 compatible signatures, i.e., the specification of Schnorr signatures that is going to activate on Bitcoin? |
@jonasnick the |
I also completed the Python bindings to the FROST implementation in the
Python code can be found here. |
Very impressive work people! |
@synctext since the FROST algorithm is quite new, there are no matured implementation as far as I'm aware. The most mature implementation seems to be @awrgold I would be happy to discuss more technical details if you're interested in that 👍 |
Another user working on FROST scalability posted some performance results in the FROST code repository.
|
Goal: proof-of-principle prototype of a DAO with 8.8 million members (number of people in this Reddit).
Ordinary Internet users have for the first time driven Wall Street professional speculators into a corner. We want to further strengthen their power. We will use Bitcoin to democratically control funds collectively owned by 8.8 million people. Future features would include: discover DAOs,join,leave, and vote on investment proposals.
Taproot inside Bitcoin will allow us to expand our existing Delft University DAO prototype with muti-sig aggregation: https://github.com/taprootactivation/Taproot-Activation
The "key" problem is to facilitate 8.8 million signatures in a DAO, but not require full storage of each individual signature. This has been done for a 10million-out-of-10million multi-signature wallet, great accomplishment @jonasnick. As a proof-of-principle the issue is to:
Outcome: Python script for 4.4million-out-of-8.8million multi-signature transactions (50% as minimal threshold for democratic participation and legitimacy of vote)
https://www.coindesk.com/taproot-bitcoin-upgrade-improve-technology-software
https://github.com/jonasnick/musig-benchmark
The text was updated successfully, but these errors were encountered: