基于 Taproot 的隐私保护,BTC 的窘境得以解决

NBTC.World

    
    概述
    

    隐私、可扩展性和安全性是当下的主要问题。尽管比特币是世界上最流行的加密货币,但它仍然需要解决这些问题。Taproot 也应运而生。Taproot 由BIP340, BIP341, BIP342组成,分别包含了Schnorr签名,MAST和Tapscript。这次升级是比特币网络迄今为止最大的一次升级,预期将会深刻改变当前比特币发展所面临的一些窘境。
    
    

原文 | Jianman
    01 比特币网络当前的隐私问题?
    在比特币网络中,个人的交易记录或是商家的现金流可以被任何人追踪到。进一步来说,对于比特币网络常见的多重签名交易类型,用于合作完成一笔交易,但是在现行的比特网络中,当交易输出满足执行解锁条件时,它就会显示整个脚本以及它所包含的所有数据,网络参与者可以通过使用脚本的初始哈希值,在区块链上轻松审计。这些问题的出现是因为比特币的设计本身没有考虑到这一层次的隐私保护,而隐私保护是区块链现在亟待解决的问题。
    02 Schnorr 聚合签名? 保护多方的参与?
    #作为比特币网络的签名算法#
    ECDSA的全称是椭圆曲线数字签名算法。它在比特币中的作用我们的并不陌生,我们在比特币网络中的每一次签名都用到了 ECDSA 技术。比如说,用户A想发送一笔交易将比特币转账给用户B,必须要让矿工确认只有用户A拥有该UTXO 的私钥,即拥有这笔资产的处置权。因此用户A需要用 ECDSA 生成一个独一无二且无法被修改的数字签名,以证明其拥有私钥,同时确认交易部分的具体金额。自比特币诞生以来,该算法很好地胜任了这份生成签名的关键性工作,维持了比特币网络的安全,但是 ECDSA 缺乏正式的安全证明,并依赖于额外的的假设。Schnorr 和 ECDSA 同样基于离散对数问题,但是 Schnorr 签名算法有一个正式的数学证明能够证明其安全性,且用到了更少的假设,因此,从安全性角度考虑,Schnorr 签名算法接替 ECDSA 算法也就不足为奇了。
    #支持聚合签名,实现隐私保护#
    

    此外,Schnorr最大的优点在于实现了聚合签名,因为Schnorr具备线性特征,这就允许多个用户的公钥 通过线性计算聚合成一个公钥,并能生成与之对应的聚合签名。聚合意味着合并为一个,因此味着当多方参与时,Schnorr聚合签名可以将多个签名数据压缩合并成单个聚合签名了,验证者通过所有签名相关的数据和公钥组成的列表对单个聚合签名进行验证,若验证通过,其效果等同于对所有相关签名进行独立验证且全部通过。
    
    以2-3多签为例,?前?特币多签的锁定脚本需要3个公钥地址,这部分会被压缩为脚本,所以升级之后???变化,但是解锁脚本需要2个公钥与2个签名,在升级为Schnorr之后,只需要?个"公钥和"与"签名和"。对于更通?的n-m多签,?前?特币多签的解锁脚本需要n个公钥与n个签名,Schnorr签名依然只需要?个"公钥和"与?个"签名和”。也就是说签名?越多,Schnorr签名的空间利?率越?。
    将多个参与者的签名聚合成一个签名,这使得多签名交易看起来像是常规的P2PKH交易,保护了多重签名参与者的隐私。对比之下,ECDSA 本身是不支持多重签名,比特币现在是通过 P2SH 脚本来处理,但是 P2SH 类的脚本会向网络暴露多签交易的存在并披露所有的签名者。因此,使用 Schnorr 签名,增强交易的隐私性,并节省解锁脚本内因多签带来的空间占用,节约宝贵的链上空间,实现变相扩容。
    03 MAST对交易脚本的隐私保护?
    MAST(Merkle Abstract Syntax Tree)由抽象语法树和 Merkle 树发展而来,MAST 背后的技术允许我们将一个脚本分割成互斥的子集,而 Merkle 树允许我们在不披露整个脚本的情况下验证单独的脚本子集属于一个完整的脚本。?
    
    MAST 使用 Merkle 树对脚本的互斥分支进行编码,这使复杂脚本条件可以通过隐藏未执行的分支脚本来提高隐私。具体表现为,用户支出时,只需披露相关脚本以及从该脚本通向默克树根的路径,用一个默克尔证明就能为执行的脚本提供证明。
    
    以上面 Alice 的财产处理脚本为例子,上面指定的脚本不仅包括 Alice 的公钥(需要验证私钥的签名),还包括 Bob 和 Charlie 的公钥和一些条件逻辑,如超时。在当前的 BTC 网络中,上述的所有数据和脚本被花费都都会记录在链上,因此每个人都可以跟踪到这笔 UTXO 的所有信息,这对于 Alice、Bob、Charlie 的隐私来说是不好的消息。
    引入 MAST 后,可以看到 MAST 树对该脚本的表示如下:
    
    将其分解为两个子脚本,一个脚本是 Alice 能够随时花费这笔比特币,另一个脚本是三个月后 Alice 的比特币还没有使用完,Bob 和 Charlie 就可以考虑如何处理这笔比特币了。在实际情况中,只会选择一个分支进行执行,而通过披露的单个分支,无法确定 Alice 其他的子脚本有做什么动作,从而保护了 Alice 的隐私。
    04 Taproot升级下的用户的隐私?
    Taproot 本身是一次软分叉升级,在比特币客户端升级后还会兼容老的客户端,这对于比特币本身的发展和社区的凝聚都是强有力的。Taproot 通过隐藏交易的全部脚本,同时使复杂交易与其他交易难以区分,增强了比特币网络参与者的隐私性。对不使用复杂交易脚本的普通用户来说,这次 Taproot 升级是接近无感知的;但对开发者来说,钱包和服务必须升级对应的功能。随着越来越多的用户利用 Taproot 的功能,其对效率和隐私的积极影响被放大。
    总言之,相较于现行的比特币网络,区块链分析能够对单个地址进行追踪,Taproot 为比特币网络纳入了一定的隐私功能,用户的隐私得到保护,也会惠及比特币本身,促进比特币网络的发展,为比特币的未来带来更多可能性。