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

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

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

更新時(shí)間:2018年05月09日14時(shí)50分 來源:傳智播客 瀏覽次數(shù):

隨著區(qū)塊鏈的越來越火,區(qū)塊鏈應(yīng)用也是越來越多,我們本篇文章主要講述區(qū)塊鏈巨頭之一,以太坊相關(guān)的內(nèi)容。

首先解釋一下為什么介紹以太坊。畢竟市場上前有老牌勁旅比特幣,后有風(fēng)頭正盛EOS。

原因如下:

1. 與比特幣相比,在以太坊上編程更加靈活。比特幣作為第一個(gè)區(qū)塊鏈應(yīng)用,自產(chǎn)生起就不可避免的金融屬性,所以比特幣上的編程也更偏向于金融有關(guān)的業(yè)務(wù),不夠靈活。相比之下,在以太坊上編程用的是類js語言solidity(后續(xù)文章會(huì)專門介紹這個(gè)),是圖靈完備的語言,所以處理的業(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)了很多個(gè)的客戶端。如下圖所示的表格,有使用各種開發(fā)語言來實(shí)現(xiàn)的以太坊客戶端??蛻舳说亩鄻有詫τ谝蕴簧鷳B(tài)系統(tǒng)來說是一個(gè)巨大 的優(yōu)勢。

各個(gè)語言版本的客戶端如下:

但是,對于一些準(zhǔn)備做以太坊開發(fā)的初學(xué)者來說,建議使用mist開發(fā)環(huán)境。因?yàn)閙ist的開發(fā)相比較于下載geth開發(fā)比較簡單,快捷。如果喜歡自主性更大的開發(fā)環(huán)境,建議使用geth+錢包開發(fā)。

Mist是一個(gè)去中心化的分散的web3.0應(yīng)用的瀏覽器,geth(go-ethereum)是go語言的客戶端。


本文以mist為例:

1) 下載mist客戶端

https://github.com/ethereum/mist/releases

2) 做一個(gè)映射,做以太坊開發(fā)首先要同步以太坊數(shù)據(jù),一般情況下會(huì)把節(jié)點(diǎn)數(shù)據(jù)同步到系統(tǒng)盤,截至寫文章的時(shí)候公鏈數(shù)據(jù)有200多G,使系統(tǒng)盤負(fù)載過大,最好是做一個(gè)映射。操作步驟如下:

a) 剪切C:\Users\PHD\AppData\Roaming\Ethereum,存儲(chǔ)到 D:\blockchain\。切記,這里是剪切,如果C:\Users\PHD\AppData\Roaming\這個(gè)目錄下還有“Ethereum”文件夾,會(huì)導(dǎo)致下一步的命令報(bào)錯(cuò),“無法創(chuàng)建該文件”。

b) 打開命令行窗口CMD,敲入命令:mklink /J C:\Users\PHD\AppData\Roaming\Ethereum D:\blockchain\Ethereum

顯示,成功創(chuàng)建符號(hào)鏈接。

c) 打開mist以太坊錢包,驗(yàn)證是否成功

3) 把離線節(jié)點(diǎn)拷貝到所需文件夾下面。由于以太坊節(jié)點(diǎn)數(shù)據(jù)太大,等著mist自己更新需要幾天的時(shí)間,速度比較慢,最快的方法是下載網(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)自動(dòng)執(zhí)行。智能合約程序不只是一個(gè)可以自動(dòng)執(zhí)行的計(jì)算機(jī)程序,它本身就是一個(gè)系統(tǒng)參與者,對接收到的信息進(jìn)行回應(yīng),可以接收和儲(chǔ)存價(jià)值,也可以向外發(fā)送信息和價(jià)值。這個(gè)程序就像一個(gè)可以被信任的人,可以臨時(shí)保管資產(chǎn),總是按照事先的規(guī)則執(zhí)行操作。(目前最靠譜的解釋)


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


智能合約可以做什么?

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

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


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

1) 整合金流容易

2) 部署時(shí)與后續(xù)寫入時(shí)需要費(fèi)用

3) 存儲(chǔ)資料的成本更高

4) 部署后無法更改

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

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

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

智能合約范例:


如何編寫智能合約?

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

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


課程分為八個(gè)階段

第一階段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://oisangadgets.com/subject/gozly/index.html

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