segwit隔离见证详解
- 2025-09-26 12:17:00
- admin
- 原创 248
一、segwit隔离见证详解
1、隔离见证规范:https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
2、隔离见证签名:https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
3、隔离见证优势:增加交易快大小,提升交易TPS,减少交易费用,修复交易延展性;
4、隔离见证优势:bech32编码地址,地址大小写不敏感,二维码使用字母数字编码;
5、p2wpkh是p2pkh的隔离见证版本,地址以bc1q开头,地址长度42个字符;
6、p2wsh是p2sh的隔离见证版本,地址以bc1q开头,地址长度62个字符;
7、p2wpkh使用witness字段花费比特币,签名脚本为空;
8、p2wsh使用witness字段花费比特币,签名脚本为空;
9、p2wsh的witness包含一个witness脚本,就是p2sh的赎回脚本;
隔离见证实现:
1、txid不使用witness,wtxid使用witness,witness包括marker、flag、witness;
2、wtxid存放在coinbase交易,用于额外校验,防止修改witness数据;
3、weight units用于隔离见证交易计费,每个块最多4000*1000wu;
4、virtual bytes用于比较不同交易的费用,等于weight units/4;
p2sh-p2wpkh:
1、p2sh-p2wpkh使用p2sh包装p2wpkh,用于在旧钱包支持p2wpkh;
2、p2sh-p2wpkh签名脚本是p2wpkh公钥脚本,witness提供签名内容;
3、交易费用:p2wpkh < p2sh-p2wpkh < p2sh
p2sh-p2wsh:
1、p2sh-p2wsh使用p2sh包装p2wsh,用于在旧钱包支持p2wsh;
2、p2sh-p2wsh签名脚本是p2wsh公钥脚本,witness提供签名内容;
3、交易费用:p2wsh < p2sh-p2wsh < p2sh
p2tr:
1、p2tr单个输出支持多种锁定方式,地址以bc1p开头,地址长度62个字符;
2、p2tr使用witness字段花费比特币,签名脚本为空;
3、锁定方式:tweaked公钥,多个自定义脚本,多个脚本构成一棵默克尔树;
4、锁定方式:tweaked公钥=P+tweak*G,P是公钥,tweak=taghash(公钥 || 脚本默克尔根);
5、output花费:key path spend,使用tweaked私钥签名;
6、output花费:script path spend,任意一个自定义脚本;
7、脚本优势:支持多种锁定方式,没有这种需求,还是建议使用p2wpkh和p2wsh;
8、脚本劣势:暴漏了tweaked公钥,具有p2pk一样的缺点;
09、扩展字段:leaf version脚本版本,当前是0xC0;
10、扩展字段:extension flag是否包含签名,包含签名时需要签名脚本信息;
11、扩展字段:annex present是否包含附加数据,当前暂未使用,默认是0;