Twifag

Twifag

I'm just a guy who likes ponies and crypto. I also dabble in Solidity. twifag.eth | ipns://twifag.com/ | https://twifag/ | https://twifag.com/
twitter_id

NFTソーシャルメディアと検閲のリスク

最近、多くの新しい Web3 ソーシャルメディアサイトが登場しており、最も有望(または約束を暗示する)なのは、検閲に強いまたは完全に検閲不可能であることです。しかし、実際のところ、これらのネットワークのほとんどは、NFT トークン標準の実装方法のために、実際には検閲の対象となっています。

NFT とは?#

非代替性トークン(NFTは、Ethereum 仮想マシン(Ethereum、Polygon、Optimism など)上の契約であり、(最も一般的に)ERC-721またはERC-1155標準のいずれかを実装しています。これらの文書は、NFT と見なされるために契約が実装しなければならない最小仕様を説明しています。この文書の残りの部分では、NFT について話すときは、古くて広く実装されている NFT 標準である ERC-721 標準について話します。

NFT を代替可能なトークンから際立たせる最もユニークな 3 つの属性は、各 NFT がユニークな数値 ID で表されていること、NFT の分数部分が存在しないこと(1 つの半分を所有することはできない)、および各トークン契約がtokenURI()関数を実装していることです。

トークン URI とは?#

統一リソース指標(URIは、ウェブ技術によって使用される論理的または物理的リソースを識別する一意の文字列のシーケンスです。 私たちは通常、http://またはhttps://の URL(これは特定のタイプの URI であり、Wikipediaで詳細を学べます)を考え、NFT に関しては、tokenURI()関数によって返されるトークン URI は通常、これらのタイプの Web URL です。

上記の ERC-721 仕様は、NFT を説明するために使用されるトークンメタデータ標準も定義しています。これは通常、次のような Web サイトにホストされているJSONファイルを指します。

{
	"description": "これはこの特定のNFTの説明です。",
	"external_url": "https://example.com/",
	"image": "https://example.com/image.png",
	"name": "NFT名",
	"properties": {
		"anything": "値はここに入ります!"
	}
}

そのimageプロパティは、OpenSeaのようなサイトが通常、インターフェースで NFT を表示するために使用する画像を取得する方法であり、ほとんどの NFT が「アート」に関連付けられる方法です。descriptionフィールドも、同じサイトで NFT と一緒に表示されることがよくあります。

検閲のリスク#

多くの NFT ベースのソーシャルメディアサイトは、すべての投稿がブロックチェーンに保存されていると自慢し、検閲に強い。と主張します。しかし、残念ながら、これらの主張はしばしば正確ではありません。

上記のように、特定の NFT のtokenURI()は通常、ソーシャルメディアサイトが運営するWeb サーバーに存在します。この Web サーバーは、そのソーシャルメディアプラットフォームの直接の管理下にあるため、トークン URI リンクで返される JSON を好きなように変更できます。「ブロックチェーンに保存されている」または「検閲のない環境」であるどころか、これらのサイトは実際にはブロックチェーン上にデータを保存しておらず、検閲の対象となっています。

上記のtokenURI()関数によって返されるデータを再度確認してください。descriptionimageフィールドを思い出してください。これらは文字通りあなたのソーシャルメディア投稿の内容であり、ブロックチェーン上に存在する唯一のものは、その JSON ファイルを指す URI であり、そのファイルに対して好きなことができるソーシャルメディアサイトのサーバー上に存在します。

簡単のために、ほとんどの NFT は、あらかじめ決められた URL(例えばhttps://example.com/)とトークン ID(これは関数に唯一のパラメータとして渡されます)を連結する非常にシンプルなtokenURI()関数を実装しています。この方法では、NFT がミントされると、実際にはブロックチェーン上にほとんどデータが保存されません。本当に保存される唯一のものは、特定の ID を持つトークンがミントされたということです。

本当に検閲不可能な NFT#

検閲不可能な NFT を持つことは可能ですか?はい。すべてのデータが本当にブロックチェーン上に存在する NFT はどうですか?再びはい(いくつかの注意点があります)。以下で各質問を詳しく掘り下げてみましょう。

検閲不可能な NFT#

私たちは、分散型ファイルストレージIPFSArweaveなど)に関連する別の人気のある技術を活用することで、検閲不可能な NFT を作成できます。これらのサービスは、分散型で、より重要なことに、不変のデータストレージを提供します。したがって、理論的には、ソーシャルメディアアプリは NFT の作成時に JSON メタデータファイルを生成し、これらのプラットフォームの 1 つに保存し、その後 NFT 自体をミントし、適切なipfs://またはar://URI を渡してブロックチェーンに保存することができます。

これらのファイルストレージサービスは不変であるため、特定の URI に保存されたデータは変更または削除できません(小さな注意点:IPFS はガーベジコレクションを行い、「ピン留め」されていないファイルは削除される可能性があります。特定の NFT URI を生かしておくためには、自分で冗長的にピン留めすることができます。詳細はIPFS ドキュメントを参照してください)。

なぜこの方法がもっと一般的に使用されないのでしょうか?おそらく、生成されたすべての JSON ファイルを IPFS または Arweave にアップロードし、NFT 契約に適切なリンクを送信してそのリンクを保存する必要があるため、わずかに複雑さが増すからです。これにより、ミントトランザクションがより複雑になり、ガスコストが増加します。

すべてのデータをブロックチェーンに保存する#

私たちは、説明、画像 URI(上記で説明したように分散型ファイルストレージを使用するとボーナスポイント)、およびすべての属性を含むデータを NFT 契約のミント関数に渡すことで、すべての NFT データをブロックチェーンに保存できます。次に、これらのすべてはスマートコントラクト内にブロックチェーンに保存されなければなりません。tokenURI()関数が呼び出されると、これらのコンポーネントで構成されるBase64エンコードされたdata:URI を生成できます。OpenSea のようなサイトはこれらの URI を読み取り、適切にデータを表示します。

これの素晴らしい例は、特定のプールにおける保有者のポジションを表す NFT をミントする Uniswap V3 ポジション NFT 契約です。すべてのデータはブロックチェーン上に存在し、tokenURI()関数は次のようなものを返します。

data:application/json;base64,eyJuYW1lIjoiVW5pc3dhcCAtIDElIC0gTUFSRS9XRVRIIC0gMC4wMDEwMDgxPD45OT...

URI は約 13,000 文字の長さなので短縮しました!これは、説明、属性などがブロックチェーンに保存されるだけでなく、NFT 契約がトークンを表すために使用されるアニメーション SVG 画像も生成するためです。その後、この SVG を Base64 エンコードし、JSON ファイル内のフィールドとして使用し、再度 Base64 エンコードします!

以下は、デコードされた Uniswap V3 URI の例です。

{
	"name": "Uniswap - 1% - MARE/WETH - 0.0010081<>991430000000000000",
	"description": "このNFTはUniswap V3 MARE-WETHプールにおける流動性ポジションを表します。このNFTの所有者はポジションを変更または引き出すことができます。\n\nプールアドレス: 0x94adf857e6f0bdad207c9934a27a632b5cf29ca6\nMAREアドレス: 0xc5a1973e1f736e2ad991573f3649f4f4a44c3028\nWETHアドレス: 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2\n手数料ティア: 1%\nトークンID: 160857\n\n⚠️ 免責事項: このNFTを評価する際には、十分な注意が必要です。トークンアドレスが期待されるトークンと一致することを確認してください。トークンシンボルは模倣される可能性があります。",
	"image": "data:image/svg+xml;base64,PHN2ZyB3aWR..."
}

再度、imageフィールドの URI を短縮しました。これはほぼ 10,000 文字の長さです。

なぜもっと多くのプラットフォームがこの方法を使用しないのでしょうか?それは明らかです。すべてのデータをブロックチェーンに保存するコストは、特に Ethereum のようなネットワークでは非常に高額になるからです。

大きな注意点#

NFT 契約がすべてのメタデータを IPFS またはブロックチェーンに保存しているからといって、必ずしも検閲不可能であるとは限りません! トークン契約には、契約所有者がトークンの URI やブロックチェーンに保存されたメタデータを変更できる関数があるかもしれません。契約を常に注意深く確認するか、信頼できるソースを見つけるべきです。そして、ソースコードを公開していない契約を決して信頼しないでください!

NFT が検閲不可能かどうかを判断する方法#

NFT が検閲不可能かどうかはどうやって判断できますか?これは ERC-721 NFT の場合、比較的簡単です。NFT のページに移動し、下にスクロールして詳細セクションを展開し、興味のある特定のトークン ID をメモし、契約リンクをクリックします。

OpenSea 詳細例

これにより、ブロックチェーンエクスプローラーで契約が開きます。画面の半分ほど下にスクロールし、契約をクリックしてから、契約を読み取るをクリックします。

Etherscan 契約読み取り例

最後に、tokenURI()関数を見つけるまで下にスクロールし、クリックして、上でメモしたトークン ID を入力します。クエリボタンをクリックすると、トークンの URI が返されるはずです。

Etherscan tokenURI クエリ例

トークン URI がdata:ipfs://ipns://、またはar://で始まる場合、そのトークンは本当に検閲不可能です(おそらく、注意点を参照)。data:で始まる場合、そのトークンは実際にブロックチェーンに保存されています!

結論#

この情報が NFT とは何か、そしてそれらがどのように検閲される可能性があるかを理解するのに役立ったことを願っています。このトピックに関して、実際に検閲可能な NFT 契約の例を書き、その検閲方法を示す投稿をいくつか作成するアイデアがあります。おそらく、人々が自分の検閲可能な NFT のコピーをミントできるようにし、私がそれを検閲するのを見守ることができるようにします。その後、検閲不可能なバージョンを作成できます。

この小さな記事についての感想や質問があれば、ここにコメントを残してください。私はAuthencityMastodonで連絡を取ることができます。

編集済み: この記事の以前のバージョンでは、Authencity が投稿のすべてのデータをブロックチェーンに保存していないと述べていました。Authencity の Marc が私に連絡を取り、getTokenData()という非標準関数を指摘し、実際に契約が投稿のすべてのデータをブロックチェーンに保存していることを証明しているようです。この点を見逃したことをお詫び申し上げ、その声明を撤回します。記事は適切に編集されています。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。