Commit a0e57885 authored by tre's avatar tre

Add ability to archive previous drip configs

parent f4b6aa35
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": false, "installOpChainFaucetsDrips": false,
"archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 1, "dripVersion": 1,
"previousDripVersion": 0,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
"modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2", "modeL1BridgeAddress": "0xbC5C679879B2965296756CD959C3C739769995E2",
"lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17", "lyraL1BridgeAddress": "0x915f179A77FB2e1AeA8b56Ebc0D75A7e1A8a7A17",
"installOpChainFaucetsDrips": true, "installOpChainFaucetsDrips": true,
"dripVersion": 1, "archivePreviousOpChainFaucetsDrips": false,
"dripVersion": 2,
"previousDripVersion": 1,
"smallOpChainFaucetDripValue": 2000000000000000000, "smallOpChainFaucetDripValue": 2000000000000000000,
"smallOpChainFaucetDripInterval": 86400, "smallOpChainFaucetDripInterval": 86400,
"largeOpChainFaucetDripValue": 34000000000000000000, "largeOpChainFaucetDripValue": 34000000000000000000,
......
...@@ -51,6 +51,10 @@ contract DeployPeriphery is Deployer { ...@@ -51,6 +51,10 @@ contract DeployPeriphery is Deployer {
if (cfg.installOpChainFaucetsDrips()) { if (cfg.installOpChainFaucetsDrips()) {
installOpChainFaucetsDrippieConfigs(); installOpChainFaucetsDrippieConfigs();
} }
if (cfg.archivePreviousOpChainFaucetsDrips()) {
archivePreviousOpChainFaucetsDrippieConfigs();
}
} }
/// @notice Deploy all of the proxies /// @notice Deploy all of the proxies
...@@ -286,46 +290,40 @@ contract DeployPeriphery is Deployer { ...@@ -286,46 +290,40 @@ contract DeployPeriphery is Deployer {
console.log("OP chain faucet drip configs successfully installed"); console.log("OP chain faucet drip configs successfully installed");
} }
/// @notice archives the previous OP Chain drip configs.
function archivePreviousOpChainFaucetsDrippieConfigs() public {
uint256 drippieOwnerPrivateKey = vm.envUint("DRIPPIE_OWNER_PRIVATE_KEY");
vm.startBroadcast(drippieOwnerPrivateKey);
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
console.log("Archiving OP Chain faucet drips at %s", address(drippie));
archivePreviousSmallOpChainFaucetsDrips();
archivePreviousLargeOpChainFaucetsDrips();
vm.stopBroadcast();
console.log("OP chain faucet drip configs successfully installed");
}
/// @notice installs drips that send funds to small OP chain faucets on the scheduled interval. /// @notice installs drips that send funds to small OP chain faucets on the scheduled interval.
function installSmallOpChainFaucetsDrips() public { function installSmallOpChainFaucetsDrips() public {
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
address faucetProxy = mustGetAddress("FaucetProxy"); address faucetProxy = mustGetAddress("FaucetProxy");
uint256 arrayLength = cfg.getSmallFaucetsL1BridgeAddressesCount(); uint256 arrayLength = cfg.getSmallFaucetsL1BridgeAddressesCount();
for (uint256 i = 0; i < arrayLength; i++) { for (uint256 i = 0; i < arrayLength; i++) {
address l1BridgeAddress = cfg.smallFaucetsL1BridgeAddresses(i); address l1BridgeAddress = cfg.smallFaucetsL1BridgeAddresses(i);
string memory dripNamePrefix = string.concat("faucet-drip-", vm.toString(l1BridgeAddress)); _installDepositEthToDrip(
string memory versionSuffix = string.concat("-", vm.toString(cfg.dripVersion())); faucetProxy,
string memory dripName = string.concat(dripNamePrefix, versionSuffix); l1BridgeAddress,
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.NONE) { cfg.smallOpChainFaucetDripValue(),
console.log("installing %s", dripName); cfg.smallOpChainFaucetDripInterval(),
Drippie.DripAction[] memory actions = new Drippie.DripAction[](1); _faucetDripName(l1BridgeAddress, cfg.dripVersion())
actions[0] = Drippie.DripAction({ );
target: payable(l1BridgeAddress),
data: abi.encodeWithSignature("depositETHTo(address,uint32,bytes)", faucetProxy, 200000, ""),
value: cfg.smallOpChainFaucetDripValue()
});
drippie.create({
_name: dripName,
_config: Drippie.DripConfig({
reentrant: false,
interval: cfg.smallOpChainFaucetDripInterval(),
dripcheck: CheckTrue(mustGetAddress("CheckTrue")),
checkparams: abi.encode(""),
actions: actions
})
});
console.log("%s installed successfully", dripName);
} else {
console.log("%s already installed.", dripName);
}
_activateIfPausedDrip(drippie, dripName);
} }
} }
/// @notice installs drips that send funds to small OP chain faucets on the scheduled interval. /// @notice installs drips that send funds to the admin wallets for small OP chain faucets
/// on the scheduled interval.
function installSmallOpChainAdminWalletDrips() public { function installSmallOpChainAdminWalletDrips() public {
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
require( require(
cfg.faucetOnchainAuthModuleAdmin() == cfg.faucetOffchainAuthModuleAdmin(), cfg.faucetOnchainAuthModuleAdmin() == cfg.faucetOffchainAuthModuleAdmin(),
"installSmallOpChainAdminWalletDrips: Only handles identical admin wallet addresses" "installSmallOpChainAdminWalletDrips: Only handles identical admin wallet addresses"
...@@ -334,39 +332,19 @@ contract DeployPeriphery is Deployer { ...@@ -334,39 +332,19 @@ contract DeployPeriphery is Deployer {
uint256 arrayLength = cfg.getSmallFaucetsL1BridgeAddressesCount(); uint256 arrayLength = cfg.getSmallFaucetsL1BridgeAddressesCount();
for (uint256 i = 0; i < arrayLength; i++) { for (uint256 i = 0; i < arrayLength; i++) {
address l1BridgeAddress = cfg.smallFaucetsL1BridgeAddresses(i); address l1BridgeAddress = cfg.smallFaucetsL1BridgeAddresses(i);
string memory dripNamePrefix = string.concat("faucet-admin-drip-", vm.toString(l1BridgeAddress)); _installDepositEthToDrip(
string memory versionSuffix = string.concat("-", vm.toString(cfg.dripVersion())); adminWallet,
string memory dripName = string.concat(dripNamePrefix, versionSuffix); l1BridgeAddress,
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.NONE) { cfg.opChainAdminWalletDripValue(),
console.log("installing %s", dripName); cfg.opChainAdminWalletDripInterval(),
Drippie.DripAction[] memory actions = new Drippie.DripAction[](1); _adminWalletDripName(l1BridgeAddress, cfg.dripVersion())
actions[0] = Drippie.DripAction({ );
target: payable(l1BridgeAddress),
data: abi.encodeWithSignature("depositETHTo(address,uint32,bytes)", adminWallet, 200000, ""),
value: cfg.opChainAdminWalletDripValue()
});
drippie.create({
_name: dripName,
_config: Drippie.DripConfig({
reentrant: false,
interval: cfg.opChainAdminWalletDripInterval(),
dripcheck: CheckTrue(mustGetAddress("CheckTrue")),
checkparams: abi.encode(""),
actions: actions
})
});
console.log("%s installed successfully", dripName);
} else {
console.log("%s already installed.", dripName);
}
_activateIfPausedDrip(drippie, dripName);
} }
} }
/// @notice installs drips that send funds to small OP chain faucets on the scheduled interval. /// @notice installs drips that send funds to the admin wallets for large OP chain faucets
/// on the scheduled interval.
function installLargeOpChainAdminWalletDrips() public { function installLargeOpChainAdminWalletDrips() public {
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
require( require(
cfg.faucetOnchainAuthModuleAdmin() == cfg.faucetOffchainAuthModuleAdmin(), cfg.faucetOnchainAuthModuleAdmin() == cfg.faucetOffchainAuthModuleAdmin(),
"installLargeOpChainAdminWalletDrips: Only handles identical admin wallet addresses" "installLargeOpChainAdminWalletDrips: Only handles identical admin wallet addresses"
...@@ -375,70 +353,29 @@ contract DeployPeriphery is Deployer { ...@@ -375,70 +353,29 @@ contract DeployPeriphery is Deployer {
uint256 arrayLength = cfg.getLargeFaucetsL1BridgeAddressesCount(); uint256 arrayLength = cfg.getLargeFaucetsL1BridgeAddressesCount();
for (uint256 i = 0; i < arrayLength; i++) { for (uint256 i = 0; i < arrayLength; i++) {
address l1BridgeAddress = cfg.largeFaucetsL1BridgeAddresses(i); address l1BridgeAddress = cfg.largeFaucetsL1BridgeAddresses(i);
string memory dripNamePrefix = string.concat("faucet-admin-drip-", vm.toString(l1BridgeAddress)); _installDepositEthToDrip(
string memory versionSuffix = string.concat("-", vm.toString(cfg.dripVersion())); adminWallet,
string memory dripName = string.concat(dripNamePrefix, versionSuffix); l1BridgeAddress,
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.NONE) { cfg.opChainAdminWalletDripValue(),
console.log("installing %s", dripName); cfg.opChainAdminWalletDripInterval(),
Drippie.DripAction[] memory actions = new Drippie.DripAction[](1); _adminWalletDripName(l1BridgeAddress, cfg.dripVersion())
actions[0] = Drippie.DripAction({ );
target: payable(l1BridgeAddress),
data: abi.encodeWithSignature("depositETHTo(address,uint32,bytes)", adminWallet, 200000, ""),
value: cfg.opChainAdminWalletDripValue()
});
drippie.create({
_name: dripName,
_config: Drippie.DripConfig({
reentrant: false,
interval: cfg.opChainAdminWalletDripInterval(),
dripcheck: CheckTrue(mustGetAddress("CheckTrue")),
checkparams: abi.encode(""),
actions: actions
})
});
console.log("%s installed successfully", dripName);
} else {
console.log("%s already installed.", dripName);
}
_activateIfPausedDrip(drippie, dripName);
} }
} }
/// @notice installs drips that send funds to large OP chain faucets on the scheduled interval. /// @notice installs drips that send funds to large OP chain faucets on the scheduled interval.
function installLargeOpChainFaucetsDrips() public { function installLargeOpChainFaucetsDrips() public {
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
address faucetProxy = mustGetAddress("FaucetProxy"); address faucetProxy = mustGetAddress("FaucetProxy");
uint256 arrayLength = cfg.getLargeFaucetsL1BridgeAddressesCount(); uint256 arrayLength = cfg.getLargeFaucetsL1BridgeAddressesCount();
for (uint256 i = 0; i < arrayLength; i++) { for (uint256 i = 0; i < arrayLength; i++) {
address l1BridgeAddress = cfg.largeFaucetsL1BridgeAddresses(i); address l1BridgeAddress = cfg.largeFaucetsL1BridgeAddresses(i);
string memory dripNamePrefix = string.concat("faucet-drip-", vm.toString(l1BridgeAddress)); _installDepositEthToDrip(
string memory versionSuffix = string.concat("-", vm.toString(cfg.dripVersion())); faucetProxy,
string memory dripName = string.concat(dripNamePrefix, versionSuffix); l1BridgeAddress,
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.NONE) { cfg.largeOpChainFaucetDripValue(),
console.log("installing %s", dripName); cfg.largeOpChainFaucetDripInterval(),
Drippie.DripAction[] memory actions = new Drippie.DripAction[](1); _faucetDripName(l1BridgeAddress, cfg.dripVersion())
actions[0] = Drippie.DripAction({ );
target: payable(l1BridgeAddress),
data: abi.encodeWithSignature("depositETHTo(address,uint32,bytes)", faucetProxy, 200000, ""),
value: cfg.smallOpChainFaucetDripValue()
});
drippie.create({
_name: dripName,
_config: Drippie.DripConfig({
reentrant: false,
interval: cfg.smallOpChainFaucetDripInterval(),
dripcheck: CheckTrue(mustGetAddress("CheckTrue")),
checkparams: abi.encode(""),
actions: actions
})
});
console.log("%s installed successfully", dripName);
} else {
console.log("%s already installed.", dripName);
}
_activateIfPausedDrip(drippie, dripName);
} }
} }
...@@ -577,12 +514,75 @@ contract DeployPeriphery is Deployer { ...@@ -577,12 +514,75 @@ contract DeployPeriphery is Deployer {
_activateIfPausedDrip(drippie, dripName); _activateIfPausedDrip(drippie, dripName);
} }
function archivePreviousSmallOpChainFaucetsDrips() public {
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
uint256 arrayLength = cfg.getSmallFaucetsL1BridgeAddressesCount();
for (uint256 i = 0; i < arrayLength; i++) {
address l1BridgeAddress = cfg.smallFaucetsL1BridgeAddresses(i);
_pauseIfActivatedDrip(drippie, _faucetDripName(l1BridgeAddress, cfg.previousDripVersion()));
_pauseIfActivatedDrip(drippie, _adminWalletDripName(l1BridgeAddress, cfg.previousDripVersion()));
_archiveIfPausedDrip(drippie, _faucetDripName(l1BridgeAddress, cfg.previousDripVersion()));
_archiveIfPausedDrip(drippie, _adminWalletDripName(l1BridgeAddress, cfg.previousDripVersion()));
}
}
function archivePreviousLargeOpChainFaucetsDrips() public {
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
uint256 arrayLength = cfg.getLargeFaucetsL1BridgeAddressesCount();
for (uint256 i = 0; i < arrayLength; i++) {
address l1BridgeAddress = cfg.largeFaucetsL1BridgeAddresses(i);
_pauseIfActivatedDrip(drippie, _faucetDripName(l1BridgeAddress, cfg.previousDripVersion()));
_pauseIfActivatedDrip(drippie, _adminWalletDripName(l1BridgeAddress, cfg.previousDripVersion()));
_archiveIfPausedDrip(drippie, _faucetDripName(l1BridgeAddress, cfg.previousDripVersion()));
_archiveIfPausedDrip(drippie, _adminWalletDripName(l1BridgeAddress, cfg.previousDripVersion()));
}
}
function _activateIfPausedDrip(Drippie drippie, string memory dripName) internal { function _activateIfPausedDrip(Drippie drippie, string memory dripName) internal {
require(
drippie.getDripStatus(dripName) == Drippie.DripStatus.ACTIVE
|| drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED,
"attempting to activate a drip that is not currently paused or activated"
);
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED) { if (drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED) {
console.log("%s is paused, activating", dripName); console.log("%s is paused, activating", dripName);
drippie.status(dripName, Drippie.DripStatus.ACTIVE); drippie.status(dripName, Drippie.DripStatus.ACTIVE);
console.log("%s activated", dripName); console.log("%s activated", dripName);
require(drippie.getDripStatus(dripName) == Drippie.DripStatus.ACTIVE); require(drippie.getDripStatus(dripName) == Drippie.DripStatus.ACTIVE);
} else {
console.log("%s already activated", dripName);
}
}
function _pauseIfActivatedDrip(Drippie drippie, string memory dripName) internal {
require(
drippie.getDripStatus(dripName) == Drippie.DripStatus.ACTIVE
|| drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED,
"attempting to pause a drip that is not currently paused or activated"
);
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.ACTIVE) {
console.log("%s is active, pausing", dripName);
drippie.status(dripName, Drippie.DripStatus.PAUSED);
console.log("%s paused", dripName);
require(drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED);
} else {
console.log("%s already paused", dripName);
}
}
function _archiveIfPausedDrip(Drippie drippie, string memory dripName) internal {
require(
drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED
|| drippie.getDripStatus(dripName) == Drippie.DripStatus.ARCHIVED,
"attempting to archive a drip that is not currently paused or archived"
);
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.PAUSED) {
console.log("%s is paused, archiving", dripName);
drippie.status(dripName, Drippie.DripStatus.ARCHIVED);
console.log("%s archived", dripName);
require(drippie.getDripStatus(dripName) == Drippie.DripStatus.ARCHIVED);
} else {
console.log("%s already archived", dripName);
} }
} }
...@@ -692,4 +692,52 @@ contract DeployPeriphery is Deployer { ...@@ -692,4 +692,52 @@ contract DeployPeriphery is Deployer {
console.log("Faucet Auth Module configs successfully installed"); console.log("Faucet Auth Module configs successfully installed");
} }
function _faucetDripName(address _l1Bridge, uint256 version) internal pure returns (string memory) {
string memory dripNamePrefixWithBridgeAddress = string.concat("faucet-drip-", vm.toString(_l1Bridge));
string memory versionSuffix = string.concat("-", vm.toString(version));
return string.concat(dripNamePrefixWithBridgeAddress, versionSuffix);
}
function _adminWalletDripName(address _l1Bridge, uint256 version) internal pure returns (string memory) {
string memory dripNamePrefixWithBridgeAddress = string.concat("faucet-admin-drip-", vm.toString(_l1Bridge));
string memory versionSuffix = string.concat("-", vm.toString(version));
return string.concat(dripNamePrefixWithBridgeAddress, versionSuffix);
}
function _installDepositEthToDrip(
address _depositTo,
address _l1Bridge,
uint256 _dripValue,
uint256 _dripInterval,
string memory dripName
)
internal
{
Drippie drippie = Drippie(mustGetAddress("FaucetDrippie"));
if (drippie.getDripStatus(dripName) == Drippie.DripStatus.NONE) {
console.log("installing %s", dripName);
Drippie.DripAction[] memory actions = new Drippie.DripAction[](1);
actions[0] = Drippie.DripAction({
target: payable(_l1Bridge),
data: abi.encodeWithSignature("depositETHTo(address,uint32,bytes)", _depositTo, 200000, ""),
value: _dripValue
});
drippie.create({
_name: dripName,
_config: Drippie.DripConfig({
reentrant: false,
interval: _dripInterval,
dripcheck: CheckTrue(mustGetAddress("CheckTrue")),
checkparams: abi.encode(""),
actions: actions
})
});
console.log("%s installed successfully", dripName);
} else {
console.log("%s already installed.", dripName);
}
_activateIfPausedDrip(drippie, dripName);
}
} }
...@@ -35,6 +35,7 @@ contract PeripheryDeployConfig is Script { ...@@ -35,6 +35,7 @@ contract PeripheryDeployConfig is Script {
uint256 public faucetOffchainAuthModuleTtl; uint256 public faucetOffchainAuthModuleTtl;
uint256 public faucetOffchainAuthModuleAmount; uint256 public faucetOffchainAuthModuleAmount;
bool public installOpChainFaucetsDrips; bool public installOpChainFaucetsDrips;
bool public archivePreviousOpChainFaucetsDrips;
uint256 public smallOpChainFaucetDripValue; uint256 public smallOpChainFaucetDripValue;
uint256 public smallOpChainFaucetDripInterval; uint256 public smallOpChainFaucetDripInterval;
uint256 public largeOpChainFaucetDripValue; uint256 public largeOpChainFaucetDripValue;
...@@ -51,6 +52,7 @@ contract PeripheryDeployConfig is Script { ...@@ -51,6 +52,7 @@ contract PeripheryDeployConfig is Script {
address[5] public smallFaucetsL1BridgeAddresses; address[5] public smallFaucetsL1BridgeAddresses;
address[2] public largeFaucetsL1BridgeAddresses; address[2] public largeFaucetsL1BridgeAddresses;
uint256 public dripVersion; uint256 public dripVersion;
uint256 public previousDripVersion;
constructor(string memory _path) { constructor(string memory _path) {
console.log("PeripheryDeployConfig: reading file %s", _path); console.log("PeripheryDeployConfig: reading file %s", _path);
...@@ -84,6 +86,7 @@ contract PeripheryDeployConfig is Script { ...@@ -84,6 +86,7 @@ contract PeripheryDeployConfig is Script {
faucetOffchainAuthModuleTtl = stdJson.readUint(_json, "$.faucetOffchainAuthModuleTtl"); faucetOffchainAuthModuleTtl = stdJson.readUint(_json, "$.faucetOffchainAuthModuleTtl");
faucetOffchainAuthModuleAmount = stdJson.readUint(_json, "$.faucetOffchainAuthModuleAmount"); faucetOffchainAuthModuleAmount = stdJson.readUint(_json, "$.faucetOffchainAuthModuleAmount");
installOpChainFaucetsDrips = stdJson.readBool(_json, "$.installOpChainFaucetsDrips"); installOpChainFaucetsDrips = stdJson.readBool(_json, "$.installOpChainFaucetsDrips");
archivePreviousOpChainFaucetsDrips = stdJson.readBool(_json, "$.archivePreviousOpChainFaucetsDrips");
opL1BridgeAddress = stdJson.readAddress(_json, "$.opL1BridgeAddress"); opL1BridgeAddress = stdJson.readAddress(_json, "$.opL1BridgeAddress");
baseL1BridgeAddress = stdJson.readAddress(_json, "$.baseL1BridgeAddress"); baseL1BridgeAddress = stdJson.readAddress(_json, "$.baseL1BridgeAddress");
zoraL1BridgeAddress = stdJson.readAddress(_json, "$.zoraL1BridgeAddress"); zoraL1BridgeAddress = stdJson.readAddress(_json, "$.zoraL1BridgeAddress");
...@@ -92,6 +95,7 @@ contract PeripheryDeployConfig is Script { ...@@ -92,6 +95,7 @@ contract PeripheryDeployConfig is Script {
modeL1BridgeAddress = stdJson.readAddress(_json, "$.modeL1BridgeAddress"); modeL1BridgeAddress = stdJson.readAddress(_json, "$.modeL1BridgeAddress");
lyraL1BridgeAddress = stdJson.readAddress(_json, "$.lyraL1BridgeAddress"); lyraL1BridgeAddress = stdJson.readAddress(_json, "$.lyraL1BridgeAddress");
dripVersion = stdJson.readUint(_json, "$.dripVersion"); dripVersion = stdJson.readUint(_json, "$.dripVersion");
previousDripVersion = stdJson.readUint(_json, "$.previousDripVersion");
smallOpChainFaucetDripValue = stdJson.readUint(_json, "$.smallOpChainFaucetDripValue"); smallOpChainFaucetDripValue = stdJson.readUint(_json, "$.smallOpChainFaucetDripValue");
smallOpChainFaucetDripInterval = stdJson.readUint(_json, "$.smallOpChainFaucetDripInterval"); smallOpChainFaucetDripInterval = stdJson.readUint(_json, "$.smallOpChainFaucetDripInterval");
largeOpChainFaucetDripValue = stdJson.readUint(_json, "$.largeOpChainFaucetDripValue"); largeOpChainFaucetDripValue = stdJson.readUint(_json, "$.largeOpChainFaucetDripValue");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment