您是否遇到过一个令人兴奋的开源项目,您很想为它做出贡献,但您不知道如何开始?或者您可能是一位相对经验丰富的开发人员(或者只是更精通开源的人),希望为令人兴奋的开源项目做出贡献?好吧,我已经回答了您关于“我如何开始为开源做出贡献”的问题。
从技术上讲,我不会一般意义上回答这个问题。本文会更偏向于一个具体的开源项目utreexo。所以,我想这篇文章的目的是回答“我如何开始为 utreexo 做出贡献?”这个问题。
那么如果 utreexo 首先呢?
好吧,如果你在这里,我假设你从某个地方听说过 utreexo,或者至少你知道它是一个与比特币相关的项目。如果您从未听说过,那也没关系,我会尝试对其进行更多分解,并提供相关链接,但是,强烈建议您对比特币的工作原理有较高的了解,以便更好地理解这篇文章.
无论如何,为了回答上面的问题,让我们先介绍一下 utreexo 想要实现的目标的背景。
我们所知道的比特币网络(或者……还不知道)将所有交易的记录存储在数字分类账中,称为区块链。该分类账包含网络上已进行的所有交易的记录。然而,网络的当前状态不一定包含网络上发生的所有事情的历史,而是由所有未花费交易输出(utxo 集)的集合组成。该集合包含有关“哪个钱包有什么”的信息。简单来说,utxo 集基本上只包含比特币钱包账户中有多少比特币的记录。嗯,最后一句话不是很准确,因为我们的比特币钱包通常有多个未花费的交易输出,这些输出组合起来就反映了我们的钱包余额以及可花费的金额。
问题是,随着网络上交易数量的增加,这种比特币状态增长得更快、更大。这带来了一个重大的可扩展性问题,因为更大的规模需要更大的硬件资源,这可能会阻止一些人操作比特币节点以及其他缺点。
这就是 utreexo 发挥作用的地方。
所以我们再次问,“utreexo 是什么”? utreexo 是一种通过提出基于哈希的动态加密累加器并引入仅存储状态的累加器表示的紧凑状态节点来大大减少运行完全验证节点所需的存储的方法。这些节点需要发送者提供额外的包含证明,然后才能验证交易,
使用 utreexo,网络的当前状态以更小的尺寸表示,这意味着更少的资源使用,这将鼓励几乎任何人方便地运行节点。您可以从以下资源 eli5 中阅读有关 utreexo 的更多信息:utreexo — 扩展解决方案,或使用 utreexo 改进比特币网络,或从此处下载 utreexo 白皮书。
设置您的开发环境
现在我们对 utreexo 了解更多了,让我们开始设置我们的开发环境。
utreexo 是用 go 编写的,因此拥有 go 编程语言的基本知识和理解将是额外的好处。但是,如果您是 go 新手,您可以查看这些资源以了解有关该语言的更多信息,并了解该语言的一些基本概念有效 go,学习 go。
我在这篇文章中使用 visual studio 代码,但请随意使用您选择的任何文本编辑器。
首先,我们需要安装 go 编程语言。这里不介绍安装步骤,但是你可以查看这篇文章,详细介绍了如何安装和运行go程序。下载并安装 go。一旦你完成安装 go,按照文章并通过检查
go版本
点击下载“修复网络工具,一键解决电脑无法上网”;
我们可以继续克隆代码库。掌握 git 的基本知识在这里会很有帮助。首先,我们需要在我们的计算机系统上安装git。要检查 git 是否已安装,您可以打开一个新的终端或 powershell 窗口并输入
git –版本
如果安装了 git,您将看到带有版本号的输出。如果没有,您必须继续使用安装 git 中的指令来安装 git。
之后,您可以尝试命令
git –版本
再次。如果 git 已成功安装,我们现在可以继续分叉和克隆存储库。
分叉存储库基本上意味着在我们的个人 github 帐户上创建存储库的副本。此后我们所做的更改将被推送到我们的分叉存储库,然后我们可以提交拉取请求。
要克隆存储库,我们导航到所需位置并在终端中打开。或者我们可以直接使用终端进行导航。
例如,假设我们的桌面上有一个名为“projects”的文件夹,我们希望 utreexo 代码驻留在其中,我们只需导航到桌面,然后打开“projects”文件夹,在其中右键单击并选择对于 windows 和 ubuntu,“在终端中打开”。或者我们可以直接在终端窗口内导航
首先,通过导航确保我们位于系统的根目录中。
cd~
然后
cd 桌面/项目
在这里,我们需要克隆存储库。这里需要稍微考虑一下。当您访问 github 上的 utreexo 主组织时,我们有几个存储库。其中之一是 utreexo 存储库,其中包含实际的动态累加器实现,然后是 utreexod 存储库,它是支持 utreexo 的比特币全节点实现。我们将重点关注后者,即 utreexo 支持的比特币全节点实现。让我们继续 fork 然后克隆存储库
要分叉存储库,我们转到 utreexod 存储库 github 页面,在最右侧,我们将找到“分叉”按钮。
我们需要单击此按钮,然后按照屏幕上的说明进行操作。完成后,我们的个人 github 帐户将拥有此存储库的相同副本。
现在我们可以继续从我们的个人帐户克隆存储库
git 克隆 https://github.com/yourgithubusername/utreexod.git
完成后,我们可以使用文本编辑器打开该文件夹,然后按照 github 存储库的描述继续安装所有依赖项。现在我们进来了。
从这里开始,我们将需要花一些时间,了解代码库的各个部分以及每个部分的职责。一旦您对代码库有了大致的了解,您就可以继续检查存储库的“问题”部分,以找到您想要解决的任何问题,或者可能是功能建议。
一旦确定,我们创建一个新分支并正确命名该分支
git branch feature1
git checkout feature1
这里,“feature1”是我们要开发的功能的名称。给它一个更具描述性的名字。
一旦我们完成了我们的功能并觉得它已经准备好了,我们就会提交并推送到 github,然后提出拉取请求。
为了提交,我们首先使用
进行更改git 添加.
然后继续提交
git commit -m “提交消息”
提交消息应该是所做更改的简短描述,并且应该放在引号内,如上所述。
如果您使用 vscode,git 扩展确实简化了所有这些过程。
如果您需要更多关于如何提交更改并将其推送到 github 的资源,请检查此资源,以及创建拉取请求,您也可以在此处查看。
发出拉取请求后,我们等待维护者的更新,一旦所有内容都已排序,并且可能请求了更多更改,拉取请求将被合并,然后......就这样。您已成功为 utreexo 做出贡献
像这样的开源贡献是主要软件的驱动源,为开源做出贡献非常重要,因为您对数以万计的用户使用的软件进行了更改。这种贡献带来了高度的满足感。从这里开始,建议继续与其他社区成员和维护者建立关系,并继续定期为软件做出贡献。