Kotet's Personal Blog | About | Products | Tags

#ipfs体験記 11:IPFSによる分散型SoundCloud

今まで前回、次回の記事に手動でリンクを貼っていたが、記事を投稿するたびに複数のファイルを編集しなければならないのがめんどくさいのでやめる。 ipfs体験記というタグを作ったのでそこから記事一覧にアクセスできる。 今までタグに日本語を使うのを避けていたが、やってみたら意外と問題が起きなかった。

SoundCloud的ウェブサイトがあった。

以下は作者の書いた記事である。

音声などのデータをIPFS上に保存しており、たとえば https://gateway.ipfsstore.it:8443/ipfs/QmQV535FtqctNyKb82Qh5XUbdh2bdmjyzS5AHcwEPWTaJS のように内部でパブリックゲートウェイを使ってアクセスしている。 以前紹介したブラウザ拡張 を有効にした状態で閲覧するとこのURLがローカルゲートウェイのものに書き換えられ、自分のIPFSノードからダウンロードされるようになる。 または、ログインするとローカルゲートウェイを使うよう設定できるらしい。 するとIPFSの効果により負荷が分散されるというわけだ。

ipfs bitswap wantlistを見ていると再生ボタンを押したあとにwantlistにハッシュが大量に追加されるのを見ることができる。 wantlistはソートされておらず実行するたびに順番が違うので、watchなどで監視する場合はsortする必要があるので注意しよう。

しかし自分の環境だと1回目は途中でダウンロードが止まってしまうことがある。 止まってしまってからページをリロードして、もう一度再生するとちゃんとwantlistがすべて消化される。 これはこのサイトのバグだろうか、go-ipfsのバグだろうか、それとも単に自分とデータ保持者の回線の問題だろうか?

コンテンツが完全に分散されているので、アクセスする人が多くてもローカルゲートウェイを使っており、シーダーが十分に多いなら管理者の負担にはならない。 なので、通常なら禁止されがちのファイルへの直リンクが上記の記事では逆に紹介されている。

<video src="https://ipfs.io/ipfs/QmQAJq3xfPhekc8zph3KjssjYUBLBT3jnMAPHzJU1X9ELz" poster="https://ipfs.io/ipfs/Qme9AJ61nQJezRej79BZTxvT5uXuUzLTiFGH5kWewCJYLR" controls></video>
<audio src="https://ipfs.io/ipfs/QmQAJq3xfPhekc8zph3KjssjYUBLBT3jnMAPHzJU1X9ELz" controls></audio>

分散されているのはデータだけかと最初思ったが、どうやら完全に分散型のサービスらしい。 データベースにSteemというものを使っているらしいが、Steemについての知識がゼロのためどれくらい分散されているのかわからない。

dsound.audioはあくまでIPFS上のコンテンツへのゲートウェイでしかない。 なのでたとえば

などのようにIPFSから直接DSoundへアクセスできる。 DSoundは非中央集権化されており、作者の一存では止めることはできない!

なかなか実用的で素晴らしいと思う。 あとはブラウザやスマホで動くIPFSノードがあれば……