技术沙龙第一期
U2:
我分享一篇文章吧
U2:
U2:
这个是介绍最新的比特币的一个软分叉taproot
U2:
这里主要的几个特性,一个是默克尔化抽象语法树(Merklized Abstract Syntax Trees, MAST),这个其实我理解还是默克尔树的一种用法
U2:
比特币为什么搞这个呢?
U2:
其实还是跟原来的P2SH的设计有关
U2:
我们看下原来比特币P2SH的设计
U2:
U2:
这里其实在一开始未解锁交易的时候,这笔资金有一定的隐私性,但是一旦解锁,就必须暴露全部的脚本,隐私性不好
U2:
所以现在其实是将一个合约不同的条件分支组成一个默克尔树
U2:
U2:
这里我也在思考联盟链或者eth是否也能实现类型的效果呢?
U2:
这个问题大家可以思考下
U2:
另外就是Schnorr 签名,这个签名一个比较重要的属性就是可以把多个私钥的签名,可以聚合成一个签名,看起来仿佛是一把私钥签出的。
这样的话就为n-n 这种签名提供一种隐私性
U2:
对于其他人来看,其实并不知道是一个人签的还是多个人签的
U2:
对于m-n的签名呢?和前面的的Mast结合,其实也能打到一样的效果。比如一个2-3的多签名,可以理解为多个不同分支的2-2
U2:
Gregory Maxwell 写道 :
在讨论默克尔化脚本时,一个大家常常提起的问题是,我们能否实现一种精巧的合约,使其与最常见、最无聊的支付没有分别。不然的话,使用这些时髦技术的输出的匿名集,也就是另一个小众集合而已,在实践中没有多大的意义。
U2:
Maxwell其实提到了一种抽象而且通用的做法
U2:
就是如何做到隐私,而这个隐私又是一种普通的交易
U2:
原来其实个人钱包和合约钱包是有差别的
U2:
但是可以通过MAST和Schnorr签名,再把个人和合约用户都统一到一个脚本模式下
U2:
P2TR
U2:
然后经过这样的处理,其实对于外界来看,是无法分辨到底是个人,还是合约,做到大隐隐于市
U2:
其实历史上的每一次比特币的升级都是非常慎重,修改也是非常小的,但是也是非常精密的
U2:
最后留给大家一个问题,如何在eth合约上实现类似的特性呢?
————— 2021-11-06 —————
rink:
感觉以太坊上不好做,因为以太坊智能合约是任意的计算程序,而比特币的lock script是一个判定程序,只返回成功与否。我在秘猿的时候其实研究过这个问题。我当时就想用正常的程序描述业务操作,然后有个工具能自动提取出其中的判定程序。当然有个最简单的方法,就是assert,但是这还是需要在链上重复所有的计算。我设想的是像零知识证明一样,验证和计算是不对等的,验证的工作量要比计算少。这个好像是没有找到通用的解决方案。