Files
core/script/LitAccessControlDeployment.s.sol

76 lines
2.6 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import 'forge-std/Script.sol';
import {ForkManagement} from 'script/helpers/ForkManagement.sol';
import {LitAccessControl} from 'contracts/misc/access/LitAccessControl.sol';
import {TransparentUpgradeableProxy} from '@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol';
contract LitAccessControlDeployment is Script, ForkManagement {
// add this to be excluded from coverage report
function testLitAccessControlDeployment() public {}
using stdJson for string;
string mnemonic;
struct LensAccount {
uint256 ownerPk;
address owner;
uint256 profileId;
}
LensAccount deployer;
LensAccount proxyAdmin;
function loadPrivateKeys() internal {
if (isEnvSet('MNEMONIC')) {
mnemonic = vm.envString('MNEMONIC');
}
if (bytes(mnemonic).length == 0) {
revert('Missing mnemonic');
}
console.log('\n- - - CURRENT BLOCK: ', block.number);
(deployer.owner, deployer.ownerPk) = deriveRememberKey(mnemonic, 0);
console.log('\n- - - DEPLOYER: %s', deployer.owner);
(proxyAdmin.owner, proxyAdmin.ownerPk) = deriveRememberKey(mnemonic, 2);
console.log('\n- - - PROXYADMIN: %s', proxyAdmin.owner);
}
function run(string memory targetEnv_) external {
targetEnv = targetEnv_;
loadJson();
checkNetworkParams();
loadPrivateKeys();
deploy();
}
function deploy() internal {
vm.startBroadcast(deployer.ownerPk);
address lensHub = 0xC1E77eE73403B8a7478884915aA599932A677870; // TODO: Replace with reading from Addressbook
address collectPublicationAction = 0x5FE7918C3Ef48E6C5Fd79dD22A3120a3C4967aC2; // TODO: Replace with reading from Addressbook
address litAccessControlImpl = address(new LitAccessControl(lensHub, collectPublicationAction));
console.log('\n- - - LitAccessControl implementation deployed: %s', litAccessControlImpl);
console.log('\n - LensHub: %s', lensHub);
console.log('\n - CollectPublicationAction: %s', collectPublicationAction);
address litAccessControl = address(
new TransparentUpgradeableProxy({
_logic: address(litAccessControlImpl),
admin_: proxyAdmin.owner,
_data: ''
})
);
console.log('\n- - - LitAccessControl proxy deployed: %s', litAccessControl);
console.log('\n - ProxyAdmin: %s', proxyAdmin.owner);
vm.stopBroadcast();
}
}