Photo by Alexander Elliott
IPFS を放棄し、AR を受け入れる 💮
このチュートリアルでは、IPFS を放棄し、AR を使用して NFT を作成する方法を説明します。
最終結果の表示: こちらをクリック
ArDrive の準備#
-
0.2AR を無料で体験できます。手順は ArDrive 公式サイト を参考にしてください。ツイートを投稿し、小さなアカウントは認証が難しいですが、0.2AR を受け取ることができます。このステップを完了すると、ウォレットの秘密鍵に関する情報が記載された json ファイルが得られます。
-
完了したら、ArConnectを使用して、ダウンロードした Json ファイルをインポートします。以下の手順を参照してください。
-
ウォレットのインポートが成功したら、https://app.ardrive.io/ にログインして、ここで登録できます。
ユーザー名とパスワードを提供して登録してください。
ArDrive の使用#
-
Drive と Folder、Drive の中には多くの Folder があります。Drive を他の人と共有することもできます。注意 ⚠️ Drive を作成する際には、Public または Private を選択する必要があります。Public と Private の詳細はこちらを参照してください。文字通り理解すれば大丈夫です。
- 各 Drive と Folder にはそれぞれ一意の識別子があります。
https://app.ardrive.io/#/drives/ee70c85b-f140-49c7-80b1-856625fcb103/folders/77c4b073-5ce5-4f5a-bd59-b3a14e29a68d
例えばこのリンクのように、- FolderID=
77c4b073-5ce5-4f5a-bd59-b3a14e29a68d
は後でアップロード時に使用します。アップロードする FolderID を指定する必要があります。 - DriveID=
ee70c85b-f140-49c7-80b1-856625fcb103
- FolderID=
- 各 Drive と Folder にはそれぞれ一意の識別子があります。
-
通常通りデータをアップロードします。画像をアップロードした後、次のような表示が得られます。DataID を取得したら、このゲートウェイ➕dataID でアクセスできます。例えば https://arweave.net/l1n24_cORIcDAOkzFc0I1IWs2qvv-eelHp4Qgb1f9vk
NFT#
-
画像をアップロード
-
このステップに到達したら、画像を AR にアップロードし、対応する DataID を取得できます。
const { readJWKFile, arDriveFactory, wrapFileOrFolder, EID } = require('ardrive-core-js'); // walletはあなたのjsonファイル、ダウンロードしたものです // filePathはpngのパスです // FolderIDは上で示したものです async function upload(wallet, filePath, folderID){ const arDrive = arDriveFactory({ wallet: wallet }); const wrappedEntity = wrapFileOrFolder(filePath); const destFolderId = EID(folderID); const uploadFileResult = await arDrive.uploadAllEntities({ entitiesToUpload: [{ wrappedEntity, destFolderId }] }); let {created} = uploadFileResult; // 返されるのはDataIDです return created[0].dataTxId.transactionId; }
-
画像を 1 枚アップロードするごとに、dataID が返され、JsonFile が生成されます。
{ "name":"name #0", "description":"balabala.", "traits":[ {"trait_type":"backgroud","value":"blue"}, {"trait_type":"body","value":"body"}, {"trait_type":"eye","value":"happy"}, {"trait_type":"hat","value":"hat"}, {"trait_type":"clothes","value":"hoodie_B"}, {"trait_type":"plant","value":"alsophilaspinulosa"} ], "image":"https://arweave.net/l1n24_cORIcDAOkzFc0I1IWs2qvv-eelHp4Qgb1f9vk"}
-
ここで費用について説明します。各 tx には 2 つのフィールドがあり、費用に関連しています。例えばこのtx 👈
- Fee: このファイルの保存にかかる費用、つまりファイル保存の大部分です 🤕 上記の tx は 655kb の png に対応し、Fee は 0.000109AR です。
Fee の観点から見ると、全体的に Pinata よりも安いですが、Infura の価格は少し良いですが、Infura のアクセスは非常に遅いです。
- Value: このフィールドは eth 上の value フィールドに似ていますが、ガスもここに含まれます。
- Fee: このファイルの保存にかかる費用、つまりファイル保存の大部分です 🤕 上記の tx は 655kb の png に対応し、Fee は 0.000109AR です。
-
-
ディレクトリ形式で json ファイルをアップロード
-
すべての png をアップロードした後、たくさんの json ファイルが 1 つのディレクトリにあります。
-
この時点で私たちがやるべきことは ディレクトリとしてアクセス可能な形式 でこれらの jsonFile をアップロードすることです。
-
2 つの方法があります。
- 注意 aruploadは json のフォルダで、wallet.json にはウォレットの秘密鍵などの情報が含まれています [最初にダウンロードした json ファイル🍎]
- 自分で置き換えてください。
-
簡単な方法:サードパーティを利用する、参考にするのはこのarkb github、これは 10% の追加費用がかかるようです。
-
npm install -g arkb
グローバルにインストールした後 -
arkb deploy ./arupload/ --wallet ./wallet.json
このコマンドでアップロードできます。 -
アップロードが完了すると、次の画像が返されます。
この url にサフィックスを追加すると、例えば https://arweave.net/8qWYL9oyX5oPU9dwMHWii8ZlonEYatK-P2k_RXpfbs4/1.json にアクセスできます。
-
-
複雑な方法:よりネイティブで、AR 自身のこのセットです。参考にするのはardrive-cli github
-
npm install -g ardrive-cli
-
ardrive upload-file --local-path ./arupload/ --parent-folder-id "2639094e-cb4a-4546-b5fb-f582db582fae" -w ./wallet.json
注意ここでの parent-folder-id パラメータ、これは上で述べた FolderID です。
-
ardrive create-manifest -f "2639094e-cb4a-4546-b5fb-f582db582fae" -w ./wallet.json
同様にここで -f も folderID です。
-
アップロードが完了すると、次の画像が返されます。
-
この url にサフィックスを追加すると、例えば https://arweave.net/ruwoIvbk7oLa87xKUTd-_DY4MGJ6UR8iWEE3egRkfOI/arupload/1.json にアクセスできます。
-
-
-
基本的にここで終了です。etherscan で tokenURI を設定するだけです。形式: ar//《Path》 例えば上記の複雑な赤枠の値に基づいて、設定は: ar://ruwoIvbk7oLa87xKUTd-_DY4MGJ6UR8iWEE3egRkfOI/arupload/ になります。
参考文献#
https://mirror.xyz/pfeffunit.eth/iLX1IKglGDxRTufg64RdYJCrNRAMIogmLhfdJ6ZAXUY
https://blog.developerdao.com/getting-started-with-arweave#heading-introduction-to-arweave