前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >比特币Taproot技术小结

比特币Taproot技术小结

原创
作者头像
davy the bot
发布2024-04-08 17:16:00
4880
发布2024-04-08 17:16:00

什么是taproot技术?

Taproot基于两个基础特性

1 : 基于隔离见证seg wit 把新协议的信息放到隔离见证中

比特币隔离见证
比特币隔离见证

2 : P2SH可以使得复杂脚本由哈希值取代,这样使得交易代码变短,降低交易字节数,另外将构建脚本的负担转移至接收方,而非发送方,同时只有在这笔比特币需要被接收方发送出去的时候,才会对其公钥进行披露,在一定程度上也增加了隐私性。

比特币地址就是一个长长的字符串,但是比特币地址是分不同类型的,常见的有两类:Pay-to-PubKeyHash (P2PKH) 和 Pay-to-ScriptHash (P2SH) 。

P2PKH 是最为常见的比特币地址类型,英文全称的意思是”向公钥哈希支付“,这种类型的地址是以1打头,例如,1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 。

P2SH 是一种比较新的地址类型。英文全称的意思是”向脚本哈希支付“,这种类型的地址是以3打头的,例如,3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy 。

P2SH 中的资金要想转出,转出条件就可以很自由的进行设置。具体来讲,转出条件就是要写到一个赎回脚本(redeem script)中。 过程是,接受者来构建脚本,然后计算出脚本的hash发给发送者, 发送者只在交易中带上这个script hash即可,不需要知道脚本是什么,等到接受者要花费转入的utxo时,再揭露和满足解锁脚本.

当然这个机制下脚本不当就更容易造成比特币锁死。

理解: 设置转出条件的人从发送者变成接收者。

如设置多签的脚本格式为

代码语言:shell
复制
M <Public Key 1> <Public Key 2> ... <Public Key N> N CHECKMULTISIG

TapRoot的三个核心方案

BIP340 Schnorr签名

引入了 Schnorr 签名

Schnorr 签名的主要好处是多重签名交易作为正常的单签名交易出现在链上。使用 Schnorr 签名,多个签名者可以生成一个联合公钥,然后用一个签名联合签名,而不是在区块链上分别发布每个公钥和每个签名。这是显着的可扩展性和隐私增强。这意味着 Schnorr 签名可以显着节省空间并节省验证时间,并且随着传统多重签名交易的签名者数量的增加,相对优势也会变得更大。

需要2轮交互, 第一轮先协议一个公共公钥

BIP341 引入对Taproot数据结构的支持 (输出在SegWit版本1)

称为 Taproot的数据结构,实现了默克尔化抽象语法树(MAST)来优化区块链上的交易数据存储。

MAST的结构 : 暴露一个分支以及对应的merkle路径即可解锁脚本, 不需要暴露其他分支

taproot结构:,

正常的schnorr多签解锁可以和MAST并列存在, 二者共同计算出一个合成公钥,正常使用多签解锁时,只需要提供一个签名,a.不用暴露原始的多签公钥, b.不用暴露有merkle树的存在即可验证。

无法使用正常签名流程时,才需要使用merkle树的路径来解锁使用。

这样可以实现巨大的隐私性,也是taproot设计比起MAST的优势。

补充理解: 之所以可以实现上图中最顶端的合成公钥,使得两个链路都可以被同一个taproot秘钥验证, 也是利用了schnorr的线性特性(可以理解成 正常签名的多签公钥和merkle树的公钥又聚合成1个,提供虽然是其中一方的签名,但聚合签名可以验证), 也是为什么taproot结构一定要和schnorr签名绑定。

BIP342 可以处理taproot的脚本升级

又叫做Tapscript, 主要是BIP-341只是提出了脚本结构的改进,342主要同步提供了操作码的增加,来支持341的完整功能。

具体来说,是支持 Schnorr signatures, batch validation, 和 signature hash , 可以在花费脚本中直接使用

采用比特币的脚本编码语言来适应 Schnorr 签名和 Taproot 实现。 它利用 Schnorr 签名的聚合签名功能,优化交易见证内的空间。

Taproot通过结合Schnorr来使得P2SH 和常见的P2PKH,引入了更多的操作码

在技术上可以使得它们在最终看起来是一个常规的交易,即在最后的n/m交易的时候,表现如同普通的P2PKH交易一样,而不用去披露底层的MAST,这样确保了其中复杂脚本合约是隐藏的。

参考

P2SH

https://happypeter.github.io/binfo/p2sh

taproot:

https://blog.bitmex.com/the-schnorr-signature-taproot-softfork-proposal/ 文中图的主要来源

https://www.odaily.news/post/5172983

https://medium.com/@winkryptocom/读懂比特币协议重要里程碑-schnorr-签名和-taproot-软分叉升级-db76d123254a

https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki bip 340,341,342

https://www.youtube.com/watch?v=fDJRy6K_3yo&ab_channel=BitcoinOptech

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是taproot技术?
  • Taproot基于两个基础特性
  • TapRoot的三个核心方案
    • BIP340 Schnorr签名
      • BIP341 引入对Taproot数据结构的支持 (输出在SegWit版本1)
        • BIP342 可以处理taproot的脚本升级
        • 参考
        相关产品与服务
        数据保险箱
        数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档