Solidity作为最早提出的智能合约语言,它的出现为区块链的应用场景打开了新的大门。
—— 缘起 ——
智能合约(Smart Contract)这个术语最早于1994年由跨领域法律学者尼克·萨博(NickSzabo)⾸次提出。他对智能合约的定义如下:
“一个智能合约是一套以数字形式定义的承诺(commitment),包括合约参与方可以在上面执行这些承诺的协议。”
所以简单来看,尼克·萨博认为智能合约是⼀套承诺。所谓承诺就是参与⽅同意的相互之间的权利和义务。因此智能合约的本质和⽬的即是承诺本身。⽐如⼀个简单的买卖事件,卖家承诺供货,买家承诺⽀付,这两个承诺就可以形成⼀个智能合约。注意尼克·萨博对智能合约定义中提到的关键词:数字形式和协议。这两个关键词决定了智能合约不同于传统意义上的承诺,它在形式和功能上有着决定性的特征。
「智能合约」最开始由以太坊引入区块链。据以太坊白皮书,引入智能合约主要为了解决如下问题:
对于脚本语言,脚本是非图灵完备(后文会介绍)的,难以实现复杂的功能,比如椭圆曲线签名算法
脚本无法对可以提取的金额进行细粒度控制
脚本缺乏状态保存,无法实现更为复杂的有状态合约
执行时能获取的数据不够丰富,例如随机数、时间戳和前一个区块哈希的获取
总之,脚本语言无法满足更为丰富的应用操作,所以以太坊设计了独特的智能合约语言Solidity,同时,执行智能合约的智能合约执行引擎EVM也诞生了。
自此,区块链技术的应用场景, 从单一基于 UTXO 的数字货币交易,延伸到图灵完备的通用计算领域。用户不再受限于仅能使用比特币脚本所支持的简