ACINQ / bitcoin-kmp

Kotlin Multiplatform Bitcoin Library
Apache License 2.0
68 stars 15 forks source link

Simple Musig2 implementation #104

Closed sstone closed 10 months ago

sstone commented 10 months ago

This is a simple Musig2/BIP327 (https://github.com/bitcoin/bips/blob/master/bip-0327.mediawiki) that uses primitives provided by our secp256k1 wrapper. It is primarily meant to be used for testing and prototyping, we'll update secp256k1-kmp to use secp256k1-zkp or upgrade secp256k1 when it supports musig2 directly.

Reference test vectors have also been imported.

sstone commented 10 months ago

One of the limitations of using nullable types for some of the musig2 methods is that is it understood by kotlin only. Scala/Java users will need to explicitly check against null or convert to Option. This will be changed once we add support for native musig2 in secp256k1-kmp (see https://github.com/bitcoin-core/secp256k1/issues/1452)