长推:简单梳理账号抽象的意义

一个例子,讲讲 “抽象/账户抽象” 的意义。

最近,一种名为 “MPC 钱包” 的钱包形式吸引了大家的关注。从原理上说,应该称为 “基于分布式密钥生成(DKG)的门限签名(TSS)钱包”:DKG 会形成 n 个私钥碎片,但这 n 个碎片对外将仅表现为 1 个公钥(集体公钥)(即一个地址)。

而 TSS 则使得只需要其中 m 个私钥碎片的签名,即可生成可用集体公钥来验证的有效签名(即可发送交易)。 当前,这类钱包的想法是,让一个可保证全时响应并可验证用户身份的运营方,控制其中 1 个碎片,而用户自己控制其它的碎片,这就帮用户消除了任一个碎片的单点故障。

假定用户跟运营商形成了 2-of-3 的设置,那么,用户自己控制两个碎片就可以随时签名,同时运营商无法独自转走用户的资金;当用户发现某一个碎片丢失、损坏或泄露时,就可以向运营商证明自己的身份并跟运营商联手转走资金。

敏锐的读者会意识到:

(1)我在描述这种钱包时,使用的语言跟描述比特币多签名钱包的别无二致;对于原生支持多签名的比特币来说,只需使用多签名钱包,而无需使用这样的技术来达到相同的效果;

(2)这样的 DKG-TSS 钱包,实际上是对抽象性不足的账户模式的补救;当前大部分账户模型的链使用的都是单签名的账户,因此要消除单点故障就只能借助 DKG 这样的技术。 但是,人们可能没意识到,更抽象的 UTXO 模式可以做得比这还要好。

在这种 DKG-TSS-账户 钱包中,其一,运营商明确知晓用户的账户,隐私性差;其二,用户往往只能使用一个运营商,难以约束运营商的行为(不是绝对不能,简单想想也有办法增加,但可能对用户来说会更复杂)。 你说,这问题,使用多签名的托管钱包就不存在吗?不存在,或者说可大大缓解。

(1)我们假定愿意提供这样的服务的服务商公开了自己的公钥(或者主公钥),你可以自行把 TA 的其中一个公钥放在你的多签名合约中,无需知会他。比特币的 UTXO 的链上信息是一串哈希值,他们看区块链也不知道你有没有使用他们。(甚至他们需要你的提示才会知道某一个公钥属于他们!)

至于身份验证,你可以向服务商先用闪电支付一笔费用,然后提交加密的 UTXO 信息和身份验证手段信息,DKG-TSS 服务商能用的手段我们都能用。由此,我们就解决了上面说的隐私性问题。

(2)有了 taproot,我们还可以在一个输出中安排多套多签名锁,而且曝光其一不会导致其它条款曝光。什么意思呢?意思是我可以安排将 10 个服务商分别安排在 10 个多签名锁中,从而消除服务商的单点故障!一个服务商拒绝服务或者想趁火打劫是没用的,他根本不知道我有多少个备选服务商。

此外,由于最终曝光的条款只有一个,对用户来说,经济性和复杂性都是大差不差的。 最后,多签名对比 DKG-TSS 还有一个好处:当服务商签名了,就无法抵赖自己没签过名(可追责性)。因为比特币 multisig 会要求各参与解锁的公钥提供单独的签名,所以它会曝光在链上。

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

© 版权声明

相关文章