@@ -64,15 +64,105 @@ SegWit引入了两种主要的地址类型:
64
64
65
65
自2017年激活以来,SegWit的采用率稳步增长。截至2023年,超过80%的比特币交易使用了SegWit,这显著提高了网络的整体效率和容量。
66
66
67
- ## SegWit与闪电网络的关系
67
+ ### 采用率数据
68
68
69
- SegWit解决了交易延展性问题,这是实现闪电网络等二层解决方案的关键前提。闪电网络依赖于能够创建依赖于未确认交易的交易链,而没有SegWit,这将是不可靠的。
69
+ | 年份 | 采用率 |
70
+ | ------| --------|
71
+ | 2017 | ~ 10% |
72
+ | 2018 | ~ 30% |
73
+ | 2019 | ~ 50% |
74
+ | 2020 | ~ 65% |
75
+ | 2021 | ~ 75% |
76
+ | 2022 | ~ 80% |
77
+ | 2023 | ~ 85% |
70
78
71
- ### 闪电网络如何依赖SegWit
79
+ ### 按地址类型分布
72
80
73
- 1 . ** 交易延展性解决 ** :闪电网络需要创建相互依赖的交易链,如果交易ID可以被修改(延展性问题),整个交易链将失效。SegWit通过将签名数据分离,确保交易ID不受签名数据影响,从而解决了这个问题。
81
+ 当前比特币网络中的地址类型分布大致如下:
74
82
75
- 2 . ** 通道资金交易** :闪电网络通道通常使用2-of-2多签名SegWit地址(P2WSH)来锁定资金。这种设计既提供了安全性,又享受了SegWit的费用优势。
83
+ - 原生SegWit地址 (P2WPKH/P2WSH): ~ 45%
84
+ - 兼容SegWit地址 (P2SH-P2WPKH): ~ 15%
85
+ - Taproot地址 (P2TR): ~ 25%
86
+ - 传统地址 (P2PKH/P2SH): ~ 15%
87
+
88
+ 这一趋势表明,比特币生态系统正在逐步迁移到更高效的地址类型,特别是随着Taproot的激活,更多用户开始采用这一基于SegWit v1的新技术。
89
+
90
+ ### 性能数据对比
91
+
92
+ 不同地址类型的交易大小和费用对比(假设费率为10聪/字节):
93
+
94
+ | 交易类型 | 传统地址 (P2PKH) | 兼容SegWit (P2SH-P2WPKH) | 原生SegWit (P2WPKH) | Taproot (P2TR) |
95
+ | ---------| -----------------| ------------------------| -------------------| ----------------|
96
+ | 1输入1输出 | 192字节 / 1,920聪 | 132字节 / 1,320聪 | 109字节 / 1,090聪 | 98字节 / 980聪 |
97
+ | 2输入2输出 | 374字节 / 3,740聪 | 254字节 / 2,540聪 | 208字节 / 2,080聪 | 186字节 / 1,860聪 |
98
+
99
+ 这些数据显示,与传统地址相比:
100
+ - 原生SegWit地址可节省约45%的交易费用
101
+ - 兼容SegWit地址可节省约30%的交易费用
102
+ - Taproot地址可节省约50%的交易费用
103
+
104
+ ### 区块容量提升
105
+
106
+ - 传统区块:最大1MB,约容纳2,000笔交易
107
+ - SegWit区块:最大可达4MB,约容纳4,000-8,000笔交易
108
+
109
+ 这种容量提升使得比特币网络的吞吐量从传统的3-7 TPS (每秒交易数) 提高到了7-14 TPS。
110
+
111
+ ## SegWit的技术实现细节
112
+
113
+ ### 交易序列化格式
114
+
115
+ SegWit引入了一种新的交易序列化格式,这是理解其工作原理的关键。下面比较传统交易和SegWit交易的序列化格式:
116
+
117
+ #### 传统交易格式
118
+ ```
119
+ [4字节] 版本
120
+ [变长] 输入数量
121
+ [输入列表] 每个输入包含:
122
+ [32字节] 上一笔交易ID
123
+ [4字节] 输出索引
124
+ [变长] 脚本长度
125
+ [变长] 脚本(包含签名数据)
126
+ [4字节] 序列号
127
+ [变长] 输出数量
128
+ [输出列表] 每个输出包含:
129
+ [8字节] 金额
130
+ [变长] 脚本长度
131
+ [变长] 脚本
132
+ [4字节] 锁定时间
133
+ ```
134
+
135
+ #### SegWit交易格式
136
+ ```
137
+ [4字节] 版本
138
+ [1字节] 标记 (0x00)
139
+ [1字节] 标志 (0x01)
140
+ [变长] 输入数量
141
+ [输入列表] 每个输入包含:
142
+ [32字节] 上一笔交易ID
143
+ [4字节] 输出索引
144
+ [变长] 脚本长度
145
+ [变长] 脚本(不包含签名数据)
146
+ [4字节] 序列号
147
+ [变长] 输出数量
148
+ [输出列表] 每个输出包含:
149
+ [8字节] 金额
150
+ [变长] 脚本长度
151
+ [变长] 脚本
152
+ [见证数据] 每个输入的见证数据:
153
+ [变长] 见证数据项数量
154
+ [变长] 见证数据(签名、公钥等)
155
+ [4字节] 锁定时间
156
+ ```
157
+
158
+ 关键区别:
159
+ 1 . SegWit交易添加了标记(0x00)和标志(0x01)字节
160
+ 2 . 签名数据从输入脚本移到了交易末尾的见证数据部分
161
+ 3 . 交易ID计算不包括见证数据,解决了交易延展性问题
162
+
163
+ ### 区块权重计算
164
+
165
+ SegWit引入了"区块权重
76
166
77
167
3 . ** HTLC实现** :闪电网络中的哈希时间锁定合约(HTLC)依赖于SegWit提供的脚本版本控制功能,使得复杂的条件支付成为可能。
78
168
0 commit comments