【ICP】キャニスターの容量は?

インターネットコンピューターでプログラムやサービスを動かそうとしたとき、容量が気になることがありませんか?プロトタイプを動かすにしろ、使用するデータ量によっては容量を超過してしまい動かなくなることも考えられます。

インターネットコンピューターで動かすプログラムはキャニスターと呼ばれるVM(のようなもの)で行われるわけですが、このキャニスターの容量がわからないと作るサービスが実現可能なのかわからなくなりますよね。

今回の記事は、

  • キャニスターの容量はどれくらいなのか?

と疑問をお持ちの方、これからインターネットコンピューターで試しに(あるいは本格的に)開発を検討している人向けの記事になります。現在の容量とその問題に対して、インターネットコンピューターの今後の対応がわかるようになっています。

キャニスターの容量は4GBが安全

結論からいきましょう。2022年開始時点で8GBが利用でき、今後さらに拡張予定です。

ただし、開発者フォーラムでアップデート後のやり取りをみていると、いくつか制限があるようです。

  • Rustでは8GBまで使用できるがMotokoはできない
  • パフォーマンスのボトルネックが見つかっている

インターネットコンピューターのリリース時に4GBから8GBに増えているものの、ひとまずキャニスターの容量は4GBで考えたほうがよさそうです。

キャニスターの容量300GBを目指す

今はまだ4GB・8GBしか利用できませんけれども、キャニスターの容量は最終的に300GBを目指してバージョンアップをしていきます。

300GBまで容量を増加させる提案が可決

最初期に4GBで提供されていたキャニスターの容量は300GBに成長していきます。

2021年9月に提案された容量増やすための素案が、NNSの投票で可決されました。賛成99.99%の圧倒的多数で可決です。誰しもが4GBでは不十分と考えていたということですね。

>>(関連)NNSで投票

4GBスタートの理由

そもそも何故に4GB?

4GBでは簡単に容量上限に達してしまうことは想像に難くないです。投票結果もそれを物語っていますね。

もちろん、最初のリリース時に4GBに制限されていたのには理由があります。インターネットコンピューターがWASM(WebAssembly)を使用してプログラムを実行していることが影響しています。

WASMは32bitで稼働

WASMを利用してプログラムがインターネットコンピューター上で実行されています。このWASMの32bitが4GBの上限の正体です。

32bit→64bit

いずれはバージョンアップにて対応してくれることでしょう。たしか、WASMの共同開発者もインターネットコンピューターの開発者リストにはいっていたはず。優秀なエンジニアたちに期待です。

300GB以降はどうなる?

300GB以降については、そのまま400GB・500GBと増やそうぜ!というパターンになる気もしますけれども、キャニスターの容量以上に保存するために既に動き出しているプロジェクト・機能があります。

  • OpneChat
  • Bigmap
  • BigSearch

いずれも複数のキャニスターに分割していく方法です。

OpneChat、一人一つのキャニスター

4GBしか各キャニスターが使えませんが、現時点で大量のキャニスターを使うことで容量の問題に対応しているプロジェクトとしてOpneChatがあります。

OpneChatがどのようなプロジェクトか簡単に説明するとLINEのようなメッセージアプリです。メッセージアプリというのはメジャーになるとユーザーの数が数千万・数億を超えてきます。実際にLINEも国内だけで8000万アカウントを超えてくるので、メッセージアプリ全体でストレージを使うことを考えると4GBでは 足 りませんし、300GBになったところで足りないでしょう。

そこで、OpneChatは、一人につき一つのキャニスターとすることで容量の問題に対応しているとのことです。

うーん。シンプル。

ただ、課題もあります。プログラムのアップデートなどもすべてのキャニスターに波及させないといけません。OpneChatはキャニスターを管理するための仕組みを同時に用意しているので、同じように一人一つのキャニスターを採用する場合は、裏方をしっかりと作りこむ必要がありそうです。

BigMapで大容量保存

BigMapとはインターネットコンピューターでエクサバイト(ギガ→テラ→ペタ→エクサ)のデータを格納するクラスです。一つのキャニスターの持つデータを複数に分割保存を自動で行ってくれる夢のようなクラスです。実際、無いので夢ですけど。

BigMapが実用化されれば、キャニスターをまたいでデータを保存してくれるので、キャニスターの容量を意識しなくてよくなります。

デモで紹介されていたBigMap

BigMapは2020年にインターネットコンピューターのデモのひとつとして提供され、動画などの大きいデータも小さいチャンクの形で素早く保存できる仕組みとして紹介されました。Amazon S3のように簡単に使えるようになるので期待されていたのですけれども、いくつかの設計に問題が見つかったため、残念ながら2021年のリリースは見送られました。

2022年のロードマップにリストされた

ではBigMapはいつ頃使えるようになるのかが気になります。更新されたロードマップには2022年第三四半期以降に登場予定と記載があります。

今後変更されるかもしれませんが、年内に使えるようになると嬉しいですね。

BigSearchで大容量データ検索

実は、BigMapのデモとともにもう一つ紹介されていた機能があります。BigSearch。全文検索エンジンです。

こちらはロードマップ上で見つけることができなかったので、BigMapの対応と同時になるのか、それともBigMapの後になるのか気になるところです。

BigMap同様に無限にスケールを拡張できるのであれば、可能性は広がります。匿名検索を主とするDuckDuckGoが、あるいはオリジナルの検索エンジンがIC上で動くことも容易に想像できます。

まとめ

  • 8GBの容量が使用可能で最終的には300GBが利用可能になる予定
  • 現状一つのキャニスターの容量は4GBで抑えるほうが安定
  • 大きい容量を使うためには複数のキャニスターに分割して保存
  • BigMapが登場すれば容量を気にすることはなくなる

現状でエンタープライズで使うには、容量の問題もあるので、需要はまだまだこれからですね。しかし、容量の問題を解決できれば既存サービスの移行あるいは、コピーサービスがかなり作りやすくなります。

300GBへの増量やBigMapのリリースは一つの節目になる!と個人的に考えています。