Files
core/script/DeployTestProfiles.s.sol

126 lines
3.7 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import {ForkManagement} from 'script/helpers/ForkManagement.sol';
import 'forge-std/Script.sol';
import {ProfileTokenURI} from 'contracts/misc/token-uris/ProfileTokenURI.sol';
import {ERC721} from '@openzeppelin/contracts/token/ERC721/ERC721.sol';
contract NFTMinter is ProfileTokenURI, ERC721 {
constructor() ERC721('Test Protocol', 'TEST') {}
function mintMany(uint256 tokenIdFrom, uint256 tokenIdTo) external {
for (uint256 tokenId = tokenIdFrom; tokenId <= tokenIdTo; tokenId++) {
if (!_exists(tokenId)) {
_mint(msg.sender, tokenId);
}
}
}
function mintFuzz(uint256 seed, uint256 n) external {
for (uint256 i = 0; i < n; i++) {
uint256 tokenId = uint256(keccak256(abi.encodePacked(seed, i))) % 130000;
if (!_exists(tokenId)) {
_mint(msg.sender, tokenId);
}
}
}
function tokenURI(uint256 tokenId) public view override returns (string memory) {
return ProfileTokenURI.getTokenURI(tokenId, block.timestamp);
}
}
contract DeployTestProfiles is Script, ForkManagement {
using stdJson for string;
struct LensAccount {
uint256 ownerPk;
address owner;
uint256 profileId;
}
LensAccount _deployer;
string mnemonic;
NFTMinter nftMinter;
function loadPrivateKeys() internal {
if (isEnvSet('MNEMONIC')) {
mnemonic = vm.envString('MNEMONIC');
}
if (bytes(mnemonic).length == 0) {
revert('Missing mnemonic');
}
console.log('\n');
(_deployer.owner, _deployer.ownerPk) = deriveRememberKey(mnemonic, 0);
console.log('Deployer address: %s', address(_deployer.owner));
console.log('\n');
console.log('Current block:', block.number);
}
function deploy() internal {
console.log('\n');
console.log('Deploying NFTMinter contract...');
vm.startBroadcast(_deployer.ownerPk);
nftMinter = new NFTMinter();
vm.stopBroadcast();
console.log('NFTMinter address: %s', address(nftMinter));
console.log('\n');
}
function interact() internal {
vm.startBroadcast(_deployer.ownerPk);
nftMinter.mintMany(1, 100);
nftMinter.mintMany(101, 200);
nftMinter.mintMany(201, 300);
nftMinter.mintMany(301, 400);
nftMinter.mintMany(401, 500);
nftMinter.mintMany(501, 600);
nftMinter.mintMany(601, 700);
nftMinter.mintMany(701, 800);
nftMinter.mintMany(801, 900);
nftMinter.mintMany(901, 1000);
nftMinter.mintMany(1001, 1100);
// nftMinter.mintMany(1, 100);
// nftMinter.mintMany(101, 200);
// nftMinter.mintMany(201, 300);
// nftMinter.mintMany(301, 400);
// nftMinter.mintMany(401, 500);
// nftMinter.mintMany(501, 600);
// nftMinter.mintMany(601, 700);
// nftMinter.mintMany(701, 800);
// nftMinter.mintMany(801, 900);
// nftMinter.mintMany(901, 1001);
nftMinter.mintFuzz(1, 200);
nftMinter.mintFuzz(2, 200);
nftMinter.mintFuzz(3, 200);
nftMinter.mintFuzz(4, 200);
nftMinter.mintFuzz(5, 200);
nftMinter.mintFuzz(6, 200);
nftMinter.mintFuzz(7, 200);
nftMinter.mintFuzz(8, 200);
nftMinter.mintFuzz(9, 200);
nftMinter.mintFuzz(10, 200);
vm.stopBroadcast();
}
function run(string memory targetEnv_) external {
targetEnv = targetEnv_;
loadJson();
checkNetworkParams();
loadBaseAddresses();
loadPrivateKeys();
deploy();
interact();
}
}