Skip to content
Open

Dev #18

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3af0d76
Replace erc2535-diamond-template with diamond-lib
dadadave80 Oct 13, 2025
43e62bf
Refactor diamond initialization logic in deployment scripts
dadadave80 Oct 13, 2025
8ea25d4
Update HostItTickets constructor signature
dadadave80 Oct 13, 2025
c010550
Add diamond-lib as a git submodule
dadadave80 Oct 13, 2025
611dead
Update dependencies in foundry.lock
dadadave80 Oct 13, 2025
83c4d24
Add comment for addresses and fees retrieval
dadadave80 Oct 13, 2025
a38584f
Refactor function order in LibMarketplace
dadadave80 Oct 13, 2025
eebb869
Add refund claim functionality to marketplace
dadadave80 Oct 14, 2025
7c6b417
Add maxTicketsPerUser to ticket data update
dadadave80 Oct 14, 2025
51ce46b
Add refund claim tests and enable refunds
dadadave80 Oct 14, 2025
9cb8d42
Update proxy contracts and documentation
dadadave80 Oct 14, 2025
0201904
Refactor HostIt fee logic and update interface docs
dadadave80 Oct 14, 2025
865cbe7
Return ticket ID from createTicket functions
dadadave80 Oct 14, 2025
d2304c8
Add NatSpec and custom storage comments
dadadave80 Oct 14, 2025
611e6d2
Add NatSpec comments
dadadave80 Oct 14, 2025
2e94b63
use uint48 for time
dadadave80 Oct 14, 2025
cd674e2
Enable instant withdrawals for non refundable tickets
dadadave80 Oct 15, 2025
e3d2658
Emit initialization fields
dadadave80 Oct 15, 2025
8a8eb59
Remove indexing of array logs
dadadave80 Oct 15, 2025
84f2960
Use uint40 for tokenId
dadadave80 Oct 15, 2025
83170ee
Update diamond lib
dadadave80 Oct 17, 2025
631f491
Split diamond and HostIt deployment
dadadave80 Oct 17, 2025
865a36e
Delete broadcast/DeployHostItTicketsLisk.s.sol/4202 directory
dadadave80 Oct 18, 2025
91f7d81
Add badge for Ask DeepWiki to README
dadadave80 Nov 3, 2025
3a4a3b6
forge fmt
dadadave80 Nov 3, 2025
481cc0d
Rename script helper to helpers and update imports
dadadave80 Nov 3, 2025
611a1ff
Update .env sample fields
dadadave80 Nov 3, 2025
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
11 changes: 9 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,12 @@ AVALANCHE_VERIFIER_URL=https://api.routescan.io/v2/network/mainnet/evm/43114/eth
AVALANCHE_FUJI_VERIFIER_URL=https://api.routescan.io/v2/network/testnet/evm/43113/etherscan

# ACCOUNTS
ACCOUNT=
WALLET_ADDR=
ETH_KEYSTORE_ACCOUNT=
WALLET_ADDR=

# SALT
DIAMOND_CUT_SALT=
DIAMOND_LOUPE_SALT=
OWNABLE_ROLES_SALT=
DIAMOND_INIT_SALT=
HOST_IT_SALT=
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
[submodule "lib/solady"]
path = lib/solady
url = https://github.com/Vectorized/solady
[submodule "lib/erc2535-diamond-template"]
path = lib/erc2535-diamond-template
url = https://github.com/dadadave80/erc2535-diamond-template
[submodule "lib/contracts"]
path = lib/contracts
url = https://github.com/tokenbound/contracts
[submodule "lib/diamond-lib"]
path = lib/diamond-lib
url = https://github.com/dadadave80/diamond-lib
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/hostit-events/ticket)

# HostIt Protocol - Ticket Smart Contracts

## Overview
Expand Down
707 changes: 0 additions & 707 deletions broadcast/DeployHostItTicketsLisk.s.sol/4202/run-1756240758.json

This file was deleted.

707 changes: 0 additions & 707 deletions broadcast/DeployHostItTicketsLisk.s.sol/4202/run-latest.json

This file was deleted.

32 changes: 10 additions & 22 deletions foundry.lock
Original file line number Diff line number Diff line change
@@ -1,29 +1,17 @@
{
"lib/solady": {
"rev": "33b4b98e350bbcba6aa85642957c313e98b5f911"
},
"lib/forge-std": {
"tag": {
"name": "v1.10.0",
"rev": "8bbcf6e3f8f62f419e5429a0bd89331c85c37824"
}
"lib/contracts": {
"rev": "bce75f985558fad3d06ee1b86f224f0cfb783631"
},
"lib/erc2535-diamond-template": {
"tag": {
"name": "v1.0.0-rc.3",
"rev": "cbc0de4c7e72210150a56b69a00bf03f2c22a9b2"
}
"lib/diamond-lib": {
"rev": "f1dfda3a56ce134326a1914fdb2039abb2625c02"
},
"lib/contracts": {
"tag": {
"name": "v0.3.1",
"rev": "2bd70ff3fb5f1c0e562425b4d5312f619d9f2720"
}
"lib/forge-std": {
"rev": "551a2d30d7fecba7092ab45a587b5268149a48fb"
},
"lib/openzeppelin-contracts-upgradeable": {
"tag": {
"name": "v5.4.0",
"rev": "e725abddf1e01cf05ace496e950fc8e243cc7cab"
}
"rev": "e725abddf1e01cf05ace496e950fc8e243cc7cab"
},
"lib/solady": {
"rev": "208e4f31cfae26e4983eb95c3488a14fdc497ad7"
}
}
1 change: 1 addition & 0 deletions lib/diamond-lib
Submodule diamond-lib added at f1dfda
1 change: 0 additions & 1 deletion lib/erc2535-diamond-template
Submodule erc2535-diamond-template deleted from ac991b
14 changes: 7 additions & 7 deletions remappings.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@tokenbound/=lib/contracts/src/
@diamond-errors/=lib/erc2535-diamond-template/src/libraries/errors/
@diamond-logs/=lib/erc2535-diamond-template/src/libraries/logs/
@diamond-script/=lib/erc2535-diamond-template/script/
@diamond-storage/=lib/erc2535-diamond-template/src/libraries/storage/
@diamond-test/=lib/erc2535-diamond-template/test/
@diamond/=lib/erc2535-diamond-template/src/
@diamond-errors/=lib/diamond-lib/src/libraries/errors/
@diamond-logs/=lib/diamond-lib/src/libraries/logs/
@diamond-script/=lib/diamond-lib/script/
@diamond-storage/=lib/diamond-lib/src/libraries/storage/
@diamond-test/=lib/diamond-lib/test/
@diamond/=lib/diamond-lib/src/
account-abstraction/=lib/contracts/lib/account-abstraction/contracts/
contracts/=lib/contracts/src/
diamond-lib/=lib/diamond-lib/
ds-test/=lib/contracts/lib/forge-std/lib/ds-test/src/
erc2535-diamond-template/=lib/erc2535-diamond-template/
erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/
erc6551/=lib/contracts/lib/erc6551/
forge-std/=lib/forge-std/src/
Expand Down
59 changes: 36 additions & 23 deletions script/DeployHostItTickets.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ pragma solidity 0.8.30;
import {DiamondCutFacet} from "@diamond/facets/DiamondCutFacet.sol";
import {DiamondLoupeFacet} from "@diamond/facets/DiamondLoupeFacet.sol";
import {OwnableRolesFacet} from "@diamond/facets/OwnableRolesFacet.sol";
import {ERC165Init} from "@diamond/initializers/ERC165Init.sol";
import {MultiInit} from "@diamond/initializers/MultiInit.sol";
import {DiamondInit} from "@diamond/initializers/DiamondInit.sol";
import {IDiamondCut} from "@diamond/interfaces/IDiamondCut.sol";
import {UpgradeableBeacon} from "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
import {DeployHostItTicketsHelper} from "@ticket-script/helper/DeployHostItTicketsHelper.sol";
import {LibAddressesAndFees} from "@ticket-script/helper/LibAddressesAndFees.sol";
import {DeployHostItTicketsHelper} from "@ticket-script/helpers/DeployHostItTicketsHelper.sol";
import {LibAddressesAndFees} from "@ticket-script/helpers/LibAddressesAndFees.sol";
import {HostItTickets} from "@ticket/HostItTickets.sol";
import {CheckInFacet} from "@ticket/facets/CheckInFacet.sol";
import {FactoryFacet} from "@ticket/facets/FactoryFacet.sol";
Expand All @@ -21,40 +21,53 @@ import {Script} from "forge-std/Script.sol";
contract DeployHostItTicketsTest is Script, DeployHostItTicketsHelper {
function run() public returns (address hostIt_) {
vm.startBroadcast();
// Deploy facets
address diamondCutFacet = address(new DiamondCutFacet());
address diamondLoupeFacet = address(new DiamondLoupeFacet());
address ownableRolesFacet = address(new OwnableRolesFacet());
// Facets
address diamondCutFacet = address(new DiamondCutFacet{salt: vm.envBytes32("DIAMOND_CUT_SALT")}());
address diamondLoupeFacet = address(new DiamondLoupeFacet{salt: vm.envBytes32("DIAMOND_LOUPE_SALT")}());
address ownableRolesFacet = address(new OwnableRolesFacet{salt: vm.envBytes32("OWNABLE_ROLES_SALT")}());

// Initializer
address diamondInit = address(new DiamondInit{salt: vm.envBytes32("DIAMOND_INIT_SALT")}());

// Deploy HostItTickets diamond
hostIt_ = address(
new HostItTickets{salt: vm.envBytes32("HOST_IT_SALT")}(
_createInitFacetCuts(diamondCutFacet, diamondLoupeFacet, ownableRolesFacet),
diamondInit,
abi.encodeWithSignature("initDiamond(address)", _msgSender())
)
);
vm.stopBroadcast();
}

function init(address _hostIt) public {
vm.startBroadcast();
address factoryFacet = address(new FactoryFacet());
address checkInFacet = address(new CheckInFacet());
address marketplaceFacet = address(new MarketplaceFacet());
address checkInFacet = address(new CheckInFacet());

// Deploy initializers
address multiInit = address(new MultiInit());
address erc165Init = address(new ERC165Init());
// Deploy initializer
address hostItInit = address(new HostItInit());

// Deploy Ticket Impl
address ticketImpl = address(new Ticket());

// Deploy Ticket Beacon
address ticketBeacon = address(new UpgradeableBeacon(ticketImpl, _msgSender()));
address ticketBeacon = address(new UpgradeableBeacon(ticketImpl, _hostIt));

// Deploy Ticket Proxy
address ticketProxy = address(new TicketProxy(ticketBeacon));

// Get addresses and fees
(address[] memory addresses, uint8[] memory feeTypes) =
LibAddressesAndFees._getAddressesAndFeesByChainId(block.chainid);

// Deploy HostItTickets diamond
hostIt_ = address(
new HostItTickets(
_createFacetCuts(
diamondCutFacet, diamondLoupeFacet, ownableRolesFacet, factoryFacet, checkInFacet, marketplaceFacet
),
_createDiamondArgs(multiInit, erc165Init, hostItInit, ticketProxy, feeTypes, addresses)
)
);
// Initialize HostItTickets
IDiamondCut(_hostIt)
.diamondCut(
_createHostItFacetCuts(factoryFacet, marketplaceFacet, checkInFacet),
hostItInit,
abi.encodeWithSelector(HostItInit.initHostIt.selector, ticketProxy, feeTypes, addresses)
);
vm.stopBroadcast();
}
}
75 changes: 0 additions & 75 deletions script/helper/DeployHostItTicketsHelper.sol

This file was deleted.

56 changes: 56 additions & 0 deletions script/helpers/DeployHostItTicketsHelper.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity 0.8.30;

import {FacetCut, FacetCutAction} from "@diamond-storage/DiamondStorage.sol";
import {GetSelectors} from "@diamond-test/helpers/GetSelectors.sol";
import {Context} from "@openzeppelin/contracts/utils/Context.sol";

abstract contract DeployHostItTicketsHelper is GetSelectors, Context {
function _createInitFacetCuts(address _diamondCutFacet, address _diamondLoupeFacet, address _ownableRolesFacet)
internal
view
returns (FacetCut[] memory cuts_)
{
cuts_ = new FacetCut[](3);

cuts_[0] = FacetCut({
facetAddress: _diamondCutFacet,
action: FacetCutAction.Add,
functionSelectors: _getSelectors("DiamondCutFacet")
});

cuts_[1] = FacetCut({
facetAddress: _diamondLoupeFacet,
action: FacetCutAction.Add,
functionSelectors: _getSelectors("DiamondLoupeFacet")
});

cuts_[2] = FacetCut({
facetAddress: _ownableRolesFacet,
action: FacetCutAction.Add,
functionSelectors: _getSelectors("OwnableRolesFacet")
});
}

function _createHostItFacetCuts(address _factoryFacet, address _marketplaceFacet, address _checkInFacet)
internal
view
returns (FacetCut[] memory cuts_)
{
cuts_ = new FacetCut[](3);

cuts_[0] = FacetCut({
facetAddress: _factoryFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("FactoryFacet")
});

cuts_[1] = FacetCut({
facetAddress: _marketplaceFacet,
action: FacetCutAction.Add,
functionSelectors: _getSelectors("MarketplaceFacet")
});

cuts_[2] = FacetCut({
facetAddress: _checkInFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("CheckInFacet")
});
}
}
14 changes: 9 additions & 5 deletions src/HostItTickets.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;

import {Diamond, DiamondArgs, FacetCut} from "@diamond/Diamond.sol";
import {Diamond, FacetCut} from "@diamond/Diamond.sol";

/*
⣾⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆
Expand Down Expand Up @@ -34,11 +34,15 @@ import {Diamond, DiamondArgs, FacetCut} from "@diamond/Diamond.sol";
*/

/// @title HostIt Tickets
/// @notice Implements EIP-2535 Diamond proxy pattern, allowing dynamic addition, replacement, and removal of facets
/// @notice Implements ERC-2535 Diamond proxy pattern, allowing dynamic addition, replacement, and removal of facets
/// @author HostIt Protocol
contract HostItTickets is Diamond {
/// @notice Initializes the Diamond proxy with the provided facets and initialization parameters
/// @param _diamondCut Array of FacetCut structs defining facet addresses, corresponding function selectors, and actions (Add, Replace, Remove)
/// @param _args Struct containing the initial owner address, optional init contract address, and init calldata
constructor(FacetCut[] memory _diamondCut, DiamondArgs memory _args) payable Diamond(_diamondCut, _args) {}
/// @param _facetCuts Array of FacetCut structs defining facet addresses, corresponding function selectors, and actions (Add, Replace, Remove)
/// @param _init Address of the initialization contract
/// @param _calldata Initialization calldata to be passed to the init contract
constructor(FacetCut[] memory _facetCuts, address _init, bytes memory _calldata)
payable
Diamond(_facetCuts, _init, _calldata)
{}
}
2 changes: 1 addition & 1 deletion src/facets/CheckInFacet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ contract CheckInFacet is ICheckIn {
// EXTERNAL FUNCTIONS
//////////////////////////////////////////////////////////////////////////*//

function checkIn(uint64 _ticketId, address _ticketOwner, uint256 _tokenId) external {
function checkIn(uint64 _ticketId, address _ticketOwner, uint40 _tokenId) external {
_ticketId._checkin(_ticketOwner, _tokenId);
}

Expand Down
3 changes: 2 additions & 1 deletion src/facets/FactoryFacet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ contract FactoryFacet is IFactory {

function createTicket(TicketData calldata _ticketData, FeeType[] calldata _feeTypes, uint256[] calldata _fees)
external
returns (uint64)
{
_ticketData._createTicket(_feeTypes, _fees);
return _ticketData._createTicket(_feeTypes, _fees);
}

function updateTicket(TicketData calldata _ticketData, uint64 _ticketId) external {
Expand Down
Loading
Loading