主页 > imtoken安卓版 > 探索比特币源代码0-bitcoin的编译
探索比特币源代码0-bitcoin的编译
1LSGO软件技术团队
供稿人:马延鹏
如果你喜欢这里的内容,能给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起学习。
如果你喜欢这里的内容,能给我最大的帮助就是转发,所以告诉你的朋友,鼓励他们一起学习。
前言
区块链领域作为新兴热点,迭代速度太快。 如果您刚刚起步,则必须抓紧时间赶上。
在阅读了一些优秀的文档后,我已经对比特币及其背后的实现技术——区块链有了一定的了解。
为了更深入地了解比特币的各种细节及其实现技术计算机安装比特币客户端的条件,开始学习比特币的源代码。
本人在学习源码过程中遇到的优秀资源推荐如下,后续会持续更新。
比特币开发者手册
掌握比特币
比特币实际上是一种协议,这种基于信任的协议的第一个版本被称为“比特币”或“Satoshi Client”。 现在它已经有了很大的改进,演变成所谓的比特币核心——Bitcoin Core,以区别于其他兼容的实现。
Bitcoin Core 是比特币系统的参考实现,这意味着它是有关其实现方式的权威参考。 Bitcoin Core 实现了比特币的方方面面,包括钱包、交易和区块验证引擎,以及 P2P 网络中的全网络节点。
那么让我们从Bitcoin Core入手,学习源码,全面了解比特币。
下载比特币源代码
我们使用命令创建源代码的本地副本
克隆操作完成后,进入项目
选择比特币核心版本
在编译代码之前,我们需要切换到一个稳定的发布版本。
首先,要查找可用版本的标签,我们使用以下命令:
按照惯例,用于测试的候选版本具有后缀“rc”
所以我们选择一个没有后缀的版本来查看,选择最新的就可以了
通过键入命令确认所需的版本
完成后可以简单观察一下比特币项目的结构
配置和构建比特币核心
现在尝试构建一个命令行比特币客户端,也称为比特币(bitcoind)。
我在 Linux 下执行此操作,您可以在 上查看编译 bitcoind 命令行客户端的说明。
可以在其他系统的 doc 目录中找到替代说明,例如分别适用于 macOS 和 Windows 的说明或 。
Bitcoin Core 的构建过程从 0.9 版更改为使用该系统。 也就是说,构建过程如下:
一步一步,该文件是一个shell脚本,我们可以通过使用该脚本生成一组构建脚本来启动构建过程。
我们尝试运行脚本
得到的结果如下:
配置错误,我们需要预安装
正如官方文档中所述,好吧,它会要求系统发现正确的设置并确保您拥有编译代码所需的所有库。
换句话说,它会智能检查你缺少什么依赖和包。根据提示,安装各种依赖,走一波
再次运行脚本,成功~
我还不知道shell,但是有点好奇这个脚本是干什么的,所以调用如下命令查询当前目录下的文件和最后修改时间,并按时间排序:
仔细对比可以看出,脚本并没有在当前目录下生成新的文件,而是修改了以下文件:
这些都是关于配置的,其中最重要的是脚本,它提供了许多不同的选项来定制构建过程。
键入以查看各种选项:
有点乱,但是不得不说,功能真的很强大!
该脚本允许您使用 和 标志启用或禁用 bitcoind 的某些功能,其中 FEATURE 被功能名称替换,如帮助输出中所列。
我还没有想出这些功能,在这里我们构建具有所有默认功能的 bitcoind 客户端。 我们不会使用配置标志。
调用脚本报这样的错误
报错是我没有安装钱包的依赖库
我这才想起来,错的原因一定是自己偷懒,没看完计算机安装比特币客户端的条件,重要的事情说了三遍
仔细阅读文档,并安装所有依赖项!
仔细阅读文档,并安装所有依赖项!
仔细阅读文档,并安装所有依赖项!
仔细安装好所有依赖后,重新运行脚本,成功~
构建比特币核心可执行文件
下一步是编译源代码。 此过程根据 CPU 和内存资源而有所不同,但一般可能需要 1 小时才能完成。 输入命令开始编译:
如果一切顺利,bitcoind 现已编译完成。
最后一步是通过命令将可执行文件安装到你的系统路径下,可能会提示你输入用户密码,因为这一步需要管理员权限:
默认安装位置是 . 您可以通过向系统询问以下2个可执行文件的路径来确认是否安装成功。
从目前来看,我觉得区块链领域对编程爱好者来说是最友好的,因为这个领域的所有代码都是开源的,代码决定一切! 就算项目方吹嘘炒作,也骗不了我们,只有代码才是最靠谱的! 为了更好地了解区块链领域,LSGO软件技术团队的一组正在查看BTC的源代码。 这是他们提交的学习成果! 如果您对区块链领域感兴趣,可以加入进来一起学习!
经过8年多的发展,LSGO软件技术团队在地理信息系统、数据统计分析、计算机视觉等领域积累了丰富的研发经验,也建立了完善的人才培养体系。
欢迎对算法设计与实现感兴趣的同学加入,与我们一起成长进步。
本微信公众平台长期系统地提供机器学习、软件开发、教育学习方法、数学建模等方面的知识,并将上述知识转化为实践。 拒绝知识碎片化,耐心打磨技能,解决实际问题是我们的宗旨和追求。