You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our current implementation of the .extend() method carries over the wildcard choice made initially by the DescriptorSecretKey type. This means that if the DescriptorSecretKey was created without a wildcard, there is no way to extend it with a wildcard.
Example:
val rootDescriptorSecretKey =DescriptorSecretKey.fromString(
"tprv8ghw3FWfWTeLCEXcr8f8Q8Lz4QPCELYv3jhBXjAm7XagA6R5hreeWLTJeLBfMj7Ni6Q3PdV1o8NbvNBHE59W97EkRJSU4JkvTQjaNUmQubE"
)
val keysAtNewPath = rootDescriptorSecretKey.extend(DerivationPath("m/1212"))
val descriptorTest1 =Descriptor(
descriptor ="wpkh(${keysAtNewPath.asString()})",
network =Network.TESTNET
)
println("Issue #324 descriptor is ${descriptorTest1.asStringPrivate()}")
// Issue #324 descriptor is wpkh(tprv8ghw3FWfWTeLCEXcr8f8Q8Lz4QPCELYv3jhBXjAm7XagA6R5hreeWLTJeLBfMj7Ni6Q3PdV1o8NbvNBHE59W97EkRJSU4JkvTQjaNUmQubE/1212)#8qetj2j9
We cannot apply the wildcard to the DerivationPath type, and so the only way to have a wilcard for this path is to create the root key with a wild card in the first place:
val rootDescriptorSecretKey =DescriptorSecretKey.fromString(
"tprv8ghw3FWfWTeLCEXcr8f8Q8Lz4QPCELYv3jhBXjAm7XagA6R5hreeWLTJeLBfMj7Ni6Q3PdV1o8NbvNBHE59W97EkRJSU4JkvTQjaNUmQubE/*"
)
val keysAtNewPath = rootDescriptorSecretKey.extend(DerivationPath("m/1212"))
val descriptorTest1 =Descriptor(
descriptor ="wpkh(${keysAtNewPath.asString()})",
network =Network.TESTNET
)
println("Issue #324 descriptor is ${descriptorTest1.asStringPrivate()}")
// Issue #324 descriptor is wpkh(tprv8ghw3FWfWTeLCEXcr8f8Q8Lz4QPCELYv3jhBXjAm7XagA6R5hreeWLTJeLBfMj7Ni6Q3PdV1o8NbvNBHE59W97EkRJSU4JkvTQjaNUmQubE/1212/*)#lgncmkah
This little quirk of the API comes from the fact that in the FFI we extend the DescriptorSecretKey "directly", whereas the .extend() method in rust-bitcoin belongs to the DerivationPath type. This little bug (not really a bug but just a weird behaviour?) doesn't have an easy answer, because it might involve reshaping our API and the way we extend keys with custom paths.
Opening this issue for discussion.
The text was updated successfully, but these errors were encountered:
Our current implementation of the
.extend()
method carries over the wildcard choice made initially by theDescriptorSecretKey
type. This means that if the DescriptorSecretKey was created without a wildcard, there is no way to extend it with a wildcard.Example:
We cannot apply the wildcard to the
DerivationPath
type, and so the only way to have a wilcard for this path is to create the root key with a wild card in the first place:This little quirk of the API comes from the fact that in the FFI we extend the DescriptorSecretKey "directly", whereas the
.extend()
method in rust-bitcoin belongs to theDerivationPath
type. This little bug (not really a bug but just a weird behaviour?) doesn't have an easy answer, because it might involve reshaping our API and the way we extend keys with custom paths.Opening this issue for discussion.
The text was updated successfully, but these errors were encountered: