ルーティング部分を作っていてファイル共有は関与していないはずだったけど
ちょっと息抜きに思い付きをメモ。オリジナルデータを流さないことにより
転送・キャッシュを行うノードのオリジナルデータに対する責任を軽くする方法。

オリジナルデータ列を O とする (サイズは16の倍数になるまでpadding)。
同一サイズの乱数列 R を生成し、O と R の xor から X を生成する。
R を16個のパーツに分割し R0, R1, ..., Re, Rf を生成する。
以下の8種類のパリティーを xor で生成する。
Rg = xor(R0, R1, R2, R3); Rh = xor(R4, R5, R6, R7);
Ri = xor(R8, R9, Ra, Rb); Rj = xor(Rc, Rd, Re, Rf);
Rk = xor(R0, R4, R8, Rc); Rl = xor(R1, R5, R9, Rd);
Rm = xor(R2, R6, Ra, Re); Rn = xor(R3, R7, Rb, Rf);
データ列 X に対しても R と同様の処理をし、 X0 から Xn まで生成。
放流用のブロックを以下のように生成する。
P0 = R0+X1; (R0 と X1 を連結し, それぞれがX0とX1である旨を添付記載)
P1 = R1+X2; P2 = R2+X3;
...
Pl = Rl+Xm; Pm = Rm+Xn; Pn = Rn+X0;
以上のように P0 から Pn まで24のブロックを生成し放流する。
放流されている P0 から Pn までの中から、いずれの1個のブロックだけ入手しても
オリジナルデータの断片すら復元できない。
ブロック24個全て入手すれば当然復元可能。
パリティにより数個欠落しても復元可能。(何個まで?)
ただし、転送される全データ (P0〜Pn) のサイズはオリジナルの3倍となり、
効率は大きく犠牲となる。ああ、多分これは採用しないな。