更新時間:2018年05月09日14時50分 來源:傳智播客 瀏覽次數(shù):
隨著區(qū)塊鏈的越來越火,區(qū)塊鏈應(yīng)用也是越來越多,我們本篇文章主要講述區(qū)塊鏈巨頭之一,以太坊相關(guān)的內(nèi)容。
首先解釋一下為什么介紹以太坊。畢竟市場上前有老牌勁旅比特幣,后有風(fēng)頭正盛EOS。
原因如下:
1. 與比特幣相比,在以太坊上編程更加靈活。比特幣作為第一個區(qū)塊鏈應(yīng)用,自產(chǎn)生起就不可避免的金融屬性,所以比特幣上的編程也更偏向于金融有關(guān)的業(yè)務(wù),不夠靈活。相比之下,在以太坊上編程用的是類js語言solidity(后續(xù)文章會專門介紹這個),是圖靈完備的語言,所以處理的業(yè)務(wù)也就不再限制于金融方面,更加靈活。
2. 和EOS相比,以太坊已經(jīng)運(yùn)行了很多程序,目前沒有什么大的問題出現(xiàn),而目前EOS的公鏈還沒上線 ,盡管EOS白皮書介紹其功能更加完善,市場仍處于觀望狀態(tài)。
3. 對開發(fā)者來說,以太坊支持多種語言的客戶端,可以適應(yīng)不同系列的開發(fā)語言和操作系統(tǒng),入門更方便。
技術(shù)入門
如果是想深入的進(jìn)行這門技術(shù)開發(fā)的話,建議利用好下面的一些資源。
以太坊官網(wǎng):https://www.ethereum.org/
以太坊愛好者:http://ethfans.org/
以太坊白皮書:
http://ethfans.org/wikis/%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%99%BD%E7%9A%AE%E4%B9%A6
在從項(xiàng)目的早期,為了適應(yīng)不同系列的開發(fā)語言和操作系統(tǒng),以太坊的團(tuán)隊(duì)就實(shí)現(xiàn)了很多個的客戶端。如下圖所示的表格,有使用各種開發(fā)語言來實(shí)現(xiàn)的以太坊客戶端。客戶端的多樣性對于以太坊生態(tài)系統(tǒng)來說是一個巨大 的優(yōu)勢。
各個語言版本的客戶端如下:
但是,對于一些準(zhǔn)備做以太坊開發(fā)的初學(xué)者來說,建議使用mist開發(fā)環(huán)境。因?yàn)閙ist的開發(fā)相比較于下載geth開發(fā)比較簡單,快捷。如果喜歡自主性更大的開發(fā)環(huán)境,建議使用geth+錢包開發(fā)。
Mist是一個去中心化的分散的web3.0應(yīng)用的瀏覽器,geth(go-ethereum)是go語言的客戶端。
本文以mist為例:
1) 下載mist客戶端
https://github.com/ethereum/mist/releases
2) 做一個映射,做以太坊開發(fā)首先要同步以太坊數(shù)據(jù),一般情況下會把節(jié)點(diǎn)數(shù)據(jù)同步到系統(tǒng)盤,截至寫文章的時候公鏈數(shù)據(jù)有200多G,使系統(tǒng)盤負(fù)載過大,最好是做一個映射。操作步驟如下:
a) 剪切C:\Users\PHD\AppData\Roaming\Ethereum,存儲到 D:\blockchain\。切記,這里是剪切,如果C:\Users\PHD\AppData\Roaming\這個目錄下還有“Ethereum”文件夾,會導(dǎo)致下一步的命令報錯,“無法創(chuàng)建該文件”。
b) 打開命令行窗口CMD,敲入命令:mklink /J C:\Users\PHD\AppData\Roaming\Ethereum D:\blockchain\Ethereum
顯示,成功創(chuàng)建符號鏈接。
c) 打開mist以太坊錢包,驗(yàn)證是否成功
3) 把離線節(jié)點(diǎn)拷貝到所需文件夾下面。由于以太坊節(jié)點(diǎn)數(shù)據(jù)太大,等著mist自己更新需要幾天的時間,速度比較慢,最快的方法是下載網(wǎng)上對應(yīng)的鏡像,放到所需文件夾下面,然后打開mist驗(yàn)證是否成功
以上就是搭建簡單以太坊開發(fā)環(huán)境的所有步驟了,接著就可以進(jìn)行智能合約的開發(fā)。
在開發(fā)智能合約之前 我們要先說明一下什么是智能合約。
智能合約是一套以數(shù)字形式定義的承諾,承諾控制著數(shù)字資產(chǎn)并包含了合約參與者約定的權(quán)利和義務(wù),由計(jì)算機(jī)系統(tǒng)自動執(zhí)行。智能合約程序不只是一個可以自動執(zhí)行的計(jì)算機(jī)程序,它本身就是一個系統(tǒng)參與者,對接收到的信息進(jìn)行回應(yīng),可以接收和儲存價值,也可以向外發(fā)送信息和價值。這個程序就像一個可以被信任的人,可以臨時保管資產(chǎn),總是按照事先的規(guī)則執(zhí)行操作。(目前最靠譜的解釋)
通常會把寫區(qū)塊鏈程序改稱寫智能合約。雖然比特幣(Bitcoin)上也能寫智能合約,但是比特幣所支持的語法僅與交易有關(guān),能做的事情比較有限。因此目前提到寫智能合約,通常指的是支持執(zhí)行圖靈完備程序的以太坊(Ethereum)區(qū)塊鏈。
智能合約可以做什么?
目前最常見的智能合約是各種加密貨幣合約,開發(fā)者可以很容易地透過部署一個智能合約,來提供運(yùn)行于以太坊上的新加密代幣。如果這份智能合約相容于ERC20標(biāo)準(zhǔn)1,開發(fā)者不需要重新開發(fā)從挖礦到交易的整個代幣生態(tài)系,你的新加密代幣就可以直接使用支持以太坊的電子錢包?來收送,大大降低了建立新加密代幣的門檻。
智能合約也可以用來運(yùn)作各種公開公正的自動服務(wù)機(jī)構(gòu)(DAO,權(quán)力下放自治組織)。透過分散在全球各節(jié)點(diǎn)上運(yùn)作的智能合約,所有運(yùn)作與決策都是公開透明的,降低了交易的不確定性。
智能合約和一般程序的差異
1) 整合金流容易
2) 部署時與后續(xù)寫入時需要費(fèi)用
3) 存儲資料的成本更高
4) 部署后無法更改
將智能合約部署到區(qū)塊鏈的流程
合約寫好后,把.sol編譯成EVM(Ethereum Virtual Machine)可用的二進(jìn)制文件(Contract ByteCode)才能部署到Ethereum的區(qū)塊鏈上執(zhí)行,部署到區(qū)塊鏈上的合約會有一個錢包地址(地址)和一樣格式的合約地址(Contract Address)。
部署后智能合約可自動執(zhí)行。后續(xù)call智能合約的時候,使用者可以使用部署合約的錢包地址(所有者帳戶),或依據(jù)編寫的智能合約條件,讓其他錢包地址也能呼叫這個智能合約。 呼叫智能合約,其實(shí)就是向這個合約地址發(fā)起交易,只是交易的不只是代幣,而可以是智能合約提供的呼叫方法。
智能合約范例:
如何編寫智能合約?
Ethereum上的智能合約需要使用solidity語言來編寫,關(guān)于solidity語法的詳細(xì)介紹,可以參考后面的文章
黑馬程序員Go語言與區(qū)塊鏈學(xué)科會有智能合約和以太坊以及EOS的區(qū)塊鏈知識體系的系統(tǒng)講解。
課程分為八個階段
第一階段Go語言開發(fā)實(shí)戰(zhàn)
第二階段Go語言高并發(fā)服務(wù)器開發(fā)
第三階段去中心化前端開發(fā)與web服務(wù)器開發(fā)
第四階段區(qū)塊鏈密碼學(xué)安全理論與開發(fā)
第五階段區(qū)塊鏈與智能合約開發(fā)
第六階段區(qū)塊鏈分布式應(yīng)用開發(fā)
第七階段區(qū)塊鏈系統(tǒng)框架開發(fā)
第八階段Go與區(qū)塊鏈面試強(qiáng)化
人才培養(yǎng)方向包含密碼學(xué)安全開發(fā)、區(qū)塊鏈系統(tǒng)開發(fā)、區(qū)塊鏈應(yīng)用開發(fā)、Go語言Web開發(fā)、Go語言微服務(wù)開發(fā)、Go語言分布式開發(fā)。
本文版權(quán)歸傳智播客Go語言與區(qū)塊鏈學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Go語言與區(qū)塊鏈培訓(xùn)學(xué)院
http://8y3kgpwe.cn/subject/gozly/index.html
北京校區(qū)