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