Bitcoin-Core
對使用 Bitcoin Core 的 SHA256 程式碼感到困惑
我正在查看比特幣核心程式碼以使用其 SHA256 程式碼,但對我應該查看的位置感到困惑。
在 bitcoin/src/crypto/sha256.h 有 CSHA256
在 bitcoin/src/crypto/sha256.cpp 中有名為 sha256_sse4、sha256_shani 的命名空間。
然後是 bitcoin/src/hash.h
解釋和指導將不勝感激。
sha256.h
具有導出的(從外部可見)方法和函式。要計算 SHA256,您應該#include
這樣做。
sha256_sse4.cpp
sha256_sse41.cpp
sha256_avx2.cpp
sha256_shani.cpp
包含 SHA256 轉換函式(在 中使用
SHA256.Write
),每個函式專門針對具有不同指令集的不同處理器。以上是按順序排列的,大部分電腦都支持SSE4,但只有少數支持SHA-NI指令集,這是新處理器計算SHA256最快的方法。
sha256.cpp
包含其他不是瓶頸的方法、檢查支持哪些指令集的函式、測試以及用於較舊和非 x86 電腦的純 C++ 轉換函式。
hash.h
通過 C++ 模板支持多態性。例子:
- 雜湊
std::vector<something> vch
到std::vector<something> vchHash
- 雜湊
std::vector<something> in
到std::vector<something> WitnessV0ScriptHash
- 雜湊
uint8_t * nonce.begin()
,uint8_t * hash.begin()
,unsigned char pubkey[]
,std::vector<unsigned char> vchSig
到std::vector<unsigned char> entry
- 雜湊
op_true
到witness_program