mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-02-22 22:36:34 +01:00
Fixes support for bitcoind taproot descriptor wallets (#4415)
This commit is contained in:
parent
5115d8d076
commit
99b75d166f
6 changed files with 29 additions and 27 deletions
|
@ -194,6 +194,10 @@ object RpcOpts {
|
|||
case object Bech32 extends AddressType {
|
||||
override def toString: String = "bech32"
|
||||
}
|
||||
|
||||
case object Bech32m extends AddressType {
|
||||
override def toString: String = "bech32m"
|
||||
}
|
||||
}
|
||||
|
||||
sealed trait LabelPurpose
|
||||
|
|
|
@ -96,7 +96,7 @@ case class GetWalletInfoResult(
|
|||
unconfirmed_balance: Bitcoins,
|
||||
immature_balance: Bitcoins,
|
||||
txcount: Int,
|
||||
keypoololdest: UInt32,
|
||||
keypoololdest: Option[UInt32],
|
||||
keypoolsize: Int,
|
||||
keypoolsize_hd_internal: Int,
|
||||
paytxfee: BitcoinFeeUnit,
|
||||
|
|
|
@ -3,7 +3,8 @@ package org.bitcoins.rpc.common
|
|||
import org.bitcoins.commons.jsonmodels.bitcoind.RpcOpts.AddressType
|
||||
import org.bitcoins.core.protocol.P2PKHAddress
|
||||
import org.bitcoins.crypto.ECPrivateKey
|
||||
import org.bitcoins.rpc.client.common.BitcoindRpcClient
|
||||
import org.bitcoins.rpc.client.common.{BitcoindRpcClient, BitcoindVersion}
|
||||
import org.bitcoins.rpc.config.BitcoindInstanceLocal
|
||||
import org.bitcoins.testkit.rpc.BitcoindRpcTestUtil
|
||||
import org.bitcoins.testkit.util.BitcoindRpcTest
|
||||
|
||||
|
@ -11,8 +12,12 @@ import scala.concurrent.Future
|
|||
|
||||
class MultisigRpcTest extends BitcoindRpcTest {
|
||||
|
||||
val instance: BitcoindInstanceLocal =
|
||||
BitcoindRpcTestUtil.instance(versionOpt = Some(BitcoindVersion.V21))
|
||||
|
||||
lazy val clientF: Future[BitcoindRpcClient] =
|
||||
BitcoindRpcTestUtil.startedBitcoindRpcClient(clientAccum = clientAccum)
|
||||
BitcoindRpcTestUtil.startedBitcoindRpcClient(instanceOpt = Some(instance),
|
||||
clientAccum = clientAccum)
|
||||
|
||||
behavior of "MultisigRpc"
|
||||
|
||||
|
|
|
@ -55,7 +55,8 @@ class WalletRpcTest extends BitcoindFixturesCachedPairV21 {
|
|||
// This client's wallet is encrypted
|
||||
lazy val walletClientF: Future[BitcoindRpcClient] = clientsF.flatMap { _ =>
|
||||
val walletClient =
|
||||
BitcoindRpcClient.withActorSystem(BitcoindRpcTestUtil.instance())
|
||||
BitcoindRpcClient.withActorSystem(
|
||||
BitcoindRpcTestUtil.instance(versionOpt = Some(BitcoindVersion.V21)))
|
||||
|
||||
for {
|
||||
_ <- startClient(walletClient)
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package org.bitcoins.rpc.v23
|
||||
|
||||
import org.bitcoins.commons.jsonmodels.bitcoind.RpcOpts.AddressType
|
||||
import org.bitcoins.core.protocol.P2PKHAddress
|
||||
import org.bitcoins.core.script.ScriptType
|
||||
import org.bitcoins.crypto.ECPrivateKey
|
||||
import org.bitcoins.core.protocol.Bech32mAddress
|
||||
import org.bitcoins.rpc.client.common.BitcoindVersion
|
||||
import org.bitcoins.rpc.client.v23.BitcoindV23RpcClient
|
||||
import org.bitcoins.testkit.rpc.BitcoindFixturesFundedCachedV23
|
||||
|
@ -29,24 +27,11 @@ class BitcoindV23RpcClientTest extends BitcoindFixturesFundedCachedV23 {
|
|||
}
|
||||
}
|
||||
|
||||
it should "be able to decode a reedem script" in {
|
||||
client: BitcoindV23RpcClient =>
|
||||
val ecPrivKey1 = ECPrivateKey.freshPrivateKey
|
||||
val pubKey1 = ecPrivKey1.publicKey
|
||||
for {
|
||||
address <- client.getNewAddress(addressType = AddressType.Legacy)
|
||||
multisig <-
|
||||
client
|
||||
.addMultiSigAddress(
|
||||
2,
|
||||
Vector(Left(pubKey1), Right(address.asInstanceOf[P2PKHAddress])))
|
||||
decoded <- client.decodeScript(multisig.redeemScript)
|
||||
} yield {
|
||||
assert(decoded.typeOfScript.contains(ScriptType.MULTISIG))
|
||||
// these fields are no longer returned since v23
|
||||
// assert(decoded.reqSigs.isEmpty)
|
||||
// assert(decoded.addresses.isEmpty)
|
||||
}
|
||||
it should "generate a bech32m address" in { client: BitcoindV23RpcClient =>
|
||||
for {
|
||||
address <- client.getNewAddress(addressType = AddressType.Bech32m)
|
||||
} yield {
|
||||
assert(address.isInstanceOf[Bech32mAddress])
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -455,7 +455,14 @@ trait BitcoindRpcTestUtil extends Logging {
|
|||
val startedServers = servers.map { server =>
|
||||
server.start().flatMap { res =>
|
||||
val createWalletF = for {
|
||||
_ <- res.createWallet("")
|
||||
version <- server.version
|
||||
descriptors = version match {
|
||||
case V16 | V17 | V18 | V19 | V20 |
|
||||
V21 | V22 | Experimental | Unknown =>
|
||||
false
|
||||
case V23 => true
|
||||
}
|
||||
_ <- res.createWallet("", descriptors = true)
|
||||
} yield res
|
||||
|
||||
createWalletF.recoverWith { case NonFatal(_) =>
|
||||
|
|
Loading…
Add table
Reference in a new issue