Skip to content

Instantly share code, notes, and snippets.

@phyro

phyro/time.md Secret

Last active January 18, 2024 11:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phyro/27e4100255bdf8be79a19bc98750944f to your computer and use it in GitHub Desktop.
Save phyro/27e4100255bdf8be79a19bc98750944f to your computer and use it in GitHub Desktop.

Time-based currencies

This is just a short compilation of thoughts. Feel free to chime in and correct or share resources on the topic in the comments.

What

There's been some attempts to use time as money. One of them is known as time-banking [1]. The idea is that people exchange each other's time which is assumed equally valued. An elegant idea that unfortunately has a few shortcomings. First, it doesn't take into account work speed which incentivizes people to get paid more by working more slowly and thus increasing the time which is the payout. Second, it doesn't take into account the fact that there's a difference in supply and demand for different work which also changes over time. Third, it assumes participants of the system follow exact 1:1 time ratio. Such a system also has to work on trust or some administration (central entity) to avoid inflating time.

We can create a new kind of time-based currency, one that's not local like time-banking but rather the currency we exchange is a timeline that's shared globally. Unlike in time-banking where an hour is equal, but local-scoped, here, an hour represents an hour of a global network time. Being global-scoped means it's not tied to any participant. As a consequence, if I pay someone an hour of global work today, that's not going to be the same the next day. So unlike time-banking where the time is local to a person and equal between all people, in this model, time is presented as a global time and humans can merely reference it.

How

Blockchains are a linearly ordered structure. They define a sequence of events which we call blocks. Each block defines how much resource enters the system, and that value is defined for all future blocks. We label the block positions with numbers that we call "height". The resource issuance is thus relative to chain's height and predictable by the height.

graph TD;
    Height-->NewResourceAmount;

But we control the speed at which linearity progresses through something we call the Difficulty Adjustment Algorithm (DAA). The purpose of this adjustment algorithm is to either speed up or slow down the chain's "time" i.e. the linear progression or block production. We target a new block to arrive every T minutes on average e.g. Bitcoin targets a block every 10 minutes.

graph TD;
    Height-->NewResourceAmount;
    RealWorldTime-->Height;

This is a transitive relationship because if real world time is related to height and height is related to the issued amount, then real world time is related to the issued amount as well.

graph TD;
    Height-->NewResourceAmount;
    RealWorldTime-->Height;
    RealWorldTime-->NewResourceAmount;

We can just forget about the intermediary "Height" step and focus on the direct relation of real world time to the issued amount.

graph TD;
    RealWorldTime-->NewResourceAmount;

In Bitcoin, as time passes, we issue (or inject) a different amount of this resource into the system. The reason for this is because Bitcoin encodes artificial points in time that reduce the issuance. These are called halvings and happen every 4 years. But what happens if we remove these points and moreover, synchronize a real world time unit with issuance? For instance, for each real world second we issue a unit of this resource. We can just call this issued unit a second.

graph TD;
    RealWorldSecond-->IssuedSecond;

This is one way to "trustlessly" map real world seconds into a digital network, and inside this network, seconds are money. One thing to note about these global time models/networks is that whichever starts first will forever map more real world seconds than any network that starts after it. It's easy to see why that's true if we think of them as a global clock. It starts at some point in time (genesis) and ticks forever.

When

There's a project that started this experiment on January 15th 2019 [2] known as Grin. It's like Bitcoin, but with a simpler design and a time-based issuance as discussed above.

[1] https://www.investopedia.com/terms/t/time-banking.asp

[2] https://grinexplorer.net/block/0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment