見出し画像

世界初のDAM(Decentralized Autonomous Marketplace)を開発!

Decentralized Autonomous Marketplace(DAM)とは、ブロックチェーン上で自律的に動くスマートコントラクトにより、デジタルコンテンツ(画像、映像、音楽など)の売上の分配を自動的に行う仕組みのことです。

人手を一切必要としないため、中抜きが不要で、売上の大半をクリエーターに渡すことが出来ます。分配の条件もスマートコントラクトに記述してあるため、全てが透明化され、どんな比率で分配されるのかが容易に確認出来ます。

売上のクリエーターへの分配は、売り上げが生じたトランザクション内で行うため、売上の分配は即時に行われるし、分配に必要なガス代は、コンテンツの購入者が負担します。

売上およびその分配の履歴は、ブロックチェーン上のトランザクションとして記録されるため、売上が誰にどう分配されたのかも透明化されます。結果として、大した価値を提供しない仲介者が大きな手数料を取る様なマーケットプレースは自動的に淘汰されます。

正しく作られたDAMは、運営者なしに自律的に動くため、開発者が何もしなくても永続的に動き続けます。一度デプロイされたスマートコントラクトが永遠に価値を提供し続ける、良い例です。

DAMの運営はDAOがすべきだと考える人がいるかも知れないがそれは、ものごとを複雑にするだけです。DAMのルールを決めるのはスマートコントラクトであり、妙な権限を持ったDAOの存在は、DAMの純粋さを失わせることになります。

私が作っているDAM(世界初のDAM)については、このドキュメントに丁寧に書いてあるので、是非とも読んで欲しいです。

以下 DeepLによる翻訳

オンチェーン アセットストア、コンポーザー、そして分散型自律マーケットプレイス

このドキュメントは、Decentralized Autonomous Marketplace(分散型自律マーケットプレイス)のビジョンとミッションと、私たちがイーサリウムオンチェーン上で実装しているSVG画像圧縮、オンチェーン・アセットストア、クラウド・ミンティング、Draw2Earnアプリなどの技術や方法を説明したドキュメントです。

フルオンチェーンであることの重要性

分散化はWeb3の基本的な価値の1つですが、ほとんどのNFT(BAYCやAzukiなどの優良NFTを含む)は、メタデータや画像をHTTPサーバーかIPFSなどに保存し、フルオンチェーンではありません。

これらのNFTは、NFTプロバイダーが存在しなくなるか、単にそのNFTのサポートを停止するとNFTのデジタルコンテンツにアクセスできなくなります。

つまり、これらのNFTはあなたのものではなく、多くのWeb2サービスと同様、NFTプロバイダーの管理下にあるのです。Web2.5のNFTのようなものです。

一方、NounsのようなフルオンチェーンNFTは、ブロックチェーンが存在する限り、今から100年後も「存在」することが保証されています。

つまり、それらのフルオンチェーンNFTの唯一の所有者はあなたであり、誰もあなたからそれを奪うことはできないのです。「フルオンチェーンNFT」とは「分散型NFT」を意味し、これぞWeb3の精神と言えます。

EtherscanのtokenURI()メソッドを呼び出すことで、あなたのNFTがフルオンチェーンかどうかを簡単に確認することができます。URLが「http:」または「ipfs:」で始まっている場合、それらはフルオンチェーンNFTではありません。真の分散型NFTコントラクトのtokenURIメソッドは常に「data:」URLを返し、これはそのメタデータと画像がオンチェーンに保存されていることの証明になります。

技術的課題

これほど重要であるにもかかわらず、なぜこれほど多くのNFTがフルオンチェーンでないのでしょうか。答えは簡単で、大容量データをフルオンチェーンに保存するためのガス代(コスト)がかかるからです。

この問題を回避するための取り組みも行われていますが、技術的な課題も多くあります。

Nounsは数少ない優良NFTの1つであり、フルオンチェーン化を実現しています。画像の解像度を32×32ピクセルまで下げ、高度に圧縮したバイナリデータとしてオンチェーンに保存することで、これを実現しています。

サイバーブローカーズは、リッチグラフィックスをオンチェーンで保存する最初の(そしておそらく唯一の)プロジェクトですが、彼らは大規模なSVGデータのセットをイーサリウムブロックチェーン上にアップロードするために20万ドル以上を費やす必要がありました(この話については、素晴らしいポッドキャストが利用可能です)。

Art Blocksはジェネレーティブ アートを公開するための素晴らしいプラットフォームですが、Solidityはジェネレーティブ アートのための理想的なプラットフォームではありません(まだ)
妥協案として、JavaScriptを使用してオフチェーンでアートを生成し、それらのスクリプトをチェーン上に保存し(オンチェーンでは決して実行しない)、HTTPサーバーを使用してメタデータと生成された画像を保存しているのです。

ビジョンとミッション

このような現状を踏まえ、私たちは、オンチェーン上でベクター画像などのデジタルコンテンツ(アセット)を保存し、アセットの共有、リミックスをより簡単かつ安価に実現する一連の技術と仕組みを構築し、リッチなグラフィックスによるフルオンチェーンNFTを可能にすることを目的としています。

私たちはベクター画像などのデジタルコンテンツ(アセット)をリミックス可能とし、リミックスを奨励しながらクリエイターが自分の作品から収益を得ることができる分散型自律マーケットプレイス(スマートコントラクトで自動化)を構築する必要があると信じています。

私たちのアプローチ

私たちが構築している分散型自律マーケットプレイスに関連するスマートコントラクトの技術や仕組みの一覧です。

SVG Compression (Deployed)

SVGはベクター画像データを作成するための業界標準ですが、生のSVGデータは非常に冗長であり、ブロックチェーン上の保存形式としては適していません。

様々なプロトタイプを経て、我々は以下の手順でSVGデータを圧縮することを選択しました。

1.すべてのSVG要素を「パス」要素に変換し、要素の種類(「rect」や「circle」など)を指定する必要がないようにします。
2.表示領域を大きく固定し、浮動小数点数を整数に変換する(整数値正規化)。
3.「path」要素の「d」属性のみを抽出し、SVGタグを完全に排除します。
4.”d "属性に含まれる一連のデータ(コマンドとそのパラメータ)を、12ビットのバイトコードに圧縮する。
5.このバイトコードでは、コマンド(「M」や「C」など)は単純に12ビットに展開し(上位4ビットはすべて0)、パラメータ(-1023〜1023の数値)はN+1024+256に変換する(上位4ビットは0以外)。

// Original (368 bytes)
<svg viewBox="0 0 793 793"  xmlns="http://www.w3.org/2000/svg">
  <path d="m 478.845,139.593 c -26.052,-8.349 -53.836,-12.844 -82.656,-12.844 -26.844,0 -52.789,3.901 -77.278,11.177 l 18.825,60.5 c 18.536,-5.409 38.164,-8.306 58.453,-8.306 21.796,0 42.836,3.352 62.601,9.568 z"
   style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</svg>

// Integer-Normalized (263 bytes)
<svg viewBox="0 0 1024 1024"  xmlns="http://www.w3.org/2000/svg">
  <path d="m 618 180 c -34 -11 -70 -17 -107 -17 -35 0 -68 5 -100 14 l 24 78 c 24 -7 49 -11 75 -11 28 0 55 4 81 12 z" 
   style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</svg>

// Path Extracted (105 bytes)
"m 618 180 c -34 -11 -70 -17 -107 -17 -35 0 -68 5 -100 14 l 24 78 c 24 -7 49 -11 75 -11 28 0 55 4 81 12 z"

// Bytecode (50bytes)
0x6d,0x70,0x6a,0xb4,0x5,0x63,0xde,0x44,0xf5,0xba,0x44,0xef,0x95,0x44,0xef,0xdd,0x54,0x0,0xbc,0x54,0x5,0x9c,0x54,0xe,0x6c,0x50,0x18,0x4e,0x5,0x63,0x18,0x45,0xf9,0x31,0x45,0xf5,0x4b,0x45,0xf5,0x1c,0x55,0x0,0x37,0x55,0x4,0x51,0x55,0xc,0x7a,0x0

スマートコントラクト(後述のオンチェーンアセットストア)にデータを渡す前に、このエンコードをオフチェーン(TypeScript)で行います。createMethod.tsのcompressPathメソッドを参照してください。

デコード(画像の解凍)は、tokenURIやgenerateSVGPartなどの「ビュー」メソッドでオンチェーンに行われます(Solidityの場合)
その「ビュー」メソッドに関連付けられている「ガスコスト」がないにもかかわらず、「ビュー」メソッドの実行コストが高いと(計算コスト、計算時間)タイムアウトまたはガス制限が発生し、オンチェーンでの画像が取得できなくなることがあります。それを避けるため「ビュー」メソッドの効率的な実装はとても重要です。SVGPathDecoderA の decodePath() メソッドを参照してください。

On-Chain Asset Store (Deployed)

オンチェーン・アセットストアはスマートコントラクトで、パブリックなオンチェーン・アセットストレージサービスとして、開発者がベクターアセットを保存・共有できるようにするためのものです。

様々なベクターデータを上記の圧縮形式で保存し、Unity 3Dエンジンのアセットストアと同様に、他のスマートコントラクトから利用できるようにします。

詳しくはAssetStore.solをご覧ください。

Crowd Minting (deployed)

「クラウド・ミンティング」は、フルオンチェーンなNFTコレクションを発行する際に、開発者がブロックチェーンにデータを書き込む多額の費用(NFTを構成するための初期費用。ちょうどサイバーブローカーズの開発者が行ったように)を負担しないための方法です。

開発者がブロックチェーンにデータをアップロードする代わりに、各NFTのミンターにはミント中に必要なベクターデータをブロックチェーンにアップロードしてもらいます。ミント時にミント費用とは別にアップロードに必要な少額の追加ガス料金を支払ってもらいます。

これはmintWithAsset()メソッドを呼び出すことで行われ、オンチェーン・アセット・ストアにベクターデータをアップロード、保存し、ミンターにNFT(複数可)を発行します。

私たちはクラウドミントを利用して3つのNFTコレクション(Material IconsKamon SymbolsEmoji Flags)を発売し、1,400以上のベクター画像をイーサリアムブロックチェーンにアップロードすることに成功しました。

また、そのミンターに追加で報酬(アフェリエイト)を与えるアイデアも生まれました。以下の「Draw2Earn」の項目をご覧ください。

参考実装として、KamonToken.solのmintWithAsset()メソッドをご覧ください。

Asset Composer (beta testing)

アセットコンポーザーはスマートコントラクトで、アセットプロバイダ(後述)が提供する既存のベクターアセットをリミックスして、新しいベクターアセットを作成することができるようにするものです。

アセットコンポーザーは、アセットプロバイダーとしても機能し、アセットとしてコンポジションを提供します。コンポジションが(マーケットプレイスから)収益を得ると、アセットコンポーザーはそれを適切なアセットプロバイダーに自律的に配布します。

Asset Composer の現在のバージョンは、こちらでご覧になれます。

Asset Providers (Beta testing)

アセット・プロバイダーはスマート・コントラクトの新しいカテゴリーで、それぞれがベクター・アセットのセットを提供します。これらのアセットは、オンチェーンに保存されるか、動的に生成されるか、またはそれらの組み合わせのいずれかです。

Asset Composerは、オンチェーン・ベクター・エディター(後述)を使用して新しい画像を作成する際に、ユーザーが利用可能なアセットを簡単に発見できるように、これらのアセット・プロバイダーの登録メカニズムとして機能します。

各アセットプロバイダーは、IAssetProviderインターフェースを実装しています。このインターフェースは、他のスマートコントラクトがアセットプロバイダからベクターアセットを取得することを可能にします。また、後述のDraw2Earnアプリケーションのような自律的なマーケットプレイスのための、支払いメカニズムも備えています。

参考実装として、NounsDescriptorのラッパーであるNounsAssetProviderを作成し、動的に生成されるNounsキャラクタをアセットとして提供します。

On-Chain Vector Editor (Beta testing)

On-Chain Vector Editorは、Asset ComposerのWebUIフロントエンドで、クリエイターがAdobe Illustratorのように既存のベクターアセットを描画・合成して新しい画像をオーサリングし、NFTとしてミントすることができます。

On-Chain Vector Editorのソースコードは、On-Chain AsstStoreのWebUIフロントエンドの一部となっています。

Draw2Earn (beta testing)

上記のOn-Chain Vector Editorの開発中に、Draw2Earnのアプリケーションとしてリリースすることを思いつきました。

以下はそのビジネスモデルです。

1.ゼロから新しい作品を作成しNFTとしてミントするのは無料です。ミンターは、作品のベクターデータをブロックチェーンにアップロードするためのガス代だけを支払えば良いです。

2.アセットプロバイダーが提供するアセット(作品、画像素材)を使って作品を作成しNFTとしてミントすることは無料ではありません。私たちは少額(おそらく〜0.02ETH)を課金し、そのほとんど(97.5%)をアセットプロバイダーを通じてこれらのアセットのクリエーターとミンターに分配します。

3.リミックスされた資産が複数の資産の合成である場合、私たちは支払いを再帰的に分配し、各レベルで均等に分配します。

X2Earnのサービスの多くは、アプリ専用通貨を導入し、アプリ専用通貨でユーザーに報酬を支払うことで、開発者がすべての収益を確保できるようになっていることを私たちは知っています。

この方法は、いわゆるトークンエコノミーを生み出し、開発者がその経済の中央銀行としてお金を印刷する力を与えることになります。

私たちはこのような方法をとらないことにしました。なぜなら、この方法は、サービスを魅力的に維持するために無限の成長を必要とする、ネズミ講のようになってしまうからです。

私たちは、クリエイターへの直接的かつ即時の収益分配(自律的な収益分配メカニズムによる)が、誰にとっても公平であり、健全で持続可能なエコシステムを構築するためのより良いメカニズムであると信じています。

CC-Share-Earnings (draft proposal)

Draw2Earnのビジネスモデルの開発過程において、私たちは、オンチェーンアセット(ベクター画像など、ただしこれに限定されない)に適した新しい種類のクリエイティブ・コモンズ・ライセンス、CC-Share-Earningsが必要であることに気づきました。

このライセンスは、通常のクリエイティブ・コモンズと同様に、他の人がコピーやリミックスをすることを許可しますが、誰かがそれを使って収益を上げる場合には、収益の共有が必要になります。

以上のように、IAssetProviderインターフェースには、収益分配の仕組み(processPayoutメソッド)が組み込まれており、ベクター資産を売買する自律的なマーケットプレイスを作ることができる。

画像だけでなく、音楽や動画など様々なオンチェーンコンテンツの収益を共有するための標準的な仕組みとして提案していきたいと考えています。

Generative Asset Providers (work in progress)

アセットプロバイダーの項で説明したように、IAssetProviderインターフェースをサポートするスマートコントラクトであれば、アセットコンポーザーにアセットプロバイダーとして登録し、収入を得ることができるようになる。

これは、ジェネレーティブアートの制作に興味のある開発者にとって、新たなビジネスチャンスとなります。

開発者がこの市場に参入しやすくするために、私たちはライブラリやサンプルコードを作っています。SplatterProviderはスマートコントラクトのサンプルの一つで、プログラムによって画像を生成します(下記参照)。

私たちは、この取り組みに参加する他の開発者を募りたいと考えています。もし興味があれば、On-Chain Asset Storeのディスコードに参加してください。

Decentralized Autonomous Marketplace

上記のように、私たちは、デザイナー、リミキサー、クラウドミンター、開発者が収入を得ることができるデジタル資産の分散型自律マーケットプレイス(DAM)を設計し、実装しています。

ブロックチェーン(イーサリアムメインネット)に大量のデータを保存するには高いガス代がかかるため、このマーケットプレイスが果たせる役割は現時点(2022年)では限定的である。

しかし、この問題はいずれ解決され、この分散型自律マーケットプレイスは、オンチェーンデジタル資産の健全なエコシステムを構築するために重要な役割を果たすことができると考えています。


分散型自律マーケットプレイス

ブロックチェーンはサトシ・ナカモトからの贈り物ですが、私たちの社会に大きな価値を提供し、私たちのビジネス慣習やライフスタイルさえも変えてしまうようなキラーアプリケーションは、まだ見つかっていないのです。

今回は、そのようなキラーアプリケーションになる可能性を秘めた、分散型自律マーケットプレイス(Decentralized Autonomous Marketplace, DAM)というアイデアを紹介したいと思います。

ここで、Decentralized Autonomous Marketplace (DAM)の定義を説明します。

1.DAMとは、画像、動画、音楽、3Dモデル、あるいはデータセットなどのデジタルアセット(=コンテンツ)のマーケットプレイスである。
2.DAM上のすべての販売取引は、そのスマートコントラクトによって自律的に処理されます。
3.そのスマートコントラクトは、(クリエイターや他の貢献者間の)収益分配ルールを定義します。
4.収益の分配は、各販売取引の一部として即座に行われる。
5.必要なガス料金(収益分配を含む)はすべて買い手によって支払われます。
6.収益分配の受取人は、独自の収益分配ルール(ネストされた収益分配)を持つ別のスマートコントラクトになる可能性があります。

すべての販売取引と関連する収益分配は、そのスマートコントラクトによって自律的に処理されるため、DAMは既存のマーケットプレイスと比べていくつかの利点があります。

1.運用コスト不要
2.中間業者不要   
3.サーバーコスト不要
4.中央機関なし(完全分散型)
5.透明性の高い収益分配ルール
6.即時の収益分配
7.収益分配の公開記録
8.監査コストゼロ
9.永続的なサービス(ブロックチェーンが存在する限り)

私は、Web3やCreative Commonsのような無許可のリミックス文化を消費者が享受できるようにしながら、クリエイター(アーティスト、ミュージシャン、映画制作者、電子開発者など)がそこから大きな収入を得られる、「クリエイター中心」のエコシステムを作れる可能性があると信じています。

私は、クリエイターが自分のベクタードローイングをオンチェーン・アセットストアに公開し、そこから収益を得られるようにするDAMの最初のインスタンスを開発しています(Draw2Earnアプリケーション)。

詳しくは、オンチェーン・アセットストア、コンポーザー、分散型自律マーケットプレイス(上記掲載・DeepL訳)をご覧ください。

(DeepLによる翻訳)


おわりに
シンギュラリティ・ソサエティでは、テクノロジーがどのように社会に影響を与えるか、様々な議論をしています。 DAOなどに代表されるブロックチェーンやスマートコントラクトのテクノロジーは、社会や経済の仕組みをコード化し、透明且つ効率に仕組みに刷新する可能性を秘めています。
現在、シンギュラリティ・ソサエティでは、DAOやDeFi、Smart Contractなどの勉強や開発、NounsDAOへのプロポーザルプロジェクトなど、Web3の活動も行っています。今後もこれらに関する記事を発信していきますのでお楽しみに!


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