Hello to the tornado.cash community!
I am in the final stages of review for the new governance proposal. As such I wanted to get the discussion kickstarted with the community about this proposal due to the fact that there are several parameters the community should decide and give feedback on.
EDIT: I updated the repository influenced by discussion, please check the following post and keep it in mind while reading.
The Vault and Lottery Proposal, which is looking to be Proposal #9, includes two upgrades to the Governance contract plus a parameter change:
The first upgrade is the vault upgrade, repeating it since Proposal #8 failed to reach quorum. This time around the vault contract is more optimized since I have decided to calculate (by use of scripts fetching data with rpcs and with dune analytics) the amount of TORN locked by users via governance proposal TORN outflows.
The second upgrade to governance is the gas compensation upgrade. This upgrade enables Governance to compensate transactions for selected function calls directly in Ether.
The third upgrade is the lottery upgrade. Users will be automatically signed up for a lottery when voting on a proposal. Lottery rewards will be in TORN.
The voting period for governance proposals should be extended due to governance problems with reaching quorum.
A documentation on the most important parts for you as a community member of changes 2. and 3. can be found in this readme.
Specifics to each point
These specifics are necessary for you to understand what feedback I will need from the community.
In regards to point 1 (from above) I have created a readme file, in which you can find the dune scripts/js scripts we used to find governance outflows and accidental transfers to governance. By the formula, mentioned in the readme, we calculate the amount of TORN to transfer to the vault.
In regards to point 2 and 3 of the proposal, there are several parameters to cover. I will discuss them in the section below.
In regards to point 4, the current voting period is at 259200 seconds (== 3 days). I would like to further extend this to allow participants more time to vote on the proposals.
Lottery and gas compensations
This is the main part of the part proposal. There are several parameters associated with this upgrade I would like your input on:
I would like your feedback on the per-proposal TORN rewards for at least a few upcoming proposals. I have thought about the rewards being in the dollar range of 1000$ and then towards 5000$ approximately. Note, that there will be multiple winners per proposal which will be decided with random numbers provided by Chainlink VRF.
In order to compensate gas for voters, Governance will have to acquire Ethereum by auctioning off some TORN. This is to be seen as Governance deciding on some number to auction off in order to help itself pass proposals through incentivizing voting. This will be done through a Gnosis Auction. You can familiarize yourself with the parameters involved with this readme file. For us of interest are the 6 parameters which the
initializeAuctionfunction of the auction handler takes.
- Most importantly, I would like to know how much TORN the community would be comfortable with auctioning off, what minimum price the community would like to set for the TORN, how long the auction should last and what the minimum amount of Ether is we would like to receive in order to have gas compensations at all. I would also like your opinion on the amount of winners a lottery should have.
- I would like your input on the per-proposal gas compensations, since above we auction off a total amount of TORN for a total amount of ETH, I would like to know how much you would like governance to compensate per proposal.
Suggestions and template
These are a few suggestions for what I think are acceptable sample numbers for this proposal. Below you will find a pseudocode-like table which should bring you closer to the actual values being used.
Starting with the voting period. votingPeriod = 6 days (any time unit goes) Continuing with lottery and gas compensations numberOfWinners = 5 perProposalRewardInTorn = 5000$ amountOfTornToSell = minimumAmountOfETHFromAuction/minimumTornPriceInEth timeAuctionLasts (any time unit goes) = 5 days minimumTornPriceInEth = currentPriceInEth*0.5 perProposalETHAmountForCompensations = 0.95*1.4 eth minimumAmountOfETHFromAuction = 10*perProposalETHAmountForCompensations (== 12.6 eth)
The above parameters are not final, represent my model ideas, and will primarily be influenced by your opinions.
When it comes to the amount of ETH I think will be necessary to compensate each user, I have used this dune query to determine how much in average ETH has been used on a proposal for voting.
Note, that due to the registration function the average gas cost will increase. Thus, I have multiplied the average amount of ETH used for gas on a proposal (0.95 ether) with a coefficient to bring us closer to the real value. I have found that a coefficient of 1.4-1.5 should be sufficient to compensate the increase in gas usage plus the increase from more voters alone, since when looked at closely, most passing proposals have a total ETH gas usage below 1 ether (dune script).
Feel free to copy this template and enter your suggestions below. I will then collect the suggestions, calculate mean values, see what can work (since some of the parameters interact) and present this data to you further.
Repository and test deployment
The entire upgrade repository:
You can find a verified proposal deployment as an example here:
These values are obviously not final and I will deploy the proposal on mainnet once we have agreed as a community on the parameters involved.