go語言rpc編程視頻 go語言編程實(shí)戰(zhàn)

一學(xué)就會,手把手教你用Go語言調(diào)用智能合約

智能合約調(diào)用是實(shí)現(xiàn)一個 DApp 的關(guān)鍵,一個完整的 DApp 包括前端、后端、智能合約及區(qū)塊 鏈系統(tǒng),智能合約的調(diào)用是連接區(qū)塊鏈與前后端的關(guān)鍵。

創(chuàng)新互聯(lián)建站服務(wù)項目包括可克達(dá)拉網(wǎng)站建設(shè)、可克達(dá)拉網(wǎng)站制作、可克達(dá)拉網(wǎng)頁制作以及可克達(dá)拉網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,可克達(dá)拉網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到可克達(dá)拉省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

我們先來了解一下智能合約調(diào)用的基礎(chǔ)原理。智能合約運(yùn)行在以太坊節(jié)點(diǎn)的 EVM 中。因此要 想調(diào)用合約必須要訪問某個節(jié)點(diǎn)。

以后端程序為例,后端服務(wù)若想連接節(jié)點(diǎn)有兩種可能,一種是雙 方在同一主機(jī),此時后端連接節(jié)點(diǎn)可以采用 本地 IPC(Inter-Process Communication,進(jìn) 程間通信)機(jī)制,也可以采用 RPC(Remote Procedure Call,遠(yuǎn)程過程調(diào)用)機(jī)制;另 一種情況是雙方不在同一臺主機(jī),此時只能采用 RPC 機(jī)制進(jìn)行通信。

提到 RPC, 讀者應(yīng)該對 Geth 啟動參數(shù)有點(diǎn)印象,Geth 啟動時可以選擇開啟 RPC 服務(wù),對應(yīng)的 默認(rèn)服務(wù)端口是 8545。。

接著,我們來了解一下智能合約運(yùn)行的過程。

智能合約的運(yùn)行過程是后端服務(wù)連接某節(jié)點(diǎn),將 智能合約的調(diào)用(交易)發(fā)送給節(jié)點(diǎn),節(jié)點(diǎn)在驗證了交易的合法性后進(jìn)行全網(wǎng)廣播,被礦工打包到 區(qū)塊中代表此交易得到確認(rèn),至此交易才算完成。

就像數(shù)據(jù)庫一樣,每個區(qū)塊鏈平臺都會提供主流 開發(fā)語言的 SDK(Software Development Kit,軟件開發(fā)工具包),由于 Geth 本身就是用 Go 語言 編寫的,因此若想使用 Go 語言連接節(jié)點(diǎn)、發(fā)交易,直接在工程內(nèi)導(dǎo)入 go-ethereum(Geth 源碼) 包就可以了,剩下的問題就是流程和 API 的事情了。

總結(jié)一下,智能合約被調(diào)用的兩個關(guān)鍵點(diǎn)是節(jié)點(diǎn)和 SDK。

由于 IPC 要求后端與節(jié)點(diǎn)必須在同一主機(jī),所以很多時候開發(fā)者都會采用 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ú)保存在一個目錄下,輸入“l(fā)s”命令只能看到 calldemo.abi 文件,參 考效果如下:

步驟 02:獲得合約地址。注意要將合約部署到 Geth 節(jié)點(diǎn)。因此 Environment 選擇為 Web3 Provider。

在【Environment】選項框中選擇“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,以便工程自動識別。

前面有所提及,若要使用 Go 語言調(diào)用智能合約,需要下載 go-ethereum 工程,可以使用下面 的指令:

該指令會自動將 go-ethereum 下載到“$GOPATH/src/github.com/ethereum/go-ethereum”,這樣還算 不錯。不過,Go 語言自 1.11 版本后,增加了 module 管理工程的模式。只要設(shè)置好了 go mod,下載 依賴工程的事情就不必關(guān)心了。

接下來設(shè)置 module 生效和 GOPROXY,命令如下:

在項目工程內(nèi),執(zhí)行初始化,calldemo 可以自定義名稱。

步驟 05:運(yùn)行代碼。執(zhí)行代碼,將看到下面的效果,以及最終輸出的 2020。

上述輸出信息中,可以看到 Go 語言會自動下載依賴文件,這就是 go mod 的神奇之處??吹?2020,相信讀者也知道運(yùn)行結(jié)果是正確的了。

推薦一個GO語言教程,最好能從最基礎(chǔ)的開始?

Go 語言被設(shè)計成一門應(yīng)用于搭載 Web 服務(wù)器,存儲集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語言。對于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語言無疑比大多數(shù)其它語言有著更高的開發(fā)效率。它提供了海量并行的支持,這對于游戲服務(wù)端的開發(fā)而言是再好不過了。最近黑馬程序員剛出了一套go語言的教程,還不錯,可以去視頻庫里下載,或者管播妞要也行。

如何學(xué)習(xí)區(qū)塊鏈?

如果想學(xué)習(xí)比特幣及區(qū)塊鏈方面的知識,還是要系統(tǒng)性地學(xué)習(xí)。網(wǎng)上這方面討論、資料都很多,但水平參差不齊。建議看一下區(qū)塊鏈老師的線上課程。

線上區(qū)塊鏈視頻教程是由Steven老師進(jìn)行直播教學(xué)。Steven老師,西交大學(xué)學(xué)士,北航軟件學(xué)院工程碩士。從事IT行業(yè)15年,7年編程開發(fā)經(jīng)驗,8年計算機(jī)培訓(xùn)經(jīng)驗。分別從事過Asp、Asp.net、PHP、Java、Android、HTML5等開發(fā)和教學(xué)工作。曾出版發(fā)行《變身程序猿——Android應(yīng)用開發(fā)》(電子工業(yè)出版社),《Steven陪你學(xué)Android》、《零基礎(chǔ)學(xué)編程》、《解密區(qū)塊鏈》系列視頻。

想要學(xué)習(xí)區(qū)塊鏈技術(shù)的同學(xué)通過三個月線上直播學(xué)習(xí),畢業(yè)后能夠掌握區(qū)塊鏈基本概念、精通智能合約開發(fā)與架構(gòu)設(shè)計、掌握代幣開發(fā)與ICO發(fā)幣、掌握全棧dapp開發(fā)。

其區(qū)塊鏈技術(shù)課程大綱如下:

1.1區(qū)塊鏈基本理論 0.5周

1.1.1初識區(qū)塊鏈

1.1.2認(rèn)識區(qū)塊鏈家族

1.1.3區(qū)塊鏈與比特幣常見問題及基本概念

1.1.4區(qū)塊鏈應(yīng)用場景

1.1.5比特幣錢包BitcoinCore

1.1.6testnet環(huán)境實(shí)現(xiàn)比特幣交易

1.2編程基礎(chǔ)入門 3.5周

1.2.1計算機(jī)軟硬件基礎(chǔ)

1.2.2字符集及字符編碼

1.2.3HTML+CSS(含HTML5+CSS3)

1.2.4ECMAScript + BOM + DOM

1.2.5jQuery

1.2.6node.js

1.2.7Ajax及Express

1.3Go編程語言 6周

1.3.1Go基本語法

1.3.2流程控制

1.3.3函數(shù)及數(shù)據(jù)

1.3.4錯誤處理

1.3.5Go面向?qū)ο缶幊?/p>

1.3.6Go并發(fā)編程

1.3.7Go網(wǎng)絡(luò)編程

1.3.8Go安全編程

1.3.9Go進(jìn)階編程(goroutine、channel)

1.3.10數(shù)據(jù)庫MySQL、LevelDB

1.4區(qū)塊鏈1.0——比特幣Bitcoin 1周

1.4.1比特幣原理

1.4.2比特幣系統(tǒng)架構(gòu)

1.4.3密碼算法(Go語言實(shí)現(xiàn))

1.4.4共識算法(Go語言實(shí)現(xiàn))

1.4.5比特幣交易原理及交易腳本

1.4.6比特幣RPC編程(node.js實(shí)現(xiàn))

1.4.7比特幣源碼解析

1.5區(qū)塊鏈2.0——以太坊Ethereum 3周

1.5.1以太坊工作原理及基礎(chǔ)架構(gòu)

1.5.2以太坊基本概念(賬戶、交易、Gas)

1.5.3以太坊錢包Mist及Metamask

1.5.4以太坊交易

1.5.5ERC20標(biāo)準(zhǔn)Token開發(fā)部署

1.5.6以太坊開發(fā)IDE——remix-ide

1.5.7智能合約與Solidity

1.5.8Solidity部署、備份及調(diào)用

1.5.9框架技術(shù):truffle及web3

1.5.10DApp開發(fā)實(shí)戰(zhàn)

1.5.11Geth

1.6EOS及星云鏈開發(fā)實(shí)戰(zhàn) 3周

1.6.1EOS介紹及石墨烯生態(tài)系

1.6.2EOS主要特點(diǎn)及發(fā)展前景

1.6.3EOS開發(fā)智能合約

1.6.4cleos及RPC接口

1.6.5EOS應(yīng)用開發(fā)實(shí)戰(zhàn)

1.6.6星云鏈介紹

1.6.7星云鏈開發(fā)DApp實(shí)戰(zhàn)

1.7區(qū)塊鏈3.0——超級賬本之Fabric 3周

1.7.1超級賬本項目介紹

1.7.2Fabric部署和使用

1.7.3Fabric配置管理

1.7.4Fabric架構(gòu)設(shè)計

1.7.5Fabric CA應(yīng)用與配置

1.7.6應(yīng)用開發(fā)實(shí)戰(zhàn)

區(qū)塊鏈?zhǔn)袌鲆呀?jīng)開始向大眾打開,迅速抓住學(xué)習(xí)機(jī)遇,掌握區(qū)塊鏈技術(shù),站在互聯(lián)網(wǎng)時代風(fēng)口,未來發(fā)展必定會勢如破竹!

網(wǎng)站欄目:go語言rpc編程視頻 go語言編程實(shí)戰(zhàn)
鏈接分享:http://muchs.cn/article24/dohodje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)品牌網(wǎng)站建設(shè)、App開發(fā)、網(wǎng)站設(shè)計公司、手機(jī)網(wǎng)站建設(shè)網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計