Skip to content
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

PROJECT: Stand-Alone BIP-322 (Generic Signed Message Format Leveraging Bitcoin Script) CLI App #112

Open
9 of 39 tasks
ChristopherA opened this issue May 20, 2022 · 9 comments
Labels
program: gordian associated with Gordian projects

Comments

@ChristopherA
Copy link
Contributor

ChristopherA commented May 20, 2022

BIP-322 is a proposal originally by Kalle Alm (@kallewoof) to leverage the Bitcoin scripting language (ambiguously just called bitcoin script) to enable the signing of arbitrary messages using the same keys & scripts that Bitcoin uses for transactions.

In particular, BIP-322 extends the old single-key signing of messages (using the now off-by-default signmessage & verifymessage rpc api calls) which only worked with legacy scripts like Pay-to-Public-Key-Hash (P2PKH), to allow signing messages using any Bitcoin script wich can conceivably spend (in particular Pay-to-Witness-Script-Hash (P2WSH).

In older versions of bitcoin-core's bitcoind , this is the way the signmessage and verifymessage calls worked (example from LBTCftCL):

$ bitcoin-cli getnewaddress -addresstype legacy
moKVV6XEhfrBCE3QCYq6ppT7AaMF8KsZ1B
$ bitcoin-cli signmessage "moKVV6XEhfrBCE3QCYq6ppT7AaMF8KsZ1B" "Hello, World"
HyIP0nzdcH12aNbQ2s2rUxLwzG832HxiO1vt8S/jw+W4Ia29lw6hyyaqYOsliYdxne70C6SZ5Utma6QY/trHZBI=
$ bitcoin-cli verifymessage "moKVV6XEhfrBCE3QCYq6ppT7AaMF8KsZ1B" "HyIP0nzdcH12aNbQ2s2rUxLwzG832HxiO1vt8S/jw+W4Ia29lw6hyyaqYOsliYdxne70C6SZ5Utma6QY/trHZBI=" "Hello, World"
true

The goal of this project is to implement BIP-322 signmessage and verifymessage functions as a C++ Command Line Interface (CLI) app, in a form that allows for the offline signing of messages, with no dependencies on bitcoin-core's bitcoind server, but leveraging the more secure and supported bitcoin-core libraries like secp256k1 and likely btcdeb.

Community Project milestones:

  • Establish team channels
  • Schedule Intro call & agenda
    • OTHERS?
    • DECISION: Do we have sufficient critical mass of team members to tackle this project this summer (June-August 2022)?
  • Create initial repo (license, CLA, initial documents, uses cases, specs, issues, etc.)
    • Give team write access to repo
  • Write Use Cases
    • Initial use cases document at https://hackmd.io/KR5ALrSSQO6eyrnUBJreeA
    • Simple offline use case (sign using a secp256k1 private key)
    • Simple bitcoin use case (sign using an bitcoin address, either a spent transaction or is a UTXO)
    • Simple identity use case (#w3c did:key?)
    • Complex identity use case (#w3c did:btcr2?)
    • Use cases for variants such as P2WSH, P2TR, multisig and PSBT support.
    • Other use cases
  • Write Requirements for
    • Proof of Concept or MVP
      • POC/MVP requirements
      • Scope & timeframe
    • Future implementations thoughts (what are we leaving out of POC/MVP?)
  • Identify canonical test examples and testing criteria
  • Implement POC/MVP
    • Identify lead and assign roles
  • Document and publicize POC/MVP
  • Explore next steps
    • Post-mortem
      • Identify weaknesses of current implementation and low-hanging fruit as possible next steps.
      • How well did this project work out as a summer internship project? How can we do better?
    • Solicit support from Patrons & other funders for continued development

(This issue follows community discussion at #76 (comment) with @ChristopherA @kallewoof @deymow @shoryak @shikharvashistha @Eunoia172 @wip-abramson @ahmadi-08)

@wip-abramson
Copy link

The P.R. you reference that adds BIP 322 to bitcoin core is out of date. I believe it was closed in favour of this one - bitcoin/bitcoin#24058.

@wip-abramson
Copy link

Hey, any update on this project? When is it kicking off?

@ChristopherA
Copy link
Contributor Author

@wip-abramson we've been challenged trying to set up a meeting that works for Japan, California, and London. Doesn't seem to be working. Planning may be two meetings, one with @kallewoof and one with you. Is there a 9am meeting PDT hole in your schedule anytime soon?

@benthecarman
Copy link

Implementation in scala I created: bitcoin-s/bitcoin-s#3823

@ChristopherA
Copy link
Contributor Author

Last week with met in Zoom with @kallewoof. Let me know if you want the audio recording from that meeting.

We are meeting tomorrow (Monday 9am PDT) with @wip-abramson. Contact me if you have not received Zoom details. I will record it as well.

@wip-abramson
Copy link

If anyone could review this P.R. which is a WIP of bip322 in the buidl-python library - buidl-bitcoin/buidl-python#140

That would be much appreciated!

@ChristopherA
Copy link
Contributor Author

We've begun to draft some use cases for BIP-322 at https://hackmd.io/KR5ALrSSQO6eyrnUBJreeA — please feel free to add more, or add comments (in the view interface) if you have constructive criticism. In particular, the "proof of reserve" use cases have had some active criticism in the past that we'd like to either capture or address.

Our initial goal is to support requirements for our libraries and reference implementation for BIP-322, but I also want to publish this in some final form later this summer.

@ChristopherA
Copy link
Contributor Author

There is a thread starting today on Bitcoin-Lev list BIP-322: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-August/020844.html

@ZenulAbidin
Copy link

There is a thread starting today on Bitcoin-Lev list BIP-322: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-August/020844.html

I'm the author of that post - I also happen to be a C++11 dev. I am willing to help out with a standalone BIP322 C++ implementation.

@ChristopherA ChristopherA added program: lbtcftcl associated with the Learning Bitcoin from the Command Line projects program: gordian associated with Gordian projects and removed program: lbtcftcl associated with the Learning Bitcoin from the Command Line projects labels Oct 4, 2022
@ChristopherA ChristopherA moved this to 2023 Backlog in High Level Roadmap Jan 16, 2023
@ChristopherA ChristopherA moved this from 2024 Q1 Backlog to 2024 Backlog in High Level Roadmap Jan 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
program: gordian associated with Gordian projects
Projects
Status: 2025 Backlog
Development

No branches or pull requests

4 participants