Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Output descriptors: wpkh fragment support #191

Merged
merged 32 commits into from
May 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
3d67bf2
added factory method FromPublicKeys for creating multiscript payment
sekulicd May 20, 2020
cc3bf1f
fix merge conflicts
sekulicd May 20, 2020
46662ff
Merge remote-tracking branch 'upstream/master'
sekulicd May 21, 2020
4c8baee
Merge remote-tracking branch 'upstream/master'
sekulicd May 27, 2020
c46b796
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 1, 2020
c7665a1
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 1, 2020
50ed1cc
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 3, 2020
a4c66c3
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 3, 2020
33e70ef
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 3, 2020
84f5e8e
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 4, 2020
eb921b6
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 8, 2020
3a8583f
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 9, 2020
b8c87cc
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 10, 2020
1efdee4
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 12, 2020
97e95fc
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 12, 2020
fe6bffd
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 12, 2020
0798fd1
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 16, 2020
b69eb30
merge with master
sekulicd Jun 26, 2020
b13d220
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 30, 2020
831f1ac
Merge remote-tracking branch 'upstream/master'
sekulicd Jul 20, 2020
5f3c1d3
Merge remote-tracking branch 'upstream/master'
sekulicd Jul 22, 2020
9b78b6b
Merge remote-tracking branch 'upstream/master'
sekulicd Aug 27, 2020
4cbd8fb
Merge remote-tracking branch 'upstream/master'
sekulicd Nov 24, 2020
78a1cbb
Merge remote-tracking branch 'upstream/master'
sekulicd Mar 30, 2021
6e453bb
Merge remote-tracking branch 'upstream/master'
sekulicd May 6, 2021
ed46ed5
Merge remote-tracking branch 'upstream/master'
sekulicd Jun 15, 2021
85762c0
Merge remote-tracking branch 'upstream/master'
sekulicd Sep 13, 2021
3f397b9
Merge remote-tracking branch 'upstream/master'
sekulicd Oct 22, 2021
d22a94f
Merge remote-tracking branch 'upstream/master'
sekulicd Nov 22, 2021
d0343d3
Merge remote-tracking branch 'upstream/master'
sekulicd Nov 29, 2021
903b9a7
Merge remote-tracking branch 'upstream/master'
sekulicd Feb 15, 2022
f606504
wpkh wallet descriptor
sekulicd May 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions descriptor/descriptor.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package descriptor

// Wallet is interface to be implemented by various descriptor wallets
type Wallet interface {
// Type returns type of descriptor wallet (e.g. wpkh, wsh etc.)
Type() string
// IsRange returns true if wallet description is of type range which means
//that key expression provides master key and requires more scripts to be generated
IsRange() bool
// Script generates new script, or range of scripts depending on wallet description
//it returns ScriptResponse which holds script and its derivation path in case wallet descriptor is range
//if it isn't derivation path will be nil
//wits ScriptOpts pkg user can specify how many scripts should be generated in case of
//range wallet descriptor, it also can specify exact index
Script(opts *ScriptOpts) ([]ScriptResponse, error)
}

// ScriptResponse defines response for Script func
type ScriptResponse struct {
DerivationPath []uint32
Script []byte
}

// ScriptOpts defines options for range type of descriptor wallet
type ScriptOpts struct {
index *uint32
numOfScripts *int
}

// WithIndex defines exact child index for which script should be generated for
//range wallet descriptor
func WithIndex(index uint32) *ScriptOpts {
return &ScriptOpts{
index: &index,
}
}

// WithRange defines how many scripts should be generated for range wallet descriptor
func WithRange(numOfScrips int) *ScriptOpts {
return &ScriptOpts{
numOfScripts: &numOfScrips,
}
}
Loading