深入浅出区块链-学习笔记-day2-智能合约

智能合约的概念

不同于法律意义上的合约概念,区块链领域的合约表达的是可以“自治自理”的 计算机协议,这套协议具有自我执行、自我验证的属性。如果完全从技术角度来看,智能合约等价于一段事先就被规定好逻辑和条款的计算机代码被激活运行的状态,同时,智能合约也提供了通用的用户接口,用户可以通过接口与用户交互。
智能合约这一概念早在 20 世纪 90 年代就有人提出,这个人是从事智能合约和数字货币研究的尼克萨博(Nick Szabo)博士,尼克 1996 年在《Extopy》期刊上发表了对智能合约的描述,他认为智能合约是一个由数字表单指定的承诺,这个承诺包含关系到多方执行的一组协议。从定义中我们可以得知,智能合约由多个协议组成,这些协议包含了用户接口,能表达用户的承诺,它可以安全有效地确定公共网络上的关系。换句话说,智能合约是一个由计算机处理、可执行合约条款的交易协议,其总体目标是满足协议既定的条件,例如支付、抵押、保密协议。这可以降低合约欺诈造成的损失,降低仲裁和强制执行所产生的成本以及其他的交易成本。我们举个实际的例子解释一下,今年 4 月 9 日,上海某建设银行支行开放了“无人银行”,银行中充斥了众多机器和显示屏,智慧柜员机、VTM 机、外汇兑换机、VR 设备和两台机器人代替了传统的柜台。这里的智慧柜员机、外汇兑换机器人众多电子设备都可以认为是智能合约的一种表现形式,用户在办理银行业务时,如办理大额汇兑业务,业务流程和逻辑依据已经定在程序中,用户只需要按照操作一步一步进行,办理完成后即可获得单据。这里“既定的业务流程、机器人模样的人机交互界面、双方同意承诺”组成了智能合约的概念,它甚至具有一定的法律效力。
萨博提出的是智能合约的概念,以及我们举的例子,都是广义的智能合约概念。智能合约具有多种实践形式,而在区块领域所说的智能合约概念,我们其实是指 Blockchain-based 这种形式。在萨博的智能合约概念中提到了开放式网络,而我们知道开放式网络的基本要求就是拜占庭容错,通过前面文章的讲解我们知道,区块链天然具有拜占庭容错特性。所以如果在区块链上实践智能合约这个概念,两者会非常契合,天造地设。
首先实践了智能合约这一概念的是比特币,比特币脚本(bitcoin script)包含了 5 种标准交易脚本,这些脚本的功能不仅仅提供了普通单人支付的情况,它还提供了多方共同签名支付的脚本,叫做多重签名支付,多重签名支付可以看成是萨博语义下的智能合约。除了比特币,发扬光大智能合约这个概念的区块链项目就是以太坊了,下面,我重点来介绍一下以太坊项目。

智能合约虚拟机 EVM 和 Solidity 编程语言

以太坊的核心概念首先是智能合约。

账户模型

以太坊并没有采用 UTXO 模型,也不同于银行账户,它是由以太坊开发者设计了自己的账户模型。

以太币和 Gas

Gas 是执行智能合约操作的燃料,智能合约的每一个步骤都会消耗 Gas,Gas 是由以太坊的平台代币以太币转化而来,最小单位是 wei,1ETH 相当于 10 的 18 次方 wei。以太币可以通过 PoW 挖矿而产生,目前以太坊主要通过 GPU 挖矿。挖出一个块可以换得 5 个以太币,并且还有一定的交易费、以及叔伯块的奖励。今年 4 月 6 日爆出著名矿机芯片厂商比特大陆已经开发出针对以太坊的 ASIC 专业矿机,相比 GPU 的效率提升 2.5 倍。

交易和消息

以太坊上的交易与比特币中的 UTXO 交易不同,它是指 EOA 账户将一个经过签名的数据包发送到另外一个账户的过程,这个过程产生的账户状态变化将被存储到以太坊区块链上。以太坊上除了交易还有消息这个概念,消息指一个合约账户调用其他合约账户的过程,可以类比函数调用过程。所以以太坊上的 Dapp 如果被触发,有两种可能,第一种是交易触发,第二种是消息触发。这两种的区别在于前者是 EOA 发起的,后者只能是其他合约账户发起的。状态对象的状态变化被以太坊共识机制的记录下来,交易和消息驱动着状态的变化,于是,在一个开放式的网络中构建一个全球共享的 Dapp 变得十分方便。以太坊上智能合约具有全网准实时同步、准确执行、去中心化运行、较低的人为干预风险等特性,EVM 和 Solidity 为全球开发者提供了较低的进入门槛。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容