memo / eco-nft

A basic guide to ecofriendly CryptoArt (NFTs)
723 stars 54 forks source link

[RFC / Discussion] Disclosure about the true relationship between transactions and emissions? #15

Open brendanmc6 opened 3 years ago

brendanmc6 commented 3 years ago

Preface: I believe we have a moral and ethical duty to properly inform the people whom we influence through our tools (cryptoart.wtf & carbon.fyi). As a co-creator of carbon.fyi I do not want my name associated with hyperbole or sensationalism. With this ticket here I raise some personal concerns I have reading this guide, and concerns I have reading ongoing discussions on Twitter & the eco-NFT discord.

It comes down to this: NFTs are shockingly unsustainable when you use Gas as your emissions factor. If you instead choose to divide emissions by profits made, held assets, time, wallet addresses, or most any other method... the allocation for NFTs is not so shocking.

So, we (carbon.fyi) still think co2-per-gas unit is the best emissions factor, because it's easy to understand, and covers the major use-cases for Ethereum. But it's not perfect. Every methodology has big tradeoffs.

For one, I have seen some real animosity towards artists who want to take advantage of today's bullish market for NFT art and publish on Ethereum. In my opinion, a lot of this animosity seems to come from people who do not understand the actual relationship between emissions and their transactions. They think pressing 'mint' creates a giant cloud of GHGs.

In addition, I see a lot of emphasis placed on so-called "Layer 2 solutions". This is another misleading side effect of our chosen methodology. In reality, these 'solutions' will serve no purpose other than to reduce an individual's emissions on paper. The total emissions of a PoW network could just as likely increase as layer-2 solutions gain popularity, if the speculative-future-value of Ethereum increases (bringing more miners).

Discussion points: Can my concerns be addressed in this guide? Does anyone share my concerns? Can I improve the language on carbon.fyi? Can we find a better methodology that leads people to more realistic conclusions or a better understanding of blockchain emissions?

P.S. Regardless of how you allocate emissions, plenty of people want nothing to do with Ethereum or Proof of Work blockchains just because they are so energy intensive. I think it's great that you've provided this list of alternatives for them! ❤️

EDIT: Sorry I meant to proofread and post this in the morning, hence why I deleted it and closed it yesterday.

Since I originally wrote this, there has been a very large and in my opinion, totally excessive, negative reaction on Twitter towards ArtStation and their new NFT proof-of-concept on Ethereum. Almost everyone there seems to completely misunderstand the relationship between NFTs and emissions, and it's clear most of them are riled-up because of the cryptoart.wtf calculator. I am also disturbed at how many people there are using the opportunity to spread false rumors about climate finance and quality offsetting initiatives.

memo commented 3 years ago

Hi Brendan, thanks for getting in touch. I share your concerns.

I tried to make the relationship between emissions and transactions clear in this part of my text: "Different Ethereum transactions require different amounts of Ethereum Gas (not to be confused by ‘real world gas’), based on the complexity of the actions carried out by the smart-contract as a result of the transaction [17]. Blocks also have a Gas limit (currently 12.5 million). This limits the amount of computation that can be required by all of the transactions in a block, effectively also limiting the number of transactions in a block. “In general, the more complex the transactions are, the fewer you can fit within one block” [18]. Thus the amount of Gas required by a transaction is representative of how much of a block it it is taking up. E.g. a simple transaction (~21K Gas) will take up 21000/~12500000 => ~0.17% of a block. Whereas an operation such as ‘minting’ an NFT (~260K Gas) will take up 260000/~12500000 => ~2% of a block. Since the energy required and footprint of mining a block is independent of its contents and number of transactions, the Gas required by a transaction is representative of the portion of a block’s footprint it will incur. More detail on calculating the footprint of individual transactions can be found in [22]"

After seeing many people push back with arguments along the lines of "but gas doesn't affect emissions", I added the following (this was before SuperRare posted their article, which also uses a similar defense)": "There is a common fallacy along the lines of “The same energy will be consumed whether a block is empty or contains your transaction, thus a transaction has no impact on the energy consumption of a block being mined, or on the environment”. This is based on a gross misunderstanding of what a carbon footprint is. This statement is analogous to claiming “when a 500 tonne airplane flies from NYC to LA, it consumes the same amount of fuel whether I ride it or not (because the weight of a person is negligible compared to the weight of the plane). Thus my flying has no impact on the environment”. It is true that one person deciding to fly (or not) does not have an immediate effect on emissions. However, there is a footprint associated with a seat on a plane. Furthermore, the market demand for flying, affects how the aviation industry schedules flights. In fact, if all of a sudden, lots more people wanted to fly, the aviation industry would not be able to all of a sudden schedule more flights overnight. However, the mining industry can respond much quicker to increases in demand, compared to the aviation industry. Miners even usually have older mining equipment which are no longer profitable to mine with (i.e. the electricity costs of running the equipment is greater than the financial rewards). But if demand goes up on the network, transaction fees also go up, and mining becomes more profitable to the extent that miners can respond quite quickly by turning on such older equipment [13].".

I've always included a link to your original notion/methodology page (which has now moved, so I've updated the link). I've now also added a link to your carybon.fyi/learn page (which is [22]), as I think you've also done a great job of explaining it.

I'm not sure at this point how to make it clearer, but I am open to suggestions. I include links to both my article and yours on cryptoart.wtf, but I presume not everybody reads them.

Regarding layer 2 solutions, yes I share your concerns there too. The current Gas-based footprint approach is more of a 'direct' footprint, and in reality there are second order effects, such as bringing value to the network, which is going to drive more people to Ethereum and arguably make mining more profitable, thus bringing in more mining equipment, which is going to increase energy consumption overall (and increase difficulty) for all other transactions. While it's impossible to establish any causal relationships, the increase of difficulty & hashrate over the last few months is very telling. https://etherscan.io/chart/difficulty https://etherscan.io/chart/hashrate

I've also calculated per gas factors for each year, and unsurprisingly, this pattern can be seen in recent months, and e.g. during the first CryptoKitties release (of course there may be a confounding effect due to the way that Digiconomist estimates energy consumption). 2017 (20 May–31 Dec): 0.0008427156 kWh, 0.0004916419 KgCO2 2018 (01 Jan–31 Dec) : 0.0011741214 kWh, 0.0006849847 KgCO2 2019 (01 Jan–31 Dec) : 0.0005121816 kWh, 0.0002988077 KgCO2 2020 (01 Jan–31 Dec) : 0.0003735465 kWh, 0.0002179278 KgCO2 2021 (01 Jan–01 Mar ): 0.0006310654 kWh, 0.0003681648 KgCO2

This is definitely something to consider, especially as you mention, when Layer 2 solutions start to come in. But it is very speculative, and I"m not sure how this can be quantified.

Thanks again for the comments

brendanmc6 commented 3 years ago

@memo thank you so much for responding! I love the passion and energy you've been putting into this. There is a lot to talk about, but I'd like to address one point first:

“when a 500 tonne airplane flies from NYC to LA, it consumes the same amount of fuel whether I ride it or not (because the weight of a person is negligible compared to the weight of the plane). Thus my flying has no impact on the environment”.

Ignoring the straw-man phrasing here, I believe using the plane analogy is disingenuous or at least misleading. The relationship between a passenger and jet fuel is direct. A portion of your ticket goes directly to jet fuel. Less passengers => less flights => less emissions.

This is not the case with PoW blockchains. Miners are motivated by speculative future value. It's not possible run an airline with no passengers, but it IS possible to mine a block with no transactions! We can also observe points in time where hash-rate fluctuates wildly, sometimes in the opposite direction of pending mempool transactions & difficulty. Market forces & media attention will far outpower any attempt to reduce ETH transactions or boycott NFTs (which a lot of people are trying to do).

Regardless, I understand your intention with the analogy: Users of the network of course do contribute to the overall value of the token to some degree. But this is not what makes Gas a good emissions factor. We chose Gas because it represents benefit from the network and also who should pay for the negative externalities of the network: users!. The recent uproar against NFTs is having the opposite effect-- people are boycotting our attempts to raise pro-climate funding through NFT auctions. It's also putting developers in a tough spot, as they want to support artists and collectors by using the best available platform with the best prospects for the future.

Would you consider investing some time to communicate these nuances better to the visitors of your site? It is very difficult to talk about solutions and the bigger-picture problem when people are mounting knee-jerk attacks on NFTs. I love that you've made artists aware of the impact of the network which they choose to publish. Many Artists very clearly want nothing to do with such an energy hog like Ethereum! But some do, and some are earning a living off of it, and I feel absolutely terrible that my work is leading to this sort of reaction online.

brendanmc6 commented 3 years ago

also I posted an EDIT addendum up above, in case you missed it.

memo commented 3 years ago

Hi Brendan, I'm not sure how my phrasing is a strawman. This is quite literally one of the most common responses I've been getting - i.e. "blocks are mined whether there are transactions or not, hence there are no emissions related to the transactions". (In fact, SuperRare also recently used this explanation in their post, saying "You can think of Ethereum kind of like a train engine throttled to the same speed all day, kept running by miners securing the network in exchange for ETH. In this analogy, transactions submitted to the network would be seats on the train. Due to the design of Ethereum, the train will keep running at the same speed and with the same energy consumption whether or not there are any seats filled."). While it is true that Ethereum will run whether there are passengers or not, each seat has a footprint associated with it, just as there is with trains, or flying, or buying clothes, or buying an iPhone, or eating a burger. (Speaking of strawman arguments, that SuperRare post was full of them)

Referring to your first post, yes it is true that "pressing mint" does not instantly create a giant cloud of GHGs as it would if we just burnt a lump of coal (and I agree, it's important to make this clear). However there is a carbon footprint associated with pressing mint. In a similar fashion, pressing "Buy" on the Apple Store to buy an iPhone doesn't suddenly release 50Kg CO2e. But there is a footprint associated with the manufacturing, packaging, transport and usage of an iPhone.

Yes of course these analogies are not perfect. The business models and the dynamics of the markets have their own peculiarities. But I use these analogies to demonstrate the difference between instant direct emissions (e.g. burning a lump of coal) vs a carbon footprint of a product or service (e.g. buying an iPhone, flying in a plane, riding a train etc). Note: in cryptoart.wtf and my article, when I compare the footprint of an NFT to driving 1000km, I don't just include the direct emissions from the exhaust, I also include the emissions related to the production of the fuel ( https://www.eea.europa.eu/signals/signals-2017/infographics/range-of-life-cycle-co2/view )

Market dynamics aside, I think you'll agree to the above, since you've also chosen Gas as a way of distributing responsibility. I arrived at the idea of using Gas for the footprint independently to you, before I even knew about Offsetra (though I wasn't alone, I discussed it with other developers). So I was happy when I discovered your work. And as I explained in my first reply above, My decision to use Gas has nothing to do with potential contribution to Value (I'm not sure why you thought that was the case). Instead, in it's simplest form, Gas represents the share of a block, and hence the share of the energy that goes into mining a block. E.g. a transaction with 12.5M gas will incur the full cost of mining an entire block, analogous to you buying all of the seats on a plane just for yourself. This is one of the main reasons why a first class seat on a plane has higher carbon footprint than a business class seat, which has higher footprint than an economy seat. This is not my opinion, it's the way footprints are calculated ( http://documents1.worldbank.org/curated/en/141851468168853188/pdf/WPS6471.pdf - and yes, the flying metaphor is not perfect in this sense, as weight affects fuel consumption etc, but hopefully it conveys the idea).

Your wording: "Gas ... represents benefit from the network" I agree with, and I think my explanation above is a way of unpacking that statement.

One could point out that not all blocks always reach their full capacity. (And we can see from https://etherscan.io/chart/gasused that before June 2020 this was indeed common, but since June 2020 blocks are reaching full capacity). So one could argue that another way of calculating the footprint of a transaction, would be to calculate the footprint per block (total energy estimate in a day / total number of blocks that day), and then distribute the footprint per transaction as a ratio of the Gas required by a transaction in proportion to the total gas in the block. In fact this was my initial thought. But averaged across large numbers, I realized that this would essentially converge to the much simpler to calculate footprint-per-gas approach that we both use.

Having said all of this, I agree (as I explain in my previous reply above), that Gas is not the perfect metric, as it excludes speculative future values, which is an integral part of the tokenomics of Ethereum and mining. I believe for a given moment in time, Gas is a fair metric to calculate the share of responsibility for the energy consumption at that moment in time (and I think you agree with this too). However, this does exclude the second order dynamics related to potential value increase => more miners (=> and higher difficulties which makes all blocks and transactions require more energy). I'm open to any ideas as to how this may be taken into consideration for a more comprehensive approach.

All of this aside, clear communication is important to me. As my goal here isn't to spread misinformation, but information. I did my best to make this as clear as possible in my texts. I also would not be surprised if most people don't take the time to read any of the texts in full. On Cryptoart.wtf I have a tiny bit of text which appears when you press the (?) button right next to the search bar. But judging by many emails and questions I'm getting, people aren't even pressing the (?) button (because the answers are right there). I've now made this info panel start open (so it's impossible to not see), and I have also added direct links to your carbon.fyi/learn and carbon.fyi/methodology (as opposed to linking to it from my own text, where it was easier to get lost).

If there's any sections that you think can be clearer, please let me know, as I've made it as clear as I think it can be. (Bear in mind, the text that greets users when they open the website now fills a full 1920x1080 screen. And I don't want to add a full essay there as the first thing they see. Rather, that greeting text should serve as a very brief summary linking to the relevant info).

brendanmc6 commented 3 years ago

@memo Thanks again for engaging so thoughtfully on this. Aside from the concerns we both have raised, I actually think we see eye-to-eye on almost everything and I'm grateful for the changes you've made adding the banner. I hadn't seen that before writing my last comment.

I think if we continue to work together like this, we can definitely reach a comfortable middle-ground between raising awareness about the outsized emissions of PoW, while also making sure not to mislead people.

We are currently taking a deeper look at our methodology to consider some newer research my colleages have found, and also including more people and more eyes in the process. Part of this will include adding "certainty ranges" or possibly "emissions ranges", like best & worst case emissions scenarios.

I'll take a closer look at the language on your site and re-read the banner and see if I can make any suggestions.

P.S. This will all be open source, we are working on getting all the data and math into one repo, so feel free to contribute or even use the calculator lib in cryptoart.wtf

brendanmc6 commented 3 years ago

And to address some of your points, I think for now, we are still avoiding references to kWh and to analogies like flying/driving/trains, because as I've already stated I don't have enough faith in the directness of the relationship between transactions and energy consumption. This is probably the central point on which we disagree, but I won't push you so hard on that for now :) I personally don't think there are any really fair analogies, and I disagree with SuperRares decision to compare it to a "train". PoW is a beast of its own-- finding the right analogy is still an ongoing discussion even within our team.

It's great for comparison and creating a frame-of-reference for the user, but users ultimately want to talk solutions-- and that's where I think the analogies can become counter-productive.

mattdesl commented 3 years ago

Just to drop into this conversation; there are a couple big flaws with using Gas as a metric.

  1. Amount of Gas in a transaction is an implementation detail; different platforms will have wildly different Gas consumption, because of how their smart contracts are coded. This metric implies that a smart contract transaction (e.g. ~250K Gas) should be attributed a higher share of carbon footprint than a simple trade (21K Gas), when in fact neither action contributed any more or less to the system's annual energy usage. For example, minting on SuperRare might come to 225,219 Gas, while on Foundation the same action might be 122,177 Gas, almost 50% less. Based on your calculator, we could simply move from SuperRare to Foundation to reduce our carbon footprint by a significant amount. Since more or less Gas in a transaction does not effect the overall mining activity, this should not be used to weight some transactions as more or less responsible than others.

  2. Along a similar vein; it implies that reducing the total amount of Eth Gas each individual expends will also help reduce the annual energy cost of the system. This is only true if the reduction in Eth Gas is actually due to a reduction in interest or demand in Ethereum, rather than a reduction due to the perceived energy cost of Eth Gas. Changing your behaviour from minting 1000/1000 at $1 to minting 1/1 at $1,000 will lead to far less Gas used, but no direct change on mining activity. This focus on reducing Eth Gas has led to several misleading suggestions (being spread by NFT platforms and still featured prominently in Joanie's article, and I believe you've suggested the same on Twitter) that "NFT Scaling" will resolve the energy issue, because it will cut down on Gas-per-mint (such as zkrollups batching 2048+ transactions together). NFT Scaling will help to improve network throughput, and based on your calculator it will appear to reduce the carbon footprint of each NFT to a negligible amount, but it hasn't yet been shown how this will actually help reduce Ethereum's annual expenditure, as the higher throughput will not reduce the incentive to mine Ethereum.

Happy to see you are discussing this and attempting to resolve some of the misinformation/hate/shaming that is happening online, which all points back to your calculator as a source. I feel that a pop-up disclaimer alone might not much to curb the discussion, but presenting alternative footprint metrics alongside these numbers and/or including some upper/lower boundaries may help frame the problem more accurately to the average reader.

memo commented 3 years ago

Hi Matt, thanks for your thoughts. We discuss a lot of these shortcomings in the thread above. However I do want to say a few things:

  1. an edition of 1000 vs an edition of 1 does have a significantly different footprint. A footprint is the share of responsibility. The transactions relating to minting an edition of 1000 at 220K Gas each will effectively require 18 full blocks. Thus the footprint should take that into consideration.
  2. I haven't dug too deep into Foundation, but I'm not sure if the tx you sent is a minting tx. This one looks more like a mint https://etherscan.io/tx/0x5f198a2a2d7ed4f0f3e84fada362cd49e770a15842b30d45e54eee7bc1d31fb0 (300K Gas).

Yes these are implementation specific. But to some degree this makes sense to me. If a transaction fills more a block, then it should incur more of the share of responsibility of mining that block. I'd love to see different proposals to this, but to me it feels like the footprints of an action that is 1/250th of a block (e.g. a bid at 50K Gas) vs one that requires 18 blocks (minting 1000 editions) will need to be as radically different.

joaoalvesmarrucho commented 3 years ago

Perhaps this metaphor can help — let's say the miners are a washing company making a profit out of a common good like water – thus spending more water than the average user. Everyone gets their cars, streets, and storefront cleaned for free. Because of this more people start creating their business in the nice clean city center to which they have to comute on their modern hydrogen cars, increasing the amount of cars, streets and storefronts, that need to be washed. Water consumption exponentially increases thus creating the need to measure how much people are spending. But that in itself becomes a moral issue because of the way this economy is built:

  1. the washing technology needs to spend water and
  2. the motivation cycle behind is not curbed by any economic mechanism.

    @brendanmc6 on his carbon.fyi touches this issue:

"Miners start mining because they wish to earn a profit. The more miners there are, the more emissions there are. When it is more profitable to mine, more miners will join the network. We could place the burden of emissions entirely on miners, but that would not be fair to them, as everyone benefits from the stability provided by their mining power!"

This a self-interest vs common-good classical problem. In classical and neoclassical economics the belief is that it's possible to detach moral from monetary polices and even monetary law, because money is mainly seen as simple commodity (not as a social contract). Mainstream economy theories also support the idea that the individual acting in their own self interest will always contribute to common good. However, we know that is not always the case.

This brings moral into the equation. I find that, when trying to solve a problem it is imperative to understand why we are trying to solve it. But if, to keep focus, measuring the blockchain ETH – GHG emissions is the "first" thing we are trying to solve, then starting on mining might be the most accurate solution.

Props to @memo and @brendanmc6 and everyone involved in providing informative and transparent work. I recognise the priceless value in the work done so far (which is proving hard and challenging). With accurate measure we may start thinking about a good solution to replenish what is being consumed. However, regarding this final aspect (the social-contract related to the replenishment of common-goods), I am not entirely sure we will find answers in a decentralised model operating on a free market space. Law and nation-states might have to play a role: Although it's true that if we a tackle blockchain (NTF's included) GHG emissions measurement, we could start thinking about accountability and replenishment, it's not hard to imagine other collective-interest issues emerging from blockchain "re-structuring of political aspects and tools" inherent to decentralised decision making.

mattdesl commented 3 years ago

@memo I'm not sure I fully agree — whether you take up 0.2% of a block (standard transaction) or 2% of a block (mint transaction) due to an implementation detail on the platform you're using (and type of action you are taking, DeFi vs NFT), it does not mean you are creating more or less mining activity.

New blocks are not created when old blocks reach their Gas limit; they are created when the previous block is solved/mined, regardless of how full or empty it was with Gas. Reducing Gas per transaction might reduce the Gas contents of each block, and/or might allow blocks to hold more transactions, but that will have little impact on the rate at which miners are able to solve blocks, and as long as there are still several thousand transactions in the network per day, there is still economic incentive for miners to solve as many blocks as they can in a day (which is capped by block time / difficulty).

I think kWh per unit of Gas is an "OK" metric, and I don't know of a better one, but is also flawed, and currently is presented by your tool as if it has a direct relationship with mining activity. This is how we get to the current situation, where artists are being blamed based on the platform they use (such as Foundation vs Zora/OpenSea/etc), and platforms are being pressured to implement L2 solutions, as if reducing Gas per transaction (thus allowing everybody to mint more) will truly solve the energy issues with Ethereum. EDIT: Even the eco-nft guide suggests lazy minting has 2x-3x less carbon footprint—but only by this metric. It's not clear how lazy minting reduces overall carbon emissions of Ethereum, which should be the goal in analyzing these metrics.

While I generally agree that a user who has 1000x the transactions as another user could be seen as more responsible for Ethereum's demand & energy usage, I think it's hard to argue that they should be held 1000x more responsible, and have a 1000x higher carbon footprint (as that would imply transactions have a direct, linear relationship with mining). This is even harder to argue this when we consider the metric of Gas instead of just transactions, because Gas is ultimately an implementation detail, and introducing more or less of it per transaction does not necessarily change the rate of mining.

Also regarding the numbers in my previous post: I picked that from Foundation's "mint" transaction, from this NFT. They also have a "list" transaction, so if you were to combine the two to determine the footprint from "dropping an NFT", the Gas would be 358,811. The SuperRare numbers are from this NFT. Meanwhile you can see my own mint only shows 1 on-chain activity here, i.e. 231,263 gas for the entire process of minting + listing + bidding + sale, presumably lower than Foundation/SuperRare due to lazy minting (and this assumes OpenSea isn't hiding transactions, which I'm not sure of).

Happy to hear your thoughts on all that — it's amazing just how complex this issue is. :)

brendanmc6 commented 3 years ago

@memo @mattdesl If I could summarize in three bullet points, I think all of us agree:

joaoalvesmarrucho commented 3 years ago

It would be helpful to have readable markups in the header of blocks: "Block b caused e emissions, had t transactions of which n[i] are to wallet w[i] "?

kylemcdonald commented 3 years ago
  • Assigning co2-per-gas is not perfect, but it's fair, and it's the best option we can think of.

The other option is to use transactions. But because many low-gas transactions could fit into the space of a single higher-gas transaction, it seems clear that gas is a better estimate of responsibility.

  • The biggest problem is that co2-per-gas is not very helpful when talking about practical solutions to reduce Eth emissions

I agree. co2-per-gas makes it sound like sidechains could fix the problem, when they are simply walking away from the problem.

mattdesl commented 3 years ago

Thanks for chiming in Kyle! Not sure what you mean by this:

But because many low-gas transactions could fit into the space of a single higher-gas transaction, it seems clear that gas is a better estimate of responsibility.

As I understand this interpretation, it’s as if you are saying there’s a room with 10 empty boxes and too many Lego pieces to fit in all of them, and you’re trying to pack each piece into a box in a predefined order, and so you attribute blame to the larger pieces that take up more space and displace the smaller ones. But this doesn’t seem to be how miners choose transactions.

See here: https://ethereum.stackexchange.com/a/27399

And here: https://medium.com/ethereum-grid/ethereum-101-how-are-transactions-included-in-a-block-9ae5f491853f

There seems to be an economic incentive for miners to prioritize transactions with low Gas and high Gas fees. So, the small transactions (sent with high fees) might actually be the ones displacing the big ones.

To use the Lego analogy: you instead have endless Lego pieces swimming in a pool, and each has a price tag (reward) associated with it, and instead of the room just having 10 boxes, you’ve got a conveyer belt providing you a new box to be filled every ~13 seconds. We could probably go about assigning % blame to each individual transaction based on Gas and Gas Fee, I suppose, but I feel like we’re splitting hairs.

kylemcdonald commented 3 years ago

@mattdesl Thanks for the links 👌 We have at least three perspectives now. Here is a summary of some possibilities for how responsibility for the Ethereum network's emissions might be assigned—it could be based on:

  1. Total transactions: interaction with Ethereum is what sustains it. If transactions stopped, mining would stop.
  2. Gas used by each transaction: the amount of gas per block is fixed, so we can divide up responsibility for each block by the portion of gas that the transaction used (this is what I was saying above, and it's what carbon.fyi does).
  3. Fee to gas limit ratio: emissions are caused by miners, who are partially incentivized by gas prices, therefore anyone who incentivizes them more is proportionally more responsible for their emissions.

Your suggestion, fee to gas limit ratio, is super interesting. But because this ratio should hover approximately around some average value at any given moment across the entire network, then I would expect for large transaction sets (e.g. an entire marketplace) for it to converge on being equal to total transactions. Unless there is a large disparity between the rates that, say, Foundation users are willing to pay compared, say, the average DeFi user. Does that make sense, or am I missing something?

So if we are coming back around to transactions as being the correct way to portion responsibility, then we can check whether the gas use from CryptoArt is higher or lower than average. If it is higher, that means emissions estimates from tools like carbon.fyi and cryptoart.wtf (rip) are overestimating. If it is lower, then they are underestimating. Today there was 79,389 million gas used, and 1,325,679 transactions. That's around 60,000 gas on average. Here is the average gas per transaction (not per artwork) across the CryptoArt space:

Name Gas per transaction
OpenSea 871,837
Nifty Gateway 273,671
Rarible 205,116
Makersplace 313,417
SuperRare 540,766
Foundation 379,698
Known Origin 244,609

Around 400,000 on average. That means that current estimates could be overestimating the contribution of CryptoArt by 7x.

However, the fees are only part of what incentivizes miners. I would argue they are more incentivized by the block rewards. Today there was 13,597 ETH paid out in transactions fees, and 26,558 ETH in block rewards. Should this also factor in somehow? It's not clear to me.

There's lots of math that can be done here, but I think the fundamental question of "who is responsible" is more of an ethical and philosophical question. Advocates for crypto seem to support the gas-based apportioning. I could get down with transactions or fee-to-gas-limit instead.

Edit: I keep coming back to gas used as the best option. Let's pretend on day 1 there are 200,000 transactions, and they are all from 200,000 artists, at 400k gas per transaction. Then on day 2 there are 2M transactions from 2M DeFi users, at 60k gas per transaction. Because of the per-block gas limit, it is possible for the responsibility to be spread across more people on day 2 than on day 1. Which makes me think gas used is the way to go.

mattdesl commented 3 years ago

Unless there is a large disparity between the rates that, say, Foundation users are willing to pay compared, say, the average DeFi user. Does that make sense, or am I missing something?

Not sure, worth looking into. For example with ArtBlocks, they have a timed drop of say 600 mints, and the gas fees tend to skyrocket as everybody is trying to get one at the same moment. So, most of the transactions around ArtBlocks probably have incredibly high gas fees compared to other platforms. (The platform might also have really high Gas in general, since the generative JavaScript code is saved on-chain, but that's just a guess.) Whereas a regular DeFi trader might be more willing to wait a few hours/days to see gas drop before making their transactions. But this is just ArtBlocks; and maybe timed drops with NG/Makersplace, but not all NFTs are like this.

However, the fees are only part of what incentivizes miners. I would argue they are more incentivized by the block rewards. Today there was 13,597 ETH paid out in transactions fees, and 26,558 ETH in block rewards. Should this also factor in somehow? It's not clear to me.

Not super clear to me either; it seems that sometimes one can be higher than the other. Though this will may change soon, as the plan is apparently to burn fees rather than send them to miners [1][2].

I keep coming back to gas used as the best option. Let's pretend on day 1 there are 200,000 transactions, and they are all from 200,000 artists, at 400k gas per transaction. Then on day 2 there are 2M transactions from 2M DeFi users, at 60k gas per transaction. Because of the per-block gas limit, it is possible for the responsibility to be spread across more people on day 2 than on day 1. Which makes me think gas used is the way to go.

I concede that makes sense. By this view, the best thing for Eth NFT platforms, aside from the obvious solution of stopping altogether, is to find ways of increasing daily NFT throughput, e.g. with L2/scaling, and/or promoting low-gas platforms. None of these solutions will reduce Eth's energy footprint (probably only PoS can do that), but it can reduce individual footprint because it allows more people to participate in the system at once.

Though, another way of looking at the same situation is through mining incentive, and what makes miners turn on or off their rigs. I wonder if day 2 would be far more profitable than day 1 (because of fees associated with each transaction). If you spread that over a year, perhaps you'd end up with much more mining activity for DeFi than NFT? Not sure, might be just the same.

There's lots of math that can be done here, but I think the fundamental question of "who is responsible" is more of an ethical and philosophical question. Advocates for crypto seem to support the gas-based apportioning. I could get down with transactions or fee-to-gas-limit instead.

I agree it's more of an ethical/philosophical issue.

Another metric that you could throw into the mix is annual TWh divided by total # of participating users. This means whether you make 1 trade, or 1000 trades, you are equally responsible. This seems counterintuitive but makes sense in some ways; an Eth whale that speculates from year to year but makes a few big trades should probably not be given a lower footprint than a curious user buying a single $50 NFT. And since it's constant over a year, it works out that if you had one day where you traded 10x as much, it doesn't mean you will be that much more responsible that year (since those extra 10 transactions are likely negligible in terms of Eth's mining activity).

It's not a very good metric, but I do think seeing a variety of metrics can help users understand that none of these are perfect, and if you just look at one metric, it can quickly lead to misleading ideas about how the system works and how we should be minimizing its impact. (No matter what metric, though, it's still clear that Eth is really energy intensive!)

Enlightening discussion, thanks Kyle! :+1: I generally feel this sort of nuance is missing when simply showing individual artist footprints, as there is a lot more depth to a stat like X NFT = Y kWH/KgCO2 (which falsely implies that X*100 NFT = Y*100 kWH/KgCO2).

kylemcdonald commented 3 years ago

None of these solutions will reduce Eth's energy footprint (probably only PoS can do that), but it can reduce individual footprint because it allows more people to participate in the system at once.

This is a great way to explain the used-gas metric, and the pros and cons of L2. L2 also reduces the last metric you mentioned, the per-user footprint.

I have one more proposal for how responsibility could be assigned. In the really large-system view that Ethereum is essentially burning energy to convert it into scarce digital value, and the people who are benefiting are those who have extracted some of that value. So if we analyze ETH as a system, the input is power, and the output is fiat (or other external goods and services traded for ETH). If Beeple converts his $69M to fiat, he would be significantly more responsible than someone who sold an edition of 1000 low-value pieces on Nifty Gateway.

We might also be able to dig one layer deeper and argue that anyone holding ETH is responsible for the emissions in proportion to how much they are holding. Cryptoapologists like to argue that blocks are not just about verifying transactions, but also about the entire history of transactions, which lends credence to this idea. If ETH2 is implemented, it will be more clear that the people with more ETH are also the people who have more responsibility for sustaining the platform.

kylemcdonald commented 3 years ago

@ericelliott thank you for bringing your expertise to this space. I completely agree that miners are not directly incentivized by gas used. There might not be any good answer to who is responsible for Ethereum's energy use and emissions, but I think it's worth talking about some more.

Putting issues of emissions and "good" or "bad" energy use aside, we know miners are the source of Ethereum's energy use. And to the extent that users incentivize miners, users can be considered responsible for that energy use.

Miners are incentivized by two things:

  1. The price of ETH due to block rewards and transaction fees.
  2. Transaction fees / gas prices (for now).

I separate these two things because they are independent (but not unrelated): the price of ETH could rise, and this would incentivize miners. Or transaction fees could rise (during periods of congestion) and this would incentivize miners even if the price of ETH does not rise.

This would mean that users are responsible for Ethereum's energy usage to the extent that they are:

  1. Responsible for increasing the price of ETH.
  2. Paying higher gas prices (going back to the proposal from @mattdesl above)

Point 2 is easy to do the math. But point 1 is more complicated.

The price of ETH is based on people who are buying/selling against other currencies. But this would imply that someone who mined 1000 ETH very early and has not sold any, only trading within the ETH ecosystem, is not "responsible". But that someone like Beeple who converted his ETH to $53M USD would be responsible for a larger share than someone who bought just enough ETH to mint their NFT.

You could also argue that the price of ETH is derived from its utility, signified by the number and size of trades. In this case, responsibility would be allocated based on how much ETH people are trading within the ETH ecosystem. That if everyone just held and transactions dropped to 0, the price would also drop.

Would love to hear your thoughts here.

kylemcdonald commented 3 years ago

@ericelliott Great diagrams!

I absolutely agree price is the biggest factor driving the hashrate, and I've also observed that it does not respond immediately but smoothly. Right now transaction fees make up a similar amount of miner profit as block rewards, but the long-term variation in transaction fees is far less than the long-term variation in ETH price, which puts transaction fees as a distant second 👌

Since you've identified transaction volume as the primary driver of price, and therefore hashrate, does this mean that you see anything that adds volume as proportionally responsible given the volume it adds?

Does this mean that someone who has made 1M transactions is also 1M times more responsible for the energy use of Ethereum than someone who has only made 1 transaction?

Or does volume only matter when it goes over some capacity? This is another argument I could definitely see: that the people who are responsible for the emissions are exactly those people who are paying a premium for transactions when the network is congested.

Let me know what you think. Once I have a clear metric based on this discussion I would be glad to add it to my own work in place of or alongside the used-gas metric. I'm not here for FUD. I'm just relying on the very welcoming crypto community to help me develop an idea about responsibility that not everyone has agreed on yet, and I really appreciate your insight and guidance here.

kylemcdonald commented 3 years ago

The direction you're going here sounds similar to another discussion from Twitter, where someone proposed energy footprint be defined like this:

energy usage(tx) = 
(daily average per-block energy use) x
  ((tx fee / sum of tx fees in block) +
   (tx value transferred / sum of value transferred in block))

(They didn't specify it, but presumably that's also divided by 2 to account for the two ratios.)

Would you agree with this approach?

I'm guessing no, because it sounds like you also see present energy expenditure as partially responsible for/in response to securing the past. Which would imply that any calculations have to be done over the entire history (going into the past and into the future). So how about this one?

energy usage(tx) =
(total energy of entire ethereum history) x 
  ((tx fee / sum of all transaction fees ever) +
   (tx value transferred / sum of all value transferred ever))

Also, when I'm talking about "transactions" here I am only talking about ETH L1 transactions. Working with L2 batches would further complicate the issue, but most CryptoArt is still ETH L1 which keeps things simple.

In the water analogy, the reason a single cup doesn't matter is because there are much larger forces at play: tides, waves, melting glaciers, etc. With Ethereum, are you saying there are other major forces besides transactions that contribute to transaction volume? Or that there are other things besides transaction volume that contribute to the price of Ethereum? I'm not sure I get the point here.

If you disagree with the core idea of dividing up responsibility for the energy use of Ethereum, that's fine. Some people see Ethereum's users as having cleaning hands, and only see the miners as responsible for their energy use. Personally, I believe that by participating in this system I am supporting it and therefore share some responsibility for the energy use. So I would like to understand the scale of my responsibility.

kylemcdonald commented 3 years ago

Here's the question I am trying to answer: who is responsible for Ethereum's energy use, and how responsible are they?

I'm not set on the energy usage(tx) paradigm, it's just one way to tackle the problem, where users or platforms are seen as the sum of their transactions. Others have proposed using wallet totals, which does not involve transactions at all. I'm open to any proposal that makes sense to the folks who understand Ethereum best. Also, when I say energy usage(tx) the implication is not that more transactions cause more emissions: under the gas-used paradigm for example, 2x transactions at 50k gas have the same emissions as 1x 100k gas transaction.

What I'm hearing from you, essentially, is that allocating responsibility is so difficult as to be impossible. Mainly because it would mean accounting for the volume of every rollup that has moved transactions to L2, and tracking the value of every NFT as it moves between wallets, or crosses bridges, and more.

But if that's what you're saying, we can still make an approximation based on whole-market totals. If your paradigm is something like this:

energy usage(user) =
  (total energy of entire ethereum history) x
  (value of all user's ethereum-backed assets / value of all ethereum-backed assets)

Then we can still estimate that last difficult term. (I'm using "ethereum-backed" to include assets that are also on L2.) If your paradigm is like this:

energy usage(user) =
  (total energy of entire ethereum history) x
  (value exchanged by all user's transactions / value of all ethereum-backed transactions)

Again, we can approximate that last term.

this whole argument is 2 years too late

My interest here is not primarily aimed at adopting lower-emission tech going forward (though I think that is important). My goal is to accurately account for the responsibility of PoW in the past.

Thanks for staying with this discussion. I really appreciate your thoughts here. I hope some of this is useful to your thinking as well. Looking forward to your thoughts. I would love to see your stab at an equation, even if you think it cannot be easily computed.

aspiers commented 3 years ago

Great discussion here, and thank you @ericelliott for contributing a lot of expertise. I'm hearing a lot of convincing arguments against making certain calculations or even attempting to infer approximate correlations between transactions and emissions, but so far I'm not hearing many counter-proposals for constructive ways forward. It would be great to get your thoughts (and anyone else's) on what we should be thinking about doing, on top of what we shouldn't be doing. Thanks again!

justincone commented 3 years ago

If I can jump in here, @aspiers your question feels a bit like a non sequitur. @ericelliott is saying that the entire notion of trying to measure or change the environmental impact of NFTs doesn't make sense. Hence, doing nothing would be the implied course of action.

If I'm reading between the lines, you feel a sense of urgency to do something. But the whole point of Eric's argument(s) is that there is no need to do anything.

aspiers commented 3 years ago

@Justin Cone commented on March 25, 2021 4:05 PM:

If I can jump in here, @aspiers your question feels a bit like a non sequitur. @ericelliott is saying that the entire notion of trying to measure or change the environmental impact of NFTs doesn't make sense. Hence, doing nothing would be the implied course of action.

Sorry, I think you slightly misunderstood my point. Stopping trying to measure the environmental impact does not preclude doing other positive actions, such as helping to better educate the wider community on these issues and on how people in the wider blockchain space can reduce their own environmental impact (e.g. by moving to L2s / PoS chains where possible, supporting more carbon-efficient projects etc.)

If I'm reading between the lines, you feel a sense of urgency to do something. But the whole point of Eric's argument(s) is that there is no need to do anything.

Not really. His argument is (very roughly) that it does not make sense to attempt to draw correlations between transactions and emissions. That's an extremely specific argument in a much broader conversation about climate. If we do nothing at all then many of us believe it will have catastrophic consequences for the planet. So my question is: what positive actions can we take, stepping outside the minutiae of technical discussions like the ones above?

aspiers commented 3 years ago

My recommended course of action to educate people about the climate impact of NFTs is to put energy consumption of the entire blockchain in aggregate with a best guess on the economic productivity of all transactions in aggregate.

In other words:

Cost = total annual energy spent on Ethereum. Benefit = total annual transaction volume on Ethereum.

But clarify that unlike the physical systems we're replacing, these numbers are getting better for the environment at an exponential pace and in a few months, it will literally look 10x better.

All these calculators ignore the advancement of technology. Everyone who has so far participated has basically contributed to R&D and early beta testing for the most impactful pro-climate movement in the history of humanity.

You can and should compare cost/benefit ratios to manufacturing. Make sure the carbon costs of the compared industry includes material mining/tree chopping, transportation of raw materials, manufacturing, shipping, distribution, warehousing, and retail if you're comparing NFTs.

Also if you're comparing NFTs, remember NFT transactions are a very small share of Ethereum activity. Account for that.

Thank you, those are the kinds of constructive suggestions I was looking for.

justincone commented 3 years ago

Sorry, I think you slightly misunderstood my point.

Indeed I did. Sorry about that and thanks for the clarification.

kylemcdonald commented 3 years ago

@ericelliott I'm more interested in your "option 2", but I'm not primarily concerned about buying offsets. I'm thinking about accountability more broadly. For example, when you talk about how the damage of present blockchain tech is amortized by future benefits, we should be able to make clear quantitative arguments about this. Both for any specific blockchain, but also for marketplaces within that system.

How do you think those non-trivial problems could be addressed?

I would address these similarly to how the energy usage of Ethereum is calculated. We can't know the exact GPU models, GPUs per CPU and non-GPU power usage, power supply efficiencies, transmission & distribution losses, etc. But we can make upper and lower bounds on these numbers, and also use a mix of various indicators and surveys to make a great guesses (and an estimate of the accuracy of our guess). When determining the value of Ethereum-backed assets, I think we can do something similar with a mixture of concrete details we have from swaps, Ethereum's price, transactions in ETH, NFT values, etc. As difficult as the most-complete version of this would be (with all the different popular protocols), I think two parts are doable: estimating the value of all Ethereum-backed assets as a whole, and estimating a specific user's assets within a specific scope (e.g. CryptoArt NFTs).

But I am getting one things a little mixed up. Originally we were talking about a user's responsibility being connected to how much they incentivized the miners. But in the posts just above, you're also talking about cost vs benefit—are you implying that a user's responsibility is more connected to how much they benefit from the system? Or are you saying something more broad: a user's benefit is proportional to the value exchanged by all of a user's transactions, which is proportional to their responsibility for the price of Ethereum, and therefore proportional to their responsibility for the emissions of Ethereum.

Because, in my opinion, that would make a lot of sense. And it's something that's clear enough that it could be unpacked and quantified in precise terms. It also, interestingly, puts miners in the same "boat" as users because transaction fees and block rewards can just be treated as "transactions of value".

When you posted the graph above showing transaction volume vs Ethereum price, is it total ETH volume or is it total transaction count? I've been assuming you are talking about total ETH volume, but it's hard to see from the chart.

copyxyz commented 3 years ago

Hey everyone, just wanted to chime in and say thanks to everyone for spurring this conversation and providing more insight into the intricacies of PoW blockchains and how it relates to energy usage.

With that being said, and I'm sure you're all aware of this, but the inaccurate carbon footprint estimates brought forward by carbon.fyi, Memo/cryptoart.wtf, and Digiconomist have all done insurmountable (and possibly irreparable) damage to the public perception of NFTs, leading many prominent artists and their fans to publicly shame and blacklist other artists for participating in it in any capacity, even if they're using non-PoW NFTs. Outrage-invoking articles that used the aforementioned sources as the basis of their arguments have successfully convinced the minds of tens of thousands that NFTs are actively ruining the environment, are multitudes worse than traditional forms of art production, are extremely prone to art theft (which can actually be taken down just like any other art site), and are basically a giant pyramid scheme that scams people by having to pay in to be a part of, the payment in question simply being Ethereum's high gas fees. Now I'm seeing larger news sites like Quartz cite Memo's misleading Medium articles and wrong calculations and further spreading the idea to even more people that you're causing a huge amount of emissions to be released when you mint/bid/transfer NFTs when that's not the case at all.

I've seen some of my closest art friends get called out and have their reputations be permanently tarnished for making NFTs, and they can't defend themselves because the mob mentality against it is too strong. Even if you were to explain it to them in the simplest ELI5 terms that NFTs are not destroying the environment, they would still be against it because of the nonsensical connections to social and class issues that others have successfully attached NFTs to, all of which was started because of the original wrong estimates being passed around. I don't think this line of thinking will die down anytime soon, and the people responsible for this should seriously think about their actions and how many lives they've affected with their gross misinterpretations of PoW blockchains and crypto as a whole.

kylemcdonald commented 3 years ago

@copyxyz Folks reading these articles understand at least two things correctly: the total energy usage of Ethereum is large (in an absolute sense), and the people using Ethereum have some responsibility for this usage. Until there is a better answer to the question "how much responsibility?", I expect Memo's numbers and the Carbon.fyi numbers to be repeated. I think better information will help displace misinformation.

@ericelliott I appreciate your definitions. Again, my primary motivation is not offsets (removal or reduction). For me the question is about accountability. When hundreds of thousands of people decide to deploy millions of GPUs in service of a vision, there must be accountability for these decisions. If we are to live in harmony with our planet and each other, we need to make high-resource collective decisions with everyone's best interest in mind, and good decisions should stand strong to critique and questions.

Even if the CO2 per dollar of product is lower for Ethereum than similar markets (of which I'm not convinced), I think it's still worth understanding the details.

You argue "blockchain technology is already more carbon efficient than the legacy systems we're replacing". I don't think this is obviously true. Not just for the usual "but centralized solutions are faster" reason. But because even if blockchain tech is more efficient as a whole across all of its applications, this does not mean that every single application is more efficient than its non-blockchain counterpart. I would like to know if PoW-backed CryptoArt is one of these inefficient applications or not.

I'm not sure GDP and transaction volume is the best comparison. One, because GDP only captures consumption, spending, exports, etc. and does not capture every possible transaction. Two, because GDP is biased towards physical goods and services (many will never be replaced by blockchain tech), and will necessarily have a significantly higher impact.

What I will agree with is that miners use less energy to generate more profit than other similarly digital-first industries like cloud computing. Cloud computing has consistently used around 200TWh/year over the last decade. The market size (profit for cloud computing sellers) is more than $100 billion USD. Let's say Ethereum is at 10TWh/year (playing it safe) and the profit for miners is around 23,000 ETH x 365 = 14B USD. Clearly if you are in the provider/miner's position, and you only care about profit relative to energy use, Ethereum is the way to go, by more than 2x.

But I would have a much harder time arguing that the collective benefit of Ethereum is even vaguely similar to the benefit of cloud computing. Does Ethereum even do 1/20th of what cloud computing currently handles? This is hard to quantify, and not my main question, but I would guess no.

Coming back to the original question: even if Ethereum as a whole is better from an energy use perspective than non-blockchain solutions for similar applications, I want to know what the actual responsibility is for Ethereum users. As far as I understand, Eric you believe this is a very complex and maybe even practically impossible question to answer, but not impossible on principle alone.

I think the definition that resonated most with you is this one:

energy usage(user) =
  (total energy of entire ethereum history) x
  (value exchanged by all user's transactions / value of all ethereum-backed transactions)

It fulfills an important criteria you've mentioned: Future Ethereum activity has the potential to change the effective energy use of a user. If Ethereum continues running on PoW but transactions nearly disappear, then all users will see their "total energy use" increasing even if they do not make any transactions. And if Ethereum switches to PoW and transaction volume skyrockets, then users will see their "total energy use" decrease even if they do not make any transactions.

It does not capture the way that Dapper Labs experimenting with CryptoKitties led to TopShot cards, and created a new market for economic activity. But I think that's fine, because it would be more fair to treat the PoW origins of TopShot as an externality.

By this approach, minting an NFT does not accumulate any energy responsibility. Only when a work is sold does the user have responsibility. It's a kind of profit-guided pragmatism. It makes sense to me, and I'd love to hear any qualms you have with this definition (besides the overall complexity of estimating).

mattdesl commented 3 years ago

Folks reading these articles understand at least two things correctly: the total energy usage of Ethereum is large (in an absolute sense), and the people using Ethereum have some responsibility for this usage. Until there is a better answer to the question "how much responsibility?", I expect Memo's numbers and the Carbon.fyi numbers to be repeated. I think better information will help displace misinformation.

I feel this only applies to readers of Carbon.fyi — which makes sense; as their entire mission is to better understand Ethereum’s footprint, calculate some method of assigning that footprint to each individual, and then provide solutions via Offsetra for those looking to offset that footprint. It's fairly objective and clearly presented, and hasn't seemed to incite reactionary statements and vitriolic blame.

Memo’s article, on the other hand, and most subsequent articles that primarily cites his statements (including this repository) or share screenshots of his calculator, tends to leave users with a different perspective: that minting a single NFT is equivalent to hundreds of kilograms of CO2 emissions, and that the act of minting is analogous to flying or boiling a kettle. The article is not attempting to understand or assign responsibility to Ethereum, but to NFTs, and so strongly as to make them appear like the main force behind the reported carbon emissions. Presenting these numbers at face value, without broader context, the average reader tends to leave with the understanding that:

When, in reality, the relationship is not direct & linear, the energy cost of NFTs can vary significantly depending on how the carbon accounting is calculated, and it is not clear that the removal of NFTs will significantly cut Ethereum's total energy usage.

(In fact, what Eric is suggesting, is that the boom of NFTs may be having the inverse effect: as Ethereum network becomes more strained due to increased high-Gas NFTs, platforms will move more DeFi/NFT transactions from L1 to L2; and thus the whole system becomes more carbon efficient per-user / per-interaction. That is an interesting claim, and perhaps worth more research.)

To bring some data back into this, and just present some alternative numbers to the 1 NFT = 100 KgCO2 presented by Memo and this repo, using different methods of accounting for carbon responsibility:

Say OpenSea is using about 787 M gas per day, or about 142,585 KgCO2 (see here and here – this continues to use the gas metric, which is under debate), and we suggest about 40-80K users are participating in their platform (see here), and we assign this responsibility equally across all users, this leads to somewhere between 1.7 - 3.5 KgCO2 per user per day. This is in a similar range as all users eating a hamburger every couple days, to use a familiar analogue.

Or, say we take the numbers you have shown in your repo, 60,962,694 KgCO2 for OpenSea's lifetime, across its ~14M NFTs shown (at the time of writing), that is about 4 KgCO2 per NFT, similar to the footprint of a single hamburger. (EDIT: See next post, this is incorrect.)

If we calculated the above, but using a different metric than KgCO2 per unit of gas, these numbers would be dramatically different still. If these were the metrics shared to the public at large in Memo's article; that minting an NFT is equivalent to eating a hamburger, I do not think there would be the same outcry.

This all goes back to the original point of this thread: the true cost between a single NFT and a kilogram of carbon emissions is difficult to understand & difficult to measure, and presenting these numbers at face value can be misleading. And, further, the perceived solutions by the average reader (i.e. mint less, pressure artists and NFT platforms, etc) may be misdirected, and/or may not be the most effective way to reduce Ethereum's emissions.

(FWIW I disagree with Eric; I feel there should be some way of calculating the share of responsibility, and there should be continued efforts to reduce and offset that cost until PoS/Eth2 comes along.)

kylemcdonald commented 3 years ago

@mattdesl Your OpenSea CO2-per-NFT calculation doesn't work:

  1. The 14M total from OpenSea also includes items from all other marketplaces, including many beyond the scope of the marketplaces I've listed: going into trading cards, cryptokitties, etc. But my 60k tCO2 total is only based on NFTs that were minted or traded under the OpenSea contract(s). OpenSea is unique from other marketplaces in this regard, that it has the capability to mint and trade under its own contract(s) while also facilitating trading of NFTs minted elsewhere.
  2. NFTs minted on OpenSea have used "lazy minting" since December 2020, which means they are only minted when they are purchased. Therefore a large number of unsold NFTs have no relationship to the Ethereum blockchain at all.

If you'd like to try this kind of sanity-check, go to OpenSea, select the "Foundation" collection and get the total: around 15,000 NFTs. Then from my repo, 4,100 tCO2. So 4,100 tCO2 / 15,000 NFTs comes out to 270 kgCO2/NFT. This is in the same average range as Memo's estimates, which makes sense considering we used the same (problematic) gas-used weighting.

All that said, yes, if minting NFTs were equivalent to eating a hamburger, I expect we'd see less outrage because eating meat is culturally normalized in spite of the massive environmental costs. And without doing the math, we won't know whether one of these other approaches might yield a lower or higher responsibility for NFTs.

mattdesl commented 3 years ago

Thanks for clarifying those numbers, I had misunderstood your data and will edit my post!

Edit: lazy minting is quite a nice feature. Not only is mint/list/bidding/cancel all free and off chain, but according to Offsetra’s recent gas metric 1 NFT is about 40 kgCO2e, ie: 25 mins of a flight or so. Not great, and I’m excited to see this improve with rollups/L2, but even this is a lot more reasonable than many of the numbers presented in Memo’s article.

I also wonder whether the exchange itself should factor into this responsibility metric? It is technically spread across the seller and buyer as they are both on the Eth transaction, no?

kylemcdonald commented 3 years ago

I also wonder whether the exchange itself should factor into this responsibility metric? It is technically spread across the seller and buyer as they are both on the Eth transaction, no?

I've been thinking about this. I think a better way to talk about it is to analyze the harm at different levels of responsibility independently. So you can talk about the platforms as a whole, or as the users individually, but that it doesn't make sense to talk about both in the same way where users + platforms = total.

But, if you did want to do that, I would probably do it based on profit. Every platform takes some cut, and I'd treat that as their responsibility 🤷🏻‍♂️

Sad to see that @ericelliot deleted his replies, I wish I saved the thread! Lots of great points raised 👌

mattdesl commented 3 years ago

I think a better way to talk about it is to analyze the harm at different levels of responsibility independently.

Yes, that makes sense. You might place the responsibility on the platforms (with the goal of pressuring them move to L2 or other platform-level actions) or you might place the responsibility on the artists/buyers (pressuring them toward PoS chains or behavioural changes), depending on what your goals are and how you wish to frame the problem.

For example; I wonder if the analogy of an event/concert would apply. Say an artist is performing at a concert/event on an island, bringing fans together (i.e. all fan must fly to the event). Presumably the carbon footprint of the whole event would be large—this footprint could be assigned entirely to the artist, pressuring them to take responsibility (such as, perhaps, placing proceeds toward carbon offsets), or it could be assigned to the fans (who chose to participate, and incentivised the artist), or the event organizers (such as pressuring them to find more green ways to run their events). Since your goal in this discussion is to determine accountability for the emissions; you cannot place the same responsibility on all three parties without also diffusing it across them, unless you look at each "frame of responsibility" as independent layers.

I'd be curious to actually take some of your suggested metrics around profit/assets held, and attempt to apply them to get a sense of yet another metric for NFT/CryptoArt usage. Have you tried doing that with any of the profit-based metrics yet?

By the way, I've been tracking my footprint from my 9 sold OpenSea mints, using Offsetra's latest metrics (which you may want to consider for your cryptoart-footprint repo?), and comparing them by dollar-earned figures to my online print-on-demand shop, to understand better how this footprint compares to other more normalized activities. On average, the footprint is about 40 kgCO2 per single NFT, but each sale earned about 28 times the revenue of a single physical print sale. Using DHL's Carbon Calculator, it seems like sending a single A3 Giclée Print from London to NYC has a footprint of about 1.85 kgCO2 (not including cost of printing, materials, additional couriers from print studio to my flat, etc). To make the same revenue, that would be about 51 kgCO2 from my print-on-demand sales. This is obviously not representative of the entire system; there are plenty of NFTs selling far lower (or far higher), and of course it does not absolve any carbon responsibility, but I think it's interesting to frame these activities in such a way, and shows that for some artists it may be about as carbon efficient per-dollar-earned as other revenue streams (and, unlike traditional streams, it is one that will likely become exponentially more carbon efficient in the coming months/years as Ethereum throughput improves).

Sad to see that @ericelliot deleted his replies, I wish I saved the thread! Lots of great points raised

Hmm... that is bizarre. 🤔

aspiers commented 3 years ago

@mattdesl commented on March 30, 2021 8:54 AM:

Sad to see that @ericelliot deleted his replies, I wish I saved the thread! Lots of great points raised

Hmm... that is bizarre. thinking

Bizarre indeed, since they were very instructive. It's disappointing behaviour IMHO. It may be possible to retrieve the comments via GitHub's API, but so far I had no luck, e.g.

query {
  repository(name: "eco-nft", owner: "memo") {
    issue(number: 15) {
      timelineItems(
        first: 200,
      ) {
        totalCount
        nodes {
          __typename
          ... on CommentDeletedEvent {
            actor { login }
            createdAt
          }
          # ... on IssueComment {
          # createdAt
          # author { login }
          # body
          # }
        }
      }
    }
  }
}

shows no CommentDeletedEvent objects, and even if it did, the API doesn't expose the contents of the comment. I guess either their API is unfinished, or that's a deliberate choice for policy / political / regulatory reasons, or both.

Having said that, I have email records for each of these comments which I'd be happy to share privately with existing participants at least.

Carbontwin commented 3 years ago

@mattdesl hi, \ I have this nice essay as a notification in my archive.

Folks reading these articles understand at least two things correctly: the total energy usage of Ethereum is large (in an absolute sense), and the people using Ethereum have some responsibility for this usage. Until there is a better answer to the question "how much responsibility?", I expect Memo's numbers and the Carbon.fyi numbers to be repeated. I think better information will help displace misinformation.

I feel this only applies to readers of Carbon.fyi — which makes sense; as their entire mission is to better understand Ethereum’s footprint, calculate some method of assigning that footprint to each individual, and then provide solutions via Offsetra for those looking to offset that footprint. It's fairly objective and clearly presented, and doesn't lead to reactionary statements or vitriolic blame.

Memo’s article, on the other hand, and most subsequent articles that primarily cites his statements (including this repository) or share screenshots of his calculator, tends to leave users with a different perspective: that minting a single NFT is equivalent to hundreds of kilograms of CO2 emissions, and that the act of minting is analogous to flying or boiling a kettle. Presenting these numbers at face value, the average reader tends to leave with the understanding that:

NFTs are directly & linearly correlated with carbon emissions; i.e. minting 10 NFTs leads to 10 times more carbon emissions, and, inversely, if nobody minted any NFTs, there wouldn't be any cause for environmental concern. Thus, behavioural changes against NFTs—boycotting, activism, social pressure, using alt coins, etc—are the most effective ways to reduce these carbon emissions. When, in reality, the relationship is not direct & linear, the energy cost of NFTs can vary significantly depending on how the carbon accounting is calculated, and it is not clear that the removal of NFTs will significantly cut Ethereum's total energy usage.

(In fact, what Eric is suggesting, is that the boom of NFTs may be having the inverse effect: as Ethereum network becomes more strained due to increased high-Gas NFTs, platforms will move more DeFi/NFT transactions from L1 to L2; and thus the whole system becomes more carbon efficient per-user / per-interaction. That is an interesting claim, and perhaps worth more research.)

To bring some data back into this, and just present some alternative numbers to the 1 NFT = 100 KgCO2 presented by Memo and this repo, using different methods of accounting for carbon responsibility:

Say OpenSea is using about 787 M gas per day, or about 142,585 KgCO2 (see here and here – this continues to use the gas metric, which is under debate), and we suggest about 40-80K users are participating in their platform (see here), and we assign this responsibility equally across all users, this leads to somewhere between 1.7 - 3.5 KgCO2 per user per day. This is in a similar range as all users eating a hamburger every couple days, to use a familiar analogue.

Or, say we take the numbers you have shown in your repo, 60,962,694 KgCO2 for OpenSea's lifetime, across its ~14M NFTs shown (at the time of writing), that is about 4 KgCO2 per NFT, similar to the footprint of a single hamburger.

If we calculated the above, but using a different metric than KgCO2 per unit of gas, these numbers would be dramatically different still. If these were the metrics shared to the public at large in Memo's article; that minting an NFT is equivalent to eating a hamburger, I do not think there would be the same outcry.

This all goes back to the original point of this thread: the true cost between a single NFT and a kilogram of carbon emissions is difficult to understand & difficult to measure, and presenting these numbers at face value can be misleading. And, further, the perceived solutions by the average reader (i.e. mint less, pressure artists and NFT platforms, etc) may be misdirected, and/or may not be the most effective way to reduce Ethereum's emissions.

(FWIW I disagree with Eric; I feel there should be some way of calculating the share of responsibility, and there should be continued efforts to reduce and offset that cost until PoS/Eth2 comes along.)

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

mattdesl commented 3 years ago

@Carbontwin That is my own post, not Eric's. :smile:

clvv commented 3 years ago

I recently helped co-write an article explaining why accounting responsibility with gas used is misleading (the same point that has been made by @kylemcdonald).

Long story short, the fundamental issue is that accounting indirect responsibility is more philosophical in nature and there might not be a right answer. To illustrate the issue, I will leave those interested with the following philosophical question.

"A company produces 2 cans of tuna, killing 10 tunas and costing $5 overall. Alice donates $3 to the company. Bob pays $3 for 1 can. Carol was gifted 1 can by the company. How can we quantify each person's responsibility in the death of the 10 tunas?"

I argue it hugely depends on one's philosophical framework, but I'm certain economists will probably say Alice is responsible while Carol is not.

The Ethereum transaction market is even harder to analyze because the it is highly competitive with a fixed supply (of ~12million gas units per block). One could argue accounting for marginal contribution of the increase in transactions fees is better in this case (e.g. if you paid 0.04 Eth for a transaction and a defi arbitrageur would pay 0.03 Eth if your transaction didn't, you are only responsible for a 0.01 Eth increase in mining revenue). But, again, I think this is still philosophical in nature and there might not be a correct answer.

brendanmc6 commented 3 years ago

@clvv Thanks for adding more brain power to this discussion! I did read the article and left a few responses in the clean-nft's discord.

I agree this is a philosophical problem to some degree, but I also think this comes down to communication, which was the original intent of this GitHub Issue (I'm happy it inspired such an in-depth discussion).

I need to communicate better on carbon.fyi what these numbers don't mean. I tried to put this briefly on carbon.fyi/learn but it's clear my notes leave some loose ends. I tried my best to make clear that this is an opinionated allocation of responsibility, and this allocation is necessary in such a unique, decentralized system, and that it has tradeoffs depending on your ultimate goal.

kylemcdonald commented 3 years ago

I've been keeping track of some different allocation methods. Here is an excerpt from my working methodology notes:

  1. Per-person: divide all emissions by the total number of people using Ethereum. Not really tenable. Total people using Ethereum is very difficult to estimate. Does not account for the fact that some people have profited significantly more than others. No relation to miner activity.
  2. Per-transaction: each transaction is equally weighted. Simple to compute. Simple model of accountability that assumes every time someone uses Ethereum they are benefiting from the system. But does not account for the fact that some people have profited significantly more than others. Transactions are effectively capped at a certain rate limit. This method has no relationship to miner activity. This method would imply moving activity to L2 would help by using fewer transactions, but L2 does not necessarily decrease the hashrate.
  3. Gas-used: weight each transaction by its gas-used relative to the total amount of gas used that day. This accounts for the way that more low-gas transactions could fit into the same block as fewer high-gas transactions. Gas-used represents a portion of what the Ethereum network was actually “doing” (even though this computation represents less than 1% of the energy use). This is used by carbon.fyi. It's also relatively easy to calculate. Unfortunately gas-used does not directly affect mining activity in any way. Has the same misdirection about L2 as "per-transaction".
  4. Gas-price: weight each transaction by the gas price they are willing to pay. Accounts for the fact that miners favor transactions that pay higher gas prices and schedule them sooner. Easy to calculate. Unfortunately this should end up similar to transaction count method due to gas prices hovering around an average value at any moment.
  5. Transaction-fees: weight each transaction by the total transaction fee. If one user has paid twice what another does in total transaction fees, they have twice the responsibility. This does not account for the way Ethereum's price changes, and does not account for the block rewards also incentivizing miners.
  6. Transaction-volume: weight each transaction by the total value of ether exchanged in that transaction. This is based on the idea that users are responsible proportional to the value that they extract from the system, and that trading more currency corresponds to getting more value out of the system. Additionally, transaction volume seems to be most influentially connected to the price of Ethereum, which affects the hashrate.
  7. Asset-volume: this is harder to define, but it's a similar idea as "transaction-volume", plus some accounting for the way that a transaction can represent stored value without actually trading ether. For example, an NFT that traded for 1ETH may also be considered a 1ETH transaction when it moves from one wallet to another. An L2 chain that is secured by L1 may be considered to represent the sum of all activity on the L2 chain. The idea of calculating "asset value" makes some of these very difficult to calculate.
  8. Asset-value: weight by the total value of all assets associated with a user or platform. This has the weird property of letting someone "wash their hands" of their culpability just by selling everything they own.
  9. Held-asset value-duration: multiply asset value times the duration it was held. Very computationally intensive and difficult to do this for everyone. Penalizes people who have just held onto assets speculating on future prices.
  10. Miner-incentive: basically the Rubio/Dai method posted above by @clvv. Assumption is that the hashrate varies with respect to rewards plus fees times the price of Ethereum: (block reward + transactions fees) x ETH price. Using this as a weighting function is like a next-step on top of transaction-fees described above. Intuitively, if we assume all responsibility can be assigned to transactions and grouped by contracts/platforms governing those transactions, then the additional block reward term should act as a blending function between the transaction-fees method and the per-transaction method. The ETH price term shouldn't have a big effect over the course of one day, but will make a big difference when weighting transactions that happened when ETH was priced very differently.

@mattdesl regarding the latest Offsetra metrics, they don't directly translate. I calculate kgco2 per gas on a per-day basis, because Ethereum's hashrate and therefore emissions have changed significantly over time. So I can't just plug in their kgco2 per gas numbers. I haven't implemented any of these methods yet, I've been trying to think through them first.

Regarding @ericelliott's posts, I believe in the right to be forgotten :) If he wants to delete what he said, that's fine, no need to re-post. I mostly just wanted it for myself, and I did find a copy in my email 👌

clvv commented 3 years ago

@kylemcdonald Thanks for listing these.

To clarify, the main objective of the article is to inform the readers how any action might interfere with Ethereum hash rate. We did not actually give any specific methods for footprinting of transactions. But since you are making a list, I will elaborate on three concrete methods that we have considered.

Let tx be an transaction and B be a block (simply a set of transactions here). Denote transaction fees (in Eth) of tx by feesPaid(tx) and overall fees for block B by feesPaid(B). Suppose tx appear in some block B with overall mining reward of Rewards(B) Eth (so Rewards(B) = 2 Eth + feesPaid(B), currently). Suppose also that we have a per-block footprint available, say block B is responsible for Footprint(B) kg CO2e. Below are three methods of calculating Footprint(tx) for a transaction tx.

Method 1. Footprint(tx) := (feesPaid(tx) / Rewards(B)) * Footprint(B).

Note that this is not the same as Method 5 given in your list. We are using overall mining reward here, not just overall transaction fees. This method hold the Ethereum protocol accountable for a large portion (~50%) of the emission. Summing up the footprint of all transactions tx in B gives the rest (~50%).

Method 2. Footprint(tx) := (gasUsed(tx) * (gasPrice(tx) - lowestGasPrice(B)) / Rewards(B)) * Footprint(B)

Above, gasPrice(tx) is the gas price paid by transaction tx and lowestGasPrice(B) is the lowest gas price in block B. Intuitively, this is saying we are discounting the contribution of tx by what another transaction could pay in its place, i.e. the marginal contribution to fees by tx.

Let me explain how Method 2 is derived a bit further. Assume we have a method of determining what would be included in block B if transaction tx was never created (call this hypothetical block B'). Then, we are defining Footprint(tx) := ( (feesPaid(B) - feesPaid(B') / Rewards(B) ) * Footprint(B), i.e. we are only holding tx accountable for the increase in overall fees. We are then estimating that feesPaid(B) - feesPaid(B') ~= gasUsed(tx) * (gasPrice(tx) - lowestGasPrice(B)). This method could give numbers that are order of magnitude smaller than that from Method 1, as gasPrice(tx) could be very close to lowestGasPrice(B).

Method 2 no longer preserves the amount of overall CO2e emission. In some sense, it is under-counting the responsibility, especially if we try to add up the footprint for a set of transactions in the same block. This method essentially assumes that there are infinitely many transactions willing to pay a gas price of lowestGasPrice(B), which is definitely not true. But I think this could serve as a good "lower-bound" for footprinting.

Refining on Method 2 gives us a parameterizable method.

Method 3. Footprint(tx) := (gasUsed(tx) * (gasPrice(tx) - lowestGasPrice(TimeFrame(tx))) / Rewards(B)) * Footprint(B)

Above, lowestGasPrice(TimeFrame(tx)) is simply the lowest gas price in a fixed time range (symmetrical) around transaction tx, e.g. 10 blocks, 1 hour, 1 day, etc. Method 3 is identical to Method 2 when TimeFrame is 1 block, and tend to give numbers closer to that from Method 1 when we increase TimeFrame.

None of these three methods accounts for potential contribution to change in price of Ethereum.

I am not suggesting any of the above methods are "better". I still think there are fundamental philosophical hurdles that has to be resolved before such claim can be made.

Also, Method 8 and 9 from your list are new to me and I would like to point out some flaws (again, these are new to me so I apologize if these are known counter arguments). The rather obvious counter argument here is what about lost addresses and 0xdead. Do they really have a footprint if no one can move funds from these addresses?

clvv commented 3 years ago

@brendanmc6 @kylemcdonald

Here's one idea for displaying CO2e information--how about displaying a range for estimated carbon footprint? As a concrete proposal, I propose to use Method 1 and 2 I gave above as upper and lower bounds for carbon footprint. Though, I do understand if there is a preference to keep the current method as the upperbound. I personally do not see any argument against Method 2 above being the lower bound (but I'm happy to be proven wrong here).

mattdesl commented 3 years ago

@clvv I tried to write a python script to better understand how this can fit with real-world transaction/block data from a single NFT sale on OpenSea. Do these numbers look right?

https://gist.github.com/mattdesl/1334f424032df5c3a4f5d3058de2a33a

M1 Footprint: 24.214194 KgCO2 M2 Footprint: 0.705268 KgCO2

The variance between the two methods seems a bit high, I wonder if I'm doing something wrong? Haven't figured out how to get a time slice of the block's lowest gas for M3.

clvv commented 3 years ago

@mattdesl I think you are interpreting the formulas correctly.

The variance between the two methods seems a bit high

Correct. There is a huge different depending on if you count the absolute contribution (what Method 1 does) or the marginal contribution (what Method 2 does) to mining rewards. The two methods are about 30x off for your example, since this transaction is paying 103gwei for gas and the lowest transaction in the block is paying 100gwei (3gwei difference, which is 3% of 100gwei). Method 2 even says a transaction has zero footprint if it is the lowest gas price transaction. However, footprint given by Method 2 increases quite a bit if you look at high gas transactions. This makes intuitive sense, those paying higher gas prices are driving up the overall transaction fees more than those more stringent on their gas price.

That being said, I'm making a guess that perhaps Method 3 with Timeframe being ~50 blocks could serve as the lower estimate. I estimate this should result in a footprint that is at least about 10% of what Method 1 gives for most transactions, putting the two estimate within the same order of magnitude. This is basically saying most transactions are overpaying gas price by 10% compared to the lowest gas price over ~10 min period. (Take this with a grain of salt, as I only did back-of-the-envelope calculations here.)

I personally believe Method 1 gives a better upper estimate than methods that only account for gas usage. However, Method 1 probably gives a number that is about ~50% of what carbon.fyi gives (not too significant in terms of the order of magnitude).

Haven't figured out how to get a time slice of the block's lowest gas for M3.

This might be hard to do with just etherscan. They do have daily gas price api. But collecting data and running the analysis locally is probably better.

kylemcdonald commented 3 years ago

Hi everyone, and pinging @clvv especially, I've done a bit more work in this direction. I would really appreciate feedback and thoughts on this work:

https://github.com/kylemcdonald/cryptoart-footprint/blob/main/Per-Transaction%20Models.ipynb

I've simplified the discussion to just being about hashcount (number of hashes, portion of hashrate) rather than energy or emissions.

The two directions I haven't explored yet are:

  1. Value weighting. This is complicated by the fact that a lot of Ethereum-backed value is on sidechains. More than 10x the transaction volume happens on sidechains compared to L1.
  2. Using the difference between a transaction's gas price and the lowest gas price in the same block. I couldn't find a formulation of this that correctly handles the case where all the transactions are the same price.
mattdesl commented 3 years ago

Hey Kyle, that looks like a great resource. I'm trying to understand how to translate your models to something like KgCO2e, even though it won't be a perfect measure — e.g. for the purpose of offsetting, and to understand what could be done to reduce this until Eth PoS arrives.

Does the EH from each model represent the entire lifetime of a contract? So, for example, the tested FDN ERC-721 contract comes to an average of ~7.91 EH, and that contract seems to have a range of 2021-01-13 to 2021-03-12. If we just assume constants (Eth = 17.2 TWh/year, 42EH/day, and Digiconomist's 0.4749 KgCO2/kWh) it seems like that one Foundation contract comes to something like 71 tonnes CO2e per day (or between 19 - 214 tonnes depending on what model output you choose). I also wonder now how to compare this kind of metric with other industries/markets to see these numbers in context?

EDIT: One thing I think might be worth considering, is that EIP-1559 is now slated for the next protocol update (July 'London' hard fork), which will use a base fee instead of having transaction fees sent directly to miners.

vandeven22 commented 2 years ago

I share your concerns. I hereby contribute an image. The title is 'creative destruction'. Not minted anywhere, so far. Thumbs up & thanks. BEB4B3BE-BA20-4ADC-9F27-766D7EC6D4ED thanks!