By this point, many of you are probably familiar with my issues with the “contract signaling” mechanism in the Edgeware lockdrop. If not, feel free to optionally take a listen to this Conspiratus episode or read the Straightedge FAQ. But tl;dr is that in the lockdrop, an Ethereum address was allowed to “signal” on behalf of any contract that they had deployed from that account and claim its ETH as their own.
Prior to the launch of the lockdrop, when I asked about why contract deployers were able to claim tokens in contracts they deployed, one of of the e̶x̶c̶u̶s̶e̶s justifications given (not from the Commonwealth team) was that it rewards Ethereum developers who contributed valuable contracts to the Ethereum ecosystem. If I deployed a contract on Ethereum that has 2 million Ether in it, then I should be rewarded for creating a contract that is popular enough that there’s 2 million Ether sitting in it.
However, not all important or popular contracts may necessarily require users depositing Ether into them. For example, the 0x contracts, help clear large amounts of trading volume, but don’t require that users deposit tokens into the contracts. Furthermore, not all interesting, useful, or important contracts necessarily involve depositing Ether. Compound for example has far more Dai in it than Ether, but I’m sure most would agree its a very important contract system. So what could we do to more accurately reward the stellar developers in the Ethereum ecosystem?
ETH may or may not be money. Not gonna get into that argument here. But what it definitely is, is the fuel for the Ethereum ecosystem. Ethereum users have to spend Ether as Gas to interact with contracts on the Ethereum network. The fact that they have spent something of value to make that interaction, suggests that the contract was providing a useful service to the user. Thus, I propose that a more effective way of determining which contracts are “useful” is basing it off of the gas spent on interacting with the contracts, rather than the amount of Ether sitting in them. So the more gas that was spent during the runtime of a specific contract over its entire lifetime on Ethereum, the more tokens the deployer of the contract would be entitled to claim in the gasdrop.
Now, this is not possible to do in an on-chain mechanism, as the EVM doesn’t give you the capability to query historical data, especially something as specific as gas spent during execution of each contract. However, it’s okay, as the premise of this was to be used to seed the token distribution of a brand new chain, and so, in the same manner as Edgeware, this could be done using an off-chain script running against an archive node. This script could be openly published and thus is verifiable by anyone prior to the launch of the chain. (This process may even require some special traces added to the Ethereum node software, that is tracking gas usage per contract while syncing the chain, as I’m not sure even a normal archive node contains the sufficient data to construct this dataset.)
From Gas Usage to Tx Fees
Using this mechanism described so far, we are distributing tokens based on what percentage of total gas usage in Ethereum’s history was associated with that particular contract. Which could be how we would like to distribute the tokens. But in the case we want it to mirror not just the gas usage, but the value spent on interacting the contracts, we could also multiply the gas used by a contract with the gas cost of a tx. So for example, if the execution of contract X takes 1000 gas, and two transactions, A and B, interact with it with gas cost of 5 wei and 10 wei respectively, the contract X would now have 15000 tokens claimable.
This more closely reflects the amount of value users were willing to spend interacting with a contract. However, this is now measuring value denominated in ETH that was spent interacting with each contract. However, we can see that over time, the average gas price on Ethereum drops. This is likely because as the price of ETH increases, the gas price in wei can drop, as the real value (USD value) of each wei increases. To account for this, we can use a third model, which also takes into account the ETH/USD price as the time of the interaction with a contract. Now, we are actually measuring the real value that was spent interacting with the contract. The gasdrop community would have to agree upon a canonical source of Ethereum price data (or take a combination of a number of sources. For example, Etherscan, Coindesk, CoinTelegraph, CoinMarketCap, and even Yahoo Finance all have downloadable CSV datasets.)
Model 1: Gas Spent
Model 2: Gas Spent * Gas Price
Model 3: Gas Spent * Gas Price * USD/ETH
Which of the three models to use is up to creator of the gasdrop.
The gasdrop system will effectively achieve the goal of “reward[ing] Ethereum developers who contributed valuable contracts to the Ethereum ecosystem”, in a far more effective way than the contract signaling method of Edgeware did (if that was the goal).
Now often, when someone proposes a cool idea for a new concept, they’ll usually also end with, “And here’s some code I wrote to do this! Here’s the results.” This isn’t one of those.
I haven’t actually run this process on Ethereum and collected the gas usage / contract data, but I think it would a really cool experiment for someone to do and seed a token distribution for a new Cosmos chain for example!
P.S. What do we do about all the gas that was spent on Ethereum that wasn’t used to interact with a contract? Two options: 1. We could just ignore it. Or 2. we could give it to entities like the Ethereum Foundation or Parity for their work in developing the core software of Ethereum!