ma96o / gialog

MIT License
0 stars 0 forks source link

0805 _ ERC721PresetMinterPauserAutoId #8

Open ma96o opened 2 years ago

ma96o commented 2 years ago

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 を発行するために提供される基本的な機能は以下.