1.概述 智能合约(Smart Contract)是时下非常热门的概念,但是它在 20 多年前就已经被非著名计算机科学家 Nick Szabo 提出了,它将智能合约描述为一种以信息化方式传播、验证或者执行合约的计算机协议,能够允许在没有第三方的情况下进行可信的交易,并且这些交易是无法被追踪、同时也是不可逆的。 A smart contract is a computer protocol intended to digitally facilitate, verify, or enforce the negotiation or performance of a contract. Smart contracts allow the performance of credible transactions without third parties. These transactions are trackable and irreversible. 作为区块链鼻祖的 Bitcoin 虽然通过 POW 实现了 分布式一致性,同时使用 UTXO 模型 存储和管理底层数据结构,实现了去中心化的分布式账本,并且在一定程度上实现了『可编程』这一特点,但是它的脚本机制非常简单,只是一个基于堆栈式的脚本语言,它不仅没有函数的功能,同时也不是图灵完备的,无法实现复杂的逻辑。 Ethereum 在今天一般被视为区块链 2.0 项目,与 Bitcoin 不同,Ethereum 平台实现了图灵完备的编程语言,这样我们就能够在 Ethereum 上编写和部署智能合约,利用 Ethereum 支持的编程语言 Solidity 以及 API 实现一些复杂的功能。 Solidity 在 Ethereum 上提到编写智能合约时,很难离开 Solidity 这门编程语言。想要系统、详细地学习 Solidity 建议直接阅读相关的 官方文档,文章并不会对详细展开介绍如何编写智能合约,而是会重点介绍这门编程语言是如何设计的。 虽然目前很多的基础链都使用 Solidity 作为平台支持的编程语言,但是也有一些基础链,例如 EOS 提供了 C++ 的 API 用于编写智能合约,这只是不同的平台基于不同目的之后做出的选择和权衡。不过在这篇文章中,我们会以 Ethereum 上的 Solidity 为例展开介绍。 组成 Solidity 是一门面向合约并且图灵完备的编程语言,这门编程语言总共包含四种不同的重要元素,Contract、Variable、Function 和 Event。 其中合约(Contract)是 Solidity 中的核心概念,我们都知道…