42

1 ether is 10^18 wei, the smallest denomination. Why does ether have such a high degree of divisibility?

2
  • 2
    Is this a question about historical decisions or the benefits/drawbacks of having 18 decimal places? Jan 22, 2016 at 16:36
  • 1
    @TaylorGerring primary about the design rationale behind this decision and the benefits/drawbacks
    – J-B
    Jan 23, 2016 at 8:46

3 Answers 3

45

Vitalik had the foresight to realize one day, most financial institutions, corporations and people would utilize ethereum. To a further extent, alien races and far away worlds may also want to utilize ethereum.

While the current financial market cap of all value including derivatives in the financial world are in the trillions (1,000,000,000,000), if not, hundreds of trillions (100,000,000,000,000) or more. Our total population in the billions (8,000,000,000). Accounting for additional neighboring planets and yet to be discovered M-class planets, the only rational thing to do was provide ether the room to grow to it's true potential.

Allowing for 18 decimal places was the only way to move forward. This will allow ethereum to one day achieve it's true market cap and be utilized within our known universe by all species capable of building a computer and communicating through the inter-web to participate in universal-commerce without fear of being scammed.

7
  • 3
    epic answer.. really :)
    – tobi
    Mar 21, 2017 at 22:57
  • Good idea! When the coin gets expensive it won't have big transaction fees May 30, 2017 at 15:03
  • 1
    yes, I also think that 18 decimals thing is just to prepare for the far future (or near future, I'm not sure).
    – 0xh8h
    Jan 11, 2019 at 4:15
  • 3
    When you make a space and computationally inefficient solution, prone to numerical inaccuracy, with poor UX (hard to read and fit), that is incompatible with most systems (IEEE 754) for the sake of a hypothetical future in a 1000 years 😎
    – Dominic
    May 6, 2021 at 4:05
  • @Dominic when at IBM, I was programming a demo system for CITIGROUP, there were BigIntegers and BigDecimals, too. So you shouldn't be so sure I think =) So Vitalik hasn't touched the infinite sky that I dream to touch with HTTP://infinitesimalium.i2p (almost empty site at the time of writing, nothing interesting.) =) I would like to implement ANY mathematical infinities. May 25, 2021 at 15:43
19

I do not know for sure, but it makes lots of sense that if doing fixed precision arithmetic, 18 decimal places is exactly the amount of precision that fits in a 64 bit signed long when storing the inverted basis to prevent any rounding issues. So, if it were me, I would have made it 18 decimal places for exactly this reason.

Similarly, if you are doing fixed precision arithmetic by storing your value in a signed 32 bit integer and expect to carry 2 decimal places like most currencies and you want an even power of 10 as your maximum global limit, then 21 million is your number, which coincidentally is what Satoshi used.

1
  • I love that this answer addresses the mathematical reason while @high110 answer addresses the philosophical reason. Math and Philosophy the two strongest tools we have. Beautiful.
    – Tomiwa
    Jun 22, 2022 at 14:17
5

Applicability

In addition to Xilis' answer:

Ether itself has 18 decimals, most ERC-20 tokens simply follow that standard.

1 ETH is represented by 10^18 of its natural unit ( 1 Ether = 1,000,000,000,000,000,000 wei ).

This offers you much greater precision - essentially, you aren't limited to trading the equivalent of a cent ($0.01 for example), you can go much, much lower. It means you can own - actually own, and have full control of - a very small portion of a whole Ether. Might not be so relevant today, but it might be in the future; in case the trade value rises dramatically, you would still be able to buy, own and use the system, without any changes.

Solidity assumes 1e18 to be 1 ether as referenced Here.

Interoperability

As referenced in a post here:

It makes math work out really really well when interchanging with other systems. If you have to restrict the precision for some good reason, try instead restricting the divisibility of the transfer functions. For example, only increments of 1000000 can be transferred gives the same effect as using fewer decimals than 18, but still retains the convection of putting the point at the 18th decimal place.

Not the answer you're looking for? Browse other questions tagged or ask your own question.