Skip to main content

GPv2AllowListAuthentication Contract

The GPv2AllowListAuthentication contract manages solver authorization for CoW Protocol settlements through an allowlist-based access control system.

Architecture

The contract employs a two-tier access model:
  • Manager - Handles day-to-day solver administration
  • Proxy Owner - Top-level administrator with override capabilities

State Variables

VariableTypeDescription
manageraddressAddress with permissions to add/remove solvers
solversmapping(address => bool)Private mapping tracking authorized solver addresses

Functions

initializeManager()

One-time initialization for proxy deployment:
function initializeManager(address manager_) external initializer {
    manager = manager_;
    emit ManagerChanged(manager_);
}

setManager()

Transfers the manager role. Can be called by the current manager or proxy owner:
function setManager(address manager_) external onlyManagerOrOwner {
    manager = manager_;
    emit ManagerChanged(manager_);
}

addSolver()

Grants solver authorization (manager only):
function addSolver(address solver) external onlyManager {
    solvers[solver] = true;
    emit SolverAdded(solver);
}

removeSolver()

Revokes solver authorization (manager only):
function removeSolver(address solver) external onlyManager {
    solvers[solver] = false;
    emit SolverRemoved(solver);
}

isSolver()

Checks solver authorization status (public view):
function isSolver(address solver) external view returns (bool) {
    return solvers[solver];
}

Access Control Modifiers

ModifierAllowed Callers
onlyManagerCurrent manager address only
onlyManagerOrOwnerManager or proxy admin

Events

event ManagerChanged(address newManager);
event SolverAdded(address solver);
event SolverRemoved(address solver);

Proxy Integration

The contract supports EIP-1967 compliant proxies, enabling:
  • Upgradeability of the authentication logic
  • Emergency governance override through proxy admin
  • Consistent address across upgrades
Last modified on March 4, 2026