GO語言+區(qū)塊鏈培訓(xùn)課程優(yōu)勢(shì)
成都做網(wǎng)站、網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
1、 Go有什么優(yōu)勢(shì)
Go的優(yōu)勢(shì)
1:性能
2:語言性能很重要
3:開發(fā)者效率不要過于創(chuàng)新
4:并發(fā)性通道
5:快速的編譯時(shí)間
6:打造團(tuán)隊(duì)的能力
7:強(qiáng)大的生態(tài)系統(tǒng)
8:GOFMT,強(qiáng)制代碼格式
9:gRPC 和 Protocol Buffers
可直接編譯成機(jī)器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個(gè)文件上去就完成了。
靜態(tài)類型語言,但是有動(dòng)態(tài)語言的感覺,靜態(tài)類型的語言就是可以在編譯的時(shí)候檢查出來隱藏的大多數(shù)問題,動(dòng)態(tài)語言的感覺就是有很多的包可以使用,寫起來的效率很高。
適合人群:
1.沒有編程基礎(chǔ),想學(xué)IT技術(shù)的人群;
2.發(fā)展受限,想要提升的人群;
3.有編程經(jīng)驗(yàn),想要轉(zhuǎn)行的人群。
學(xué)習(xí)目標(biāo):
從0開始學(xué)習(xí)Go語言,通過對(duì)Go語言的學(xué)習(xí)綜合培養(yǎng)區(qū)塊鏈專項(xiàng)應(yīng)用型人才。
就業(yè)方向:
1.新技術(shù)Go語言開發(fā)(Web開發(fā)、微服務(wù)、分布式)。
2.新領(lǐng)域區(qū)塊鏈開發(fā)(密碼學(xué)安全、區(qū)塊鏈系統(tǒng)、區(qū)塊鏈應(yīng)用)。
區(qū)塊鏈需要學(xué)的課程有:1.Khan Academy;2.Udemy;3. Lynda;4.Coursera;5.PluralSight等。另外,學(xué)習(xí)區(qū)塊鏈你還得知道區(qū)塊鏈與編程語言的關(guān)系。學(xué)習(xí)區(qū)塊鏈開發(fā)建議建立在Go語言和java基礎(chǔ)上,而且Go語言的學(xué)習(xí)難度比Java略低。
Khan Academy
如果你想重溫一下你的比特幣知識(shí),或者從頭開始學(xué)習(xí)加密貨幣,知識(shí)點(diǎn)講解的很徹底,并且會(huì)讓你在區(qū)塊鏈的道路上走向正確的方向。您可以通過8個(gè)獨(dú)立的步驟,從基本的概述到對(duì)加密哈希函數(shù)、數(shù)字簽名、工作量證明和區(qū)塊鏈安全性的解釋。
2.Udemy
你不會(huì)因?yàn)閰⒓?小時(shí)的在線課程而得到哈佛大學(xué)的教育。但實(shí)際上, 作為一個(gè)區(qū)塊鏈愛好者, Udemy 可能更有用。根據(jù)你的技術(shù)水平, 這里的每個(gè)人都有很多東西。
對(duì)于那些想了解區(qū)塊鏈基本知識(shí)的人來說, 有一個(gè)很好的課程叫做“ 區(qū)塊鏈和比特幣的基礎(chǔ)”。在上面的課程中,你可以得到2小時(shí)的課程,可下載的資源,以及在你想要完成課程后,你可以隨時(shí)訪問課程的機(jī)會(huì)。
如果這能激勵(lì)你繼續(xù)上課,你也會(huì)得到證書。但最重要的是,你會(huì)對(duì)比特幣的基本概念有一個(gè)深刻的了解。
3. Lynda
LinkedIn的Lynda提供了跨越所有級(jí)別的大量不同課程。
4.Coursera
Coursera的價(jià)格隨著復(fù)雜性的不同而不同,盡管它們確實(shí)有一些免費(fèi)的選擇,鼓勵(lì)你購買單獨(dú)的補(bǔ)充課程材料。
課程由斯坦福、麻省理工學(xué)院和普林斯頓等大學(xué)的教授創(chuàng)建和教授,如果你想尋找優(yōu)秀的導(dǎo)師,課程設(shè)置是個(gè)明智的選擇。通過這些課程,你不會(huì)得到普林斯頓的證書,但是你會(huì)接觸到一些學(xué)術(shù)界最聰明的人。
其中一個(gè)特別突出的課程是“比特幣和加密技術(shù)”,該課程由普林斯頓大學(xué)的四位主要教授進(jìn)行教授。這是一個(gè)為期11周的計(jì)劃,涵蓋密碼學(xué)、比特幣挖掘、規(guī)則、挖掘謎題,甚至還有一個(gè)關(guān)于altcoins的章節(jié)。此外,本課程還包括詳細(xì)的講課、練習(xí)、繼續(xù)閱讀和家庭作業(yè)。
5.PluralSight
PluralSight充滿了新的技術(shù)課程,這些課程都是實(shí)際操作和具體的。例如,如果你想學(xué)習(xí)MySQL或Javascript等編程語言。
區(qū)塊鏈?zhǔn)且环N數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu),通過GO語言可以方便的創(chuàng)建一個(gè)區(qū)塊鏈
直接上代碼
1:區(qū)塊接口和方法
2:創(chuàng)建區(qū)塊鏈類和方法
最后測(cè)試方法:
測(cè)試結(jié)果:
PS F:goblock go run main.go
index: 0
times: 1640488480
PrevHash:
Hash: a91a1da064bd40523be90634584c7c6a23bef44390f855ce8ff671d48b8d9e06
data: 創(chuàng)世區(qū)塊
-----------------------------------
index: 1
times: 1640488481
PrevHash: a91a1da064bd40523be90634584c7c6a23bef44390f855ce8ff671d48b8d9e06
Hash: 28b659f29d8c8564adc23861e2fa2291dd23d14d672f080fa80ab70dcde7c059
data: 交易記錄:1
-----------------------------------
index: 2
times: 1640488482
PrevHash: 28b659f29d8c8564adc23861e2fa2291dd23d14d672f080fa80ab70dcde7c059
Hash: 12b668c4d98cade9d12d651598d302663bcf64435a4e6ed1987cd1d730f324ea
data: 交易記錄:2
-----------------------------------
index: 3
times: 1640488483
PrevHash: 12b668c4d98cade9d12d651598d302663bcf64435a4e6ed1987cd1d730f324ea
Hash: c420f63c9a8f73672f23b353f5fd752dee644e0f764740d090319dacccfa7be6
data: 交易記錄:3
-----------------------------------
index: 4
times: 1640488484
PrevHash: c420f63c9a8f73672f23b353f5fd752dee644e0f764740d090319dacccfa7be6
Hash: ff37f186a13a4871c398869a259f288e4f504c7adcb613172fc7fbfba6488a45
data: 交易記錄:4
-----------------------------------
index: 5
times: 1640488485
PrevHash: ff37f186a13a4871c398869a259f288e4f504c7adcb613172fc7fbfba6488a45
Hash: 0911b845ed602ab4f9c726b3d5dacea6c388c9e0c28db60a4aad62d94720f860
data: 交易記錄:5
-----------------------------------
index: 6
times: 1640488486
PrevHash: 0911b845ed602ab4f9c726b3d5dacea6c388c9e0c28db60a4aad62d94720f860
Hash: 8f0f744d190bf204b4441900df2412d99d613bc030ab607b736c99bf1da451b5
data: 交易記錄:6
-----------------------------------
index: 7
times: 1640488487
PrevHash: 8f0f744d190bf204b4441900df2412d99d613bc030ab607b736c99bf1da451b5
Hash: 3f8181b0570d615bfd0cae38f38813a46413d2ef8f40fc0bd312b7ff93fa57c5
data: 交易記錄:7
-----------------------------------
index: 8
times: 1640488488
PrevHash: 3f8181b0570d615bfd0cae38f38813a46413d2ef8f40fc0bd312b7ff93fa57c5
Hash: 17ca30a31359c73ecd9b7e43319e0736d0d3043f94e541e7b9e19914f192b8ea
data: 交易記錄:8
-----------------------------------
index: 9
times: 1640488489
PrevHash: 17ca30a31359c73ecd9b7e43319e0736d0d3043f94e541e7b9e19914f192b8ea
Hash: becffe7bb98f299739f6205bf16996e73315b5b752765d36ba7fc050de4abe1c
data: 交易記錄:9
-----------------------------------
智能合約調(diào)用是實(shí)現(xiàn)一個(gè) DApp 的關(guān)鍵,一個(gè)完整的 DApp 包括前端、后端、智能合約及區(qū)塊 鏈系統(tǒng),智能合約的調(diào)用是連接區(qū)塊鏈與前后端的關(guān)鍵。
我們先來了解一下智能合約調(diào)用的基礎(chǔ)原理。智能合約運(yùn)行在以太坊節(jié)點(diǎn)的 EVM 中。因此要 想調(diào)用合約必須要訪問某個(gè)節(jié)點(diǎn)。
以后端程序?yàn)槔?,后端服?wù)若想連接節(jié)點(diǎn)有兩種可能,一種是雙 方在同一主機(jī),此時(shí)后端連接節(jié)點(diǎn)可以采用 本地 IPC(Inter-Process Communication,進(jìn) 程間通信)機(jī)制,也可以采用 RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)機(jī)制;另 一種情況是雙方不在同一臺(tái)主機(jī),此時(shí)只能采用 RPC 機(jī)制進(jìn)行通信。
提到 RPC, 讀者應(yīng)該對(duì) Geth 啟動(dòng)參數(shù)有點(diǎn)印象,Geth 啟動(dòng)時(shí)可以選擇開啟 RPC 服務(wù),對(duì)應(yīng)的 默認(rèn)服務(wù)端口是 8545。。
接著,我們來了解一下智能合約運(yùn)行的過程。
智能合約的運(yùn)行過程是后端服務(wù)連接某節(jié)點(diǎn),將 智能合約的調(diào)用(交易)發(fā)送給節(jié)點(diǎn),節(jié)點(diǎn)在驗(yàn)證了交易的合法性后進(jìn)行全網(wǎng)廣播,被礦工打包到 區(qū)塊中代表此交易得到確認(rèn),至此交易才算完成。
就像數(shù)據(jù)庫一樣,每個(gè)區(qū)塊鏈平臺(tái)都會(huì)提供主流 開發(fā)語言的 SDK(Software Development Kit,軟件開發(fā)工具包),由于 Geth 本身就是用 Go 語言 編寫的,因此若想使用 Go 語言連接節(jié)點(diǎn)、發(fā)交易,直接在工程內(nèi)導(dǎo)入 go-ethereum(Geth 源碼) 包就可以了,剩下的問題就是流程和 API 的事情了。
總結(jié)一下,智能合約被調(diào)用的兩個(gè)關(guān)鍵點(diǎn)是節(jié)點(diǎn)和 SDK。
由于 IPC 要求后端與節(jié)點(diǎn)必須在同一主機(jī),所以很多時(shí)候開發(fā)者都會(huì)采用 RPC 模式。除了 RPC,以太坊也為開發(fā)者提供了 json- rpc 接口,本文就不展開討論了。
接下來介紹如何使用 Go 語言,借助 go-ethereum 源碼庫來實(shí)現(xiàn)智能合約的調(diào)用。這是有固定 步驟的,我們先來說一下總體步驟,以下面的合約為例。
步驟 01:編譯合約,獲取合約 ABI(Application Binary Interface,應(yīng)用二進(jìn)制接口)。 單擊【ABI】按鈕拷貝合約 ABI 信息,將其粘貼到文件 calldemo.abi 中(可使用 Go 語言IDE 創(chuàng)建該文件,文件名可自定義,后綴最好使用 abi)。
最好能將 calldemo.abi 單獨(dú)保存在一個(gè)目錄下,輸入“l(fā)s”命令只能看到 calldemo.abi 文件,參 考效果如下:
步驟 02:獲得合約地址。注意要將合約部署到 Geth 節(jié)點(diǎn)。因此 Environment 選擇為 Web3 Provider。
在【Environment】選項(xiàng)框中選擇“Web3 Provider”,然后單擊【Deploy】按鈕。
部署后,獲得合約地址為:0xa09209c28AEf59a4653b905792a9a910E78E7407。
步驟 03:利用 abigen 工具(Geth 工具包內(nèi)的可執(zhí)行程序)編譯智能合約為 Go 代碼。abigen 工具的作用是將 abi 文件轉(zhuǎn)換為 Go 代碼,命令如下:
其中各參數(shù)的含義如下。 (1)abi:是指定傳入的 abi 文件。 (2)type:是指定輸出文件中的基本結(jié)構(gòu)類型。 (3)pkg:指定輸出文件 package 名稱。 (4)out:指定輸出文件名。 執(zhí)行后,將在代碼目錄下看到 funcdemo.go 文件,讀者可以打開該文件欣賞一下,注意不要修改它。
步驟 04:創(chuàng)建 main.go,填入如下代碼。 注意代碼中 HexToAddress 函數(shù)內(nèi)要傳入該合約部署后的地址,此地址在步驟 01 中獲得。
步驟 04:設(shè)置 go mod,以便工程自動(dòng)識(shí)別。
前面有所提及,若要使用 Go 語言調(diào)用智能合約,需要下載 go-ethereum 工程,可以使用下面 的指令:
該指令會(huì)自動(dòng)將 go-ethereum 下載到“$GOPATH/src/github點(diǎn)抗 /ethereum/go-ethereum”,這樣還算 不錯(cuò)。不過,Go 語言自 1.11 版本后,增加了 module 管理工程的模式。只要設(shè)置好了 go mod,下載 依賴工程的事情就不必關(guān)心了。
接下來設(shè)置 module 生效和 GOPROXY,命令如下:
在項(xiàng)目工程內(nèi),執(zhí)行初始化,calldemo 可以自定義名稱。
步驟 05:運(yùn)行代碼。執(zhí)行代碼,將看到下面的效果,以及最終輸出的 2020。
上述輸出信息中,可以看到 Go 語言會(huì)自動(dòng)下載依賴文件,這就是 go mod 的神奇之處??吹?2020,相信讀者也知道運(yùn)行結(jié)果是正確的了。
網(wǎng)站名稱:go語言學(xué)習(xí)開發(fā)區(qū)塊鏈 go語言與區(qū)塊鏈在線就業(yè)班
網(wǎng)站鏈接:http://chinadenli.net/article26/ddeejcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、用戶體驗(yàn)、電子商務(wù)、網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)