沒有基礎如何學習區(qū)塊鏈的方法主要有兩種,一是自學,二是去培訓。以下是個人觀點和經(jīng)驗,不喜互噴,謝謝。
成都創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設擁有電腦版、微信版、手機版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡+移動網(wǎng)絡一網(wǎng)打盡,滿足企業(yè)的營銷需求!成都創(chuàng)新互聯(lián)具備承接各種類型的做網(wǎng)站、成都網(wǎng)站設計項目的能力。經(jīng)過10年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務,并獲得了客戶的一致好評。
區(qū)塊鏈學習說真的是一個漫長且艱辛的過程。因為它的技術難度高、注重實踐性、行業(yè)內(nèi)并沒有區(qū)塊鏈標準等等。如果決定學習,便需要付出很多的東西。比如時間和精力,網(wǎng)上有自學的平臺,比如網(wǎng)易云課堂、b站、騰訊課堂等。自學的話可以將區(qū)塊鏈技術分為多個部分,依次學習最后再整合,多結合區(qū)塊鏈行業(yè)中的案例進行總結思考。
區(qū)塊鏈專業(yè)課程有不少的大學已開設,但我并沒有親身經(jīng)歷。不過想學看哪里有公開課可以自己多搜集一些,外面的培訓機構很多我并未接觸過不想做評價。謝謝
區(qū)塊鏈2.0就是把人類的統(tǒng)一語言、經(jīng)濟行為、社會制度乃至生命都寫就為一個基礎軟件協(xié)議。統(tǒng)一語將人類各民族自然語言統(tǒng)一為一種低熵值的表達形式并提供了它與計算機語言的接口;人類經(jīng)濟行為、社會制度體系和生命再生機制統(tǒng)稱為時間貨幣系統(tǒng)。區(qū)塊鏈2.0既是集成了統(tǒng)一語和時間貨幣的分布式人工智能操作系統(tǒng)。
從語言本身特點來看,Go 是一種非常高效的語言,高度支持并發(fā)性,Go 語言的本身,它更注重的是分布式系統(tǒng),并發(fā)處理相對還是不錯的,比如廣告和搜索,那種高并發(fā)的服務器。
Go語言優(yōu)點:
性能優(yōu)秀,可直接編譯成機器碼,不依賴其他庫,Go 極其地快。其性能與 Java 或 C++相似。
語言層面支持并發(fā),這個就是Go最大的特色,天生的支持并發(fā),Go就是基因里面支持的并發(fā),可以充分的利用多核,很容易的使用并發(fā)。
內(nèi)置runtime,支持垃圾回收,這屬于動態(tài)語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數(shù)情況,特別是Go1.1之后的GC。
簡單易學,Go語言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go關鍵字是25個,但是表達能力很強大,幾乎支持大多數(shù)你在其他語言見過的特性:繼承、重載、對象等。
豐富的標準庫,Go目前已經(jīng)內(nèi)置了大量的庫,特別是網(wǎng)絡庫非常強大,我最愛的也是這部分。
內(nèi)置強大的工具,Go語言里面內(nèi)置了很多工具鏈,最好的應該是gofmt工具,自動化格式化代碼,能夠讓團隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難。
跨平臺編譯,快速編譯,相較于 Java 和 C++呆滯的編譯速度,Go 的快速編譯時間是一個主要的效率優(yōu)勢
Go語言缺點:
軟件包管理:Go 語言的軟件包管理絕對不是完美的。默認情況下,它沒有辦法制定特定版本的依賴庫,也無法創(chuàng)建可復寫的 builds。相比之下 Python、Node 和 Ruby 都有更好的軟件包管理系統(tǒng)。然而通過正確的工具,Go 語言的軟件包管理也可以表現(xiàn)得不錯。
缺少開發(fā)框架:Go 語言沒有一個主要的框架,如 Ruby 的 Rails 框架、Python 的 Django 框架或 PHP 的 Laravel。這是 Go 語言社區(qū)激烈討論的問題,因為許多人認為我們不應該從使用框架開始。在很多案例情況中確實如此,但如果只是希望構建一個簡單的 CRUD API,那么使用 Django/DJRF、Rails Laravel 或 Phoenix 將簡單地多。
異常錯誤處理:Go 語言通過函數(shù)和預期的調(diào)用代碼簡單地返回錯誤(或返回調(diào)用堆棧)而幫助開發(fā)者處理編譯報錯。雖然這種方法是有效的,但很容易丟失錯誤發(fā)生的范圍,因此我們也很難向用戶提供有意義的錯誤信息。錯誤包(errors package)可以允許我們添加返回錯誤的上下文和堆棧追蹤而解決該問題。
另一個問題是我們可能會忘記處理報錯。諸如 errcheck 和 megacheck 等靜態(tài)分析工具可以避免出現(xiàn)這些失誤。雖然這些解決方案十分有效,但可能并不是那么正確的方法。
適合人群:
1.沒有編程基礎,想學IT技術的人群;
2.發(fā)展受限,想要提升的人群;
3.有編程經(jīng)驗,想要轉(zhuǎn)行的人群。
學習目標:
從0開始學習Go語言,通過對Go語言的學習綜合培養(yǎng)區(qū)塊鏈專項應用型人才。
就業(yè)方向:
1.新技術Go語言開發(fā)(Web開發(fā)、微服務、分布式)。
2.新領域區(qū)塊鏈開發(fā)(密碼學安全、區(qū)塊鏈系統(tǒng)、區(qū)塊鏈應用)。
golang學習比較簡單,不過任何一門語言都不是孤立存在的,在這里簡要說明一下golang開發(fā)的學習路線
1.golang基礎,包括go語言安裝,go語言語法,流程控制語句,函數(shù),方法,面向?qū)ο蟾拍?,網(wǎng)絡編程,并發(fā)編程等
2.golang開發(fā)框架,包括beego,gin,Iris,Echo等
3.微服務開發(fā)
4.深入的話還可以學習算法部分。如果要接觸區(qū)塊鏈相關技術的話,還需要學習區(qū)塊鏈的加密算法等相關知識
5.如果要結合go實現(xiàn)應用的話,肯定離不開各種數(shù)據(jù)庫,比如關系型數(shù)據(jù)庫oracle、mysql,或者各類非關系型數(shù)據(jù)庫等等
6.如果需要開發(fā)界面的話,還需要學習網(wǎng)頁編程如html,javascript,vue,elementUI,bootstrap等網(wǎng)頁開發(fā)技術和框架。
7.在以上學習的基礎上還可以向架構方面深入學習。
鏈喬教育在線祝您學有所成。
智能合約調(diào)用是實現(xiàn)一個 DApp 的關鍵,一個完整的 DApp 包括前端、后端、智能合約及區(qū)塊 鏈系統(tǒng),智能合約的調(diào)用是連接區(qū)塊鏈與前后端的關鍵。
我們先來了解一下智能合約調(diào)用的基礎原理。智能合約運行在以太坊節(jié)點的 EVM 中。因此要 想調(diào)用合約必須要訪問某個節(jié)點。
以后端程序為例,后端服務若想連接節(jié)點有兩種可能,一種是雙 方在同一主機,此時后端連接節(jié)點可以采用 本地 IPC(Inter-Process Communication,進 程間通信)機制,也可以采用 RPC(Remote Procedure Call,遠程過程調(diào)用)機制;另 一種情況是雙方不在同一臺主機,此時只能采用 RPC 機制進行通信。
提到 RPC, 讀者應該對 Geth 啟動參數(shù)有點印象,Geth 啟動時可以選擇開啟 RPC 服務,對應的 默認服務端口是 8545。。
接著,我們來了解一下智能合約運行的過程。
智能合約的運行過程是后端服務連接某節(jié)點,將 智能合約的調(diào)用(交易)發(fā)送給節(jié)點,節(jié)點在驗證了交易的合法性后進行全網(wǎng)廣播,被礦工打包到 區(qū)塊中代表此交易得到確認,至此交易才算完成。
就像數(shù)據(jù)庫一樣,每個區(qū)塊鏈平臺都會提供主流 開發(fā)語言的 SDK(Software Development Kit,軟件開發(fā)工具包),由于 Geth 本身就是用 Go 語言 編寫的,因此若想使用 Go 語言連接節(jié)點、發(fā)交易,直接在工程內(nèi)導入 go-ethereum(Geth 源碼) 包就可以了,剩下的問題就是流程和 API 的事情了。
總結一下,智能合約被調(diào)用的兩個關鍵點是節(jié)點和 SDK。
由于 IPC 要求后端與節(jié)點必須在同一主機,所以很多時候開發(fā)者都會采用 RPC 模式。除了 RPC,以太坊也為開發(fā)者提供了 json- rpc 接口,本文就不展開討論了。
接下來介紹如何使用 Go 語言,借助 go-ethereum 源碼庫來實現(xiàn)智能合約的調(diào)用。這是有固定 步驟的,我們先來說一下總體步驟,以下面的合約為例。
步驟 01:編譯合約,獲取合約 ABI(Application Binary Interface,應用二進制接口)。 單擊【ABI】按鈕拷貝合約 ABI 信息,將其粘貼到文件 calldemo.abi 中(可使用 Go 語言IDE 創(chuàng)建該文件,文件名可自定義,后綴最好使用 abi)。
最好能將 calldemo.abi 單獨保存在一個目錄下,輸入“l(fā)s”命令只能看到 calldemo.abi 文件,參 考效果如下:
步驟 02:獲得合約地址。注意要將合約部署到 Geth 節(jié)點。因此 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:是指定輸出文件中的基本結構類型。 (3)pkg:指定輸出文件 package 名稱。 (4)out:指定輸出文件名。 執(zhí)行后,將在代碼目錄下看到 funcdemo.go 文件,讀者可以打開該文件欣賞一下,注意不要修改它。
步驟 04:創(chuàng)建 main.go,填入如下代碼。 注意代碼中 HexToAddress 函數(shù)內(nèi)要傳入該合約部署后的地址,此地址在步驟 01 中獲得。
步驟 04:設置 go mod,以便工程自動識別。
前面有所提及,若要使用 Go 語言調(diào)用智能合約,需要下載 go-ethereum 工程,可以使用下面 的指令:
該指令會自動將 go-ethereum 下載到“$GOPATH/src/github.com/ethereum/go-ethereum”,這樣還算 不錯。不過,Go 語言自 1.11 版本后,增加了 module 管理工程的模式。只要設置好了 go mod,下載 依賴工程的事情就不必關心了。
接下來設置 module 生效和 GOPROXY,命令如下:
在項目工程內(nèi),執(zhí)行初始化,calldemo 可以自定義名稱。
步驟 05:運行代碼。執(zhí)行代碼,將看到下面的效果,以及最終輸出的 2020。
上述輸出信息中,可以看到 Go 語言會自動下載依賴文件,這就是 go mod 的神奇之處。看到 2020,相信讀者也知道運行結果是正確的了。
任何一門計算機語言,都能在特定某個領域的應用中,實現(xiàn)區(qū)塊鏈技術;
具體使用哪一門語言,完全看我們相應領域行業(yè)企業(yè)項目的技術要求,以及更關鍵的:跟已有信息系統(tǒng)的有效對接聯(lián)通。
區(qū)塊鏈具有自下而上生成記錄,生成兩方或多方合同類記錄,加入第三方確認機制,分布存儲,……等特點;
從而讓它相比集中式的存儲運算而言,變得更為可信。
常見的總統(tǒng)投票,就非常適合以區(qū)塊鏈技術重新架構;采用區(qū)塊鏈技術的投票系統(tǒng),能夠避免哪一家技術公司、某一個關鍵技術人員,操縱選票統(tǒng)計結果的可能。
像我們的法院證據(jù),也特別適合采用區(qū)塊鏈技術重新架構開發(fā)。
其實像當前我們各類互聯(lián)網(wǎng)時代的“版權系統(tǒng)”,它們中一些就是采用區(qū)塊鏈技術架構而來,只不過,目前我們的新聞出版局、專利局(或者更廣義地被稱作“專家評委”),都尚未接入這些由互聯(lián)網(wǎng)公司創(chuàng)新而來的版權平臺。
我們耳熟能詳 的“法大大”(雖然名字不甚好聽、甚至乍一聽來有些讓人“摸不著頭腦”),它也其實正準備采用最新的區(qū)塊鏈技術重新架構;采用區(qū)塊鏈技術的合同平臺,因為變得更加可信,也才能更便于互聯(lián)網(wǎng)時代人們簽訂各類商務合同。
還有像我們的“征信系統(tǒng)”,也非常適合以區(qū)塊鏈技術加以改造。能夠讓它更有說服力,而不致于出現(xiàn)一家單位、乃至隨意某個關鍵技術人員,能隨意往其中添加“征信污點數(shù)據(jù)”的情況。
還有像我們的P2P貸款,如果能夠以區(qū)塊鏈技術重新架構的話,也能夠變得更加可信,而不致于出現(xiàn)違約、卷款跑路這樣的失信情況。
區(qū)塊鏈需要學的課程有:1.Khan Academy;2.Udemy;3. Lynda;4.Coursera;5.PluralSight等。另外,學習區(qū)塊鏈你還得知道區(qū)塊鏈與編程語言的關系。學習區(qū)塊鏈開發(fā)建議建立在Go語言和java基礎上,而且Go語言的學習難度比Java略低。
Khan Academy
如果你想重溫一下你的比特幣知識,或者從頭開始學習加密貨幣,知識點講解的很徹底,并且會讓你在區(qū)塊鏈的道路上走向正確的方向。您可以通過8個獨立的步驟,從基本的概述到對加密哈希函數(shù)、數(shù)字簽名、工作量證明和區(qū)塊鏈安全性的解釋。
2.Udemy
你不會因為參加2小時的在線課程而得到哈佛大學的教育。但實際上, 作為一個區(qū)塊鏈愛好者, Udemy 可能更有用。根據(jù)你的技術水平, 這里的每個人都有很多東西。
對于那些想了解區(qū)塊鏈基本知識的人來說, 有一個很好的課程叫做“ 區(qū)塊鏈和比特幣的基礎”。在上面的課程中,你可以得到2小時的課程,可下載的資源,以及在你想要完成課程后,你可以隨時訪問課程的機會。
如果這能激勵你繼續(xù)上課,你也會得到證書。但最重要的是,你會對比特幣的基本概念有一個深刻的了解。
3. Lynda
LinkedIn的Lynda提供了跨越所有級別的大量不同課程。
4.Coursera
Coursera的價格隨著復雜性的不同而不同,盡管它們確實有一些免費的選擇,鼓勵你購買單獨的補充課程材料。
課程由斯坦福、麻省理工學院和普林斯頓等大學的教授創(chuàng)建和教授,如果你想尋找優(yōu)秀的導師,課程設置是個明智的選擇。通過這些課程,你不會得到普林斯頓的證書,但是你會接觸到一些學術界最聰明的人。
其中一個特別突出的課程是“比特幣和加密技術”,該課程由普林斯頓大學的四位主要教授進行教授。這是一個為期11周的計劃,涵蓋密碼學、比特幣挖掘、規(guī)則、挖掘謎題,甚至還有一個關于altcoins的章節(jié)。此外,本課程還包括詳細的講課、練習、繼續(xù)閱讀和家庭作業(yè)。
5.PluralSight
PluralSight充滿了新的技術課程,這些課程都是實際操作和具體的。例如,如果你想學習MySQL或Javascript等編程語言。