智能合约的性能是否被高估了?

智能合约的性能是否被高估了?

雷锋网按:本文译自fintechranking,原文出自LTP,作者Milos Dunjic,fintech技术顾问,拥有25年支付、电子交易软件系统开发经验,曾就职于加密算法RSA实验室等。

智能合约是安装在区块链网络节点中离散的计算机程序组件,从本质上讲,这些自动合约的工作原理类似于其它计算机程序的if-then语句。当智能合约准备好被部署的时候,代码的哈希值会被计算出来并打上数字签名。单向哈希值,数字签名和代码本身会被同时复制到由参加区块链的节点所组成的网络之中。作为部署流程的一部分,每一个节点第一件要做的事情是要验证哈希值。如果验证通过,节点会在本地部署代码。接下来,这个节点会等待智能合约的调用。

因为智能合约代码的完整性是被它的单向哈希值和作者的数字签名所保护起来的,没有人能在部署之后改变它。从某种方面来讲,它非常像配置在智能芯片卡中的密码的防篡改保护特性。事实上,在安装之后,智能合约的代码与全部交易记录和内部数据一起,成为了不可篡改的区块链的一部分。 

当条件被触发时,在每一个代码有被安装、并且有挖矿和验证功能的节点上,智能合约代码都会被执行。这些节点会尝试就他们各自的智能合约代码执行的结果达成共识。作为寻找共识过程的一部分,区块链网络协议会保证将最新更新过的智能合约内部数据可靠地复制到每一个节点。内部数据结构是不可改变的,这意味除了智能合约代码自己之外,没有东西可以改变它的内容。 

在区块链节点全都平行地、完全独立地执行同一段代码的状态下,要保证执行的稳健和可靠,就要求智能合约的代码本身必须有非常高的确定性。这要求智能合约的代码在每一个执行的节点上,必须产出完全相同的结果。这样的要求就极大的限制了智能合约什么可以做、什么不可以做。 

关于智能合约的最大问题在于,人们并不完全理解它们是如何运作的;对于智能合约基础特性的错误理解,也引致了一些无法被实现的想法。 

虽然听起来十分简单,同时又被许多人相信是可行的,但是智能合约不应该调用外部的web服务或者数据库。这样的设计极大地提高了同一段智能合约代码在被重复独立地执行时产生不同结果的概率。因为这样会导致区块链节点无法得出可靠地共识,这样的设计会导致系统的混乱。 

另外一个智能合约设计的反面例子是试图从智能合约调用另一个简单的API,比如说银行资金转账。因为每一个区块链中的节点都会独立地执行相同的智能合约代码,让每一个节点上的每一次代码执行都调用“资金转账”的API真的是一个好的想法吗?这明显感觉像是一个自己造成的对可怜API的一次DDOS攻击。这样的设计要求API本身的设计足够复杂,能够侦测并正确地处理数以百计的重复调用。同时这也一定会造成计算机资源的无谓浪费。

接下来,因为智能合约需要可靠地知道API调用的状态并以此为依据来做出内部决定,我们能够保证每一次智能合约对API的调用都会收到API一模一样的反馈吗?总之这一切看起来十分混乱。 

许多人满腔热情地相信智能合约会是对区块链天生的数据隐私问题的优雅解答。既然智能合约可以很容易地封装它的内部数据库并控制对它的访问(基本上它表现得像是分布式对象),这不就能够保证将数据保护起来了吗?不幸的是,相同的智能合约数据总是被复制和储存在每一个区块链参与者有安装智能合约代码的电脑中。因此,没有东西可以阻止一些参与者机器上的聪明的本地代码得到访问一切存储在本地系统上信息的权限。 

虽然存在着一些(不是很优雅的)针对以上提到的智能合约设计局限的变通措施,智能合约仍应该只被用来管理它内部数据状态的更新。换一种说法就是,智能合约提供了比普通比特币区块链技术在去中心化数字资产转移的技术实现上多那么一点点的灵活性,但是除此之外,智能合约并没有更多其他的优点了。 

总结起来,目前的智能合约很难在内部数据状态管理作用之外有别的应用。更加复杂的应用就会要求智能合约与外部环境和服务产生互动,这会导致不可想象的测试复杂性,这样的复杂性天生就存在于分布式及去中心化的系统结构中。它很容易就变成一个噩梦般的测试和支援情景。问问the DAO程序员吧。雷锋网雷锋网(公众号:雷锋网)

【招聘】雷锋网坚持在人工智能、无人驾驶、VR/AR、Fintech、未来医疗等领域第一时间提供海外科技动态与资讯。我们需要若干关注国际新闻、具有一定的科技新闻选题能力,翻译及写作能力优良的外翻编辑加入。 

简历投递至 wudexin@leiphone.com,工作地 北京。


本文作者:乌布

本文转自雷锋网禁止二次转载,原文链接

Python作为一门编程语言,确实在近年来受到了广泛的关注和使用。它具有简洁易读的语法,丰富的库和框架支持以及广泛的社区支持,使得编写Python代码变得高效且快速。然而,是否被严重高估这个问题需要从多个角度来看待。 从技术层面来看,Python并不是解决所有问题的最佳选择。与其他编程语言相比,Python的执行速度较慢,特别是在处理大规模数据和高性能计算方面。因此,在对速度要求较高的领域,如游戏开发、金融分析等,Python可能不适用。 此外,Python的高估也与其在人工智能和数据科学领域的广泛应用有关。因为Python有许多强大的机器学习和数据处理库,例如TensorFlow、Pandas和NumPy等,这使得Python成为了人工智能和数据科学领域的首选语言。然而,这也导致了一种过度使用Python的现象,有些人可能过于依赖它,而忽视了其他更适合的工具和语言。 此外,Python在某些领域可能被高估的另一个原因是其相对简单的语法使得它成为了很多初学者的首选语言。然而,要成为一名优秀的程序员,除了掌握Python之外,还需要了解其他编程语言和技术。过分关注Python可能导致一种技术上的狭隘性。 总体来说,尽管Python有很多优点,但它并不是解决所有问题的最佳选择。因此,我们应该避免过分高估Python的能力,而是在不同的场景下选择最适合的工具和语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值