segwit隔离见证详解

2025-09-26 12:17:00
admin
原创 248
摘要:segwit隔离见证详解

一、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;

发表评论
评论通过审核之后才会显示。