长推:以太坊智能合约可组合性的利弊探讨

Robert Mao、jolestar热度: 8424

ArcBlock 创始人Robert Mao对话jolestar:究竟eth那样的支持smart contract 嵌套组合有没有意义? 那是一个bug 还是一个feature?

原文作者:Robert Maojolestar

原文来源:Twitter

Robert Mao:

jolestar你好,读了你的几篇文章引发一些思考想请教和讨论一下。主要是这篇“从智能合约的演进看 Move 的架构设计”,与这篇“为什么是 Move 之编程语言的生态构建”:

我很赞同智能合约的可组合性是一个重要的特点,Ethereum的 DeFi繁荣很大程度来自其智能合约可组合带来的特性。 但是,我对Eth的这种设计合理性产生了一些怀疑(可能会被ETH支持者口水淹死)

我想思考一个问题,究竟eth那样的支持smart contract 嵌套组合有没有意义? 那是一个bug 还是一个feature?

Eth这种嵌套导致可以实现“闪电贷”这类DeFi,然而闪电贷也许在现实世界应该视为一种金融的bug,而不应该作为feature。在有监管的世界,我甚至怀疑这样行为是否合法。

jolestar

中国房市,贷款买房,又是通过房本抵押贷款,不就是闪电贷么。看问题要看本质。

又国家强力控制你在一个transaction里先贷款,再拿到房本,再回过头来用房本抵押。

Robert Mao

ETH这种的嵌套组合方式还导致了一些常见的不安全合约pattern,例如通过一个合约调用另一个抽奖合约,来破解其利用区块hash产生的随机数(本来这是个很好的链上确定性随机数产生方法)。 这导致eth 在需要随机的时候,必须靠第三方预言机才可能安全,这导致整个系统架构的不必要负责性以及更为缓慢。

jolestar

同一个交易里的多个合约用的是同一个种子,所以有这个问题。维护一个全局的自增序列,每次调用 + 1, 这样一定程度能避免这个问题。但这种方式也只能用在小应用的场景,毕竟矿工是知道结果的。

Robert Mao

其他一些用法是把某些合约的部分作为共享lib,用来减少gas fee,减少重复部署,但这可以认为是eth的一个设计缺陷才导致的,因为ETH不能支持代码模块,gas机制,以及需要大量重复部署合约,这是一种work around。 Partity钱包事件说明了这个问题的严重后果。

还有一个用处是实现upgradable 合约, 但这又是一个ETH的设计缺陷的work around,因为智能合约显然有升级的需求和必要(bug fix,需求改变),但eth却把这个设计为不可升级(最容易实现)。

那么这种ETH的嵌套智能合约有有没有正面积极有价值的例子呢? 我觉得ETH的设计就如同PHP语言一样,快糙猛,但其市场占有说明了其作为“最好的语言”有很多做对的地方。 在讨论一个新的链、新的合约语言的时候 ,客观讨论一下其利弊。

责任编辑:MK

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。