[教程]Nft.storage使用教程

Nft.storage是一種存儲服務,可讓您免費上傳鏈下 NFT 數據,目標是將所有 NFT 數據存儲為公共產品。數據永久存儲在Filecoin去中心化存儲網絡中,並通過其唯一的內容ID通過IPFS提供。您可以上傳任意數量的數據,只要它是 NFT 的一部分(例如,代幣或其元數據中引用的元數據、圖像和其他資產),盡管目前每次上傳的限製為 31GiB。

Nft.storage對於正在鑄造 NFT 的個人創作者或希望支持創作者和收藏家的 NFT 工具開發人員特別有用!Nft.storage非常易於使用和集成,為您提供鑄造 NFT 時所需的上傳內容 ID,以使其真正不可變,並使您的數據高性能可用

**準備開始使用 Nft.storage?**按照此快速入門指南在幾分鐘內啟動並運行。在本指南中,我們將演練以下步驟:

  1. 創建一個 Nft.storage帳戶
  2. 通過網站上傳文件
  3. 通過NFTUp應用程序上傳文件和目錄
  4. 獲取免費的 API 令牌
  5. 使用 JavaScript API

**本指南使用 Node.js因為它是開始使用 NFT 的最快方法。存儲 JavaScript 客戶端以編程方式,**但如果 Node 不是你最喜歡的運行時環境,或者你寧願根本不做任何編碼,請不要擔心。您也可以使用 Nft.storage 通過以下方式:

  • 在 Web 瀏覽器中使用 JavaScript 客戶端。
  • 直接從 Nft.storage 上的「文件」頁面上傳和檢索文件。

您還可以通過任何可以發送 HTTP 請求的編程語言或工具直接使用 HTTP API

:bulb:

使用 HTTP API 時,請務必閱讀有關 CAR 文件的信息,了解如何支持大型上傳!

創建賬戶#

對於本指南,您需要一個 Nft.storage用於獲取 API 令牌和管理存儲數據的帳戶。您可以使用您的電子郵件地址或 GitHub 免費註冊。

  • 使用電子郵件註冊
  • 使用 Github 註冊
  1. 轉到 nft.storage/login 以開始使用。
  2. 輸入您的電子郵件地址。
  3. 檢查您的收件箱中是否有來自 Nft.storage 的驗證電子郵件。存儲,然後單擊電子郵件中的登錄按鈕。
  4. 一切就緒!

使用網站上傳文件#

登錄後,您就可以開始使用 Nft.storage。通過使用網站上傳文件立即存儲。

  1. 單擊**「File」**以轉到您的 Nft.storage文件列表頁
  2. 點擊Upload按鈕轉到文件上傳頁面
  3. 單擊**「Choose File」**按鈕以從設備中選擇一個文件:
  4. 如果您要上傳 CAR 文件,請勾選 「is CAR?」 復選框。
  5. 點擊Upload按鈕存儲您的文件!

上傳完成後,您將能夠在文件列表頁面中查看您的文件。

通過 NFTUp 應用程序上傳文件和目錄#

NFTUp 是內容創作者上傳其元數據和資產的最簡單方法,準備通過智能合約鑄造成 NFT,然後在市場上進行交易,並在畫廊中瀏覽。

  1. 下載並安裝適用於您的操作系統的 NFTUp
  2. 啟動應用程序。
  3. 將一些文件或文件夾拖放到上面。系統可能會提示您輸入 Nft.storage API 密鑰。您可以在帳戶頁面上獲取密鑰
  4. 上傳您想要的任何文件結構。如果您正在執行類似 HashLips 構建的操作,則可以通過將資產和元數據拖到上傳框中來同時上傳它們。
  5. 上傳完成後,您將獲得指向您的內容的鏈接。單擊它以從IPFS網絡獲取數據。
  6. 設置您的智能合約基礎 URL,或以其他方式與 NFT 鑄造服務共享您的內容。
  7. 在 GitHub 上做出貢獻

獲取 API 令牌#

只需幾分鐘即可從 NFT 獲得免費的 API 代幣。存儲。此令牌使您能夠與 NFT 交互。無需使用主網站的存儲服務,使您能夠合並使用 NFT 存儲的文件。直接存儲到您的應用程序和服務中。

  1. 點擊 API 密鑰轉到您的 Nft.storage帳戶頁
  2. 單擊創建 API 令牌
  3. 輸入 API 令牌的描述性名稱,然後單擊創建
  4. 記下**「令牌**」字段,在安全的地方,您知道不會丟失它。您可以單擊復製將新的 API 令牌復製到剪貼板。

:warning:

保持 API 令牌的私密性

不要與其他任何人共享您的 API 令牌。此密鑰特定於您的帳戶。

使用 JavaScript API#

如果您正在使用 JavaScript 或 TypeScript 構建應用程序,則為 Nft.storage JavaScript 客戶端使上傳文件和創建與 ERC-1155 兼容的 NFT 元數據變得簡單。

客戶端庫使用熟悉的 Web 文件 API,並包含 Node.js 的實現。下面是一個小示例,它從命令行讀取文件的路徑並將文件與 NFT 一起存儲。存儲。File

此示例需要 Node.js 版本 16 或更高版本。

  1. 創建一個新的 JavaScript 項目。

創建一個新目錄並用於創建新項目:npm

mkdir nft-storage-quickstartcd nft-storage-quickstartnpm init

NPM 將詢問有關您的項目的幾個問題並創建一個文件。package.json

  1. 將客戶端添加到項目依賴項。nft.storage

安裝最新版本的軟件包:nft.storage

npm install nft.storage

當我們使用它時,添加包,這將幫助我們猜測給定文件名的文件類型。mime

npm install mime
  1. 創建一個名為並使用代碼編輯器打開它的文件。upload.mjs

以下是我們需要上傳具有 ERC-1155 兼容 NFT 元數據的圖像的代碼。

粘貼下面的代碼並通讀。隨意刪除評論 - 它們只是為了突出正在發生的事情。

:warning:

確保將變量的值替換為您的 NFT。存儲 API 令牌。NFT_STORAGE_KEY

在實際應用中,應從未簽入源代碼管理的環境變量或配置文件中讀取令牌!

// Import the NFTStorage class and File constructor from the 'nft.storage' packageimport { NFTStorage, File } from 'nft.storage'
// The 'mime' npm package helps us set the correct file type on our File objectsimport mime from 'mime'
// The 'fs' builtin module on Node.js provides access to the file systemimport fs from 'fs'
// The 'path' module provides helpers for manipulating filesystem pathsimport path from 'path'
// Paste your NFT.Storage API key into the quotes:const NFT_STORAGE_KEY = 'REPLACE_ME_WITH_YOUR_KEY'
/**  * Reads an image file from `imagePath` and stores an NFT with the given name and description.  * @param {string} imagePath the path to an image file  * @param {string} name a name for the NFT  * @param {string} description a text description for the NFT  */async function storeNFT(imagePath, name, description) {    // load the file from disk    const image = await fileFromPath(imagePath)
    // create a new NFTStorage client using our API key    const nftstorage = new NFTStorage({ token: NFT_STORAGE_KEY })
    // call client.store, passing in the image & metadata    return nftstorage.store({        image,        name,        description,    })}
/**  * A helper to read a file from a location on disk and return a File object.  * Note that this reads the entire file into memory and should not be used for  * very large files.   * @param {string} filePath the path to a file to store  * @returns {File} a File object containing the file content  */async function fileFromPath(filePath) {    const content = await fs.promises.readFile(filePath)    const type = mime.getType(filePath)    return new File([content], path.basename(filePath), { type })}

/** * The main entry point for the script that checks the command line arguments and * calls storeNFT. *  * To simplify the example, we don't do any fancy command line parsing. Just three * positional arguments for imagePath, name, and description */async function main() {    const args = process.argv.slice(2)    if (args.length !== 3) {        console.error(`usage: ${process.argv[0]} ${process.argv[1]} <image-path> <name> <description>`)        process.exit(1)    }
    const [imagePath, name, description] = args    const result = await storeNFT(imagePath, name, description)    console.log(result)}
// Don't forget to actually call the main function!// We can't `await` things at the top level, so this adds// a .catch() to grab any errors and print them to the console.main()  .catch(err => {      console.error(err)      process.exit(1)  })
  1. 使用節點運行腳本

現在,您應該能夠運行腳本並為其提供圖像文件的路徑。您還需要提供 NFT 的名稱和描述。

在下面的示例中,我們假設在與腳本相同的目錄中調用了一個文件。如果文件位於其他位置,請替換為圖像的路徑。token.png token.png

node upload.mjs token.png 'A name for my token' 'A longer description for the token...'

請註意 和 周圍的引號。這會導致命令行 shell 將引用的文本視為單個參數,而不是每個單詞一個參數。由於我們的腳本只期望三個參數,因此如果其中有空格,則需要引用名稱和描述。'A name for my token' 'A longer description for the token...'

完成後,您應該會看到類似以下內容:

Token {
  ipnft: 'bafyreifrkkhbwkf3fibwhbzcmpqnmh3b4t5t4ig7qdtymkdoatcycwe6n4',
  url: 'ipfs://bafyreifrkkhbwkf3fibwhbzcmpqnmh3b4t5t4ig7qdtymkdoatcycwe6n4/metadata.json'
}

這是一個IPFS URL,可以使用Brave和其他IPFS感知工具和瀏覽器查看。有關訪問代幣數據的其他方法,請參閱官方的檢索 NFT 數據指南url