【原文】Helpful suggestions, thanks.
- When the bitcoin software establishes a connection with a peer (client TCP socket) have the client send the handshake string. Right now you have the server (server TCP socket) send the handshake. My reasons for this are anonymity of course. It is far too easy for ISPs to portscan clients and detect they are running this program.
That's a good idea. The side accepting the connection just needs to withhold from sending anything until it receives a valid handshake. Any portscan would only get a dead connection that doesn't volunteer to identify itself.
- Use some sort of encryption during the handshake (sort of goes with the statement/request above) to obfuscate what the software is during DPI (deep packet inspection). I am really thinking about people in non-free (as in freedom) countries such as China/Iran.
I have thought about eventually SSLing all the connections. I assume anything short of SSL would be pointless against DPI. Maybe a better more immediate solution is to connect through TOR, which will be possible with 0.2.
- Some sort of an API is needed so that this system can be integrated with websites to provide instant-on services. A simple https receipt mechanism would do wonders. Have the client post each incoming payment to an https url with all of the relevant information and provide status updates. Also an outbound payment mechanism would be nice. So one could automate payments (and batch payments) outbound. Status could be returned via the https receipt interface.
That's one of the main things on the agenda after 0.2.
- Static port/Random port. Have a setting to randomly assign the port that it runs on. (also be able to set it statically for very restrictive firewalls).
Yeah, the other stealth stuff would be kinda pointless if it's always the same port number.
- UPnP support. Have the client automatically create the port forward on upstream routers. Enabled by default. Can be turned off in the options menu.
I'm looking forward to trying UPnP. Do most P2P clients typically have UPnP enabled by default?
- Ability to compile a headless (console only) install for *NIX systems. Also have the ability to just run as a network service. Perhaps with a telnet-able port for control (or even a unix socket would be ok).
I'm still thinking about how best to structure the management interface. Maybe command line commands to communicate with the background daemon to query transactions received and initiate sending transfers. That would be more automation friendly. Or what about an http interface on some port other than 80 to manage it with a browser?
【和訳】Bitcoin / Development & Technical Discussion / Re: A few suggestions on: December 09, 2009, 06:45:10 PM
素晴らしい提案をありがとうございます。
Quote from: madhatter on December 09, 2009, 05:34:46 AM
- Bitcoinソフトウェアがピア(クライアントTCPソケット)との接続を確立すると、クライアントはハンドシェイク文字列を送信します。 そしてすぐに、サーバー(サーバーのTCPソケット)はハンドシェイクを送信します。 これはもちろん匿名を意図しています。 ISPがクライアントをポートスキャンして、プログラムの実行状況を検出するのは非常に簡単です。
Satoshi:
それは良いアイデアです。接続の受信側は、有効なハンドシェイクを受信するまで送信を差し控える必要があります。 如何なるポートスキャンも、自発的にはそれ自身を識別しないデッド接続を得るだけです。
Quote
- ハンドシェーク中に何かしら暗号化を施してください(暗号化の種類は上記の発言または要求にあります)。これにより、DPI(ディープパケットインスペクション)中にソフトウェアが何であるかを難読化します。私は中国またはイランのように自由ではない国々の人々のことを考慮しています。
Satoshi:
私は最終的に全接続をSSL化することを考えています。SSLの不足はDPIに対して無益になるでしょう。 TORを介して接続する方が解決策としては優れているでしょう。これは0.2で可能です。
Quote
- このシステムをウェブサイトと統合し、インスタント機能を提供できるようにするには、ある種のAPIが必要です。単純なhttpsの受信メカニズムが効果的です。クライアントに、全ての関連情報が記載されたhttps URLに入金を反映させ、ステータス更新を行います。 また、アウトバウンド決済の仕組みも良いでしょう。従って、決済(および一括支払い)をアウトバウンドに自動化することができます。 httpsの領収書インターフェースを介してステータスを返すことができます。
Satoshi:
それはver0.2の後の主要な議題の一つです。
Quote
- 静的またはランダムポートについて。実行するポートをランダムに割り当てる設定をしてください。 (非常に制限の厳しいファイアウォールに対しては静的に設定しても良いでしょう)。
Satoshi:
そうですね。いつも同じポート番号であれば、何の意味もありません。
Quote
- UPnPサポートについて。クライアントがアップストリームルータでポート転送を自動的に作成するようにします。デフォルトで有効とすることも可能です。オプションメニューでオフにすることも可能です。
Satoshi:
私はUPnPを試すことを楽しみにしています。 ほとんどのP2Pクライアントは、通常、デフォルトでUPnPを有効にしていますか?
Quote
- * NIXシステムのヘッドレス(コンソールのみ)インストールをコンパイルするについて。 ネットワークサービスとして実行するだけでも機能します。恐らく、制御目的のtelnet可能なポート(またはUNIXソケット)でも可能でしょう。
Satoshi:
管理インターフェースをどのように構築するのが最善かはまだ思考中です。バックグラウンドデーモンと通信して受信した取引を照会し、転送を開始するコマンドラインも考えられます。これは更に自動化が容易くなるでしょう。または、ブラウザでそれを管理するために、80以外の何れかのポート上のhttpインターフェイスは使用するのは如何でしょうか。