NFT プロジェクトの開発、展開、立ち上げのプロセス (1)

この記事では、Mint の実際のユーザーが可能な限り成功できるように、コントラクト、バックエンド、フロントエンドの 3 つの側面から、NFT の配布段階で可能な限り公平にする方法について説明します。記事の構成は次のとおりです。

1. 契約

NFTの販売で最も議論されている問題は、次のように要約できます。

契約通話禁止

契約で他の契約者が Mint を呼び出すことを許可する場合、科学者が見せびらかす舞台になる可能性が高くなります。各アドレスが限定されている場合でも、Mint のエンジニアリング契約により、必要な数のアドレスを作成できます。

防止策: TX の送信元が販売コントラクトで受信した要求の送信元と一致しているかどうかを判断することで、他のコントラクトから呼び出されているかどうかを判断できます。たとえば、 Azuki での検証は次のようになります。

msg.sender 注:と の違いの例は、  tx.origin を使用したフィッシング(https://solidity-by-example.org/hacks/phishing-with-tx-origin/tx.origin ) にあります。 

ホワイトリストの検証

一般的なホワイトリストの検証方法は、次の 2 つのタイプに分けられます。

契約記録のホワイトリスト

ホワイトリストの数が少ないプロジェクトやマークルツリーに慣れていないプロジェクトでは、この方法が採用されるかもしれません. 利点は、ロジックがシンプルで、いつでも追加または削除できることです. 欠点も明らかです。つまり、プロジェクトの当事者は、ホワイトリスト データを変更するために料金を支払う必要があります。たとえば、Azuki では、ホワイトリストのアドレスとそれに対応する量を一括で設定でき、ガスの消費量は seedAllowlist Txを参照できます 。

例:あずきの種許可リスト

マークルプルーフの検証

より一般的で推奨される方法は、コントラクト検証マークルプルーフです。これは、オフチェーンで生成されたプルーフを送信することによってコントラクトで検証されます。このソリューションも何度も検証されており、実際のニーズを完全に満たすことができます. ホワイトリストアドレスの検証に加えて、ミントの数やエアドロップの数などの情報を追加することもできます.

ミント プロセスの間、ユーザーは、API を使用するか、ユーザーが自分で取得できるようにマークル ツリーを公開することで、プルーフを取得できます。次のリソースは、API の例を示しています。

参照用の多くの既製のソリューションを次に示します。リソースは次のとおりです。

  1. ビデオ チュートリアル:  OpenZeppelin による NFT Merkle Airdrop の構築
  2. ライブラリ:  Merkletreejs ライブラリ
  3. デモ:  nft-merkle-drop

予防:

  1. ホワイトリスト アドレスの判定: 一部のプロジェクトのホワイトリストは契約で偽物であり、検証されていません。
  2. ホワイトリスト ミント数量の判断: ミント数量はコントラクトに記録する必要があり、アドレスの balanceOf を使用して判断しないでください。そうしないと、ホワイトリストでミントが繰り返されるという問題が発生します。

署名パラメーターの検証

公開販売段階(非ホワイトリスト)では、ユーザーデータの正当性を検証するためにパラメータ検証が一般的に用いられますが、過去の事例からよく発生する問題は次のとおりです。

  1. パラメーター値の統一 すべてのユーザーが検証に同じパラメーター値を使用するため、ロボットのバッチ操作の難易度が低くなります。
  2. パラメータは事前​​に公開されますが、その名前が示すように、科学者が事前に検証パラメータを取得すると、ロボットを準備する十分な時間があります。
  3. 秘密鍵の漏えいは滅多に起こらないが、プロジェクト側も注意すべきこと フロントエンドで秘密鍵を公開せず、バックエンドで署名処理やパラメータ生成処理を行う。

パラメーター検証リンク、推奨開発モード:パラメーター検証リンクの推奨開発モードは、リプレイ攻撃を防ぐためにアドレスごとに異なる呼び出しパラメーターを生成します。

参照リソース:

次の 2 つの質問については、バックエンドの章で説明します。

コントラクト クローズド ソース

コントラクトが攻撃または悪用される可能性を減らすために、プロジェクトの当事者は、NFT 分野だけでなく、GameFi プロジェクトでも、コントラクトのソース コードを開示しないことを選択します。これがボット操作に対する適切な防御ではない場合、たとえば:

SuperGucci はクローズドソース契約 で販売されており、そのパラメーターは比較的単純であるため、賢い科学者や友人がそれを破ることは避けられませんが、それは時間の問題です。結局、あまりにも多くのチップが科学者によって奪われたため、最後のラウンドは宝くじに調整する必要がありました。チェーン上の呼び出しデータから、パラメーターはアドレスとは関係がなく、他に特別なパラメーターがないことがわかります。そのため、このタイプのコントラクトでは同じパラメーターで呼び出しをリプレイできます。

個人的には、このような売り方はお勧めしません.知名度の高いIPのないプロジェクトでは、オープンソースではないプロジェクトはユーザーに十分な信頼を与えることができません.Cryptoも同じではありません.

真に公正な販売を達成することは非常に複雑な問題であり、プロジェクト パーティはそのエネルギーのほとんどを技術レベルに集中させることができない場合があります。近い将来、アーティストやプロジェクト関係者がテクノロジーのさまざまな困難に直面することなく、作品のレベルにのみ集中すればよいように、比較的完全な販売プラットフォームが登場するでしょう。

NFTのリリースは、実はNFTプロジェクトのほんの一部であり、上記の注意事項以外にも、ロイヤリティの設定、契約、フロントエンドとバックエンドのテスト、NFTメタデータの展開、属性のランダム性と希少性、画像を開く機能 公平性、NFT 誓約メカニズムの設計、NFT 派生物の設計など

誰もがお気に入りの NFT に Mint できることを願っています。

おすすめ

転載: blog.csdn.net/xiaozhupeiqi321/article/details/125164591