Fintoch分投趣系統合約開發搭建

搭建猿punk2558發表於2023-03-10

智慧合約(smart contract)其實不智慧,也不是一個合約。它是在鏈上執行的一段程式程式碼,而這段程式程式碼執行著一套開發者寫好的規則或準則,所以類似於合約有著對簽約雙方的規定一樣。寫好的合約被部署到鏈上之後,也會以一個地址的形式被表示(和錢包一樣),而不同的錢包也都能對這個合約傳送交易。

在Etherscan等Explorer上我們也能查訊到這個合約的程式程式碼、分投趣系統合約13z開4z77發z558,看到哪些地址跟合約互動等等。例如下圖就是與Uniswap V2:Router 2這個合約互動的交易紀錄,可以看到交易的接收者(“to”)不是一個錢包地址而是一個合約的地址(紅色框框內)。在第二欄的部分也能看到這些交易是跟合約裡的什麼功能(function)互動,例如“Swap Exact Tokens for Tokens”就是在Uniswap交易所交易代幣時會呼叫的功能。

智慧合約的用途

在上一段我們有提到智慧合約執行著一套開發者寫好的規則,那這些規則有什麼應用呢?最基本的就是用來發行代幣,只要是應用代幣或是NFT就都是由合約產生的,但原生代幣沒有智慧合約。這就是$WETH和$ETH的不同,$WETH和其他代幣一樣屬於基於智慧合約的代幣,而$ETH則是以太坊的原生代幣。不論是哪種代幣都能在合約裡面定義這代幣符合的規則,(例如以太坊的ERC-20、ERC-721、ERC-1155)它的供給量、代幣的代號(symbol)等等。

鏈上所有的應用程式(dApp)也都是由智慧合約驅動的,不論是借貸協議、去中心化交易所(DEX)、預言機或NFT市場。這些協議都是由一個或多個智慧合約組成的,而合約裡面都會寫好各式功能,讓協議能正常被使用者使用。例如我們剛剛舉例的“Swap Exact Tokens for Tokens”功能,就能在下圖合約上看到當使用者地址呼叫這個功能時,合約會做什麼相對應的操作。

智慧合約與鏈的互動

寫智慧合約的語言有很多中,每一條鏈支援的語言也不太一樣,常見的語言有Solidity,Vyper和Rust。在鏈上執行合約的環境稱為虛擬機器(VM),不同的鏈也有各自不同的環境(例如以太坊的就稱為EVM),而這些環境能適用的程式語言也不同。像是以太坊的EVM就只能執行由Solidity寫的智慧合約,這也讓Solidity成為現在最普遍的智慧合約語言。

EVM-compatible鏈指的就是這些鏈的執行環境與以太坊的EVM是相容的,這也代表這些鏈所適用的語言大都是Solidity。加上智慧合約大都是開源的,所以只要是EVM-compatible的鏈都有很多從以太坊複製(fork)上去的協議,這些協議的智慧合約大多都沒有更動,主要是更改協議名稱以及網頁介面而已。下圖可以看到Uniswap就被複制了252次,Compound、Olympus DAO等以太坊上的知名專案也有很多複製品。這也讓EVM-compatible的鏈能快速的複製成功的協議,並形成豐富的生態,但也因而較缺乏創新的協議。比較知名的EVM-compatible鏈有Polygon、幣安鏈、Avalanche,non-EVM-compatible的鏈則有Solana、Terra等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020115/viewspace-2939067/,如需轉載,請註明出處,否則將追究法律責任。

相關文章