位元派“零基礎編譯開源的錢包韌體”教程

買賣虛擬貨幣
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


二、獲取 bithd 韌體開原始碼

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




免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;