0xffaf6202…8d99sent to0xf790a5f5…1365·#18,265,344·view on Etherscan
# 🔥 The Burn: heads up and audit funding placeholder
We are planning to propose an upgrade that implements [The Burn](https://w.mirror.xyz/AmHOzH-FQZVO3IhGXHSvCRxRSf2MO6VCZdmMwNEIyKE). The goals for the burn are described in the blog post above by wilson.
This is a first draft of the proposal candidate through which we will ask the DAO to fund one or two audits of the implementation. We are putting it up even before we have quotes from auditors, in order to raise awareness among voters, stimulate the conversation, and listen to feedback.
## Technical spec
We plan to deploy a new contract, with a single function that lets burn excess ETH from the timelock.
### How much will be burned?
Excess ETH is defined as the difference between the treasury value denominated in ETH, and: adjusted_total_supply * trailing_N_day_mean_auction_price.
adjusted_total_supply is the number of minted nouns, excluding nouns held by the treasury or in the escrow contract.
In order to calculate the treasury value in ETH, the contract will consider only ETH, stETH, rETH & WETH. All other assets are ignored.
The number of auctions looked at when calculating the mean price is a configurable parameter; we suggest starting with 90.
Example based on numbers close to actuals:
Treasury has 2857 ETH, 10830 stETH, 228 rETH.
Adjusted total supply: 394.
Mean price of last 90 auctions: 30 ETH.
Treasury value in ETH: 2857 + 10830 + 247 (228 worth of rETH) = 13,934 ETH.
Excess ETH: 13,934 - 30 * 394 = 2114 ETH.
### What is burned?
Only ETH is burned. If the Nouns runs out of ETH, it will need to swap other assets (e.g. stETH) into ETH to allow for more burn.
### When can it be called?
The goal is for the burn to happen at predictable times. One parameter will define what will be the first noun id at which the first burn can happen. Another parameter will define how many noun ids need to be minted before the next burn can happen.
Example:
Suppose the first noun id is set to 1000, and the number of nouns between burns is set to 100. The first burn will be possible once a noun with id 1000 is minted. The next burn would be possible once a noun with id 1100 is minted.
Even if the first burn actually occurs when noun 1002 is auctioned, the next burn will still be possible starting id 1100.
### Timelock upgrade
The timelock will be upgraded to a new version which will allow the burner contract to call it an burn ETH.
The timelock will only allow the burner contract to call it.
The address of the burner contract is a configurable param. Setting it to the zero address is effectively turning off the burn mechanism.
## Audit costs: TBD
We will update this section once we have information from the auditors we’ve reached out to.
We are still deciding between a couple of auditing approaches; here they are with some of their advantages:
1. A single audit, with explicit reviews from technical DAO members
1. Costs less.
2. Probably faster shipping time.
2. Two audits
3. Extra safe, which might be prudent given this upgrade is changing the treasury code, however simple we’ve designed the change to be.
Your inputs here are welcome!
## Next steps
We are engaging auditors to receive quotes and auditor availability, and will update this candidate once we have useful information for a decision.
Upon sufficient consensus for the design of the burn, this candidate will become a proposal requesting funding for an audit of this upgrade.
## Appendix: pseudocode
ExcessETHBurner:
```
// configurable params:
uint numPastAuctions;
uint nextBurnNounId;
uint mintsBetweenBurns;
function burnExcessETH() {
if (auction().nounId < nextBurnNounId) revert('Not yet');
allowedTreasuryInETH = adjustTotalSupply() * meanAuctionPrice();
excessETH = treasuryValueInETH() - allowedTreasuryInETH;
amountToBurn = min(excessETH, timelock.balance);
nextBurnNounId += mintsBetweenBurns;
timelock.burnETH(amountToBurn);
}
function treasuryValueInETH() {
return timelock.balance + stETH.balanceOf(timelock) +
wETH.balanceOf(timelock) + rETH.getEthValue(rETH.balanceOf(timelock));
}
function meanAuctionPrice() {
return mean(auctionHouse.prices(numPastAuctions));
}
```
## Appendix: current asset breakdown
At the time of writing this text, [according to Etherscan](https://etherscan.io/tokenholdings?a=0xb1a32FC9F9D8b2cf86C068Cae13108809547ef71):
* Total treasury value is roughly $23.15M.
* Its two main assets are:
* ETH at $4.391M (2631.493 ETH).
* stETH at $18.061M (10830.768 stETH).
* These two assets alone make up over 96.7% of the total treasury value.
* USDC is roughly 1.1% of the treasury, and we’re comfortable ignoring it for the sake of code simplicity.
* wstETH is roughly 0.11% and is ignored as well.-the-burn-heads-up-and-audit-funding-placeholder