編者按:從 2008 年誕生以來,區(qū)塊鏈走過了十多年的風(fēng)雨路,繁衍出比特幣、以太坊、EOS等諸多公有鏈。誕生于 2014 年的以太坊,到今天已經(jīng)走過了整整 5 個(gè)年頭。本文將圍繞以太坊,介紹相關(guān)基礎(chǔ)知識(shí),提供各種查詢工具、社群鏈接,幫助大家更加深入學(xué)習(xí)以及在以太坊上進(jìn)行開發(fā)。
記者 | 秦曉峰
編輯 | 盧曉明
以下為本入門手冊目錄:
一、以太坊是什么?
二、以太坊代幣
三、節(jié)點(diǎn)、網(wǎng)絡(luò)、賬戶與錢包
四、以太坊挖礦
五、智能合約與DApp開發(fā)
六、以太坊的發(fā)展歷史
七、以太坊社區(qū)治理:基金會(huì)、社群、貢獻(xiàn)者介紹
八、其他
在介紹以太坊之前,如果你對(duì)區(qū)塊鏈以及比特幣還不了解,可以閱讀《區(qū)塊鏈 100 問》、《區(qū)塊鏈課堂100問》或者觀看一下這個(gè)視頻《比特幣的原理》。
(Odaily星球日?qǐng)?bào)注:本文帶有下劃線的部分均可以點(diǎn)擊跳轉(zhuǎn)至相關(guān)鏈接。)
什么是以太坊?根據(jù) 以太坊白皮書定義,以太坊是一個(gè)全新開放的區(qū)塊鏈平臺(tái),它允許任何人在平臺(tái)中建立和使用通過區(qū)塊鏈技術(shù)運(yùn)行的去中心化應(yīng)用;它是一個(gè)開放源代碼的項(xiàng)目,由全球范圍內(nèi)的很多人共同創(chuàng)建,允許用戶按照自己的意愿創(chuàng)建復(fù)雜的操作;以太坊核心是以太坊虛擬機(jī)(“EVM”)/智能合約,可以執(zhí)行任意代碼,用計(jì)算機(jī)科學(xué)術(shù)語說,以太坊的虛擬機(jī)是“圖靈完備的”。
以太坊究竟是什么?推薦閱讀以太坊創(chuàng)始人 Vitalik Buterin 的文章《以太坊是什么》。
此外,我們建議大家可以閱讀一下以太坊白皮書,盡管不一定能全部看懂,但是可以從一個(gè)更高的維度去把握以太坊。除了白皮書,以太坊還有黃皮書、紫皮書。
以太坊白皮書:2014 年初,由以太坊創(chuàng)始人 Vitalik Buterin (V 神)發(fā)表,從技術(shù)方面來看,白皮書只是描述了一種新技術(shù)的理論(英文版/中文版);
以太坊黃皮書:2014 年 4 月,由 Gavin Wood 博士(以太坊聯(lián)合創(chuàng)始人兼CTO)發(fā)布,號(hào)稱以太坊的技術(shù)圣經(jīng),將以太坊虛擬機(jī)(EVM)等重要技術(shù)規(guī)格化(中文版/英文版);
以太坊紫皮書:2016年,V 神發(fā)布了一份紫皮書,為解決區(qū)塊鏈的效率和能耗問題,提供了一種將POS和基于分片證明進(jìn)行合并的解決方案,包括提高可擴(kuò)展性、確保經(jīng)濟(jì)終結(jié)性和提高計(jì)算機(jī)抗審查等(英文版/中文版)。
關(guān)于以太坊,國內(nèi)和國外都有一些以太坊文庫可以參考,Odaily星球日?qǐng)?bào)推薦:《以太坊官方中文文檔》、以太坊愛好者知識(shí)庫、ethdocs英文版;如果不愿意看文字版的,視頻也是個(gè)不錯(cuò)的選擇,推薦《以太坊入門》。
2014 年 1 月,Vitalik 在美國佛羅里達(dá)州邁阿密舉行的北美比特幣會(huì)議上正式宣布了以太坊。
同年 6 月,以太坊基金(Stiftung Ethereum)在瑞士楚格成立,并在隨后的 42 天內(nèi)對(duì)第一批公開預(yù)售的以太幣進(jìn)行分配,凈賺31591比特幣,當(dāng)時(shí)價(jià)值 1840 萬美元,售出大約6010 萬個(gè)以太幣。銷售所得首先用于償還日益增加的法律債務(wù),回報(bào)開發(fā)者們數(shù)月以來的努力,以及資助以太坊的持續(xù)開發(fā)。
代幣是什么?
什么是以太坊代幣?簡單來講,以太坊代幣是內(nèi)置在以太坊區(qū)塊鏈上的數(shù)字資產(chǎn)。如果將以太坊區(qū)塊鏈看作一個(gè)程序,代幣在某種程度上就是程序中的流通貨幣/積分,不同的是,傳統(tǒng)的積分只能由程序的設(shè)置者發(fā)行,而以太坊上的代幣任何人都可以發(fā)行。
以太坊上的代幣分為兩種:一種是以太坊區(qū)塊鏈原生代幣以太幣(ETH);另一種是按照以太坊提供的工具和標(biāo)準(zhǔn)開發(fā)所發(fā)行的代幣(比如BNB)。兩者的區(qū)別最直觀在于流通場景,ETH是以太坊網(wǎng)絡(luò)的通貨,鏈上的每次操作/交易都需要付燃料費(fèi)(有點(diǎn)像手續(xù)費(fèi));BNB 等代幣無法支付燃料,只有 ETH 可以。在幣安、火幣和 OKex 等鏈下交易所、鏈上去中心化交易所或線下 P2P,BNB 等代幣也可以按一定比率換成 ETH。
代幣可以固定總發(fā)行量以及流通量,也可以不固定,比如 ETH 至今仍未停止增發(fā),盡管去年 4 月 Vitalik 曾提議將 ETH 供應(yīng)量上限定為 1.2 億。
代幣可以用來做什么呢?每個(gè)代幣的屬性和功能都要遵守其預(yù)期用途的約束,比如支付訪問網(wǎng)絡(luò)、驅(qū)動(dòng)智能合約、激勵(lì)用戶對(duì)某個(gè)協(xié)議的使用或者充當(dāng)生態(tài)運(yùn)行燃料(即 Gas,下面會(huì)解釋)。當(dāng)然也有一些代幣沒有任何實(shí)際用途,在其生態(tài)中也并非完全必須的,發(fā)行代幣也只是項(xiàng)目圈錢的手段。
代幣通常通過“原始貨幣眾籌”(Initial Coin Offering,ICO)的銷售方式或者挖礦(后文會(huì)解釋)的方式進(jìn)入公眾視野。代幣創(chuàng)建者會(huì)通過提供內(nèi)置代幣,來交換以太幣、比特幣或其他數(shù)字資產(chǎn)。2017 年的 ICO熱潮就是這樣被炒起來的,魚龍混雜,各種跑路事件層出不窮。
推薦閱讀《代幣為什么存在,如何使用》、《以太坊代幣入門指南》以及以太坊創(chuàng)始人V 神的文章《關(guān)于代幣發(fā)售模型》。
代幣標(biāo)準(zhǔn)
目前,以太坊上代幣超過 1000 種,不同的代幣發(fā)行標(biāo)準(zhǔn)也各不相同。最常見的就是 ERC-20 代幣,它也是各個(gè)代幣的標(biāo)準(zhǔn)接口。不同的標(biāo)準(zhǔn)有不同特點(diǎn),比如 ERC-20 代幣可以繼續(xù)分解,更類似貨幣;但是 ERC-721 即非同質(zhì)代幣(NFTs)卻是不可以。目前 ERC-20 是最多項(xiàng)目用于發(fā)幣的標(biāo)準(zhǔn)。
然而,ERC-20 代幣標(biāo)準(zhǔn)很可能會(huì)造成終端用戶的資金丟失,主要的問題在于無法處理 ERC-20 代幣轉(zhuǎn)賬函數(shù)執(zhí)行的 ERC-20 收入交易,ERC-233 應(yīng)運(yùn)而生。ERC-233 定義了一個(gè)標(biāo)準(zhǔn)函數(shù),能夠防止意外發(fā)送代幣到(不支持該標(biāo)準(zhǔn)的)合約中,同時(shí)也讓代幣的轉(zhuǎn)賬就像以太坊轉(zhuǎn)賬一樣。
除此之外,還有 ERC-777(基于操作者的代幣標(biāo)準(zhǔn))、ERC-809 (非同質(zhì)代幣的租賃標(biāo)準(zhǔn))等 23 種不同的代幣發(fā)行標(biāo)準(zhǔn)。想要了解更多,可以閱讀。
查詢工具推薦
關(guān)于ERC-20 代幣,有一個(gè)專門的網(wǎng)站可以查詢,這便是 ethplorer——它可以查詢以太坊上代幣及代幣排名比較。你知道以太坊生態(tài)中除了ETH,那個(gè)代幣的市值最高嗎?這個(gè)網(wǎng)站可以給你答案。除此之外,它還有其他功能,包括錢包、ICO查詢(收費(fèi))。
對(duì)于二級(jí)市場的參與者,尤其是參與過多次私募的投資者而言,最害怕的就是項(xiàng)目方套現(xiàn)跑路。dappcapitulation瀏覽器不僅可以看到以太坊創(chuàng)世“巨鯨”的賬戶余額,還能看到以太坊上各個(gè)項(xiàng)目方的賬戶余額,防止項(xiàng)目方套現(xiàn)跑路。
最后推薦一個(gè)可以查看以太坊鏈上的大額轉(zhuǎn)賬的瀏覽器——Tokenview,除了以太坊還有其他幾十種代幣都可以,數(shù)據(jù)可以追蹤到幾個(gè)月前。
節(jié)點(diǎn)
節(jié)點(diǎn)可以簡單理解為運(yùn)行著以太坊客戶端的計(jì)算機(jī)/服務(wù)器,所有以太坊節(jié)點(diǎn)通過網(wǎng)絡(luò)連接組成主網(wǎng)。根據(jù)運(yùn)行的客戶端類型不同,可以分為全節(jié)點(diǎn)和輕節(jié)點(diǎn),輕節(jié)點(diǎn)需要通過連接主節(jié)點(diǎn)獲取最新數(shù)據(jù)和發(fā)起交易。
關(guān)于全節(jié)點(diǎn)、輕節(jié)點(diǎn)以及歸檔節(jié)點(diǎn)的區(qū)別,推薦閱讀Odaily星球日?qǐng)?bào)編譯的《以太坊節(jié)點(diǎn)運(yùn)行成本》;想要查看各個(gè)節(jié)點(diǎn),推薦使用節(jié)點(diǎn)瀏覽器ethernodes。
帳戶與錢包
以太坊帳戶可以用來存儲(chǔ)所有的以太坊代幣(不僅僅是ETH),創(chuàng)建時(shí)不需要花費(fèi) gas(EOS的賬戶創(chuàng)建要花費(fèi)少量gas)。一個(gè)帳戶就是一個(gè)私鑰和公鑰地址對(duì)。公鑰可以理解為賬戶地址,私鑰可以理解成賬戶的密碼、鑰匙。
區(qū)塊鏈地址是根據(jù)非對(duì)稱加密算法,生成私鑰和公鑰,從公鑰根據(jù)一系列的計(jì)算推導(dǎo)出地址。任何人均可以生成大量的私鑰、公鑰、地址,可是用人力自己計(jì)算非常不現(xiàn)實(shí)。區(qū)塊鏈錢包正是幫助我們生成私鑰、公鑰、生成符合某個(gè)公鏈規(guī)范的工具。具體計(jì)算方式請(qǐng)參照《什么是區(qū)塊鏈錢包》。
區(qū)塊鏈錢包可以分為熱錢包、冷錢包、托管錢包等不同種類,不同的錢包性質(zhì)、安全性與易用性不同,其中熱錢包易用性較高,但因?yàn)槁?lián)網(wǎng)而容易被盜私鑰;冷錢包本質(zhì)是私鑰存儲(chǔ)工具、安全性較高;托管錢包則私鑰由運(yùn)營方托管。具體差異,推薦閱讀《區(qū)塊鏈數(shù)字貨幣錢包分類》。
以太坊錢包客戶端也有很多種,推薦閱讀《6種以太坊(ETH)錢包的基本介紹》:
Ethereum 官方錢包:瀏覽器 Mist。Mist是一個(gè)全節(jié)點(diǎn)錢包(全節(jié)點(diǎn)錢包通俗的來說就是同步了全部的以太坊區(qū)塊信息的錢包)。也就是說打開錢包后,電腦會(huì)自動(dòng)同步全部的以太坊區(qū)塊信息。優(yōu)勢是安全度高,不需要經(jīng)過第三方發(fā)起交易,節(jié)點(diǎn)未同步完成之前無法查看地址余額;劣勢是無法調(diào)整Gas 價(jià)格,對(duì)網(wǎng)絡(luò)要求高,需要連接全節(jié)點(diǎn),才能發(fā)起交易。
Parity 錢包:原以太坊基金會(huì)部分成員開發(fā)的錢包。功能強(qiáng)大,也是一個(gè)全節(jié)點(diǎn)錢包。優(yōu)勢是安全度高,不需要經(jīng)過第三方發(fā)起交易;劣勢是對(duì)網(wǎng)絡(luò)要求高,需要連接節(jié)點(diǎn)才能發(fā)起交易。
imToken:移動(dòng)端錢包,操作簡便,在imToken上生成的錢包私鑰保存在手機(jī)本地,平臺(tái)方并無備份。
請(qǐng)注意:這里我們需要辨析一點(diǎn),節(jié)點(diǎn)、錢包、瀏覽器三者并未完全沖突的,成為節(jié)點(diǎn)可以說是做區(qū)塊瀏覽器基礎(chǔ)。就拿Mist來說,它是一個(gè)瀏覽器,因?yàn)樗樵償?shù)據(jù),因此是構(gòu)建在一個(gè)全節(jié)點(diǎn)上的;但與此同時(shí),它也有管理功能,可以管理私鑰和公鑰,因此也是一個(gè)錢包。當(dāng)然,并非所有的錢包都要求是全節(jié)點(diǎn)。
主網(wǎng)與測試網(wǎng)
以太坊一直以來有兩種網(wǎng)絡(luò)——主網(wǎng)以及測試網(wǎng)。主網(wǎng),通常是所有客戶端的默認(rèn)網(wǎng)絡(luò);所謂的測試網(wǎng)是用來模擬主網(wǎng)的行為,功效與主網(wǎng)相同,因此開發(fā)者可以在測試網(wǎng)上開發(fā)和測試自己的智能合約、發(fā)幣等等,作為上鏈前的環(huán)境評(píng)估。反之,當(dāng)主網(wǎng)對(duì)以太坊協(xié)議進(jìn)行任何重大改變時(shí),其測試主要在這些測試網(wǎng)絡(luò)上完成。
最常用的3種測試網(wǎng)分別是 Ropsten、Kovan、Rinkeby。
Ropsten:只支持 geth 客戶端,一個(gè) POW 的區(qū)塊鏈,非常類似于以太坊主網(wǎng),但由于低計(jì)算量,容易遭到 DDOS 攻擊。過去受到垃圾攻擊,問題較多。
Kovan:只支持 Parity 客戶端;一個(gè) POA 的區(qū)塊鏈,不能挖礦。
Rinkeby:支持 geth和Parity 客戶端;一個(gè)POA的區(qū)塊鏈,不能挖礦。盡管計(jì)算量低,但是對(duì)惡意行為者更有彈性。
對(duì)于開發(fā)中的測試環(huán)境,建議使用 Rinkeby 或 KoVan 測試鏈