🚀
Astar NetworkでNFTを発行/配布するベストプラクティス
【結論】 Astar Network対応のプロバイダーサービス一覧
プロバイダーサービス | Astar対応 | 動作確認 | カスタマイズ性 |
---|---|---|---|
BLAST | ◯ | ◯ | ◯ |
Thirdweb | ◯ | ◯ | △ |
Alchemy | ◯ | × | × |
INFURA | × | × | × |
現状は細かくカスタマイズするならBLAST、NFT発行など決まっている場合はThirdwebといった感じの印象
BLASTでNFT発行
ダッシュボードからプロジェクトの作成してRPC URLを発行
サイトトップからアクセス
metamaskで認証
新しいアプリを作成
RPC URLをコピー
Contractの作成
BaseERC721.sol
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.17;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract BaseERC721 is ERC721Enumerable, Ownable {
using Strings for uint256;
//@param baseURI: url of base
string public baseURI;
//CONSTRUCTOR
constructor(
string memory _name,
string memory _symbol
) ERC721(_name, _symbol) {}
function tokenURI(
uint256 tokenId
) public view virtual override returns (string memory) {
require(
_exists(tokenId),
"ERC721Metadata: URI query for nonexistent token"
);
return baseURI;
}
function mint(address _receiver) public {
_mint(_receiver, totalSupply() + 1);
}
//SET
//@notice set BaseURI
function setBaseURI(string memory _newBaseURI) public onlyOwner {
baseURI = _newBaseURI;
}
}
scripts/deploy.ts
import { ethers } from "ethers";
import { BaseERC721 } from "../models/BaseERC721";
const RPC_URL = process.env.RPC_URL || "";
const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
async function main() {
// 接続先のプロバイダーを設定
const provider = new ethers.providers.JsonRpcProvider(RPC_URL);
// 秘密鍵を使って署名者を生成
const signer = new ethers.Wallet(PRIVATE_KEY, provider);
// ABIとバイトコードを設定
const Abi = BaseERC721.abi;
const Bytecode = BaseERC721.bytecode;
// コントラクトファクトリーを作成
const nftFactory = new ethers.ContractFactory(Abi, Bytecode, signer);
// コントラクトをデプロイ
const nft = await nftFactory.deploy();
// デプロイが完了するまで待機
await nft.deployed();
console.log(`BaseERC721 with deployed to ${nft.address}`);
}
// エラー処理
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
node scripts/deploy.ts
謝辞
こちらの記事は知り合いのエンジニアの方々に相談させて頂き、それらを元にZennとしてまとめました。この場を借りて感謝申し上げます🙇♂️
Discussion