利用樹莓派探索以太坊第一部分:環境搭建
在本系列文章的第一部分中,我們將在一台樹莓派Pi 3 Model B上安裝並運行一個以太坊區塊鏈客戶端。
毫無疑問,區塊鏈絕對是當前的熱點。之所以會這樣,很大程度上是因為比特幣以及其他加密貨幣讓很多人一夜暴富。但是,區塊鏈的應用並不僅限於加密貨幣領域,考慮到其去中心化以及防篡改等特性,區塊鏈技術還可以用到IoT應用中。因此,除了加密貨幣和安全交易之外,以太坊平台還可以提供一種分散式的計算平台。
在這篇文章中,我們將會對以太坊架構進行分析,並了解其核心思想和功能組件,最後在樹莓派上安裝相應的客戶端軟體。需要聲明的是,我並不打算用它來挖礦,因為挖礦需要強大的GPU支持,但樹莓派只能創建一個簡單的實驗沙箱,而且我們也只是為了驗證區塊鏈技術可以應用到嵌入式平台上。
以太坊101
話不多說,下面給出的是一份以太坊智能合約樣本的源代碼(來自ethereum.org):
區塊鏈是一種分散式的記賬系統,一般通過對等網路進行管理,並且隨著記錄和區塊成功添加到區塊鏈網路中,其大小也會不斷增長。一個區塊通常包含交易數據以及時間戳,並且會通過哈希演算法進行安全加密,數據一旦成功提交到區塊鏈中,將無法再被修改。
以太坊平台擁有自己的加密貨幣,我們稱之為以太幣。但是它還基於區塊鏈技術創建了一種針對智能合約的去中心化平台,智能合約對象中包含的代碼函數可以在區塊鏈中「生存」,並於其他合約進行交互,制定決策,存儲數據,或向其他人發送以太幣。
智能合約是用一種名叫Solidity(基於JavaScript)的編程語言實現的,Solidity編譯器可以將智能合約編譯成位元組碼(跟JavaScript、Python、Java或Android類似),然後通過以太坊虛擬機(EVM)執行。需要注意的是,在智能合約中進行交易是有成本的,這部分內容我們之後會進行討論。
目前市場上有好幾款不同的以太坊客戶端(基於Geth,採用Go語言開發),其中的某些能夠挖以太幣,有些則是單獨的挖礦軟體。除了主要的以太坊區塊鏈網路和礦池之外,還有很多用於實驗和測試的網路,當然了,你也可以創建自己的私有區塊鏈網路。
安裝Geth
假設我們現在已經安裝好了Raspbian,我們需要將已安裝的數據包軟體更新至最新版本:
當我第一次嘗試編譯以太坊客戶端時,出現了內存不足的情況,為了將RAM騰出來給這種內存密集型任務,最好的方法就是減少分配給GPU的內存空間。如果你不需要圖形桌面,你可以將系統以命令行界面啟動。
接下來,安裝相應的依賴組件:
接下來,從GitHub獲取Geth的官方源碼(採用Go語言實現的官方以太坊源碼),對代碼進行編譯並將可執行程序拷貝到/usr/local/bin/。
創建賬號並進行測試
使用Geth創建一個新的賬號:
接下來程序會創建一套新的加密密鑰,並使用了密碼來保護私鑰的安全。需要注意的是,如果你想用這個賬號來挖礦並進行交易的話,你需要確保已經備份了你的密鑰並防止你的私鑰被他人訪問。
現在,我們需要運行節點。
如果我們在不使用任何參數的情況下運行Geth,它將開啟一個節點並嘗試跟整個公共區塊鏈主網進行數據同步,數據大小在50GB以上,並且還會繼續增長,因此不適用於嵌入式計算機。所以說,我們準備以輕量級同步模式運行該節點,這種模式只會獲取區塊Header信息。
按下CTRL+C後就可以退出節點了,我們可以在設備啟動時讓它以服務的形式運行:
然後添加下列代碼:
保存文件,下列命令可以讓以太坊節點以「pi「用戶身份運行:
接下來,我們可以使用下列命令綁定節點:
這樣我們就能得到一個互動式JavaScript控制台,這裡我們可以調用任何函數,比如說:
該命令可以輸出當前賬號列表:
或者獲取已連接節點的信息:
需要注意的是,輕量級客戶端協議仍處於開發階段,因此某些實驗性的功能可能還無法完美支持。
總結
現在,我們已經安裝好客戶端軟體了,並成功創建了一個賬號,然後開啟了一個可通信節點。接下來在本系列文章的第二部分中,我們將組建一個私有區塊鏈網路,並進行實際的交易活動。稍等片刻,我們馬上就來!
* 參考來源:rs-online,FB小編Alpha_h4ck編譯,轉載請註明來自FreeBuf.COM


※遠豐集團旗下CMS疑有官方後門
※網易雲音樂PC客戶端加密API逆向解析
TAG:FreeBuf |