mirror of
https://github.com/lens-protocol/core.git
synced 2026-01-08 21:58:06 -05:00
126 lines
3.7 KiB
Solidity
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();
|
|
}
|
|
}
|