旅行しながら働く ムラサメ研究所社長ブログ

主にゲームやプログラミングのログ

聖書(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

ベンチマーク関連。特に今のところ不要