Authors: MichiganBlockchain, @404DAO, @GFXlabs
TL;DR: Introduce an amendment to the Uniswap V3 Factory owner to allow the DAO to make future changes to the fee mechanism. This will prevent the DAO from being pigeonholed by a singular, immutable implementation, thereby enabling further experimentation and allowing the DAO to effectively respond to issues with the current setup.
Introduction
We appreciate the Uniswap Foundation’s effort on the protocol fee proposal and look forward to supporting the proposal at the onchain vote. Overall, the implementation proposed is well thought out and provides a strong foundation for the execution of a fee switch to strengthen Uniswap and its governance.
However, in the current proposal, the V3FactoryOwner.sol does not have a function to set a new owner to UniswapV3Factory.sol, making this a permanent change to the protocol. This is akin to locking a door and throwing away the key. If the proposal is approved, it will be impossible for anyone to alter the V3FactoryOwner.sol, which we believe is overly constrictive. Despite extensive analysis from several parties, it’s still unknown how activated protocol fees and this new governance mechanism will impact the protocol once implemented–and assuming that the DAO gets the implementation right the first time around is too optimistic. Hence, opting for full immutability stifles experimentation.
Since Uniswap V3 was launched 3 years ago, the DAO has had the power to use the setOwner() function of the UniswapV3Factory.sol contract. This capability has never been exploited, abused, or even used by governance or any bad actor. In addition, the DAO has shown its ability to steward the protocol over the course of the +40 proposals since V3’s deployment.
This proposed amendment, if passed, will add a setOwner() function to the V3FactoryOwner.sol contract. In the case that delegates wish to transition to a new system due to the potential ineffectiveness of the current system, a setOwner() function is necessary to include in the V3FactoryOwner.sol contract, just as it is necessary to make the currently proposed upgrade by the Uniswap Foundation.
Adding the setOwner() function would allow governance to make amendments to the current implementation. Removing this ability inhibits the jurisdiction of the DAO and partially signals a lack of trust in governance. The introduction of the setOwner() function requires very little code and will allow the DAO to prudently respond to any potential limitations that arise with the current implementation.
Reasoning
The goal of the Foundation’s proposal is twofold:
- To make the DAO more robust by engaging more circulating $UNI in governance
- Create an economic incentive for $UNI holders to delegate their $UNI
This amendment better accomplishes the above goals. Let’s break down why.
We Don’t Know If the Current Design is Best for the Token Holders and the DAO
@WintermuteGovernance put it well:
Immutability has its benefits, but it doesn’t come without a cost. Note, we are not addressing the nature of the core protocol smart contracts or staking contracts–those are indeed immutable. This proposal is about the contracts related to Uniswap v3 fees. Such an area is nascent and lacks experimentation. The DAO and the Foundation are responsible for ensuring token holders and delegates are properly compensated under a fair fee collection and distribution system. Immutability hinders this experimentation and fetters v3 to an untested fee design…forever.
To operationalize this concern, let’s turn to @juanbug’s point, where he states that there’s a realistic concern that large holders would simply delegate their tokens to a burner wallet, or to themselves, without engaging in governance. Why would this pattern play out? Regulatory unclarity. The majority of the stake pool will be composed of $UNI from large token holders, likely VCs, with strict legal mandates. In effect, this does nothing except earn the staker yield and potentially shields them from delegate-delegator liability.
If larger $UNI stakers do opt into delegating to a burn address to avoid the potential liability concerns, then the Foundation’s goal of increasing governance participation could see the opposite effect–holders would still collect staking fees without contributing anything to governance. With the proposed amendment, the protocol could introduce a revised system to push delegation to active delegates or encourage new delegates to appear.
Since the topic was introduced on the forum, multiple ideas for improving the system or addressing its shortcomings have been mentioned.
- @Banteg’s suggestion is to implement a protocol-wide fee to combat the issue of setting per-pool fees, which may be unsustainable due to the large number of pools and the burden to protocol governance it would present. Gauntlet is currently working through a process to ensure a smooth and gradual procedure for turning on fees on particular pools. The data-driven approach will take time and require delegates to be alert.
- @Juanbug’s point that the system proposed doesn’t necessarily encourage delegation to active delegates and may lead to the continued limited participation of $UNI token holders in the protocol’s governance.
- Multiple posts asked about the decision to choose wETH as the payout token rather than other ERC20s. Under the existing system, changing to another token would be impossible. This amendment would allow future delegates that option.
Overall, as experimentation within DeFi continues to expand, we can anticipate that more effective mechanisms and designs will be devised to enhance governance. Given the significant concerns regarding this proposal’s effectiveness in improving governance, restricting experimentation and confining V3 to a potentially ineffective design does not appear to align with the DAO’s best interests. We believe that V3 may better serve as the experimentation ground for governance incentivization, which could prevent issues with future Uniswap versions. If V4 will potentially cannibalize V3’s market share, then experimenting with V3 prior to introducing protocol fees to V4 is a sound approach.
Technical Implementation
Implementation of the setOwner() function is incredibly lightweight from a technical perspective and can be done in less than five lines of code in the v3factoryowner.sol.
function setUniswapV3FactoryOwner(address _owner) external {
_revertIfNotAdmin();
FACTORY.setOwner(_owner);
}
The effect of this change would allow the DAO to implement a new v3factoryowner.sol.
Risks
We appreciate that a fully immutable system would reduce the technical risks to the protocol because it would prevent a potential future bug from being introduced or causing operational harm to infrastructure that may someday be built on the Uniswap Staker.
The authors here believe the risk of locking ourselves into a totally new and operationally untested system represents a greater risk to the organization than the proposed technical change and potential future risk considerations.
Next Steps
To not significantly slow down the current process proposed by the Foundation, a Snapshot poll will be used to collect opinions via a vote from the delegates. There will be two options, “Accept amendment” or “Reject amendment.” If the “Accept amendment” is able to demonstrate a significant majority, then we would expect the onchain proposal put forth by the Foundation to include the change. The poll will go up immediately and end on March 8th.
Lastly, we would like to reiterate our general support for the proposed mechanism and our appreciation for the Uniswap Foundation’s efforts to bring this proposal to the DAO.