Cover photo

智能合约基础

基本概念

在区块链网络上运行的不可篡改程序,当满足特定预定义条件时就会执行。

因为智能合约运行在区块链上,因此不受中央管理员的控制。

智能合约的历史

智能合约的基础概念最初由美国计算机科学家Nick Szabo于1994年提出。在他的开创性著作中,他给出了广泛的智能合约定义:“执行合约条款的计算机化交易协议”。其一般目标是“满足常见的合约条件,最小化恶意和意外的例外情况,并最小化对可信中介人的需求”。

智能合约的一般概念可以在像自动售货机这样的系统中看到(例如,我们选择特定的数字,掉出一瓶可乐)。但区块链成为了数字、防篡改和无需许可的智能合约的基础。

智能合约的下一个重大飞跃是在 Vitalik Buterin 于2013年发布以太坊白皮书后发生的。在2015年,以太坊作为一种可编程智能合约的新型区块链推出。以太坊智能合约区块链提供了一个可以同时运行许多独立智能合约的“全球计算机”。

智能合约的运作机制

智能合约的基本逻辑为:“如果/当事件x发生,则执行操作y。”一个智能合约可以有多个不同的条件,一个应用程序可以有多个不同的智能合约。

智能合约涉及多个独立的各方,这些各方可能互相不认识,也不一定互相信任。智能合约确切地定义了用户如何与它交互,包括谁可以与智能合约交互、在什么时候以及什么输入会产生什么输出。

智能合约也有多种编程语言,以以太坊的Solidity最为流行

以下是一个简单的全球贸易智能合约可能包含以下条款:

  • Term 1:如果货物准时到达,则从零售商向供应商支付全部金额。

  • Term 2:如果货物迟到一天,则从零售商向供应商支付98%的全额。

智能合约的优势

很明显,因为区块链的存在,智能合约解决了中间人可能带来的麻烦,以及解决了对于对手方的不信任的问题。

智能合约应用案例

  • 游戏和 NFT:基于区块链的游戏利用智能合约进行不可篡改的游戏操作执行。

  • 去中心化金融(DeFi):应用程序利用智能合约重新创建传统金融产品和服务,如货币市场、期权、稳定币、交易所和资产管理。

  • 保险:根据特定情况进行保险理赔,显而易见。

流行的智能合约 Coding Languages

  • Solidity

    • Ethereum虚拟机(EVM)最流行的区块链编程语言,也广泛应用于一系列兼容EVM的区块链。

    • 优点 :

      • Solidity的语法也类似于JavaScript,这是世界上最流行的编程语言之一,对于转向Web3的开发人员来说是一个很好的起点。

      • Solidity社区比较完备,开发人员可以访问更多的库和工具,以及在论坛中得到的开发人员支持。

    • 缺点:

      • Solidity的语法有时可能会令人困惑,其函数重载特性在代码可读性方面一般般。

      • 对于高级Web3开发人员,使用Solidity编码通常会导致比较高的Gas成本,而低级别语言的Gas成本更低。

  • Vyper

    • EVM兼容区块链上仅次于 Solidity 的第二流行的 Web3 编程语言。它是一种面向合约的、类似于Python的编程语言。

    • 优点:

      • Vyper 代码看起来和感觉像Python,使其成为Python开发人员开始Web3开发之旅的最佳起点之一。

      • Vyper 还拥有简单的语言和编译器实现,这有助于提高代码可读性和可审计性,使开发人员更容易在生产中构建安全的智能合约。作为第二流行的智能合约编程语言,Vyper拥有与Solidity相同的许多工具和资源。

    • 缺点:

      • Vyper 缺乏 Solidity 具有的广泛社区支持。

      • Vyper还缺少修饰符、类继承和递归调用等。许多这些功能的缺失是出于设计上的考虑,目的是最大程度地提高合约的安全性和可审计性,但这需要开发人员额外的工作来解决这些限制。

*Solidity 和 Vyper 是智能合约开发中的最流行的两种语言,但现在也出现了各种新兴的区块链编程语言。

  • Yul:一种用于以太坊的编程语言,支持EVM。

  • Cairo:主要用于StarkNet——一种建立在以太坊之上的第二层区块链。

  • Rust:适用于许多非EVM兼容的区块链,如Polkadot和Solana。

  • Move:主要用于Aptos和Sui区块链,而且在这之外几乎没有支持。

智能合约平台

以太坊——第一个智能合约平台。以太坊的目标是创建一个“全球计算机”,可以同时运行许多智能合约,而不是网络本身作为智能合约的执行者。

区块链平台存在“区块链三难问题”:即传统的区块链只能最大程度地实现其中的两个属性。

  • 可扩展性(Scalability)

  • 去中心化性(Decentralization)

  • 安全性(Security)

一个可扩展且去中心化的网络需要激励大量积极参与者以实现高安全性。

一个可扩展且安全的网络通常会提高运行节点的成本,以换取去中心化。

安全和去中心化的网络保持运行完整节点的要求低,攻击网络的成本高,但会导致可扩展性瓶颈。