在Pi 3B型上安裝並運行以太坊區(qū)塊鏈客戶端。
區(qū)塊鏈現(xiàn)在是一個令人難以置信的熱門話題,並且已經(jīng)有一段時間了,這在很大程度上是因為加密貨幣- 主要是比特幣- 似乎為他們的早期採用者在一夜之間產(chǎn)生的財富,以及它們開闢的新的經(jīng)濟可能性。
然而,區(qū)塊鏈不僅僅可以用於加密貨幣,而且正如Greig在其最近發(fā)布的文章中指出的那樣,其分佈式性質(zhì)和驗證交易的防篡改記錄能力可用於物聯(lián)網(wǎng)應(yīng)用。以太坊平臺令人興奮的是它不僅僅是簡單的加密貨幣和安全交易,還提供分佈式計算平臺。
在這篇文章中,我們將簡要介紹一下以太坊體系結(jié)構(gòu),並嘗試介紹一些主要概念和組件,然後再繼續(xù)在Raspberry Pi上安裝客戶端軟件。需要說明的是,我們不會挖掘任何加密貨幣,因為您確實需要一個強大的GPU,但是可以使用Pi創(chuàng)建一個簡單的沙箱進行實驗- 這也表明區(qū)塊鏈技術(shù)確實是可以運行在嵌入式平臺。
以太坊101
contractmortal{ /*Definevariableownerofthetypeaddress*/ addressowner; /*Thisfunctionisexecutedatinitializationandsetstheownerofthecontract*/ functionmortal(){owner=msg.sender;} /*Functiontorecoverthefundsonthecontract*/ functionkill(){if(msg.sender==owner)selfdestruct(owner);}}contractgreeterismortal{ /*Definevariablegreetingofthetypestring*/ stringgreeting; /*Thisrunswhenthecontractisexecuted*/ functiongreeter(string_greeting)public{ greeting=_greeting; } /*Mainfunction*/ functiongreet()constantreturns(string){ returngreeting; }}以太坊智能合約的示例。資料來源:ethereum.org
區(qū)塊鍊是一個分佈式記錄本,通常通過點對點網(wǎng)絡(luò)進行管理,並隨著記錄或區(qū)塊越來越多,它的大小也會不斷增長。區(qū)塊通常包含有交易數(shù)據(jù)的時間戳,並通過散列算法加密保護,這樣一旦數(shù)據(jù)被提交,它就不能被修改。
以太坊平臺擁有自己的加密貨幣,稱為以太幣ether,但它也進一步構(gòu)造區(qū)塊鏈技術(shù),為智能合約創(chuàng)造分散平臺- 包含代碼函數(shù)和區(qū)塊鏈函數(shù),並能夠與其他合同進行交互,作出決定,存儲數(shù)據(jù),並將以太幣發(fā)送給其他人。
智能合約通過基於 JavaScript 的 Solidity 語言實現(xiàn)。 Solidity編譯器用於將智能合約編譯為字節(jié)碼 - 就像使用JavaScript或Python,Java和Android等代碼執(zhí)行 - 然後通過以太坊虛擬機(Ethereum Virtual Machine)執(zhí)行。在智能合約中執(zhí)行交易產(chǎn)生一定的成本,這是我們將在未來的文章中介紹到。
以太坊提供了許多不同的客戶端應(yīng)用程序,原始參考實現(xiàn)geth以Go編寫。其中一些可以挖掘以太幣。另外還有獨立的挖掘軟件,好像另外還有GUI客戶端和分佈式應(yīng)用程序的IDE。
除主要的公共以太坊區(qū)塊鍊網(wǎng)絡(luò)mainnet 之外,還有用於實驗性質(zhì)的測試網(wǎng)絡(luò),您也可以創(chuàng)建自己的專用網(wǎng)絡(luò)。
安裝GETH
假設(shè)我們已經(jīng)安裝了Raspbian,我們便可以開始更新已安裝的軟件包到最新版本。
$sudoapt-getupdate $sudoapt-getdist-upgrade我在第一次編譯以太坊客戶端時用完了內(nèi)存。為內(nèi)存密集型任務(wù)釋放內(nèi)存的一個好方法就是減少分配給GPU的數(shù)量。實際上,如果您不需要圖形桌面,請將將系統(tǒng)簡單地配置成引導(dǎo)到命令行。
$sudoraspi-config-
3 → Boot
-
B1 → Desktop / CLI
-
B1 → Console
-
7 → Advanced
-
A3 → Memory Split
-
16 (MB)
-
Reboot
接下來,如果我們安裝相關(guān)的安裝包。
$sudoapt-getinstallgitgolanglibgmp3-dev之後,如果我們抓取geth的源代碼,一個以太坊節(jié)點的官方語言實現(xiàn),編譯這些代碼並將可執(zhí)行文件複製到/usr/local/bin/。
$mkdirsrc $cdsrc $gitclone-brelease/1.7https://github.com/ethereum/go-ethereum.git $cdgo-ethereum $make $sudocpbuild/bin/geth/usr/local/bin/創(chuàng)建帳戶並進行測試
首先,如果我們使用GETH來創(chuàng)建一個新帳戶。
$gethaccountnew這將生成一組新的加密密鑰並使用密碼保護私鑰。請注意,如果您使用此帳戶來挖掘加密貨幣並進行有意義的交易,您則需要確保備份您的密鑰並防止您的私鑰被訪問。
現(xiàn)在開始啟動節(jié)點。
如果我們在沒有任何參數(shù)的情況下運行GETH,它會啟動一個節(jié)點並嘗試同步整個公共mainnet區(qū)塊鏈。其大小超過50GB並且不斷增長,這對嵌入式計算機可能不是一個好主意。所以,我們以輕型同步模式啟動節(jié)點。這只會隨著它們的出現(xiàn)以及區(qū)塊鏈的其他部分按需提取區(qū)塊標(biāo)題。
要強制節(jié)點退出,只需按CTRL-C在啟動時將其作為服務(wù)運行:
$sudovi/etc/systemd/system/geth@.service(用你最喜歡的文本編輯器替換“vi”)
然後輸入:
[Unit]Description=Ethereumdaemon Requires=network.target[Service]Type=simple User=%I ExecStart=/usr/local/bin/geth--syncmodelight--cache64--maxpeers12Restart=on-failure[Install]WantedBy=multi-user.target保存文件並將以太坊節(jié)點作為“PI”用戶運行:
$sudosystemctlenablegeth@pi.service $sudosystemctlstartgeth@pi.service
當(dāng)我們的以太坊節(jié)點作為服務(wù)運行時,我們現(xiàn)在可以使用以下方式連接到它:
$gethattach例如:這給了我們提供了一個交互式的JavaScript控制臺。從這裡我們可以調(diào)用函數(shù)功能,例如:
>eth.accounts列出當(dāng)前帳戶。
或者獲取關(guān)於連接者的信息:
>admin.peers請注意,輕量級客戶端協(xié)議仍處於開發(fā)階段,在某種程度上是試驗性應(yīng)用,並且依靠完整的對等點/節(jié)點來支持它。因此,撰寫本文時可能未能完整地運行以太坊主網(wǎng)區(qū)塊鏈。也就是說,事情正在快速地發(fā)展,而這種情況在不太遙遠(yuǎn)的將來也會很容易發(fā)生變化。
接下來
到目前為止,我們剛剛安裝了客戶端軟件,創(chuàng)建了帳戶,啟動了節(jié)點並觀察了對等連接。在下一篇文章中,我們將看看實際執(zhí)行的交易。
-
樹莓派
+關(guān)注
關(guān)注
121文章
1989瀏覽量
107313 -
區(qū)塊鏈
+關(guān)注
關(guān)注
112文章
15565瀏覽量
108234
發(fā)布評論請先 登錄
用Raspberry Pi探索以太坊第2部分:創(chuàng)建一個私人區(qū)塊鏈
【學(xué)習(xí)筆記】uCOSII移植到樹莓派A+/B+/2B
塔式系統(tǒng)解決方案,第4部分:在應(yīng)用中添加以太網(wǎng)

電動汽車用驅(qū)動電機系統(tǒng) 第1部分:技術(shù)條件
簡化您的以太網(wǎng)設(shè)計,第1部分:以太網(wǎng)PHY基礎(chǔ)知識和選擇過程

用Hercules? LaunchPad? 開發(fā)套件控制GaN功率級—第1部分

評論