Time-windows

  • If a transaction includes a time window, it can only be committed during that window
  • The notary is the timestamping authority. The notary only commits transactions that are inside the time window.
  • Time windows can have a start and end time, or be open at either end.

The notary cluster acts as the timestamping authority. It verifies that a transaction occurred during a specific time window before notarizing it.

Nodes get time window signatures to prove a transaction happened before, during, or after a specific time. The notary timestamps and notarizes at the same time, so if the node doesn’t need to commit to the associated transaction, it can reveal the time window in the future.

A node may not send a transaction to the notary right away—they might need to circulate the transaction to other nodes involved in the transaction, or request human sign-off. Even if the node sends it as soon as it’s generated, the node’s clock and the notary’s clock will never be perfectly in sync due to latency and physics. This means that the timestamp on a transaction is usually different from the time it was created.

  • Issues of physics and network latency
  • Between inserting the command and getting the notary to sign there may be many other steps, such as sending the transaction to other parties involved in the trade, or requesting human sign-off.

Times in transactions are specified as time windows, not absolute times. Time windows can be open-ended, and specify only “before” or “after”, or they can be fully bounded.

time window

When both a before and an after time are included the transaction occurred at some point within that time window.

Time windows let you represent transactions that follow different models, such as those that occur:

  • At some point after the given time, such as after a maturity event.
  • At any time before the given time, such as before a bankruptcy event.
  • Around the given time, such as on a specific day.

If you need to convert a time window to an absolute time, such as for display purposes, you can use a utility method to calculate the midpoint.

Previous
Vault

Was this page helpful?

Thanks for your feedback!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.

We're sorry this page wasn't helpful. Let us know how we can make it better!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Create an issue

Create a new GitHub issue in this repository - submit technical feedback, draw attention to a potential documentation bug, or share ideas for improvement and general feedback.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.