【Show HN】かつての伝説が復活!完全分散型P2Pプラットフォーム「Freenet(現Hyphanet)」で次世代のWebアプリを構築しよう
2000年代初頭にスタートした私のP2Pプロジェクト「Freenet」を、過去5年ほどかけてゼロから再設計し、新たに「Hyphanet」として生まれ変わらせました。新しいFreenetは昨年12月から稼働しており、分散型グループチャットのRiver[1]や、分散型CMSのDeltaといった初期アプリケーションもすでに動いています。ユーザーコミュニティではゲーム開発なども始まっており、検索・レコメンドエンジンのAtlasといった興味深いプロジェクトも進行中です。技術的な核心部分として、この新しいFreenetはグローバルな分散型キー・バリューストア(KVS)として設計されています。キーに関連付けられたWebAssemblyコントラクトが、どのような状態(値)が妥当か、どのように変更できるか、そしてピア間でどう効率的に同期するかを定義する仕組みです。一貫性の問題に対しては、独自のアプローチを採用しました。各コントラクトは状態をマージする操作を定義する必要があり、これは可換(commutative)である必要があります。つまり、どんな順序で複数の状態をマージしても最終結果は同じになります。この仕組みにより、状態の更新はウイルスのようにネットワーク内に拡散し[2]、数秒以内にグローバルな整合性を保った状態へ収束します。Webアプリの仕組みは従来のWebと似ており、ネットワークから直接ブラウザに読み込んで実行可能です。ただし、データセンター上のAPIではなく、ローカルで動くFreenetピアにWebsocket経由で接続し、コントラクトを操作する構成になっています。主要なデスクトップOS向けのインストーラーを用意しており、すぐに試すことができます[3]。質問があれば何でも聞いてください。FAQ[4]や、3月に行った登壇内容[5]もぜひチェックしてみてください。