Open ma96o opened 2 years ago
ERC721に準拠したシンプルなNFTを実装する際,OpenZeppelin を利用するのがデファクトスタンダード. OpenZeppelin は Presets というコントラクトテンプレートを提供してくれているので,開発が楽に済む上に脆弱性の観点からも安心できる.
ERC721に準拠したOpenZeppelin の Presets が ERC721PresetMinterPauserAutoId である.
ERC721PresetMinterPauserAutoId
Docs: Presets - OpenZeppelin Docs
source code: openzeppelin-contracts/ERC721PresetMinterPauserAutoId.sol at master · OpenZeppelin/openzeppelin-contracts
ERC721PresetMinterPauserAutoIdでは、ERC721 で提供される機能に加えて,さまざまな関数が Interface として定義されている.
その一例が以下.
特に,ロール を付与して指定したアカウントに対して,アクション権限を付与できるのが特徴的である.
これは,AccessControl というモジュールを使用することで可能にしている.
コントラクトをデプロイするアカウントには,minter と pauser のロール,そしてデフォルトの admin ロールが付与され,他のアカウントに minter と pauser の両方のロールを付与できる.
NFT を発行するために提供される基本的な機能は以下.
ERC721に準拠したシンプルなNFTを実装する際,OpenZeppelin を利用するのがデファクトスタンダード. OpenZeppelin は Presets というコントラクトテンプレートを提供してくれているので,開発が楽に済む上に脆弱性の観点からも安心できる.
ERC721に準拠したOpenZeppelin の Presets が
ERC721PresetMinterPauserAutoId
である.Docs: Presets - OpenZeppelin Docs
source code: openzeppelin-contracts/ERC721PresetMinterPauserAutoId.sol at master · OpenZeppelin/openzeppelin-contracts
ERC721PresetMinterPauserAutoIdでは、ERC721 で提供される機能に加えて,さまざまな関数が Interface として定義されている.
その一例が以下.
特に,ロール を付与して指定したアカウントに対して,アクション権限を付与できるのが特徴的である.
これは,AccessControl というモジュールを使用することで可能にしている.
コントラクトをデプロイするアカウントには,minter と pauser のロール,そしてデフォルトの admin ロールが付与され,他のアカウントに minter と pauser の両方のロールを付与できる.
NFT を発行するために提供される基本的な機能は以下.