RoughTime

This host runs a RoughTime synchronization server implementing Revision 15 (0x8000000c) of the IETF protocol. RoughTime provides cryptographically verifiable time without requiring a trusted network path.

New to RoughTime? Read our announcement: Why We Built a New RoughTime Implementation

We operate this server for community benefit. It is intended for synchronization, timestamping, and testing. Please use it responsibly.

Server Information

Addressroughtime.sturdystatistics.com
Port2002
ProtocolUDP
Public KeyNqIjwLopQn6yQChtE21Mb97dAbAPe5UOuTa0tOakgD8=

Verify this key via DNS:
dig -t TXT roughtime.sturdystatistics.com

Quick Start

You can query this server immediately using our command-line client

clj -M:run :server-name "SturdyStatistics"

Tip: For verifiable time, query at least three independent servers and verify the response chain. Cloudflare maintains a public ecosystem list here.

What is RoughTime?

RoughTime is a secure time service. Servers sign batches of client requests, chaining them with Merkle trees. Each response proves the server’s notion of time and prevents undetected backdating/forward-dating across requests.

Read more about our mission and architectural choices.

Live Example Results

skew0
expires in2d 11h
Request Message
{"VER" "0x8000000c",
 "SRV"
 ["4a4344b8 ed36a263 cae105a2 92fe2661"
  "d964691d be07548f 43b5b523 2671f3ab"],
 "NONC"
 ["6d7a733f 2792beef 2cd2dbaa ccbf096d"
  "3ca4a9b2 8cbddad4 26ac0a4a 584c878b"],
 "TYPE" 0,
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["0e36abea 68481654 c7369a91 6e396e26"
  "64817a0a 52f6cd7a bde4344d c3595f7b"
  "b373fcb3 02358fca 7ab33aa9 768706ec"
  "3c6e5b90 007bce81 a33fb292 715cc701"],
 "NONC"
 ["6d7a733f 2792beef 2cd2dbaa ccbf096d"
  "3ca4a9b2 8cbddad4 26ac0a4a 584c878b"],
 "TYPE" 1,
 "PATH" [],
 "SREP"
 {"VER" "0x8000000c",
  "RADI" 10,
  "MIDP" 1779740584,
  "VERS"
  ("0"
   "0x80000001"
   "0x80000002"
   "0x80000003"
   "0x80000004"
   "0x80000006"
   "0x80000008"
   "0x80000009"
   "0x8000000a"
   "0x8000000b"
   "0x8000000c"),
  "ROOT"
  ["4d13f6be d3ca28d5 8246bdaa 78820f8a"
   "9ec596fa 05c34536 fa27922f 3180577e"]},
 "CERT"
 {"SIG"
  ["6cf4b713 9cc19852 96cfd465 4549b97a"
   "9763f204 6b859399 8ab1ee81 fb62c77e"
   "f952aeb6 8b9a0f11 63a1c66a adc78c1a"
   "715bdf06 8d25e8cb 52c9e6db 4d84f80b"],
  "DELE"
  {"PUBK"
   ["5ff53447 a5278e9d 4ade7852 482e1b6f"
    "639a7f27 afaefb14 7cefe8bf f8767d45"],
   "MINT" 1779264000,
   "MAXT" 1779955200}},
 "INDX" 0}
skew0
expires in13h 44m
Request Message
{"VER" "0x8000000b",
 "SRV"
 ["0d93616f 19641cbf 68f8b41a 1b659797"
  "fc9330b6 58a5042d 6be10211 94ee290c"],
 "NONC"
 ["03684465 00423727 8734f92f 0b266ba2"
  "15b575ef 9744f96c 7fbfd0a6 2ae4596f"],
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["da7e0635 5b3c12d4 c35fc055 f5924b30"
  "c12cc0e1 d3f400f1 0faff7dd dd0fa1a1"
  "172c7a72 0d344f13 7369b2c0 fbed630b"
  "0740ba44 6b0aa349 a5e64fe1 97a91102"],
 "VER" "0x8000000b",
 "PATH" [],
 "SREP"
 {"RADI" 1,
  "MIDP" 1779740584,
  "ROOT"
  ["57cfbdee 2df0a2cd 7686c88d fb9c277b"
   "6233a25c aa8b2460 fef9e20c 819b34ed"]},
 "CERT"
 {"SIG"
  ["24f48143 3d2d81dc 6db7199c b82104f0"
   "590e91a1 ce2803d5 2402e849 496b74da"
   "3c122ca8 fbe15810 8f9ade4c 5b35beba"
   "73ae146d d215173b 3cc2021d 86b74f0d"],
  "DELE"
  {"PUBK"
   ["beddd075 10cb2743 caff345f 1cc8437d"
    "54493147 dc77259c 4f8fd679 5566bef8"],
   "MINT" 1779703647,
   "MAXT" 1779790047}},
 "INDX" 0}
skew0
expires in
Request Message
{"VER" "0x8000000c",
 "SRV"
 ["95645ff5 c385c24e ba48d509 528a4a74"
  "e0861c0b 57f46c25 ee5c6a48 8a23246f"],
 "NONC"
 ["b9a982a0 bb0f784c 99cc94f0 326baf08"
  "d1243666 2744615f 8fd92f5a f31938c1"],
 "TYPE" 0,
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["eef6570d e1d38b33 d258efed fdafa876"
  "13afb9d4 8b9ee1a3 a4925aa1 4ebb78e1"
  "ef016143 bd9ca678 c9d12f1f f2442d61"
  "eaa99fc2 0d77a572 9972ab78 d507ae0c"],
 "NONC"
 ["b9a982a0 bb0f784c 99cc94f0 326baf08"
  "d1243666 2744615f 8fd92f5a f31938c1"],
 "TYPE" 1,
 "PATH" [],
 "SREP"
 {"VER" "0x8000000c",
  "RADI" 5,
  "MIDP" 1779740584,
  "VERS" ("0" "0x8000000c"),
  "ROOT"
  ["f03461ed 3f223c31 73d5cb60 5ac11484"
   "64860aa3 6ce1fdd2 a65498f5 c4dc0a27"]},
 "CERT"
 {"SIG"
  ["c0be52c3 79a57dbd 026b9c23 13748323"
   "35296c4f 42a2b0ec 9319ee0c 18e591dd"
   "5ba1b635 8799b899 989a1d3e 9e314c7e"
   "9abd8b52 e95cef59 a695f41c 66c4f005"],
  "DELE"
  {"PUBK"
   ["92a0b40f d0dc4852 061f075d 305ded4d"
    "9ccc3001 f41f038d e1071a40 4fcf3d60"],
   "MINT" 0,
   "MAXT" 18446744073709551615}},
 "INDX" 0}
skew0
expires in8mo 7d
Request Message
{"VER" "0x8000000c",
 "SRV"
 ["8c4bbf59 8f43ff13 da82bfeb 9e0652a4"
  "e372ab03 c2cae3b6 f661ea29 c8ebacc2"],
 "NONC"
 ["b452e945 f73c568f e0dd10c6 e5ffd315"
  "2fda57c3 272d723b ef0360cc c17e9562"],
 "TYPE" 0,
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["20da08ca 3e90d4e9 902e26dc 42b4b0dd"
  "5393cb2d 09bf3a97 6059b901 3274dc63"
  "af732eb2 258838c6 fad43474 31041e92"
  "6076bac9 ad5c5575 cd9720ab 50c56800"],
 "NONC"
 ["b452e945 f73c568f e0dd10c6 e5ffd315"
  "2fda57c3 272d723b ef0360cc c17e9562"],
 "TYPE" 1,
 "PATH" [],
 "SREP"
 {"VER" "0x8000000c",
  "RADI" 1,
  "MIDP" 1779740584,
  "VERS" ("0x8000000c"),
  "ROOT"
  ["1fe356a1 7ca6bd80 d1b3663d e053f0e5"
   "da600075 eb7d7ef8 242f3c76 1a2d5446"]},
 "CERT"
 {"SIG"
  ["3a20f9a3 e7ad50b0 636f3819 61266ab0"
   "283e493a 5f118dd3 f7f47524 fe3b3b24"
   "4ed5653f 333061c8 0bfd7836 82607698"
   "ab5ab5f9 3d8ccff2 bfb600ec 4a4e610e"],
  "DELE"
  {"PUBK"
   ["14c0ff4f a3aa7597 7c4f14b0 0b974646"
    "fb241196 92f35bf2 4d496cf7 119a50a4"],
   "MINT" 1768694400,
   "MAXT" 1801440000}},
 "INDX" 0}

Error: No UDP response received

{:server
 {:name "time.txryan.com",
  :version "IETF-Roughtime",
  :version-no 2147483660,
  :supported-versions nil,
  :msg-size 1024,
  :public-key-type "ed25519",
  :public-key "iBVjxg/1j7y1+kQUTBYdTabxCppesU/07D4PMDJk2WA=",
  :addresses [{:protocol "udp", :address "127.0.0.1:2015"}]},
 :attempts 3,
 :timeout-ms 1000}