[FIP #01] — Establish a community-controlled fee pool

Proposal Overview:

Vote on Ethereum proposal

Vote on Wanchain proposal

This is the first ever FIP - FinNexus Improvement Proposal. During interim governance rules, FIPs will be proposed by core team. In later versions of governance this permission will be given to the community.

Proposal Type: FPO method call

Method: setTransactionFee for the USDC proxy contract

Governance Rule Version: Interim governance rules

Proposer: FinNexus team

Proposal: To add a 5% transaction fee for options buying and options exercising which will be collected in a community controlled pool.

Background: FinNexus Protocol for Options (FPO) v1.0 has been online for over a month now and has seen a rapid increase in activity, with now over 1 million USD in total locked value. With the increasing activity, we would like to establish a 5% fee for options buyers and exercisers to b contributed to a community pool. The use of the funds in the pool will be determined by a later vote by FNX holders.

Purpose: The purpose is to establish a fund under control of FNX holders in order to give them greater agency in the ongoing development of the FinNexus platform. FNX holders will determine the usage of the funds in the pool by further Snapshot votes. The funds may potentially be re-distributed or put toward further development of the platform, amongst other possible uses.

Implementation details:

The setTransactionFee method will be called twice in order to turn on transaction fees for options buying and exercising transactions.

setTransactionFee(0, 50)
setTransactionFee(2, 50)

Explanation:

This proposal will call setTransactionFee from the USDC proxy contract with the corresponding logic contract. Solidity file can be viewed here.

setTransactionFee


function setTransactionFee(uint256 feeType,uint32 thousandth)public onlyOwner{

      FeeRates[feeType] = thousandth;

  }

The parameter feeType specifies which type of fee to be modified (buy, sell, exercise, add collateral or redeem collateral), and thousandth sets the fee rate from 0 to 1000 (0% to 100%).

It will be called with feeType selected from these 5 types:


uint256 constant internal buyFee = 0;

uint256 constant internal sellFee = 1;

uint256 constant internal exerciseFee = 2;

uint256 constant internal addColFee = 3;

uint256 constant internal redeemColFee = 4;