前言
本文為「Solana 開發者的入門指南」影片的學習筆記。
建立專案
建立專案。
1 | mkdir solana-nft-example |
前置作業
建立錢包
到 Arweave Faucet 頁面進行身份驗證,再下載錢包,匯入 keyfile 檔案。
下載素材
安裝 gdown
下載工具。
1 | pip install gdown |
建立資料夾。
1 | mkdir sandbox |
下載素材。
1 | gdown --folder https://drive.google.com/drive/folders/1RLz4J7TTh9cnXKWJlUb6_SC5dSnDYiBL -O sandbox/background |
安裝素材引擎
下載 hashlips_art_engine
專案。
1 | git clone https://github.com/HashLips/hashlips_art_engine.git |
安裝依賴套件。
1 | yarn |
回到專案目錄。
1 | cd .. |
安裝上傳工具
下載 arweave-image-uploader
專案。
1 | git clone https://github.com/thuglabs/arweave-image-uploader.git |
安裝依賴套件。
1 | yarn |
回到專案目錄。
1 | cd .. |
安裝鑄造工具
安裝 metaboss
指令,是一個 Solana Metaplex NFT 鑄造工具。
1 | cargo install --locked metaboss |
查看版本。
1 | metaboss --version |
安裝 Proxy 工具
安裝 Proxyman 應用程式。
建立圖片
修改 hashlips_art_engine/src/main.js
檔。
1 | // ... |
修改 hashlips_art_engine/src/config.js
檔。
1 | // ... |
刪除預設的 hashlips_art_engine/layers
資料夾。
1 | rm -rf hashlips_art_engine/layers |
將素材複製到 hashlips_art_engine/layers
資料夾。
1 | cp -r sandbox ./hashlips_art_engine/layers |
修改素材的檔案名稱,使用 #
符號代表機率的權重。
1 | mv hashlips_art_engine/layers/background/bg1.png hashlips_art_engine/layers/background/bg1#1.png |
產生圖片。
1 | cd hashlips_art_engine |
輸出結果如下。
1 | Created edition: 0, with DNA: b3f8f58560a52473411e20f051744158840d84c0 |
查看產生各個配件的機率,可以執行以下指令。
1 | yarn rarity |
上傳圖片
進到 arweave-image-uploader
資料夾。
1 | cd arweave-image-uploader |
安裝 dotenv
套件。
1 | yarn add dotenv |
新增 .env
檔,將 Arweave 錢包的 keyfile 檔案的內容貼上。
1 | KEY={"kty":"RSA","e":"...","n":"..."} |
查看本地錢包地址。
1 | solana address |
更新 arweave-image-uploader/uploader.js
檔,並且修改 address
參數為自己的錢包地址。
1 | import fs from "fs"; |
刪除預設圖片。
1 | rm -rf public/images |
複製生成圖片。
1 | cp -r ../hashlips_art_engine/build/images/ public/images/ |
複製 _metadata.csv
檔。
1 | cp ../hashlips_art_engine/build/_metadata.csv public/data.csv |
上傳圖片。
1 | yarn upload |
輸出結果如下:
1 | { |
鑄造
使用 mainnet-fork
網路測試。
1 | solana config set --url https://rpc-mainnet-fork.epochs.studio |
1 | mkdir mint |
新增 mint.js
檔。
1 | const fs = require("fs"); |
執行以下指令。
1 | KEYPAIR=~/.config/solana/id.json RECEIVER=<RECEIVER_ADDRESS> AUTHORITY=<RECEIVER_ADDRESS> node mint.js |