diff options
| author | log <log@invalid> | 2026-10-09 04:22:14 +0000 |
|---|---|---|
| committer | log <log@invalid> | 2026-10-09 04:22:14 +0000 |
| commit | 5eb0172fa014c3d55c57358224387b7de20dafe3 (patch) | |
| tree | 34e4ded4b5db2f9b470f0a4da0010c1fdb1ea904 | |
| parent | 9a697b4c154a83cc1f22822667cc2d1ccfcda875 (diff) | |
size 96095
49 files changed, 563 insertions, 0 deletions
diff --git a/reveal/v5-000012/check.py b/reveal/v5-000012/check.py new file mode 100644 index 0000000..7f86b8d --- /dev/null +++ b/reveal/v5-000012/check.py | |||
| @@ -0,0 +1,319 @@ | |||
| 1 | #!/usr/bin/env python3 | ||
| 2 | """ | ||
| 3 | Check Echo's self-revealing ledger seals (`sha256-live-v5`) without trusting Echo. | ||
| 4 | |||
| 5 | python3 check.py SEAL_DIR [SEAL_DIR ...] [--tle PATH] [--offline] | ||
| 6 | |||
| 7 | Needs Python 3.11+, the `cryptography` package (ChaCha20-Poly1305) and drand's `tle` binary | ||
| 8 | (`go install github.com/drand/tlock/cmd/tle@v1.2.0`). It imports nothing of Echo's: a checker that needs the thing it | ||
| 9 | checks is not a checker, which is why it is copied, whole, into every seal directory. | ||
| 10 | |||
| 11 | Each SEAL_DIR is one seal: `manifest.txt` (the exact text the seal's digest is the sha256 of), `seal.json`, and per | ||
| 12 | reveal group `r<ROUND>.tlock` (the group's key, time-locked to that drand round) and `r<ROUND>.ct` (the group, | ||
| 13 | encrypted under that key), and, once the group has been revealed, `r<ROUND>.held.json` (how many of its withheld | ||
| 14 | lines Echo publishes no salt for, and why) and any number of `r<ROUND>.salts.<N>.json`: each the salts of withheld | ||
| 15 | lines Echo decided to open and had not erased, each with its line. `manifest.txt.ots`, when present, is an | ||
| 16 | OpenTimestamps proof over the manifest: `ots verify manifest.txt.ots` checks it against Bitcoin. | ||
| 17 | |||
| 18 | What it checks, from the files alone and the beacon: | ||
| 19 | 1. the manifest hashes to the seal's digest, and each seal names the one before it (when several are given); | ||
| 20 | 2. each group's ciphertext and locked key hash to what the manifest commits, and the key is locked to the | ||
| 21 | manifest's round of the manifest's chain; | ||
| 22 | 3. for every group whose round the beacon has signed: the round's signature as each relay serves it, the key | ||
| 23 | unlocked with it, the group decrypted, its bytes hashed to the committed digest, its lines and withheld lines | ||
| 24 | counted against the committed counts, its lines in id order, and every line's reveal day recomputed from its | ||
| 25 | own settling instant under the seal's named rule (`utc-day-after-close`: the first 00:00 UTC after | ||
| 26 | `settles_at`, else after the deadline); | ||
| 27 | 4. for every opened group with releases: each names this seal, round and group and its own number; each released | ||
| 28 | salt and line hash to the withheld line's committed hash; no line is settled twice; and a hold, where there is | ||
| 29 | one, names the group and counts no more lines than are withheld; | ||
| 30 | 5. once every group of every seal from the first is open and every withheld line released: the union of their v4 | ||
| 31 | lines, sorted by id, rehashes to the v4 digest the last seal follows, so no sealed forecast was left out of a | ||
| 32 | reveal. Where a withheld line has no released salt (held, erased, or not yet released) that digest cannot be | ||
| 33 | rebuilt, and this says so and why: what is checked then is only that every forecast the v4 seal covers is in a | ||
| 34 | group, counted. A withheld line is never called verified. | ||
| 35 | |||
| 36 | A group whose round is not yet signed, or whose withheld lines have no release yet, is reported as pending or held, | ||
| 37 | not as a failure. Exit 0 when everything checkable passed, 1 when anything did not match. | ||
| 38 | """ | ||
| 39 | from __future__ import annotations | ||
| 40 | |||
| 41 | import argparse | ||
| 42 | import base64 | ||
| 43 | import hashlib | ||
| 44 | import json | ||
| 45 | import re | ||
| 46 | import subprocess | ||
| 47 | import sys | ||
| 48 | import urllib.request | ||
| 49 | import zlib | ||
| 50 | from datetime import datetime, timedelta, timezone | ||
| 51 | from pathlib import Path | ||
| 52 | |||
| 53 | |||
| 54 | def sha(b: bytes) -> str: | ||
| 55 | return hashlib.sha256(b).hexdigest() | ||
| 56 | |||
| 57 | |||
| 58 | def parse_manifest(text: str) -> dict: | ||
| 59 | lines = text.split("\n") | ||
| 60 | if lines[0] != "sha256-live-v5": | ||
| 61 | raise ValueError(f"not a v5 manifest: {lines[0]!r}") | ||
| 62 | m = {"groups": []} | ||
| 63 | for ln in lines[1:]: | ||
| 64 | word, _, rest = ln.partition(" ") | ||
| 65 | if word == "prev": | ||
| 66 | m["prev"] = None if rest == "-" else rest | ||
| 67 | elif word == "follows": | ||
| 68 | seq, digest, n = rest.split(" ") | ||
| 69 | m["follows"] = {"seq": int(seq), "digest": digest, "n": int(n)} | ||
| 70 | elif word == "covers": | ||
| 71 | m["covers"] = rest.split(" ") | ||
| 72 | elif word == "variant": | ||
| 73 | m["variant"] = json.loads(rest) | ||
| 74 | elif word == "counts": | ||
| 75 | m["n"], m["n_withheld"], m["n_groups"] = map(int, rest.split(" ")) | ||
| 76 | elif word == "group": | ||
| 77 | r, at, n, w, digest, ct, key, late = rest.split(" ") | ||
| 78 | m["groups"].append({"round": int(r), "reveal_at": at, "n": int(n), "n_withheld": int(w), | ||
| 79 | "digest": digest, "ct": ct, "key": key, "late": late == "1"}) | ||
| 80 | else: | ||
| 81 | raise ValueError(f"unknown manifest line {ln!r}") | ||
| 82 | return m | ||
| 83 | |||
| 84 | |||
| 85 | def stanza(locked: str) -> tuple[int, str] | None: | ||
| 86 | body = "".join(ln for ln in locked.strip().splitlines() if not ln.startswith("-----")) | ||
| 87 | m = re.search(rb"-> tlock (\d+) ([0-9a-f]{64})", base64.b64decode(body)) | ||
| 88 | return (int(m.group(1)), m.group(2).decode()) if m else None | ||
| 89 | |||
| 90 | |||
| 91 | def round_at(beacon: dict, at: datetime) -> int: | ||
| 92 | t = at.timestamp() | ||
| 93 | whole = int(t) + (t != int(t)) | ||
| 94 | if whole <= beacon["genesis_time"]: | ||
| 95 | return 1 | ||
| 96 | return -(-(whole - beacon["genesis_time"]) // beacon["period"]) + 1 | ||
| 97 | |||
| 98 | |||
| 99 | def reveal_day(closes: datetime) -> datetime: | ||
| 100 | d = closes.astimezone(timezone.utc).date() + timedelta(days=1) | ||
| 101 | return datetime(d.year, d.month, d.day, tzinfo=timezone.utc) | ||
| 102 | |||
| 103 | |||
| 104 | def parse_line(ln: str) -> dict: | ||
| 105 | """One line: `id|issued_at|deadline|forecaster|p|settlement|anchor<TAB>open:<v4>` or `...<TAB>withheld:<hex>`.""" | ||
| 106 | numeric, tab, text = ln.partition("\t") | ||
| 107 | if not tab: | ||
| 108 | raise ValueError("a line without its text layer") | ||
| 109 | fid, issued, deadline, forecaster, p, rest = numeric.split("|", 5) | ||
| 110 | dec = json.JSONDecoder() | ||
| 111 | settle, end = dec.raw_decode(rest) | ||
| 112 | if rest[end] != "|": | ||
| 113 | raise ValueError("settlement not followed by the anchor") | ||
| 114 | anchor, end2 = dec.raw_decode(rest, end + 1) | ||
| 115 | if end2 != len(rest): | ||
| 116 | raise ValueError("trailing bytes after the anchor") | ||
| 117 | out = {"id": int(fid), "issued_at": issued, "deadline": deadline, "forecaster": forecaster, "p": float(p), | ||
| 118 | "settlement": settle, "anchor": anchor} | ||
| 119 | if text.startswith("open:"): | ||
| 120 | out["v4"] = text[5:] | ||
| 121 | if not out["v4"].startswith(f"{fid}|"): | ||
| 122 | raise ValueError("the text layer is another forecast's line") | ||
| 123 | elif re.fullmatch(r"withheld:[0-9a-f]{64}", text): | ||
| 124 | out["withheld"] = text[9:] | ||
| 125 | else: | ||
| 126 | raise ValueError(f"unknown text layer {text[:20]!r}") | ||
| 127 | return out | ||
| 128 | |||
| 129 | |||
| 130 | def beacon_round(beacon: dict, rnd: int) -> dict: | ||
| 131 | """What each relay serves for the round: its signature, or why there is none.""" | ||
| 132 | out = {} | ||
| 133 | for relay in beacon["relays"]: | ||
| 134 | url = f"{relay.rstrip('/')}/{beacon['chain_hash']}/public/{rnd}" | ||
| 135 | try: | ||
| 136 | with urllib.request.urlopen(url, timeout=20) as r: # noqa: S310 — the seal's own relays | ||
| 137 | out[relay] = json.loads(r.read()).get("signature") | ||
| 138 | except Exception as exc: # noqa: BLE001 — report, go on | ||
| 139 | out[relay] = f"unavailable ({type(exc).__name__})" | ||
| 140 | return out | ||
| 141 | |||
| 142 | |||
| 143 | def unlock(tle: str, beacon: dict, locked: str) -> bytes | None: | ||
| 144 | """The key, or None while the round is unsigned. Each relay is tried in turn.""" | ||
| 145 | errors = [] | ||
| 146 | for relay in beacon["relays"]: | ||
| 147 | r = subprocess.run([tle, "-d", "-n", relay.rstrip("/") + "/", "-c", beacon["chain_hash"]], | ||
| 148 | input=locked.encode(), capture_output=True, timeout=120, check=False) | ||
| 149 | if r.returncode == 0: | ||
| 150 | return r.stdout | ||
| 151 | if b"too early" in r.stderr: | ||
| 152 | return None | ||
| 153 | errors.append(f"{relay}: {r.stderr.decode(errors='replace').strip()[-160:]}") | ||
| 154 | raise RuntimeError("; ".join(errors)) | ||
| 155 | |||
| 156 | |||
| 157 | def release(d: Path, seal_digest: str, g: dict, lines: list[dict], say) -> tuple[dict[int, str], int, str | None]: | ||
| 158 | """An opened group's releases and hold, checked against the group: (id -> the v4 line each released salt opens, | ||
| 159 | how many withheld lines were opened and found erased, and the hold's reason where Echo published one).""" | ||
| 160 | r = g["round"] | ||
| 161 | shut = {x["id"]: x["withheld"] for x in lines if "withheld" in x} | ||
| 162 | out, erased, seen, bad = {}, set(), set(), [] | ||
| 163 | files = sorted(d.glob(f"r{r}.salts.*.json"), key=lambda p: int(p.name.split(".")[-2])) | ||
| 164 | for k, path in enumerate(files): | ||
| 165 | rel = json.loads(path.read_text()) | ||
| 166 | say(rel.get("format") == "echo-reveal-salts/1" and rel.get("seal") == seal_digest | ||
| 167 | and rel.get("round") == r and rel.get("group") == g["digest"] and rel.get("n") == k | ||
| 168 | and path.name == f"r{r}.salts.{k}.json", | ||
| 169 | f"round {r}: release {k} names this seal, round and group, and follows the one before") | ||
| 170 | for x in rel.get("released", []): | ||
| 171 | i, line = x["id"], x["line"] | ||
| 172 | opens = (i in shut and i not in seen and line.startswith(f"{i}|") | ||
| 173 | and sha(bytes.fromhex(x["salt"]) + line.encode()) == shut[i]) | ||
| 174 | if opens: | ||
| 175 | out[i] = line | ||
| 176 | else: | ||
| 177 | bad.append(i) | ||
| 178 | seen.add(i) | ||
| 179 | for i in rel.get("erased", []): | ||
| 180 | if i not in shut or i in seen: | ||
| 181 | bad.append(i) | ||
| 182 | erased.add(i) | ||
| 183 | seen.add(i) | ||
| 184 | if files: | ||
| 185 | say(not bad, f"round {r}: {len(out)} released lines open their committed hashes, {len(erased)} opened lines " | ||
| 186 | f"found erased, none settled twice" + (f" ({len(bad)} do not, e.g. {bad[:3]})" if bad else "")) | ||
| 187 | why = None | ||
| 188 | hold = d / f"r{r}.held.json" | ||
| 189 | if hold.exists(): | ||
| 190 | h = json.loads(hold.read_text()) | ||
| 191 | say(h.get("format") == "echo-reveal-held/1" and h.get("seal") == seal_digest and h.get("round") == r | ||
| 192 | and h.get("group") == g["digest"] and 0 <= h.get("held", -1) <= len(shut), | ||
| 193 | f"round {r}: the hold names this seal, round and group, and counts at most its withheld lines") | ||
| 194 | why = str(h.get("why") or "no reason given") | ||
| 195 | left = len(shut) - len(out) - len(erased) | ||
| 196 | if left: | ||
| 197 | print(f" .... round {r}: {left} withheld lines have no released salt: counted, not rehashed" | ||
| 198 | + (f" (Echo publishes none: {why})" if why else " (no release or hold published yet)")) | ||
| 199 | return out, len(erased), why | ||
| 200 | |||
| 201 | |||
| 202 | def check(dirs: list[Path], tle: str = "tle", offline: bool = False) -> int: | ||
| 203 | from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 | ||
| 204 | |||
| 205 | failed, pending, withheld, held, erased, union = 0, 0, 0, 0, 0, {} | ||
| 206 | reasons: set[str] = set() | ||
| 207 | first_prev = "unset" | ||
| 208 | |||
| 209 | def say(ok: bool, what: str) -> None: | ||
| 210 | nonlocal failed | ||
| 211 | failed += not ok | ||
| 212 | print(f" {'PASS' if ok else 'FAIL'} {what}") | ||
| 213 | |||
| 214 | prev_digest = None | ||
| 215 | seals = [] | ||
| 216 | for d in dirs: | ||
| 217 | text = (d / "manifest.txt").read_bytes() | ||
| 218 | row = json.loads((d / "seal.json").read_text()) | ||
| 219 | seals.append((d, text, row, parse_manifest(text.decode()))) | ||
| 220 | seals.sort(key=lambda s: s[2]["seq"]) | ||
| 221 | last = None | ||
| 222 | for i, (d, text, row, m) in enumerate(seals): | ||
| 223 | print(f"v5 seal {row['seq']}: {m['n']} forecasts in {m['n_groups']} reveal groups, {m['n_withheld']} withheld, " | ||
| 224 | f"follows v4 seal {m['follows']['seq']}") | ||
| 225 | say(sha(text) == row["digest"], f"sha256(manifest.txt) is the seal's digest {row['digest'][:16]}…") | ||
| 226 | say(len(m["groups"]) == m["n_groups"] and sum(g["n"] for g in m["groups"]) == m["n"] | ||
| 227 | and sum(g["n_withheld"] for g in m["groups"]) == m["n_withheld"], "the manifest's counts add up") | ||
| 228 | if i == 0: | ||
| 229 | first_prev = m["prev"] | ||
| 230 | else: | ||
| 231 | say(m["prev"] == prev_digest, "it names the seal before it") | ||
| 232 | prev_digest, last = row["digest"], m | ||
| 233 | b = m["variant"]["beacon"] | ||
| 234 | for g in m["groups"]: | ||
| 235 | r = g["round"] | ||
| 236 | ct, locked = (d / f"r{r}.ct").read_bytes(), (d / f"r{r}.tlock").read_text() | ||
| 237 | say(sha(ct) == g["ct"] and sha(locked.encode()) == g["key"], | ||
| 238 | f"round {r}: the ciphertext and the locked key are the committed ones") | ||
| 239 | say(stanza(locked) == (r, b["chain_hash"]), f"round {r}: the key is locked to that round of that chain") | ||
| 240 | say(round_at(b, datetime.fromisoformat(g["reveal_at"])) == r, f"round {r} is signed at {g['reveal_at']}") | ||
| 241 | if not offline: | ||
| 242 | sigs = beacon_round(b, r) | ||
| 243 | good = {s for s in sigs.values() if s and not s.startswith("unavailable")} | ||
| 244 | print(f" .... round {r} signature from {len(sigs)} relays: " | ||
| 245 | + ("not yet signed" if not good else f"{len(good)} distinct: {min(good)[:24]}…")) | ||
| 246 | if len(good) > 1: | ||
| 247 | say(False, f"round {r}: relays disagree on its signature") | ||
| 248 | key = unlock(tle, b, locked) | ||
| 249 | if key is None: | ||
| 250 | pending += 1 | ||
| 251 | print(f" .... round {r} ({g['reveal_at']}) not yet signed: {g['n']} forecasts stay locked") | ||
| 252 | continue | ||
| 253 | try: | ||
| 254 | plain = zlib.decompress(ChaCha20Poly1305(key).decrypt(b"\x00" * 12, ct, None)) | ||
| 255 | except Exception as exc: # noqa: BLE001 — a finding, not a crash | ||
| 256 | say(False, f"round {r}: the ciphertext does not open under its key ({type(exc).__name__})") | ||
| 257 | continue | ||
| 258 | say(sha(plain) == g["digest"], f"round {r}: the opened group hashes to its committed digest") | ||
| 259 | lines = [parse_line(ln) for ln in plain.decode().split("\n")] | ||
| 260 | ids = [x["id"] for x in lines] | ||
| 261 | say(len(lines) == g["n"] and sum("withheld" in x for x in lines) == g["n_withheld"], | ||
| 262 | f"round {r}: {len(lines)} lines, {g['n_withheld']} withheld, as committed") | ||
| 263 | say(ids == sorted(set(ids)), f"round {r}: lines in id order, none twice") | ||
| 264 | due = datetime.fromisoformat(g["reveal_at"]) | ||
| 265 | if m["variant"].get("reveal") == "utc-day-after-close": | ||
| 266 | wrong = [x["id"] for x in lines if reveal_day(datetime.fromisoformat( | ||
| 267 | (x["settlement"] or {}).get("settles_at") or x["deadline"])) != due] | ||
| 268 | say(not wrong, f"round {r}: every line belongs to this reveal day" | ||
| 269 | + (f" ({len(wrong)} do not, e.g. {wrong[:3]})" if wrong else "")) | ||
| 270 | else: | ||
| 271 | print(f" .... round {r}: reveal rule {m['variant'].get('reveal')!r} is not one this checker " | ||
| 272 | "recomputes; which lines belong to the day is unchecked") | ||
| 273 | opened, gone, why = release(d, row["digest"], g, lines, say) | ||
| 274 | for x in lines: | ||
| 275 | if x["id"] in union: | ||
| 276 | say(False, f"forecast {x['id']} is in two groups") | ||
| 277 | union[x["id"]] = x.get("v4") or opened.get(x["id"]) | ||
| 278 | shut = sum(1 for x in lines if "withheld" in x and x["id"] not in opened) - gone | ||
| 279 | erased += gone | ||
| 280 | if why is None: | ||
| 281 | withheld += shut | ||
| 282 | else: | ||
| 283 | held += shut | ||
| 284 | reasons.add(why) | ||
| 285 | if last is not None: | ||
| 286 | if first_prev is not None: | ||
| 287 | print(" .... completeness: the first seal given is not the chain's first; give every seal from it") | ||
| 288 | elif pending: | ||
| 289 | print(f" .... completeness: {pending} groups still locked; it is checkable once all have opened") | ||
| 290 | elif withheld or held or erased: | ||
| 291 | told = [f"{withheld} withheld lines not yet released"] if withheld else [] | ||
| 292 | told += ([f"{held} withheld lines held, for which Echo publishes no salt ({'; '.join(sorted(reasons))})"] | ||
| 293 | if held else []) | ||
| 294 | told += [f"{erased} erased stay hashes"] if erased else [] | ||
| 295 | print(f" .... completeness: {', '.join(told)}: those lines can be counted but not rehashed, so the v4 " | ||
| 296 | f"lines cannot all be rebuilt and the v4 digest is NOT checked; {len(union)} forecasts against " | ||
| 297 | f"the v4 seal's {last['follows']['n']}") | ||
| 298 | say(len(union) == last["follows"]["n"], "every forecast the v4 seal covers is in a group, counted") | ||
| 299 | else: | ||
| 300 | got = sha("\n".join(union[k] for k in sorted(union)).encode()) | ||
| 301 | say(got == last["follows"]["digest"] and len(union) == last["follows"]["n"], | ||
| 302 | f"the union of {len(union)} lines rehashes to v4 seal {last['follows']['seq']}'s digest") | ||
| 303 | print("\nNOT VERIFIED" if failed else f"\nVERIFIED{f' ({pending} groups not yet revealed)' if pending else ''}") | ||
| 304 | return 1 if failed else 0 | ||
| 305 | |||
| 306 | |||
| 307 | def main(argv: list[str]) -> int: | ||
| 308 | ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) | ||
| 309 | ap.add_argument("dirs", nargs="*", default=[str(Path(__file__).resolve().parent)], | ||
| 310 | help="seal directories, any order (default: the one this script sits in)") | ||
| 311 | ap.add_argument("--tle", default="tle", help="the tle binary that unlocks a key once its round is signed") | ||
| 312 | ap.add_argument("--offline", action="store_true", | ||
| 313 | help="do not fetch each round's signature from the relays for display; tle still asks them") | ||
| 314 | args = ap.parse_args(argv) | ||
| 315 | return check([Path(d) for d in args.dirs], tle=args.tle, offline=args.offline) | ||
| 316 | |||
| 317 | |||
| 318 | if __name__ == "__main__": | ||
| 319 | raise SystemExit(main(sys.argv[1:])) | ||
diff --git a/reveal/v5-000012/manifest.txt b/reveal/v5-000012/manifest.txt new file mode 100644 index 0000000..4fd141d --- /dev/null +++ b/reveal/v5-000012/manifest.txt | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | sha256-live-v5 | ||
| 2 | prev aecbc94f76fab78030adf1714ed7145e7b4424b9abcf620d6fe047aaf058c5c9 | ||
| 3 | follows 42 669cee27a9520024a88572f2b03084805e58a44c86e789ae1a459ad6556154c7 51118 | ||
| 4 | covers 2026-10-08T22:30:20.258717Z 2026-10-09T04:21:12.160694Z | ||
| 5 | variant {"beacon":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_time":1692803367,"period":3,"relays":["https://api.drand.sh","https://api2.drand.sh","https://api3.drand.sh","https://drand.cloudflare.com"],"scheme":"bls-unchained-g1-rfc9380"},"cipher":"chacha20poly1305-zlib6-nonce0","gate":{"default":"withheld: a kept salt can be released later; an opened text can never be withdrawn","opened":"none","why":"no decision by Echo yet"},"line":"numeric<TAB>open:<v4 line> | numeric<TAB>withheld:sha256(salt||v4 line)","reveal":"utc-day-after-close","salts":"key ring: one content a seal, one part a line","tool":{"name":"tle","sha256":"69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541","version":"tlock v1.2.0 -- github.com/drand/tlock"}} | ||
| 6 | counts 1113 1113 15 | ||
| 7 | group 33533812 2026-10-31T00:00:00.000000Z 342 342 f78a72f35210d49498513f3987ab90902b5123d04b8381cc04f99f653e5119ad 42c20bc357be967a1c65d388b4ef0f84fe8fb29ec468ba13ffd8114fc6532153 30ae75f6d498353341c65896ee047a8bd202f353360442e99c29fe26a5510f34 0 | ||
| 8 | group 33562612 2026-11-01T00:00:00.000000Z 12 12 32b8de38aebd053c773897a9f1020c1c19ae080894c2067c70191f90546d2a94 5e6427ae5b5ca61faa6909cbe301e05979d5b2ef5c3b27ba72e4e1416f580b73 d71527beb7133ef9ef6cc677055049f86f5b05652157350559c4e871ac44c993 0 | ||
| 9 | group 33620212 2026-11-03T00:00:00.000000Z 24 24 2972b261b7e6b8b1cf8d32f64f1d06796331666fe0e7284287e6d833d150346a 6968f89939333b8e54362a7a1155778fdd539fb99a6fe544d5fc439f576fe058 32467eb1bb67459fc0223c4cb17152102c4f4e441d4d0c1f7adc4896a56ab5f4 0 | ||
| 10 | group 33649012 2026-11-04T00:00:00.000000Z 108 108 e4948d52466baa7f660fd6001cebdc83dbefe26e63cb09df5d80efd0c481b664 fe6302873f88acc9603a866bd2c945f98a7534e5673e616950d1a2faed72982d a3dadd67eefd0559eb0e4df35c4843eb494bde6131c126f2099a7e5652c27f61 0 | ||
| 11 | group 33735412 2026-11-07T00:00:00.000000Z 24 24 e64965078c44730d052443958d65b42a719c874323419e8631ac66d7e5cd6d3a 0b4f92741797b416b074b8f9d7ad782a49301748ae1483b85bf310d5f956dabc a9528f7d7af03fa54c0eb528c75e5438a47418d570171253b3fca68a6945b722 0 | ||
| 12 | group 33793012 2026-11-09T00:00:00.000000Z 30 30 aedd10f9090427643fd8baf7ccdc39329ffd8a91f58dfddbb5f220f3b0a30be2 2475e0e0ecf8580bfe551106c83e274c0c264dd01c3972c3440cdd8a43636417 0a7c52358d6bf3be4e631401ca5c6d4a59fecfb50f7fe6a506664297d2875c2b 0 | ||
| 13 | group 34685812 2026-12-10T00:00:00.000000Z 354 354 330ae89875d75832f0fa82b1b5aa218481b10d5f2f9156654e09c4b74dff414b b8bb2d523122247502f722af17757d09f07e0003c8d3844003d4af3efd607e6e 843b24bc281fb968314a0d54bec28ba48ff9b9d66ccf6d23490634abde12b921 0 | ||
| 14 | group 34714612 2026-12-11T00:00:00.000000Z 12 12 dea74fc7a2770ce8d566e12333f8c07be4a30689a19eed124974f59495de3a4d e6d2534fc0d9d6d208b0c141cbceff30973ed9018051a9c33e7845b28b810220 81dbf3985b388bc5c9bcc40a63a6e14b784a6b3d5cd39c5447627158424c74af 0 | ||
| 15 | group 34772212 2026-12-13T00:00:00.000000Z 24 24 c3c42a2abc966abe284a49209d3032fddaf72220818876cdb525bb9e8980fb63 d4a8c0ee46e3be2683c9deea845bb2ee1b95ae8e88621b2d9445cfd54506e3fb 4cba05872b25885a0eb1a8fb7d76a60c6a88ecce6f5cf432b5f97d0def668b47 0 | ||
| 16 | group 34801012 2026-12-14T00:00:00.000000Z 105 105 93926795e16a7ad8f3c664b20259335381352dee7df2beb68a8f528b14ed7004 6c7cfd3b1e24a99de19cc647a7e8e486b03149ad9985f1a1dd3341f4c790eb52 9104d6f9709fa4412d392c5618eb98e9a46de1bbd04293964005527c581e7058 0 | ||
| 17 | group 34887412 2026-12-17T00:00:00.000000Z 24 24 300a448068754af9bda5e5cb02e3aa0f0bb54ba64c5b14eb3507f96892d767e3 aec6dbf1384121897f21735371c89e8a92ec48be464490ef508a8843e67ac793 1e1f2bfb3a59bd9eb39b9eea9438cd6c9ca046f3aee3335aaa5282851b5a323c 0 | ||
| 18 | group 34945012 2026-12-19T00:00:00.000000Z 30 30 0b90abe73f31616fcce78865f4741553ac5c71299450bee68c9422f929db7057 3293e0f613b7af07804f5968776699f18a69e9c83034db133ca8bf9a2bb3bdd1 05f0a7be62802bf5b4b95ce1da3cfe825135cbdc403caf8b3bed4b38163c7158 0 | ||
| 19 | group 35837812 2027-01-19T00:00:00.000000Z 12 12 36108425509aa07491095abf26a08e40cb414669d3307f3b8c195cea58f0a559 8c143777e08b1076dd550397d6f85ec0da6dfedd77030e95b028ced4a32b9e6d 92dca92e7aa456d35abcee856323e78c7e9b1a04387a1fbf45cad20fefafbf98 0 | ||
| 20 | group 35866612 2027-01-20T00:00:00.000000Z 6 6 a62dfcd713e7c06bec057bcfa220bbf5b19285ec350e5f6e7431a2d403b1a6d4 c0670fb9b283752606f429f53a2ed3207a560ffec794371e1f2c1c9e9134b45b b8814d8bce5e5e4cbe2e3dcaca05f1322948db7b3de1ddff30c925f1884888ba 0 | ||
| 21 | group 37018612 2027-03-01T00:00:00.000000Z 6 6 ca8c432222d03c095a029ced1e17db474a372fa11611fa365b50074c9e7c1443 a4fff5e67c0fa30537d0f91cdcb113b2a1346b19f349d398a88e2a930d688c7f fc5aceb27c28df58d13133f6dccc15b8a09675b1724ba6fd2edd61f30a26b472 0 \ No newline at end of file | ||
diff --git a/reveal/v5-000012/manifest.txt.ots b/reveal/v5-000012/manifest.txt.ots new file mode 100644 index 0000000..9624982 --- /dev/null +++ b/reveal/v5-000012/manifest.txt.ots | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33533812.ct b/reveal/v5-000012/r33533812.ct new file mode 100644 index 0000000..1693a77 --- /dev/null +++ b/reveal/v5-000012/r33533812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33533812.nostr.json b/reveal/v5-000012/r33533812.nostr.json new file mode 100644 index 0000000..8034e6f --- /dev/null +++ b/reveal/v5-000012/r33533812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTMzODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKalRhcFBsaFRnNVpyWGdMNlVEVlNLbE13M3NydlpaQUE2VkQxd21V\nMkNqWlY0bFBBalFMK21PU1VNUjhkTDRvZQpCU2cxWDFwVmVBRnlNRWp3NXp3clIz\nVnNZMnErYXJqUVRhdXBFOFpmelVYaVFxLy8xZDhWNFNPaDFjZURDcy9OCkQ5b3dZ\nN3RaVjE2RjlRd25SeUVvSjQwUmJGTHF6czNydnpBV0xEZzNOcXcKLS0tIFVxRlFn\nNlJxdHgwZVVwMFpVeU9WWkhnY21QOGhEM2RZdXdmWWFPN1dmRE0KkejdBeW2pULC\nWNman0i3RssqTR3HhHw73nlt6ARpujILnAclSWHl5gj/rdbipZg7QjfDo+34FtPq\nkSUC4jn89Q==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33533812"],["reveal_at","2026-10-31T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","f78a72f35210d49498513f3987ab90902b5123d04b8381cc04f99f653e5119ad"],["ct","42c20bc357be967a1c65d388b4ef0f84fe8fb29ec468ba13ffd8114fc6532153"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r33533812.tlock b/reveal/v5-000012/r33533812.tlock new file mode 100644 index 0000000..4c00c7d --- /dev/null +++ b/reveal/v5-000012/r33533812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTMzODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKalRhcFBsaFRnNVpyWGdMNlVEVlNLbE13M3NydlpaQUE2VkQxd21V | ||
| 5 | MkNqWlY0bFBBalFMK21PU1VNUjhkTDRvZQpCU2cxWDFwVmVBRnlNRWp3NXp3clIz | ||
| 6 | VnNZMnErYXJqUVRhdXBFOFpmelVYaVFxLy8xZDhWNFNPaDFjZURDcy9OCkQ5b3dZ | ||
| 7 | N3RaVjE2RjlRd25SeUVvSjQwUmJGTHF6czNydnpBV0xEZzNOcXcKLS0tIFVxRlFn | ||
| 8 | NlJxdHgwZVVwMFpVeU9WWkhnY21QOGhEM2RZdXdmWWFPN1dmRE0KkejdBeW2pULC | ||
| 9 | WNman0i3RssqTR3HhHw73nlt6ARpujILnAclSWHl5gj/rdbipZg7QjfDo+34FtPq | ||
| 10 | kSUC4jn89Q== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r33562612.ct b/reveal/v5-000012/r33562612.ct new file mode 100644 index 0000000..d2928e7 --- /dev/null +++ b/reveal/v5-000012/r33562612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33562612.nostr.json b/reveal/v5-000012/r33562612.nostr.json new file mode 100644 index 0000000..a6e8463 --- /dev/null +++ b/reveal/v5-000012/r33562612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbU4yZCtocnpBcEp0enBxZ0xSQUFlNG5QdzdzTG4zbnJvY1UrMXVw\ncFdyUWVMekxrL1RSNTYxdndlK2xqZTlQMQpCMGpvQjFEamlVWkxjRU1kY1ltODgr\neTRXcnZFU21SMFY4TXh3Z1R2LzdNQk5uekxJTnF5aTFIaEFMQnpKUmVjClpqOU52\nNWhXalVieFpDNWdRT09tdTJxREN3TDd3aDBMQ0dBUzRjYlpZaUkKLS0tIE54SGsv\nZUJPc3Z0S3BuR0xpMXdkb2dKRDFXSnlSSDJNbzEvUHVBaC8wancK/ZMKahLF2tvg\nmCV3KJpG8SuY8XCwAsfslMI5iwsin8Q3lSWxUl1BJYDhbRb/8LBqA3UvHWgOAIXp\nI7iSA8Cacg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33562612"],["reveal_at","2026-11-01T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","32b8de38aebd053c773897a9f1020c1c19ae080894c2067c70191f90546d2a94"],["ct","5e6427ae5b5ca61faa6909cbe301e05979d5b2ef5c3b27ba72e4e1416f580b73"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r33562612.tlock b/reveal/v5-000012/r33562612.tlock new file mode 100644 index 0000000..8275995 --- /dev/null +++ b/reveal/v5-000012/r33562612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKbU4yZCtocnpBcEp0enBxZ0xSQUFlNG5QdzdzTG4zbnJvY1UrMXVw | ||
| 5 | cFdyUWVMekxrL1RSNTYxdndlK2xqZTlQMQpCMGpvQjFEamlVWkxjRU1kY1ltODgr | ||
| 6 | eTRXcnZFU21SMFY4TXh3Z1R2LzdNQk5uekxJTnF5aTFIaEFMQnpKUmVjClpqOU52 | ||
| 7 | NWhXalVieFpDNWdRT09tdTJxREN3TDd3aDBMQ0dBUzRjYlpZaUkKLS0tIE54SGsv | ||
| 8 | ZUJPc3Z0S3BuR0xpMXdkb2dKRDFXSnlSSDJNbzEvUHVBaC8wancK/ZMKahLF2tvg | ||
| 9 | mCV3KJpG8SuY8XCwAsfslMI5iwsin8Q3lSWxUl1BJYDhbRb/8LBqA3UvHWgOAIXp | ||
| 10 | I7iSA8Cacg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r33620212.ct b/reveal/v5-000012/r33620212.ct new file mode 100644 index 0000000..cb5585a --- /dev/null +++ b/reveal/v5-000012/r33620212.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33620212.nostr.json b/reveal/v5-000012/r33620212.nostr.json new file mode 100644 index 0000000..90cea7e --- /dev/null +++ b/reveal/v5-000012/r33620212.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjIwMjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaG1CY3ljSGRsQUd1UThoSkdTQ3FrekxMcnI0K09ZRDdDMWpOQlNN\nWGkxZmNpUThwbU9zTHo5WXZCTExUOVpQLwpBbEdKeUgya1ptb1hEbUpaS0tjS3A3\nNHp2elY3VDZKODZmMStjM0ZPRW9rNk9mYldDR2lLK0hQRFFYUEduOFJsCmE1M3VT\nL3ZRVlM1MENmd2F0WFJpY0VZZXdUMllsMXJmc3VjbzhlVEdhaDgKLS0tIGZkNm96\na1h3V3BDZUNyOFRhREx5Ykd2b2RKUGxvMHhTNmhQOXZVR2JCVG8KtB+sIGWWkDKW\nevnkT/eC+Bm5xJ2b698x4RtjHB9gS0tecPuPDA+zTaj7bg7qkTUsUhfkQt7w+Ion\nujM+RQNK0w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33620212"],["reveal_at","2026-11-03T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","2972b261b7e6b8b1cf8d32f64f1d06796331666fe0e7284287e6d833d150346a"],["ct","6968f89939333b8e54362a7a1155778fdd539fb99a6fe544d5fc439f576fe058"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r33620212.tlock b/reveal/v5-000012/r33620212.tlock new file mode 100644 index 0000000..f9b0e67 --- /dev/null +++ b/reveal/v5-000012/r33620212.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjIwMjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKaG1CY3ljSGRsQUd1UThoSkdTQ3FrekxMcnI0K09ZRDdDMWpOQlNN | ||
| 5 | WGkxZmNpUThwbU9zTHo5WXZCTExUOVpQLwpBbEdKeUgya1ptb1hEbUpaS0tjS3A3 | ||
| 6 | NHp2elY3VDZKODZmMStjM0ZPRW9rNk9mYldDR2lLK0hQRFFYUEduOFJsCmE1M3VT | ||
| 7 | L3ZRVlM1MENmd2F0WFJpY0VZZXdUMllsMXJmc3VjbzhlVEdhaDgKLS0tIGZkNm96 | ||
| 8 | a1h3V3BDZUNyOFRhREx5Ykd2b2RKUGxvMHhTNmhQOXZVR2JCVG8KtB+sIGWWkDKW | ||
| 9 | evnkT/eC+Bm5xJ2b698x4RtjHB9gS0tecPuPDA+zTaj7bg7qkTUsUhfkQt7w+Ion | ||
| 10 | ujM+RQNK0w== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r33649012.ct b/reveal/v5-000012/r33649012.ct new file mode 100644 index 0000000..5f9c070 --- /dev/null +++ b/reveal/v5-000012/r33649012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33649012.nostr.json b/reveal/v5-000012/r33649012.nostr.json new file mode 100644 index 0000000..3c3fe23 --- /dev/null +++ b/reveal/v5-000012/r33649012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjQ5MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcmJmM0tKcjZyQ2V3eStQbEdEcCtqa0lxTUREdnp0bGU1Qk5XVkRX\nMkI5V0MvUGNVNXJMNjFBQW9MWkNKdGQ2KwpHUUYxUEo4aUxrM1RlL3dMSktrc1ds\nUStEWlBSb0U5cG9ma3l0L1VWaDFuQWU1SlZIK01uWGlBVENwSUxlMnYxClhhUEls\naDRoMGNJQzN0QkVPSGRMb3RPcGp0MjI4VUUrWWJCU1QrOFlobW8KLS0tIFcvbDcv\nYTNQMmhKYVI1ODRIQUR3cTBBTUcvU2xselJHSFp1aVFmcHVrcUEKBAy9bfqkrFLn\n5HmfIKbEF64oBI3qMBuji1BtkPRRz4VHuHaogCTDpeD283um7wAokGe2Wgyh7EgM\nejmxdGHiSQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33649012"],["reveal_at","2026-11-04T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","e4948d52466baa7f660fd6001cebdc83dbefe26e63cb09df5d80efd0c481b664"],["ct","fe6302873f88acc9603a866bd2c945f98a7534e5673e616950d1a2faed72982d"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r33649012.tlock b/reveal/v5-000012/r33649012.tlock new file mode 100644 index 0000000..5f15bec --- /dev/null +++ b/reveal/v5-000012/r33649012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjQ5MDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcmJmM0tKcjZyQ2V3eStQbEdEcCtqa0lxTUREdnp0bGU1Qk5XVkRX | ||
| 5 | MkI5V0MvUGNVNXJMNjFBQW9MWkNKdGQ2KwpHUUYxUEo4aUxrM1RlL3dMSktrc1ds | ||
| 6 | UStEWlBSb0U5cG9ma3l0L1VWaDFuQWU1SlZIK01uWGlBVENwSUxlMnYxClhhUEls | ||
| 7 | aDRoMGNJQzN0QkVPSGRMb3RPcGp0MjI4VUUrWWJCU1QrOFlobW8KLS0tIFcvbDcv | ||
| 8 | YTNQMmhKYVI1ODRIQUR3cTBBTUcvU2xselJHSFp1aVFmcHVrcUEKBAy9bfqkrFLn | ||
| 9 | 5HmfIKbEF64oBI3qMBuji1BtkPRRz4VHuHaogCTDpeD283um7wAokGe2Wgyh7EgM | ||
| 10 | ejmxdGHiSQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r33735412.ct b/reveal/v5-000012/r33735412.ct new file mode 100644 index 0000000..5c60e94 --- /dev/null +++ b/reveal/v5-000012/r33735412.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33735412.nostr.json b/reveal/v5-000012/r33735412.nostr.json new file mode 100644 index 0000000..d5eeb51 --- /dev/null +++ b/reveal/v5-000012/r33735412.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzM1NDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaTlMd1hqWUNjQ2Iwa0h4NzdWckx0cFFGMUxGSXdRSEZhYlpvcnJU\nMFBrcVN4Tkorbk50eGpGOUdYbXZDaHVRLwpFMGlUWUJzQnZNMi9EeVEwWFZPNFRy\nNFFkL0Jza2Y2bmNWRGN2dkxRZ05wS1dzaURoKys1WXRrM3lQSVpnaWtjCkJYNE0v\na1hFS2VVcFFMN1JjVjdJNVJOYVhkYVFhN2htZXVGRmVxQTZxemsKLS0tIFJISTZL\nUmd6YlppUmM0ZVp0U1dvdXYwSkNIZDI5ZlFZNldzZXFFMHBrTmsKXdWD1Lj1GU0m\ntaCUnIy8R1WTosHVVPH9DSEOfNvs/qqx/gw30HVDUZ1JJgeMCKOq8K2ILVZI3NF1\nD2vNrITAkA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33735412"],["reveal_at","2026-11-07T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","e64965078c44730d052443958d65b42a719c874323419e8631ac66d7e5cd6d3a"],["ct","0b4f92741797b416b074b8f9d7ad782a49301748ae1483b85bf310d5f956dabc"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r33735412.tlock b/reveal/v5-000012/r33735412.tlock new file mode 100644 index 0000000..5038408 --- /dev/null +++ b/reveal/v5-000012/r33735412.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzM1NDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKaTlMd1hqWUNjQ2Iwa0h4NzdWckx0cFFGMUxGSXdRSEZhYlpvcnJU | ||
| 5 | MFBrcVN4Tkorbk50eGpGOUdYbXZDaHVRLwpFMGlUWUJzQnZNMi9EeVEwWFZPNFRy | ||
| 6 | NFFkL0Jza2Y2bmNWRGN2dkxRZ05wS1dzaURoKys1WXRrM3lQSVpnaWtjCkJYNE0v | ||
| 7 | a1hFS2VVcFFMN1JjVjdJNVJOYVhkYVFhN2htZXVGRmVxQTZxemsKLS0tIFJISTZL | ||
| 8 | Umd6YlppUmM0ZVp0U1dvdXYwSkNIZDI5ZlFZNldzZXFFMHBrTmsKXdWD1Lj1GU0m | ||
| 9 | taCUnIy8R1WTosHVVPH9DSEOfNvs/qqx/gw30HVDUZ1JJgeMCKOq8K2ILVZI3NF1 | ||
| 10 | D2vNrITAkA== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r33793012.ct b/reveal/v5-000012/r33793012.ct new file mode 100644 index 0000000..b3c81a5 --- /dev/null +++ b/reveal/v5-000012/r33793012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r33793012.nostr.json b/reveal/v5-000012/r33793012.nostr.json new file mode 100644 index 0000000..f1eb0d6 --- /dev/null +++ b/reveal/v5-000012/r33793012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzkzMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKb0dKTG11c1drZE9KQjRGTnFnYml6Tnd1cElBaDBreWhJZkdyMUpi\nY0NRV3hFOEhKS2FNTFNHS3l6MCtCUnB4YwpBRmpBL1RveUp2ZHNlc3NUODB6d2V5\nNGhieXBpNUxVWDNsc2IrSWdSbG8xZXc3SzlXS242ZGVBRmV2NEVQWkFlCm5MMjZL\nekl2L2ZRallBekFrQkgxVkZmMGI3VEpqS05pQVpqSGxFaHJWTEEKLS0tIG9PR0hi\ncTZ1TnZTaFM5OFBrT3JSQVhHYS9kZkdjb2JUWFJTNDFyQ21qUFUKCjgVYpbJGOSU\nIwdj8r+jxO9yWuGKQA++5cgLirdt7egSlhEY6i3P1MNaUdkRLbHXDf62BB5K8iIM\nFJkb4cfIvA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33793012"],["reveal_at","2026-11-09T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","aedd10f9090427643fd8baf7ccdc39329ffd8a91f58dfddbb5f220f3b0a30be2"],["ct","2475e0e0ecf8580bfe551106c83e274c0c264dd01c3972c3440cdd8a43636417"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r33793012.tlock b/reveal/v5-000012/r33793012.tlock new file mode 100644 index 0000000..94e1eb2 --- /dev/null +++ b/reveal/v5-000012/r33793012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzkzMDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKb0dKTG11c1drZE9KQjRGTnFnYml6Tnd1cElBaDBreWhJZkdyMUpi | ||
| 5 | Y0NRV3hFOEhKS2FNTFNHS3l6MCtCUnB4YwpBRmpBL1RveUp2ZHNlc3NUODB6d2V5 | ||
| 6 | NGhieXBpNUxVWDNsc2IrSWdSbG8xZXc3SzlXS242ZGVBRmV2NEVQWkFlCm5MMjZL | ||
| 7 | ekl2L2ZRallBekFrQkgxVkZmMGI3VEpqS05pQVpqSGxFaHJWTEEKLS0tIG9PR0hi | ||
| 8 | cTZ1TnZTaFM5OFBrT3JSQVhHYS9kZkdjb2JUWFJTNDFyQ21qUFUKCjgVYpbJGOSU | ||
| 9 | Iwdj8r+jxO9yWuGKQA++5cgLirdt7egSlhEY6i3P1MNaUdkRLbHXDf62BB5K8iIM | ||
| 10 | FJkb4cfIvA== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r34685812.ct b/reveal/v5-000012/r34685812.ct new file mode 100644 index 0000000..fda89a8 --- /dev/null +++ b/reveal/v5-000012/r34685812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r34685812.nostr.json b/reveal/v5-000012/r34685812.nostr.json new file mode 100644 index 0000000..4b9d592 --- /dev/null +++ b/reveal/v5-000012/r34685812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0Njg1ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcGh0VDhheWRCUEYyTHlFVnphNkxlN3lPa1VSSWJnZWhxNVpjc3VT\nOGlNNGhsMFpoYkhpU3RtRXJFQW12eW1RMQpFbjd5dDEvMytPMXZKUW4rMTJ3T1hG\nUFdwaWVxclE2Qld3VDZyTWxFSFNuQitHVmZHZzVWRzg1RUk0N3JRUXBLCkVVc3lH\nZ0tYTVhFdkQxQzBTNEF1Y3laUm1WRmhzaDJzVzF5WWlFcUV4RTQKLS0tIFNiWEJP\nbWxRVUpvKzFlSTd3czI3Q2UwcWFMc2hSYzViTnNjS0N3ZmtTV0UKb1MIi113HAHN\nCa+5P49CDyY+e46PWzpwg4hdxMMblxI2eFLHtxjklnTfqiDLLSsaPB0uPeK+XagL\nSKQPUFBZSw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34685812"],["reveal_at","2026-12-10T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","330ae89875d75832f0fa82b1b5aa218481b10d5f2f9156654e09c4b74dff414b"],["ct","b8bb2d523122247502f722af17757d09f07e0003c8d3844003d4af3efd607e6e"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r34685812.tlock b/reveal/v5-000012/r34685812.tlock new file mode 100644 index 0000000..bcc4301 --- /dev/null +++ b/reveal/v5-000012/r34685812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0Njg1ODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcGh0VDhheWRCUEYyTHlFVnphNkxlN3lPa1VSSWJnZWhxNVpjc3VT | ||
| 5 | OGlNNGhsMFpoYkhpU3RtRXJFQW12eW1RMQpFbjd5dDEvMytPMXZKUW4rMTJ3T1hG | ||
| 6 | UFdwaWVxclE2Qld3VDZyTWxFSFNuQitHVmZHZzVWRzg1RUk0N3JRUXBLCkVVc3lH | ||
| 7 | Z0tYTVhFdkQxQzBTNEF1Y3laUm1WRmhzaDJzVzF5WWlFcUV4RTQKLS0tIFNiWEJP | ||
| 8 | bWxRVUpvKzFlSTd3czI3Q2UwcWFMc2hSYzViTnNjS0N3ZmtTV0UKb1MIi113HAHN | ||
| 9 | Ca+5P49CDyY+e46PWzpwg4hdxMMblxI2eFLHtxjklnTfqiDLLSsaPB0uPeK+XagL | ||
| 10 | SKQPUFBZSw== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r34714612.ct b/reveal/v5-000012/r34714612.ct new file mode 100644 index 0000000..748f040 --- /dev/null +++ b/reveal/v5-000012/r34714612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r34714612.nostr.json b/reveal/v5-000012/r34714612.nostr.json new file mode 100644 index 0000000..a13b2cb --- /dev/null +++ b/reveal/v5-000012/r34714612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcVV4c0JYMnRNbnpaU3pVS2I2dWlRTkliRHhLL2k5WTZmVjRPNjRN\nSGlYbFZLSis4bmdjMlAyWmFaSXRTY0RCLwpHUXoxbUg2YTluYlhVVitoQ1VaVitN\nMUhoWlp3ZExjQlRRQkM3YUxyaTVGTk5tZ09vem5PdGs5ZXdnUjFGWFNpCnlBWllW\nOUEzMXc3aHNkNWpjTGIrVjdUa2dsZU94U3VLT0VuWWJXbkxwWDgKLS0tIExrVzJz\naERSZ3RTU2Q5RUZ6WmRwL3VkanM4OFZzTDdxcFdqTkFVaHpmMk0K9jr4geibl8rP\nB+m01Kfe8ulyGOn2l/Dc9wmp6R/vJEFmgMnx1ikw9/PeUjvZO8Qiwem2f5XzvQVX\nA4qtMPNpFg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34714612"],["reveal_at","2026-12-11T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","dea74fc7a2770ce8d566e12333f8c07be4a30689a19eed124974f59495de3a4d"],["ct","e6d2534fc0d9d6d208b0c141cbceff30973ed9018051a9c33e7845b28b810220"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r34714612.tlock b/reveal/v5-000012/r34714612.tlock new file mode 100644 index 0000000..5856fa7 --- /dev/null +++ b/reveal/v5-000012/r34714612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcVV4c0JYMnRNbnpaU3pVS2I2dWlRTkliRHhLL2k5WTZmVjRPNjRN | ||
| 5 | SGlYbFZLSis4bmdjMlAyWmFaSXRTY0RCLwpHUXoxbUg2YTluYlhVVitoQ1VaVitN | ||
| 6 | MUhoWlp3ZExjQlRRQkM3YUxyaTVGTk5tZ09vem5PdGs5ZXdnUjFGWFNpCnlBWllW | ||
| 7 | OUEzMXc3aHNkNWpjTGIrVjdUa2dsZU94U3VLT0VuWWJXbkxwWDgKLS0tIExrVzJz | ||
| 8 | aERSZ3RTU2Q5RUZ6WmRwL3VkanM4OFZzTDdxcFdqTkFVaHpmMk0K9jr4geibl8rP | ||
| 9 | B+m01Kfe8ulyGOn2l/Dc9wmp6R/vJEFmgMnx1ikw9/PeUjvZO8Qiwem2f5XzvQVX | ||
| 10 | A4qtMPNpFg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r34772212.ct b/reveal/v5-000012/r34772212.ct new file mode 100644 index 0000000..cdbfe92 --- /dev/null +++ b/reveal/v5-000012/r34772212.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r34772212.nostr.json b/reveal/v5-000012/r34772212.nostr.json new file mode 100644 index 0000000..d9a7b83 --- /dev/null +++ b/reveal/v5-000012/r34772212.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzcyMjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbEFwLzFWclV5VFB0eU9vQmRzQnZ0anI0eWRPWFNXZ1hKb1E3c1Jx\nMThNYk5RUXNYZ3BCTGdnZUQ4ZmRpendDcgpFUkNlWFhOTXZjTkZuYmVJQkhmYURi\nMlV2MDNtVTJLcFV4U0tkT1JRaEp2Y0RjOVg2VmVMRWNJWWhVc2t1ckdkCitmeVZ4\nZ3g1RXhBYmtFKys0MFpWbktyWjc3Zmw5RHlGdHAyWkl5dklTNFUKLS0tIG1VNjRw\nMkdZaW8zTC9jZkk2akFJZVlXZk9lRk9PaVBZdnpCUmx0YXhDcGsKXimJE7x6Lqco\nyli3GNv+Up8SCu9F+KjHug0B/1Pfe4pqbWVaGAPHU7vM7LoS4UdzgKuwOLVa5wJw\nMNuEOKQTkw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34772212"],["reveal_at","2026-12-13T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","c3c42a2abc966abe284a49209d3032fddaf72220818876cdb525bb9e8980fb63"],["ct","d4a8c0ee46e3be2683c9deea845bb2ee1b95ae8e88621b2d9445cfd54506e3fb"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r34772212.tlock b/reveal/v5-000012/r34772212.tlock new file mode 100644 index 0000000..f4c8ac2 --- /dev/null +++ b/reveal/v5-000012/r34772212.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzcyMjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKbEFwLzFWclV5VFB0eU9vQmRzQnZ0anI0eWRPWFNXZ1hKb1E3c1Jx | ||
| 5 | MThNYk5RUXNYZ3BCTGdnZUQ4ZmRpendDcgpFUkNlWFhOTXZjTkZuYmVJQkhmYURi | ||
| 6 | MlV2MDNtVTJLcFV4U0tkT1JRaEp2Y0RjOVg2VmVMRWNJWWhVc2t1ckdkCitmeVZ4 | ||
| 7 | Z3g1RXhBYmtFKys0MFpWbktyWjc3Zmw5RHlGdHAyWkl5dklTNFUKLS0tIG1VNjRw | ||
| 8 | MkdZaW8zTC9jZkk2akFJZVlXZk9lRk9PaVBZdnpCUmx0YXhDcGsKXimJE7x6Lqco | ||
| 9 | yli3GNv+Up8SCu9F+KjHug0B/1Pfe4pqbWVaGAPHU7vM7LoS4UdzgKuwOLVa5wJw | ||
| 10 | MNuEOKQTkw== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r34801012.ct b/reveal/v5-000012/r34801012.ct new file mode 100644 index 0000000..1c86522 --- /dev/null +++ b/reveal/v5-000012/r34801012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r34801012.nostr.json b/reveal/v5-000012/r34801012.nostr.json new file mode 100644 index 0000000..97b0280 --- /dev/null +++ b/reveal/v5-000012/r34801012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODAxMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcFUycVhQcUJqTlhSSitBYUtyTzBYZW5rWFI5MGdkZDh0c25SQktH\nOS9DbUtFejNEbGoySGZ3TUVFTldBM3NuZApGTEFiTVhvQzVSOURmSEJJVlNObm5E\nOWl3Q2hUUk9kSlRudTVTZm9ZUGR1V2kxL3Y2eXMrbmlFU1B4Sk5mdzFDCnd5eXJ2\nWnJUUzJmNUhpeEsrSnFkMkgyTGxBUktzT0QyZitDb3N3c3QwL3MKLS0tIGxvYjZk\ndmM2YVpnUEs2UHdRZ2tGTGpIdHp3WUdTWGkwRkx3dXhKZGFiTU0Ks3dnoEi+BVoQ\nEAxnqk83D+joafe07nNFfTS3gVz2C/lN4x7nVdYGXmysPi8IWQ+GJL4bG9yeE20o\nSt1jDsfLGw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34801012"],["reveal_at","2026-12-14T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","93926795e16a7ad8f3c664b20259335381352dee7df2beb68a8f528b14ed7004"],["ct","6c7cfd3b1e24a99de19cc647a7e8e486b03149ad9985f1a1dd3341f4c790eb52"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r34801012.tlock b/reveal/v5-000012/r34801012.tlock new file mode 100644 index 0000000..f2724f9 --- /dev/null +++ b/reveal/v5-000012/r34801012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODAxMDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcFUycVhQcUJqTlhSSitBYUtyTzBYZW5rWFI5MGdkZDh0c25SQktH | ||
| 5 | OS9DbUtFejNEbGoySGZ3TUVFTldBM3NuZApGTEFiTVhvQzVSOURmSEJJVlNObm5E | ||
| 6 | OWl3Q2hUUk9kSlRudTVTZm9ZUGR1V2kxL3Y2eXMrbmlFU1B4Sk5mdzFDCnd5eXJ2 | ||
| 7 | WnJUUzJmNUhpeEsrSnFkMkgyTGxBUktzT0QyZitDb3N3c3QwL3MKLS0tIGxvYjZk | ||
| 8 | dmM2YVpnUEs2UHdRZ2tGTGpIdHp3WUdTWGkwRkx3dXhKZGFiTU0Ks3dnoEi+BVoQ | ||
| 9 | EAxnqk83D+joafe07nNFfTS3gVz2C/lN4x7nVdYGXmysPi8IWQ+GJL4bG9yeE20o | ||
| 10 | St1jDsfLGw== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r34887412.ct b/reveal/v5-000012/r34887412.ct new file mode 100644 index 0000000..b694e5b --- /dev/null +++ b/reveal/v5-000012/r34887412.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r34887412.nostr.json b/reveal/v5-000012/r34887412.nostr.json new file mode 100644 index 0000000..5e1af11 --- /dev/null +++ b/reveal/v5-000012/r34887412.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODg3NDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKalZQdldsVlJUOFpEUHNDUmI4bWVxZEJvem16citBTHBLdjJyMUwx\nSHpiQ2J4bFQ2dnUrOUJ0RlRGZEJhWnJhVApCQ2tCUUlqT2dXQTc4T2NuV2hpZzVD\ncmdRYkZYTFNDc2I5UjhMdmx1bDdUTUl6a1VwNGhPdWJVTjRSSlhPQWlVCmxXcUVq\ndSt2aldwbEw3Nno2RHdIZk5OeEdJZ2RVSDYxVTRGYXcrTUJaMFEKLS0tIGdkQW1v\nS090ZXFkem04MzZkNDY2b3h0clBmWnVLdlNFTU52YjRzMG9qRWMK3kxLcwQ1bY9l\n4k3wQlJuJwoXS6uNQUFppxlRmS3W6BFts3WkNEmAlgdR8wj568KycbR5TSf4QVhq\nCYRJg0PHBQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34887412"],["reveal_at","2026-12-17T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","300a448068754af9bda5e5cb02e3aa0f0bb54ba64c5b14eb3507f96892d767e3"],["ct","aec6dbf1384121897f21735371c89e8a92ec48be464490ef508a8843e67ac793"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r34887412.tlock b/reveal/v5-000012/r34887412.tlock new file mode 100644 index 0000000..14b2956 --- /dev/null +++ b/reveal/v5-000012/r34887412.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODg3NDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKalZQdldsVlJUOFpEUHNDUmI4bWVxZEJvem16citBTHBLdjJyMUwx | ||
| 5 | SHpiQ2J4bFQ2dnUrOUJ0RlRGZEJhWnJhVApCQ2tCUUlqT2dXQTc4T2NuV2hpZzVD | ||
| 6 | cmdRYkZYTFNDc2I5UjhMdmx1bDdUTUl6a1VwNGhPdWJVTjRSSlhPQWlVCmxXcUVq | ||
| 7 | dSt2aldwbEw3Nno2RHdIZk5OeEdJZ2RVSDYxVTRGYXcrTUJaMFEKLS0tIGdkQW1v | ||
| 8 | S090ZXFkem04MzZkNDY2b3h0clBmWnVLdlNFTU52YjRzMG9qRWMK3kxLcwQ1bY9l | ||
| 9 | 4k3wQlJuJwoXS6uNQUFppxlRmS3W6BFts3WkNEmAlgdR8wj568KycbR5TSf4QVhq | ||
| 10 | CYRJg0PHBQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r34945012.ct b/reveal/v5-000012/r34945012.ct new file mode 100644 index 0000000..92bb543 --- /dev/null +++ b/reveal/v5-000012/r34945012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r34945012.nostr.json b/reveal/v5-000012/r34945012.nostr.json new file mode 100644 index 0000000..613632e --- /dev/null +++ b/reveal/v5-000012/r34945012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTQ1MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaWgwbGtHRHhXa1RLZHJ3NWx6Q1hmbm50Q3hodlVqMlptZHJMUVdX\nOWNNbHpKZHdMaWgyd2lSa0NEZHFoQllDQgpCeUhGdTkvYnBWcmlQSFVndTlvYzBJ\naUo2TUMwWWVpWGJGMGxneXUreUJTZ0dkVjZwVWx6M240ZjhJVVkyRmdSCkhxaWdl\nRmZzakZxTE82bFJzNE5qamNkVWhyeWtWRUdUWlNvVlpqZi84WHMKLS0tIEllRG1L\nV044Z3dEc3dPU3N5c3VJdkNhQXdlQ2RVY3lkT3lCMFY1TFJmTzgKptNnP7dXyEnP\nYt9BXBmUJGoE/oqTw8h+1Xt3imcrtfa8Uw6aEQE6FZEva8mSESgtJpBGZq7cj59x\nhwbD3bntzA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34945012"],["reveal_at","2026-12-19T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","0b90abe73f31616fcce78865f4741553ac5c71299450bee68c9422f929db7057"],["ct","3293e0f613b7af07804f5968776699f18a69e9c83034db133ca8bf9a2bb3bdd1"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r34945012.tlock b/reveal/v5-000012/r34945012.tlock new file mode 100644 index 0000000..f897bd4 --- /dev/null +++ b/reveal/v5-000012/r34945012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTQ1MDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKaWgwbGtHRHhXa1RLZHJ3NWx6Q1hmbm50Q3hodlVqMlptZHJMUVdX | ||
| 5 | OWNNbHpKZHdMaWgyd2lSa0NEZHFoQllDQgpCeUhGdTkvYnBWcmlQSFVndTlvYzBJ | ||
| 6 | aUo2TUMwWWVpWGJGMGxneXUreUJTZ0dkVjZwVWx6M240ZjhJVVkyRmdSCkhxaWdl | ||
| 7 | RmZzakZxTE82bFJzNE5qamNkVWhyeWtWRUdUWlNvVlpqZi84WHMKLS0tIEllRG1L | ||
| 8 | V044Z3dEc3dPU3N5c3VJdkNhQXdlQ2RVY3lkT3lCMFY1TFJmTzgKptNnP7dXyEnP | ||
| 9 | Yt9BXBmUJGoE/oqTw8h+1Xt3imcrtfa8Uw6aEQE6FZEva8mSESgtJpBGZq7cj59x | ||
| 10 | hwbD3bntzA== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r35837812.ct b/reveal/v5-000012/r35837812.ct new file mode 100644 index 0000000..3e997a3 --- /dev/null +++ b/reveal/v5-000012/r35837812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r35837812.nostr.json b/reveal/v5-000012/r35837812.nostr.json new file mode 100644 index 0000000..945ac40 --- /dev/null +++ b/reveal/v5-000012/r35837812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1ODM3ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbHVTRG5MUi9CeVJNREVmSTdUKzJnMzN6NVRzbW1xL3dxYVcwcUlM\nQUQwbC9lbEVxdUk5b20xMi9zSStnYUI1MApCNk14eTVxdE5rZEt2bms3WlF4dUFW\nQWpRSEJKTTRUN0hGZ25qQ2VscFAvT3dsRm82SjRTM0ZDc04rTmRndTJoCnNCSGIv\nSFhkbU52RGg0dTlXUUg0T1hLZTU5Qkh2TEdMeUh4U2tUR293bkUKLS0tIElmU1Vp\nMXQ3NThDQ3pkMmJIajJ0Z205N3E4Y1JDT1VlMjlUblBVVDJTYUUK8pKHS7kRpnH5\ndKdu731ypYVcvFCvQESwsjxc049BeRaWEVxKH5SzpyFoNlbSDk9ZMexL1tDQ2UW2\noYllGJ+YHw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35837812"],["reveal_at","2027-01-19T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","36108425509aa07491095abf26a08e40cb414669d3307f3b8c195cea58f0a559"],["ct","8c143777e08b1076dd550397d6f85ec0da6dfedd77030e95b028ced4a32b9e6d"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r35837812.tlock b/reveal/v5-000012/r35837812.tlock new file mode 100644 index 0000000..7c4da26 --- /dev/null +++ b/reveal/v5-000012/r35837812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1ODM3ODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKbHVTRG5MUi9CeVJNREVmSTdUKzJnMzN6NVRzbW1xL3dxYVcwcUlM | ||
| 5 | QUQwbC9lbEVxdUk5b20xMi9zSStnYUI1MApCNk14eTVxdE5rZEt2bms3WlF4dUFW | ||
| 6 | QWpRSEJKTTRUN0hGZ25qQ2VscFAvT3dsRm82SjRTM0ZDc04rTmRndTJoCnNCSGIv | ||
| 7 | SFhkbU52RGg0dTlXUUg0T1hLZTU5Qkh2TEdMeUh4U2tUR293bkUKLS0tIElmU1Vp | ||
| 8 | MXQ3NThDQ3pkMmJIajJ0Z205N3E4Y1JDT1VlMjlUblBVVDJTYUUK8pKHS7kRpnH5 | ||
| 9 | dKdu731ypYVcvFCvQESwsjxc049BeRaWEVxKH5SzpyFoNlbSDk9ZMexL1tDQ2UW2 | ||
| 10 | oYllGJ+YHw== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r35866612.ct b/reveal/v5-000012/r35866612.ct new file mode 100644 index 0000000..23eb9c1 --- /dev/null +++ b/reveal/v5-000012/r35866612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r35866612.nostr.json b/reveal/v5-000012/r35866612.nostr.json new file mode 100644 index 0000000..5fdd48e --- /dev/null +++ b/reveal/v5-000012/r35866612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1ODY2NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKajBpNGZvTDFTN0kvRDJMeXJlTkY4SUt4eTRaRXRPZWJ5UDNXM1k5\nTFpHaWMxS0NwZEp0U3pzL3ZLRXVsTlBHcgpDbWMwM3ZDQ08xd1kxekk5WXBGM1Mv\nTWFJcUt0VThRYlRhWEVXOXEzaVAwb215cU5Eb0ZVYXdxa0wvdVpBSjhRCnExOENL\neWlnamg5amVuZThHamFSTTFTeGQ1MVRuTENrSFpXdlB3L05YZDAKLS0tIExpWDhE\nNmhzeXhsQjZxVzFLWDlPSmxHb2pYMVEvR0JKbjd0SGV2VExEOVUKHf0HtNiRUZ7N\nstXXEHJw5gmryVXp+g7CjyR1bc7RQgB8smLclaof51GTC4NqKsKzfLVKb2dPhA9d\njECZVZ4MZQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35866612"],["reveal_at","2027-01-20T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","a62dfcd713e7c06bec057bcfa220bbf5b19285ec350e5f6e7431a2d403b1a6d4"],["ct","c0670fb9b283752606f429f53a2ed3207a560ffec794371e1f2c1c9e9134b45b"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r35866612.tlock b/reveal/v5-000012/r35866612.tlock new file mode 100644 index 0000000..0a8048d --- /dev/null +++ b/reveal/v5-000012/r35866612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1ODY2NjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKajBpNGZvTDFTN0kvRDJMeXJlTkY4SUt4eTRaRXRPZWJ5UDNXM1k5 | ||
| 5 | TFpHaWMxS0NwZEp0U3pzL3ZLRXVsTlBHcgpDbWMwM3ZDQ08xd1kxekk5WXBGM1Mv | ||
| 6 | TWFJcUt0VThRYlRhWEVXOXEzaVAwb215cU5Eb0ZVYXdxa0wvdVpBSjhRCnExOENL | ||
| 7 | eWlnamg5amVuZThHamFSTTFTeGQ1MVRuTENrSFpXdlB3L05YZDAKLS0tIExpWDhE | ||
| 8 | NmhzeXhsQjZxVzFLWDlPSmxHb2pYMVEvR0JKbjd0SGV2VExEOVUKHf0HtNiRUZ7N | ||
| 9 | stXXEHJw5gmryVXp+g7CjyR1bc7RQgB8smLclaof51GTC4NqKsKzfLVKb2dPhA9d | ||
| 10 | jECZVZ4MZQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/r37018612.ct b/reveal/v5-000012/r37018612.ct new file mode 100644 index 0000000..7828171 --- /dev/null +++ b/reveal/v5-000012/r37018612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000012/r37018612.nostr.json b/reveal/v5-000012/r37018612.nostr.json new file mode 100644 index 0000000..51cc7a6 --- /dev/null +++ b/reveal/v5-000012/r37018612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3MDE4NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcmdOQTNtN3d0TEVBZng0bHg3bS9KREtudlRLYVEyUGQyY2FhVHNI\nM1ZNTGxmN1oxdGJSZVFPbHREUmpIYWduVApCdVBtdnY3Q2NXcDZzRGV5Y1UzaGto\nM0U0a2tZV3R1THVFRURNN1BLeXlFOVZkTzcrZDF1YjE3OXgyR0ZwdEdqCkFldE9O\nWU1FRk1iWUE3YWwwbFMzSTZkNVRIZGlMb0I4dmsrVHVMUG5JNEkKLS0tIGVTR2g5\nVmZhZmxzSStWLzEvcUZtc25YSnN6S3RoKzhsU2g2dHg2TlNsSDAK3chH0IduG47+\n1BsUVxOf+RCaWpCdtJjdaRGtcoeJeeEoyQlcqQtWok+Rdgkoiij0lx0NhnefAYrX\nC9Mn2P2wJQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","37018612"],["reveal_at","2027-03-01T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","ca8c432222d03c095a029ced1e17db474a372fa11611fa365b50074c9e7c1443"],["ct","a4fff5e67c0fa30537d0f91cdcb113b2a1346b19f349d398a88e2a930d688c7f"],["seal","573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47"]]} | |||
diff --git a/reveal/v5-000012/r37018612.tlock b/reveal/v5-000012/r37018612.tlock new file mode 100644 index 0000000..472d341 --- /dev/null +++ b/reveal/v5-000012/r37018612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3MDE4NjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcmdOQTNtN3d0TEVBZng0bHg3bS9KREtudlRLYVEyUGQyY2FhVHNI | ||
| 5 | M1ZNTGxmN1oxdGJSZVFPbHREUmpIYWduVApCdVBtdnY3Q2NXcDZzRGV5Y1UzaGto | ||
| 6 | M0U0a2tZV3R1THVFRURNN1BLeXlFOVZkTzcrZDF1YjE3OXgyR0ZwdEdqCkFldE9O | ||
| 7 | WU1FRk1iWUE3YWwwbFMzSTZkNVRIZGlMb0I4dmsrVHVMUG5JNEkKLS0tIGVTR2g5 | ||
| 8 | VmZhZmxzSStWLzEvcUZtc25YSnN6S3RoKzhsU2g2dHg2TlNsSDAK3chH0IduG47+ | ||
| 9 | 1BsUVxOf+RCaWpCdtJjdaRGtcoeJeeEoyQlcqQtWok+Rdgkoiij0lx0NhnefAYrX | ||
| 10 | C9Mn2P2wJQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000012/seal.json b/reveal/v5-000012/seal.json new file mode 100644 index 0000000..c78ff49 --- /dev/null +++ b/reveal/v5-000012/seal.json | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | { | ||
| 2 | "algorithm": "sha256-live-v5", | ||
| 3 | "anchor_ref": "sha256:573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47", | ||
| 4 | "covers_after": "2026-10-08T22:30:20.258717Z", | ||
| 5 | "covers_through": "2026-10-09T04:21:12.160694Z", | ||
| 6 | "digest": "573808acce21d75abd2857a59f497c1e17367ec9fd34ff6b3c6c62bccff57d47", | ||
| 7 | "follows_seq": 42, | ||
| 8 | "n_forecasts": 1113, | ||
| 9 | "n_groups": 15, | ||
| 10 | "n_withheld": 1113, | ||
| 11 | "prev_digest": "aecbc94f76fab78030adf1714ed7145e7b4424b9abcf620d6fe047aaf058c5c9", | ||
| 12 | "prev_seq": 11, | ||
| 13 | "sealed_at": "2026-10-09T04:21:41.242748Z", | ||
| 14 | "seq": 12, | ||
| 15 | "variant": { | ||
| 16 | "beacon": { | ||
| 17 | "chain_hash": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971", | ||
| 18 | "genesis_time": 1692803367, | ||
| 19 | "period": 3, | ||
| 20 | "relays": [ | ||
| 21 | "https://api.drand.sh", | ||
| 22 | "https://api2.drand.sh", | ||
| 23 | "https://api3.drand.sh", | ||
| 24 | "https://drand.cloudflare.com" | ||
| 25 | ], | ||
| 26 | "scheme": "bls-unchained-g1-rfc9380" | ||
| 27 | }, | ||
| 28 | "cipher": "chacha20poly1305-zlib6-nonce0", | ||
| 29 | "gate": { | ||
| 30 | "default": "withheld: a kept salt can be released later; an opened text can never be withdrawn", | ||
| 31 | "opened": "none", | ||
| 32 | "why": "no decision by Echo yet" | ||
| 33 | }, | ||
| 34 | "line": "numeric<TAB>open:<v4 line> | numeric<TAB>withheld:sha256(salt||v4 line)", | ||
| 35 | "reveal": "utc-day-after-close", | ||
| 36 | "salts": "key ring: one content a seal, one part a line", | ||
| 37 | "tool": { | ||
| 38 | "name": "tle", | ||
| 39 | "sha256": "69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541", | ||
| 40 | "version": "tlock v1.2.0 -- github.com/drand/tlock" | ||
| 41 | } | ||
| 42 | } | ||
| 43 | } | ||