币印潘志彪:Taproot,解决比特币隐私问题丨2020全球区块链算力大会
8月22日-23日,“共享新机遇——2020全球区块链算力大会暨新基建矿业峰会”在成都举行。本次大会由成都市新经济委、成都市科技局及成都市成华区人民政府指导,由成都市成华区新经济和科技局 、成都市成华区投促局、巴比特、链节点、印比特主办。在大会上,币印创始人潘志彪带来题为《Taproot - ⽐特币隐私之路》的主题分享。
Taproot是什么?如何解决比特币隐私问题?潘志彪为我们介绍了技术层面解决方案。
以下为演讲全文:
今天为从隐私问题角度为大家介绍比特币即将要做的Taproot。以下图片就是Taproot的意思,上面只能看到一个小叶,下面可能包含了各种复杂性。
解决比特币的隐私性问题,或者数字货币的隐私性问题有三大方向: 第一,币是怎么来的,从A转给B,B再转给C,这个流向是公开暴露的,所以我们要解决币是怎么来的问题; 第二,币是怎么花的,往外转的时候去了哪个地方,目前有很多专业的数据网站通过流量分析、流向分析来解决隐私性问题; 第三,币有多少数量,你给别人转币的时候,别人都是公开的,通过简单的数学推理可以完成漂亮的数学运算。
Taproot
Taproot是著名的Gregory Maxwell在2018年1月份提出的,在今年的时候他把这个代码发出来了。开发者也在进行一些大胆的讨论,很快可以进MAST分支上。MAST,Johnson Lau于2016年4月由BIP114提出的。比特币的脚本演进基本有三个阶段:
第一是P2PKH;
第二是P2SH,可以做一些多重签名,还有一些复杂的脚本也可以往里面放;
第三是Taproot/MAST,Taproot在某种程度上可以取代MAST,或者MAST的应用可以转成Taproot来做。MAST的脚本输出非常简单,只要有一个签名就可以通过,通过简单的OP码来完成,它其实是语法树的结构,里边有一个分支,里边有一个值。展开的MAST语法树上面有一个树根,然后往下拆分。
MAST具有几个特性:它支持非常复杂、大型的脚本;可以轻松支持10层以上的二叉树结构,突破单个脚本520Bytes字节限制,它不需要构造平衡。
Schnorr签名
Schnorr签名是由德国数学家、密码学家Claus Schnorr提出的,并于1990年申请了专利。这个专利2008年2月份才失效,基本在全方面(性能、安全、体积、扩展性等)碾压ECDSA,因为ECDSA并不是那么简洁。Schnorr Sig可以与ECDSA使用同一个椭圆曲线。Schnorr相比ECDSA更安全,⽬前Schnorr签名有安全证明,⽽ECDSA⽬前并没有类似的证明。Schnorr无延展性困扰,ECDSA签名是可延展性的。Schnorr是线性的,因为它的签名是线性的,所以公钥、私钥层级可以直接叠加,可以在这上面做出以前做不出来的新东西。Taproot一个输出可以有两个执行方式,一个是签名模式,所有的都签名,还有是可以走一个脚本,不需要暴露出整个脚本。N个参与方,把它叠加在一起就形成一个新的值,这个值叫做主公钥,主公钥里边再叠加一个主公钥和脚本的哈希值,主公钥的哈希值是所有参与方都知道的。在交易的输出里边就直接填入Segwit的格式,填一个版本号,把主公钥填进去。因为Segwit激活了,后边做分叉是很轻松的,保留一个字节可以支持很多个,为后面就铺平了道路。
我们做一个Taproot实例说明。
方式一、签名模式花费,有两个参与方A、B,其组公钥是C。定义之后B签名就可以把B花掉,然后形成一个新的P,把C的哈希值乘以椭圆曲线,所以P是这么来的,如果要分解就是三个方A、B、D。所有人签名,就会得到每一把对应的签名。
第二是脚本模式,脚本模式因为有一方拒绝签名,所以没有办法拿到公钥P对应的签名,就要走公钥C脚本S,以及能把这个脚本S验证通过的数据,这样就可以把这个B花掉。Taproot只有在非合作时才会暴露并执行脚本。
Taproot通常是多方参与的,一方也可以,但没有太大意义。在条件执行里很多时候基本上是按照设定走的,所以这个脚本里面的细节是完全不需要暴露的,这就是正常的签名。有一些很典型的应用场景,里面有具体的执行模式,但看不出来在调脚本。
Taproot其实是很灵活的,将来会有很多新的应用,还可以解决比特币金额的问题。目前MimbleWimble最简单,但是现在软分叉不好做,我们只能通过扩展区块来实现,这样相对简单。目前MimbleWimble在莱特社区上开始推荐。
今天分享就到这里,谢谢大家。