Using Chainlink's VRF for timing the distribution to the Sanctuary


This is a proposal to make the timing of the distribution of performance fees to the Sanctuary trustless by using Chainlink VRF for verifiable randomness.


As was explained in the blog post on single-sided SDT staking, the collected fees are distributed at random times to prevent people from gaming the mechanism. To ensure that no one, not even the DAO members, have any say or influence on timing (and as such a chance for gaming the system), a trustless random function such as provided by Chainlink’s VRF could be an alternative. From a high level perspective this could work as follows:

  • A small part of the collected fees is turned into LINK and ETH (gas) via a dex.
  • Sporadically (each X blocks) a VRF call for a number between 0 and 1 is made to Chainlink’s decentralized oracle network.
  • If the returned number is lower than value Y the distribution happens.

What the values of X and Y are depends on the frequency for fee collection that the DAO aims for. E.g. if a daily fee collection is needed, there should be a 1/5760 chance per block that the distribution is triggered (assuming a blocktime of 15s). Any product of X times Y that equals 1/5760 would then a good choice. For example:

  • If X is 1, then every block a VRF call is made. The chance of success for each of those calls should be 1/5760, so Y should be 1/5760 = 0.00017361.
  • If X is 25, then every 25 blocks a VRF call is made, with a chance of succes of 25/5760 = 0.00434028 = Y.

Increasing X means a less smooth distribution function of the timing, but a decrease in cost since less calls are made. Human sentiment also plays a role, as a call every hour (240 blocks) seems intuitively a good compromise.


Using Chainlink’s VRF would remove any chance of DAO members having influence on the timing of the distribution or using their inside information to game the system. This increase in trustlessness in turn would strengthen the trust in Stake DAO.


First and most importantly, maximizing trustlessness is essential for every blockchain platform. Using Chainlink’s VRF would also give a nice boost in publicity for Stake DAO, as the so-called Link marines are both numerous and active on Twitter and other social media platforms. This would increase the amount of exposure Stake DAO has. Furthermore, it is safe to say that LINK holders have a very strong preference to using platforms that are Chainlinked, as to not expose themselves to any risk associated with less trust-minized products. We see this in them chosing for Bancor instead of Uniswap, or their preference for AAVE over Maker or Compound.


Apart from the increase in workload to the team, there’s also the cost of the VRF calls that need to be made. As of now, VRF is not yet benefitting from a scaling solution such as OCR, but hopefully Arbitrum or other L2 solutions will become available “soon”. This cost exists in some LINK to pay the oracle network and some ETH to send the LINK. This cost would be deduced from the collected fees.


I really have no technical objections to this proposal and from what I understood from what Chainlink’s VRF does it would indeed a) stop the manual process of distributing fees and b) make it random so it couldn’t be gamed.

So, unless anyone presents a view on what sort of issues, if any, this could bring or on how it could negatively affect anything, I’ll be voting ‘Yes’ for it.

Nevertheless, from what I read from the StakeDAO team, their priority at the moment is delivering v2 with some strategies. That would likely make this feature go to the backlog and this would be worked on only after v2 is delivered.


I feel like this is currently too costly in time and resources for what it adds. An easier stop-gap solution would be to introduce a very small withdrawal fee. Something the DAO can consider in the future to automate the harvesting process is employing Chainlink Keepers.