Re: Bitcoin API調査状況

wxSocketServer::Accept(bool wait = true)のドキュメントでこれに気づいた: 「waitがtrueで、受け入れ待ちの接続がない場合、次の着信接続が到着するまで待機する。**警告: これはGUIをブロックする。」

wxWidgetsは病的なまでにシングルスレッドだ。単にシングルスレッドなだけでなく、GUIスレッドでなければならないのだ。wxStandardPathsのようなUI以外のものでもやられた。UIコードであれば問題ない。Windowsが課す制約と同じだからだ。しかしUI無しのサーバーデーモンコードでは、wxの呼び出しは不確実だ。

現在の調査状況:

PHP、Pythonなどからサーバーにアクセスするには、通常のソケットを使う必要がある。localhostにのみバインドすることでローカル専用にできると思う。ループバック経由でしかアクセスできなくなる。受信した接続のIPを確認して127.0.0.1以外を切断するだけでも十分安全だと言われている。両方やった方がいいだろう。

XML-RPCはやや肥大化している。C++用のライブラリは4つあるが、どれも大きくてビルドが難しく、依存関係やライセンスの問題がある。C++やPHPのXML-RPCライブラリはどれもバグが多いと不満を述べる人もいる。

JSON-RPCはよりシンプルでエレガントな標準だ。十分にシンプルなので汎用的なJSONパーサーが使える。

PHP、Python、Javaのいずれにも、JSON-RPCの優れた実装がある。

現在、JSON-RPCに傾いている。

出典:COPA対ライト裁判の証言の一環として、2024年2月にマルッティ・マルミによりGitHubで公開。完全な書簡アーカイブはmmalmi.github.io/satoshi/で閲覧可能。