以太坊基础开发入门教程,完整入门【转】
翻譯自:https://medium.com/@mattcondon/getting-up-to-speed-on-ethereum-63ed28821bbe
?
從入門到精通,干貨篇。
?
必讀,如果你:
?
-
是一個(gè)專業(yè)的程序員
-
如果你想了解以太坊當(dāng)前可以做到什么程度,通過(guò)什么,如何做到。
?
預(yù)備知識(shí):
?
????1. 你需要知道區(qū)塊鏈的概念及實(shí)現(xiàn)一個(gè)無(wú)需信任的電子貨幣的運(yùn)作原理。可以先看看長(zhǎng)版(https://www.youtube.com/watch?v=bBC-nXj3Ng4),如果你覺(jué)得太長(zhǎng),可以看看短版(https://www.youtube.com/watch?v=l9jOJk30eQs)。但我還是建議,看那個(gè)長(zhǎng)的視頻。
????2. 如果你是一名軟件工程師,擁有軟件開(kāi)發(fā)的經(jīng)驗(yàn)。能知道從系統(tǒng)、架構(gòu)角度學(xué)一個(gè)東西,其實(shí)能倍增學(xué)習(xí)效果。
????3. 如果有一周的空閑時(shí)間。好了,下面開(kāi)始就不再是廢話了。
????4. 你需要了解merkle tree(https://en.wikipedia.org/wiki/Merkle_tree)的基本概念,看他是如何做到防止信息篡改,以及信息自校驗(yàn)的(譯者注:可以看我曾經(jīng)翻譯的以太坊官方的關(guān)于merkle tree的文章,http://me.tryblockchain.org/Ethereum-MerklePatriciaTree.html?)。
?
不用必須讀白皮書,只需要了解一些基本概念。但說(shuō)實(shí)話,如果不讀,不會(huì)相信這些概念,從而不能真正明白這些概念,所以讀白皮書也許仍然是最快的方式。
?
我建議你完整的讀一下本文,從一個(gè)較高的層面了解一下,然后再挑感興趣的,一一鉆研,也許要花幾天時(shí)間哦。
?
你最后會(huì)發(fā)現(xiàn),區(qū)塊鏈就是建立在樸實(shí)無(wú)華的基本技術(shù)之上,一點(diǎn)也不神奇。雖然最近各種ICO把它炒得非常熱。每個(gè)人都是站在巨人的肩膀上,如果你是程序員,你能對(duì)這些項(xiàng)目和技術(shù),理解得更深。所以不要因?yàn)槠渌恍┰闫?#xff0c;而失去了一個(gè)提升自己的機(jī)會(huì)。
以太坊
?
以太坊,Ethereum(https://www.ethereum.org/)是一個(gè)分布式的計(jì)算機(jī),有許多的節(jié)點(diǎn),其中的每一個(gè)節(jié)點(diǎn),都會(huì)執(zhí)行字節(jié)碼(其實(shí)就是智能合約),然后把結(jié)果存在區(qū)塊鏈上。由于整個(gè)網(wǎng)絡(luò)是分布式的,且應(yīng)用就是一個(gè)個(gè)的狀態(tài)組成,存儲(chǔ)了狀態(tài)就有了服務(wù);所以它就能永不停機(jī),沒(méi)有一個(gè)中心化的結(jié)點(diǎn)(沒(méi)有任何一個(gè)節(jié)點(diǎn)說(shuō)了算,去中心化的),任何第三方不能干預(yù)。
?
顯然上面這一段話,直接解釋了以太坊是什么。但你可能有非常多的問(wèn)題。可以先讀一下以太坊的白皮書(https://github.com/ethereum/wiki/wiki/White-Paper)。或者看下這個(gè)視頻,25分鐘理解以太坊(https://www.youtube.com/watch?v=66SaEDzlmP4)。(譯者注:以太坊入門,確實(shí)沒(méi)有什么好的辦法,就是看白皮書最好,最快)
智能合約
?
智能合約與平時(shí)的代碼其實(shí)沒(méi)有什么區(qū)別,只是運(yùn)行于一個(gè)以太坊這樣的分布式平臺(tái)上而已。這個(gè)運(yùn)行的平臺(tái),賦予了這些代碼不可變,確定性,分布式和可自校驗(yàn)狀態(tài)等特點(diǎn)。代碼運(yùn)行過(guò)程中狀態(tài)的存儲(chǔ),是不可變的。每一個(gè)人,都可以開(kāi)一個(gè)自己的節(jié)點(diǎn),重放整個(gè)區(qū)塊鏈,將會(huì)獲得同樣的結(jié)果(譯者注:能控制所有節(jié)點(diǎn)都達(dá)到一致?tīng)顟B(tài),就是所謂的共識(shí))。
?
在以太坊中,每個(gè)合約都有一個(gè)唯一的地址來(lái)標(biāo)識(shí)它自己(由創(chuàng)建者的哈希地址和曾經(jīng)發(fā)送過(guò)的交易的數(shù)量推算出來(lái))。客戶端可以與這個(gè)地址進(jìn)行交互,可以發(fā)送ether,調(diào)用函數(shù),查詢當(dāng)前的狀態(tài)等。
?
智能合約,本質(zhì)上來(lái)說(shuō)就是代碼,以及代碼運(yùn)行后存儲(chǔ)到區(qū)塊鏈上的狀態(tài)兩個(gè)元素組成。比如,你用來(lái)收發(fā)ETH的錢包,本質(zhì)上就是一個(gè)智能合約,只是外面套了一個(gè)界面。
?
概念非常強(qiáng)大,而我相信你已經(jīng)看完了。而你在看相關(guān)的新聞,經(jīng)常聽(tīng)到這個(gè)非常有潛力,經(jīng)常聽(tīng)到資產(chǎn)/權(quán)利管理,分權(quán)自治組織(DAO),身份,社交網(wǎng)絡(luò)等炫酷。但他本質(zhì)就是這些。
Gas
?
智能合約,就是一些代碼,運(yùn)行整個(gè)分布式網(wǎng)絡(luò)中。由于網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)都是一個(gè)全節(jié)點(diǎn)。這樣的好處是容錯(cuò)性強(qiáng),壞處是效率低,消耗資源與時(shí)間(譯者注:原來(lái)只在一個(gè)節(jié)點(diǎn)執(zhí)行一次就行,現(xiàn)在所有節(jié)點(diǎn)中每一個(gè),都要執(zhí)行一模一樣的運(yùn)算)。因?yàn)閳?zhí)行計(jì)算要花錢,而要執(zhí)行的運(yùn)算量與代碼直接相關(guān)。所以,每個(gè)在網(wǎng)絡(luò)運(yùn)行的底層操作都需要一定量的gas。gas只是一個(gè)名字,它代表的是執(zhí)行所需要花費(fèi)的成本(譯者注:由于以太坊是圖靈完備的,隨便一個(gè)死循環(huán)就將導(dǎo)致網(wǎng)絡(luò)不可用,所以引入了gas的概念)。整個(gè)分布式網(wǎng)絡(luò)引入了強(qiáng)制限制,來(lái)避免停機(jī)問(wèn)題(https://en.wikipedia.org/wiki/Halting_problem)。因此如果你寫一個(gè)死循環(huán),當(dāng)gas耗盡后,網(wǎng)絡(luò)就會(huì)拒絕執(zhí)行接下來(lái)的操作,并且回滾你之前的所有操作。
?
gas的價(jià)格由市場(chǎng)決定,類似于比特幣的交易費(fèi)機(jī)制。如果你的gas價(jià)格高,節(jié)點(diǎn)則將優(yōu)先因?yàn)槔鎲?wèn)題打包你的交易。
?
一般來(lái)說(shuō),在Ethereum中計(jì)算和存儲(chǔ)東西比在傳統(tǒng)環(huán)境中做的更為昂貴,但是,Ethereum為您的代碼提供了上述我們討論過(guò)的那些好的屬性,這可能是一樣有價(jià)值的。
?
一般來(lái)說(shuō),在以太坊網(wǎng)上讀取狀態(tài)是免費(fèi)的,只有寫入狀態(tài)是收費(fèi)的。下面這個(gè)文章是gas概念的一些深度解析(https://hackernoon.com/ether-purchase-power-df40a38c5a2f)。
分布式APP(?App / Dapp / dapp/ dApp)
?
一個(gè)分布式App是指,服務(wù)端運(yùn)行于以太坊網(wǎng)絡(luò)上一個(gè)或多個(gè)智能合約。
?
一個(gè)分布式的App不用將所有狀態(tài)都存儲(chǔ)在區(qū)塊鏈上,或者在鏈上進(jìn)行所有計(jì)算(譯者注:比如圖形渲染),這樣就太花gas了。所以一個(gè)分布式App把需要大家共同信任的狀態(tài)存在區(qū)塊鏈上就好了。許多的分布式應(yīng)用使用后面提到的技術(shù),如IPFS和Gelem,在鏈下進(jìn)行分布式存儲(chǔ)和計(jì)算。雖然沒(méi)在以太坊上,但仍使用的是區(qū)塊鏈技術(shù)。
?
我不知道誰(shuí)開(kāi)始在D上使用這個(gè)小小的缺點(diǎn),是看起來(lái)酷,但會(huì)影響搜索。 你可以自由使用,但盡量方便別人的搜索。
?
以太坊的github上,有一個(gè)dapp-bin的目錄(https://github.com/ethereum/dapp-bin),有一些文檔和示例。使用前,你需要看看文件最近的狀態(tài),因?yàn)樗麄儗⒑芸赡芤呀?jīng)被淘汰。
DApp客戶端
?
大多數(shù)的分布式應(yīng)用都通過(guò)一些用戶友好的前端提供服務(wù),因?yàn)椴皇撬腥硕荚敢馔ㄟ^(guò)命令行,通過(guò)自己手動(dòng)組裝哈希串和操作指令碼進(jìn)行交易。
?
一個(gè)DApp與傳統(tǒng)的開(kāi)發(fā)中的,客戶端或前端是類似,區(qū)別僅在于它們與以太坊的區(qū)塊鏈進(jìn)行交互(也可以同時(shí)與其它服務(wù)交互)。這些客戶端往往用JS編寫,因?yàn)楫?dāng)前還暫時(shí)沒(méi)有完成全部的向NodeJS的轉(zhuǎn)換。
?
另外,大多數(shù)的Dapp客戶端使用JS的原因,是因?yàn)樗梢栽跒g覽器中運(yùn)行,因?yàn)榇蠹叶加袨g覽器,這樣每個(gè)人都可以運(yùn)行了。由于有更多的go語(yǔ)言的開(kāi)發(fā)工具,使用go語(yǔ)言來(lái)寫客戶端的也不少。在現(xiàn)在這個(gè)激烈的發(fā)展期,這意味著,除非你有自己的偏好,否則可能要從go和JS(也許還有,Rust)來(lái)選擇一種語(yǔ)言,來(lái)與以太坊區(qū)塊鏈,以及基于以太坊開(kāi)發(fā)的協(xié)議進(jìn)行交互了。
?
以太坊的一個(gè)核心開(kāi)發(fā)者,寫了一篇關(guān)于使用Meteor工具來(lái)創(chuàng)建Dapp的文章(https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor),這意味著Meteor已經(jīng)成為Dapp客戶端開(kāi)發(fā)的新標(biāo)準(zhǔn)。這絕對(duì)是基于JS建立全棧應(yīng)用時(shí)的一個(gè)首選方法。但需要注意的是Meteor只是提供了一個(gè)開(kāi)發(fā)工具,與DApp客戶端并不等同,DApp客戶端也完全可以由其它方式開(kāi)發(fā)。(譯者注:還有一些其它的開(kāi)發(fā)工具,如Truffle,也是非常不錯(cuò)的哦)。
?
因?yàn)閲@Meteor和DApp開(kāi)發(fā)的活躍,有非常多的包在Atmophere(Meteor的包管理工具),它提供了許多常見(jiàn)的操作,如帳戶管理,從區(qū)塊鏈中獲得最新的50個(gè)區(qū)塊等等。
DApp瀏覽器
?
一個(gè)DApp瀏覽器,正如它字面所表達(dá)的,用來(lái)讓DApp客戶端(常常使用JS與以太坊的智能合約進(jìn)行交互)的使用更加容易。
?
DApp瀏覽器的主要目的是:
?
????1. 提供到一個(gè)以太坊節(jié)點(diǎn)的連接(或者連接到一個(gè)本地節(jié)點(diǎn)或者遠(yuǎn)程節(jié)點(diǎn)),和一個(gè)方便的切換不同節(jié)點(diǎn)(甚至是不同的網(wǎng)絡(luò))。
????2. 提供一個(gè)帳戶(或者一個(gè)錢包)來(lái)方便用戶與DApp交互。
?
Mist(https://github.com/ethereum/mist)是以太坊官方的DApp瀏覽器。一個(gè)漂亮的界面來(lái)與以太坊節(jié)點(diǎn)交互,與智能合約發(fā)、收交易。
?
Status(https://status.im/)是一個(gè)手機(jī)上可以使用的DApp瀏覽器。
?
MetaMask(https://metamask.io/)是一個(gè)Google瀏覽器擴(kuò)展,把Chrome變成了一個(gè)DApp瀏覽器。它的核心特性是注入以太坊提供的js客戶端庫(kù)web3,到每一個(gè)界面,來(lái)讓DApp連接到MetaMask提供的以太坊節(jié)點(diǎn)服務(wù)。不過(guò)這個(gè)Chrome擴(kuò)展,可以允許你管理你的錢包,以及連接到不同的以太坊網(wǎng)絡(luò)(譯者注:包括本地的開(kāi)發(fā)網(wǎng)絡(luò))。
?
Parity(https://parity.io/parity.html)是一個(gè)以太坊客戶端(也是一個(gè)全節(jié)點(diǎn)的實(shí)現(xiàn)),集成到了Web瀏覽器,并使之成為一個(gè)DApp瀏覽器。
以太坊節(jié)點(diǎn)
?
與比特幣的節(jié)點(diǎn)類似。每個(gè)節(jié)點(diǎn)都存儲(chǔ)了整個(gè)區(qū)塊鏈的數(shù)據(jù),并重放所有的交易以驗(yàn)證結(jié)果的狀態(tài)。你可以通過(guò)geth(https://github.com/ethereum/go-ethereum/wiki/geth)來(lái)運(yùn)行一個(gè)全節(jié)點(diǎn)(官方的節(jié)點(diǎn),go語(yǔ)言),或者parity來(lái)運(yùn)行一個(gè)輕節(jié)點(diǎn),它是第三方的,Rust語(yǔ)言寫的。
?
你的節(jié)點(diǎn)需要知道從哪個(gè)區(qū)塊鏈下載數(shù)據(jù),以及與哪些節(jié)點(diǎn)交互,后面會(huì)說(shuō)明一些常見(jiàn)的網(wǎng)絡(luò)。
?
你也許可以運(yùn)行下所有這些節(jié)點(diǎn)客戶端。如果你不想自己運(yùn)行一個(gè)這樣的節(jié)點(diǎn),有第三方的網(wǎng)關(guān)服務(wù),比如Infura(https://infura.io/)可以選擇。另外還有專門用于測(cè)試和開(kāi)發(fā)的,本地版本的節(jié)點(diǎn),后面會(huì)提到。
?
如果你正在開(kāi)發(fā)一個(gè)DApp的客戶端,你并不總是需要主動(dòng)提供連接到以太坊的節(jié)點(diǎn)。因?yàn)镈App的瀏覽器一般會(huì)提供對(duì)應(yīng)的連接(譯者注:話說(shuō)這樣,那使用這個(gè),還得額外安裝一個(gè)DApp瀏覽器呀)。
以太坊代幣
?
現(xiàn)在你應(yīng)該知道我們可以通過(guò)寫智能合約,并將狀態(tài)存到區(qū)塊鏈上了?那如果,在狀態(tài)這塊,我們存的是一個(gè)Map類型,鍵是地址,值是整數(shù)。然后我們將這些整數(shù)值叫做余額,誰(shuí)的余額呢?它就是我們要說(shuō)的代幣(譯者注:代幣的數(shù)據(jù)結(jié)構(gòu)就是這樣簡(jiǎn)單,存的就是某個(gè)用戶,它當(dāng)前的余額)。
?
是的,所有你剛才聽(tīng)到的代幣,只是一些數(shù)據(jù),存儲(chǔ)在一個(gè)哈希表里,通過(guò)api或者所謂的協(xié)議,來(lái)進(jìn)行增刪改查。這是一個(gè)簡(jiǎn)單的基本合約(https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/BasicToken.sol)。
?
你可以看看ethereum的創(chuàng)建一個(gè)眾籌合約的官方教程(https://www.ethereum.org/crowdsale)。你將會(huì)發(fā)現(xiàn)它僅僅是一個(gè)合約(Crowdsale)與另一個(gè)合約(MyToken)交互,和前面的基本合約類似。并沒(méi)有什么神奇的地方。
?
人們使用代幣來(lái)做各種各樣的事情,阻攔大家如何使用的只有想像力。代幣常常用來(lái)激勵(lì)用戶與某個(gè)協(xié)議進(jìn)行交互,或者證明對(duì)某個(gè)資產(chǎn)的所有權(quán),投票權(quán)等等。Coinbase的Fred有一個(gè)很好的關(guān)于代幣,為什么存在,如何使用的文章(https://www.youtube.com/watch?v=rktHO5R8Y9c)。
?
Ethereum的創(chuàng)始人Vitalik最近有一個(gè)關(guān)于代幣發(fā)售模型,也是一篇不錯(cuò)的文章(http://vitalik.ca/general/2017/06/09/sales.html)。
ERC20代幣與ERC23代幣
?
每個(gè)人都開(kāi)始定義自己與代幣的交互協(xié)議,但這些很快顯得陳舊,所以一些人開(kāi)始集結(jié)起來(lái),創(chuàng)建了ERC20代幣接口標(biāo)準(zhǔn)(https://github.com/ethereum/eips/issues/20)。大概意思是說(shuō),我們定義這些接口,這樣大家可以相互統(tǒng)一調(diào)用,比如轉(zhuǎn)帳定義為transfer,第一個(gè)參數(shù)為要轉(zhuǎn)去的帳戶地址address _to,第二個(gè)參數(shù)為要發(fā)送的ether的uint _value數(shù)量。
?
有些人覺(jué)得ERC20協(xié)議過(guò)于復(fù)雜了,所以他們提議了ERC197(https://github.com/ethereum/EIPs/issues/179),稍微簡(jiǎn)單一點(diǎn)。
?
由于在ERC20中存在的一個(gè)小問(wèn)題,有人提議了一個(gè)新的ERC23(https://github.com/ethereum/EIPs/issues/223)。ERC23是向后兼容ERC20的。如果你已經(jīng)創(chuàng)建了一個(gè)代幣合約,可以嘗試來(lái)支持ERC23。
?
看起來(lái)ERC223和ERC23是相同的概念;ERC的值是223,但是當(dāng)引用時(shí),作者和所有的其它人誤寫成了ERC23非常多次,它現(xiàn)在也還是這樣引用的。如果一句話說(shuō)清楚的話,ERC223是規(guī)范號(hào),代幣說(shuō)明時(shí)稱為ERC23代幣就好了。
協(xié)議代幣與App幣
?
協(xié)議代幣為用來(lái)激勵(lì)對(duì)某個(gè)協(xié)議的使用。比如,REP,Augur的聲譽(yù)代幣,用來(lái)鼓勵(lì)對(duì)Augur去中心化預(yù)測(cè)協(xié)議的使用。大多數(shù)的以太坊的ERC20/ERC23代幣都是協(xié)議代幣,比如Golem的GNT,ICONOMI,BAT等等。
?
App幣則是用來(lái)激勵(lì)對(duì)某個(gè)特定DApp或客戶端的使用,而不是因?yàn)槠涫褂玫膮f(xié)議提供的價(jià)值。其中一個(gè)例子是Status的SNT代幣,可以用來(lái)在應(yīng)用內(nèi)獲得價(jià)值(比如,進(jìn)行消息推送,投票權(quán),獲得用戶名等等)。
?
這種范式的轉(zhuǎn)變是,我們可以開(kāi)始投資協(xié)議代幣而不是應(yīng)用程序代幣,因?yàn)槲覀兛梢越⒃谒鼈冎?#xff08;任何人都可以在協(xié)議之上構(gòu)建一個(gè)dapp,或?yàn)閷?shí)現(xiàn)該協(xié)議的Dapp構(gòu)建一個(gè)Dapp客戶端)。
?
之前,這并不可能,因?yàn)榧用艽鷰?#xff0c;以及接下來(lái)的協(xié)議創(chuàng)新的時(shí)代(http://continuations.com/post/148098927445/crypto-tokens-and-the-coming-age-of-protocol),為了實(shí)現(xiàn)貨幣化,你自己可以在協(xié)議之上創(chuàng)建一個(gè)應(yīng)用,并實(shí)現(xiàn)贏利。因?yàn)槟阕约嚎梢詫?shí)現(xiàn)協(xié)議的貨幣化,大家可以在未來(lái)更好的協(xié)作。
?
你也許可以閱讀一下,關(guān)于0xProject的下面這篇文章,關(guān)于這兩者區(qū)別的詳細(xì)說(shuō)明(https://blog.0xproject.com/the-difference-between-app-coins-and-protocol-tokens-7281a428348c)。
與智能合約交互
?
你與智能合約的交互(也稱做調(diào)用函數(shù)和讀取狀態(tài))通過(guò)連接到某個(gè)以太坊節(jié)點(diǎn),并執(zhí)行操作碼。當(dāng)前有各種各樣的以太坊客戶端,可以方便進(jìn)行開(kāi)發(fā)。Geth和parity都提供了控制臺(tái)或?yàn)g覽器的方式來(lái)更好的與智能合約交互。
?
如果你想要一個(gè)程序的庫(kù)用來(lái)與智能合約交互的接口,也有這樣的客戶端實(shí)現(xiàn)。對(duì)于JS語(yǔ)言,可以使用web3.js。以于go語(yǔ)言,可以使用在go-ethereum(https://github.com/ethereum/go-ethereum)中的abigen的程序,提供了go包,用來(lái)與智能合約交互。
?
如果只是用來(lái)測(cè)試和開(kāi)發(fā),可以使用ethereumjs-testrpc(https://github.com/ethereumjs/testrpc)來(lái)運(yùn)行一個(gè)本地節(jié)點(diǎn)(譯者注:這個(gè)節(jié)點(diǎn)壓短區(qū)塊時(shí)間等,可以方便打整的開(kāi)發(fā)與測(cè)試)。
?
當(dāng)你部署了一個(gè)智能合約,你實(shí)際進(jìn)行的操作是向地址0x0發(fā)送了一個(gè)交易,使用當(dāng)前合約內(nèi)容作為參數(shù),一個(gè)以太坊交易詳解(https://medium.com/@codetractio/inside-an-ethereum-transaction-fa94ffca912f)。
Truffle和Embark
?
一旦你開(kāi)始寫智能合約,你會(huì)重復(fù)做大量的操作,比如編譯源碼為字節(jié)碼和abi,部署到網(wǎng)絡(luò),測(cè)試然后部署合約等等。你也許希望更關(guān)注于你想要實(shí)現(xiàn)的東西。
?
Truffle和Embark框架,標(biāo)準(zhǔn)化和自動(dòng)化了這些瑣碎的工作。它們提供了一個(gè)好的開(kāi)發(fā),部署,以及更為重要的,測(cè)試智能合約的體驗(yàn)。
?
你可以查看這個(gè)文章(http://truffleframework.com/docs/getting_started)來(lái)開(kāi)啟使用Truffle的旅程。
?
這篇文章,提供了使用Truffle來(lái)部署以及與智能合約交互的文章(https://blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05)。
?
Embark(https://github.com/iurimatias/embark-framework)提供了類似的,幫助開(kāi)發(fā)者組織工程的稍有些不同的工具。
?
當(dāng)你一開(kāi)始接觸智能合約這塊時(shí),應(yīng)該盡量不要使用框架。直到你明白了使用框架能帶來(lái)的價(jià)值時(shí),才應(yīng)該開(kāi)始使用,正如你不應(yīng)該通過(guò)rails new來(lái)學(xué)習(xí)HTML語(yǔ)言一樣。
ETHPM
?
分享是關(guān)心,所以ETHPM是一個(gè)去中心化的智能合約包管理資源庫(kù)(https://www.ethpm.com/registry)。使用ETHPM,你可以關(guān)聯(lián)或連接到某個(gè)著名的合約或庫(kù),減少代碼重復(fù),盡可能理想的為未來(lái)的開(kāi)發(fā)提供好的基礎(chǔ)。
?
這里的這個(gè)規(guī)范(https://github.com/ethereum/EIPs/issues/190),詳細(xì)的說(shuō)明了相關(guān)的信息以及背景。Truffle和Embark均可與之集成,并創(chuàng)造一個(gè)愉快的開(kāi)發(fā)體驗(yàn)。
網(wǎng)絡(luò)
?
Mainnet-以太坊主網(wǎng),通常是所有客戶端的默認(rèn)網(wǎng)絡(luò)。
?
Ropsten - 以太坊使用工作量證明的主測(cè)試網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò),因?yàn)榈偷挠?jì)算量,容易遭到DDOS攻擊,分片,或者其它問(wèn)題。垃圾郵件攻擊后被暫時(shí)放棄,最近才恢復(fù)使用。(https://github.com/ethereum/ropsten)
?
Kovan-parity客戶端組成的測(cè)試網(wǎng)絡(luò),使用授權(quán)證明來(lái)提升對(duì)垃圾郵件攻擊的抗擾度,并且持續(xù)4秒的阻塞時(shí)間。(https://github.com/kovan-testnet/proposal)
?
Rinkeby-geth客戶端組成的測(cè)試網(wǎng)絡(luò),使用集團(tuán)共識(shí),盡管計(jì)算量低,但是對(duì)惡意行為者更有彈性。(https://www.rinkeby.io/)
?
你可以自己搭建你自己的測(cè)試網(wǎng)絡(luò),也許使用kubernetes(https://github.com/MaximilianMeister/kuberneteth)或者docker-compose(https://capgemini.github.io/blockchain/ethereum-docker-compose/),但也許你將很快就可以不需要花什么時(shí)間。
帳戶與錢包
?
一個(gè)以太坊帳戶就是一個(gè)私鑰和公鑰地址對(duì)。它們可以用來(lái)存儲(chǔ)ether,創(chuàng)建時(shí)不需要花費(fèi)gas。
?
錢包則是用來(lái)管理ether的智能合約(一些代碼)。這里是使用solidity寫的一個(gè)錢包,運(yùn)行于Mist瀏覽器(https://github.com/ethereum/meteor-dapp-wallet/blob/develop/Wallet.sol)。他們可以有許多的特性,比如多用戶簽名,紙?等等。
?
這樣,我們就正確的定義了兩個(gè)名詞,前面看到其它人對(duì)這兩個(gè)術(shù)語(yǔ)的困惑,并把所有能存ether的都叫作Wallet。
EVM以及智能合約創(chuàng)建的狀態(tài)
?
在每個(gè)全節(jié)點(diǎn)網(wǎng)絡(luò)上運(yùn)行的智能合約代碼在EVM內(nèi)執(zhí)行。這是您的標(biāo)準(zhǔn)虛擬機(jī),執(zhí)行一些字節(jié)碼,除了這個(gè)vm與網(wǎng)絡(luò),文件系統(tǒng),進(jìn)程等隔離。沒(méi)有人想要編寫字節(jié)碼,所以我們有一些更高級(jí)別的語(yǔ)言編譯為EVM字節(jié)碼。
?
Solidity
?
Solidity(https://solidity.readthedocs.io/en/latest/)是第一批的描述智能合約的語(yǔ)言。當(dāng)前是最流行的語(yǔ)言,因此也有最多的例子,文檔,和教程。你應(yīng)該學(xué)習(xí)這個(gè),除非你有要學(xué)習(xí)其它的理由。
?
你可以使用基于瀏覽器的Remix IDE(https://ethereum.github.io/browser-solidity/)來(lái)進(jìn)行快速驗(yàn)證。
?
下面是一個(gè)Solidity的合約:
?
pragma solidity ^0.4.11;
contract BasicToken {
mapping(address => uint256) balances;
function transfer(address _to, uint256 _value) returns () {
??? balances[msg.sender] = balances[msg.sender] - _value;
??? balances[_to] = balances[_to] + _value;
? }
function balanceOf(address _owner) constant returns (uint256 balance) {
??? return balances[_owner];
? }
}
?
LLL
?
LLL,是一門Lisp風(fēng)格的底層編程語(yǔ)言,就像語(yǔ)言名稱看到的這樣。雖然以太坊官方并沒(méi)有將它作為主要需要支持的語(yǔ)言,但它仍舊持續(xù)進(jìn)行著更新,且與solidity在同一個(gè)資源庫(kù)(https://github.com/ethereum/solidity)。
?
這是一個(gè)使用LLL語(yǔ)言寫的一個(gè)ERC20代幣的合約(https://github.com/benjaminion/LLL_erc20/blob/1c659e890e2b30408555b9467a8dfd8988211b3b/erc20.lll)
?
LLL示例如下:
?
(seq
? (def 'node-bytes? 0x00)
? (def 'owner??? 0x20) ; address
? (def 'set-node-owner??? 0x5b0fc9c3) ; setOwner(bytes32,address)
? (def 'get-owner (node)
????? (sload (+ node owner)))
//只是用來(lái)示例,不能編譯通過(guò)
?
如果你正在學(xué)習(xí),也許不是那么的容易習(xí)慣LLL語(yǔ)言的寫法。
Serpent
?
Serpent(https://github.com/ethereum/serpent/tree/develop)是一個(gè)類Python的高級(jí)語(yǔ)言,最終也會(huì)被編譯為EVM字節(jié)碼。它主要被Augur團(tuán)隊(duì)使用。
?
但最近Zeppelin Solution團(tuán)隊(duì)發(fā)現(xiàn)其編譯器有一個(gè)嚴(yán)重的bug(https://blog.zeppelin.solutions/serpent-compiler-audit-3095d1257929),在這個(gè)問(wèn)題被修復(fù)之前都不建議繼續(xù)使用。
?
如果你對(duì)Augur如何解決這些漏洞感興趣,你可以閱讀Zeppelin Solution的這篇文章(https://blog.zeppelin.solutions/augur-rep-token-critical-vulnerability-disclosure-3d8bdffd79d2)。
?
Serpent的合約看起來(lái)如下:
?
def register(key, value):
??? # Key not yet claimed
??? if not self.storage[key]:
??????? self.storage[key] = value
??????? return(1)
??? else:
??????? return(0)? # Key already claimed
def ask(key):
??? return(self.storage[key])
?
其它
?
在各種可用性和發(fā)展?fàn)顟B(tài)中還有一堆其他的高級(jí)語(yǔ)言,而且無(wú)疑將會(huì)被開(kāi)發(fā)出來(lái)。 為了廣泛采用,語(yǔ)言和編譯器必須經(jīng)過(guò)徹底的審查和測(cè)試,這當(dāng)然需要時(shí)間。
智能合約反編譯/Disassembly
?
可以通過(guò)prosity(https://github.com/comaeio/porosity)來(lái)反編譯以太坊智能合約的字節(jié)碼,可以使用evmdis(https://github.com/Arachnid/evmdis)來(lái)Disassembly。
智能合約的安全
?
一旦一個(gè)智能合約部署到了以太坊的網(wǎng)絡(luò)上,它將是永不可變的,且將永久存在。如果你寫了一個(gè)bug,你將不能下架這個(gè)有問(wèn)題的版本,你只能在后續(xù)的版本中修復(fù)。
?
由于許多工程師開(kāi)發(fā)的Ethereum和其他智能合同平臺(tái)來(lái)自于Web開(kāi)發(fā),所以這個(gè)概念實(shí)在是太新,而且是瘋狂的。
?
ConsenSys有一個(gè)非常棒的資源叫智能合約的最佳實(shí)踐(https://github.com/ConsenSys/smart-contract-best-practices),你應(yīng)該深入的理解一下。
?
一個(gè)Parity的錢包被黑的解釋(https://blog.zeppelin.solutions/on-the-parity-wallet-multisig-hack-405a8c12e8f7)。
?
在你部署你的智能合約的時(shí)候,由于你管理的是真正的資金,你應(yīng)該先開(kāi)一個(gè)賞金計(jì)劃(https://blog.zeppelin.solutions/setting-up-a-bug-bounty-smart-contract-with-openzeppelin-a0e56434ad0e),并盡量保證它完整的測(cè)試過(guò)。
Whisper
?
Whisper(https://github.com/ethereum/go-ethereum/wiki/Whisper-Overview)是一個(gè)集成進(jìn)以太坊的消息系統(tǒng)。它允許DApp發(fā)布小量的信息來(lái)進(jìn)行非實(shí)時(shí)的消息通信。
?
它使用shh協(xié)議。
?
盡管它已經(jīng)有段時(shí)間沒(méi)有更新了,這是一個(gè)使用Whisper協(xié)議實(shí)現(xiàn)一個(gè)聊天客戶端的例子(https://github.com/ethereum/meteor-dapp-whisper-chat-client)。
去中心自動(dòng)化組織(DAOs)
?
這是一個(gè)組織(就像,一群人),其中,使用代碼來(lái)保證最終的強(qiáng)制執(zhí)行,而不是使用傳統(tǒng)的法律文件。這群人使用智能合約來(lái)做常見(jiàn)組織做的所有的事情,比如在某件事上進(jìn)行投票,比如決定是否對(duì)什么進(jìn)行投資等等。
?
副作用是決策,管理,以及對(duì)什么進(jìn)行投資的結(jié)果將會(huì)不可改變的存儲(chǔ)在區(qū)塊鏈上。
?
之前slock.it創(chuàng)建了標(biāo)準(zhǔn)的DAO框架來(lái)說(shuō)明這個(gè)理念。在這里(https://github.com/slockit/DAO/)有對(duì)DAO概念的總覽,以及如何使用框架來(lái)實(shí)現(xiàn)一個(gè)自己的DAO(譯者注:這個(gè)項(xiàng)目由于bug被黑客攻擊了)。
Aragon
?
Aragon(https://aragon.one/)也正在應(yīng)對(duì)挑戰(zhàn),設(shè)計(jì)一個(gè)根據(jù)智能合約邏輯運(yùn)作的公司,重點(diǎn)是創(chuàng)建一個(gè)可以接受投資,處理會(huì)計(jì),支付雇員,分配股權(quán),正如我們現(xiàn)在知道的完成每天的公司的業(yè)務(wù)。他們也實(shí)現(xiàn)了漂亮的DApp客戶端來(lái)讓他們的協(xié)議使用起來(lái)更為簡(jiǎn)單。
?
查看這里Aragon核心合約(https://github.com/aragon/aragon-core/tree/master/contracts)來(lái)更多的理解它是如何做的。
IPFS&FileCoin
?
IPFS(https://ipfs.io/)(星際文件系統(tǒng))是一個(gè)協(xié)議,用來(lái)分發(fā)文件。你可以認(rèn)為它是一個(gè)基于bittorrent和git這樣概念的一個(gè)文件系統(tǒng),文件可以定位,且是不可變的。IPFS以IPLD(http://ipld.io/)數(shù)據(jù)模型存儲(chǔ)信息,它非常有趣,提供了一些特別的特性,你可以通過(guò)下面的說(shuō)明了解一些。
?
這是一個(gè)新的協(xié)議,它有一個(gè)http的網(wǎng)關(guān)和文件系統(tǒng)適配器,這讓你可以通過(guò)http,掛載整個(gè)互聯(lián)網(wǎng)文件系統(tǒng)到你本地的盤/ipfs。IPFS還提供了一個(gè)尋址服務(wù)IPNS(星際命名空間),它允許可變的狀態(tài)(需要注意的是在IPFS里的所有東西都是不可變的)。你甚至可以使用DNS TXT記錄來(lái)定位到你的IPNS客戶端,允許你生成用戶友好的鏈接來(lái)指向到對(duì)應(yīng)的數(shù)據(jù)。
?
FileCoin(https://filecoin.io/)是Protocol Lab為創(chuàng)建一個(gè)去中心化的基于IPFS的存儲(chǔ)市場(chǎng)的努力結(jié)果,也就是向整個(gè)網(wǎng)絡(luò)提供存儲(chǔ)資源的激勵(lì)層。FileCoin的共識(shí)協(xié)議沒(méi)有使用浪費(fèi)資源的工作量證明,而是使用了Proff of Replication和Proof of SpaceTime來(lái)保證每片數(shù)據(jù)被復(fù)制某個(gè)特定的拷貝數(shù)量且存儲(chǔ)某個(gè)特定的時(shí)間。
?
你應(yīng)該讀一下IPFS的白皮書(https://github.com/ipfs/ipfs/blob/master/papers/ipfs-cap2pfs/ipfs-p2p-file-system.pdf),FileCoin的白皮書(https://filecoin.io/filecoin.pdf),以及IPLD的規(guī)范(https://github.com/ipld/specs/tree/master/ipld)。
?
由于當(dāng)前FileCoin還沒(méi)有上線,你可以使用當(dāng)前的IPFS存儲(chǔ)網(wǎng)絡(luò)來(lái)運(yùn)行html/css/js,并把作為一個(gè)類似orbit-db(https://github.com/orbitdb/orbit-db)的數(shù)據(jù)庫(kù)。
Swarm
?
Swarm是一個(gè)去中心化的存儲(chǔ)網(wǎng)絡(luò),集成于以太坊生態(tài)系統(tǒng),作為第一陣營(yíng)的項(xiàng)目,看看這里關(guān)于IPFS與這個(gè)項(xiàng)目的比較和優(yōu)劣(https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM)。但本質(zhì)上,基本上是一樣的,除了它們有不同的哲學(xué),并在底層使用稍微不同的協(xié)議。
項(xiàng)目
Augur
?
Augur(https://augur.net/)是一個(gè)去中心化的預(yù)測(cè)市場(chǎng),讓大家對(duì)于某個(gè)現(xiàn)實(shí)世界的事件進(jìn)行對(duì)賭。一方面,用戶在某個(gè)具體可以發(fā)生的事件上投注,一旦結(jié)果成真,它們贏得的代幣有真正的價(jià)值。為了實(shí)現(xiàn)這個(gè),你需要實(shí)現(xiàn)一個(gè)去中心化的先知協(xié)議,來(lái)輸入現(xiàn)實(shí)世界中的信息,它使用REP協(xié)議代幣來(lái)進(jìn)行經(jīng)濟(jì)激勵(lì)(http://blog.augur.net/guide-to-augurs-rep/)。
?
你可以看看Augur項(xiàng)目的合約代碼(https://github.com/AugurProject/augur-core),以及了解下Augur Master Plan(https://medium.com/@AugurProject/augur-master-plan-42dda65a3e3d)。
Gnosis
?
Gnosis(https://gnosis.pm/)與Augur有類似的理念,也是一個(gè)去中心化的預(yù)測(cè)市場(chǎng)。這是項(xiàng)目的白皮書(https://gnosis.pm/resources/default/pdf/gnosis_whitepaper.pdf),以及與Augur項(xiàng)目的對(duì)比(https://medium.com/@akhounov/hopefully-impartial-comparison-of-gnosis-and-augur-f743d11d6d37)。
Golem
?
Golem(https://golem.network/)是一個(gè)分布式的算力市場(chǎng),以與IPFS一樣的方式構(gòu)建了一整套的提供算力市場(chǎng)。
?
你可以看看FAQ(https://github.com/golemfactory/golem/wiki/FAQ)來(lái)更好的理解。
0xProject
?
0xProject創(chuàng)建了一個(gè)交換代幣的協(xié)議,以及一個(gè)DApp來(lái)實(shí)現(xiàn)這個(gè)協(xié)議。開(kāi)發(fā)者可以創(chuàng)建一個(gè)基于它們自己的分布式應(yīng)用創(chuàng)建交易所(技術(shù)上叫中繼層),而用戶也不用信任這些app就可完成交易,結(jié)算在區(qū)塊鏈上完成。0x協(xié)議旨在使用離線的第三方來(lái)廣播交易和管理訂單(可以創(chuàng)建/更新/刪除訂單,而不用直接向Ethereum發(fā)送緩慢/昂貴的交易),但最終會(huì)使用Ethereum進(jìn)行結(jié)算。
?
它們實(shí)現(xiàn)了場(chǎng)外交易(https://blog.0xproject.com/announcing-0x-otc-5db58dc9ba8),一個(gè)DApp使用這個(gè)協(xié)議來(lái)在用戶之間直接交換代幣。你可以在github上查看他們的合約(https://github.com/0xProject/contracts)。
?
你還可以跳過(guò)這些酷炫的概念,直接閱讀FAQ(https://0xproject.com/faq)。
Swap
?
ConsenSys的Swap(https://swap.tech/)協(xié)議也是非常類似的,但更專注于p2p的直接交易(而不是基于訂單表),這里有一個(gè)白皮書,可以看看(https://swap.tech/pdfs/SwapWhitepaper.pdf),這里有一個(gè)關(guān)于Swap協(xié)議的介紹(https://media.consensys.net/introducing-swap-a-protocol-for-decentralized-peer-to-peer-trading-on-the-ethereum-blockchain-d4058f3179cf)。
Bancor
?
代幣的流動(dòng)性是相對(duì)來(lái)說(shuō)在加密幣的生態(tài)中是一個(gè)非常大的問(wèn)題。在用戶間的交易需要滿足買方和賣方兩邊的想法。
?
Bancor(https://www.bancor.network/)是一個(gè)協(xié)議,可以讓你的代幣1)可以根據(jù)訂單自動(dòng)給予價(jià)格2)可以通過(guò)持有其它的代幣作為抵押器來(lái)即時(shí)創(chuàng)造流動(dòng)性。
?
查看這里的白皮書(https://www.bancor.network/static/bancor_protocol_whitepaper_en.pdf)
Makerdao & Dai
?
以太坊區(qū)塊鏈管理的代幣價(jià)值往往會(huì)有巨大的波動(dòng)。這個(gè)特性在現(xiàn)實(shí)生活中則非常不好,比如你的目標(biāo)是用來(lái)保值。
?
Maker DAO(https://makerdao.com/)是一個(gè)DAO來(lái)管理Dai穩(wěn)定幣(https://github.com/makerdao/docs/blob/master/Dai.md)。Dai現(xiàn)在還不存在,但他們已經(jīng)發(fā)布了一個(gè)alpha的版本叫Sai(https://blog.makerdao.com/2017/06/05/introducing-sai/)來(lái)展示這門技術(shù)。
?
這里是DAI的白皮書(https://github.com/makerdao/docs/blob/master/Dai.md)。
Oraclize
?
如果我們要向智能合約中輸入一些信息,比如紐約今天的天氣,我也許需要實(shí)現(xiàn)一個(gè)去中心化的先知協(xié)議詢問(wèn)一批人(花費(fèi)高且慢),但如果寫一個(gè)服務(wù)以中心化的方式來(lái)提供信息,又違背了去中心化應(yīng)用的理念。
?
Oraclize(http://docs.oraclize.it/#background)嘗試用以下方式來(lái)解決問(wèn)題1)從一個(gè)外部數(shù)據(jù)源向你的智能合約發(fā)送數(shù)據(jù)。2)提供一個(gè)證明,數(shù)據(jù)來(lái)自某個(gè)數(shù)據(jù)源,且沒(méi)有被修改過(guò)。由此如果你信任random.org,你可以使用Oraclize來(lái)提供一個(gè)隨機(jī)數(shù)生成合約。
?
他們的集成非常強(qiáng)大; 您可以獲取URL,解析JSON和XPATH,查詢Wolfram Alpha等。
BTCRelay
?
BTCRelay(http://btcrelay.org/)作為比特幣區(qū)塊鏈交易的先知機(jī)制,這意味著你可以在以太坊上編寫智能合約來(lái)響應(yīng)比特幣區(qū)塊鏈上的某個(gè)交易,進(jìn)行觸發(fā)后續(xù)的操作。比如,你可以讓人通過(guò)BTC為你的服務(wù)付費(fèi),使用BTCRelay在以太坊上校驗(yàn)付款成功后,繼而在以太坊上提供對(duì)應(yīng)的服務(wù)。
Open Zeppelin & zeppelinOS
?
Zeppelin Solutions是一個(gè)科技公司,在這個(gè)領(lǐng)域內(nèi)正完成一些偉大,而且專業(yè)的事。它們實(shí)在做了太多事,太難一一說(shuō)清了。
?
他們管理了Open Zeppelin(https://openzeppelin.org/),一系列經(jīng)過(guò)審查的,最佳的智能合約實(shí)踐,你可以繼承并應(yīng)用于你自己的DApp中。你可以查看他們的github資源來(lái)學(xué)習(xí)更多(https://github.com/OpenZeppelin/zeppelin-solidity)。你應(yīng)該讀一下里面的每一個(gè)合約。
?
他們堅(jiān)持代碼復(fù)用的理念,然后進(jìn)一步創(chuàng)建了Zeppelin OS(https://blog.zeppelin.solutions/introducing-zeppelinos-the-operating-system-for-smart-contract-applications-82b042514aa8)。你可以忽略O(shè)S,它不是傳統(tǒng)意義上的操作系統(tǒng)的概念。zeppelinOS特性,工具和服務(wù)的集合,旨在提供穩(wěn)固的開(kāi)發(fā)人員體驗(yàn),同時(shí)最大限度地提高智能合同安全性。
?
zeppelinOS中的其中一部分是“zeppelinOS Kernel”。其實(shí)他們不是傳統(tǒng)意義上的核心,而且是一組庫(kù)(https://blog.aragon.one/library-driven-development-in-solidity-2bebcaf88736)。它們是通過(guò)庫(kù)模型實(shí)現(xiàn)的可升級(jí)的智能合約(https://blog.zeppelin.solutions/proxy-libraries-in-solidity-79fbe4b970fd),可以在出現(xiàn)安全問(wèn)題時(shí)獨(dú)立的進(jìn)行更新。因?yàn)槟阍诤霞s內(nèi)包含的代碼更少,部署也將花費(fèi)更少的gas,而開(kāi)發(fā)者也減少了代碼的重復(fù)。
?
zeppelinOS還有一些其他整齊的規(guī)劃,比如調(diào)度程序(智能合約的異步執(zhí)行,因?yàn)槟J(rèn)合同一般不會(huì)主動(dòng)觸發(fā)某個(gè)行為),市場(chǎng)級(jí)的協(xié)議和鏈下開(kāi)發(fā)者體驗(yàn)工具。
ENS - 以太坊的命名服務(wù)
?
ENS(https://ens.domains/)是一個(gè)去中心化的名稱注冊(cè)服務(wù)。并有一個(gè)描述性的項(xiàng)目名稱。
BAT 基礎(chǔ)注意力代幣 & Brave瀏覽器
?
BAT(https://basicattentiontoken.org/)嘗試去中心化廣告系統(tǒng),通過(guò)監(jiān)控大家的注意力,并在內(nèi)容提供商,廣告商和用戶之間分發(fā)收益,切掉中間人。
?
Brave和BAT由JS創(chuàng)始人Brendan Eich創(chuàng)建,同時(shí)他也是Mozilla的聯(lián)合創(chuàng)始人。
uPort
?
uPort(https://www.uport.me/)在解決去中心化的身份識(shí)別問(wèn)題。
district0x
?
district0x(https://district0x.io/)是一個(gè)更高層級(jí)的去中心化的市場(chǎng)和社區(qū)。核心是通過(guò)一系列的智能合約來(lái)管理用戶發(fā)布信息,搜索,過(guò)濾信息,在社區(qū)內(nèi)維護(hù)信譽(yù),管理支付等等。它可以用來(lái)建議如Ethlance(https://ethlance.com/)和NameBazaar(https://namebazaar.io/)這樣的市場(chǎng)。
?
他們有非常棒的視覺(jué)設(shè)計(jì)。
Steem
?
Steem(https://steemit.com/)是區(qū)塊鏈上的reddit,它使用協(xié)議代幣(STEEM)來(lái)激勵(lì)這個(gè)社交社區(qū)的參與度。
?
在這里查看白皮書(https://steem.io/SteemWhitePaper.pdf)。
?
有一些關(guān)于Steemit塊鏈如何啟動(dòng)以及支持組織如何運(yùn)作的反應(yīng)(https://medium.com/m/global-identity?redirectUrl=https://decentralize.today/the-ugly-truth-behind-steemit-1a525f5e156)。
參與者與領(lǐng)域內(nèi)的玩家
ConsenSys
?
ConsenSys(有點(diǎn)像共識(shí)Consensus,但作為一個(gè)公司名稱;它很聰明,巧妙的把u改成了s,但我一般念為“con-SEn-SIS”,避免讀錯(cuò))是一個(gè)“風(fēng)險(xiǎn)投資和產(chǎn)品工作室”。他們是一個(gè)(其實(shí)非常大)傘形組織,它贊助了一大堆項(xiàng)目(https://consensys.net/ventures/spokes/)和核心組件(https://consensys.net/ventures/core-components/)的開(kāi)發(fā)。值得一提的是,它們資助了Truffle,Infura,MetaMask,Gnosis和uPort。
Zeppelin Solutions
?
Zeppelin Solutions(https://zeppelin.solutions/)在上面我們有提到過(guò),他也審查智能合約代碼,提供咨詢服務(wù)。他們的博客質(zhì)量相當(dāng)高(https://blog.zeppelin.solutions/)。
Protocol Labs
?
Protocol Labs(https://protocol.ai/)是一群讓人印象深刻的人,致力于IPFS,FileCoin,lip2p以及IPLD等其它項(xiàng)目的開(kāi)發(fā)。
區(qū)塊鏈資本概況
?
Etienne Brunet(https://medium.com/@etiennebr)有一篇關(guān)于代幣,ICO和VC的概況文章(https://medium.com/@etiennebr/my-token-ico-blockchain-capital-markets-landscape-617e6ff1eae1)。
社區(qū)
?
你可以加入以太坊的社區(qū)(https://medium.com/blockchannel/where-can-i-join-the-ethereum-community-3aa5c795b1e5)。
未來(lái)
?
未來(lái)展望(https://media.consensys.net/interplanetary-linked-computing-separating-merkle-computing-from-blockchain-computational-courts-1ade201ecf8a)。
?
出處:http://me.tryblockchain.org/getting-up-to-speed-on-ethereum.html
總結(jié)
以上是生活随笔為你收集整理的以太坊基础开发入门教程,完整入门【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 零基础怎么学手绘?
- 下一篇: AppInventor开发环境搭建