「智能合约」这个词这些年可谓相当火热。那智能合约到底是什麽?是真的神乎其神,还是有被夸大之嫌,这篇文章就来简要探讨一下。
智能合约是什麽
智能合约这个名词,最早是在 1994 年由电脑科学家及密码学家 Nick Szabo 所提出,其对智能合约的定义是:
智能合约的目标是为了达到现实生活中常见的「合约」条件(例如支付条款、留置权、保密性,甚至强制执行),最大限度地减少恶意和意外的情况,并最大限度地减少对可信中介的需求。相关的经济目标包括降低欺诈损失、仲裁和执行成本以及其他交易成本。
浅显的说「智能合约」就是用一段高度可信的电脑程式,来制定「合约」条款,在达至特定条件时可以不受干扰的执行先前约定的逻辑。
近年来区块链技术的蓬勃发展,为智能合约提供了非常好的发展基础。区块链的透明性,分散性,不可更改性等特性,正好满足了一个可信的「智能合约」存在基础。
运作方式
智能合约中「智能」二字可能听上去有点虚幻。其实「智能合约」就是一段部署到区块链网路上的一段程式码,区块链提供了一个类似伺服器的「程式运行环境」以供智能合约执行,智能合约执行后,将运行结果反馈到区块链上。从这个层面上来讲,「智能合约」和传统的程式码并无区别。其基本构成,也就是一系列的条件判断和数据纪录,例如:
- 如果当前时间是 2025 年,则这个地址可以获得 2 ETH;
- 如果获得超过两个被授权人士允许,则用户可以提取 2 ETH
等等!
「智能合约」和传统的程式码的较为不同之处在于运行环境不一样。 传统的程式码大多运行在中心化的伺服器中,而智能合约则是运行在去中心化的区块链上。而且基于区块链的不可更改性,发佈到区块链上的程式码本身不可更改(程式码不能更改不等于程式逻辑不能更改,下文会具体分析),合约执行的过程也相对透明,任何人都可以看到和验证合约执行结果。
实际应用
基于区块链的透明性,分散性,不可更改等特性,智能合约可以被广泛运用在众多有着「去中心化」,「记账」,「数据纪录」,「逻辑判断」需求的领域。例如金融保险、医疗保健、供应链、博彩、物联网、政务处理等等行业或领域。
在金融行业, 因为银行的一些金融活动,例如汇款等操作,在现时的银行系统中是一个涉及到多系统,多机构的冗长过程,参与的机构众多,各方都需要付出时间和金钱成本。利用智能合约的技术,则可以提供更快捷,透明,点对点的资金流动,大大提升金融流动效率。因此,区块链和智能合约在金融行业的应用也越来越多,大到国家发行的数字人民币,小到去中心化交易系等等,智能合约技术在金融领域得到了非常广泛的应用。
不仅仅是金融行业,在其他领域,例如物流行业,智能合约也有着极大的「用武之地」。早在 2018 年,IT 巨头 IBM Corp. 和全球航运公司 AP Moller-Maersk Group 推出名为 TradeLens 的基于区块链创建的供应跟踪和供应链管理平台,而智能合约则在系统中发挥的作用至关重要。经过大量测试证明,该技术的使用能够有效减少文书工作的成本,减少运输时间,大大降低运营成本。
风险和局限
儘管智能合约有很好的运用前景,但智能合约的风险和局限我们也要同样重视。
首先并不是所有场景都适合智能合约,儘管智能合约的确和普通程式一样可以编写业务逻辑,但是基于区块链的诸多限制和特性,无论是功能性还是运行效能,智能合约尚且不能和传统应用程式相提并论。因此,我们应该只在适合的场景下才採用智能合约技术,而不是将智能合约「神话化」,认为智能合约可以解决所有问题。
另外,智能合约编写漏洞所导致的安全问题,也是採用智能合约时需要考量的重点。因为智能合约的逻辑,如果没有做出特别处理,一旦发佈上区块链,则无法做出程式码层面的更改,因此如果没有经过严谨测试,合约程式中的漏洞将会导致不可挽回的后果。 因为智能合约代码疏漏导致的损失层出不穷,例如 Akutar NFT 的智能合约,就是因为将 bidIndex
错误的写为totalBids
这样一个超级简单的人为错误,而导致高达 11,539 ETH,当时价值 2 亿港元的资金永久封锁在了智能合约中。
很多人都说智能合约一经发佈则不可更改程式码或阻止程式执行,这个说法其实也并不准确。的确,智能合约的程式码本身一经发佈则不可更改,但是一个完整的智能合约不仅仅包括程式码本身,还有一系列的状态变数 (state variable),这些状态变数可以透过调用预先写好的程式逻辑而被更改, 而且,因为状态变数的改变,智能合约完全可以执行截然不同的逻辑。 另外现时智能合约可以透过代理合约的方式,做到「逻辑更新」动作,即「可升级智能合约」。
另外,目前有很多文章指出智能合约会自动执行,这个说法也有待斟酌。直到目前为止,基于 EVM 的区块链上的智能合约只有在被调用时才会被执行。所谓「调用」,可以是一个使用者钱包,也可以是其他的智能合约,但任何调用的最初始触发总是由使用者钱包所产生。换句话说,只要没有人主动调用,智能合约就不会运行。儘管区块链社区有类似智能合约自动运行的提案,但目前并没有实际的标准和实现。所以对于有关「合约部署后就会自动执行」的说法并不完全准确。
结语
智能合约作为区块链技术上的一大技术基础,有着广阔的应用前景。许多传统行业的应用,或多或少可以使用智能合约和区块链技术来简化流程,节省成本。 随着整个区块链行业的快速发展,智能合约技术亦会不断提升,从而逐步扩展更多应用场景。在 2022 年的今天,各大公司机构,甚至政府部门,都在逐渐研究运用区块链和智能合约相关技术的可行性。 尽早踏足区块链和智能合约领域,势必会在 web 3.0 发展如火如荼的当下抢佔先机,助其业务发展。
Frank Shi
UD区块链技术主管
.拥有深入层面区块链技术知识
.致力研究及参与区块链项目开发及Web3 应用未来发展