智能合约是交易性的计算机程序,它可以在不需要干预的情况下自动执行协议条款。在90年代早期,尼克·萨博首次提出智能合约概念。但由于技术限制,它们无法正常运行。直到基础区块链技术得到改进,智能合约的应用才成为可能。
就区块链而言,智能合约的本质是数字协议,一旦达到预定的标准,它就会在区块链上存储和执行。一旦有了特定的输入,它就会自动执行预先确定的特定输出。
智能合约可以用多种不同的语言编写,其中Solidity是最受欢迎的语言之一。但由于最近技术的不断进步,现在智能合约可以用更传统的编程语言编写,在WebAssembly虚拟机上编译和部署。这不仅使智能合约的部署变得更容易,而且还具有效率和速度的优势。
function changePrice(uint _price) public onlyOwner { price = _price; } } contract Mutex { bool locked; modifier noReentrancy() { require( !locked, "Reentrant call." }; locked = true; _; locked = false; }
基于区块链技术构建一套通用的分布式,通过引入中心化要素,无需第三方托管机构,以准实时的方式自动建立信任实现价值转移,通过区块链技术将所交易的资产转化为“智能合约”,完成点对点的实时交易、清算与结算,能够显著降低价值转移的成本,大幅度提升清算、结算流程效率,缩短清算与结算时间,并通过效率和透明度的提升来增强投资者的信心。
pragma solidity ^0.4.16; contract test { enum ActionChoices { GoLeft, GoRight, GoStraight, SitStill }; ActionChoices choice; ActionChoices constant defaultChoice = ActionChoices.GoStraight; function setGoStraight() public { choice = ActionChoices.GoStraight; } // 由于枚举类型不属于 |ABI| 的一部分,因此对于所有来自 Solidity 外部的调用, // "getChoice" 的签名会自动被改成 "getChoice() returns (uint8)"。
智能合约远胜于传统交易流程,因为它们有可能实现自动化,在某些情况下,甚至可以完全取代整个行业。同时,智能合约使交易更加公平、透明和安全。但是,除了实现自动化和改进单一的交易过程之外,智能合约还能发挥更大的作用。它们能够使完全去中心化的应用程序和组织得以发展。这意味着,我们现在可以建立数字服务,甚至整个机构都可以在没有集中控制的情况下自动有效地运作。