BlockchainCommons / Community

Discussions & shared documents for stakeholders in Blockchain Commons
Other
68 stars 10 forks source link

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

Open ChristopherA opened 2 years ago

ChristopherA commented 2 years ago

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:

(This issue follows community discussion at https://github.com/BlockchainCommons/Community/discussions/76#discussioncomment-2410593 with @christophera @kallewoof @deymow @shoryak @shikharvashistha @Eunoia172 @wip-abramson @ahmadi-08)

wip-abramson commented 2 years ago

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 - https://github.com/bitcoin/bitcoin/pull/24058.

wip-abramson commented 2 years ago

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

ChristopherA commented 2 years ago

@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 commented 2 years ago

Implementation in scala I created: https://github.com/bitcoin-s/bitcoin-s/pull/3823

ChristopherA commented 2 years ago

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 commented 2 years ago

If anyone could review this P.R. which is a WIP of bip322 in the buidl-python library - https://github.com/buidl-bitcoin/buidl-python/pull/140

That would be much appreciated!

ChristopherA commented 2 years ago

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 commented 1 year ago

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

ZenulAbidin commented 1 year ago

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.