見出し画像

RADARでDeKeyを提案しました

こんにちは。$SHDW fan boy のraaです。

solanaのグローバルハッカソン RADARに参加することにしました。私が今回提案するのはDeKeyというプロダクトです。

なぜこれを作りたい!と思ったのか?

本来、私が作りたかったのは「デジタルデータ販売プラットフォーム」でした。誰かがコンテンツをアップロードし、誰かがそれを買う。ひらたく言うとsolanaでマンガ買えるようにしたかったわけです。販売するマンガは当然shdwDriveから売りたいですし、購入したマンガもkindleじゃなくて、shdwDriveに置きたいです。ファンボなので。

でも、web3のストレージって基本全公開なんですよね。shdwDriveも、ARも、FILも。なので、ストレージ上に非公開のファイルを置きたかったら手元で暗号化するしかありません。使うときには手元で復号化して使います。

デジタルコンテンツはファイル容量が重いので、共通鍵を使った暗号化が必要になります。共通鍵とは暗号化と復号化の鍵が同じ、というものです。AESという暗号化方式を使うのが一般的とされています。

なるほど、つまりデータを販売したかったら、AESで自分の手元で暗号化して、暗号化したコンテンツをストレージに置き、復元のための鍵を、、、?

そう。ここで問題が発生します。復元のための鍵をどこに置いたら良いのでしょう?コンテンツを購入した人に鍵を手動で送るのは無理がありますので、自動で送りたいのですが、web3のストレージは全公開。ブロックチェーンも全公開。web3には置き場がありません。

普通にバックエンドサーバーを立てて、そこに置くことは出来ます。
サ終や漏洩のリスクをトラストしてもらい、サーバー代をサービスに転嫁しなければなりません。shdwDriveにはs3互換があるのでファイルを非公開に出来るのですが、バックエンドサーバーが必要になってしまうのは同じです。中央集権的で、web2的なので、出来れば分散したいところです。

何を作るのか?

上記のような問題の解決を試みるのが、今回のアイデア。DeKeyです。
鍵を分散管理しよう。というものです。

DeKeyのロゴマーク。鍵の頭の部分をイメージしました。

一つの鍵を複数のシャードに分割し、複数の人に持ってもらえば良いという発想です。シャードの保有者は一人では鍵を復元は出来ませんが、支払いのトランザクションや権利証明のNFTを確認できたら、その人にシャードを集めて鍵を復元すれば良い。

この「シャードを持ってもらう複数の人」をsolanaのバリデーターにしたのが今回のポイントです。バリデータはトランザクションに投票する立場なので、支払いのトランザクションの監視が容易な立場にいると言えます。なので、これを利用します。シャードの管理費用をバリデータに還元すれば、バリデーターの収益が加算され、solanaネットワークの分散にも貢献できます。

鍵管理はコンテンツ販売以外にも応用が効きます。例えば自分のヘルスデータをお医者さんのNFTを持っている人にだけ共有したい、とか。チケットを購入したら番号を発行とか。
特定の人にだけデータを共有したいシーンはビジネスにも溢れています。DeKeyはそのようなものの基礎になる可能性があります。

ここまでの考えを一旦デモと動画にしてみたので、よかったら覗いてみてください。
DeKey demo 日本語字幕 - youtube
DeKey demo

さらなる課題

さて、これを実現しようとすると、他にも考えるべき課題が出てきます。

まずは、バリデーターの団結でキーを復元されたらどうしよう?問題です。
シャードは複数揃わないと鍵を復元出来ないため、何個か漏れても問題はありません。しかし、例えば「シャード買い取ります」的なサービスが出てきたら問題です。
これを防ぐために、TEEという技術を採用しようと思っています。TEEとはマシン所有者でも中身を復元できない領域をハードウェアレベルで作る技術です。これにより、預かったシャードはバリデータ自身に対しても秘匿できます。

次に、バリデータが辞めちゃったらどうなるの?問題です。
例えば鍵を100個のシャードに分割して、80個のシャードで鍵を復元できるようにするとしましょう。バリデータの入れ替わりにより、元のシャードを持っている人が80人を下回った場合、その鍵は二度と復元できなくなってしまいます。それは困る。
なので、閾値を下回る前にシャードを再構築することにします。これはMPCという方法を使ってバリデータだけで計算しますので、データの販売者は何もしなくても大丈夫です。

また、バリデータが嘘ついたらどうするの?問題もありますね。
ここは比較的簡単でzkを使って相互検証をするようにしておこうと思います。そんな事ないと思うけど、嘘ついたらスラッシングね!

バリデータが保存するシャードはどこに置くの?内部?SSDに余裕無いんだけど。
fan boyとしてshdwDriveに置くことを提案したいです。安くて早いですよ!

と、こんな感じの提案をsolanaのRADARハッカソンに提出したので、手応えが良ければ具体化を進めたいと思います。

資料など

英語ですが動画と資料はこんな感じです。
DeKey 3min Pitch video - youtube
DeKey Presentation

また、今後DeKeyについて最新情報が欲しい場合はこちらのフォローをお願いします。
https://x.com/dekey_solana

謝辞

今回はcamaoさんとチームとして提出させてもらったのですが、256HAXさん大木さんAJさんをはじめsuperTeamJPのみなさん、ご支援ありがとうございました!みなさんのご支援なくてはここまで出来なかったと思います。
RADARに提出される日本勢のみなさんのプロジェクトも応援しています。LFG!!!

この記事が気に入ったらサポートをしてみませんか?