>>171
ごめんごめんサーバントじゃなくてサーベントだった。

P2Pネットワーク上に分散的掲示板を作って運用するケースを考えてて、
書き込むには
(1)メッセージIDをキーにしてDHT上にスレッドIDとメッセージの書き込みを要求する。
(2)要求の客体は乱数を生成し、乱数をキーにしてDHT上にスレッドIDとメッセージ、メッセージIDを書き込み、乱数を要求の主体に返す。
この時、接続時のIPアドレスからメッセージIDを再計算しておく。もし異なっていれば弾く。
(3)(2)の書き込みの客体は、まず最初に(1)の主体のIPアドレスとメッセージからメッセージIDを再計算して一致性をチェックし、
次に(1)の主体へメッセージIDを投げてtrueが返ってくる事を確認した上で書き込みを受理する。
ここで(1)の主体はメッセージIDが(3)の主体から飛んで来るので、自分が送信したメッセージIDと等しければtrueを返すものとする。
(4)(1)の主体が返ってきた乱数を分散DB上のスレッドに登録する事を要求する。
(5)要求の客体はDHT上で乱数からスレッドIDを引ける事を確認し、要求を受理する。
読み込むには
(a)分散DBからスレッドを読み込み、登録された乱数列を得る
(b)各乱数をキーにしてDHT上でメッセージを取得する
という感じ。

で、分散DBが改竄されず、かつ荒らしサーバントの数は十分に少ない(高々1000人に一人程度の)ものと仮定する。
まず(1)の主体が荒らせるかっていうと、これは(2)の主体が弾くから無理。
次に(2)の主体が荒らせるかっていうと、これは(3)の主体が次の事をチェックするから、運良く荒らしサーバントが協調的に動作しないかぎり無理。
・投稿元IPアドレスからメッセージIDを計算してそのメッセージIDの担当が(2)の主体と等しいかどうかを調べる
・投稿元IPアドレスとなっている場所へメッセージIDを投げてメッセージがそのアドレスから発信されたものかどうかを調べる
次に(3)の主体が荒らせるかっていうと、これは担当するキーに対応する値を改竄するくらいしかやることがないので無視。
次に(4)の主体が荒らせるかっていうと、これは(5)の主体が弾くから無理。登録されていない乱数は投稿できない。
次に(5)の主体だけど仮定より荒らせない。