Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed conventions for talking about multiples of epochs #1890

Open
vbuterin opened this issue Jun 12, 2020 · 13 comments
Open

Proposed conventions for talking about multiples of epochs #1890

vbuterin opened this issue Jun 12, 2020 · 13 comments
Labels
general:presentation Presentation (as opposed to content)

Comments

@vbuterin
Copy link
Contributor

vbuterin commented Jun 12, 2020

[Edited to reflect comments below]

I propose as a convention we abuse terms for talking about length of time to talk about particular powers of two of epoch lengths; this will make it easier to think about time within the protocol.

Note: 1 epoch = 384 seconds = 6.4 minutes

Unit Epoch count Actual length
Hour (or "ethereum hour" to disambiguate) 2**3 = 8 ~51 minutes
Day 2**8 = 256 ~27.3 hours
Week 2**11 = 2048 ~9.1 days
Month 2**13 = 8192 ~36.4 days
Year 2**16 = 65536 ~291 days

Note that the fact that most of these are "slightly too long" is arguably helpful for a possible future scenario where we cut slot times from 12 to 8 seconds once it proves safe. If slot duration drops to 8 seconds, hour and year would have their epoch count doubled (and become ~68 minutes and ~388 days, respectively) and the other units would keep their current epoch count (ethereum day ~= 18.2 Earth hours, ethereum week ~= 6.1 Earth days, ethereum month ~= 24 Earth days).

@adiasg
Copy link
Contributor

adiasg commented Jun 12, 2020

It also makes sense to prepend 'epoch' or 'e' to these to reduce ambiguity when the context isn't clear.

Also serves great as units - eHour/eH, eDay/eD, etc.
Example usage: this smart contract allows for withdrawal only after 2 eWeeks.

@dankrad
Copy link
Contributor

dankrad commented Jun 13, 2020

It would be nice if the custody period (2^14 = 16,384 epochs = 73 days) would fit into this. It's annoying to call it "8 weeks" when it's actually a bit more than 10 weeks long.
I guess the best name right now would be "short quarter"?

@vbuterin
Copy link
Contributor Author

vbuterin commented Jun 13, 2020

I suppose? Though I do think if we take @adiasg's suggestion and call them eWeeks then saying a custody period is 8 eWeeks is not so bad.

(Or 2 eMonths)

@dankrad
Copy link
Contributor

dankrad commented Jun 13, 2020

I kind of dislike the proposal "epoch hour/eHour" as a physicist, since when two units are combined as a word, it conventionally means they are multiplied (e.g. kilowatt hours). And an epoch is clearly a unit.
Something more like the "kibibyte" approach would be more appropriate. In fact, this is pretty much the same idea of approximating units with powers of two. Suggestions:

  • BiHour, BiDay, BiWeek, ...
  • Bour, Bay, Beek, Bonth (B could stand for Binary or Beacon chain)

@vbuterin
Copy link
Contributor Author

I actually didn't intepret eHour as meaning "epoch hour", I interpreted it as "ethereum hour" 🤣

We have regular miles and nautical miles, and now regular hours and ethereum hours.

@dankrad
Copy link
Contributor

dankrad commented Jun 15, 2020

I'm happy with Ethereum hour :)

@hwwhww hwwhww added the general:presentation Presentation (as opposed to content) label Jun 15, 2020
@MicahZoltu
Copy link
Contributor

We have regular miles and nautical miles, and now regular hours and ethereum hours.

And this is something that causes no end of confusion, mistakes, bugs, etc. Redefining terms to mean something subtlety different is just asking for miscommunication, errors, etc. so I advocate very strongly against this proposal.

Language is a tool that allows humans to compress a complex thoughts into a very low bandwidth communication channel (sound waves). The human brain is highly optimized to utilized this channel for decoding and storage. When a term that has a hot path in the brain (e.g., the listener knows and is familiar with it) is redefined to mean something different, it suddenly becomes very difficult to think about the thing easily, especially for a newcomer.

Tl;DR: Use an appropriate term, or make up a new one if you can't figure it out an appropriate term. Don't redefine existing words, especially when those words need to retain their existing meaning within the topic being discussed.


What exactly is the problem with just saying "eight epochs"?

@dankrad
Copy link
Contributor

dankrad commented Jun 20, 2020

What exactly is the problem with just saying "eight epochs"?

There is no problem in saying eight epochs. However, if it's 500 or 5000 epochs, you have to think every time how long that is. It is a day, a week, or a year?
For many minor technical points, that might not matter. For example, how long is a custody period? That isn't too relevant to the typical staker. However, for example for challenge periods, it suddenly really matters in human terms, because as a staking operator, I really want to make sure I can never be offline for longer than that period. It thus helps having terms that make this clear, and at least to me, being able to talk about an "Ethereum week" or "Ethereum quarter" does that much better than "2^11 epochs".

@MicahZoltu
Copy link
Contributor

Why not just say "about a week" or "about a month" in that case? That way it is clear to the newbie listener/reader that you are talking about a humanized order of magnitude, not an exact value, and there isn't a risk that the person doesn't fail to realize that custom jargon is being used.

@mratsim
Copy link
Contributor

mratsim commented Jun 22, 2020

Every time I encounter non-standard units of time or distance:

  • Astronomical Unit,
  • Light-years,
  • Parsec,

It's always a struggle to reframe those in what actually matters, and this is also the same for non-metric units like feet, miles, ounces, pounds.

Currencies are a typical example as well, 80% of the cases you reframe to your currency of reference, i.e. the one you are using daily.

Eth hours/days/months is more ergonomic to use for people as they have a common scale reference in the name.
Regarding the month unit, it's inaccurate anyway, you have lunar months, you have 28, 29, 30 and 31 days months. Having an EthMonth is way easier to grasp in terms of timeline than 8192 epochs.

@MicahZoltu
Copy link
Contributor

I would be much less opposed to this if the terms were not cribbed directly from English. For example, eears, eonths, eeks, eays, eours, einutes, eeconds would at least make it abundantly clear to any outside listener/reader that they need to go look up what those terms meant, but would allow for standardized order of magnitude values in communication. My problem with eth-month or ethereum-month is that I can almost guarantee that people will shorthand it to month and confusion will be introduced.

@vbuterin
Copy link
Contributor Author

vbuterin commented Jun 26, 2020

Having an EthMonth is way easier to grasp in terms of timeline than 8192 epochs.

The goal is exactly this. It's hard to remember what 256 epochs or 2048 epochs or 65536 epochs actually means, so it makes sense to have a unit to represent these larger quantities that people can naturally understand. Having a name with a bit more distance to existing terms than "ethereum day" / "ethereum month" could be reasonable.

For example, eears, eonths, eeks, eays, eours, einutes, eeconds would at least make it abundantly clear to any outside listener/reader

An "eek" for the 9 day duration is not that bad!

@nrhirsch
Copy link

nrhirsch commented Jul 1, 2020

Hours and days, years are based on planetary/solar movements of our earth. If Ethereum wants to make some time measure then I think it should have its own name for such things, not to use the ones proposed. I’m a proponent of ethereum and a miner but those names are a little presumptuous.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
general:presentation Presentation (as opposed to content)
Projects
None yet
Development

No branches or pull requests

7 participants