Bitpie
Published in

Bitpie

比特派“零基础编译开源的钱包固件”教程

​3月24日,由比特派&BitHD推出的“零基础编译开源的钱包固件”直播课程圆满结束,让小白用户亲身体验到了编译与验证开源的硬件钱包固件的整个过程。此次在线直播教程由BitHD品牌负责人果子主导,以下为本次直播的图文教程。

*本教程基于 mac 系统运行,windows 系统用户可下载 linux 系统完成操作流程。

*在编译过程中,请不要随意关闭终端程序。

1,了解“终端”

本教程所有代码命令需在终端下执行,可在程序槽中直接打开,或搜索“终端”、“terminal”。

2,编译环境安装

2.a.安装 Docker 环境

https://docs.docker.com/install/

2.b.在终端中输入以下命令点击回车,安装 homebrew

ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.c.在终端输入以下命令,通过 homebrew 安装 python3 和 pipenv

brew install python3 pipenv

1,在桌面新建文件夹,并命名为 “BITHD”

2,打开终端,输入以下命令,进入文件夹目录

cd ./Desktop/BITHD/

3,在终端继续输入以下命令,在 GitHub 上获取开源代码

git clone https://github.com/bithd/bithd-mcu.git

4,获取成功后,BITHD 文件内会生成 BITHD-mcu 文件夹

该文件夹即是 GitHub 上开源的 BITHD 固件代码,之后的编译操作会在该文件目录下执行。

*该步骤对电脑性能要求较高,部分步骤会耗时较久,在终端未完成操作前,请不要关闭终端,耐心等待终端完成编译。

1,在终端输入以下命令,进入固件代码根目录

cd bithd-mcu

2,在终端输入以下命令,编译对应版本号固件

*该步骤耗时较久,请耐心等待编译完成

export TAG=v2.7.4; ./build-firmware.sh $TAG

编译完成后,在 BITHD/BITHD-mcu/build 文件夹内,会生成编译好的固件文件,此时已经完成了对 GitHub 开源代码的编译步骤。

1,在终端输入以下命令,安装指定的 python 环境

pipenv — python 3 install

2,在终端输入以下命令,生成准备签名的 bin 文件

pipenv run ./script/prepare_firmware.py -f ./build/bithd-$TAG-unsigned.bin

该步骤会在 BITHD/BITHD-mcu/build 文件夹内,生成注入空签名信息的文件bithd-v2.7.4-prepared.bin

3,在终端输入以下命令,使用 BITHD 官方提供的签名文件对该文件进行签名

*签名所需的签名文件保存在 BITHD/BITHD-mcu/signatures 文件夹内

export TAG=v2.7.4

pipenv run ./script/build_signed_firmware.py -f ./build/bithd-$TAG-prepared.bin -s . signatures/$TAG.csv

签名完成后,会在 BITHD/BITHD-mcu/build 文件夹内,生成 bithd-v2.7.4-signed 文件。该文件即是我们在 GitHub 上获取到的源码通过编译生成,并且使用 BITHD 官方提供的签名文件进行签名的固件文件。

至此,我们已经完成了从 GitHub 上获取源码,到编译源码生成固件包,并对固件包进行签名的步骤。接下来我们将进行固件包的验证步骤。

四、验证固件

1,链接 BITHD,在 Bitpie 中导出最新的固件更新包。该导出操作只会导出固件文件,跟资产信息没有任何关系。

2,通过对比文件,验证设备中的固件与 GitHub 开源固件代码是否一致

在终端输入以下命令,输出对比结果

export TAG=v2.7.4

diff <(xxd build/bithd-$TAG-prepared.bin) <(xxd build/bithd-$TAG-firmware.bin)

*注意:请将导出的固件文件放到 BITHD/BITHD-mcu/build 文件夹内,并修改导出的固件名称与命令中示例名称相同。例如:从安卓设备中导出的固件名称为 bithd-wallet-firmware,我们需要将其重命名为 bithd-v2.7.4-firmware ,放入 build 文件夹内,否则命令执行将会出现错误。

从对比结果中我们可以看到,我们自己编译并且注入空签名数据的固件和我们从设备中导出的固件,只有前256位签名信息的不同,除了签名信息以外所有的代码都完全相同。也证明了我们在设备中使用的固件代码与 GitHub 上开源的固件代码是完全相同的。

3,通过计算哈希值,验证设备中的固件与 GitHub 开源固件代码是否一致

3.a 在终端输入以下命令,计算我们在设备中导出的固件哈希值

shasum -a 256 ./build/bithd-$TAG-firmware.bin

3.b 对比 GitHub 上提供的固件代码哈希

GitHud 地址:

https://github.com/bithd/bithd-mcu/releases

可以发现我们从设备中导出的固件代码哈希与 GitHub 上提供的固件哈希是完全相同的,也就是说,他们的代码也完全一致,没有任何一个包括空格在内的差异。

* Window虚拟机安装教程:(附下载链接):

https://zhuanlan.zhihu.com/p/38797088

Find us on:

👉Twitter ; 👉Facebook; 👉Telegram Channel

--

--

Hi Blockchain! Buy, Store & Use multi-chain cryptos with ease & safety! Join us: (link: http://t.me/BitpieInternational) t.me/Bitpienews

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Bitpie Wallet

Manage and trade multichain assets & utilize Dapps with ease and safety. bitpie.com