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
| Address | roughtime.sturdystatistics.com |
|---|---|
| Port | 2002 |
| Protocol | UDP |
| Public Key | NqIjwLopQn6yQChtE21Mb97dAbAPe5UOuTa0tOakgD8= |
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.
Live Example Results
| skew | 0 |
|---|---|
| expires in | 2d 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}
| skew | 0 |
|---|---|
| expires in | 13h 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}
| skew | 0 |
|---|---|
| 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}
| skew | 0 |
|---|---|
| expires in | 8mo 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}