一、什么叫智能合约
区别于比特币,以太坊最大的不同是引入了智能合约的概念,也因此让以太坊与众不同。
“智能合约(Smart Contract)”概念于1994年由一名身兼计算机科学家及密码学专家的学者尼克·萨博首次提出的,是一种自动执行的合约,各方之间的协议条款直接写入代码行。其中包含的代码和协议存在于分布式、去中心化的区块链网络中。代码控制执行,交易可追踪且不可逆。智能合约允许在不同的匿名方之间进行可信的交易和协议,而无需中央权威、法律系统或外部执行机制。
它并不是以太坊发明的,简单说它是一些可以运行在区块链上的代码——或者说是计算机逻辑运算。
二、智能合约账户和普通账户的区别
首先,智能合约是以太坊网络上的一种特殊账户。有用户账户也有智能合约账户。
一个用户账户包括:
- 一个地址(类似于你的银行账号-它也存在于比特币上)
- 余额(有多少钱)
一个智能合约账户包括:
- 一个地址
- 余额(以太坊)
- 一个状态
- 代码
地址和普通账户的地址是一样的,它是该账户的唯一识别符。
余额和普通账户也是一样的概念。令人激动的是,智能合约上的余额意味着代码可以拥有金钱。它可以处理这些钱,也可能因为编码错误而造成处理不当。
智能合约帐户的状态是智能合约中声明的所有字段和变量的当前状态。
智能合约的代码是编译好的字节代码,以太坊客户端和节点可以在上面运行。它是在创建智能合约时执行的代码,并且包含可以调用的函数。可以根据输入来执行各种各样的功能。
智能合约可以调用其它的智能合约。这就开启了类似创建中间商的能力,这些中间商可以自己花钱和进行交易,也就让创建更复杂的功能成为可能。
三、以太坊交易 VS 比特币交易
比特币交易非常简单。只做一件事、一种类型的交易。概括说可以归结为 TO (接收方),FROM (发送方)和 AMOUNT(数量)。这使得比特币成为一种价值储存,并能够在网络参与者之间转移价值。
以太坊的不同之处在于交易还有一个DATA(数据)字段。该DATA字段支持三种类型的交易:
1.价值转移(和比特币一样)
- TO 接收地址
- DATA 字段为空或包含要附加的任何消息
- FROM 发送方
- AMOUNT 是你要发送的以太坊数量
交易时可以留各种信息,比如中本聪在2009年1月4日那天,在创世区块上留下了当天泰晤士报的头条新闻标题,“财政大臣正准备进行第二次银行紧急财政援助”;直至现在,我们依然能够在链上找到中本聪这一踪迹。
2.创建智能合约
- TO 字段为空(它触发智能合约的创建)
- DATA 字段包含编译为字节代码的智能合约代码
- FROM 发送方
- AMOUNT 可以是 0 或者任意你想放在合约里的以太坊数量
一个空的 TO 字段表示创建一份智能合约。DATA 字段包含编译为字节代码的智能合约。例如:
3.调用智能合约
- TO 字段是智能合约账户地址
- DATA 字段包含函数名称和参数 —— 如何调用智能合约
- FROM 发送方
- AMOUNT 可以是 0 或者任何数量的以太坊,比如你需要为一项服务合约支付的数目
如下,通过to后面的地址就可以调用一个合约了。
简单概括,通过转账(交易),我们就可以进行智能合约的创建、调用等一系列动作。
这个过程不是免费的,转账需要消耗手续费,可以避免有人无休止去调用智能合约。
执行也必须经过区块的确认,这样就保证了无法篡改和公开透明。
四、智能合约如何工作
先是开发者通过合约用户来定义智能合约的业务逻辑,然后普通用户才能利用智能合约完成各个账户之间的交易,最后合约与合约之间的交互使得整个系统能有序进行。
比如我们可以通过我们的钱包账户,像小狐狸Metamak、imToken、比特派bitpie等,通过交易来调用已经部署好的智能合约。
现在DeFi非常火,应用也比较多,其中去中心化借贷平台是主要的应用之一,它的部署主要用的就是智能合约,我们可以试着去理解下。
借贷的逻辑是超额抵押,和传统当铺的运作方式很类似,假设我手里有BTC,但我缺少USDT,而我又不想去卖手中的BTC,这个时候就可以去抵押借贷。
抵押就是把钱包中的BTC转账到指定的地址,假设调用智能合约B,当借贷平台收到我的BTC后,就允许我借一部分USDT,比如最多借80%,这个时候我就可以再次调用智能合约进行借款,假设我抵押了100USDT的BTC,我调用合约借了40USDT。
这个时候假设智能合约A是负责清算的,如果平台规定超过80%就会被清算,意味着我抵押的BTC价值如果低于50USDT,相当于抵押物BTC价格降了50%,智能合约就会自动启动清算,比如清算会扣掉10%的费用等等。因为如果使用,一定要降低风险,安全第一。
你可能会好奇,它怎么知道价格降了呢?
借贷平台会引入预言机,简单来说就是监控BTC的价格,假设是智能合约C负责时时监控价格,当价格达到清算点时,会与另外的智能合约交互,这样就完成了相应的功能。
通过上面的例子,你可能理解了,智能合约更像是一个个的算法,就像If。。。Then。。。语句一样,如果达到什么条件,就做什么动作。
你可能还有疑问,你不说智能合约在以太坊链上吗?那BTC在以太坊链抵押是怎么回事呢?
其实资产是可以跨链的,比如在以太坊链上发行一个ERC20格式的WBTC,然后通过锚定比特币链的BTC,保证1:1关系。
这个也可以通过智能合约实现,每锁定一个比特币链的BTC,就最多发行一个ERC20格式的WBTC,然后锁定地址公开可查,这样资产就可以在不同的链上流动了。目前ERC20的WBTC已经发行了20.592万个了。
而且,智能合约不只是可以用在以太坊上,可以用在多个支持智能合约的链上,比如币安智能链、火币生态链、Solana链等等,再加上资产的跨链,就会让智能合约实现各种各样的功能,打开一个丰富多彩的世界。
内容整理来源:
Understanding Ethereum Smart Contracts
翻译、排版:恬儿
内容团队:李卫军、寂寞不语、杨卫祥、穆逸扬
本文主理人:杨卫祥
顾问:Sylvia
统筹:志刚
技术支持:运营组