關(guān)于以太坊智能合約,你所需要知道的都在這里

我們常常聽(tīng)到人們對(duì)于區(qū)塊鏈發(fā)展時(shí)期的劃分。以比特幣的出現(xiàn)定義區(qū)塊鏈1.0時(shí)代,以太坊的出現(xiàn)定義區(qū)塊鏈2.0時(shí)代。比特幣在整個(gè)區(qū)塊鏈?zhǔn)澜缋?,扮演了價(jià)值存儲(chǔ)的功能,所以被稱為數(shù)字黃金,而以太坊的出現(xiàn)則定義了智能合約的時(shí)代。

如何準(zhǔn)確的定義以太坊?我認(rèn)為以太坊在區(qū)塊鏈?zhǔn)澜缰邪缪萘巳齻€(gè)角色:它是一條以工作量證明為共識(shí)機(jī)制的公鏈,采用與比特幣不同的抗ASIC挖礦算法,計(jì)劃轉(zhuǎn)為POW+POS Hybrid,名為Casper的共識(shí)算法;它是一個(gè)應(yīng)用平臺(tái),具有幾乎圖靈完備的計(jì)算能力,能夠運(yùn)行比較復(fù)雜的智能合約以及基于合約的app;它同時(shí)又是一種加密貨幣,用于支付在以太坊公鏈調(diào)用合約和記錄數(shù)據(jù)時(shí)產(chǎn)生的手續(xù)費(fèi);

之所以說(shuō)以太坊開(kāi)啟了一個(gè)時(shí)代,是因?yàn)樗沟没趨^(qū)塊鏈技術(shù)構(gòu)建生態(tài)成為可能。美國(guó)SEC曾經(jīng)定義所有的數(shù)字貨幣,本質(zhì)上可以分為兩類,一類是security token,一類是utility token。前者指有融資功能的數(shù)字貨幣,后者指有實(shí)際效用的數(shù)字貨幣。由于大部分區(qū)塊鏈項(xiàng)目離落地應(yīng)用非常遙遠(yuǎn),所以大多數(shù)數(shù)字貨幣屬于security token。而這一景象主要?dú)w功于以太坊的問(wèn)題,我認(rèn)為,以太坊從去年到今年初的暴漲也主要由于它解決了一個(gè)極為剛需的問(wèn)題——中小企業(yè)的融資問(wèn)題。

今天我們就以ERC20代幣為例從技術(shù)層面來(lái)深入解讀一下以太坊智能合約。智能合約是1990s年代由尼克薩博提出的,由于缺乏可信的執(zhí)行環(huán)境,一直沒(méi)有得到實(shí)際應(yīng)用。區(qū)塊鏈技術(shù)出現(xiàn)后,人們發(fā)現(xiàn)區(qū)塊鏈天生可以喂智能合約提供可信的執(zhí)行環(huán)境。以太坊的創(chuàng)始人Vitalik最早看到了區(qū)塊鏈與智能合約與區(qū)塊鏈的契合,發(fā)布了《以太坊:下一代智能合約與去中心化應(yīng)用平臺(tái)》。

我們知道,區(qū)塊鏈的本質(zhì)是一個(gè)分布式賬本系統(tǒng),在比特幣網(wǎng)絡(luò)里,區(qū)塊里記錄的主要是比特幣的轉(zhuǎn)賬交易信息。而在以太坊的區(qū)塊中,記錄的除了轉(zhuǎn)賬信息以外,還有可執(zhí)行的代碼。

首先,我們需要了解一個(gè)很重要的概念,叫做EVM(Ethereum Virtual Machine),也就是以太坊的虛擬機(jī)。以太坊的每個(gè)節(jié)點(diǎn)都會(huì)運(yùn)行虛擬機(jī),它不僅能夠執(zhí)行代碼,還可以讀寫區(qū)塊中可執(zhí)行的代碼和數(shù)據(jù),校驗(yàn)數(shù)據(jù)簽名等等。如果把比特幣比喻成功能手機(jī),以太坊就像是智能手機(jī)。

在以太坊中,有兩種賬戶,一種叫外部賬戶,是人操作的正常賬戶,地址即公鑰,由私鑰控制;一種叫合約賬戶,地址隨機(jī)產(chǎn)生,有點(diǎn)像游戲中的NPC(非玩家控制角色,non-player character)。

在外部賬戶發(fā)起并且改變區(qū)塊鏈上數(shù)據(jù)的行為叫交易,比如轉(zhuǎn)賬、部署合約和調(diào)用合約等等;與之相對(duì)應(yīng)的是查詢,指僅僅查看鏈上的數(shù)據(jù)而不改變,這種操作并不消耗gas。

那么什么叫智能合約呢?簡(jiǎn)而言之,智能合約指能夠在EVM上運(yùn)行的代碼和數(shù)據(jù),是區(qū)塊鏈系統(tǒng)的內(nèi)部應(yīng)用,擁有自己的賬戶地址和存儲(chǔ)空間。外部賬戶可以部署智能合約,通過(guò)向合約地址提交一筆交易即可調(diào)用合約。而合約一旦部署,所有節(jié)點(diǎn)都會(huì)自動(dòng)執(zhí)行,并對(duì)執(zhí)行結(jié)果進(jìn)行驗(yàn)證。同樣,智能合約本身是代碼,無(wú)論是代碼還是數(shù)據(jù)都具有可追溯、一致性、不可篡改的特點(diǎn),即使是合約創(chuàng)建者也無(wú)法對(duì)代碼進(jìn)行改動(dòng)。

目前來(lái)說(shuō),最受歡迎的智能合約開(kāi)發(fā)語(yǔ)言是Solidity,編譯為字節(jié)碼后部署到主網(wǎng),通過(guò)外部賬戶發(fā)送轉(zhuǎn)賬進(jìn)行調(diào)用。經(jīng)過(guò)實(shí)測(cè),大家可以嘗試發(fā)布一個(gè)token玩玩。推薦步驟如下:

1.??? 用MetaMask新建一個(gè)以太坊錢包

2.??? 錢包選擇以太坊測(cè)試網(wǎng)絡(luò)Ropsten

3.??? 用測(cè)試網(wǎng)絡(luò)獲取eth

4.??? 用Remix進(jìn)行編碼和編譯

5.??? 用MEW進(jìn)行合約部署

6.??? 用EtherScan進(jìn)行交易跟蹤和合約瀏覽

因?yàn)橛辛酥悄芎霞s的加持,以太坊擁有了操作系統(tǒng)級(jí)別的想象空間,也是目前來(lái)說(shuō)生態(tài)最好的公鏈,因?yàn)樗业搅俗约旱膹?qiáng)應(yīng)用場(chǎng)景。回歸到行業(yè)本身,雖然我們?cè)陂_(kāi)頭提到了區(qū)塊鏈的1.0與2.0時(shí)代,但整個(gè)行業(yè)依然處于非常早期,我們完全也可以說(shuō)現(xiàn)在是0.1與0.2時(shí)代。

作為一個(gè)區(qū)塊鏈行業(yè)的從業(yè)者,我認(rèn)為之所以有必要科普區(qū)塊鏈技術(shù),正是為了明晰區(qū)塊鏈技術(shù)的邊界。區(qū)塊鏈本身作為一種高冗余的數(shù)據(jù)存儲(chǔ)方式,以犧牲系統(tǒng)效率為代價(jià)提升安全性等等,并不是天生適用于所有的應(yīng)用場(chǎng)景。對(duì)于所有公鏈來(lái)說(shuō),在未來(lái)一段時(shí)間的寒冬里,有充足的耐心去解決現(xiàn)有的區(qū)塊鏈技術(shù)痛點(diǎn)以及培育生態(tài)才是真正不辜負(fù)這個(gè)時(shí)代。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容