聖書(bitcoind)のソースを読み解く part1 ~ 全体像とドキュメント編
自分へのメモですが・・ 私の解読のしかたは下手でおおざっぱです そして順番にこまかくよまず 大雑把にを繰り返します
はじめに
Bitcoinは仮想通貨の最初の実装で、SatoshiNakamotoの論文をもとに実装したものである
初期にはSatoshiNakamotoのコードがあり、事実上 仮想通貨の聖書である
GitHub - bitcoin/bitcoin: Bitcoin Core integration/staging tree
コードはC++で書かれている
bitcoinサーバ’(core)以外に、walletやQtクライアントもある
ライセンスはMIT
ドキュメント
まず 英語でよくわからないけどドキュメントを軽く
https://github.com/bitcoin/bitcoin/tree/master/doc
セットアップ方法(スルー
ビルド方法(スルー
Development
Developer Notes
コーディングスタイルや、推奨されるコードのかきかた
デバッグログの出力やtestnet(本番ではなくテスト用のネットワーク)のつかいかた
Valgrind、テスト、Sanitizersの走らせ方
データのMutexやスレッドに関して、テスト方法
ネームスペースやソースファイルの取り決め
LebelDBのUpdateは特に気を付ける事。最大ファイル数(現時点1000)が多くなると FileDescriptionが1024を超えるソケットが出来て問題らしい
コンセンサスの互換性において過去に問題が発生したらしい
RPCインタフェースのガイドライン
など、この項目はコードの書き方についてのべられている
Release Notes
アップグレードのしかた、ダウングレードの仕方など
Release Process
リリースのしかた。コントリビュートしなければ不要であろう
Source Code Documentation (External Link)
外部リンクがひらき、Classの説明など。Doxygenかなー
解析に役立ちそう
Translation Process
翻訳をしてくれるボランティアにむけて
Translation Strings Policy
上記と同じく、翻訳ボランティアへのPolicy
Travis CI
CIについて
Unauthenticated REST Interface
認証を必要としないREST インタフェースについて
Shared Libraries
今のところ コンセンサスアルゴリズムしかない?
上記SharedLibrariesの使い方、他言語Bindingsなど
BIPS
Bitcoinの大きな仕様変更リスト
Dnsseed Policy
ビットコインのDnsseed(初期サーバIPリスト)に関して
とりあえず 今は必要ない
Benchmarking
ベンチマーク関連。特に今のところ不要