Skip to content

Commit 7f4352f

Browse files
committed
✨feature: PSBT structure
1 parent f9c521f commit 7f4352f

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

BTC/Psbt/encode.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
PSBT(Partially Signed Bitcoin Transaction)的编码和解码是一个关键环节,它允许各种工具和应用以标准格式交换交易信息。PSBT格式设计为可扩展和兼容未来功能,同时确保可以在不同设备和平台间安全地传输和处理交易数据。
2+
3+
### PSBT格式
4+
5+
PSBT的基本格式是一个序列化的数据结构,包含所有必要的信息,使多个参与者能够独立进行交易签名和验证。这个格式遵循一定的编码规则,通常以Base64或十六进制形式进行传输。
6+
7+
PSBT数据主要分为以下几部分:
8+
9+
1. **全局数据**:包括事务的未签名版本,以及可能的全局元数据,例如原始交易的版本和锁定时间。
10+
2. **输入数据**:每个输入独立的数据,包括UTXO信息、签名脚本、见证脚本、签名和其他相关信息。
11+
3. **输出数据**:每个输出独立的数据,如赎回脚本和其他可能的输出信息。
12+
13+
### 编码过程
14+
15+
PSBT的编码过程包括将交易的各个部分转换成可序列化的格式,然后通常使用Base64进行编码以便于传输。具体步骤如下:
16+
17+
1. **创建基础交易**:首先,创建一个标准的Bitcoin交易,指定所需的输入和输出。
18+
2. **填充PSBT结构**:为每个输入和输出填充必要的信息,如UTXO详情、赎回路径和必要的签名数据。
19+
3. **序列化数据**:将所有信息序列化为连续的字节流。这包括使用键值对编码各个部分,其中键和值有特定的格式。
20+
4. **Base64编码**:最后,将序列化的数据编码为Base64字符串,便于在网络上或通过其他方式安全传输。
21+
22+
### 解码过程
23+
24+
解码PSBT是编码过程的逆过程,主要步骤包括:
25+
26+
1. **Base64解码**:首先将接收到的Base64字符串解码回原始的字节流。
27+
2. **反序列化数据**:解析字节流,根据PSBT的键值对结构恢复出每个部分的数据。
28+
3. **重建交易信息**:使用解码的数据重建完整的交易视图,包括所有输入和输出的详细信息。
29+
4. **验证和签名**:在交易数据完全恢复后,参与者可以验证交易的有效性,并在必要时添加自己的签名。

0 commit comments

Comments
 (0)