任意のURLに簡易のNFT認証を付けたリンクが作成できるサイトを作った
任意のURLに簡易のNFT認証を付けたリンクが作成できるサイトを作った。
これは何?
任意のURLに簡易のNFT認証を付けるとはどういうことか。言葉で説明するとわかりづらいのでまずは下記ツイートの動画見てほしい。
動画にあるように リンクの発行者 はアクセス可能かどうかの条件となるNFTのコントラクトアドレスやOpenSeaのURLを設定する(複数設定可能)。
次にそのNFTを保有しているユーザーのみがアクセスできるページのURL(秘密のURL)を設定する。
するとhttps://bnftly.com/c/xxxxxxxxx
のようなリンクが発行される。
次に下記の動画を見てほしい。この動画は実際にその発行されたリンクにアクセスするとどうなるかを表している。
発行されたリンクへユーザーがアクセスすると、まずメタマスクのウォレットで認証を行うように促される。そこでその認証結果を元にバックエンド側ではそのウォレットが保有するNFTを確認する。
予めリンクの発行者が設定していた条件となるNFTを保有している場合はユーザーを正規のURL(設定した秘密のURL)へリダイレクト、もし条件を満たすNFTを持っていない場合はエラーが表示される。
リンク発行からそのリンクにアクセスして認証をするところまでの流れはこんな感じ。
ユースケース
ユースケースとしては、例えば下記のリンクはCryptoPunksのNFTを持っている人だけが秘密のURLへアクセスできるようになっている。
https://bnftly.com/c/c8fbb560afbc418caae4d11e8f347539
特定のNFTコミュニティの人だけがアクセスできる制限付きURLへ誘導するようなケースだ。これはNFTを会員証のように使っている例。その他には例えばあるNFT群(floor Priceが1ETH以上のNFTのプロジェクト10個等)で条件付けをすれば、高級なNFTを持っている人というセグメントが作れるのと同義なのでマーケティング的な利用価値もあるかもしれない。
だがまぁこれらはある程度NFTプロジェクトを独自で作っている人たちなら独自のサイトですでに実装したりしている。現にあるNFTを持った人だけが参加できるDiscordというのはよくあるわけで。
ただこのサービスはそういう機能を独自で実装する手間を省いて非エンジニアでも使えるというのが利用価値になると思う。
課題
このサービスで担保しているのは、認証時点で そのユーザーが条件となるNFTを保有していること と 設定された秘密のURLへのアクセス を橋渡しすることである。
つまりそのユーザーが正規のNFT認証を経て一度秘密のURLを知ってしまったら、その後は認証なしでもそのURLを直叩きする等でアクセスできるということだ。それはその後そのユーザーが条件となっていたNFTを手放していた場合でも秘密のURLが変わらない限り直叩きできるので同じである。この辺りは外部URLへのリダイレクトをしてるだけという仕様上どうしようも出来ないので利用時には理解して使ってもらうない。
もし秘密のURLヘのアクセスをNFTの保有状況から完全に管理したい場合は独自で実装してもらうしかない。詳細は省くが条件となる独自コントラクトのアドレスが任意ではなく事前に決まっているならばそんなに難しくないと思う。
あとは現状EthereumとPolygonしか対応してないのでその他のチェーンにあるNFTは使えない。PCからしか基本的に利用できないのもそういう理由である(メタマスクがSP Webだとまともに使えない)。
それとこういうサービスは海外にも発信した方が良いなとは思うんだけど、そういうチャネルを持っていないので全然届けられない。特に英語圏の方がNFTを持ってる人が圧倒的に多いので試してもらえたりすると嬉しいが難しい。Twitterとかで英語でつぶやいてみたりしても意味なさそうだしDMしたりしたらscamに見える気がするし。
その他の雑感
Zennなので技術的な話も書きたいがNext.jsとSupabaseを使っているただのSPAのWebサービスだからそんなに大してことをやっていなくて書くことがない。なのでちょっとだけ個人的な雑感でも書いておく。
このサービスはいわゆるDappではないと個人的には思っている。なぜならスマートコントラクトも書いていないしブロックチェーン自体への状態変更を伴うトランザクションも全く発生させていないからだ。
利用しているのは、ユーザーウォレットの署名機能と公開されているNFTのコントラクトのAPI(ownerOfやbalanceOf)だけである。その他、ユーザー情報(公開のウォレットアドレスのみ)やNFTの条件情報はオフチェーンで管理している。ブロックチェーンは全然使っていない。
どちらかというとこのサービスはブロックチェーンが広まっていく中で、クリプトウォレットを持つ人が増えたことを利用している。ウォレットは要は公開鍵と秘密鍵だから、それを一般の人が普通に持っていて、あらゆるものに簡単に署名出来るというのは嬉しいことだ。これはemailアドレスとパスワードをサービスごとに要求される現状のwebサービスの体験よりはウォレットのパスワードだけ覚えていれば良い分、幾分か楽である(一方で逆にウォレットがクラックされたら全て終わるのでユーザー側に管理責任を押し付けているとも言える。)
またブロックチェーンの性質上、そのウォレットアドレスから過去の取引履歴がわかるのでサービス事業者側にとっては苦労することなくユーザーのプロファイル情報が手に入るということでもあるので利用価値が高い。まぁ分かるといっても現実的には金持ちか否かくらいしかわからないだろうけども。
このように、誰でもウォレットを持っている世界が徐々に広まるとこういうことができるよねというのを実験的に試したのがこのサービスであるとも言えそう。
Tech側からはNFTがぶっ叩かれていたりする昨今ではあるが、ブロックチェーンを取り巻く技術的なあれこれ自体は面白いと思っているので今後もこういう実験的なサイトは作っていきたいと思う。ウォレットを持っていたりNFTを持っている人は試してみて下さい。
その他何かあれば@razokuloverにお願いします。
あと投げ銭はこちらへ
0xfB9AaE55f46F03a2FF53882b432Fbf52Fc6B668F
Discussion