以太坊智能合约及以太坊虚拟机EVM

2022-09-16T18:39:01+08:00

相比于比特币所提供的极为受限的交易脚本语言,以太坊所提供的智能合约极大增强了区块链的功能,同时也为区块链赋予了可编程性。通过以太坊平台提供的智能合约编程语言和相应的对智能合约进行解释执行的以太坊虚拟机,区块链开发者可以直接在以太坊平台上进行各种可能的操作的开发,赋予以太坊区块链各种方向的应用。 我们可以将以太坊视为一个可以实现去中心化应用的平台,其核心是一套用于运行以太坊的节点所要执行的智能合约进行编程的语言,及相应地在保证节点运行其他服务的环境不受影响的条件下,对所编写的智能合约语言进行解释执行的虚拟机。用户通过调用以太坊提供的接口,对自己所希望部署的去中心化应用进行编写。 在调用时,通过共识协议在所有以太坊节点间,同将要执行的智能合约达成一致,进而在每个节点的EVM上执行。具体地可以将智能合约理解为代码和数据的集合。 以太坊所提供的智能合约编程语言是图灵完备的,亦即以太坊的智能合约可以做到所有能够用图灵机做到的事情,类似于常见的高级编程语言,如C++、GoLang 等 。 以 太 坊 提 供 了 几 套 编 写 智 能 合 约 的 高 级 语 言 , 如Solidity、Viper、Serpent及LLL等,其中目前较为流行的是Solidity及Viper。以太坊默认的智能合约编程语言是Solidity,该语言编写的智能合约对应的文件扩展名为.sol,目前有许多可用的在线Solidity集成开发环境(IDE),如Browser-Solidity Web IDE等,用户可以很方便地在其上编写并编译自己所需的智能合约代码。 用户通过这些高级语言编写出较为复杂的智能合约代码后,对应的代码进而被编译为可以在EVM上执行的EVM字节码,这些字节码再被上传至以太坊区块链从而使所有节点均可获取代码段,从而使每个节点都能够利用本地的EVM对字节码进行执行。

以太坊智能合约及以太坊虚拟机EVM2022-09-16T18:39:01+08:00

智能合约的安全性需要关注

2022-07-07T13:39:07+08:00

因为合约是严肃的事情,传统的合约往往需要专业的律师团队来撰写。古语有云:“术业有专攻。”当前智能合约的开发工作主要由软件从业者来完成,其所编写的智能合约在完备性上可能有所欠缺,因此相比传统合约,更容易产生逻辑上的漏洞。另外,由于现有的部分支持智能合约的区块链平台提供了利用如Go语言、Java语言等高级语言编写智能合约的功能,而这类高级语言不乏一些具有“不确定性”的指令,可能会造成执行智能合约节点的某些内部状态发生分歧,从而影响整体系统的一致性。 智能合约原理 因此,智能合约的编写者需要极为谨慎,避免编写出有逻辑漏洞或是执行动作本身有不确定性的智能合约。不过,一些区块链平台引入了不少改进机制,对执行动作上的不确定性进行了消除,如超级账本项目的Fabric子项目,即引入了先执行、背书、验证,再排序写入账本的机制;以太坊项目也通过限制用户只能通过其提供的确定性的语言(Ethereum Solidity)进行智能合约的编写,确保了其上运行的智能合约在执行动作上的确定性。 2016年著名的The DAO事件,就是因为智能合约漏洞导致大约几千万美元的直接损失。The DAO是当时以太坊平台最大的众筹项目,上线不到一个月就筹集了超过1 000万个以太币,当时价值一亿多美元。但是该智能合约的转账函数存在漏洞,攻击者利用该漏洞,盗取了360万个以太币。由于此事件影响过大,以太坊最后选择进行回滚硬分叉挽回损失。The DAO智能合约的具体内容感兴趣的读者可以自行查阅(1)。但是我们并不能因此而否认智能合约的价值,任何事物在发展初期必然因为不完善而存在风险,因噎废食并不可取。 随着智能合约的普及,智能合约的编写必然会越来越严谨、规范,同时,其开发门槛也会越来越低,对应领域的专家也可参与到智能合约的开发工作中,智能合约必定能在更多的领域发挥越来越大的作用。随着技术的发展和大家对智能合约安全的重视,从技术上可以对智能合约进行静态扫描,发现潜在问题反馈给智能合约开发人员,也可以通过智能合约形式化验证的方法全面地发现智能合约中存在的

智能合约的安全性需要关注2022-07-07T13:39:07+08:00

智能合约的原理

2022-07-07T11:27:23+08:00

一个基于区块链的智能合约需要包括事务处理机制、数据存储机制以及完备的状态机,用于接收和处理各种条件。并且事务的触发、处理及数据保存都必须在链上进行。当满足触发条件后,智能合约即会根据预设逻辑,读取相应数据并进行计算,最后将计算结果永久保存在链式结构中。 智能合约在区块链中的运行逻辑 对应前面打赌的例子,智能合约即为通过代码实现的打赌内容。该智能合约预置的触发条件即为规定球赛场次、时间等相关信息,同时需要规定获取结果途径(例如直接从官网获取结果)。预置响应条件即为触发事件后,智能合约具体执行内容。条件 1:皇马赢,响应1:钱直接打入我的账户; 条件2:拜仁赢,响应2:钱直接打入小明账户。该智能合约一经部署,其内容就会永久地保存在链上,并严格执行。球赛结束后,区块链网络中的节点均会验证响应条件,并将执行结果永久记录在链上

智能合约的原理2022-07-07T11:27:23+08:00

生活中的智能合约是什么?

2022-07-07T11:27:50+08:00

其实,智能合约并不是区块链独有的概念。早在1995年,跨领域学者Nick Szabo就提出了智能合约的概念,他对智能合约的定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”简单来说,智能合约是一种在满足一定条件时,就自动执行的计算机程序。例如自动售货机,就可以视为一个智能合约系统。客户需要选择商品,并完成支付,这两个条件都满足后售货机就会自动吐出货物。 合约在生活中处处可见:租赁合同、借条等。传统合约依靠法律进行背书,当产生违约及纠纷时,往往需要借助法院等政府机构的力量进行裁决。智能合约,不仅仅是将传统的合约电子化,它的真正意义在革命性地将传统合约的背书执行由法律替换成了代码。俗话说,“规则是死的,人是活的”,程序作为一种运行在计算机上的规则,同样是“死的”。但是“死的”也不总是贬义词,因为它意味着会严格执行。 比如,球赛期间的打赌即可以通过智能合约实现。首先在球赛前发布智能合约,规定:今天凌晨2:45,欧冠皇马VS拜仁慕尼黑,如果皇马赢,则小明给我1 000元;如果拜仁赢,我给小明1 000元。我和小明都将1 000元存入智能合约账户,比赛结果发布,皇马4:2胜拜仁,触发智能合约响应条件,钱直接打入我的账户,完成履约。整个过程非常高效、简单,不需要第三方的中间人进行裁决,也完全不会有赖账等问题。

生活中的智能合约是什么?2022-07-07T11:27:50+08:00
返回顶部