1. 程式人生 > >區塊鏈技術資源教程零基礎與Remix 以太坊Solidity IDE搭建與初步使用

區塊鏈技術資源教程零基礎與Remix 以太坊Solidity IDE搭建與初步使用

區塊鏈技術資源教程零基礎

一、    以太坊和區塊鏈的關係

     從區塊鏈歷史上來說,先誕生了比特幣,當時並沒有區塊鏈這個技術和名詞,然後業界從比特幣中提取了技術架構和體系,稱之為區塊鏈技術。從比特幣提取的區塊鏈技術稱之為區塊鏈1.0時代,那個時候的應用主要以電子貨幣和去中心化交易為主,比如各種山寨幣。而以太坊將區塊鏈帶入了2.0的時代,區塊鏈2.0不是推翻了1.0,而是在1.0的基礎上實現了區塊知曉、價值知曉、圖靈完備,並進行了細節優化,從而形成了以智慧合約為特色的區塊鏈2.0。比特幣定位於一個應用,而以太坊定位於平臺,你可以在這個平臺上利用智慧合約做各種應用。

    所以,學習區塊鏈,直接學習以太坊就好了

以太坊知識庫:http://www.aibbt.com/a/ethereum/

二、    以太坊入門的方法

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

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://www.aibbt.com/a/ethereum/

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

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

Remix 以太坊Solidity IDE搭建與初步使用

以太坊:

因為以太坊為開源社群,雖然東西很優秀,但是元件十分的雜亂,因此首先簡單介紹下以太坊的一些常用元件:

1. Geth:

Geth是由以太坊基金會提供的官方客戶端軟體,用Go程式語言編寫的。

2. Parity:

Parity 是對以太坊協議的另一個很好的實現,並且是用Rust程式語言編寫的。 這是一個由一家名為Parity Inc的公司來維護的非官方客戶端。任何人都可以實現這個客戶端軟體,並加入以太坊網路。

3. Solidity:

Solidity是用於編寫在以太坊區塊鏈上執行的智慧合約的最流行的程式語言。 它是一種高階語言,當編譯轉換為 EVM 位元組碼。 這與 Java 非常相似,其中有諸如 Scala,Groovy,Clojure,JRuby等JVM語言。所有這些編譯都生成在JVM(Java虛擬機器)中執行的位元組碼。 

4.Truffle:

Truffle 和 Embark 是用於開發以太坊 DApps的兩個最常用的框架。 它們抽象出在區塊鏈上編譯和部署合同的許多複雜的東西。

5. Web3.js:

javascript庫,可以用來與一個節點進行互動。 由於它是一個 JavaScript 庫,您可以使用它來構建基於Web的dapps。

6 Mix:

以太坊早期IDE,用於合約的編寫測試等,現已經停止更新,專案組也合併入Remix。

7. Remix:

以太坊官方推薦的智慧合約開發IDE,適合新手,可以在瀏覽器中快速部署測試智慧合約。

我以前的文章中有介紹過Geth和Truffle的部署,有需求的可以到區塊鏈分類裡面找找。

Remix配置:

宣告:本文的一切配置都是基於Unbuntu的。

1. 安裝Remix:

官方地址: https://github.com/ethereum/browser-solidity
 

安裝步驟:

  1. git clone https://github.com/ethereum/browser-solidity  
  2. cd browser-solidity  
  3. npm install  
  4. npm run prepublish  

啟動命令:

  1. npm start   

訪問Remix:

http://127.0.0.1:8080
介面如下:

至此,Remix算是配置完成了。

2. 初步使用:

1.當前的solidity版本,如上圖截圖所示為0.4.9,這個預設用的是當前最新的release版本:

2. 點選下拉框,可以選擇不同的版本,包括還未成熟的最新構建版本,或者是之前的版本等。 選擇release版本,如下圖所示的這些 :

3. 合約自動編譯後生成:

4. 點選create,會在記憶體中將該智慧合約建立一個例項,即將下面的web3 deploy程式碼部署在虛擬的記憶體中: 

下一篇文章講介紹以太坊智慧合約釋出ERC20 token教程全解析, 教您一步ICO!