2018-08-15

來源:互聯網
上載者:User

最近在看比特幣源碼,從Golang版本入手,一來最近也在寫Golang語言,二來btcd版本的代碼模組設計以及單元測試要比C++版本的源碼更為清晰和完善。

對於Golang新手但又有其他語言基礎的人,我推薦《Go語言實戰》作為Golang入門書籍。該書並不像傳統的教材按基礎類型、迴圈這種套路順序講述,而是直接點出Golang和其他語言的不同,並用不同的小項目直接從代碼開始講解Golang的文法。對於有其他語言基礎的人而言,通過代碼能更容易理解一門新的語言。

同時,可以先看"如何用Go實現區塊鏈"這個簡化版的項目(https://liuchengxu.gitbooks.io/blockchain-tutorial/content/part-1/basic-prototype.html),它把區塊鏈最基本的結構都包含在內,可以協助理解。在基本工作準備就緒後,開始體驗btcd代碼。

首先要配置好環境,我使用的是ubuntu系統,安裝golang後再設定GOROOT和GOPATH路徑。這些在網上可以找到詳細的設定方法,簡單地說GOROOT是Golang源碼安裝路徑,GOPATH是開發代碼的路徑,類似JAVA項目的workplace。

跑glide install這裡會遇到牆的問題,導致下面這個報錯:

我的做法是配置鏡像,然後再重跑glide install就可以了

就這麼簡單,btcd安裝完成了。

有幾個基本的命令可以跑下

查看版本

查看可用的命令

跑btcd則直接啟動了比特幣程式,內建的DNS SEEDS會讓這個全新的節點接入比特幣網路。

btcd啟動一個全新節點的

在這個裡,可以看到不少的資訊,即本地這個重新的節點如何訪問比特幣網路裡的其他節點,進而下載區塊資料到本地,具體互動詳情要往後再分析。簡單地說,第一次啟動這個程式,好比一個新人進入了比特幣的世界裡,但是新人不認識這個世界裡的其他人,其他人也不認識他。於是新人會首先找到幾個權威的人(DNS Seeds),找到了其他人的地址,進而新人再去認識更多的人,成為這個網路的一部分,同時把他們手頭上的賬本資料下載到本地。

另外,需要留意的是這裡連入的是主網,這是2009年1月3日中本聰建立比特幣至今的網路,目前總的區塊資料已經超過100G。如果只是研究代碼,並不需要下載這麼多資料,而且也沒辦法在主網上直接做測試,因為每筆交易都要給真金白銀的礦工費,那麼testnet或就成了本地開發的首選,下篇文章將介紹比特幣的測試網路。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.