【关于《BCH源码学习笔记》】

作者按:BCH是BTC的硬分叉币,代码来源于BTC,但是结合BCH的发展目标,很多细节的地方做了调整,比如说BCH的钱包地址编码,挖矿的POW难度调整算法,以及对隔离见证等新特性的支持等等,这些的调整,又让BCH有很多独特的地方。

这是一个系列文章,主要讲述我在学习BCH源码过程中的一些笔记以及心得,希望学习BCH的其他后来者,能够得到一定的借鉴意义。【点击查看《BCH源码学习笔记》完整目录】

第一步:搭建BCH的源码学习环境

一、BCH源码的下载和环境安装

BCH源码是使用C++来实现的,并且托管在GitHub上,大家可以先下载下来,然后按照BCH的文档要求,将环境搭建起来,然后在进行查看,开发和代码贡献。

1.BCH源码的下载

下面是BCH源码的GitHub的托管地址:

https://github.com/Bitcoin-ABC/bitcoin-abc

大家可以通过Git的命令Clone一份到本地,或者直接下载Zip压缩包。

下载完毕之后,大家可以看到这样一个目录:

目录说明:

src是存放源代码的目录;

test是存放单元测试的目录;

doc是存放相关文档的目录。

我们先打开doc这个目录。

在这里面,主要介绍了我们的环境搭建,以及相关的第三方函数库和持续集成环境搭建等文档。我们可以根据自己所处的环境,查阅不同的文档,因为,我是mac环境,所以,我主要查看Build-osx.md这个文件。

2.环境安装(MacOS)

BCH源代码编译环境安装之前,首先要做一些准备工作。

准备工作:

首先要安装Mac上的编码工具Xcode

然后安装OS X的命令行工具:xcode-select –install

然后安装Mac的包管理工具HomeBrew(http://brew.sh)

备注:

Xcode最好安装最新版本,Mac的系统也至少升级到mac OS High Sierra.

HomeBrew和centos上的yum,ubuntu上的apt-get是类似的工具。

准备工作做完之后,我们安装编译环境必须要的库,可以通过如下命令安装:

brew install automake berkeley-db libtool boost –c++11 miniupnpc openssl pkg-config protobuf –c++11 qt5 libevent librsvg

然后进入漫长的等待,等安装完毕之后,就可以进行源码的编译的工作了。

首先进入源代码的存放目录,然后依次使用下列命令

./autogen.sh

./configure

make

make install

以上命令执行完毕,就可以启动客户端了bitcoind了,并且可以用bitcoin-cli来进行RPC的调用了。

二、源码分析工具介绍Sublime Text 3

所谓工欲善其事必先利其器,所以,我们选择一门好的源代码查看工具,能够让我们查看代码的效率提升好几倍。

我选择的工具是Sublime Text 3,这是一个非常著名的文本编辑工具,它具有代码高亮、语法提示、自动完成且反应快速,不仅界面美观,还支持插件扩展机制,明智的程序员都用它。

1.Sublime Text 3的安装

Sublime Text 3 的下载地址:

https://www.sublimetext.com/3

大家可以通过上面的Sublime Text 3的下载地址,根据自己的机器的环境,选择不同安装包,进行安装。

说明:大家安装完毕之后,在使用的时候,会经常得到需要注册的提示,你可以点击取消即可继续进行使用,对工具的使用没有任何影响,但是如果你是土豪,可以对官方支持一下,毕竟没有了供养,这样的优秀的编辑工具也不能存活。

2.Sublime Text 3 的插件安装步骤,以及相关插件推荐

Sublime Text 3 之所以强大,是因为它拥有众多的插件,这些插件可以让你的效率提升,那么我们就来说说Sublime Text 3的插件的安装和使用。

2.1 插件安装

插件安装有2种方式。一种是手动安装,一种是通过Package Control来安装

手动安装的方法是:

直接下载插件安装包解压缩到Packages目录(菜单->preferences->packages)。

Package Control安装方法是:

首先按Ctrl+`调出console,然后输入以下命令:

import urllib.request,os; pf = ‘Package Control.sublime-package’; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), ‘wb’).write(urllib.request.urlopen( ‘http://sublime.wbond.net/’ + pf.replace(‘ ‘,’%20′)).read())

然后重新启动Sublime Text,就可以安装成功了。

判断是否安装成功:

在Perferences->package settings中看到package control这一项,则安装成功。

安装成功后,可以通过按下Ctrl+Shift+P调出命令面板输入install 调出 Install Package 选项并回车,然后在列表中选中要安装的插件,即可安装。

2.2 插件推荐 – 针对BCH源码分析

MarkDown Editing

将SublimeText扩展为能够查看和编辑 Markdown 文件的编辑器,并且通过适当的颜色高亮和其它功能来更好地完成编辑工作。

SideBarEnhancements插件

SideBarEnhancements是一款很实用的右键菜单增强插件;在安装该插件前,在Sublime Text左侧FOLDERS栏中点击右键,只有寥寥几个简单的功能;安装了功能就非常丰富了。

3.Sublime Text 3 使用技巧-针对BCH源码阅读

快速定位函数

在函数上,点击右键,可以看到一个Goto Definition功能,点击之后,就可以快速的到达相应的函数实现部分

函数查询

通过按下Ctrl + Shift + R,然后直接输入函数,就可以快速查询函数所在位置

文件查找

在左侧的根目录上,点击右键,然后找到Find& Replace功能,就可以快速查找文件和相关信息

以上就是我们在BCH源码阅读过程中所使用的工具和相关功能技巧,希望大家掌握。

下一期将和大家分享《BCH源码学习笔记》的《第二步:学习一些阅读源码的基础知识》,跟大家谈一谈C++库的学习(Boost,Signals2, Bind, Thread, Chrono, Test, Program Options,libevent)。欢迎关注!

附《笔记》完整目录,点击查看:【《BCH源码学习笔记》完整目录】

声明:本文系专栏作者“小明在链圈”独家投稿,首发资讯,未经作者授权,严禁转载。

bch verilog代码_BCH源码学习笔记 | 第一步:搭建BCH的源码学习环境相关推荐

  1. Unity-ShaderGraph学习笔记第一步: 如何打开ShaderGraph 制作全息效果Shader

    *本次使用 Unity版本是2018.4.13* *素材用自己的代替就行了* *新手入门,如有错误,感谢授教.* 一.准备工作 使用shader graphs 需要两个包 (Windows - Pac ...

  2. [2014年学习计划之RoR系列] 第一步 - 搭建开发环境

    千里之行始于足下.昨天下午开始我迈出了RoR学习的第一步 - 搭建Ruby on Rails环境. 我现在的主要开发环境是ASP.NET,所以想在Windows上搭建RoR的开发环境.在网上浏览一番, ...

  3. glibc-2.23学习笔记(二)—— free部分源码分析

    glibc-2.23学习笔记(二)-- free部分源码分析 _libc_free _int_free 函数定义 局部变量 start fast bins部分 unsorted bins部分 mmap ...

  4. glibc-2.23学习笔记(一)—— malloc部分源码分析

    glibc-2.23学习笔记(一)-- malloc部分源码分析 搭建Glibc源码调试环境 1.下载并解压glibc源码 2.配置gdb 3.编译测试程序 第一次调用 源码分析 __libc_mal ...

  5. 学习笔记1:更改python下载源

    学习笔记1:更改python下载源,让安装速度更快! 1.常用的国内镜像源 清华镜像源 https://pypi.tuna.tsinghua.edu.cn/simple 中科大镜像源 https:// ...

  6. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  7. React Native学习笔记一之搭建开发环境

    因为项目需要,今天开始正式学习React Native,先来搭建个开发环境 忐忑的心情 因为项目比较急,而且客户要求使用React Native开发,只能先学点基础然后在项目中使用的时候,边做边学了, ...

  8. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

    Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...

  9. 学习笔记1:搭建floodlight+mininet+sflow环境

    学习笔记1:搭建floodlight+mininet+sflow环境 浏览了大量的CSDN博客和师兄继承下来的学习笔记,自己想总结一下搭环境的过程,为以后给自己查看时候好整理 全部都在VM虚拟机中ub ...

  10. PCL学习笔记(二):PCL官方教程学习

    PCL学习笔记(二):PCL官方教程学习 PCD文件制作 Features 表面法线提取 Keypoints 提取NARF关键点 KdTree Range Image How to create a ...

最新文章

  1. faster rcnn结构
  2. ArcIMS 开发学习笔记(一)
  3. 实录 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新
  4. Css中图片局部放大,将图片中局部放大效果
  5. java 无名类做参数_说说你知道的几种主要的JVM参数
  6. 【POJ - 1456】Supermarket (贪心,优先队列 或并查集)
  7. 【BZOJ2221】面试的考验,随机数列+线段树+离线
  8. 同步代码时忽略maven项目 target目录
  9. C# 泛型2---排序
  10. sxos中文官网_Canva中文官网下载-Canva中文版下载安装v2.83.0
  11. 机器学习笔记之概率图模型(五)马尔可夫随机场的结构表示
  12. 2009年考研数学一解析pdf
  13. 常用DOS命令参数的中文详解3
  14. 《四维全息算法》第六讲--随机、布朗运动、随机游走、混沌、分形混沌与时序拟合分析之间的关系
  15. 关于node.js,dataStr的undefined的问题
  16. 公链、私链、联盟链、侧链简介
  17. 用计算机做电子贺卡送祝福,春节祝福电子贺卡模板制作
  18. 推荐万维钢《万万没想到-用理工科思维理解世界》
  19. 输入一个四位数将其加密后输出c语言,从键盘输入一个四位数-按如下规则加密后输出...
  20. python中的类怎样理解_深入理解Python中的元类(metaclass)

热门文章

  1. JAVA实现Excel照相机功能_用Excel照相机功能在Excel中显示和调用图片的方法
  2. 你努力的样子很“可耻”
  3. laravel 房源
  4. 微信支付之Native扫码支付功能
  5. 【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
  6. Oracle以甲乙丙丁来排列
  7. 高通apq8096连接外网
  8. Python个人总结(基础+进阶)
  9. 5分钟latex 使用入门写llncs论文
  10. linux用gzip文件,Linux中的Gzip命令