メモリに読み込んで書き出す方法だと、メモリが逼迫した状況で失敗する可能性がある。
copyfile(const char* from, const char* to)やcopyfile(path from, path to)のような、できればBoostにあるものを探している。見つけてくれれば、実装にかかる可能性が高くなる。
Quote from: nelisky on August 26, 2010, 01:21:57 AM
Quote from: satoshi on August 26, 2010, 12:57:40 AM
もう一つのトピックに投稿し始めたが、ここで繰り返す。このスレッドの方がトピックに特化しているようだ。
主なバックアップの改善は、事前生成された鍵のプールと、ロード時にブロック履歴から見逃したトランザクションを拾うための再スキャンだ。これにより、バックアップが長期間有効になる。
neliskyが言ったのと同じアイデアを投稿しようとしていた。
そうだ、あなたの別の投稿を見たし、アドレスのプールというのはとても気に入っているが、それらが全部使われた時に簡単にバックアップする方法はまだ必要だろう?アドレス空間が巨大なのは分かっているが、1日に数千のアドレスを配信するアプリケーションがあるかもしれない。
Quote from: satoshi on August 26, 2010, 12:57:40 AM
ウォレットをロックし、フラッシュし、指定した場所にwallet.datをコピーし、アンロックするjson-rpcコマンドはどうだ?プールされた鍵より小さなプロジェクトになるので、先に実装できるかもしれない。
ファイルをコピーする最も簡単なポータブルな方法は何か?Boostに何かあるか?
名前はどうすべきか?こういうのはどうだ: backupwallet <保存先>
名前も実装アプローチも全て素晴らしい。
ファイルコピーについては、boost依存を増やす必要があるだろうか?私としては依存の少ないコアライブラリが欲しい。C++では標準のファイルストリームを使えばいいだろう?http://www.dreamincode.net/code/snippet2306.htm のようなもの(ざっと検索した結果で試していないが、正しそうだ)。
さらに良くするなら、ウォレットに変更があるたびにコピーを行うトリガーを追加するのはどうか?まあ、これが適切に動作するにはファイルロックに依存することになるが、Windowsではうまくいかなかった記憶がある。あっちでコーディングしたのは随分前だが Smiley
JSONやwxWidgetsの依存関係を置き換える多数のものにBoostが必要だ。Boostは良い、ポータブルなもので、避けるべきではない。