Bitcointalkへのサトシナカモトの投稿和訳 No.11~20

サトシナカモトの投稿の翻訳

BitcointalkへのSatoshi Nakamotoの投稿のNo.11~No.20を翻訳しました。

No.11~No.19にかけては、各ユーザーからの質問や提案に対するSatoshiの回答が殆どですが、No.20では主にマルッティマルミと共同で作成したビットコインversion0.2のアナウンスが行われました。

No.11 Re: A few suggestions

素晴らしい提案をありがとうございます。

Quote from: madhatter on December 09, 2009, 05:34:46 AM
Bitcoinソフトウェアがピア(クライアントTCPソケット)との接続を確立すると、クライアントはハンドシェイク文字列を送信します。 そしてすぐに、サーバー(サーバーのTCPソケット)はハンドシェイクを送信します。 これはもちろん匿名を意図しています。 ISPがクライアントをポートスキャンして、プログラムの実行状況を検出するのは非常に簡単です。

それは良いアイデアです。接続の受信側は、有効なハンドシェイクを受信するまで送信を差し控える必要があります。 如何なるポートスキャンも、自発的にはそれ自身を識別しないデッド接続を得るだけです。

Quote
ハンドシェーク中に何かしら暗号化を施してください(暗号化の種類は上記の発言または要求にあります)。これにより、DPI(ディープパケットインスペクション)中にソフトウェアが何であるかを難読化します。私は中国またはイランのように自由ではない国々の人々のことを考慮しています。

私は最終的に全接続をSSL化することを考えています。SSLの不足はDPIに対して無益になるでしょう。 TORを介して接続する方が解決策としては優れているでしょう。これは0.2で可能です。

Quote
このシステムをウェブサイトと統合し、インスタント機能を提供できるようにするには、ある種のAPIが必要です。単純なhttpsの受信メカニズムが効果的です。クライアントに、全ての関連情報が記載されたhttps URLに入金を反映させ、ステータス更新を行います。 また、アウトバウンド決済の仕組みも良いでしょう。従って、決済(および一括支払い)をアウトバウンドに自動化することができます。 httpsの領収書インターフェースを介してステータスを返すことができます。

それはver0.2の後の主要な課題の一つです。

Quote
静的またはランダムポートについて。実行するポートをランダムに割り当てる設定をしてください。(非常に制限の厳しいファイアウォールに対しては、静的に設定しても良いでしょう)。

そうですね。いつも同じポート番号だと、意味が無いでしょう。

Quote
UPnPサポートについて。クライアントがアップストリームルータでポート転送を自動的に作成するようにします。デフォルトで有効とすることも可能です。オプションメニューでオフにすることも可能です。

私はUPnPの試行を楽しみにしています。殆どのP2Pクライアントは、通常、デフォルトでUPnPを有効にしていますか?

Quote
NIXシステムのヘッドレスインストールのコンパイルについて。ネットワークサービスとして実行するだけでも機能します。恐らく、制御目的のtelnet可能なポート(またはUNIXソケット)でも可能でしょう。

管理インターフェースをどのように構築するのが最善かは、まだ思考中です。バックグラウンドデーモンと通信して受信した取引を照会し、転送を開始するコマンドラインも考えられます。これは更に自動化が容易くなるでしょう。または、ブラウザでそれを管理するために、80以外の何れかのポート上のhttpインターフェイスは使用するのは如何でしょうか。


備考:
The Madhatter氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.12 Re: Questions about Bitcoin

1-3:
そのレベルの匿名性を要求するのであれば、TORを通して接続する必要があります。TORについてはversion 0.2 で対応しており、数週間後に実装される予定です。その時に、TORに関するガイドを投稿します。

4:

Version 0.1.5: %appdata%\Bitcoin directory の全てをバックアップする必要があります。
Version 0.2: wallet.dat のみをバックアップするだけで問題ありません。

5:
いいえ。ウォレットを複製してビットコインが2倍になってしまう様な事は、防げるように設計してあります。

6:
消失してしまったコインは二度と復元できず、総供給量は減少します。これにより、残ったコインの価値は増加する結果となります。例えば政府が造幣すると既存の法定通貨の価値は減少しますが、これとは正反対のものと言うことが出来るでしょう。

7:
現在は29,296ブロック目です。供給量はブロック数×50のため、現在の供給量は1,464,800BTCとなります。もしまだ24,000ブロックしかないのであれば、イニシャルブロックのダウンロードが済んでいないのでしょう。ビットコインのアプリからEXITし再スタートしてください。Version 0.2がイニシャルブロックをダウンロードする上で安定的かつ高速です。

8:
現在ではビットコインは数百BTC作成可能であり容易ですが、ネットワークが拡大するにつれて作成は次第に難しくなります。

9:
良い質問です。ウェブサイトはアップデートする上でTCPのポート8333が必要となります。ポートフォワーディングは、他ノードがあなたの接続を促すとと共に、接続を維持し、更に多くのノードと接続可能とします。また、そのポートはIPアドレスによる支払受領をする際にも必要となります。

10:
いいえ、コードの改編の様な事は他ノードが許可しません。コードをオープンにしているのは、単にレビューできるようにするためです。もしコードがオープンでなければ、誰もそのセキュリティを検証できません。これはプログラムにとって本質的に重要だと考えています。

11:
コンピューターの性能が悪ければ、少しのコインしか生成することが出来ません。つまり、コインの生成スピードは、CPUのスピードに比例します。

12:
New liberty standard以外にも依頼は色々と来ています。

13:
ビットコインはBerkeley DBという取引データベースを使用しています。システムクラッシュでデータが失われることはありません。取引はデータベースに即座に記載され、受領されます。

14:
現在の総ブロック数に50を乗じることで供給量を算出することが可能です。ビットコインのネットワークは約1年程度稼働しています。このシステムデザインおよびコーディングは2007年から私が開始しました。


備考:
SmokeTooMuch氏の質問に対する回答(質問内容は以下の原文で確認可能)。
14番目の質問に対する回答から、Satoshiは2007年からビットコインの開発に着手したことが分かる。

原文:

Questions about Bitcoin
Questions about Bitcoin

No.13 Re: Questions about Bitcoin

その通りです。send-to-IPオプションを使用することで、そのIPに応答した人に届きます。ビットコインアドレスに送付する際に、その問題は生じ ませ ん。

IPアドレスとビットコインアドレスのメリットを生かすため、両者のオプションを実装する計画です。当面、取引毎に異なるアドレスを使用しますが、受領者はワンタイムアドレスにビットコインアドレスで署名し、受領者当人であることを証明します。


備考:
SmokeTooMuch氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

Questions about Bitcoin
Questions about Bitcoin

No.14 Re: A few suggestions

その通りです。SVNはversion 0.2においてのリリース候補となっています。これはLinuxにおいても稼働可能となります。なお、FreeBSDではテストされていません。

Quote from: madhatter2 on December 11, 2009, 04:59:19 AM
FreeBSD上で動作する作業バックエンドプロセスがあれば、いつでもシードを実行できます。

それは大変助かります。TORのユーザーがシードの獲得について心配する必要がなくなります。また、IRCに依存することはありません。

現行ではデスクトップ上でウィンドウを最小化する事はできませんが、UIにアクセスすることなく、幾つかの簡単なモードを実行できます。(version0.1.5では-minがないため、ウィンドウは開いた状態のままとなります。)

シードの稼働のみ:
bitcoin -min -gen=0

debug.logを見ることでこれを監視することができます。停止するには、プロセスを終了するだけで問題ありません。

コインの生成:
bitcoin -min -gen

生成されたビットコインを取得するには、wallet.dat(version0.2)をUIのあるパソコンにコピーし、wallet.datをスワップし、プログラムを実行してコインをメインアカウントに転送する必要があります。(version0.1.5では、”%appdata%/ Bitcoin”のディレクトリ全てをコピーする必要があります)。なお、wallet.datのコピーに関する注意点が1つあります。コイン生成または支払受領の瞬間にプログラムを強制終了してしまった場合、wallet.datが単独で動作しない可能性があり、ディレクトリ全体をコピーする必要があります。

Quote
ダウンロードパッケージに日次のシード記録が含まれれば、ブートストラップが改善されるでしょう。私はアプリケーションが0接続/ 1ブロックのままのテストインストール例を確認済みです。debug.logを調べたところ、IRCサーバー(freenodeだと思われます。)によれば、私は既に接続済みとのことで、アプリケーションのシードを拒否されてしまいます。(これはほんの一例ですが。)。

同じNATまたはVPNを使用している複数のノードや、いくつかのプロキシサーバーを通したISPで生じることを確認しています。実はちょうど、これを回避するためのSVNへの修正を決めたところです。既に “433”という名前が使用されている場合(エラー433ですよね?)、アドレス以外のランダムなユーザー名でリトライします。

Quote
いつでも協力します。私には時間もありますし、このプロジェクトはとても素晴らしいものです。

それは大変助かります。どんなご協力でも大歓迎です!


備考:
The Madhatter氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.15 Re: A few suggestions

ネットワーク上で一日に生成されるコインの平均量は変化しません。速いパソコンは遅いパソコンと比較し、コインの占有率が増加するだけです。例えば、もし全員が速いパソコンを購入したのであれば、以前よりも多くのコインを取得することはできなくなるでしょう。

今後の良いネットワーク構築のために、GPUの速さ競走は可能な限り避ける必要があります。GPUドライバとその互換性について心配する必要がなければ、新しいユーザーがコイン生成速度を早めることは大変簡単です。CPUだけの人は、今のところは同等の競争することが可能です。


備考:
SmokeTooMuch氏の提案に対する回答(提案内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.16 Re: A few suggestions

Quote from: madhatter2 on December 12, 2009, 06:34:21 AM
私は殆どMac OS X 10.4.11 / Intel上でsvn0.2をコンパイルします(PPC970も持っていますので、PPCビルドも可能です。)。ウインドウはwxwidgets経由でもネイティブカーボンのため、とても速いです!私は新しいmakefile(もちろん、makefile.unixに基づいて。ちなみにautoconfを使用する事を考えていますか?)を作成し、ifdefをheader.hに入れる必要がありました。私はパッチも持っています。今後も色々と試していきますが、次はFreeBSDで試してみるかもしれません。

Macのサポートは良いですね。wxWidgetsはクラスプラットフォーム上では本当に有用です。

PPCは試さないで下さい。PPCはビッグエンディアンであり、ビットコインはリトルエンディアンです。バイトスワップノードがあるとエンディアンバグが絶えず発生する可能性もあり、ネットワークをデバッグするのが困難となります。PPCを使用するのは控えましょう。

Autoconfは、多数のメイクファイルを持つ大規模なプロジェクトには必要ですが、このプロジェクトは十分に小さいため必要ないでしょう。メイクファイルに関しては可能な限り、シンプルにするつもりです。

Quote
ビットコインを2つのアプリに分割するのが理想的だと考えています。つまり、wxwidgetsのフロントエンドと、TCPソケットをコントロールするバックエンドです。私はソースコードを読んで、分割することがどれほど難しいかは理解しています。そして、それは極めてシンプルであるべきだと考えています。もちろん、APIについては開発する必要があるでしょう。

それは難しい問題ですね。全UIバックエンドをTCP接続経由で流すことで、全て2倍の強さにすることができます。リストビューコントロールの動作を考慮すると、リストビューコントロールを常時更新とするために、UIと内部データ構造の間の帯域幅が非常に広い状況です。

私はむしろコマンドラインコントロールを使用するでしょう。これにより、リモート管理とバッチ自動化が可能となります。


備考:
The Madhatter氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.17 Re: A few suggestions

UI無しで実行するように指示するコマンドラインスイッチがあります。メインウィンドウを作成しないことのみが必要です。単純な方法としては、ui.cppの “pframeMain-> Show”と “ptaskbaricon-> Show”を無効化する事です。ネットワークスレッドはUIが存在しなくても問題ありません。他の唯一のUIは、CheckDiskSpaceの容量を使い果たした際の、メッセージボックスです。

それと通信して動作するコマンドラインユーティリティですが、これを何と命名すべきかは迷いますね。。

「ナチュラルデフレーション」と仰いましたか。私はこの呼び方が気に入っています。支払いミスとデータ消失に伴い、ナチュラルデフレーションが起こる可能性があります。コイン生成は次第に遅くなり、ナチュラルデフレーションによるコイン喪失が上回ることとなるでしょう。つまり、完全にデフレーションとなるのです。


備考:
The Madhatter氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.18 Re: A few suggestions

Quote from: madhatter2 on 2009-12-14, 15:01:39
どなたか、このエラーについてご存知ですか?

g++ -c -O0 -Wno-invalid-offsetof -Wformat -g -D__WXMAC__ -DNOPCH -DBUILD_MACOSX -I”/usr/include” -I”/usr/local/include/wx-2.8″ -I”/usr/local/include” -I”/usr/local/boost_1_41_0″ -I”/sw/include/db4″ -I”/usr/local/ssl/include” -I”/usr/local/lib/wx/include/mac-ansi-release-2.8″ -o headers.h.gch headers.h

ui.h:430: error: no matching function for call to ‘wxTextCtrl::SetValue(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’
/usr/local/include/wx-2.8/wx/textctrl.h:303: note: candidates are: virtual void wxTextCtrlBase::SetValue(const wxString&)

std :: stringからwxStringへの変換が機能していないようですね。それは頻繁に使用されているもののため、変換される必要があります。

wxStringは、win32の16-bit wcharと8-bit ansi dual-compileをサポートすることで複雑になります。wxStringがwcharでstd :: stringがcharとなるように、”unicode”(wcharを意味する。)ビルドが使用されている場合には、Windowsでその問題を解決できます。

恐らく、wxWidgetsのコンパイルによって設定を定義または構築するでしょう。どのような「設定」オプションを使用しましたか?

__WXMAC__が正しい定義であるか定かではありません。それはwxStringを複雑にしているMac Classicのサポートかもしれません。OSXのみが必要のため、__WXOSX__を試してみてください(または下記参照)。

http://docs.wxwidgets.org/stable/wx_cppconst.html
「Mac OSには2つのwxWidgetsポートがあり、そのうちの1つであるwxMacはClassicとCarbonの2つのバージョンで提供されています。Classicバージョンは、Mac OSバージョン8上でのみ動作します。CanonバージョンはCFMまたはMach-O(ELFのようなバイナリ形式)であり、前者はOS 9で動作し、後者はOS Xでしか動作しません。最後に、OS Xでしか動作しない、新しいCocoaポートがあります。
要約:
*すべてのMacプラットフォーム、classic、OS Xをテストする場合は、__WXMAC__と__WXCOCOA__の両方をテストする必要があります。
* OS XでGUI Macポートをテストする場合は、__WXOSX__を使用します。
* Mac OS X上でwxGTKやwxBase等のポートをテストする場合は、__DARWIN__を使用します。」


備考:
The Madhatter氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.19 Re: A few suggestions

Quote from: madhatter2 on 2009-12-15, 05:21:09
Ubuntu Linuxの最新バージョンでも同様のstd :: stringの問題が発生しています。

wxWidgetsの構成や設定が間違っているのでしょう。

wxWidgetsの “configure”スクリプトでは、どのオプションを使用しましたか?私が使用したオプションはbuild-unix.txtにあります。

Quote
1つ質問があります。debug.logを有効にする方法を教えてください。私はビットコインを一旦停止し、〜/ .bitcoin / debug.logを確認し、ビットコインを再稼働させようとしました。それはファイルに書き込まれないようです。何か不足がありますか?

その問題は聞いた事がありません。debug.logには何か記載がありますか?あなたがファイルに操作したのであれば、何か記載があるでしょう。プログラムにファイルへの書き込みアクセス権がありますか?


備考:
The Madhatter氏の質問に対する回答(質問内容は以下の原文で確認可能)。

原文:

A few suggestions
A few suggestions

No.20 Bitcoin 0.2 released!

ビットコイン version 0.2 のリリースです!

ダウンロードリンク:
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32-setup.exe/download
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-win32.zip/download
http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.2.0-linux.tar.gz/download

新機能

Martti Malmi
– システムトレイオプションの最小化
– バックグラウンドで動作継続可能な、ブートオプションにおけるオートスタート
– 将来的な拡張のための新しいオプションダイアログレイアウト
– Windows用のセットアッププログラム
– Linux版(Ubuntuでテスト済み)
Satoshi Nakamoto
– コイン生成のマルチプロセッササポート
– TORで使用するためのプロキシサポート
– 最初のブロックにおけるいくつかの減速原因の修正

コーディング作業はもちろん、新しいサイトとこのフォーラムのホスティングをして頂いたMarti Malmi(sirius-m)、Linux版のテストに協力して頂いたNew Liberty Standardには、大変感謝しています。


備考:
Bitcoinのversion0.2が出来た際のアナウンス。このバージョンではサトシとマルッティ・マルミが共同で新しい機能をリリースした。

原文:

Bitcoin 0.2 released!
Bitcoin 0.2 released!

コメント