ありがとう、何が起こったか分かった。最初のノードが遅かったため、他の全員にもブロックを要求してしまい、全体が詰まっただけだ。これは修正できる。正しいやり方を少し考える必要がある。
未確認の状態でシャットダウンしてもリスクはない。トランザクションや新しいブロックを作成すると、すぐにネットワークにブロードキャストされる。その後の確認数/#の増加は結果を監視しているだけだ。その間にあなたのノードが承認を促進するために何かをすることはない。
考えてみれば、ビットコインを閉じると、メインウィンドウはすぐに閉じるが、バックグラウンドでデータベースの秩序あるフラッシュとシャットダウンを完了するために実行を続ける。それを実装する前は、応答しない固まったウィンドウがずっと残っているのが煩わしかったのだ。バックグラウンドでの秩序あるシャットダウンが完了するまでポートはロックされるが、これは別のコピーが完了するまでデータベースに触れないようにするための重要な保護だ。シャットダウンに数秒以上かかったことはない。
Wine では、Windows 版が SO_REUSEADDR を実行する方法がないので、ポートが閉じた後に 60秒(私のシステムでは)の TIME_WAIT が追加される。
2 つのコピー間で転送する必要がある場合は、もう一方のビットコインアドレスに送ることができる。受信側のコピーはその時点でオンラインである必要はない。
異なるデータディレクトリを使用するためのコマンドラインは:
bitcoin -datadir=
例えば、Linux でのデフォルトディレクトリは(~は使わないでくれ): bitcoin -datadir=/home/yourusername/.bitcoin
通常このスイッチを使う必要はないはずだ。それでも 2 つのインスタンスを同時に実行することはできない。
NewLibertyStandardの投稿2009年11月9日午前3:23、Satoshi Nakamoto <satoshin@gmx.com
サトシ・ナカモトの投稿NewLibertyStandardの投稿開始までどのくらいかかった?たまたま要求したノードが遅いだけ かもしれない。遅い開始はダウンロード速度が遅いことと整合する。
現在のdebug.logファイルを見て、何が起こっているか理解したい。 相手側の接続が本当に遅いだけかもしれないし、何かがおかしくて 失敗してリトライしているのかもしれない。時間がかかりすぎると 他のユーザーを混乱させる可能性がある。
Martti、あなたが実行した時、ブロックのダウンロードが始まるまで どのくらいかかったか、そしてどのくらいの速度でダウンロードしたか?
既にSO_REUSEADDRを使用しているので、閉じた後のTIME_WAIT状態でも ポートをバインドできる。バインドに失敗するのはプログラムが本当に まだ実行中の場合だけのはずだ。ビットコインの2つのコピーを同じマシンで 同時に実行しないことが重要だ。同時にデータベースを変更することに なるためだ。1台のマシンで2つ実行する必要はない。コイン生成は 今では自動的に複数のプロセッサーを使用する。
これらのlibエラーが何なのかよく分からない。調べてみる。
ブロックが増え始めました。Windows版よりも増え始めるまでに確実に 時間がかかります。また、Windows版よりも遅い速度で増えている かもしれません。送ってくれたLinuxビルドでデバッグが有効になって いるのでしょうか?ブロックは毎秒約15ブロックのペースで増えて います(時計を見ながらの目測です)。Windows版でどのくらい速かったかは 計測していませんが、もっと速かった気がします。
速いペースで増え始めるまで約30分かかりました。興味深いことに、安定して 増え始める前にCPU使用率が上がり、安定して増え始めると下がりました。 ただし今回は最初の数分以内にブロックが2まで増えました。まだビットコインを 生成していません。ビットコインが生成されるまで辛抱強く待ちますが、我慢が切れる までに何も生成されなければ、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
2つのインスタンスを同時に実行する理由は、あるビットコインインスタンスから別の インスタンスにビットコインを転送するためです。もちろん別々のデータディレクトリに アクセスする必要があります。コマンドライン引数で指定できるようになれば いいのですが。現在はビットコインのデータフォルダーを仮想マシンに移動して行って います。ビットコインをシャットダウンして別のデータディレクトリで再起動するのは 良い解決策ではありません。未確認のビットコインがある間にシャットダウンすると それらのビットコインを失うリスクがあるからです。
ポート使用中エラーが出た時、ビットコインは確実に実行されていませんでした。 プロセスは素早く確実に終了しますが、ポートが再び利用可能になるまでに 30秒から3分かかります(記憶からの推測)。WineでのBitcoin 0.1.5から Linuxビルドへの切り替え時と、LinuxビルドからWineでのBitcoin 0.1.5への 切り替え時に発生しました。
もう一つ気づいたのは、バージョン情報ダイアログのテキストが正しく収まって おらず、リサイズもできないことです。