Q2 2026 Security & Compliance Report67 incidents, $764M in losses, 88% from operational failures.
Get the report →

Audit name:

[SCA] Ideologi | Ideologi-Contracts | Feb2025

Date:

Mar 16, 2026

Table of Content

→Introduction
→Audit Summary
→System Overview
→Potential Risks
→Findings
→Appendix 1. Definitions
→Appendix 2. Scope
→Appendix 3. Additional Valuables
→Disclaimer

Want a comprehensive audit report like this?

Introduction

We express our gratitude to the Ideologi team for the collaborative engagement that enabled the execution of this Smart Contract Security Assessment.

Hyperlogue allows for brainstorming tournaments (Funded, Unfunded, or TokenExchange) where participants join during a configured time window, optionally paying tokens, and outcomes are finalized by posting a signed Merkle root that drives payouts/refunds. An upgradeable HyperlogueCreator contract enforces backend-signed actions and configurable platform fees, while type-specific libraries handle lifecycle rules, fee accounting, and token/ETH movements for each hyperlogue variant.

Document

NameSmart Contract Code Review and Security Analysis Report for Ideologi
Audited ByTurgay Arda Usman, Kornel Światłowski
Approved BySeher Saylik
Websitehttps://www.ideologi.org/→
Changelog17/02/2026 - Preliminary Report
04/03/2026 - Final Report
16/03/2026 - Updated Final Report
PlatformEVM
LanguageSolidity
TagsUpgradable, Signatures, Centralization
Methodologyhttps://docs.hacken.io/methodologies/smart-contracts→
  • Document

    Name
    Smart Contract Code Review and Security Analysis Report for Ideologi
    Audited By
    Turgay Arda Usman, Kornel Światłowski
    Approved By
    Seher Saylik
    Changelog
    17/02/2026 - Preliminary Report
    04/03/2026 - Final Report
    16/03/2026 - Updated Final Report
    Platform
    EVM
    Language
    Solidity
    Tags
    Upgradable, Signatures, Centralization

Review Scope

Repositoryhttps://github.com/Syntax-Studios-Org/ideologi-contracts→
Commit699306c80b000069b29d8054aec98bd4eee67384
Final Commit4ea2f9438354bb98f4ff76afe836ba27194587d4
Updated Final Commit957de5ba7f7f81c81b18a838b0d42da9880dee0b

Audit Summary

22Total Findings
19Resolved
2Accepted
1Mitigated

The system users should acknowledge all the risks summed up in the risks section of the report

Documentation quality

  • Functional requirements are provided.

    • The business logic and the aim of the project are specified.

  • Technical description is provided.

Code quality

  • The development environment is configured.

  • NatSpec covers the code and is detailed.

Test coverage

Code coverage of the project is 80.13% (branch coverage).

  • Deployment and basic user interactions are covered with tests.

  • Negative cases coverage is present.

  • 364 of 364 tests passed.

System Overview

HyperlogueCreator - Main upgradeable entrypoint contract (UUPS + AccessControl + EIP-712). It validates backend signatures (create/join/post-root), stores all hyperlogue state in a single storage layout, and routes each action to the correct per-type library (Funded, Unfunded, TokenExchange). Also exposes admin/maintainer setters for platform fees/limits and view helpers to query hyperlogues, roots, participants, and config.

FundedHyperlogue - Library implementing the Funded hyperlogue lifecycle: create, join (with optional participant fee), increase max participants, increase creator contribution, reject, refund (batch), post payout merkle root, and claim payouts. Handles ERC20 transfers + fee accounting (contribution fee to treasury; agency fee to creator), enforces timing/participant constraints, and uses a bitmap to prevent double-claims per hyperlogue id.

UnfundedHyperlogue - Library implementing the Unfunded hyperlogue lifecycle: create, join, increase max participants, reject, and post payout merkle root. No token claim flow; instead, it focuses on participant management plus an ETH-based payment model for increasing max participants beyond a configured free tier.

TokenExchangeHyperlogue - Library implementing the Token Exchange hyperlogue lifecycle where creator deposits a payout token, participants contribute a different participant token, and participants later claim payout-token rewards via a merkle root (after a configured reward-claim date). Tracks and distributes dual-token fees (creator-side contribution fee in payout token + participant-side contribution fee in participant token to treasury) and routes the accumulated participant tokens to the creator as “agencyFee/reward”.

SafeERC20WithTaxCheck - Small helper library wrapping safeTransferFrom() to compute the actual amount received (by balance delta) and revert if it’s below a required minimum—useful for fee-on-transfer / taxed tokens.

Structs - Defines the core data model: Hyperlogue, the shared Storage struct (all mappings/sets/bitmaps + configs + signer/treasury/relayer), HyperlogueType, and the config structs used during initialization and fee/limit enforcement.

Events - Central list of emitted events for hyperlogue creation/join/refund/rejection, payout root posting, claims, and config/admin changes.

Errors - Central list of custom errors used across the contract and libraries (signature/timing/role/type/fee/participant-limit validation, refund/claim gating, etc.).

Privileged roles

HyperlogueCreator uses OpenZeppelin AccessControlUpgradeable (and UUPSUpgradeable for upgrades) as its access control mechanism. It defines the following roles with the following capabilities:

  • DEFAULT_ADMIN_ROLE can:

    • setSigner()

    • setResultPostRelayer()

    • setTreasury()

    • setAgencyFeePercentageThresholdForFundedHyperlogues()

    • setMaxContributionFeePercentage()

    • authorize upgrades via _authorizeUpgrade() (upgrade the implementation)

  • MAINTAINER_ROLE can:

    • setContributionFeePercentage()

    • setInitiatorPlatformFee()

    • setParticipantPlatformFee()

    • setInitiatorPeripheryPlatformFee()

    • setFreeParticipantsForUnfundedHyperlogues()

    • setPerParticipantFeeForUnfundedHyperlogues()

    • setMinOffsetForSubmissionStart()

    • setDefaultPostResultsGraceOffset()

    • setMaxPostResultsGraceOffset()

    • setMinimumMaxParticipants()

    • setMaxRewardClaimOffsetForTokenExchangeHyperlogues()

  • MODERATOR_ROLE can:

    • rejectHyperlogue()

It also relies on privileged addresses (not roles) that gate critical actions:

  • signer (backend EIP-712 signer) effectively authorizes:

    • createHyperlogue()

    • joinHyperlogue()

    • postPayoutRoot()

  • resultPostRelayer can (depending on time window enforced in the libraries):

    • postPayoutRoot() after maxReleaseTimeByAgent

  • treasury:

    • receives protocol fees; claimEth() (callable by anyone) transfers all ETH balance to treasury

FundedHyperlogue is a library and does not define AccessControl roles; privileged behavior is enforced via actor/time checks:

  • Hyperlogue creator can:

    • increaseMaxParticipants()

    • increaseCreatorContribution()

    • postPayoutRoot() before maxReleaseTimeByAgent

  • resultPostRelayer can:

    • postPayoutRoot() after maxReleaseTimeByAgent

  • Moderator (MODERATOR_ROLE on HyperlogueCreator) can:

    • rejectHyperlogue() (via HyperlogueCreator routing into the library)

Other flows are generally permissionless (but condition-gated), e.g.:

  • refundHyperlogue() (batch refunds when minimum participants not reached)

  • claimFeesFromHyperlogue() (once root is posted and minimum participants reached)

UnfundedHyperlogue is a library and does not define AccessControl roles; privileged behavior is enforced via actor/time checks:

  • Hyperlogue creator can:

    • increaseMaxParticipants()

    • postPayoutRoot() before maxReleaseTimeByAgent

  • resultPostRelayer can:

    • postPayoutRoot() after maxReleaseTimeByAgent

  • Moderator (MODERATOR_ROLE on HyperlogueCreator) can:

    • rejectHyperlogue() (via HyperlogueCreator routing into the library)

TokenExchangeHyperlogue is a library and does not define AccessControl roles; privileged behavior is enforced via actor/time checks:

  • Hyperlogue creator can:

    • increaseMaxParticipants()

    • increaseCreatorContribution()

    • postPayoutRoot() before maxReleaseTimeByAgent

  • resultPostRelayer can:

    • postPayoutRoot() after maxReleaseTimeByAgent

  • Moderator (MODERATOR_ROLE on HyperlogueCreator) can:

    • rejectHyperlogue() (via HyperlogueCreator routing into the library)

Other flows are permissionless (but condition-gated), e.g.:

  • claimFromHyperlogue() (requires rewardClaimDate reached, valid merkle proof, and minimum participants)

  • claimFeesFromHyperlogue() (once root is posted and minimum participants reached)

Potential Risks

Reliance on Off-Chain Merkle Tree Generation for Payout Distribution: The payout mechanism for completed Hyperlogues relies on an off-chain backend system to generate and sign a Merkle tree root, which is then submitted on-chain by the creator or a designated relayer. Each Merkle tree leaf defines a participant address and the corresponding claimable payout amount. The contract itself does not perform on-chain validation to confirm that the full payout amount is distributed or that allocations precisely reflect the intended participant set. Since payout calculations and Merkle tree construction occur entirely off-chain, any malfunction, misconfiguration, or compromise of the backend system could potentially lead to incorrect payout allocations, including cases where tokens become claimable by unintended or non-participating addresses.

Single Points of Failure and Control: The project is fully or partially centralized, introducing single points of failure and control. This centralization can lead to vulnerabilities in decision-making and operational processes, making the system more susceptible to targeted attacks or manipulation.

Administrative Key Control Risks: The digital contract architecture relies on administrative keys for critical operations. Centralized control over these keys presents a significant security risk, as compromise or misuse can lead to unauthorized actions or loss of funds.

Flexibility and Risk in Contract Upgrades: The project's contracts are upgradable, allowing administrators to update the contract logic when necessary. While this flexibility can be beneficial for addressing issues and improving the system, it also introduces certain risks if upgrade procedures are not properly controlled or secured, as unauthorized or improper upgrades could affect the system’s integrity.

Absence of Upgrade Window Constraints: The contract suite allows upgrades to be executed immediately without a mandatory review or waiting period. While this enables fast response to issues, it may also increase the risk of quickly deploying flawed or unintended changes that could impact system integrity or user assets.

Insufficient Multi-signature Controls for Critical Functions: The lack of multi-signature requirements for key operations centralizes decision-making power, increasing vulnerability to single points of failure or malicious insider actions, potentially leading to unauthorized transactions or configuration changes.

Owner's Unrestricted State Modification: The owner currently has broad permissions to modify certain state variables. While this may be intended for administrative flexibility, unrestricted modification capabilities can potentially affect contract integrity and user trust, particularly during sensitive operations such as minting phases.

Findings

F-2026-1511Refund Mechanism Fails for Funded Hyperlogues With Zero Participant Fee
Status
fixed
Severity

High
F-2026-1505Creator Contribution Fee Accounting Discrepancy Causes Insolvency
Status
fixed
Severity

High
F-2026-1505Incomplete EIP-712 Signature Verification Allows Parameter Manipulation
Status
fixed
Severity

High
F-2026-1511Reentrancy Vulnerabilities in Core Hyperlogue Functions
Status
fixed
Severity

Medium
F-2026-1508Payout Claim Allowed for Non-Participants in Hyperlogue
Status
fixed
Severity

Medium
F-2026-1505 Mismatch Between Depositor and Creator Addresses Can Lead to Permanent Funds Lock
Status
fixed
Severity

Medium
F-2026-1494Creator Refund Failure Blocks Participant Refunds
Status
fixed
Severity

Medium
F-2026-1505Time-Based Access Control Bypass in postPayoutRoot
Status
fixed
Severity

Low
F-2026-1513Absence of Granular Role Separation
Status
mitigated
Severity

Low
F-2026-1511 Inconsistent Validation Leads to Bypass of Minimum Participants
Status
fixed
Severity

Low
Code
―
Title
Status
Severity
F-2026-1511Refund Mechanism Fails for Funded Hyperlogues With Zero Participant Fee
fixed

High
F-2026-1505Creator Contribution Fee Accounting Discrepancy Causes Insolvency
fixed

High
F-2026-1505Incomplete EIP-712 Signature Verification Allows Parameter Manipulation
fixed

High
F-2026-1511Reentrancy Vulnerabilities in Core Hyperlogue Functions
fixed

Medium
F-2026-1508Payout Claim Allowed for Non-Participants in Hyperlogue
fixed

Medium
F-2026-1505 Mismatch Between Depositor and Creator Addresses Can Lead to Permanent Funds Lock
fixed

Medium
F-2026-1494Creator Refund Failure Blocks Participant Refunds
fixed

Medium
F-2026-1505Time-Based Access Control Bypass in postPayoutRoot
fixed

Low
F-2026-1513Absence of Granular Role Separation
mitigated

Low
F-2026-1511 Inconsistent Validation Leads to Bypass of Minimum Participants
fixed

Low
1-10 of 22 findings

Identify vulnerabilities in your smart contracts.

Appendix 1. Definitions

Severities

When auditing smart contracts, Hacken is using a risk-based approach that considers Likelihood, Impact, Exploitability and Complexity metrics to evaluate findings and score severities.

Reference on how risk scoring is done is available through the repository in our Github organization:

Severity

Description

Critical
Critical vulnerabilities are usually straightforward to exploit and can lead to the loss of user funds or contract state manipulation.

High
High vulnerabilities are usually harder to exploit, requiring specific conditions, or have a more limited scope, but can still lead to the loss of user funds or contract state manipulation.

Medium
Medium vulnerabilities are usually limited to state manipulations and, in most cases, cannot lead to asset loss. Contradictions and requirements violations. Major deviations from best practices are also in this category.

Low
Major deviations from best practices or major Gas inefficiency. These issues will not have a significant impact on code execution.
  • Severity

    Critical

    Description

    Critical vulnerabilities are usually straightforward to exploit and can lead to the loss of user funds or contract state manipulation.

    Severity

    High

    Description

    High vulnerabilities are usually harder to exploit, requiring specific conditions, or have a more limited scope, but can still lead to the loss of user funds or contract state manipulation.

    Severity

    Medium

    Description

    Medium vulnerabilities are usually limited to state manipulations and, in most cases, cannot lead to asset loss. Contradictions and requirements violations. Major deviations from best practices are also in this category.

    Severity

    Low

    Description

    Major deviations from best practices or major Gas inefficiency. These issues will not have a significant impact on code execution.

Potential Risks

The "Potential Risks" section identifies issues that are not direct security vulnerabilities but could still affect the project’s performance, reliability, or user trust. These risks arise from design choices, architectural decisions, or operational practices that, while not immediately exploitable, may lead to problems under certain conditions. Additionally, potential risks can impact the quality of the audit itself, as they may involve external factors or components beyond the scope of the audit, leading to incomplete assessments or oversight of key areas. This section aims to provide a broader perspective on factors that could affect the project's long-term security, functionality, and the comprehensiveness of the audit findings.

Appendix 2. Scope

The scope of the project includes the following smart contracts from the provided repository:

Scope Details

Repositoryhttps://github.com/Syntax-Studios-Org/ideologi-contracts→
Commit699306c80b000069b29d8054aec98bd4eee67384
Final Commit4ea2f9438354bb98f4ff76afe836ba27194587d4
Updated Final Commit957de5ba7f7f81c81b18a838b0d42da9880dee0b
WhitepaperN/A
Requirementsprovided as a file
Technical RequirementsN/A
  • Scope Details

    Commit
    699306c80b000069b29d8054aec98bd4eee67384
    Final Commit
    4ea2f9438354bb98f4ff76afe836ba27194587d4
    Updated Final Commit
    957de5ba7f7f81c81b18a838b0d42da9880dee0b
    Whitepaper
    N/A
    Requirements
    provided as a file
    Technical Requirements
    N/A

Assets in Scope

src
errors
Errors.sol - src › errors › Errors.sol
events
Events.sol - src › events › Events.sol
HyperlogueCreator.sol - src › HyperlogueCreator.sol
libraries
FundedHyperlogue.sol - src › libraries › FundedHyperlogue.sol
SafeERC20WithTaxCheck.sol - src › libraries › SafeERC20WithTaxCheck.sol
TokenExchangeHyperlogue.sol - src › libraries › TokenExchangeHyperlogue.sol
UnfundedHyperlogue.sol - src › libraries › UnfundedHyperlogue.sol
structs
Structs.sol - src › structs › Structs.sol

Appendix 3. Additional Valuables

Additional Recommendations

The smart contracts in the scope of this audit could benefit from the introduction of automatic emergency actions for critical activities, such as unauthorized operations like ownership changes or proxy upgrades, as well as unexpected fund manipulations, including large withdrawals or minting events. Adding such mechanisms would enable the protocol to react automatically to unusual activity, ensuring that the contract remains secure and functions as intended.

To improve functionality, these emergency actions could be designed to trigger under specific conditions, such as:

  • Detecting changes to ownership or critical permissions.

  • Monitoring large or unexpected transactions and minting events.

  • Pausing operations when irregularities are identified.

These enhancements would provide an added layer of security, making the contract more robust and better equipped to handle unexpected situations while maintaining smooth operations.

Frameworks and Methodologies

This security assessment was conducted in alignment with recognised penetration testing standards, methodologies and guidelines, including the NIST SP 800-115 – Technical Guide to Information Security Testing and Assessment →, and the Penetration Testing Execution Standard (PTES) →, These assets provide a structured foundation for planning, executing, and documenting technical evaluations such as vulnerability assessments, exploitation activities, and security code reviews. Hacken’s internal penetration testing methodology extends these principles to Web2 and Web3 environments to ensure consistency, repeatability, and verifiable outcomes.

Disclaimer