Add taproot privacy optimisations in policy compiler
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 55/100
Direção de pesquisa
Rastreie o ponto de entrada bdk-cli compile --type tr e inspecione a chamada atual de compile e o wrapping manual de uma única leaf. Compare esse caminho com a saída de compile_tr do rust-miniscript para os exemplos disjuntivo e de threshold; considera-se concluído quando as políticas taproot usam leaves separadas e a árvore resultante recebe a otimização de Huffman pretendida.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Describe the enhancement
bdk-cli compile --type tr "$POL" currently only calls compile and manually wraps the result into a single taproot leaf, instead of using compile_tr from rust-miniscript that splits disjunctions into separate leaves and Huffman-optimises the tree. Using compile_tr would be a good compromise, though compile_tr_private_experimental exists and goes one step further in privacy optimisation.
Use case
When compiling a disjunctive policy to a taproot descriptor, each spending condition should ideally be its own leaf so that only the used path is revealed on-chain. Currently all conditions are bundled into a single leaf, missing the privacy benefits of taproot's script tree.
Additional context
The following shows the output of all three rust-miniscript functions for reference:
Example 1: or(pk(A),pk(B))
compile:
or_b(pk(A),s:pk(B))
compile_tr:
internal key : B
tap tree leaves (1 total):
depth=0 script=pk(A)
compile_tr_private_experimental:
internal key : B
tap tree leaves (1 total):
depth=0 script=pk(A)
Example 2: thresh(1,pk(A),pk(B),pk(C))
compile:
multi_a(1,A,B,C)
compile_tr:
internal key : C
tap tree leaves (2 total):
depth=1 script=pk(B)
depth=1 script=pk(A)
compile_tr_private_experimental:
internal key : C
tap tree leaves (2 total):
depth=1 script=pk(B)
depth=1 script=pk(A)
Example 3: thresh(2,pk(A),pk(B),pk(C))
compile:
multi_a(2,A,B,C)
compile_tr:
internal key : UNSPENDABLE
tap tree leaves (1 total):
depth=0 script=multi_a(2,A,B,C)
compile_tr_private_experimental:
internal key : UNSPENDABLE
tap tree leaves (3 total):
depth=1 script=and_v(v:pk(A),pk(B))
depth=2 script=and_v(v:pk(B),pk(C))
depth=2 script=and_v(v:pk(A),pk(C))
- Linguagem predominante
- Rust
- Estrelas
- 143
- Forks
- 103
- Merge médio
- 2d 8h
- PRs com merge (30d)
- 4
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de bitcoindevkit/bdk-cli
-
key generate subcommand silently coerces any word count other than 12 to 24 wordsTalvez já em andamento @Olorunshogo assumiu há 1 dia. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
bitcoindevkit/bdk-cli#362 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
bitcoindevkit/bdk-cli#360 ·
Mantenedores costumam responder em até 1 dia
-
Expose remaining SignOptions fields in the wallet sign commandTalvez já em andamento @emma31-dev assumiu há 4 dias. Abertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
bitcoindevkit/bdk-cli#358 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
wallet sign command returns generic error for decoding failuresTalvez já em andamento @emma31-dev assumiu há 4 dias. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
bitcoindevkit/bdk-cli#357 ·
Mantenedores costumam responder em até 1 dia
-
Remove "wallet" field from `WalletConfigInner`Talvez já em andamento @Jennycj assumiu há 13 dias. Abertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
bitcoindevkit/bdk-cli#332 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de bitcoindevkit/bdk-cli
Issues semelhantes
-
bug easy good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
lacs-project/sysknife#659 ·
Mantenedores costumam responder em até 2 dias
-
Document multi-value claims with rowBoundaries operator:in (and their per-record application)Abertadocumentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
registrystack/registry-stack#2431 ·
Mantenedores costumam responder em até 1 dia
-
contribution
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
farion1231/cc-switch#8863 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
dioxus-desktop on macOS: Finder file drops never fire `ondrop` — `dragenter` is not cancelledAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
DioxusLabs/dioxus#6006 ·
Mantenedores costumam responder em até 1 dia