ビットコイン・インスティテュート

Re: Linuxビルドの​テスト準備完了

ありがとう、何が起こったか分かった。最初のノードが遅かったため、他の全員にもブロックを要求してしまい、全体が詰まっただけだ。これは修正できる。正しいやり方を少し考える必要がある。

未確認の状態でシャットダウンしてもリスクはない。トランザクションや新しいブロックを作成すると、すぐにネットワークにブロードキャストされる。その後の確認数/#の増加は結果を監視しているだけだ。その間にあなたのノードが承認を促進するために何かをすることはない。

考えてみれば、ビットコインを閉じると、メインウィンドウはすぐに閉じるが、バックグラウンドでデータベースの秩序あるフラッシュとシャットダウンを完了するために実行を続ける。それを実装する前は、応答しない固まったウィンドウがずっと残っているのが煩わしかったのだ。バックグラウンドでの秩序あるシャットダウンが完了するまでポートはロックされるが、これは別のコピーが完了するまでデータベースに触れないようにするための重要な保護だ。シャットダウンに数秒以上かかったことはない。

Wineでは、Windows版がSO_REUSEADDRを実行する方法がないので、ポートが閉じた後に60秒(私のシステムでは)のTIME_WAITが追加される。

2つのコピー間で転送する必要がある場合は、もう一方のビットコインアドレスに送ることができる。受信側のコピーはその時点でオンラインである必要はない。

異なるデータディレクトリを使用するためのコマンドラインは:
bitcoin -datadir=<directory>

例えば、Linuxでのデフォルトディレクトリは(~は使わないでくれ):bitcoin -datadir=/home/yourusername/.bitcoin

通常このスイッチを使う必要はないはずだ。それでも2つのインスタンスを同時に実行することはできない。

NewLibertyStandardのメール(2009年11月9日00:30 UTC)
サトシ・ナカモトのメール(2009年11月9日01:23 UTC)

開始までどのくらいかかった? たまたま要求したノードが遅いだけかもしれない。遅い開始はダウンロード速度が遅いことと整合する。

現在のdebug.logファイルを見て、何が起こっているか理解したい。相手側の接続が本当に遅いだけかもしれないし、何かがおかしくて失敗してリトライしているのかもしれない。時間がかかりすぎると他のユーザーを混乱させる可能性がある。

マルッティ、あなたが実行した時、ブロックのダウンロードが始まるまでどのくらいかかった? そしてどのくらいの速度でダウンロードした?

既にSO_REUSEADDRを使用しているので、閉じた後のTIME_WAIT状態でもポートをバインドできる。 バインドに失敗するのはプログラムが本当にまだ実行中の場合だけのはずだ。 ビットコインの2つのコピーを同じマシンで同時に実行しないことが重要だ。 同時にデータベースを変更することになるためだ。1台のマシンで2つ実行する必要はない。 コイン生成は今では自動的に複数のプロセッサーを使用する。

これらのlibエラーが何なのかよく分からない。調べてみる。

NewLibertyStandard

よし、ブロックが増え始めた。Windows版より明らかに増え始めるまでに時間がかかるし、増え方もWindows版より遅いように思える。 送ってもらったLinuxビルドは、デバッグが有効になっていたりしないかな? ブロックは1秒あたり約15個ずつ増えている ( 時計を見ながらの目視推定 )。Windows版での増加速度は計っていなかったが、もっと速かった気がする。

増加が速くなり始めるまでに30分くらいかかった。 興味深いことに、安定して増加し始める前にCPU使用率が上がり、安定して増加し始めると下がった。 とはいえ今回はブロックが最初の数分で2まで増えた。 まだビットコインは生成できていない。 我慢が続く限りビットコイン生成を待つつもりだが、我慢が切れるまでに1枚も生成できなかったら、Wine版に戻る。

現在のdebug.logを添付した。

ビットコインを起動した時、ビットコインのポートが使えないと、コマンドラインに以下のメッセージが出る。 ポートが使えるときは、このメッセージは出ない。 既定ポートが塞がっているときは、ビットコインが別のポートを選べるようにできないかな?BitTorrentクライアントでも同じことがときどきある。 再起動すると、直前まで開いていたポートが閉じている。 ポートを変更するだけで動くようになる。

/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64 Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so /usr/lib/gio/modules/libgioremote-volume-monitor.so: wrong ELF class: ELFCLASS64 Failed to load module: /usr/lib/gio/modules/libgioremote-volume-monitor.so /usr/lib/gio/modules/libgiogconf.so: wrong ELF class: ELFCLASS64 Failed to load module: /usr/lib/gio/modules/libgiogconf.so

ビットコインを同時に二つ動かす理由は、ビットコインを別のインスタンスに移すためだ。 もちろん、別々のデータディレクトリを使う必要がある。 これはコマンドライン引数で指定できるといいかもしれない。 いまは仮想マシンにビットコインのデータフォルダを移して対応している。 ビットコインを終了して別のデータディレクトリで起動し直すのは、未確定のビットコインがある状態で終了するとそれを失う恐れがあるので、よい解ではない。

ポート使用中エラーが出たとき、ビットコインは確実に動いていなかった。 私の経験ではビットコインは素早く確実に終了するが、ポートが再び使えるようになるまで30秒から3分 ( 記憶からの推定 ) かかる。Wine上のbitcoin 0.1.5からLinuxビルドに切り替えた時、またLinuxビルドからWine上のbitcoin 0.1.5に切り替えた時に起きた。

もう一つ気付いた点として、aboutダイアログのテキストが収まりきっておらず、ダイアログのサイズも変更できない。

原典の外部ソース

https://mmalmi.github.io/satoshi/
2024年2月、COPA対ライト裁判の証言の一環としてGitHubで公開

他の外部ソース