Skip to content

Commit f9c521f

Browse files
committed
feature: Psbt intro
1 parent 1a8303b commit f9c521f

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

BTC/Psbt/README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
PSBT(Partially Signed Bitcoin Transaction,部分签名比特币交易)是一种交易格式,用于在不同参与者之间安全地传输未完成的交易信息,以便完成签名过程。这种格式主要用于提高比特币交易的灵活性和多方合作的安全性,尤其是在涉及多重签名和复杂的交易结构时。
2+
3+
### PSBT的目的和应用场景
4+
5+
PSBT的设计初衷是解决比特币生态中的一个关键问题:在不共享私钥的情况下,如何在多个参与者之间安全地协作构建和签名交易。它允许每个参与者独立地添加到交易的签名或其他必需信息,而不必暴露自己的私钥给其他人。
6+
7+
主要应用场景包括:
8+
- **多重签名交易**:多个参与者需要对同一笔交易进行签名。
9+
- **冷存储和硬件钱包**:安全设备可以在不直接连接到互联网的情况下签名交易。
10+
- **复杂的交易类型**:涉及时间锁、多步骤执行等特殊条件的交易。
11+
12+
## PSBT的工作原理
13+
在PSBT(Partially Signed Bitcoin Transaction)的工作流程中,涉及到几个关键的参与者或身份,他们各自负责交易的不同阶段。这些身份通常根据他们在交易签名和构建过程中的角色来定义。以下是PSBT流程中几个主要身份的概述:
14+
15+
### 1. 交易发起者(Creator)
16+
- **角色**:开始PSBT流程的是交易发起者。他们负责构建交易的初始结构,这包括定义交易的输入和输出。
17+
- **责任**:交易发起者需要收集并添加所有必要的输入数据(如UTXOs的详细信息)以及输出信息。他们会创建一个PSBT文件,此文件还未包含任何签名。
18+
19+
### 2. 更新者(Updater)
20+
- **角色**:更新者的任务是添加或更新交易中缺失的信息,这可能包括输入和输出的附加细节。
21+
- **责任**:更新者确保PSBT包含足够的信息以便所有参与者可以验证交易。例如,他们可能需要添加redeemScript或witnessScript等信息。
22+
23+
### 3. 签名者(Signer)
24+
- **角色**:签名者是那些用自己的私钥对交易的一个或多个输入进行签名的参与者。
25+
- **责任**:每个签名者都必须独立验证他们即将签名的交易的有效性和完整性。在确认无误后,签名者将他们的签名添加到PSBT中。
26+
27+
### 4. 合并者(Combiner)
28+
- **角色**:在多签名或多步骤签名的情况下,合并者负责将来自不同签名者的多个PSBT副本合并成一个包含所有必需签名的单一PSBT。
29+
- **责任**:合并者需确保所有的签名都正确并被妥善地合并到PSBT中,没有遗漏任何有效签名。
30+
31+
### 5. 最终化者(Finalizer)
32+
- **角色**:最终化者负责处理交易的最终细节,确保所有的输入都已正确地签名,并将PSBT转换成可以广播的标准比特币交易格式。
33+
- **责任**:最终化者将完成的签名脚本插入到交易中的相应输入,并移除所有不再需要的临时数据。
34+
35+
### 6. 广播者(Broadcaster)
36+
- **角色**:一旦PSBT被最终化并转换成一个完整的交易后,广播者负责将其发送到比特币网络。
37+
- **责任**:广播者需要确保交易被网络接受,并进行监控,直到交易被确认。
38+
39+
PSBT是一个强大的工具,能够处理复杂的比特币交易,特别是在需要多方合作的情况下。它通过提供一个标准化且安全的方式来协调和合并不同参与者的输入,极大地增强了比特币交易的多样性和安全性。每个角色在PSBT的创建和完成过程中发挥着关键作用,确保交易不仅符合技术规范,同时也达到了预期的安全性标准。

0 commit comments

Comments
 (0)