1、谈谈区块链(21)-比特币之隔离见证作者简介:谈国鹏,比特宝()创始人,最早比特币支付的探索者。一直从事比特币、以太坊、hyperledger等区块链研究探索工作,现任*集团区块链研发负责人。个人微信:jtomtan微信公众号 微信公众号:ttblockchain隔离见证Segregated Witness SegWit的实现细节 SegWit的功能集合 如何欺骗老节点实现soft fork? SegWit的缺点 个人态度和前景展望实现路径 Bitcoin Core release 0.13.1 2017年11月前如果95%节点支持,则激活 扩容之争 Bitcoin Core vs Bitco
2、in Unlimited SegWit vs 简单2M or 4M扩容实现细节 新的数据结构: Witness Transaction将拥有2个id: Txid dSHA256(nVersiontxinstxoutsnLockTime) wtxid: dSHA256(nVersionmarkerflagtxinstxoutswitnessnLockTime)实现细节(2) Witness_root_hash: 计算方式和hashMerkleRoot一致 存放在coinbase交易的scriptpubkey部分 好处:不改变现有头部结构 坏处:非常丑陋的设计实现细节(3) 2种新的交易类型被发明
3、: P2WPKH pay-to-witness-public-key-hash P2WSH pay-to-witness-script-hash实现细节(4) 区块大小(blocksize): 老节点: 整个block(不包含witness部分)不超过1MB ,之前每block可装2000+个Transaction ,因为签名部分被移出,现在预计增加70%左右,可装3000-4000个Transaction。 新节点: 重新定义block size limit Block weight=base size*3 + total size Total size=base size + witnes
4、s size Block weight=4MB实现细节(5) MAX_SIGOPS 从20,000增加到80,000 Signature Operations需要检查ECDSA签名是否正确 相当耗费CPU、也耗时SegWit的功能(1) 解决了交易延展性的问题 Malleability Fixes 可以让闪电网络得以实施可以让闪电网络得以实施SegWit的功能(2) 变相扩容 有有70%左右的扩容效果左右的扩容效果SegWit的功能(3) 验证block的时间和block大小的关系从指数级增加变成了线性增加 改变了signature hashing的计算方式,更加高效SegWit的功能(4)
5、对硬件钱包支持更好 签名里可显式增加UTXO的valueSegWit的功能(5) 增加了P2SH的安全性 P2SH从使用HASH160变成使用SHA256 增加被破解的难度SegWit的功能(6) 增加了Script版本(script versioning) Scripts增加了version numberSegWit的功能(7) 鼓励减少UTXO数量 增加UTXO数量的Transaction比不增加的贵75%交易费SegWit的功能(8) 使用segwit格式的交易将更便宜 因为segwit格式的交易,base size部分更小,所以交易费用更便宜如何欺骗老节点? Anyone-Can-Sp
6、end Outputs scriptPubKey: (empty) scriptSig: OP_TRUE Non-standard Transaction(非标准交易)如何欺骗老节点?(2) P2WPKHSegWit的缺点(1) 增加了Transaction的大小 每个增加2-5%左右(作者估算,未验算)SegWit的缺点(2) 软分叉可能会引入的问题SegWit的缺点(3) 非优美的设计 如:witness_root_hash存放在了coinbase交易中SegWit的缺点(4) 方案改动过于复杂 容易产生新的bug,影响系统安全和稳定个人态度和前景展望 个人态度: 80%支持 重要意义: 解决交易延展性,支持部署闪电网络 带出比特币走出困境 前景展望: 需要95%节点支持,有很大难度 目前约有60%节点支持 作者认为最终会被成功激活完整视频 微信公众号:ttblockchain 个人微信:jtomtan 微博: 巴比特专栏:http:/ 优酷视频:搜索“谈谈区块链”