Skip to content

Commit 631f491

Browse files
committed
Split diamond and HostIt deployment
1 parent 83170ee commit 631f491

File tree

3 files changed

+54
-56
lines changed

3 files changed

+54
-56
lines changed

script/DeployHostItTickets.s.sol

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {DiamondCutFacet} from "@diamond/facets/DiamondCutFacet.sol";
55
import {DiamondLoupeFacet} from "@diamond/facets/DiamondLoupeFacet.sol";
66
import {OwnableRolesFacet} from "@diamond/facets/OwnableRolesFacet.sol";
77
import {DiamondInit} from "@diamond/initializers/DiamondInit.sol";
8-
import {MultiInit} from "@diamond/initializers/MultiInit.sol";
8+
import {IDiamondCut} from "@diamond/interfaces/IDiamondCut.sol";
99
import {UpgradeableBeacon} from "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
1010
import {DeployHostItTicketsHelper} from "@ticket-script/helper/DeployHostItTicketsHelper.sol";
1111
import {LibAddressesAndFees} from "@ticket-script/helper/LibAddressesAndFees.sol";
@@ -21,24 +21,40 @@ import {Script} from "forge-std/Script.sol";
2121
contract DeployHostItTicketsTest is Script, DeployHostItTicketsHelper {
2222
function run() public returns (address hostIt_) {
2323
vm.startBroadcast();
24-
// Deploy facets
25-
address diamondCutFacet = address(new DiamondCutFacet());
26-
address diamondLoupeFacet = address(new DiamondLoupeFacet());
27-
address ownableRolesFacet = address(new OwnableRolesFacet());
24+
// Facets
25+
address diamondCutFacet = address(new DiamondCutFacet{salt: vm.envBytes32("DIAMOND_CUT_SALT")}());
26+
address diamondLoupeFacet = address(new DiamondLoupeFacet{salt: vm.envBytes32("DIAMOND_LOUPE_SALT")}());
27+
address ownableRolesFacet = address(new OwnableRolesFacet{salt: vm.envBytes32("OWNABLE_ROLES_SALT")}());
28+
29+
// Initializer
30+
address diamondInit = address(new DiamondInit{salt: vm.envBytes32("DIAMOND_INIT_SALT")}());
31+
32+
// Deploy HostItTickets diamond
33+
hostIt_ = address(
34+
new HostItTickets{
35+
salt: vm.envBytes32("HOST_IT_SALT")
36+
}(
37+
_createInitFacetCuts(diamondCutFacet, diamondLoupeFacet, ownableRolesFacet),
38+
diamondInit,
39+
abi.encodeWithSignature("initDiamond(address)", _msgSender())
40+
)
41+
);
42+
vm.stopBroadcast();
43+
}
44+
45+
function init(address _hostIt) public {
46+
vm.startBroadcast();
2847
address factoryFacet = address(new FactoryFacet());
29-
address checkInFacet = address(new CheckInFacet());
3048
address marketplaceFacet = address(new MarketplaceFacet());
49+
address checkInFacet = address(new CheckInFacet());
3150

32-
// Deploy initializers
33-
address multiInit = address(new MultiInit());
34-
address diamondInit = address(new DiamondInit());
51+
// Deploy initializer
3552
address hostItInit = address(new HostItInit());
36-
3753
// Deploy Ticket Impl
3854
address ticketImpl = address(new Ticket());
3955

4056
// Deploy Ticket Beacon
41-
address ticketBeacon = address(new UpgradeableBeacon(ticketImpl, _msgSender()));
57+
address ticketBeacon = address(new UpgradeableBeacon(ticketImpl, _hostIt));
4258

4359
// Deploy Ticket Proxy
4460
address ticketProxy = address(new TicketProxy(ticketBeacon));
@@ -47,18 +63,13 @@ contract DeployHostItTicketsTest is Script, DeployHostItTicketsHelper {
4763
(address[] memory addresses, uint8[] memory feeTypes) =
4864
LibAddressesAndFees._getAddressesAndFeesByChainId(block.chainid);
4965

50-
// Deploy HostItTickets diamond
51-
hostIt_ = address(
52-
new HostItTickets{
53-
salt: vm.envBytes32("HOST_IT_SALT")
54-
}(
55-
_createFacetCuts(
56-
diamondCutFacet, diamondLoupeFacet, ownableRolesFacet, factoryFacet, checkInFacet, marketplaceFacet
57-
),
58-
multiInit,
59-
_createInitCalldata(diamondInit, hostItInit, ticketProxy, feeTypes, addresses)
60-
)
61-
);
66+
// Initialize HostItTickets
67+
IDiamondCut(_hostIt)
68+
.diamondCut(
69+
_createHostItFacetCuts(factoryFacet, marketplaceFacet, checkInFacet),
70+
hostItInit,
71+
abi.encodeWithSelector(HostItInit.initHostIt.selector, ticketProxy, feeTypes, addresses)
72+
);
6273
vm.stopBroadcast();
6374
}
6475
}

script/helper/DeployHostItTicketsHelper.sol

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@ import {GetSelectors} from "@diamond-test/helpers/GetSelectors.sol";
66
import {Context} from "@openzeppelin/contracts/utils/Context.sol";
77

88
abstract contract DeployHostItTicketsHelper is GetSelectors, Context {
9-
function _createFacetCuts(
10-
address _diamondCutFacet,
11-
address _diamondLoupeFacet,
12-
address _ownableRolesFacet,
13-
address _factoryFacet,
14-
address _checkInFacet,
15-
address _marketplaceFacet
16-
) internal view returns (FacetCut[] memory cuts_) {
17-
cuts_ = new FacetCut[](6);
9+
function _createInitFacetCuts(address _diamondCutFacet, address _diamondLoupeFacet, address _ownableRolesFacet)
10+
internal
11+
view
12+
returns (FacetCut[] memory cuts_)
13+
{
14+
cuts_ = new FacetCut[](3);
1815

1916
cuts_[0] = FacetCut({
2017
facetAddress: _diamondCutFacet,
@@ -33,38 +30,27 @@ abstract contract DeployHostItTicketsHelper is GetSelectors, Context {
3330
action: FacetCutAction.Add,
3431
functionSelectors: _getSelectors("OwnableRolesFacet")
3532
});
33+
}
3634

37-
cuts_[3] = FacetCut({
38-
facetAddress: _factoryFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("FactoryFacet")
39-
});
35+
function _createHostItFacetCuts(address _factoryFacet, address _marketplaceFacet, address _checkInFacet)
36+
internal
37+
view
38+
returns (FacetCut[] memory cuts_)
39+
{
40+
cuts_ = new FacetCut[](3);
4041

41-
cuts_[4] = FacetCut({
42-
facetAddress: _checkInFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("CheckInFacet")
42+
cuts_[0] = FacetCut({
43+
facetAddress: _factoryFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("FactoryFacet")
4344
});
4445

45-
cuts_[5] = FacetCut({
46+
cuts_[1] = FacetCut({
4647
facetAddress: _marketplaceFacet,
4748
action: FacetCutAction.Add,
4849
functionSelectors: _getSelectors("MarketplaceFacet")
4950
});
50-
}
51-
52-
function _createInitCalldata(
53-
address _diamondInit,
54-
address _hostItInit,
55-
address _ticketProxy,
56-
uint8[] memory _feeTypes,
57-
address[] memory _addresses
58-
) internal view returns (bytes memory calldata_) {
59-
address[] memory initAddr = new address[](2);
60-
initAddr[0] = _diamondInit;
61-
initAddr[1] = _hostItInit;
62-
63-
bytes[] memory initData = new bytes[](2);
64-
initData[0] = abi.encodeWithSignature("initDiamond(address)", _msgSender());
65-
initData[1] =
66-
abi.encodeWithSignature("initHostIt(address,uint8[],address[])", _ticketProxy, _feeTypes, _addresses);
6751

68-
calldata_ = abi.encodeWithSignature("multiInit(address[],bytes[])", initAddr, initData);
52+
cuts_[2] = FacetCut({
53+
facetAddress: _checkInFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("CheckInFacet")
54+
});
6955
}
7056
}

test/states/DeployedHostItTickets.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ abstract contract DeployedHostItTickets is Test {
5050
function setUp() public virtual {
5151
deployHostItTickets = new DeployHostItTicketsTest();
5252
hostIt = deployHostItTickets.run();
53+
deployHostItTickets.init(hostIt);
5354

5455
diamondCut = IDiamondCut(hostIt);
5556
diamondLoupe = IDiamondLoupe(hostIt);

0 commit comments

Comments
 (0)