图灵完备与智能合约 #
当朋友问起我什么是「以太坊」(Ethereum)时,我总会习惯性地通过其与「比特币」(Bitcoin)的对比来进行说明。但需要指出的是,这里的比特币并非简单地指「代币」(Token)——一种在去中心化的网络中用于给予维持网络运行的节点/网络服务提供商/「矿工」 的奖励/Gas Fee,如比特币、以太币等。
这里说到的「比特币」可以简单地说为比特币网络/平台,即最早的去中心化分布式网络区块链平台。在此基础上,便可以较为简单快速地指出「以太坊」是一个去中心化、开源并且具备智能合约功能的公共区块链网络/平台。
「比特币」和「以太坊」都是去中心化、开源的区块链平台,这意味着「以太坊」本身就继承了区块链技术所有的基本属性:去中心化、不可篡改、安全透明。不同在于后者基于图灵完备加入智能合约,使得原来智能记账的区块链可以运行各类程序和应用,而比特币平台上脚本语言是刻意被设计得非常有限——功能以转账和简单条件控制为主。
我们之前没有具体展开图灵完备(Turing-complete)和智能合约(Smart Contracts)的概念。
-
图灵完备的特性体现在一个计算机系统(编程语言或机器)能够计算任何「图灵机」能计算的问题。具体来说,只要给这个系统足够的时间和内存,它便能执行任何逻辑,解决任何可以被计算的问题。它需要能支持逻辑判断功能——如果发生 A,则执行 B,还有循环功能——重复执行某段代码,比如 for 循环,while 循环,或者直到满足某个条件才停止。
打个形象的比喻:图灵完备相当于一部电脑或手机,可以给它安装任何 app,它可以运算复杂的数学难题,运行游戏,只有有人写得出代码,它就能跑。但非图灵完备就像一部老式计算机,擅长加减乘除,十分稳定,但是无法在上面运行《愤怒的小鸟》这样复杂的游戏,也没办法写一个复杂的循环程序。
以太坊图灵完备的来源是其内置的虚拟机 EVM(以太坊虚拟机),EVM 带来的图灵完备使得以太坊不仅可以像比特币那样转账,还可以编写任意复杂的逻辑——智能合约。也正是基于智能合约,以太坊得以构建出 Dapps 应用、DeFi(事实上 DeFi 是 Dapps 的一种具体类型)、NFT 和 DAO。如同我在《Web3 行业赛道全览》中说到的,从以比特币为代表的区块链 1.0 迈向以以太坊为象征的区块链 2.0,区块链早已发展为一种涵盖金融、艺术、组织治理和社区文化的多元生态系统。
-
智能合约就是存储在区块链上,并可由节点执行的程序或代码。这意味着预设条件满足后,智能合约就可以自动执行相关逻辑完成任务进程,无需人工审批。
| 类比 | 与智能合约的关系 | 备注 | |
|---|---|---|---|
| 智能合约 | 安卓/iOS 系统里的底层代码库/API | 1. 没有智能合约,就不存在后面提到的所有概念。 2. 是一段自动执行的代码,规定了“如果发生A,就执行B”。 3. 是无情的执行者,不带感情,只认代码逻辑。 |
编程代码、逻辑脚本。 连接以太坊/区块链网络与 Dapps、DeFi 这些应用层的桥梁 |
| Dapps | APP(应用程序) | 整体与后端的关系 1. DApp = 前端界面 (网页/手机App) + 后端 (智能合约)。 2. 智能合约通常是 DApp 的“后端服务器”。你在网页上点击“借款”,前端界面会把你这个请求发送给区块链上的智能合约去执行。 3. 例子:Uniswap 是一个 DApp(你看得到的网站),它背后是一组运行在以太坊上的智能合约(你看不到的逻辑)。 |
使用了智能合约的软件——一种统称,包括 Uniswap |
| DeFi | 手机里的“金融类 App”文件夹 | 特定领域的应用集合 1. DeFi 是 DApps 的一个子集,专门指那些处理金融业务(借贷、交易、保险、理财)的应用。 2. 智能合约在这里充当了“银行家”和“柜员”的角色。 3. 逻辑:传统金融靠银行经理审批贷款;DeFi 靠智能合约代码判断你的抵押物够不够,够了就自动放款。 |
金融向的 Dapps |
| NFT | 游戏里的“限量版皮肤”或“数字房产证” | 通过合约定义的一种数字资产标准 1. NFT 本质上就是一个智能合约(通常遵循 ERC-721 或 ERC-1155 标准)。 2. 这个合约里有一个账本,记录着:“ID号为 #8888 的图片属于小明”。 3. 智能合约定义了 NFT 的属性(不可分割、独一无二)和流转规则(如何转账、版税如何自动支付给创作者)。 |
智能合约生成的独特商品 |
| DAO | 没有CEO的公司,或者小区的业主委员会,但规则是自动执行的 | 管理规则的代码化 1. DAO 是一个组织,而智能合约是这个组织的“宪法”和“财务章程”。 2. 传统公司:CEO 签字批准报销。 DAO:智能合约规定,“只要超过 51% 的成员投票同意,国库里的钱就自动转给某个项目”。 3. 智能合约保证了治理结果的强制执行,没人能赖账。 |
用智能合约来管理的人群/公司 |
缺乏虚拟机、图灵完备和智能合约的比特币网络显然没有以太坊这么丰富的功能。事实上,比特币的脚本语言的图灵不完备是有意为之的设定,它不支持循环语句,也就不能写出一个「重复执行直到……」的死循环,但这反而确保了作为「数字黄金」的比特币的安全和稳定。试想一下,如果有人在比特币网络上发送一笔交易,而这笔交易包含了一个死循环代码,全网所有的矿工会在验证这笔交易时卡死,导致网络瘫痪。那么允许复杂逻辑和循环的以太坊又是如何防止死循环的呢?这便涉及以太坊的 Pos 共识机制,即在以太坊上运行每一行代码、每一步计算都需要消耗一定数量的 Gas,而且发起交易的人还必须预先支付一笔 ETH 作为 Gas,在这种情况下,一旦有人写了死循环,代码会开始运行,但 Gas 会消耗殆尽,而一旦 Gas 用完,矿工会强制停止执行代码,回滚状态并没收付出的 ETH。我们可以概括说,图灵完备使得以太坊从原来作为单纯的「去中心化记账本」的比特币网络变成了可以运行各种程序的灵活的「操作系统」,而 Pos 共识机制则是防止该系统死机的「保险丝」。
从中也可以看出,比特币以牺牲灵活性换取安全性和稳定性,专注于其货币、价值存储和转移(转账)的价值,强调资产属性。
由此,我们反推以太坊的价值——全球性的世界计算机,强调的是应用属性。这里的「全球性」不只是在世界各地都有节点,如同我们在《如何理解区块链》中介绍的那样。事实上,除了遍布世界各地,还要求以太坊像一台单一的、全球共享的世界计算机那样。这意味着以太坊计算机不属于任何人,但任何人无论身处哪个国家,只要能连接上互联网,就可以部署自己的智能合约、调用别人的智能合约,并把自己的资产、身份、应用逻辑绑在这个全球共享的状态机上,同时它强抗审查、抗宕机,任何单一节点离线也不会让整个网络停摆。在这份世界计算机内记录着所有账户的余额、所有智能合约的存储变量、内部状态,还有所有已发生的交易与事件,在这些基础上还衍生出 DeFi、NFT 和 DAO。
01-18 分享会:Key Hash Based Tokens:从 ERC-721 到 ERC-7962 #
- 今晚分享会的主讲人本人正是 ERC 的作者 Alex.Tian。
- NFT 就是基于 ERC-721 的一个实践,在现实世界里通常表达为一个藏品——类似于文物、字画。
- 商业组织或者机构在发展社区的过程中,用户的标识在 Web3 世界里往往会以某个 ETH 地址体现。组织会部署 ERC-721 智能合约,通过 mint 给予用户身份。
- ERC-7962 出现的现实需求背景:会员身份属于隐私数据,但是如果把 ZK 应用其中,就能够在不暴露隐私的情况下进行数据交易,在现实社会中非常有意义。
- ERC-7962 的原理涉及「零知识证明」。
- 零知识证明:在不暴露具体细节的情况下,能够向第三方证明数据的某些特性。
- 提供 proof(x,f),向第三方证明 x + y = z,但是proof(x,y)无法反推出 x 和 y 的具体值。比如,有两个整数值,第三方关注其和或者乘积是某个值,但是不能暴露具体值。
- 关于「零知识证明」,可以参考李永乐的讲解《神奇的零知识证明:既能保守秘密,又让别人相信你》。
- ERC-7962 是在 ERC-721 的基础上应用 ZK 原理保证了向第三方证明其归属,但是不暴露其真实地址。(现实场景需求:会员身份)(例子:星巴克—机场)。
- ERC-7962 以 KeyHash (公钥哈希)而非地址作为资产所有权标识。谁发起都可以,这意味着所有权与交易发起地址解耦。用户只需要签名表达意图,无需持币、无需理解 Gas、无需管理地址隐私,也能完成资产操作——好处是什么呢?Web2.0 从用户可能难以理解 Web3 中的运行,比如需要单独的钱包应用,管理自己的公钥私钥,但我们希望能把他们带进来。
- Web3 的 Gas 费用在现实中或许难以被外行人接收,ERC-7962 下的交易模型中的 relayer/paymaster 可以代付,但是代付 Gas 费在现实中不容易实现。
- Alex.Tian 认为 AI 的表述有时比自己想的更加形象,推荐使用。似乎在其开发 ERC-7962 时,就与 AI 进行沟通。