真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言物聯(lián)網(wǎng)平臺 go語言物聯(lián)網(wǎng)平臺是什么

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

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

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、徐水網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為徐水等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

我們先來了解一下智能合約調(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ī)制;另 一種情況是雙方不在同一臺主機(jī),此時(shí)只能采用 RPC 機(jī)制進(jìn)行通信。

提到 RPC, 讀者應(yīng)該對 Geth 啟動參數(shù)有點(diǎn)印象,Geth 啟動時(shí)可以選擇開啟 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)在驗(yàn)證了交易的合法性后進(jìn)行全網(wǎng)廣播,被礦工打包到 區(qū)塊中代表此交易得到確認(rèn),至此交易才算完成。

就像數(shù)據(jù)庫一樣,每個(gè)區(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)用的兩個(gè)關(guān)鍵點(diǎn)是節(jié)點(diǎn)和 SDK。

由于 IPC 要求后端與節(jié)點(diǎn)必須在同一主機(jī),所以很多時(shí)候開發(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ú)保存在一個(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,以便工程自動識別。

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

該指令會自動將 go-ethereum 下載到“$GOPATH/src/github.com/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 語言會自動下載依賴文件,這就是 go mod 的神奇之處。看到 2020,相信讀者也知道運(yùn)行結(jié)果是正確的了。

Go語言的支持平臺

LiteIDE是一款專門為Go語言開發(fā)的跨平臺輕量級集成開發(fā)環(huán)境(IDE),由QT編寫。

LiteIDE主要特點(diǎn): 支持主流操作系統(tǒng)

Windows

Linux

MacOS X Go編譯環(huán)境管理和切換

管理和切換多個(gè)Go編譯環(huán)境

支持Go語言交叉編譯 與Go標(biāo)準(zhǔn)一致的項(xiàng)目管理方式

基于GOPATH的包瀏覽器

基于GOPATH的編譯系統(tǒng)

基于GOPATH的Api文檔檢索 Go語言的編輯支持

類瀏覽器和大綱顯示

Gocode(代碼自動完成工具)的完美支持

Go語言文檔查看和Api快速檢索

代碼表達(dá)式信息顯示F1

源代碼定義跳轉(zhuǎn)支持F2

Gdb斷點(diǎn)和調(diào)試支持

gofmt自動格式化支持 其他特征

支持多國語言界面顯示

完全插件體系結(jié)構(gòu)

支持編輯器配色方案

基于Kate的語法顯示支持

基于全文的單詞自動完成

支持鍵盤快捷鍵綁定方案

Markdown文檔編輯支持

實(shí)時(shí)預(yù)覽和同步顯示

自定義CSS顯示

可導(dǎo)出HTML和PDF文檔

批量轉(zhuǎn)換/合并為HTML/PDF文檔 Sublime Text 2(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。

其優(yōu)點(diǎn)有: 自動化提示代碼。 保存的時(shí)候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標(biāo)準(zhǔn)。 支持項(xiàng)目管理 支持語法高亮 熟悉Java的讀者應(yīng)該對于idea不陌生,idea是通過一個(gè)插件來支持go語言的高亮語法,代碼提示和重構(gòu)實(shí)現(xiàn)。

web 物聯(lián)網(wǎng)用什么開發(fā)

物聯(lián)網(wǎng)中最常用的編程語言,即Java,C,C ++,Python,JavaScript和Go。

Java:物聯(lián)網(wǎng)技術(shù)最流行的編程語言

Java有多個(gè)應(yīng)用領(lǐng)域,從后端編程到Android的移動應(yīng)用。根據(jù) Eclipse基金會執(zhí)行的2017年物聯(lián)網(wǎng)開發(fā)者調(diào)查,Java首次提供了用于物聯(lián)網(wǎng)開發(fā)的編程語言列表,專門用于網(wǎng)關(guān)和云。

使用Java進(jìn)行物聯(lián)網(wǎng)開發(fā)的一個(gè)主要好處是便攜性。Java沒有任何硬件限制,這意味著您可以在計(jì)算機(jī)上編寫和調(diào)試Java代碼,并將其部署到幾乎任何運(yùn)行Java虛擬機(jī)的設(shè)備上。出于這個(gè)原因,許多公司選擇聘請Java開發(fā)人員進(jìn)行物聯(lián)網(wǎng)項(xiàng)目。

C:嵌入式設(shè)備的關(guān)鍵編程語言

C編程語言接下來成為物聯(lián)網(wǎng)IoT堆棧最喜歡的語言。然而,根據(jù)Eclipse基金會的說法,它被認(rèn)為是受限設(shè)備開發(fā)的領(lǐng)先技術(shù)。

該編程語言提供對低級硬件API的直接訪問。由于其與機(jī)器語言的相似性,C非常快速且靈活,使其成為處理能力有限的物聯(lián)網(wǎng)系統(tǒng)的完美選擇。

C ++:Linux的第一語言

與其前身C一樣,C ++已廣泛用于嵌入式系統(tǒng)開發(fā)。但是,C ++的主要優(yōu)勢在于處理能力,在任務(wù)更加復(fù)雜時(shí)使其成為C的有用替代方案。

C ++最適合編寫硬件特定的代碼。它可與Linux,第一大物聯(lián)網(wǎng)技術(shù)操作系統(tǒng)配合使用。但是,與Java相比,它具有有限的可移植性。

Python:面向數(shù)據(jù)的物聯(lián)網(wǎng)系統(tǒng)的解決方案

作為最受歡迎的網(wǎng)絡(luò)編程語言之一,以及科學(xué)計(jì)算的前沿技術(shù),Python在物聯(lián)網(wǎng)開發(fā)中也獲得了巨大的推動力。 對于數(shù)據(jù)密集型應(yīng)用程序,Python是一個(gè)不錯(cuò)的選擇,特別是在管理和組織復(fù)雜數(shù)據(jù)時(shí)。

JavaScript:事件驅(qū)動物聯(lián)網(wǎng)應(yīng)用的最佳解決方案

根據(jù)年度StackOverflow開發(fā)者調(diào)查顯示,JavaScript是過去五年來最流行的編程語言之一,是現(xiàn)代Web開發(fā)中的核心技術(shù)。

在許多其他應(yīng)用領(lǐng)域中,JavaScript是物聯(lián)網(wǎng)編程語言中最常用的構(gòu)建事件驅(qū)動系統(tǒng)。它可以管理連接設(shè)備的大型網(wǎng)絡(luò),并且在需要處理多個(gè)任務(wù)而無需等待其他任務(wù)完成時(shí)可以勝任。JavaScript對IoT的主要優(yōu)勢之一是非常節(jié)約資源。

Go:堅(jiān)固的技術(shù)堆棧為復(fù)雜的物聯(lián)網(wǎng)網(wǎng)絡(luò)提供動力

Go是一款開源編程語言,由Google創(chuàng)建。盡管它不能像語言那樣擁有同樣廣泛的用途,但我們之前專注于這一點(diǎn),它是在您的物聯(lián)網(wǎng)系統(tǒng)內(nèi)建立通信層的強(qiáng)大技術(shù)。

Go語言關(guān)于物聯(lián)網(wǎng)的主要優(yōu)勢是并發(fā)性和同時(shí)運(yùn)行多個(gè)進(jìn)程(數(shù)據(jù)輸入和輸出)的能力。這使得構(gòu)建由多個(gè)傳感器和設(shè)備組成的復(fù)雜IoT網(wǎng)絡(luò)變得更加容易。

Go語言的跨平臺能力到底有多強(qiáng)?看完你就知道了

對比于其他語言的程序,Go語言的跨平臺能力是真的強(qiáng),拿.Net和JAVA來說吧,.Net在.Net core出現(xiàn)之前是不能跨平臺的,只能在windows上編譯運(yùn)行,即使是.net core出現(xiàn)以后,跨平臺的程序也是相當(dāng)?shù)穆闊6鴍ava雖然一直都可以跨平臺,但是運(yùn)行JAVA程序的機(jī)器上也必須要有JAVA程序運(yùn)行環(huán)境JRE。而相對于Go程序,跨平臺就簡單的多了,只需要在編譯指定目標(biāo)程序運(yùn)行的架構(gòu)和環(huán)境即可編譯出指定操作系統(tǒng)和架構(gòu)的程序。

以上是指定了go的環(huán)境變量后執(zhí)行的go build命令進(jìn)行目標(biāo)程序的構(gòu)建,這種方式會一直生效的,如果不讓他一直生效,可以在構(gòu)建的時(shí)候臨時(shí)指定環(huán)境變量,下面以window的環(huán)境為例,來介紹臨時(shí)指定環(huán)境變量的方式構(gòu)建可以在Linux環(huán)境下運(yùn)行的可執(zhí)行程序:

可以根據(jù)不同的架構(gòu)和操作系統(tǒng)將其編寫為不同的.bat的可執(zhí)行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫成腳本文件放置在程序的根目錄,這樣在構(gòu)建的時(shí)候就不用再敲命令了,直接運(yùn)行腳本就可以了。

Java程序編譯打包后為war包或者是java包,必須執(zhí)行java -jar 命令或者將其放置到tomcat的指定目錄下,運(yùn)行tomcat程序。而Go語言編寫的程序最終為可執(zhí)行的文件(window下編譯出的是.exe的可執(zhí)行文件),只需要將其賦予可執(zhí)行的權(quán)限就可以直接運(yùn)行了。

構(gòu)建JAVA程序的鏡像需要指定java的基礎(chǔ)鏡像,否則就需要在鏡像中安裝java的運(yùn)行環(huán)境了,下面展示的是構(gòu)建的一個(gè)JAVA程序的鏡像,構(gòu)建出來鏡像的體積相對比較大

而Go程序制作出的鏡像就不需要安裝任何的依賴環(huán)境,因?yàn)樗诖虬臅r(shí)候就已經(jīng)將依賴的包一塊打包到一起了

拿著這個(gè)鏡像就可以到處運(yùn)行了。

通過對比我們可以發(fā)現(xiàn),如果沒有之前的技術(shù)和業(yè)務(wù)的積累,重新開發(fā)一個(gè)新的項(xiàng)目,使用go去開發(fā)無疑是最容易上手的,所以現(xiàn)在很多公司都使用go進(jìn)行開發(fā),也逐漸將其他語言的項(xiàng)目逐步的用go語言進(jìn)行改造。其實(shí)用什么語言不重要,合適的才重要,開發(fā)項(xiàng)目在選擇語言的時(shí)候也會綜合多方面來考慮選擇合適的語言和架構(gòu),畢竟很多公司都不是搞研究的,都需要項(xiàng)目來賺錢,所以開發(fā)的速度、客戶的滿意度、項(xiàng)目交付的時(shí)間才是驅(qū)動公司技術(shù)的主要因素。

我們個(gè)人也應(yīng)該不斷完善自己的技術(shù)棧,不應(yīng)該太依靠某種語言,最重要的還是自己的架構(gòu)思想和底層架構(gòu)知識,只有掌握了這些才能夠不被 社會 和公司“優(yōu)化”。


分享標(biāo)題:go語言物聯(lián)網(wǎng)平臺 go語言物聯(lián)網(wǎng)平臺是什么
本文網(wǎng)址:http://weahome.cn/article/dddgejo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部