Bitcoin-Core

比特幣核心會在大端系統上工作嗎?甚至是 C++ 的 int 不是 32 位的系統?

  • December 14, 2018

查看比特幣核心的原始碼,序列化部分,我發現沒有序列化抽象層來解釋不同機器上可能的不同字節序或不同二進制佈局。

這不僅適用於磁碟序列化,也適用於網路序列化。如果在大端機器或int大小不等於 32 位的機器上使用比特幣核心,它將無法連接到網路,因為所有大小都會被錯誤地解釋並且值會不同。

我錯過了什麼還是我得出了正確的結論?

ser_writedata8與 , ,相比ser_writedata16,不關心字節順序。單個字節不需要交換,因為8 位有一個地址,如果不使用 BMI 或算術運算,就無法訪問特定位。因此,除了位域之外,位字節序並不重要。ser_writedata32``ser_writedata64

它應該適用於大端系統。整數的序列化程式碼將在此類系統上進行字節交換。這肯定在某個時候經過了測試,但我不確定有人最近有多長時間。

我認為它不適用於 int 不同於 32 位的系統。

引用自:https://bitcoin.stackexchange.com/questions/81903