From dd57cb6e348cb68b4ee99d66c5af8dc9b78fde7c Mon Sep 17 00:00:00 2001
From: Dan Oved <stangogh@gmail.com>
Date: Thu, 9 Nov 2023 14:51:46 -0800
Subject: [PATCH] deployed 2.4.0 to zora testnet.  created script to just
 deploy 1155 and print upgrade

---
 .../protocol-deployments/addresses/999.json   |  8 ++--
 .../script/DeployNew1155Impl.s.sol            |  1 +
 .../script/Simulat1155Upgrade.s.sol           | 37 +++++++++++++++++++
 .../src/ZoraDeployerUtils.sol                 | 23 ++++++++++++
 4 files changed, 65 insertions(+), 4 deletions(-)
 create mode 100644 packages/protocol-deployments/script/Simulat1155Upgrade.s.sol

diff --git a/packages/protocol-deployments/addresses/999.json b/packages/protocol-deployments/addresses/999.json
index d3ef95762..105bc7af5 100644
--- a/packages/protocol-deployments/addresses/999.json
+++ b/packages/protocol-deployments/addresses/999.json
@@ -1,7 +1,7 @@
 {
-  "CONTRACT_1155_IMPL": "0x2482ffB455FC6cAE757C1e72FB7Ab01cF045ac52",
+  "CONTRACT_1155_IMPL": "0xcD7230AFfBC8C720aE607e0Bc386fbCAF5C34C2E",
   "CONTRACT_1155_IMPL_VERSION": "2.4.0",
-  "FACTORY_IMPL": "0x3E03bb82bf1441adCeCf4A0321ccedd779fF774C",
+  "FACTORY_IMPL": "0x869Be2EaE4AB30Cf319a46B5dE50Ac203c8784Aa",
   "FACTORY_PROXY": "0x777777C338d93e2C7adf08D102d45CA7CC4Ed021",
   "FIXED_PRICE_SALE_STRATEGY": "0x04E2516A2c207E84a1839755675dfd8eF6302F0a",
   "MERKLE_MINT_SALE_STRATEGY": "0xf48172CA3B6068B20eE4917Eb27b5472f1f272C7",
@@ -9,6 +9,6 @@
   "PREMINTER_PROXY": "0x7777773606e7e46C8Ba8B98C08f5cD218e31d340",
   "REDEEM_MINTER_FACTORY": "0x78964965cF77850224513a367f899435C5B69174",
   "UPGRADE_GATE": "0xbC50029836A59A4E5e1Bb8988272F46ebA0F9900",
-  "timestamp": 1699565037,
-  "commit": "5d86660c"
+  "timestamp": 1699570171,
+  "commit": "385e4932"
 }
\ No newline at end of file
diff --git a/packages/protocol-deployments/script/DeployNew1155Impl.s.sol b/packages/protocol-deployments/script/DeployNew1155Impl.s.sol
index c13a8865f..23dc6f772 100644
--- a/packages/protocol-deployments/script/DeployNew1155Impl.s.sol
+++ b/packages/protocol-deployments/script/DeployNew1155Impl.s.sol
@@ -5,6 +5,7 @@ import "forge-std/Script.sol";
 import "forge-std/console2.sol";
 
 import {ZoraDeployerBase} from "../src/ZoraDeployerBase.sol";
+import {ZoraDeployerUtils} from "../src/ZoraDeployerUtils.sol";
 import {Deployment} from "../src/DeploymentConfig.sol";
 import {DeterministicDeployerScript} from "../src/DeterministicDeployerScript.sol";
 
diff --git a/packages/protocol-deployments/script/Simulat1155Upgrade.s.sol b/packages/protocol-deployments/script/Simulat1155Upgrade.s.sol
new file mode 100644
index 000000000..b6b605fc5
--- /dev/null
+++ b/packages/protocol-deployments/script/Simulat1155Upgrade.s.sol
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.17;
+
+import "forge-std/Script.sol";
+import "forge-std/console2.sol";
+
+import {ZoraDeployerBase} from "../src/ZoraDeployerBase.sol";
+import {ZoraDeployerUtils} from "../src/ZoraDeployerUtils.sol";
+import {Deployment, ChainConfig} from "../src/DeploymentConfig.sol";
+import {DeterministicDeployerScript} from "../src/DeterministicDeployerScript.sol";
+
+/// @dev Deploys implementation contracts for 1155 contracts.
+/// @notice Run after deploying the minters
+/// @notice This
+contract Simulate1155Upgrade is ZoraDeployerBase {
+    function run() public returns (string memory) {
+        Deployment memory deployment = getDeployment();
+
+        ChainConfig memory chainConfig = getChainConfig();
+
+        address creator = makeAddr("creator");
+
+        vm.startBroadcast(chainConfig.factoryOwner);
+
+        (address target, bytes memory upgradeCalldata) = ZoraDeployerUtils.simulateUpgrade(deployment);
+
+        console2.log("upgrade 1155 target:", target);
+        console2.log("calldata:");
+        console.logBytes(upgradeCalldata);
+
+        ZoraDeployerUtils.deployTestContractForVerification(deployment.factoryProxy, creator);
+
+        vm.stopBroadcast();
+
+        return getDeploymentJSON(deployment);
+    }
+}
diff --git a/packages/protocol-deployments/src/ZoraDeployerUtils.sol b/packages/protocol-deployments/src/ZoraDeployerUtils.sol
index 8f8c2f60e..0e71b4ec3 100644
--- a/packages/protocol-deployments/src/ZoraDeployerUtils.sol
+++ b/packages/protocol-deployments/src/ZoraDeployerUtils.sol
@@ -173,4 +173,27 @@ library ZoraDeployerUtils {
                 )
             );
     }
+
+    function getUpgradeCalldata(Deployment memory deployment) internal returns (bytes memory upgradeCalldata) {
+        // create 1155 proxy from deployment factory proxy address
+        ZoraCreator1155FactoryImpl factory = ZoraCreator1155FactoryImpl(deployment.factoryProxy);
+
+        address owner = factory.owner();
+
+        // simulate upgrade call
+        upgradeCalldata = abi.encodeWithSelector(factory.upgradeTo.selector, deployment.factoryImpl);
+    }
+
+    function simulateUpgrade(Deployment memory deployment) internal returns (address target, bytes memory upgradeCalldata) {
+        // console log update information
+
+        upgradeCalldata = getUpgradeCalldata(deployment);
+
+        target = deployment.factoryProxy;
+        // upgrade the factory proxy to the new implementation
+
+        (bool success, ) = target.call(upgradeCalldata);
+
+        require(success, "upgrade failed");
+    }
 }