• LISA
    LISA
    • Public Scans
    • My Scans
    1. Scan
    2. ...
    2025-07-08 08:39:32
    Public
    Full Disclosure

    Taiko Security Scan

    high3
    Created By:
    Credit Usage:

    Missing L2 Veto Aggregation Functionality

    HIGH

    Description

    The contract lacks a function to aggregate veto votes from Layer 2 (L2). The aggregatedL2Balance in the Proposal struct is intended to track L2 vetoes but is never updated. Without a mechanism to bridge L2 vetoes to L1, the veto tally is incomplete, leading to incorrect proposal outcomes. Proposals may pass when they should be vetoed if L2 voters oppose them, undermining the governance model.

    Recommendation

    Implement a function allowing the Taiko bridge or a trusted actor to submit aggregated L2 vetoes, updating aggregatedL2Balance and adjusting vetoTally accordingly. Ensure proper access control to prevent unauthorized submissions.

    Affected Lines

    Line 77 – 82

    Emergency Proposals Blocked by Minimum Duration Check

    HIGH

    Description

    Emergency proposals (with _duration=0) are intended to bypass the veto phase but are blocked by the minimum duration check. If governanceSettings.minDuration is greater than zero, creating an emergency proposal reverts, preventing critical actions from being executed promptly.

    Recommendation

    Exclude emergency proposals (_duration=0) from the minimum duration check. Modify the condition to if (_duration != 0 && _duration < governanceSettings.minDuration) to allow zero-duration proposals regardless of minDuration.

    Affected Lines

    Line 444 – 449

    Incorrect effective voting power calculation when L2 is enabled

    HIGH

    Description

    When L2 is available (_includeL2VotingPower is true), the effectiveVotingPower function returns the total token supply, including tokens bridged to L2. However, these bridged tokens are locked on L1 and should not be counted in the L1 voting power. This inflates the total voting power used to calculate the minVetoRatio, making it harder to reach the required veto threshold and potentially allowing proposals to pass without proper L1 consensus.

    Recommendation

    Adjust the effectiveVotingPower calculation to exclude bridged tokens even when L2 is enabled, as bridged tokens on L1 are locked and cannot participate in L1 vetoes. L2 vetoes should be aggregated separately via the missing function mentioned in the previous bug report.

    Affected Lines

    Line 243 – 252