首页 后端开发 Golang 如何开始为 Utreexo 做出贡献

如何开始为 Utreexo 做出贡献

Aug 22, 2024 pm 08:36 PM

您是否遇到过一个令人兴奋的开源项目,您希望为之做出贡献,但您不知道如何开始?或者您可能是一位相对经验丰富的开发人员(或者只是更精通开源的人),希望为令人兴奋的开源项目做出贡献?好吧,我已经回答了您关于“我如何开始为开源做出贡献”的问题。
从技术上讲,我不会一般意义上回答这个问题。本文会更偏向于一个具体的开源项目Utreexo。所以,我想这篇文章的目的是回答“我如何开始为 Utreexo 做出贡献?”这个问题。

那么如果 Utreexo 首先呢?

好吧,如果你在这里,我假设你从某个地方听说过 Utreexo,或者至少你知道它是一个与比特币相关的项目。如果您从未听说过它,那也没关系,我会尝试对其进行更多分解,并提供相关链接,但是,强烈建议您对比特币的工作原理有较高的了解,以便更好地理解这篇文章。

无论如何,为了回答上面的问题,让我们首先介绍一下 Utreexo 想要实现的目标的背景。
我们所知道的比特币网络(或者……还不知道)将所有交易的记录存储在数字分类账中,称为区块链。该分类账包含网络上已进行的所有交易的记录。然而,网络的当前状态不一定包含网络上发生的所有事情的历史,而是由所有未花费交易输出(UTXO 集)的集合组成。该集合包含有关“哪个钱包有什么”的信息。简单来说,UTXO 集基本上只包含比特币钱包账户中有多少比特币的记录。好吧,最后一句话不是很准确,因为我们的比特币钱包通常有多个未花费的交易输出,这些输出组合起来就反映了我们的钱包余额以及可花费的金额。
问题是,随着网络上交易数量的增加,这种比特币状态增长得更快、更大。这带来了一个重大的可扩展性问题,因为更大的规模需要更大的硬件资源,这可能会阻止一些人操作比特币节点以及其他缺点。
这就是 Utreexo 发挥作用的地方。

所以我们再次问,“Utreexo 是什么”? Utreexo 是一种通过提出基于哈希的动态加密累加器并引入仅存储状态的累加器表示的紧凑状态节点来大大减少运行完全验证节点所需的存储的方法。这些节点需要发送者提供额外的包含证明,然后才能验证交易,

使用 Utreexo,网络的当前状态以明显更小的尺寸表示,这意味着资源使用更少,这将鼓励几乎任何人方便地运行节点。您可以从以下资源 ELI5 中阅读有关 Utreexo 的更多信息:Utreexo — 扩展解决方案,或使用 Utreexo 改进比特币网络,或从此处下载 Utreexo 白皮书。

设置您的开发环境
现在我们对 Utreexo 了解更多了,让我们开始设置我们的开发环境。

Utreexo 是用 Go 编写的,因此拥有 Go 编程语言的基本知识和理解将是额外的好处。但是,如果您是 Go 新手,您可以查看这些资源以了解有关该语言的更多信息,并了解该语言的一些基本概念。Effective Go,Learn 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 页面,在最右侧,我们将找到“分叉”按钮。

How to start contributing to Utreexo
我们需要单击此按钮,然后按照屏幕上的说明进行操作。完成后,我们的个人 github 帐户将拥有此存储库的相同副本。
现在我们可以继续从我们的个人帐户克隆存储库

git 克隆 https://github.com/yourgithubusername/utreexod.git

完成后,我们可以使用文本编辑器打开该文件夹,然后按照 GitHub 存储库的描述继续安装所有依赖项。现在我们进来了。

从这里开始,我们将需要花一些时间,了解代码库的各个部分以及每个部分的职责。一旦您对代码库有了大致的了解,您就可以继续检查存储库的“问题”部分,以找到您想要解决的任何问题,或者可能是功能建议。
一旦确定,我们创建一个新分支并正确命名该分支

git branch feature1
git checkout feature1
登录后复制

这里,“feature1”是我们要开发的功能的名称。给它一个更具描述性的名称。
一旦我们完成了我们的功能并觉得它已经准备好了,我们就会提交并推送到 github,然后提出拉取请求。

要提交,我们首先使用

进行更改

git add .

然后继续提交

git commit -m “提交消息”

提交消息应该是所做更改的简短描述,并且应如上所述放在引号内。
如果您使用 vscode,git 扩展确实简化了所有这些过程。

如果您需要更多有关如何提交更改并将其推送到 github 的资源,请查看此资源,以及创建拉取请求,您也可以在此处查看。

发出拉取请求后,我们等待维护者的更新,一旦所有内容都已排序,并且可能请求了更多更改,拉取请求将被合并,然后......就这样。您已成功为 Utreexo 做出贡献

像这样的开源贡献是主要软件的驱动源,为开源做出贡献非常重要,因为您对数以万计的用户使用的软件进行了更改。这种贡献带来了高度的满足感。从这里开始,建议继续与其他社区成员和维护者建立关系,并继续定期为软件做出贡献。

以上是如何开始为 Utreexo 做出贡献的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1673
14
CakePHP 教程
1428
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Golang和C:并发与原始速度 Golang和C:并发与原始速度 Apr 21, 2025 am 12:16 AM

Golang在并发性上优于C ,而C 在原始速度上优于Golang。1)Golang通过goroutine和channel实现高效并发,适合处理大量并发任务。2)C 通过编译器优化和标准库,提供接近硬件的高性能,适合需要极致优化的应用。

开始GO:初学者指南 开始GO:初学者指南 Apr 26, 2025 am 12:21 AM

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang vs.C:性能和速度比较 Golang vs.C:性能和速度比较 Apr 21, 2025 am 12:13 AM

Golang适合快速开发和并发场景,C 适用于需要极致性能和低级控制的场景。1)Golang通过垃圾回收和并发机制提升性能,适合高并发Web服务开发。2)C 通过手动内存管理和编译器优化达到极致性能,适用于嵌入式系统开发。

Golang vs. Python:主要差异和相似之处 Golang vs. Python:主要差异和相似之处 Apr 17, 2025 am 12:15 AM

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。

Golang和C:性能的权衡 Golang和C:性能的权衡 Apr 17, 2025 am 12:18 AM

Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。

表演竞赛:Golang vs.C 表演竞赛:Golang vs.C Apr 16, 2025 am 12:07 AM

Golang和C 在性能竞赛中的表现各有优势:1)Golang适合高并发和快速开发,2)C 提供更高性能和细粒度控制。选择应基于项目需求和团队技术栈。

Golang vs. Python:利弊 Golang vs. Python:利弊 Apr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitsefficiencyandconcurrency,whilePythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.Golang'sdesignencouragesclean,readablecodeanditsgoroutinesenableefficientconcurrentoperations,t

See all articles