加入收藏 | 设为首页 |

超级玛丽-「力场译文」智能合约:安全状况(榜首部分)

海外新闻 时间: 浏览:151 次

本文是关于智能合约三部分的第一部分——第二部分聚焦法律问题,可以在这里找到。

智能合约有望从根本上改变人类之间的互动方式。然而,就它们目前的状态而言,它们尚未做好被人大规模信任的准备。

1996年,计算机科学家、法律学者兼密码学家尼克-萨博(Nick Szabo)写了一篇论文,名为《智能合约:为数字市场构建基石》。在文中,他将智能合约的基本规则作为区块链的重要创新之一。

正如萨博写的,“智能合约的基本观点是很多种合同条款可以被嵌入到我们使用的软件中,这样一来,对于违约者而言,违约的成本就非常昂贵(如果需要的话,有时令人望而却步)。”换言之,(智能合约)就是带有自动执行功能的合同。

22年过来了,并且区块链革命正如火如荼。虽然大多数注意里目前都痴迷于加密货币和它们的估值,但智能合约代表了区块链从金融转账交易的协议到一个全方位的实用程序进程中的下一个步骤。

智能合约正在扩散

智能合约是区块链可能具有最具颠覆性的短期影响的应用。数百万美元被委托给了它们的代码,而且截至2018年6约,单单在以太坊区块链上(根据Etherscan)就部署了超过95000份的智能合约。

“截至2018年6月,单单在以太坊区块链上(根据Etherscan)就部署了超过95000份的智能合约。”

在比特币到来的很久之前,被编码成软件的业务逻辑一直在自动化并变革着我们周围的世界,但智能合约的出现代表了这一趋势的加速。

在纸面上,智能合约承诺能够:

自动地、无需信任地且秉公地强制执行合约

在合约的构建、执行和强制实行中剔除中间人

智能合约将提高商业发生的速度,它们将降低交易风险,并且有些人甚至考虑过它们是否能够取代律师。在短期内这(指取代律师)是不可能的,但尽管如此,它们仍可以从律师的市场份额中获得相当大的收益。

智能合约是动态的、复杂的且是难以置信般的强大。

长期存在的问题

我们都听说过智能合约将如何不可逆转地变革世界,但在这片杂音中趋向于消失的是编写一套安全的智能合约是非常具有挑战性的。

这个事实让麻省理工科技评论和其他期刊刊登文章超级玛丽-「力场译文」智能合约:安全状况(榜首部分),称以太坊智能合约充满了漏洞。这个结论似乎是在近期发表的并且被大量引述的研究论文的基础上得出来的。该研究报告叫作《找到大规模贪婪、浪费且自杀性的合约》,文中提到“我们对近100万份智能合约的分析标记了34200份(2365份是不同的)合约是有漏洞的。”另一份研究发现,高达用Solidity语言编写的45%的智能合约存在某种形式的漏洞。超级玛丽-「力场译文」智能合约:安全状况(榜首部分)

“我们对近100万份智能合约的分析标记了34200份(2365份是不同的)合约是有漏洞的。”

在炒作声中,这是人们不想讨论的事情之一:大多数智能合约都有漏洞,开发标准留出了广阔的改进空间,并且它的需求已经超过了审计资源。尽管构建在安全强化的区块链网络上,但智能合约常常具有漏洞、后门和破绽,这些都适宜被利用。

开发挑战

一套智能合约就是一行代码,和其他任何软件一样,运行在电脑上。然而,从安全角度看,存在几个让智能合约更加敏感的因素。

Solidity (主要的智能合约语言)的语法同Javascript 的相似,这让很多人认为编写智能合约是件容易的事。但Solidity充满了古怪的行为——乍看起来貌似是正确的,而事实上,可能不是那么回事。

“智能合约的编程缺乏标准化的最佳实践……并依赖于一套非标准的软件生命周期,根据此提供的应用程序无法被更新或修补。”

在一份2018年会议报告中,一群英国的研究人员强调了两个更进一步的挑战:

1. 同传统软件工程相比,智能合约编程领域缺乏标准化的最佳实践。

2. 智能合约依赖于一套非标准的软件生命周期,据此提供的应用程序无法被更新或修补。

还有一个事实就是,很多加密通证已经代表了如此重要的价值,以致于攻击者们被高度激励来找到并利用处理合约中的漏洞或直接拿住这些漏洞来获利。根据Hartej Sawhney,网络安全公司Hosho 的联合创始人,所质押的资金吸引并将继续吸引大量黑帽黑客。

此外,区块链的蓬勃发展已经为智能合约催生了对智能合约开发者火箭般蹿升的需求。正如Techcrunch强调的,“在自由职业者账单方面,Upwork看到区块链成为5000多种技能中发展最快的技能——同比增长超过35000%。”因此,很多没有经验的开发者也被人雇佣,仅仅为了满足需求缺口。

“很多没有经验的开发者也被人雇佣,仅仅为了满足需求缺口。即便是最厉害的开发者也无法期待他能写出来没有漏洞的代码。每1000行代码,某些地方会有15到50处错误,通常这是能被接受的。”

即便是最厉害的开发者也超级玛丽-「力场译文」智能合约:安全状况(榜首部分)无法期待他能写出来没有漏洞的代码。每1000行代码,某些地方会有15到50处错误,通常这是能被接受的。所以,为了编写一套没有错误的智能合约,一位程序员必须避免15-50倍的平均值。

最后,有一个专注度的问题。正如加密安全社区Hacken的CEO Dmytro Budorin在一次采访中描述的,“当编写智能合约时,程序员想的更多的是功能性而非安全性,因为其主要任务就是简单的编程工作,而安全性常常事后才想起来。”

当你混合这些元素并开始使用图灵完备时,正如很多平台做的那样,其结果就是搞砸事情并创造很多意想不到的行为并非难事。

为此,智能合约的历史已经充斥着痛苦的脚注,讲述所发生的所有黑客和意外事故。

修复致命要害

假如智能合约将成为未来数字经济的核心功能,那么安全性必须提高。

为了让一款软件“安全”,需要免于意料之外或不想要的行为的影响,即便当它受制于几种不同威胁模式。那么问题就是,在困难条件下,什么能让智能合约不太可能有意料之外的行为呢?

“需要更专注于简洁性和连贯性,即便牺牲某个开发者的努力(太多语言优化了易开发性而不是可验证性)。”

根据位于西雅图的区块链战略&技术集团New Alchemy的专家,在需要改善方面有三个关键领域:

更好的语言设计:更有表现性的编程语言(即图灵完备)也更有可能创造意想不到的行为。“需要更专注于简洁性和连贯性,即便牺牲某个开发者的努力(太多语言优化了易开发性而不是可验证性)。”还有,很多用例并不需要图灵完备提供的灵活性。一些项目已经意识到这一点了。例如Waves在最近一篇博文中表示:“非图灵完备的合约将覆盖大多数用例。在Waves的客户端这些语言将对所有用户开放并且不需要任何专业知识或专长。”

更好的工具:代码审计员寻求的很多问题属于已知的错误类别并且这些问题可以被自动删除。人工审核时必须的,但审计员通常也使用linter或像Truffle和Populus之类的工具,这些工具很便宜、很省时,但还是需要改进。的确如此,一份关于开源以太坊合约的研究表明,由于“覆盖不足”(查看此处的实验和数据),现存的解决方案可能错失三分之二的漏洞。一些新的工具最近已经介绍了,但这个障碍依然需要被抬得更高。

更好的方法学学科:以太坊趋向于吸引早期的采用者,喜欢生活在边缘的人,但那恰恰是设计高品质软件所需要的对立气质。“制作80年代航空电子软件的开发人员用更少的东西做了更多的事情,而且我认为其中很大一部分与保守软件设计的文化倾向有关。”今天的区块链开发者将会不可避免地必须采用一些那种哲学。

“‘制作80年代航空电子软件的开发人员用更少的东西做了更多的事情,而且我认为其中很大一部分与保守软件设计的文化倾向有关。’今天的区块链开发者将会不可避免地必须采用一些那种哲学。”

其他改进

Sagewise的CEO兼联合创始人Amy Wan 倡议使用一个稍微不同的方法解决问题:“我认为,区块链公司将有能力通过使用一名只专注于开发智能合约的专门开发者、聘请一家有声誉的安全审计公司,并将所有安全网络整合到智能合约中(例如SDK)来阻止未来的智能超级玛丽-「力场译文」智能合约:安全状况(榜首部分)合约灾难。”

这里讨论的软件开发人员的工具可以被集成到智能合约中,可以基本上作为代码中的仲裁条款——从而使开发人员有机会在需要时监管事情。对一些人而言,这可能听起来像一个中心式的故障点或控制点,但像这种常识性解决方案可能将发挥作用。

也有传统的方法:测试、代码审计和漏洞赏金(计划)。这不是新鲜事——政府和大公司定期地使用这些方法来审查它们软件的安全性。唯一的区别就是,鉴于智能合约的“一次性”条件,区块链领域需要在这些方法上加倍。

在一篇关于智能合约开发者的思维模式的文章里,ConsenSys的项目经理Micah Dameron提出了一个总体发展理念:“随着像智能合约这样的永久性软件实体的创造,对一套规则的需求正在逼近。” 他继续使用一座纪念碑作为他所提出的哲学的体现:这一四行诗节总结了这一理念:

“安全要比不安全好。

厌倦比恶名昭彰强。

不变的要比易变的好。

开门见山要比错综复杂好。

最后的想法

要数字经济被设定朝一个全新的方向发展,一个可能比它之前任何东西更具有变革性的方向。这很大程度上是由于区块链以及它所赋能的智能合约。但假如智能合约充当全球经济脱媒的支点,那必须覆盖更多的领域。

许多人认为智能合约仍然处于萌芽阶段,因此大多数人原谅它们的缺点。一蹴而就的解决方案可能不现实,但需要做到更加注重安全性。虽然绝大多数责任落在开发人员的肩上,但区块链社区也有扮演的角色。社区可以帮助开发团队通过直言不讳地谨慎行事,将安全性带到对话中心并且要求更多。

建议社区花更多时间记录被利用的漏洞。这样做扩充了现有的案例研究和案例库,以便未来的开发人员可以获得更多的参考资料,并避免重复出错。

“在新安全性解决方案和能够对现有软件的大量部署进行改造之间始终存在着权衡。”

假如你翻阅历史,传统软件中很多安全性的改进(案例)已经成为演化性的而非革命性的,并且几乎没有理由认为智能合约将会有任何不同。在新安全性解决方案和能够对现有软件的大量部署进行改造之间始终存在着权衡。

所有这里面的基本问题就是,智能合约的可靠性是主流社会采用区块链的关键。如果要对这种新技术持续保持信心,那么解决本文中概述的要点至关重要。

早期采用者群体

尽管早期智能合约固有的安全性相对较低,但早期采用者并不缺乏寻找新方法的方法。 其中一家公司是法国航空公司Fizzy AXA,该公司正在为区块链提供飞行保险。如果事件(航班超过两小时延迟)被触发,则会自动通知用户补偿选项。其希望就是艰苦的补偿过程可以成为过去时。

另一家公司是Propy,一家希望将房地产智能合约的备受瞩目的未来变为现实的公司。“跨境”市场使用智能合约来确保合法和金融公平竞争,使得购买和出售物业变得更加直截了当。例如,如果买方发送5000美元的押金来预订房产,那么智能合约可以确保在梦见鱼是什么意思卖方选择不卖出时立即退还款项。像这些简单用例将会看到智能合约蓬勃发展。

本文由 The Research Ins超级玛丽-「力场译文」智能合约:安全状况(榜首部分)titute 的Colin Adams撰写。

新兴技术领域绝不缺乏想法或灵感; 然而,单单这些并不等同于创新,也不会推动技术进步——有质量研究和开发才能做到这一点。研究所(The Research Institute)采取切实可行的技术发展方法,力求纠正想法与可行解决方案之间的平衡。

更多好文详见力场app