> For the complete documentation index, see [llms.txt](https://docs.summer.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.summer.fi/lazy-summer-protocol/governance/usdsumr-token/delegation.md).

# Delegation

Delegation lets token holders assign their voting power to another address while keeping full ownership of their tokens. Under **Governance V2**, delegation no longer carries any voting-power decay; governance power is constant for the duration of your stake or lock.

## How Delegation Works

When you delegate, you keep full ownership and control of your tokens while granting your voting rights to another address. The delegate can vote with the combined voting power but cannot transfer or otherwise use your tokens.

Because governance power under V2 is based on **staked SUMR (stSUMR)**, delegation is set up after you stake. Note that **staking (or migrating from Staking V1) resets any prior delegation**, so you must re-delegate to your chosen delegate after staking.

### Delegation Rules

Delegation chains are limited to a maximum depth of **2** to keep the system efficient:

* Valid: Alice → Bob → Charlie
* Invalid: Alice → Bob → Charlie → David (exceeds the maximum depth)

### Tips for Effective Delegation

Choose delegates who actively participate in governance. Monitor your delegation through the governance interface and re-delegate if your delegate becomes inactive. Active delegates who meet the eligibility criteria may be compensated through the Delegate Rewards Framework (see Rewards).

### Core Functions

```solidity
function delegate(address delegatee) public onlyHubChain {
    super.delegate(delegatee);
}
```

Delegation runs on the hub chain (Base) and records delegation via the ERC20Votes contract.

```solidity
function getVotes(address account) public view returns (uint256) {
    return super.getVotes(account);
}
```

`getVotes` returns an account's voting power (staked SUMR + delegated power). Under V2 no decay factor is applied.

```solidity
function getDelegationChainLength(address account) external view returns (uint256);
```

Tracks delegation depth, stopping at `MAX_DELEGATION_DEPTH` (2); returns 0 for null/self-delegations.

> The V1 decay functions (`getDecayFactor`, `updateDecay`, `decayState`) have been retired under Governance V2 and no longer affect voting power or rewards.
