技术沙龙第一期

U2:

我分享一篇文章吧

U2:

打浦路(Taproot)比你想的宽|预言家周报#143

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,但是这还是需要在链上重复所有的计算。我设想的是像零知识证明一样,验证和计算是不对等的,验证的工作量要比计算少。这个好像是没有找到通用的解决方案。