您是否遇到過一個(gè)令人興奮的開源項(xiàng)目,您很想為它做出貢獻(xiàn),但您不知道如何開始?或者您可能是一位相對經(jīng)驗(yàn)豐富的開發(fā)人員(或者只是更精通開源的人),希望為令人興奮的開源項(xiàng)目做出貢獻(xiàn)?好吧,我已經(jīng)回答了您關(guān)于“我如何開始為開源做出貢獻(xiàn)”的問題。
從技術(shù)上講,我不會一般意義上回答這個(gè)問題。本文會更偏向于一個(gè)具體的開源項(xiàng)目utreexo。所以,我想這篇文章的目的是回答“我如何開始為 utreexo 做出貢獻(xiàn)?”這個(gè)問題。
那么如果 utreexo 首先呢?
好吧,如果你在這里,我假設(shè)你從某個(gè)地方聽說過 utreexo,或者至少你知道它是一個(gè)與比特幣相關(guān)的項(xiàng)目。如果您從未聽說過,那也沒關(guān)系,我會嘗試對其進(jìn)行更多分解,并提供相關(guān)鏈接,但是,強(qiáng)烈建議您對比特幣的工作原理有較高的了解,以便更好地理解這篇文章.
無論如何,為了回答上面的問題,讓我們先介紹一下 utreexo 想要實(shí)現(xiàn)的目標(biāo)的背景。
我們所知道的比特幣網(wǎng)絡(luò)(或者……還不知道)將所有交易的記錄存儲在數(shù)字分類賬中,稱為區(qū)塊鏈。該分類賬包含網(wǎng)絡(luò)上已進(jìn)行的所有交易的記錄。然而,網(wǎng)絡(luò)的當(dāng)前狀態(tài)不一定包含網(wǎng)絡(luò)上發(fā)生的所有事情的歷史,而是由所有未花費(fèi)交易輸出(utxo 集)的集合組成。該集合包含有關(guān)“哪個(gè)錢包有什么”的信息。簡單來說,utxo 集基本上只包含比特幣錢包賬戶中有多少比特幣的記錄。嗯,最后一句話不是很準(zhǔn)確,因?yàn)槲覀兊谋忍貛佩X包通常有多個(gè)未花費(fèi)的交易輸出,這些輸出組合起來就反映了我們的錢包余額以及可花費(fèi)的金額。
問題是,隨著網(wǎng)絡(luò)上交易數(shù)量的增加,這種比特幣狀態(tài)增長得更快、更大。這帶來了一個(gè)重大的可擴(kuò)展性問題,因?yàn)楦蟮囊?guī)模需要更大的硬件資源,這可能會阻止一些人操作比特幣節(jié)點(diǎn)以及其他缺點(diǎn)。
這就是 utreexo 發(fā)揮作用的地方。
所以我們再次問,“utreexo 是什么”? utreexo 是一種通過提出基于哈希的動(dòng)態(tài)加密累加器并引入僅存儲狀態(tài)的累加器表示的緊湊狀態(tài)節(jié)點(diǎn)來大大減少運(yùn)行完全驗(yàn)證節(jié)點(diǎn)所需的存儲的方法。這些節(jié)點(diǎn)需要發(fā)送者提供額外的包含證明,然后才能驗(yàn)證交易,
使用 utreexo,網(wǎng)絡(luò)的當(dāng)前狀態(tài)以更小的尺寸表示,這意味著更少的資源使用,這將鼓勵(lì)幾乎任何人方便地運(yùn)行節(jié)點(diǎn)。您可以從以下資源 eli5 中閱讀有關(guān) utreexo 的更多信息:utreexo — 擴(kuò)展解決方案,或使用 utreexo 改進(jìn)比特幣網(wǎng)絡(luò),或從此處下載 utreexo 白皮書。
設(shè)置您的開發(fā)環(huán)境
現(xiàn)在我們對 utreexo 了解更多了,讓我們開始設(shè)置我們的開發(fā)環(huán)境。
utreexo 是用 go 編寫的,因此擁有 go 編程語言的基本知識和理解將是額外的好處。但是,如果您是 go 新手,您可以查看這些資源以了解有關(guān)該語言的更多信息,并了解該語言的一些基本概念有效 go,學(xué)習(xí) go。
我在這篇文章中使用 visual studio 代碼,但請隨意使用您選擇的任何文本編輯器。
首先,我們需要安裝 go 編程語言。這里不介紹安裝步驟,但是你可以查看這篇文章,詳細(xì)介紹了如何安裝和運(yùn)行g(shù)o程序。下載并安裝 go。一旦你完成安裝 go,按照文章并通過檢查
的輸出來確保一切正常
go版本
我們可以繼續(xù)克隆代碼庫。掌握 git 的基本知識在這里會很有幫助。首先,我們需要在我們的計(jì)算機(jī)系統(tǒng)上安裝git。要檢查 git 是否已安裝,您可以打開一個(gè)新的終端或 powershell 窗口并輸入
git –版本
如果安裝了 git,您將看到帶有版本號的輸出。如果沒有,您必須繼續(xù)使用安裝 git 中的指令來安裝 git。
之后,您可以嘗試命令
git –版本
再次。如果 git 已成功安裝,我們現(xiàn)在可以繼續(xù)分叉和克隆存儲庫。
分叉存儲庫基本上意味著在我們的個(gè)人 github 帳戶上創(chuàng)建存儲庫的副本。此后我們所做的更改將被推送到我們的分叉存儲庫,然后我們可以提交拉取請求。
要克隆存儲庫,我們導(dǎo)航到所需位置并在終端中打開?;蛘呶覀兛梢灾苯邮褂媒K端進(jìn)行導(dǎo)航。
例如,假設(shè)我們的桌面上有一個(gè)名為“projects”的文件夾,我們希望 utreexo 代碼駐留在其中,我們只需導(dǎo)航到桌面,然后打開“projects”文件夾,在其中右鍵單擊并選擇對于 windows 和 ubuntu,“在終端中打開”。或者我們可以直接在終端窗口內(nèi)導(dǎo)航
首先,通過導(dǎo)航確保我們位于系統(tǒng)的根目錄中。
cd~
然后
cd 桌面/項(xiàng)目
在這里,我們需要克隆存儲庫。這里需要稍微考慮一下。當(dāng)您訪問 github 上的 utreexo 主組織時(shí),我們有幾個(gè)存儲庫。其中之一是 utreexo 存儲庫,其中包含實(shí)際的動(dòng)態(tài)累加器實(shí)現(xiàn),然后是 utreexod 存儲庫,它是支持 utreexo 的比特幣全節(jié)點(diǎn)實(shí)現(xiàn)。我們將重點(diǎn)關(guān)注后者,即 utreexo 支持的比特幣全節(jié)點(diǎn)實(shí)現(xiàn)。讓我們繼續(xù) fork 然后克隆存儲庫
要分叉存儲庫,我們轉(zhuǎn)到 utreexod 存儲庫 github 頁面,在最右側(cè),我們將找到“分叉”按鈕。
我們需要單擊此按鈕,然后按照屏幕上的說明進(jìn)行操作。完成后,我們的個(gè)人 github 帳戶將擁有此存儲庫的相同副本。
現(xiàn)在我們可以繼續(xù)從我們的個(gè)人帳戶克隆存儲庫
git 克隆 https://github.com/yourgithubusername/utreexod.git
完成后,我們可以使用文本編輯器打開該文件夾,然后按照 github 存儲庫的描述繼續(xù)安裝所有依賴項(xiàng)。現(xiàn)在我們進(jìn)來了。
從這里開始,我們將需要花一些時(shí)間,了解代碼庫的各個(gè)部分以及每個(gè)部分的職責(zé)。一旦您對代碼庫有了大致的了解,您就可以繼續(xù)檢查存儲庫的“問題”部分,以找到您想要解決的任何問題,或者可能是功能建議。
一旦確定,我們創(chuàng)建一個(gè)新分支并正確命名該分支
git branch feature1 git checkout feature1
登錄后復(fù)制
這里,“feature1”是我們要開發(fā)的功能的名稱。給它一個(gè)更具描述性的名字。
一旦我們完成了我們的功能并覺得它已經(jīng)準(zhǔn)備好了,我們就會提交并推送到 github,然后提出拉取請求。
為了提交,我們首先使用
進(jìn)行更改
git 添加.
然后繼續(xù)提交
git commit -m “提交消息”
提交消息應(yīng)該是所做更改的簡短描述,并且應(yīng)該放在引號內(nèi),如上所述。
如果您使用 vscode,git 擴(kuò)展確實(shí)簡化了所有這些過程。
如果您需要更多關(guān)于如何提交更改并將其推送到 github 的資源,請檢查此資源,以及創(chuàng)建拉取請求,您也可以在此處查看。
發(fā)出拉取請求后,我們等待維護(hù)者的更新,一旦所有內(nèi)容都已排序,并且可能請求了更多更改,拉取請求將被合并,然后……就這樣。您已成功為 utreexo 做出貢獻(xiàn)
像這樣的開源貢獻(xiàn)是主要軟件的驅(qū)動(dòng)源,為開源做出貢獻(xiàn)非常重要,因?yàn)槟鷮?shù)以萬計(jì)的用戶使用的軟件進(jìn)行了更改。這種貢獻(xiàn)帶來了高度的滿足感。從這里開始,建議繼續(xù)與其他社區(qū)成員和維護(hù)者建立關(guān)系,并繼續(xù)定期為軟件做出貢獻(xiàn)。