-
-
Notifications
You must be signed in to change notification settings - Fork 10
Description
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
- This issue
- Invite team
- Summer interns
- The larger Blockchain Commons community
- Larger open development community
- Via [Twitter](https://twitter.com/ChristopherA/status/1527738739329339393
- Get more RTS
- Initial letter to Bitcoin-Dev community
- Identify other key interested parties
- Via [Twitter](https://twitter.com/ChristopherA/status/1527738739329339393
- Private channel on
Signal
(contact @ChristopherA for invite)
- Schedule Intro call & agenda
- Team intros
- Review spec & prior efforts
- 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?)
- Proof of Concept or 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
- Post-mortem
(This issue follows community discussion at #76 (comment) with @ChristopherA @kallewoof @deymow @shoryak @shikharvashistha @Eunoia172 @wip-abramson @ahmadi-08)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status