From b90ee7e86b30b39481a2347178339da11e3fb2c5 Mon Sep 17 00:00:00 2001 From: thurendous Date: Wed, 23 Oct 2024 22:15:04 +0900 Subject: [PATCH] add script for nft deployment --- .env.example | 4 ++-- Makefile | 3 +++ README.md | 12 ++++++++++++ script/DeployNft.s.sol | 23 ++++++++++++++++++++--- src/AmbassadorNft.sol | 2 +- 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index dfdda09..f7a1a26 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,5 @@ -PRIVATE_KEY_DEPLOYER=1234567890123456789012345678901234567890123456789012345678901234 -PRIVATE_KEY_DEV=1234567890123456789012345678901234567890123456789012345678901234 +PRIVATE_KEY_DEPLOYER=12345... +PRIVATE_KEY_DEV=12345... ETHERSCAN_API_KEY= BASE_API_KEY= BASE_SEPOLIA_RPC_URL= diff --git a/Makefile b/Makefile index 5cd757b..e9ea85c 100644 --- a/Makefile +++ b/Makefile @@ -41,3 +41,6 @@ endif deploy: @forge clean && forge script script/DeployContracts.s.sol:DeployContracts $(NETWORK_ARGS) + +deploy-nft: + @forge clean && forge script script/DeployNft.s.sol:DeployNft $(NETWORK_ARGS) diff --git a/README.md b/README.md index 20b87a2..085b762 100644 --- a/README.md +++ b/README.md @@ -325,6 +325,18 @@ make test make coverage ``` +7. Deploy the contracts on the base sepolia network by running + +```shell +make deploy ARGS="--network basesepolia" +``` + +8. Deploy the nft contract on the base sepolia network by running + +```shell +make deploy-nft ARGS="--network basesepolia" +``` + ## References ### Mathematical Formula and tables diff --git a/script/DeployNft.s.sol b/script/DeployNft.s.sol index 8c7eb9b..c59f00f 100644 --- a/script/DeployNft.s.sol +++ b/script/DeployNft.s.sol @@ -1,14 +1,31 @@ // DeployNft.s.sol // SPDX-License-Identifier: MIT - pragma solidity 0.8.24; -import {console, Script} from "forge-std/Script.sol"; +import {Script, console} from "forge-std/Script.sol"; import {AmbassadorNft} from "src/AmbassadorNft.sol"; contract DeployNft is Script { function run() public { - vm.startBroadcast(); + address defender = vm.envAddress("OPENZEPPELIN_DEFENDER_ADDR"); + uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY_DEPLOYER"); + address deployer = vm.addr(deployerPrivateKey); + address admin = deployer; + address minter = defender; + address burner = defender; + address uriSetter = defender; + + vm.startBroadcast(deployerPrivateKey); + + AmbassadorNft nft = new AmbassadorNft( + admin, + minter, + burner, + uriSetter + ); + + console.log("Deployer:", deployer); + console.log("AmbassadorNft deployed at:", address(nft)); vm.stopBroadcast(); } diff --git a/src/AmbassadorNft.sol b/src/AmbassadorNft.sol index 0e2d341..e11a90c 100644 --- a/src/AmbassadorNft.sol +++ b/src/AmbassadorNft.sol @@ -69,7 +69,7 @@ contract AmbassadorNft is ERC1155, AccessControl, ERC1155Burnable { _burn(account, id, amount); } - /// @notice Batch burning is not supported. + /// @notice Batch burning is supported only by the BURNER_ROLE. function burnBatch(address account, uint256[] memory ids, uint256[] memory values) public virtual