如何從零開始學習以太坊及區塊鏈

一、什麼是區塊鏈?

區塊鏈是比特幣底層的核心與基礎架構,是一個去中心化的賬本系統。其特點是去中心化、公開透明,讓每個人均可參與數據庫記錄。

區塊鏈的基本原理理包括:

交易(Transaction):一次操作,導致賬本狀態的一次改變,如添加一條記錄;

區塊(Block):記錄一段時間內發生的交易和狀態結果,是對當前賬本狀態的一次共識;

鏈(Chain):由一個個區塊按照發生順序串聯而成,是整個狀態變化的日誌記錄。

如果把區塊鏈作為一個狀態機,則每次交易就是試圖改變一次狀態,而每次共識生成的區塊,就是參與者對於區塊中所有交易內容導致狀態改變的結果進行確認。

總結:如果我們把數據庫假設成一本賬本,讀寫數據庫就可以看做一種記賬的行為,區塊鏈技術的原理就是在一段時間內找出記賬最快最好的人,由這個人來記賬,然後將賬本的這一頁信息發給整個系統裡的其他所有人。這也就相當於改變數據庫所有的記錄,發給全網的其他每個節點,所以區塊鏈技術也稱為分佈式賬本(distributed ledger)

二、 以太坊入門的方法

對於沒有接觸過區塊鏈的人,建議先參會以太坊的日常應用。

1、 使用客戶端

這裡的教程很多,推薦一個以太坊錢包教程

2、挖礦

挖礦的教程很多,一般分佈在各個礦池,這裡推薦一個國內礦池的教程,並且可以加入各個礦池的群去交流一下。國內的礦池有www.f2pool.com,www.bw.com 等幾大礦池。

3、 瀏覽公有鏈的區塊信息

在經歷以上事情後,可以通過區塊鏈瀏覽器去查看自己的賬戶和交易,更直觀感受。

通過以上的操作,基本可以算對區塊鏈有了一個初步的瞭解和感知。

三、 以太坊各個項目說明

以太坊發佈以後,有 多個客戶端,同時也支持多個平臺,初學者往往被各種各樣的客戶端弄迷糊,本文進行了詳細的總結。

以太坊客戶端以語言進行分類,在github上分成了不同項目,源代碼地址:https://github.com/ethereum/,雖然以太坊客戶端眾多,但是有兩個共同特點:

1、同一語言的客戶端在不同平臺上的使用是完全相同的

2、不同語言的客戶端(mist、geth、eth等等)之間在同一個平臺(linux、windows或OSX)上共用一樣的應用配置,同時其命令行可使用的參數也是一致。

下面就以github上的項目為分類說明各個客戶端的用途和特點:

(一)go-ethereum項目

開發語言:go語言

客戶端文件:Geth

界面:命令行

適用平臺:windows、linux和OSX

功能和特點:該項目是使用最廣泛的以太坊客戶端,大部分節點都是運行的該客戶端,教程和例子也最多,推薦使用,可用於挖礦,組建私有鏈,管理賬號,部署智能合約等常用功能,不可以編譯智能合約。

(二)webthree-umbrella項目

此項目包含3個客戶端

開發語言:c++

客戶端文件:AlethZero、Mix和Eth

使用平臺:windows、linux和OSX

界面:圖形化界面

功能和特點:該項目嚴格來說是cpp-ethereum 項目的一個shell,是以太坊基金會的前CTO,Gavin Wood主持編寫的,所以人氣也很高,易用性也很好。AlethZero是圖形化的錢包客戶端,對應的是Geth的功能,不過是全圖形化的。但是隨著後續以太坊基金會主推的圖形化錢包Mist的推出,漸漸沒落。Mix 是智能合約(以太坊稱為DAPP)的開發IDE,可以支持智能合約(DAPP)的編寫、調試,部署,全圖形化界面,但是目前已經停止開發了,開發組轉向了Remix。Eth是C++編寫的命令行客戶端功能和Geth一樣。

(三)Mist項目

開發語言:JavaScript

客戶端文件:Mist(目前使用Ethereum-Wallet的名稱)

使用平臺:windows、linux和OSX

界面:圖形化界面

功能和特點:該項目是以太坊基金會主推的項目,Mist定位不只是一個錢包,而是將來DAPP(智能合約的應用APP)市場,類似於蘋果市場,在這裡可以有你的賬號,可以瀏覽、發佈和買賣以太坊的DAPP應用。目前因為開發還不夠全面,名稱暫時顯示為Ethereum-Wallet,作用也很簡單,就是一個錢包的功能。強烈推薦,未來的主流客戶端。

(四)solidity項目

開發語言:C++

客戶端文件:solc

使用平臺:windows、linux和OSX

界面:命令行界面

功能和特點:該項目是以太坊智能合約(DAPP)的編程語言,使用solc作為編譯程序,該項目主要用於編譯,嚴格來說是一個基本的編譯平臺,一般開發可用MIX替代。

(五)browser-solidity項目

開發語言:C++

客戶端文件:瀏覽器中顯示

使用平臺:windows、linux和OSX

界面:瀏覽器界面

功能和特點:該項目是智能合約瀏覽器版本的開發環境,可以支持在瀏覽器中直接開發、調試和編譯,對於初學者來說,可以快速上手,不需要安裝,非常方便,直接訪問地址使用:https://ethereum.github.io/browser-solidity/

(六)pyethereum項目和ethereumj項目

pyethereum項目是用python語言編寫的以太坊客戶端,ethereumj項目是用JAVA語言編寫的以太坊客戶端,只是語言不同,和前面GO語言編寫的客戶端Geth的功能完全相同。

(七)etheminer項目

開發語言:C++

客戶端文件:ethminer

使用平臺:windows、linux和OSX

界面:命令行

功能和特點:該項目是cpp-ethereum項目的一部分,用於和Geth配合進行GPU挖礦,比CPU挖礦效率高100多倍,也可以用於礦池挖礦

四、 以太坊常用網址(含智能合約)

以太坊有很多有用的網站都分佈在國外,找起來很費勁,這裡總結一下

1、以太坊官方網站:https://ethereum.org/

該網站為以太坊的官方網站,有詳細的以太坊介紹和各種連接地址,推薦詳細看一看

2、以太坊所有源碼地址(官方):https://github.com/ethereum/

該github為以太坊所有項目的源碼地址,以及更新和發佈。

3、以太坊Homestead文檔地址(官方):http://www.ethdocs.org/en/latest/index.html

該網站為以太坊的詳細介紹文檔,基本包括了以太坊的方方面面,如果有什麼不清楚的原理和應用,基本都可以在這裡找到答案和線索。

4、以太坊網絡狀態地址(官方):https://ethstats.net/

該網站能全面的顯示網絡狀態,包括節點、難度、算力等等,非常直觀

5、以太坊資源網站(官方):http://ether.fund/

該網站提供了以太坊很多應用資源,比如市場情況、合約輔助工具、已發佈的智能合約、以太坊網絡、DAAP等,方便開發和發佈。

6、Solidity編程文檔(官方):http://solidity.readthedocs.io/en/latest/

該網站提供了以太坊Solidity語言的全面參考手冊,學習Solidity語言必備。

7、以太坊網絡掃描(官方):http://etherscan.io/

該網站提供了以太坊網絡的各種狀態,比如帳號的詳情、TOKEN詳情,難度詳情、區塊詳情,非常方便和直觀。

8、以太坊官方博客:https://blog.ethereum.org/

9、以太坊wiki百科地址:https://github.com/ethereum/wiki/wiki

在這裡有白皮書、黃皮書以及開發指南,比較全面。

10、以太坊中文愛好者網站:http://ethfans.org/

該網站為國內以太坊愛好者自發建立的網站,內容比較全,信息更新很快。

11、以太坊的gitter的實時交流網站:https://gitter.im/orgs/ethereum/rooms

該網站是以太坊的gitter chart的網站,根據項目分了很多房間,只要你提問題,大部分有人回答,很不錯,不過只能英語交流。

12、以太坊的官方論壇:https://forum.ethereum.org/

官方論壇,沒什麼好說的,我遇到的幾個問題,都是在這裡找到的答案

13、以太坊第三方強大的IDE:https://live.ether.camp/

這個是第三方發佈的Solidity IDE,我看了一下,很強大,強大到還不太會用,他的目標是企業級IDE,老外用的較多。

14、以太坊開發框架Truffle說明書:http://truffle.readthedocs.io/en/latest/

以太坊目前很流行的開發框架Truffle的說明書,這個框架比較流行。

15、以太坊開發框架dapple說明書:http://dapple.readthedocs.io/en/master/

這個開發框架是在gitter chart上看到的,感覺用的人不多,先觀察

16、以太坊官方推薦開發框架Meteor說明書:https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor

這個開發框架是以太坊官方推薦的,寫進了以太坊的官方wiki,值得學習,當然,以太坊官方經常轉換方向,以後換別的也沒準


分享到:


相關文章: