【lom599】什么是以太坊智能合约,以太坊智能合约安全漏洞解读

乐百家手机网页版主lom599 ,传统的计算机程序一般运行在某个节点或集群上,为某个机构或个人拥有和控制。这样的计算机程序可以随时施加人工干预,可以随时控制。然而,区块链上的智能合约则是一种全新的计算范式。智能合约一经部署就难以修改,其执行也是自动执行,不受人为干预。因此,如果智能合约有安全漏洞,就很难防范黑客的攻击。当下,专业技术人员都在努力寻找合适的方式,提高智能合约的安全性和可靠性,帮助保障大家的资金安全。根据一份针对以太坊智能合约的最新调查研究显示,在安全问题研究人员看来,智能合约属于新兴事物,所以缺陷和漏洞还是非常多的。所谓“智能合约”,其基本内涵就是指可以将一些带有合约性质的条款嵌于我们日常使用的硬件和软件当中,目的是让那些违约者在违反合同时付出一定代价。Szabo将实体售货机称为“智能合约的原型”,因为实体售货机就是根据屏幕上所显示的价格,收取用户投进来的硬币,掉出用户所选中的商品并且正确找零。以以太坊为例。以太坊是一个开源的有智能合约功能的公共区块链平台。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见。如果智能合约开发者疏忽或者测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。并且越是功能强大的智能合约,逻辑就越复杂,也越容易出现逻辑上的漏洞。同时,智能合约语言Solidity自身与合约设计都可能存在漏洞。以太坊开源软件主要是由社区的极客共同编写的,目前已知存在Solidity漏洞、短地址漏洞、交易顺序依赖、时间戳依赖、可重入攻击等漏洞。在调用合约时漏洞可能被利用,而智能合约部署后难以更新的特性也让漏洞的影响更加广泛持久。另外,以太坊虚拟机(EVM)对于智能合约能够做的事情存在很多硬性限制。这些都牵扯到平台级的安全,甚至可能会威胁到用户特定合约的安全。伦敦大学学院(University College London)的计算机科学家Ilya Sergey表示,目前专业技术人士还没有完全搞清楚智能合约中存在的安全漏洞和潜在风险。他曾经参与过一项针对智能合约的调查研究。Sergey及其同事借助一款创新工具,对将近100万份的以太坊智能合约样本进行了分析。结果发现,其中约有3.4万份都是存在安全隐患的,包括导致Parity事件的那一份。Sergey介绍说,自己和团队其他成员的分析工作,就好比是与自动售货机互动。研究人员随机按下某个按钮,接着记录机器在运行过程中出现意外事故时的相关状况。用他的话说:“我认为,目前我们没有发现的安全漏洞还有很多,需要继续分析并且进行分类。”在实践中如何提高智能合约的安全性?给出以下建议,在实际编程中尽量遵守,你的合约将更具安全因素。更完善的编写测试。建议提供容错和自动错误赏金。为最糟糕的情况做准备。智能合同中的漏洞,应该尽可能让它安全地恢复。添加额外的安全机制。合同的管理者可应急性地冻结合约。限制合约资金存放金额,提高攻击者成功的门槛。不要从零开始编写你所有的代码,尽可能参考成功者的合约。注意开发平台的限制。

智能合约现在是区块链中最为大家熟知的概念。但智能合约究竟是什么?很多人还是一知半解。智能合约就是一种储存在区块链中的计算机程序。区块链从本质上来说,就是一种共享的会计分类账簿,可以利用虚拟加密货币和计算机网络来追踪与记录各种资产的状态,同时有效保证分类账簿的安全,以防出现一些恶意篡改现象。第一代区块链技术就是比特币。它能为互不相识的交易双方提供牢固保障,保证双方资金能够按照合同规定顺利完成转账。简单地说,就是保证交易双方不会受到欺诈等负面事件影响。第二代区块链技术就是以太坊。有了智能合约,交易双方可以创建一个系统,从某一方的账户中取钱再存进余额不足的另一方账户中。从理论上来说,智能合约能够用于各种各样金融协议的代码编写,其中包括衍生合同、拍卖合同以及各种基于区块链的第三方保管账户合同等等。以太坊是一个开源的区块链底层系统,就像安卓一样,提供了非常丰富的API和接口,让许多人在上面能够快速开发出各种区块链应用。目前已经有超过200多个应用在以太坊上开发。而以太坊很大的特色就是能够实现智能合约。所谓智能合约(Smart Contract),是密码学家Nick Szabo在1994年首次提出以数字形式定义的一系列承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。智能合约的智能在英语中对应的单词是Smart,和智能手机(Smart Phone)中的Smart意义相同,表示非常灵活的意思,并不是指人工智能(AI)。智能合约一旦设立指定后,能够无需中介的参与自动执行,并且没有人可以阻止它的运行。以太坊去中心化的核心是其可以运行图灵完备的脚本语言,而开发以太坊智能合约则有四种语言:Serpent、Solidity、Mutan、LLL。这些语言都是面向底层设计的语言。目前来看,Solidity 是首选语言,这是由于它内置了 Serpent 语言的所有特性,语法类则似于使用广泛的 JavaScript。再加上 Solidity 的语言特性较少,该语言则可以更简单地实现完备的智能合约体系。以太坊是一个开源的有智能合约功能的公共区块链平台。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见。智能合约语言 Solidity 自身与合约设计都可能存在漏洞。如果智能合约开发者疏忽或者测试不充分,而造成智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。并且越是功能强大的智能合约,就越是逻辑复杂,也越容易出现逻辑上的漏洞。

本文由lom599发布于百家乐概况,转载请注明出处:【lom599】什么是以太坊智能合约,以太坊智能合约安全漏洞解读

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。