bitcoindevkit / bitcoindevkit/bdk-cli

Improve error message / accept descriptor key expressions in descriptor command

Đang mở
#303 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
enhancement
Ngôn ngữ chính
Rust
Star
141
Fork
99
Merge trung bình
6 ngày 14 phút
Pull request đã merge (30 ngày)
1

Mô tả

**Describe the enhancement**

`bdk-cli key derive` returns a descriptor key expression (e.g. `[fingerprint/path]xpub.../*`), while `bdk-cli descriptor` expects a raw `xpub`/`xprv`. Passing the output of `key derive` directly to `descriptor` results in:

```text
BIP32 error: base58 encoding error
```

The error doesn't explain that the input is a descriptor key expression rather than a raw extended key.

It would be helpful if `descriptor` either:-

* detected descriptor key expressions and emitted a more descriptive error or
* accepted descriptor key expressions directly.
---
**Use case**

A natural workflow is:

```text
key restore

key derive

descriptor
```

Since `key derive` produces a key intended for descriptors, it's reasonable to expect its output to be consumable by `descriptor`.

Instead, users encounter a low-level Base58 parsing error without any indication that the command expects a different representation.

---

**Additional context**

Reproducer:

```bash
bdk-cli key derive --xprv "tprv..." --derivation_path "m/84h/1h/0h"
```

Output:

```text
[bd2eb472/84'/1'/0']tprv.../*
```

Then:

```bash
bdk-cli descriptor --type wpkh "[bd2eb472/84'/1'/0']tprv.../*"
```

produces:

```text
BIP32 error: base58 encoding error
```

The same descriptor key expression works correctly when wrapped in a descriptor and passed to:

```bash
bdk-cli wallet config --ext-descriptor "wpkh([bd2eb472/84'/1'/0']tprv.../*)"
```

which suggests the underlying parsing is already supported in that context.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Trước tiên, hãy chạy reproducer đã được ghi lại cho `key derive` và `descriptor`, sau đó lần theo các điểm vào `bdk-cli key derive`, `descriptor` và `wallet config` để so sánh cách các đầu vào của chúng được phân tích. Công việc được coi là hoàn tất khi các biểu thức khóa của descriptor либо được `descriptor` chấp nhận trực tiếp, либо bị từ chối kèm giải thích rõ ràng về biểu diễn được mong đợi, với các bài kiểm thử lệnh bao phủ hành vi đã chọn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
rust
Lĩnh vực
cli
Loại issue
Tính năng
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.