这篇将跟大家介绍「智能合约」的概念,我们将带大家了解智能合约是什么、智能合约和链之间是怎么互动的。有兴趣了解的朋友就继续看下去吧!
这篇的内容将分为:
- 智能合约是什么
- 智能合约的用途
- 智能合约与链的互动
智能合约(smart contract)其实不智能,也不是一个合约。它是在链上运行的一段程序代码,而这段程序代码运行着一套开发者写好的规则或准则,所以类似于合约有着对签约双方的规定一样。写好的合约被部署到链上之后,也会以一个地址的形式被表示(和钱包一样),而不同的钱包也都能对这个合约发送交易。在Etherscan等Explorer 上我们也能查讯到这个合约的程序代码、看到哪些地址跟合约互动等等。例如下图就是与Uniswap V2 : Router 2这个合约互动的交易纪录,可以看到交易的接收者(“to”)不是一个钱包地址而是一个合约的地址(红色框框内)。在第二栏的部分也能看到这些交易是跟合约里的什么功能(function)互动,例如“Swap Exact Tokens for Tokens” 就是在Uniswap交易所交易代币时会呼叫的功能。
Etherscan 上与Uniswap V2 : Router 2 合约互动的交易。资料来源:Etherscan
在上一段我们有提到智能合约运行着一套开发者写好的规则,那这些规则有什么应用呢?最基本的就是用来发行代币,只要是应用代币或是NFT 就都是由合约产生的,但原生代币没有智能合约。这就是$WETH 和$ETH 的不同,$WETH 和其他代币一样属于基于智能合约的代币,而$ETH 则是以太坊的原生代币。不论是哪种代币都能在合约里面定义这代币符合的规则,(例如以太坊的ERC-20、ERC-721、ERC-1155)它的供给量、代币的代号(symbol)等等。
链上所有的应用程序(dApp)也都是由智能合约驱动的,不论是借贷协议、去中心化交易所(DEX)、预言机或NFT 市场。这些协议都是由一个或多个智能合约组成的,而合约里面都会写好各式功能,让协议能正常被用户使用。例如我们刚刚举例的“Swap Exact Tokens for Tokens” 功能,就能在下图合约上看到当用户地址呼叫这个功能时,合约会做什么相对应的操作。
Etherscan 上可以直接看到Uniswap V2 : Router 2 合约里的功能(function)。资料来源:Etherscan
写智能合约的语言有很多中,每一条链支援的语言也不太一样,常见的语言有Solidity, Vyper 和Rust。在链上执行合约的环境称为虚拟机器(VM),不同的链也有各自不同的环境(例如以太坊的就称为EVM),而这些环境能适用的程序语言也不同。像是以太坊的EVM 就只能执行由Solidity 写的智能合约,这也让Solidity 成为现在最普遍的智能合约语言。
由Solidity 写的智能合约大约占84%。资料来源:DeFiLlama
EVM-compatible 链指的就是这些链的执行环境与以太坊的EVM 是兼容的,这也代表这些链所适用的语言大都是Solidity。加上智能合约大都是开源的,所以只要是EVM-compatible 的链都有很多从以太坊复制(fork)上去的协议,这些协议的智能合约大多都没有更动,主要是更改协议名称以及网页介面而已。下图可以看到Uniswap就被复制了252 次,Compound、Olympus DAO等以太坊上的知名项目也有很多复制品。这也让EVM-compatible 的链能快速的复制成功的协议,并形成丰富的生态,但也因而较缺乏创新的协议。比较知名的EVM-compatible 链有Polygon、币安链、Avalanche,non-EVM-compatible 的链则有Solana、Terra等。
以太坊上成功的协议都被复制过非常多次。资料来源:DeFiLlama
以上就是我们有关「智能合约」这个主题的介绍,希望有帮助大家了解链上的应用程序是怎么运作的。
免责声明: 文章源于会员发布,不作为任何投资建议
如有侵权请联系我们删除,本文链接:https://www.sws100.com/biquan/303827.html