最近在看比特幣源碼,從Golang版本入手,一來最近也在寫Golang語言,二來btcd版本的代碼模塊設(shè)計(jì)以及單元測(cè)試要比C++版本的源碼更為清晰和完善旱捧。
對(duì)于Golang新手但又有其他語言基礎(chǔ)的人,我推薦《Go語言實(shí)戰(zhàn)》作為Golang入門書籍踩麦。該書并不像傳統(tǒng)的教材按基礎(chǔ)類型枚赡、循環(huán)這種套路順序講述,而是直接點(diǎn)出Golang和其他語言的不同谓谦,并用不同的小項(xiàng)目直接從代碼開始講解Golang的語法贫橙。對(duì)于有其他語言基礎(chǔ)的人而言,通過代碼能更容易理解一門新的語言反粥。
同時(shí)卢肃,可以先看"如何用Go實(shí)現(xiàn)區(qū)塊鏈"這個(gè)簡(jiǎn)化版的項(xiàng)目(https://liuchengxu.gitbooks.io/blockchain-tutorial/content/part-1/basic-prototype.html),它把區(qū)塊鏈最基本的結(jié)構(gòu)都包含在內(nèi)星压,可以幫助理解践剂。在基本工作準(zhǔn)備就緒后,開始體驗(yàn)btcd代碼娜膘。
首先要配置好環(huán)境,我使用的是ubuntu系統(tǒng)优质,安裝golang后再設(shè)置GOROOT和GOPATH路徑竣贪。這些在網(wǎng)上可以找到詳細(xì)的設(shè)置方法,簡(jiǎn)單地說GOROOT是Golang源碼安裝路徑巩螃,GOPATH是開發(fā)代碼的路徑演怎,類似JAVA項(xiàng)目的workplace。
跑glide install這里會(huì)遇到墻的問題避乏,導(dǎo)致下面這個(gè)報(bào)錯(cuò):
我的做法是配置鏡像爷耀,然后再重跑glide install就可以了
就這么簡(jiǎn)單,btcd安裝完成了拍皮。
有幾個(gè)基本的命令可以跑下
查看版本
查看可用的命令
跑btcd則直接啟動(dòng)了比特幣程序歹叮,內(nèi)置的DNS SEEDS會(huì)讓這個(gè)全新的節(jié)點(diǎn)接入比特幣網(wǎng)絡(luò)跑杭。
btcd啟動(dòng)一個(gè)全新節(jié)點(diǎn)的截圖
在這個(gè)截圖里,可以看到不少的信息咆耿,即本地這個(gè)重新的節(jié)點(diǎn)如何訪問比特幣網(wǎng)絡(luò)里的其他節(jié)點(diǎn)德谅,進(jìn)而下載區(qū)塊數(shù)據(jù)到本地,具體交互詳情要往后再分析萨螺。簡(jiǎn)單地說窄做,第一次啟動(dòng)這個(gè)程序,好比一個(gè)新人進(jìn)入了比特幣的世界里慰技,但是新人不認(rèn)識(shí)這個(gè)世界里的其他人椭盏,其他人也不認(rèn)識(shí)他。于是新人會(huì)首先找到幾個(gè)權(quán)威的人(DNS Seeds)吻商,找到了其他人的地址掏颊,進(jìn)而新人再去認(rèn)識(shí)更多的人,成為這個(gè)網(wǎng)絡(luò)的一部分手报,同時(shí)把他們手頭上的賬本數(shù)據(jù)下載到本地蚯舱。
另外,需要留意的是這里連入的是主網(wǎng)掩蛤,這是2009年1月3日中本聰創(chuàng)建比特幣至今的網(wǎng)絡(luò)枉昏,目前總的區(qū)塊數(shù)據(jù)已經(jīng)超過100G。如果只是研究代碼揍鸟,并不需要下載這么多數(shù)據(jù)兄裂,而且也沒辦法在主網(wǎng)上直接做測(cè)試,因?yàn)槊抗P交易都要給真金白銀的礦工費(fèi)阳藻,那么testnet或就成了本地開發(fā)的首選晰奖,下篇文章將介紹比特幣的測(cè)試網(wǎng)絡(luò)。