はじめに
11/6まで行われていた東京web3ハッカソンに参加し、プロダクトを提出することができました。
軽く何を作ったかを書きます。
OrthoverseZero
開発したコード等は以下のリポジトリです。
https://github.com/oho-sugu/OrthoverseZero
以前PLATEAUハッカソンで開発したLITで、AR技術を利用したリアルメタバースの実現には、2つの大きな課題があるとしました。
世界規模のVPSと場所-コンテンツの権利の管理です。
現在、GoogleのGeospatial APIにより一つ目の課題がそれなりにクリアされたので、二つ目の、権利などを管理してどう場所に情報を紐付けるかということを考えてみます。
当初DNSのような仕組みを作ることで場所と情報をグローバルに結びつける仕組みが構築できないか?ということを考えていましたが、ENSという仕組みを知って、ブロックチェーン上にデータを記録するということが魅力的に思えてきました。
今回のハッカソンでは、そこに注力し、NFTコントラクトとして、場所と情報を結び付け、それをオーナーとなったユーザーが管理できる仕組みを構築してみました。
コントラクトの設計
ERC721Enumerableを継承して、各トークンにURLを記録、オーナーのみURLを変更できるようなコントラクトを作成しました。
トークンのIDには、ズームレベル20で区切ったタイルのタイルコードのXとYを合成したものを使います。
これにより、およそ日本付近では20m四方の矩形領域とURLを紐付けることができます。
ちなみに、総タイル数はおよそ一兆、デフォルト設定での全部mintした場合のコントラクトに入る手数料は百億Ether…のはずです。
クライアントアプリ
クライアントアプリでは、GeospatialAPIを利用して端末位置を推定します。そこから端末位置の空間IDを計算し、ブロックチェーン上の近傍のトークンを取得し、各トークンに紐付けられたURLから取得したコンテンツをレンダリングします。
コンテンツはHOMLという独自マークアップで記述されています。マークアップは、Mozilla発のA-Frameの記法に寄せて作っていますが、細部で違いがあります。
他
他にも、OpenStreetMapのタイルサーバーを自鯖に建てたり、メタデータのAPIを作って、OpenSeaで各トークンに地図が表示されるようにしたりなど、色々試してみました。
さーて、今年のアドベントカレンダーは?
と、ざっと書きたいことを整理していて、これは1エントリーでは足りないと思ったので、今年も一人アドベントカレンダーを走ろうと思います。今回のハッカソンでやったことを中心に、雑多なことを書いていこうと思います。
https://qiita.com/advent-calendar/2022/oho
完走できるかな?あんまり期待せずに生暖かく見守ってください。
※タイトルの元ネタは一兆じゃなくて千億だったか…百億ってので連想したので…