Skip to content
Merged

Dev #17

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
1fac5e8
chore: update dependencies
dadadave80 Sep 10, 2025
fe2165e
Update .gitignore to exclude broadcast files
dadadave80 Oct 12, 2025
c4c0063
Add Crytic export directory to .gitignore
dadadave80 Oct 12, 2025
f0c57df
Sort Imports
dadadave80 Oct 12, 2025
f13a17a
Rearrange rpc endpoints and verifier urls
dadadave80 Oct 12, 2025
58f1253
Increase ticketId to uint64
dadadave80 Oct 12, 2025
caac661
Use GetSelectors
dadadave80 Oct 12, 2025
9963f1c
Rename and extend AddressesAndFees library
dadadave80 Oct 13, 2025
d733627
Implement interfaces for CheckInFacet and FactoryFacet
dadadave80 Oct 13, 2025
449e532
Add hostItFeeBps to MarketplaceStorage struct
dadadave80 Oct 13, 2025
c04c26e
Update ticket structs with new fields and types
dadadave80 Oct 13, 2025
58160cc
Add medusa.json to .gitignore
dadadave80 Oct 13, 2025
90054a7
Refactor fee/address retrieval in deployment script
dadadave80 Oct 13, 2025
95f8fed
Update ASCII art in HostItTickets and TicketProxy
dadadave80 Oct 13, 2025
c6c181f
Update visibility and comments for view functions
dadadave80 Oct 13, 2025
0b15e46
Enhance ticket creation and error handling in LibFactory
dadadave80 Oct 13, 2025
5099a37
Refactor fee logic and error handling in LibMarketplace
dadadave80 Oct 13, 2025
e3c70bb
Refactor DeployedHostItTickets contract and update ticket data
dadadave80 Oct 13, 2025
2e085e5
Update adminTickets test and add fuzz test stubs
dadadave80 Oct 13, 2025
0a20644
Update foundry.toml optimizer and fuzz settings
dadadave80 Oct 13, 2025
314e0c4
Specify nightly version for Foundry installation
dadadave80 Oct 13, 2025
156233a
Change calculateHostItFee to view function
dadadave80 Oct 13, 2025
8ee0d04
Add HostIt fee basis points configuration
dadadave80 Oct 13, 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
2 changes: 2 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Show Forge version
run: |
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ out/
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/
*broadcast/

# Crytic
crytic-export/
medusa.json

# Docs
docs/
Expand Down
35 changes: 18 additions & 17 deletions foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,34 +14,35 @@ remappings = [
"@tokenbound/=lib/contracts/src/"
]
ffi = true
optimizer_runs = 30_000
optimizer_runs = 999_999

[fmt]
sort_imports = true

[fuzz]
runs = 10_000
max_test_rejects = 999_999

[rpc_endpoints]
# mainnet
eth-mainnet = "${ETH_MAINNET_URL}"
base = "${BASE_MAINNET_URL}"
lisk = "${LISK_MAINNET_URL}"
arbitrum-one = "${ARBITRUM_MAINNET_URL}"
avalanche = "${AVALANCHE_MAINNET_URL}"
# testnets
mainnet = "${ETH_MAINNET_URL}"
sepolia = "${ETH_SEPOLIA_URL}"
base = "${BASE_MAINNET_URL}"
base-sepolia = "${BASE_SEPOLIA_URL}"
lisk = "${LISK_MAINNET_URL}"
lisk-sepolia = "${LISK_SEPOLIA_URL}"
arbitrum-one = "${ARBITRUM_MAINNET_URL}"
arbitrum-sepolia = "${ARBITRUM_SEPOLIA_URL}"
avalanche = "${AVALANCHE_MAINNET_URL}"
avalanche-fuji = "${AVALANCHE_FUJI_URL}"

[etherscan]
# mainnet
eth-mainnet = { key = "${ETHERSCAN_API_KEY}" }
base = { key = "${ETHERSCAN_API_KEY}" }
lisk = { key = "123", url = "${LISK_VERIFIER_URL}" }
arbitrum-one = { key = "${ETHERSCAN_API_KEY}" }
avalanche = { key = "verifyContract", url = "${AVALANCHE_VERIFIER_URL}" }
# testnets
mainnet = { key = "${ETHERSCAN_API_KEY}" }
sepolia = { key = "${ETHERSCAN_API_KEY}" }
base = { key = "${ETHERSCAN_API_KEY}" }
base-sepolia = { key = "${ETHERSCAN_API_KEY}" }
lisk = { key = "123", url = "${LISK_VERIFIER_URL}" }
lisk-sepolia = { key = "123", url = "${LISK_SEPOLIA_VERIFIER_URL}" }
arbitrum-one = { key = "${ETHERSCAN_API_KEY}" }
arbitrum-sepolia = { key = "${ETHERSCAN_API_KEY}" }
avalanche = { key = "verifyContract", url = "${AVALANCHE_VERIFIER_URL}" }
avalanche-fuji = { key = "verifyContract", url = "${AVALANCHE_FUJI_VERIFIER_URL}" }

# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options
2 changes: 1 addition & 1 deletion lib/erc2535-diamond-template
26 changes: 11 additions & 15 deletions script/DeployHostItTickets.s.sol
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity 0.8.30;

import {Script} from "forge-std/Script.sol";
import {DiamondCutFacet} from "@diamond/facets/DiamondCutFacet.sol";
import {DiamondLoupeFacet} from "@diamond/facets/DiamondLoupeFacet.sol";
import {OwnableRolesFacet} from "@diamond/facets/OwnableRolesFacet.sol";
import {MultiInit} from "@diamond/initializers/MultiInit.sol";
import {ERC165Init} from "@diamond/initializers/ERC165Init.sol";
import {HostItInit} from "@ticket/inits/HostItInit.sol";
import {MultiInit} from "@diamond/initializers/MultiInit.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 {HostItTickets} from "@ticket/HostItTickets.sol";
import {FactoryFacet} from "@ticket/facets/FactoryFacet.sol";
import {CheckInFacet} from "@ticket/facets/CheckInFacet.sol";
import {FactoryFacet} from "@ticket/facets/FactoryFacet.sol";
import {MarketplaceFacet} from "@ticket/facets/MarketplaceFacet.sol";
import {AddressesAndFees} from "@ticket-script/helper/AddressesAndFees.sol";
import {UpgradeableBeacon} from "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol";
import {HostItInit} from "@ticket/inits/HostItInit.sol";
import {Ticket} from "@ticket/libs/Ticket.sol";
import {TicketProxy} from "@ticket/libs/TicketProxy.sol";
import {DeployHostItTicketsHelper} from "@ticket-script/helper/DeployHostItTicketsHelper.sol";
import {Script} from "forge-std/Script.sol";

contract DeployHostItTicketsTest is Script, DeployHostItTicketsHelper {
function run() public returns (address hostIt_) {
Expand All @@ -43,20 +43,16 @@ contract DeployHostItTicketsTest is Script, DeployHostItTicketsHelper {
// Deploy Ticket Proxy
address ticketProxy = address(new TicketProxy(ticketBeacon));

(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,
AddressesAndFees._getMockFeeTypes(),
AddressesAndFees._getMockAddresses()
)
_createDiamondArgs(multiInit, erc165Init, hostItInit, ticketProxy, feeTypes, addresses)
)
);
vm.stopBroadcast();
Expand Down
65 changes: 0 additions & 65 deletions script/DeployHostItTicketsLisk.s.sol

This file was deleted.

24 changes: 9 additions & 15 deletions script/helper/DeployHostItTicketsHelper.sol
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity 0.8.30;

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

abstract contract DeployHostItTicketsHelper is HelperContract, Context {
abstract contract DeployHostItTicketsHelper is GetSelectors, Context {
function _createFacetCuts(
address _diamondCutFacet,
address _diamondLoupeFacet,
Expand All @@ -14,43 +14,38 @@ abstract contract DeployHostItTicketsHelper is HelperContract, Context {
address _checkInFacet,
address _marketplaceFacet
) internal returns (FacetCut[] memory cuts_) {
// Create an array of FacetCut entries for standard facets
cuts_ = new FacetCut[](6);

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

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

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

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

cuts_[4] = FacetCut({
facetAddress: _checkInFacet,
action: FacetCutAction.Add,
functionSelectors: _generateSelectors("CheckInFacet")
facetAddress: _checkInFacet, action: FacetCutAction.Add, functionSelectors: _getSelectors("CheckInFacet")
});

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

Expand All @@ -71,7 +66,6 @@ abstract contract DeployHostItTicketsHelper is HelperContract, Context {
initData[1] =
abi.encodeWithSignature("initHostIt(address,uint8[],address[])", _ticketProxy, _feeTypes, _addresses);

// Prepare DiamondArgs: owner and init data
args_ = DiamondArgs({
owner: _msgSender(),
init: _multiInit,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,49 @@ pragma solidity ^0.8.4;
import {ERC20Mock} from "@openzeppelin/contracts/mocks/token/ERC20Mock.sol";
import {FeeType} from "@ticket-storage/MarketplaceStorage.sol";

library AddressesAndFees {
library LibAddressesAndFees {
function _getAddressesAndFeesByChainId(uint256 _chainId)
internal
returns (address[] memory addresses_, uint8[] memory feeTypes_)
{
if (_chainId == 1) {
addresses_ = _getEthereumAddresses();
feeTypes_ = _getEthereumFeeTypes();
} else if (_chainId == 8453) {
addresses_ = _getBaseAddresses();
feeTypes_ = _getBaseFeeTypes();
} else if (_chainId == 43114) {
addresses_ = _getAvalancheAddresses();
feeTypes_ = _getAvalancheFeeTypes();
} else if (_chainId == 42161) {
addresses_ = _getArbitrumOneAddresses();
feeTypes_ = _getArbitrumOneFeeTypes();
} else if (_chainId == 1135) {
addresses_ = _getLiskAddresses();
feeTypes_ = _getLiskFeeTypes();
} else if (_chainId == 11155111) {
addresses_ = _getEthereumSepoliaAddresses();
feeTypes_ = _getEthereumSepoliaFeeTypes();
} else if (_chainId == 84532) {
addresses_ = _getBaseSepoliaAddresses();
feeTypes_ = _getBaseSepoliaFeeTypes();
} else if (_chainId == 43113) {
addresses_ = _getAvalancheFujiAddresses();
feeTypes_ = _getAvalancheFujiFeeTypes();
} else if (_chainId == 421614) {
addresses_ = _getArbitrumSepoliaAddresses();
feeTypes_ = _getArbitrumSepoliaFeeTypes();
} else if (_chainId == 4202) {
addresses_ = _getLiskSepoliaAddresses();
feeTypes_ = _getLiskSepoliaFeeTypes();
} else if (_chainId == 31337) {
addresses_ = _getMockAddresses();
feeTypes_ = _getMockFeeTypes();
} else {
revert("Chain not supported");
}
}

//*//////////////////////////////////////////////////////////////////////////
// MAINNET ADDRESSES
//////////////////////////////////////////////////////////////////////////*//
Expand Down
Loading
Loading