從一行命令瞭解以太坊

我以爲了解一個新事物最快的手段是上手實踐,在實踐中不斷地發現問題解決問題。今天咱們來試圖近距離接觸一下以太坊(ethereum)這個新事物。php

安裝geth

幾乎每個接觸以太坊的開發者,不可能不碰到gethgeth是用go語言編寫的以太坊客戶端,因此叫geth。安裝方法很簡單:服務器

brew tap ethereum/ethereum
brew install ethereum

運行geth:

網絡

安裝好geth以後,先不要像普通程序同樣直接運行geth,這是由於geth缺省會鏈接到以太坊官方的正式網絡上去,這個正式網絡裏的區塊目前已經有多達500多萬塊,並且裏面跑的都是要花真金白銀的交易,爲了練習起見,咱們先鏈接到以太坊的測試網絡上試一下。網絡

除正式網絡外,以太坊還有4個測試網絡,geth能用的有3個。由於正式網絡的編號是1,因此這3個測試網絡的編號分別是2, 3, 4。編號爲2的測試網絡叫作Morden,目前已經廢棄不用了;編號爲3的叫作Ropsten,編號爲4的叫作Rinkeby,這些名字的來源都是倫敦或者瑞典斯德哥爾摩的地鐵站的名字,由於它們的主要維護者住在這幾個地鐵站旁邊,也許哪一天會出現『五道口』這樣的測試網絡呢。測試

目前在用的測試網絡主要就是RopstenRinkeby,區別在於Ropsten用的共識機制是PoW,而Rinkeby用的共識機制是PoA,先不要被這些可怕的名詞嚇暈,咱們只要知道它在用法上的區別就是PoW的話,你若是想得到以太幣的話是須要本身挖礦的,而PoA則不須要也不能夠挖礦,你須要跟網絡管理員討要幾塊以太幣來作實驗。這幾個網絡的具體區別能夠看這篇文章網站

指定網絡的方法很簡單,假設咱們要使用rinkeby這個網絡,那咱們就這樣寫:google

geth --rinkebyspa

數據文件

雖然指定了網絡,但咱們還不能立刻啓動geth,這是由於geth缺省的數據文件的路徑是~/Library/Ethereum,若是咱們直接啓動的話,數據文件被放在這個目錄下,而這個目錄原本是爲編號爲1的正式網絡預留的,若是咱們把數據文件放在這裏的話,若是之後咱們想再啓動正式網絡,這些數據就會被覆蓋,因此咱們須要先在這個目錄下創建一個子文件夾rinkeby,而後告訴geth咱們的數據文件要存放在這個子文件夾裏:code

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkebyblog

同步模式

在啓動geth以前,咱們還須要告訴geth咱們想以哪一種方式同步數據,geth3種同步數據的方式,分別是full, fastlight。這三種方式中,full全同步是最慢的一種,它要把從創世區塊往下的全部區塊所有同步並校驗一遍,fast快速同步模式相對於full來講要快一些,它只校驗最近的1024個區塊,而light模式是最快的,由於它只校驗最近的一個狀態,geth的缺省同步方式是fast,在rinkeby上目前有180多萬個區塊的狀況下,同步的時間大約須要半個小時到2個小時,因此這裏仍是須要有一點耐心的。指定同步模式的命令以下:ip

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast

啓動rpc服務器

爲了能讓咱們的應用軟件可以鏈接上geth,還須要在啓動geth的同時啓動rpc服務器,這個命令很簡單:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast --rpc

鏈接到狀態服務器

咱們費了這麼大力氣創建起來的geth環境,到底有沒有被人承認呢?咱們把它鏈接到rinkeby官方的狀態服務器上看一下吧:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast --rpc --ethstats='fengerzh:Respect my authoritah!@stats.rinkeby.io'

注意:這裏的fengerzh是我給個人機器起的名字,你須要改變成一個不會和別人重複的名字,不然會出錯誤,然後面的這個Respect my authoritah!是密碼,但這個密碼必須是這樣,不然也會通不過。

好了,咱們終於鏈接好了,運行一下命令看看效果吧:

clipboard.png

咱們剛剛設置好的結點已經出如今了官方的網站上,說明咱們的設置已經成功了!

配置文件

上面這一串命令太長了,記不住怎麼辦?咱們能夠把這些配置信息導出到一個配置文件中:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast --rpc --ethstats='fengerzh:Respect my authoritah!@stats.rinkeby.io' dumpconfig > ~/rinkeby.toml

這樣之後咱們再執行的時候,就直接執行

geth --config ~/rinkeby.toml console

就行了。

帳號

創建帳號

如今咱們的geth環境能運行了,下一步咱們就須要在裏面創建一個帳號,最好再能有幾個以太幣能夠玩一玩,咱們能夠用一個簡單的命令創建一個帳號:

geth account new --datadir=~/Library/Ethereum/rinkeby/

這裏必定不要忘記添加datadir,不然你的帳號就建到正式網絡上去,而不是rinkey測試網絡了。

索取以太幣

正如咱們上面所說,因爲rinkeby這個網絡是基於PoA的,因此你在這裏獲取以太幣的惟一方式是索取,而不是挖礦,因此你須要到這個網站來,點擊下面的3個連接之一,把你剛纔建好的帳號的信息放在twitter裏發佈出去,而後再把twitter的網址粘回剛纔那個網站,過不了一會你就會收到管理者寄給你的3個以太幣。

clipboard.png

3個以太幣太少了嗎?你能夠到這個網站換算一下3個以太幣等於多少wei

clipboard.png

一般狀況下,一份智能合約的部署費用大約須要1,400,000gas,具體數字要看你合約的複雜程度而定,舉例來講,一次加法操做要花掉你3gas,而一次乘法操做要花掉5gas,建立一個新帳號要花32000gas,具體數據能夠查這裏。而gas還要經過單價換算成以太幣,就像汽油同樣,部署一份智能合約要花掉140萬升油,而一升油的價格不固定,能夠由你本身決定,你給的油價高,算的就快,你給的油價低,算的就慢,若是過低的話就沒有人算了,正式網絡的油價能夠在這裏查到,而測試網絡rinkeby的油價在官網上有顯示,目前價格大約是20.687gwei,這樣算下來,一份智能合約的費用大約是1400000*20.687=28961800gwei,摺合0.0289618個以太幣,那咱們的3個以太幣大約能夠部署100份合約。而若是是正式網絡的話,汽油單價沒那麼貴,大約是2或者3gwei,折爲0.003以太幣,而目前以太幣的價格大約爲5000元人民幣,因此一份智能合約的價格是15元人民幣。

若是你以爲這個價格過高的話,能夠考慮創建本身的私有網絡,我會在另外一篇文章裏詳談。

相關文章
相關標籤/搜索