mirror of
https://github.com/luxfi/liquid.git
synced 2026-10-30 16:21:07 +00:00
- Add Makefile with make security/audit/test/slither/semgrep/aderyn targets (uv-based venv) - Add foundry.toml lint config: suppress naming convention notes, enforce safety warnings - Replace slither.config.json with .slither.config.json (proper naming, foundry framework, exclude naming-convention/pragma/solc-version/assembly) - Fix foundry.toml fuzz_runs warning (move to [profile.lite.fuzz] section) - Harden CI: remove continue-on-error from all security tools in security.yml - Harden CI: set slither fail-on: medium (was: none) - Add .venv/, slither-report.json, semgrep-results.sarif, aderyn-report.md to .gitignore - Run forge fmt across entire codebase
80 lines
3.3 KiB
Solidity
80 lines
3.3 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.28;
|
|
|
|
import "@openzeppelin/contracts/governance/Governor.sol";
|
|
import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";
|
|
import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";
|
|
import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";
|
|
import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";
|
|
import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";
|
|
|
|
/// @title LiquidGovernor
|
|
/// @notice Minimal governance wrapper for the Liquid V3 Protocol
|
|
/// @dev Uses OpenZeppelin Governor with standard extensions
|
|
contract LiquidGovernor is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {
|
|
constructor(IVotes _token, TimelockController _timelock)
|
|
Governor("Liquid Governor")
|
|
GovernorSettings(
|
|
7200, // 1 day voting delay (~12s blocks)
|
|
50_400, // 1 week voting period
|
|
0 // 0 proposal threshold
|
|
)
|
|
GovernorVotes(_token)
|
|
GovernorVotesQuorumFraction(4) // 4% quorum
|
|
GovernorTimelockControl(_timelock)
|
|
{}
|
|
|
|
// Required overrides
|
|
|
|
function votingDelay() public view override(Governor, GovernorSettings) returns (uint256) {
|
|
return super.votingDelay();
|
|
}
|
|
|
|
function votingPeriod() public view override(Governor, GovernorSettings) returns (uint256) {
|
|
return super.votingPeriod();
|
|
}
|
|
|
|
function quorum(uint256 blockNumber) public view override(Governor, GovernorVotesQuorumFraction) returns (uint256) {
|
|
return super.quorum(blockNumber);
|
|
}
|
|
|
|
function state(uint256 proposalId) public view override(Governor, GovernorTimelockControl) returns (ProposalState) {
|
|
return super.state(proposalId);
|
|
}
|
|
|
|
function proposalNeedsQueuing(uint256 proposalId) public view override(Governor, GovernorTimelockControl) returns (bool) {
|
|
return super.proposalNeedsQueuing(proposalId);
|
|
}
|
|
|
|
function proposalThreshold() public view override(Governor, GovernorSettings) returns (uint256) {
|
|
return super.proposalThreshold();
|
|
}
|
|
|
|
function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)
|
|
internal
|
|
override(Governor, GovernorTimelockControl)
|
|
returns (uint48)
|
|
{
|
|
return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);
|
|
}
|
|
|
|
function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)
|
|
internal
|
|
override(Governor, GovernorTimelockControl)
|
|
{
|
|
super._executeOperations(proposalId, targets, values, calldatas, descriptionHash);
|
|
}
|
|
|
|
function _cancel(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)
|
|
internal
|
|
override(Governor, GovernorTimelockControl)
|
|
returns (uint256)
|
|
{
|
|
return super._cancel(targets, values, calldatas, descriptionHash);
|
|
}
|
|
|
|
function _executor() internal view override(Governor, GovernorTimelockControl) returns (address) {
|
|
return super._executor();
|
|
}
|
|
}
|