Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 19 additions & 6 deletions src/script/DeployRevSharesUpgrader.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import {console} from "forge-std/console.sol";
import {RevShareContractsUpgrader} from "src/RevShareContractsUpgrader.sol";

/// @notice Deploys the RevShareContractsUpgrader contract.
/// @dev Deployed at https://sepolia.etherscan.io/address/0x9C524DcEa18587e24976A82f05c2065e14DB7B3A
/// @dev Uses CREATE2 for deterministic deployment. If already deployed, returns existing address.
/// @dev Deployed at https://sepolia.etherscan.io/address/0x343312031f639B9e68D7E01535E4c5FAD9c76D42
/// @dev Usage:
/// forge script src/script/DeployRevSharesUpgrader.s.sol:DeployRevSharesUpgrader \
/// --rpc-url https://ethereum-sepolia.rpc.subquery.network/public \
Expand All @@ -15,15 +16,27 @@ import {RevShareContractsUpgrader} from "src/RevShareContractsUpgrader.sol";
/// --verifier-url 'https://api.etherscan.io/v2/api?chainid=11155111&apikey={$API_KEY}'
/// @dev The libraries were verified from the etherscan's UI as single file using `forge flatten`
contract DeployRevSharesUpgrader is Script {
/// @notice Deploys the RevShareContractsUpgrader contract
/// @notice Salt used for deterministic deployment
bytes32 internal constant SALT = keccak256("RevShareContractsUpgrader");

/// @notice Deploys the RevShareContractsUpgrader contract deterministically using CREATE2
/// @return upgrader The deployed RevShareContractsUpgrader contract
function run() public returns (RevShareContractsUpgrader upgrader) {
vm.startBroadcast();
// Compute the deterministic address
bytes32 initCodeHash = keccak256(type(RevShareContractsUpgrader).creationCode);
address upgraderAddr = vm.computeCreate2Address(SALT, initCodeHash);

// Deploy the RevShareContractsUpgrader
upgrader = new RevShareContractsUpgrader();
// Check if already deployed (idempotency check)
if (upgraderAddr.code.length > 0) {
console.log("---");
console.log("RevShareContractsUpgrader already deployed at:", upgraderAddr);
console.log("---");
return RevShareContractsUpgrader(upgraderAddr);
}

vm.stopBroadcast();
// Deploy using CREATE2
vm.broadcast();
upgrader = new RevShareContractsUpgrader{salt: SALT}();

// Log the deployed address
console.log("---");
Expand Down