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 in5d 9h
Request Message
{"VER" "0x8000000c",
 "SRV"
 ["4a4344b8 ed36a263 cae105a2 92fe2661"
  "d964691d be07548f 43b5b523 2671f3ab"],
 "NONC"
 ["484e69b1 7675e6cf 9c55aec5 c8a2fa20"
  "563f8dec 33b4d83e 0873eb7a e940b43f"],
 "TYPE" 0,
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["4c6ad293 bb48681f 5f10aa41 6421e9c4"
  "f4bb342b 44532eae 82473d17 66ea19d1"
  "fc8a9213 a266258b 953884d5 c1bd048b"
  "2f3b70d8 87c5ec0b c7e88761 be133d0a"],
 "NONC"
 ["484e69b1 7675e6cf 9c55aec5 c8a2fa20"
  "563f8dec 33b4d83e 0873eb7a e940b43f"],
 "TYPE" 1,
 "PATH" [],
 "SREP"
 {"VER" "0x8000000c",
  "RADI" 10,
  "MIDP" 1791585903,
  "VERS"
  ("0"
   "0x80000001"
   "0x80000002"
   "0x80000003"
   "0x80000004"
   "0x80000006"
   "0x80000008"
   "0x80000009"
   "0x8000000a"
   "0x8000000b"
   "0x8000000c"),
  "ROOT"
  ["888cb7d8 866f0cfd 592f6713 325dbfcc"
   "828cb486 9ba27e07 025821f8 146196f8"]},
 "CERT"
 {"SIG"
  ["5274ebd4 f9c948ba 82359a57 0c576774"
   "3d4d7fd8 cdd373b5 4cc5bf8d 9c0d299e"
   "47fac0c1 a03f7173 ec7eeeb6 31740b72"
   "8d78756f 8374e61a e6407adc cfe7490f"],
  "DELE"
  {"PUBK"
   ["0d87e6bf d91dfcae 86cd64f2 6d733009"
    "304fe2f3 3bc72061 8d29c8a9 fb9968c8"],
   "MINT" 1791360000,
   "MAXT" 1792051200}},
 "INDX" 0}
skew0
expires in7h 44m
Request Message
{"VER" "0x8000000b",
 "SRV"
 ["0d93616f 19641cbf 68f8b41a 1b659797"
  "fc9330b6 58a5042d 6be10211 94ee290c"],
 "NONC"
 ["c22e1938 b5350c18 fd1cb414 d50fab1d"
  "98e53f39 3c5ecff0 d0bc0d9a 3359cbfe"],
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["8bd20d46 15d068a6 b0b2aec6 308c2946"
  "f4414a48 fcf863ae 630080d3 1218ff3e"
  "3a335185 2aced6ed d747876a 2f31c7aa"
  "6cecab2c 210cf9ca 67b4b84d 65017308"],
 "VER" "0x8000000b",
 "PATH" [],
 "SREP"
 {"RADI" 1,
  "MIDP" 1791585903,
  "ROOT"
  ["d53c2d5c 87c007b8 dde5d08a 56267214"
   "4d557257 b0d59f39 91bd69ef e2d66f1b"]},
 "CERT"
 {"SIG"
  ["e1fe4ed4 559e62d0 98797473 8a20b9f8"
   "c368b38a bff068aa 07ab17d0 619db203"
   "58827c27 f6ee4f58 e211d29e e3a23e47"
   "2cc39c15 a108c485 d5531717 cede1c0e"],
  "DELE"
  {"PUBK"
   ["55a49481 7a7763d7 e144cd86 68d870bd"
    "b8d769a6 1828e873 ea3506b9 d0eab26f"],
   "MINT" 1791527359,
   "MAXT" 1791613759}},
 "INDX" 0}
skew0
expires in∞
Request Message
{"VER" "0x8000000c",
 "SRV"
 ["95645ff5 c385c24e ba48d509 528a4a74"
  "e0861c0b 57f46c25 ee5c6a48 8a23246f"],
 "NONC"
 ["80274c57 712757bf f8a514af 3a01e93d"
  "5909cb9c 628cce06 a4f3269b 0c0d0409"],
 "TYPE" 0,
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["14dd22e7 090081d4 3f8ef9e8 7c7813df"
  "cf3aba7d d3d001ad 60c7e126 dd180480"
  "b39a4979 317cc58f 3de5d46f b3e9f650"
  "b0bd67af a2be28b3 843ea23a 0638ed02"],
 "NONC"
 ["80274c57 712757bf f8a514af 3a01e93d"
  "5909cb9c 628cce06 a4f3269b 0c0d0409"],
 "TYPE" 1,
 "PATH" [],
 "SREP"
 {"VER" "0x8000000c",
  "RADI" 5,
  "MIDP" 1791585903,
  "VERS" ("0" "0x8000000c"),
  "ROOT"
  ["32cc19f1 d580e2eb c7171570 cf45ac8e"
   "d14b2553 bef53653 ee48514a 5aa9ddaf"]},
 "CERT"
 {"SIG"
  ["e7b21e7a f98ceee1 5a13e6d1 967b4fe6"
   "2980c5ae 258922a1 daa69c5c 13342335"
   "3ea69a2c 0acfaa21 61250e9f 70648048"
   "e4411000 187b1353 e31a7c46 7567b00c"],
  "DELE"
  {"PUBK"
   ["34291a8d 25d93aea e9bd2849 e828bbfc"
    "ee84207e 71e06c2d 3cde5174 13de99b0"],
   "MINT" 0,
   "MAXT" 18446744073709551615}},
 "INDX" 0}
skew0
expires in3mo 22d
Request Message
{"VER" "0x8000000c",
 "SRV"
 ["8c4bbf59 8f43ff13 da82bfeb 9e0652a4"
  "e372ab03 c2cae3b6 f661ea29 c8ebacc2"],
 "NONC"
 ["d7037dfc ca3fdf19 765f6574 e121de6f"
  "e5a0197a cd887ace 4f68a79b d4d08115"],
 "TYPE" 0,
 "ZZZZ" "0{912}"}
Response Message
{"SIG"
 ["c3ca79f4 099f7cf9 89721de9 8716308b"
  "7f58cb82 10a0c9be 199a80fe 597049a0"
  "0cc40fc3 c7554b30 408a1004 ca9d7495"
  "025a6a1d a1f4dd7b 749e5758 d704cc0c"],
 "NONC"
 ["d7037dfc ca3fdf19 765f6574 e121de6f"
  "e5a0197a cd887ace 4f68a79b d4d08115"],
 "TYPE" 1,
 "PATH" [],
 "SREP"
 {"VER" "0x8000000c",
  "RADI" 1,
  "MIDP" 1791585904,
  "VERS" ("0x8000000c"),
  "ROOT"
  ["80e6f92b 0c5342f0 2539ab09 a4df7891"
   "efe17e14 3be23554 e6bddb1b f2113100"]},
 "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}