Uniswap Voting Behavior

    Analysis of Voting Behavior In Uniswap

    Loading...

    Findings

    We can infer from the resulting table above that:

    • Only 2 of the top 5 delegates has cast a vote in the last 6 months.
    • The 2 voted on only one proposal (proposal no. 4).
    • They both voted in support of proposal no. 4
    Loading...

    Voting History Over Past 6 Months

    To get the voting history of the top 5 delegates, we map the addresses to votes cast in the past 6 months (180 days) at the GovernorAlpha contract (0x5e4be8bc9637f0eaa1a755019e06a68ce081d58f).

    Loading...

    Results & Discussion

    The resulting table is visualized in the chart below.

    Introduction

    UNI tokens have a deeper power as a voting mechanism. In order for UNI to be used as a vote, the owner must first go through the delegation process. Delegating UNI binds the voting power of tokens to an address so it may be used to vote. This address could be yourself, or a trusted party who you believe will vote in the best interest of Uniswap Governance.

    Under the hood, voting power is an unsigned 256bit integer that is transferred from the delegator to delegatee, and the new voting power of the delegatee (now delegate) is recorded. UNI delegation function is deployed at 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 and emits events when delegation is successful.

    Methodology

    1. Delegations are captured by the ethereum.events_emitted table. events_emitted provides two event types related to vote delegation. These are "DelegateChanged" and "DelegateVotesChanged".
    2. To track voting power across delegates, we query DelegateVotesChanged events.
    3. From the event input, we can get the delegate's address and the updated voting power.
    4. Next, we take the maximum voting power value associated with each address using the MAX() function.
    5. The result is ordered in descending order and limited to 5. This is to get the top 5 addresses with the largest voting power.

    This is how our final query and result table looks like.

    SELECT event_inputs:delegate::string AS delegate, MAX(ABS(event_inputs:newBalance)) AS voting_power
    FROM ethereum.events_emitted 
    WHERE contract_address='0x1f9840a85d5af5bf1d1762f925bdaddc4201f984' AND event_name = 'DelegateVotesChanged'
    GROUP BY 1
    ORDER BY 2 DESC
    LIMIT 5