Files
core/foundry-scripts/DeployUpgrade.s.sol
donosonaumczuk bf42fecab5 misc: SPDX License set in each file
Co-authored-by: Victor Naumik <vicnaum@gmail.com>
2023-03-23 20:39:25 +00:00

72 lines
2.4 KiB
Solidity

pragma solidity ^0.8.13;
import 'forge-std/Script.sol';
import 'forge-std/console2.sol';
import 'contracts/LensHub.sol';
import 'contracts/FollowNFT.sol';
import 'contracts/CollectNFT.sol';
import 'contracts/misc/migrations/ProfileMigration.sol';
import {LensHandles} from 'contracts/misc/namespaces/LensHandles.sol';
import {TokenHandleRegistry} from 'contracts/misc/namespaces/TokenHandleRegistry.sol';
/**
* This script will deploy the current repository implementations, using the given environment
* hub proxy address.
*/
contract DeployUpgradeScript is Script {
function run() public {
string memory deployerMnemonic = vm.envString('MNEMONIC');
uint256 deployerKey = vm.deriveKey(deployerMnemonic, 0);
address deployer = vm.addr(deployerKey);
address hubProxyAddr = vm.envAddress('HUB_PROXY_ADDRESS');
address owner = deployer;
LensHub hub = LensHub(hubProxyAddr);
address followNFTAddress = hub.getFollowNFTImpl();
address collectNFTAddress = hub.getCollectNFTImpl();
uint256 deployerNonce = vm.getNonce(deployer);
// Precompute needed addresss.
address lensHandlesAddress = computeCreateAddress(deployer, deployerNonce);
address migratorAddress = computeCreateAddress(deployer, deployerNonce + 1);
address tokenHandleRegistryAddress = computeCreateAddress(deployer, deployerNonce + 2);
// Start deployments.
vm.startBroadcast(deployerKey);
LensHandles lensHandles = new LensHandles(owner, address(hub), migratorAddress);
console.log(address(lensHandles), lensHandlesAddress);
ProfileMigration migrator = new ProfileMigration(
owner,
address(hub),
lensHandlesAddress,
tokenHandleRegistryAddress
);
console.log(address(migrator), migratorAddress);
TokenHandleRegistry tokenHandleRegistry = new TokenHandleRegistry(
address(hub),
lensHandlesAddress,
migratorAddress
);
console.log(address(tokenHandleRegistry), tokenHandleRegistryAddress);
address hubImpl = address(
new LensHub(
followNFTAddress,
collectNFTAddress,
migratorAddress,
lensHandlesAddress,
tokenHandleRegistryAddress
)
);
console.log('New hub impl:', hubImpl);
vm.stopBroadcast();
}
}