golang以太坊
1. go語言可以做什麼
1、伺服器編程:以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、數據打包、虛擬機處理、文件系統等。
2、分布式系統、資料庫代理器、中間件:例如Etcd。
3、網路編程:這一塊目前應用最廣,包括Web應用、API應用、下載應用,而且Go內置的net/http包基本上把我們平常用到的網路功能都實現了。
4、開發雲平台:目前國外很多雲平台在採用Go開發,我們所熟知的七牛雲、華為雲等等都有使用Go進行開發並且開源的成型的產品。
5、區塊鏈:目前有一種說法,技術從業人員把Go語言稱作為區塊鏈行業的開發語言。如果大家學習區塊鏈技術的話,就會發現現在有很多很多的區塊鏈的系統和應用都是採用Go進行開發的,比如ehtereum是目前知名度最大的公鏈,再比如fabric是目前最知名的聯盟鏈,兩者都有go語言的版本,且go-ehtereum還是以太坊官方推薦的版本。
後期的很多項目都使用 Go 語言進行重新原生實現,這個過程相對於其他語言要簡單一些,這也促成了大量使用 Go 語言原生開發項目的出現。
2. go語言的全稱
Golang
3. 學習區塊鏈開發是學習go語言、hyper ledger fabric比較好、還是以太坊智能合約比較好或者公鏈開發
Go全棧+區塊鏈課程:
一共22周,分為5個階段,
第一階段4周 go語言基礎與網路並發 ,學完入門go語言,
第二階段 4周 go語言實戰web開發,爬蟲開發,密碼學,共識演算法,實現輕量級公鏈,學完可以開發golang的網站,爬蟲,實現輕量級區塊鏈
第三階段 4周 以太坊源碼分析與智能合約Dapp開發,學完掌握以太坊核心與開發智能合約,以及區塊鏈,
第四階段 4周 超級賬本,比特幣 EOS,源碼分析與智能合約實戰,學完以後掌握超級賬本開發,山寨比特幣,分叉EOS,以及智能合約Dapp開發
第五階段 6周 項目實戰 ,實戰5個企業級項目,學完可以擁有1年區塊鏈項目經驗
從語言本身特點來看,Go 是一種非常高效的語言,高度支持並發性,Go 語言的本身,它更注重的是分布式系統,並發處理相對還是不錯的,比如廣告和搜索,那種高並發的伺服器。
Go語言優點:
性能優秀,可直接編譯成機器碼,不依賴其他庫,Go 極其地快。其性能與 Java 或 C++相似。
語言層面支持並發,這個就是Go最大的特色,天生的支持並發,Go就是基因裡面支持的並發,可以充分的利用多核,很容易的使用並發。
內置runtime,支持垃圾回收,這屬於動態語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數情況,特別是Go1.1之後的GC。
簡單易學,Go語言的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,但是表達能力很強大,幾乎支持大多數你在其他語言見過的特性:繼承、重載、對象等。
豐富的標准庫,Go目前已經內置了大量的庫,特別是網路庫非常強大,我最愛的也是這部分。
內置強大的工具,Go語言裡面內置了很多工具鏈,最好的應該是gofmt工具,自動化格式化代碼,能夠讓團隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難。
跨平台編譯,快速編譯,相較於 Java 和 C++呆滯的編譯速度,Go 的快速編譯時間是一個主要的效率優勢
Go語言缺點:
軟體包管理:Go 語言的軟體包管理絕對不是完美的。默認情況下,它沒有辦法制定特定版本的依賴庫,也無法創建可復寫的 builds。相比之下 Python、Node 和 Ruby 都有更好的軟體包管理系統。然而通過正確的工具,Go 語言的軟體包管理也可以表現得不錯。
缺少開發框架:Go 語言沒有一個主要的框架,如 Ruby 的 Rails 框架、Python 的 Django 框架或 PHP 的 Laravel。這是 Go 語言社區激烈討論的問題,因為許多人認為我們不應該從使用框架開始。在很多案例情況中確實如此,但如果只是希望構建一個簡單的 CRUD API,那麼使用 Django/DJRF、Rails Laravel 或 Phoenix 將簡單地多。
異常錯誤處理:Go 語言通過函數和預期的調用代碼簡單地返回錯誤(或返回調用堆棧)而幫助開發者處理編譯報錯。雖然這種方法是有效的,但很容易丟失錯誤發生的范圍,因此我們也很難向用戶提供有意義的錯誤信息。錯誤包(errors package)可以允許我們添加返回錯誤的上下文和堆棧追蹤而解決該問題。
另一個問題是我們可能會忘記處理報錯。諸如 errcheck 和 megacheck 等靜態分析工具可以避免出現這些失誤。雖然這些解決方案十分有效,但可能並不是那麼正確的方法。
4. 以太坊 cd go-ethereum 、make geth超時問題
解決https://proxy.golang.org/github.com 報443 超時問題
make geth
go: github.com/Azure/[email protected]: Get "https://proxy.golang.org/github.com/%21azure/azure-storage-blob-go/@v/v0.7.0.mod": dial tcp 172.217.24.17:443: i/o timeout
make: *** [geth] Error 1
替換一個國內的代理地址
終端命令執行:
go env -w GOPROXY=https://goproxy.cn
重新執行make geth