2ちゃんねる互換P2P匿名掲示板の実装を考える 1
■ このスレッドは過去ログ倉庫に格納されています
このスレは「P2P型の完全匿名掲示板はまだ出来ないの?」スレからforkして生まれました
2ちゃんの代替となる2ちゃん型掲示板をP2Pで実装してみようぜ、なスレです
名前が長いので若干スレタイは変えましたファイル共有ソフト等の話題はスレ違いなのです
origin:P2P型の完全匿名掲示板はまだ出来ないの?その4
http://toro.2ch.net/test/read.cgi/tech/1390486453/
wiki
http://www34.atwiki.jp/p2p-anon/
[参考]
Tor(The Onion Router)のHidden Service(onionドメイン)Onionちゃんねる
http://xiwayy2kn32bo3ko.onion/ (Tor経由でのみアクセス可能)
Syndie - distributed forums
http://syndie.i2p2.de/
Freenet - P2Pコミュニケーションフレームワーク
https://freenetproject.org/
[関連するP2P掲示板ソフトウェア等]
新月 - P2P匿名掲示板
http://shingetsu.info/index.ja
P2P2ch
http://p2p2ch.web.fc2.com/
ちらしの裏
http://chiraura0.web.fc2.com/
alias
https://code.google.com/p/alias/
o2on
https://github.com/o2on/o2on こっちでレスしておく。
>>http://toro.2ch.net/test/read.cgi/tech/1398178816/32
ならopenにでもotonaにでもいけばいいんでない?
こんなトコ見る必要ない。
>>http://toro.2ch.net/test/read.cgi/tech/1398178816/34
それはバックエンドにP2Pを使わないほうが良い理由にはならないな。
使わなくても良い理由にはなるかも知れんが、それだけでしかない。
>>http://toro.2ch.net/test/read.cgi/tech/1398178816/37
適当なノードがその場限りの鯖として振る舞えばいいというだけで、中央鯖は不要。
そもそも鯖役ノードってのが厳密に定まるバックエンドかどうかもわからんけど。
>>http://toro.2ch.net/test/read.cgi/tech/1398178816/39
P2Pが匿名なんじゃなくて、検証可能なクライアントプログラムが匿名性を提供するんだよ。
Torなりなんなり、匿名化の為のシステムを蔵側に用意させるなら結局インストールが必要。
HTTPの鯖蔵モデルだと、蔵が使うコードは鯖提供で検証不能なので、鯖がロギングし放題。 >>520
C/C++ でまじめに malloc()/free(), new/delete の研鑽を積めばOK
学習教材としては、独習C++中盤の山場にある「文字列クラス」の車輪再発明がおすすめだね >>7
そんな道具の使い方みたいな初歩的な話はどうでもよい とにかくアイデアを出すことが先決だ。
実装はバグだらけでも富豪的でも良い。
後は実装のプロがなんとでもしてくれるだろう。 じゃあ、アイデア
完璧な匿名性を持ったP2P掲示板
ほら、あとは実装しろ。 P2Pにして匿名性を強固にしなかったら2ちゃんより酷くなるだろ
技術があれば誰でもトラッキングできる掲示板になると思うけどね 2chみたいに中央集権型掲示板ではひろゆきとかJIMとか
管理人の権利の主張やら、独裁削除人やらなんやら色々鬱陶しい。
荒らしやネットワーク攻撃対策に関しては中央集権独裁的に行うのではなく、
個人主義、自由主義に基づいた設計にすべきだ。
(リストを作るのも自由、自動的に適用するのも自由という具合に) リアルの愚民どもや法曹・政治家共がゴチャゴチャ言い出すのも鬱陶しい。
リアルをせせら笑いながら自由にコミュニケーションできるネットワークが欲しいものだね。 >>15
torで通常の方法で掲示板を設置した場合は匿名であっても中央集権的になるだろうが。 新月は匿名でも純粋なP2Pでも無いし、ツールも使いにくいからな。 新月が過疎ってるのは作者が閉鎖的に運用してるからだと思うが。
新月が純粋なP2Pではないと言うならば、純粋なP2Pとはどういうものか? >>20
>閉鎖的に運用
作者の意向がネットワークに及ぶなら、それは自由なネットワークとは言えないね 新月の持っておきたくないものを選んで手放せるシステムは良いと思う 例えば、誰もが(作者も含めて)同じ方法で平等に利用可能なソフトウェアがインストールされたサーバがあり、インターネット経由でしかアクセスできず、誰も近づけない場所に設置されている場合、その形態はp2pと言える。 >>21
それはクライアントに依存すること。作者の意向に依存するのはどんなp2pソフトでも同じ。
新月プロトコルのようなものを作れば個人に依存することはなくなる。 新月の作者は簡単に利用出来るように公開ゲートウェイまで設置してるし
閉鎖的な運用してるようには見えない
ただP2P掲示板の需要がないだけだろ 需要はあるよ現に自分も使ってたしかしいかんせん使いづらい
ログの即時取得、2ch専ブラ対応、荒らし対策、携帯対応ぐらいやらないと >>27
以前は誰でもクライアントなしで閲覧できたが、最近はクライアントをインストールしないと閲覧できなくなっている。
理由は、P2P掲示板は2ちゃん型と比べて非常に重いということ。大勢からクライアント無しでアクセスを受けると簡単に落ちる。
確かにP2P掲示板は需要がない。
クライアントをインストールしないといけないし、常時接続での運用が基本でハードルが高い。 新月自体には需要はないだろう
ただp2pってだけで2ch以上なところが何もないからな
p2p掲示版への期待だけで持ってる感じ DNS分散の実装が必要だってことなんじゃないか?
新月の中の人は実況を知らなかったんだろうな。
皆の表現が一致したりしなかったりするダンスのような所が実況の味なのに、
それが十把一絡のスパム扱いではどうしようもない。 みなさんP2Pに求めているものがたくさんありますね。(悪いことだ言うつもりは毛頭ありませんよ)
自由であることは大事なことですが、それは哲学領域に取り敢えず留めておいて、実装では負荷分散と即時性の両立を狙うのが賢い落とし所ではないでしょうか。
考え方によっては、サーバクライアントモデルの拡張としてサーバ側を我々がP2Pで実現し、ふつうに何かのドメインに紐をつけて使っても立派なP2P掲示板ということになります。匿名性はやや犠牲になるでしょうが。
でも当分の間はクライアントをローカルで走らせるモデルが続くと思います。
自宅サーバをやってる人たちが使ってくれたら安定性に一役買ってくれそうなものですが、そのためにはこちら側からの良質なドキュメントなどの提供が必要だと思います。
そこも含めて開発できたらいいなと思っています。 そういう事実上の切り捨てこそが一番の哲学なんだよ。
意見が一致したものから実装すればいいだけなのに、
最初に切り捨てから入るとゴリ押しに見えるのさ。 P2Pはシステムの構造でなく、人の利用形態なのだよ。 開発方針
フェーズ1.匿名性が高く汎用的なP2Pデータベース開発(分散ハッシュテーブルみたいな物?)
フェーズ2.掲示板の仕様とデータベースにぶち込むデータモデルを設計
フェーズ3.普及を想定した使いやすい閲覧ブラウザの開発 >>35
それって段階の意味が全然ないよ。
確認しないまま実装すると確実に作り直しになって
折角作った意味がない場合にそれは必要なんじゃないか?
最初から2ch互換で匿名なのはわかっている以上、
その部分の完成を待ったり段階化する必要なんてサボる口実でしかない。
いいのがでてきたらいつでも差し替えられるようにすれば済む話だし、
むしろ好みで選択できたほうがいいでしょう。
必要なフェーズと言えば、こんなこともあろうかと的な応用にも対応できる
汎用仕様を作ることだけど、これも別になきゃ作れないものではないし、
適当に作ったものがデフォルト化する方が多いよね。 >>36
>それって段階の意味が全然ないよ。
>確認しないまま実装すると確実に作り直しになって
>折角作った意味がない場合にそれは必要なんじゃないか?
>最初から2ch互換で匿名なのはわかっている以上、
>その部分の完成を待ったり段階化する必要なんてサボる口実でしかない。
ウォーターフォールモデルとアジャイル開発の対立みたいだw
あまり厳密に設計すると融通が利かなくなりそう。割りにゆるく、それでいて引き締まった設計にしたい。
ただ、2ちゃん互換ってのは大前提になると思う。
>必要なフェーズと言えば、こんなこともあろうかと的な応用にも対応できる
>汎用仕様を作ることだけど、これも別になきゃ作れないものではないし、
YAGNIって云うよね。今必要でない機能は今は実装しなくていい。必要になった時に実装する。
ゆっくり改良していけばいい。
ただ開発者が足りないような感じもするなあ。個人的には一人じゃ寂しいなあと思うw go言語?一人でやってろ。
みんなで作ろう系はC++かJavaだろJK P2Pって言葉がもう時代遅れで実体に合わない感じだな
有志による鯖のクラウド化をしたいと言う方が正しい感じがする >>40
go言語とC++のユーザー数の違いは分かりますか?オタク君 >>41
AmazonEC2借りて従前の2ch鯖立てるだけでもクラウド化なわけだがw もちろん、そんな物作ったって、既にopen2chやひろゆきの新2chなどがあるわけで
何の新規性もない。 個人的な想いですが、大きな震災が発生してもアクセスに耐え、ノードの急減に耐えられるようなシステムにしたいです。
TCP/IP自体がある程度の耐障害性をもって設計されていますし、アプリケーションがこれに応えることも悪くないと思うのですがどうでしょう? >>44
おーぷんやscはAmazonEC2じゃないだろw
だがある意味それで十分な利用者もいるんだよね。特に2ch.netの方は非常に鯖が脆弱だから。
1. 鯖の堅牢性
2. 匿名性
3. 荒らし対策
2.と3.を両立させるのが難しい。P2Pにしたところで、第三者による追跡が可能になる訳で2.が保証される訳ではない。
ぶっちゃけtor板が大規模クラウドのvpsで提供されていたら匿名性と堅牢性の両方で申し分無いんだよね。
おもしろくないけどw >>47
仮にvpsにしてもtorにしても匿名性に関する危険性は現2chと同じ。
torに関しては鯖の所在を秘匿する手段としては使えるが、
情報漏洩の危険性は依然として残っているから、
現状より匿名性が高いとは言えない。 さらに、管理者の裁量が大きすぎることも問題。
管理者が閉鎖したいと思えばいつでもできるし、
気に入らないレスを管理者が如何様にも操作できるという点も問題だ。
特別に大きな裁量を持った人間を置くべきではない。 結局、有志によるクラウド化に意味が出てくるわけだな。
torの匿名性が2chと同じってのは意味がわからんがw >>41
申し訳ないけれども,「クラウド」はサーバーの存在を前提にしている時点で(現時点で最先端だとは思いますが)未来的ではないと考えています. p2pと言ってもデータを持っているノードは常時接続でないとそのデータが利用できないので、実質的に鯖が存在するのと同じことだと思うが
鯖の存在を意識せずに利用するためには大規模なノードの参加によるデータの冗長化が前提になる >>41
まだ存在しない実体を適当に語られても困るんだな。
そういうクラウド実装を出してくるなら話は別だけど、
ただ、スレタイと実装が合わないなら結局2ch的には
スレ違いか乗っ取り扱いだろうなあ。 >>52
DHTを実装するならノードの起動や終了に伴ってデータは自動的に移管されます。
少なくとも今書いている実装ではそうなっています。異常終了でない限りは。
完全にノードが0になればデータ消失のおそれがありますが、それは他のいかなるP2P掲示板でも生じうる事態ですし、誰かが予備を立てることで対処するとしましょう。
あと、素敵なIDですね。 匿名で利用できるDHTができればファイル共有にも使える。
ファイル共有なら常時稼働するインセンティブになるからね。
そのネットワークに掲示板を間借りすれば良いというわけ。 https://github.com/nictuku/dht
Go使おうぜ
https://github.com/laher/goxc
Write once, runs everywhere in native executableだぜ 今の乏しい理解の時点では DHT には否定的だな‥
参加ノードが時々刻々と変化するなかで、ハッシュ値に対してどのノードにキャッシュを置くのか?どのノードからキャッシュを取るのか、疑問は尽きない‥
第一、単純な DHT だったら、ある投稿単位を得るために、その投稿単位を所持しているノードに集中的にアクセスが集中するのでは?
それとも理解が足りないのか? うわ、、、ここにもqzいんのかよ
邪魔だから消えろ 面白い感じに開発者が集まってきたな
俺もコテ使おうかしら、しかしほんま最近仕事忙しくて何もできてない >>57
私の実装の範囲で説明します。
>参加ノードが時々刻々と変化するなかで、ハッシュ値に対してどのノードにキャッシュを置くのか?どのノードからキャッシュを取るのか、疑問は尽きない‥
≪キャッシュ≫の意味がよく分かりかねます。
仮に≪DHTに保存されたデータ≫だとしてお答えします。DHTのアルゴリズムとしてChordを採用した場合、データに対して保存ノードは自動的に決定されます。詳しくはChordについてご参照ください。
>第一、単純な DHT だったら、ある投稿単位を得るために、その投稿単位を所持しているノードに集中的にアクセスが集中するのでは?
現時点の私の実装ではその通りです。
回避策として、多重にハッシュ関数を適用することによるラウンドロビンが考えられます。(Chordを用いているとします)
通常ではDHTに保存されるデータ:Vのアドレス:Kは、ハッシュ関数:Hを用いてK=H(V)として決定します。
ここでK[n]={H(V), H(H(V)), ... }で表せるように複数のアドレスを生成し、それぞれのアドレスに対応する複数のノードにデータを保存します。
データを読み出す際は、Kに上原付でランダムな回数だけHを適用し、得られたアドレスにデータを請求します。
これによりネットワーク負荷は分散されますがストレージの負荷は全体として増加します。
掲示板の機構とDHTの機構とは分離されるので、掲示板側からはこれを意識する必要はありません。
今考えたアルゴリズムなので瑕疵があるかもしれません。ご了承ください。 >>57
キャッシュって言葉からしてny系P2Pに毒されすぎだよ。
DNSの浸透(≒DNS設定ミスによる不具合の別名)みたいな状態はムダでしか無い。
DHTの場合(例えばKなんとか)、データを保持するノードに到達するまでの距離が自動的に定まるし、
アクセス数の多いデータは複製数を上げれば集中が緩和されると同時にアクセス時間も減少する、筈。 >>55
使えてどうするのさ?
この板で作るなら開発者の為のソース共有辺りはあっていいけれど。
掲示リスクが増えたら掲示したい奴が余計減るよ。
別に常時じゃなくたっていまどきの雇用と同じでどうにでもなるだろ。 思い思いに勝手な理想を語るだけで動く奴は一人もいない。 ライセンスの不備とIDが致命的なんじゃない?
実はレスのまとめを作るのさえ自己責任の同人扱いで要はfreeがないんだ。
人が集まっているのが2chのメリットなのに、IDのせいで住人層の薄さがハッキリでてしまい
ギブアンドテイクの期待ができない。
一般的にID識別というのは信用の為なのに、24時間という中途半端な期限では何の信用も積めないし、
積んだところでそんな釈迦に説法するのは敬遠されてしまって本人のトクにはならないね。
効果としてはレス待ちゲストによる気まぐれ支援を自粛させて瓢箪から駒の望みも奪ってしまうだけで、
互恵関係構築には全く役立たない欠陥品なんかを有難がるストーカー御用達って感じ。
自分にメリットがあると思えなきゃ誰も(書き込み)しない
という誰でもわかる基本を何故か皆忘れちゃってるんだよな。 違法な書き込みのリレーノードになってて警察が家にくる可能性のある掲示版を誰が利用するんだ >>69
キャッシュしない仕様であれば家宅捜索する意味が無いので、
裁判所は礼状を出さないよ。 テキスト情報共有ソフトなのだから
サイズが小さく、多くの複製を置くことができるから
あまり読まれないスレも素早く読めそうな気がするが >>68
>ID識別というのは信用の為
違うね、そのためにはすでにトリップがある。
君の説だと全員に強制的にトリップをつけることになるが、そうなると本当に誰もこなくなるだろう。
ID反対意見としては、今ひとつ説得力がない、もう少し脳細胞を使ってくれ >>72
一般的なID識別の話をしてるのに2ch限定の用語と混同されても困る。
トリップは後付けの機能で昔は無かったよ。 >>68
>実はレスのまとめを作るのさえ自己責任の同人扱いで要はfreeがないんだ。
Creative Commonsにしてみたいですね。
>ギブアンドテイクの期待ができない。
>
>一般的にID識別というのは信用の為なのに、24時間という中途半端な期限では何の信用も積めない
>自分にメリットがあると思えなきゃ誰も(書き込み)しない
>という誰でもわかる基本を何故か皆忘れちゃってる
個人的には登録制にすれば内容の質は上がると考えています。署名付き専用板などを作って棲み分けるようにしてもいいと思います。 連投ごめん
匿名な掲示板は次のステージに進むべきではないのかと感じることがある。
匿名でも一定の品質が得られた時代は終焉し、ネット利用者の増加に伴う2ちゃんねるの利用者の質の低下が起こりつつある。
匿名は人間を無責任にする。
一度匿名での書き込みができれば、利用者はそれをさも当たり前だったかのように錯覚してしまう。
限られた人のみが使える匿名掲示板なら高い品質を確保することができたが、あらゆる人間が集まる場所で匿名での書き込みに品質を求めるのには無理がある。
初回起動時に自動で電子署名を作成し、電子署名がついた投稿を最初からするように設計すれば、それが当たり前にできるんじゃないかな。
明示的に署名を作る手間があるからそれを意識してしまうんだ。 品質とかそういうのは広告屋の発想だよ。
そんなものは利用者は求めていない。
千に三つ役に立つものがあれば、それは良スレだ。 2chの全盛期を知らない人かな。
2chは昔、もっと人口が多かった時代のほうが高品質なレスが多かったよ。
その後、運営がデタラメな規制を繰り返した影響で大きく人が減って、質が落ちたんだよ。 単に人が減っただけなら消化速度が落ちるだけで質は変わらない。
よくある過疎スレだよ。
見捨てられるから質が落ちるのであって、その判断をさせてしまうのがIDだという事。
そもそも削除判断用だからね。 ネット利用者は増加してるけど2chの雑談系板以外の書き込み数は全盛期の半分以下まで低下してる で、こんな内容がプログラム技術板でやることか?
VIPでやったほうがまだましなんじゃないの。 >>79
利用者減ってるのか。
運営のせいか、時代の流れなのか。 江崎浩のP2P教科書を斜め読みしてると、P2Pの既存実装、ツールキット、テスト環境があることがわかった
(既存実装は自明だけど・・・)つまり誰かが車輪を作りまくって置いてることになる
【BambooDHT】
http://bamboo-dht.org/
分散ハッシュテーブルの研究で作られたソフトウェア、安心と信頼のMIT製
【OverlayWeaver】
http://overlayweaver.sourceforge.net/index-j.html
オーバーレイネットワークアプリを3層に分けて、それぞれ差し替え可能にしている開発ツールキット
階層0:ルーティング(Chord, Pastry, Kademlia...)
階層1:高レベルサービス(DHTとか)
階層2:アプリ
これはどの程度使えるのだろうか・・・
【PIAX】
どちらかというと車載機器や携帯機器への実装を目指してるプロジェクト?
低レイヤな部分でlibjingleとか使ってるっぽい
阪大製 OverlayWeaverはP2Pで通信するアプリケーションを”オーバレイ”ってひとくくりにしてるぐらいだから
なかなかすごいプロジェクトかもしれんね、ゲーム開発ツールキットで言えばUnityみたいなもんかな 使ったことないけど新月はなにがいけないの?
自分的にはp2pにこだわりすぎてるからじゃないかと思うけど
これをサーバーからでも閲覧や書き込みしやすいようにすりゃいいんじゃ? >>84
別にお前個人に教えてやろうと思って書いてるわけじゃないだろ。 >>65
DNSの浸透、のほうがいいかもしれないよ
DHT の場合データが取得できない場合がある、所持しているノードが起動していなくてね
ファイル共有の場合は、そのノードが参加するのを待てばよいが、掲示板の場合はどうかな?
>>64
chord 調査中です。 >>85
P2Pというのはサーバ兼クライアントなんだから、こだわりすぎというのは意味不明。
過去ログ読まない貴方には向かないかもしれないけれど、
大事な事でも一度書かれれば充分な>>84なんかには新月も悪くないだろう。 >>87
DNSの浸透は設定ミスでTTLが延長される等のクソ環境の言い訳だし(故に浸透言う業者は無能な可能性が高い)、
そんな「データの伝達経路がぶっ壊れてるけど運がよけりゃデータ読める」状態を意図的に作ってどうすんだって。
DHTでは最悪のケースとしてデータ所有ノードが全て断線しても「ファイル共有の場合」の状態を再現できるし、
通常の場合は断線するノードが出たり明示的に切断する場合に複製数増やして最低データ保持ノード数を確保するだけ。 大抵のDHTアルゴリズムには、特定のノードが退出してもそのノードの担当範囲のデータが消えないようにする仕組みがあるよ >>90
>特定のノードが退出してもそのノードの担当範囲のデータが消えない
詳しく
投稿単位AのハッシュH の結果H(A)でノードBを特定し,そのノードBが実際に投稿単位を持っているノードCを保持しているんだね (Chord)
じゃ,特定のノードBが前触れも無くいきなり退出(P2Pではよくあること)した場合は, C のことを知っているノードはいなくなるのでは? まず、DHTでは基本的にデータを複製していく点に留意。
>>91の例の場合、ノードCからノードBへ投稿Aそのものがコピーされる。
どのノードが持っているか、という情報を転送していくのはWinny方式だから勘違いせぬよう。 DHT上に保存したいデータをA、そのデータのハッシュ値をH(A)、Aを担当するノードをNとする。
取り敢えず、自分の知ってるChordとKademliaってアルゴリズムを例にする。
Chordの場合、Nはその前(ノードID的に)のノードN'、N''、…へAを複製する。
円状のネットワークを構成するアルゴリズムだから、Nが抜けると(例えば)N'が次のNになるので、Aは消えない。
Kademliaの場合、Nに近い幾つかのノード(N自体が入っているとは限らない)へAをばら撒く。
各ノードは、定期的に自分の持つデータをNに近い幾つかのノードへばら撒く。
Aを取得する時も、Nに近い幾つかのノードにリクエストを送る。
データはひたすら複製されていくから、いずれかのノードが抜けても問題ないワケ。
円状のきれいなネットワークを構築するChordに比べると力技っぽいけど、実装が簡単らしいね。 >>91 >>92
どちらの実装もあり得る。
大きいデータとかファイル共有だったらDHTの担当ノードに直接データを持たせるということはしないだろう。
掲示板のデータはそれほど大きくないし、新しいレスが素早く反映される必要があるから
担当ノードが直接保持するべきだろう。 まじかよ
コンテンツをDHTに直接入れてる実装って現時点で存在するのか?
おれは知らん >>93
なるほど、ハッシュ=ノードID のサイズが 160ビットならば、ノードIDをローテートして生成されるノードID群で持ち合うんだね
あとはノードIDの決め方だけれども DHTに直接データを置くのではなく、一旦メタデータを置く事が主流であるようですが、間接配置(他に正確な呼び名があるならそう読み替えてください)のメリットは何でしょうか。
私には大きなファイルの分割による負荷分散ぐらいしか思いつきませんが、他に何か応用があるのかな? というか直接配置の実例があるなら提示していただきたい
参考にするから あ、いま思い浮かびました。連投をお許しください。
荒らしがいるとします。彼は大量の無意味な投稿をするのですが、これを直接DHTに配置すると多大なネットワーク負荷が発生します。
間接的にアドレスだけを配置し実体を投稿したノードに持たせれば、無駄な負荷を発生させずに済みます。
ただ投稿ノードが抜ける時に結局データの移動が起きてしまいますが。 ■ このスレッドは過去ログ倉庫に格納されています