教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

一篇文章從技術(shù)層面看 以太坊與智能合約

更新時間: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)運行了很多程序,目前沒有什么大的問題出現(xiàn),而目前EOS的公鏈還沒上線 ,盡管EOS白皮書介紹其功能更加完善,市場仍處于觀望狀態(tài)。

3. 對開發(fā)者來說,以太坊支持多種語言的客戶端,可以適應(yīng)不同系列的開發(fā)語言和操作系統(tǒng),入門更方便。


技術(shù)入門

如果是想深入的進行這門技術(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

在從項目的早期,為了適應(yīng)不同系列的開發(fā)語言和操作系統(tǒng),以太坊的團隊就實現(xiàn)了很多個的客戶端。如下圖所示的表格,有使用各種開發(fā)語言來實現(xiàn)的以太坊客戶端??蛻舳说亩鄻有詫τ谝蕴簧鷳B(tài)系統(tǒng)來說是一個巨大 的優(yōu)勢。

各個語言版本的客戶端如下:

但是,對于一些準(zhǔn)備做以太坊開發(fā)的初學(xué)者來說,建議使用mist開發(fā)環(huán)境。因為mist的開發(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é)點數(shù)據(jù)同步到系統(tǒng)盤,截至寫文章的時候公鏈數(shù)據(jù)有200多G,使系統(tǒng)盤負載過大,最好是做一個映射。操作步驟如下:

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以太坊錢包,驗證是否成功

3) 把離線節(jié)點拷貝到所需文件夾下面。由于以太坊節(jié)點數(shù)據(jù)太大,等著mist自己更新需要幾天的時間,速度比較慢,最快的方法是下載網(wǎng)上對應(yīng)的鏡像,放到所需文件夾下面,然后打開mist驗證是否成功

以上就是搭建簡單以太坊開發(fā)環(huán)境的所有步驟了,接著就可以進行智能合約的開發(fā)。

在開發(fā)智能合約之前 我們要先說明一下什么是智能合約。


智能合約是一套以數(shù)字形式定義的承諾,承諾控制著數(shù)字資產(chǎn)并包含了合約參與者約定的權(quán)利和義務(wù),由計算機系統(tǒng)自動執(zhí)行。智能合約程序不只是一個可以自動執(zhí)行的計算機程序,它本身就是一個系統(tǒng)參與者,對接收到的信息進行回應(yīng),可以接收和儲存價值,也可以向外發(fā)送信息和價值。這個程序就像一個可以被信任的人,可以臨時保管資產(chǎn),總是按照事先的規(guī)則執(zhí)行操作。(目前最靠譜的解釋)


通常會把寫區(qū)塊鏈程序改稱寫智能合約。雖然比特幣(Bitcoin)上也能寫智能合約,但是比特幣所支持的語法僅與交易有關(guān),能做的事情比較有限。因此目前提到寫智能合約,通常指的是支持執(zhí)行圖靈完備程序的以太坊(Ethereum)區(qū)塊鏈。


智能合約可以做什么?

目前最常見的智能合約是各種加密貨幣合約,開發(fā)者可以很容易地透過部署一個智能合約,來提供運行于以太坊上的新加密代幣。如果這份智能合約相容于ERC20標(biāo)準(zhǔn)1,開發(fā)者不需要重新開發(fā)從挖礦到交易的整個代幣生態(tài)系,你的新加密代幣就可以直接使用支持以太坊的電子錢包?來收送,大大降低了建立新加密代幣的門檻。

智能合約也可以用來運作各種公開公正的自動服務(wù)機構(gòu)(DAO,權(quán)力下放自治組織)。透過分散在全球各節(jié)點上運作的智能合約,所有運作與決策都是公開透明的,降低了交易的不確定性。


智能合約和一般程序的差異

1) 整合金流容易

2) 部署時與后續(xù)寫入時需要費用

3) 存儲資料的成本更高

4) 部署后無法更改

將智能合約部署到區(qū)塊鏈的流程

合約寫好后,把.sol編譯成EVM(Ethereum Virtual Machine)可用的二進制文件(Contract ByteCode)才能部署到Ethereum的區(qū)塊鏈上執(zhí)行,部署到區(qū)塊鏈上的合約會有一個錢包地址(地址)和一樣格式的合約地址(Contract Address)。

部署后智能合約可自動執(zhí)行。后續(xù)call智能合約的時候,使用者可以使用部署合約的錢包地址(所有者帳戶),或依據(jù)編寫的智能合約條件,讓其他錢包地址也能呼叫這個智能合約。 呼叫智能合約,其實就是向這個合約地址發(fā)起交易,只是交易的不只是代幣,而可以是智能合約提供的呼叫方法。

智能合約范例:


如何編寫智能合約?

Ethereum上的智能合約需要使用solidity語言來編寫,關(guān)于solidity語法的詳細介紹,可以參考后面的文章

黑馬程序員Go語言與區(qū)塊鏈學(xué)科會有智能合約和以太坊以及EOS的區(qū)塊鏈知識體系的系統(tǒng)講解。


課程分為八個階段

第一階段Go語言開發(fā)實戰(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ū)塊鏈面試強化

人才培養(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://xamj520.com/subject/gozly/index.html

0 分享到:
和我們在線交談!