diff options
52 files changed, 576 insertions, 0 deletions
diff --git a/reveal/v5-000015/check.py b/reveal/v5-000015/check.py new file mode 100644 index 0000000..7f86b8d --- /dev/null +++ b/reveal/v5-000015/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-000015/manifest.txt b/reveal/v5-000015/manifest.txt new file mode 100644 index 0000000..0bdf8a8 --- /dev/null +++ b/reveal/v5-000015/manifest.txt | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | sha256-live-v5 | ||
| 2 | prev 11293db524a9ce788df948c5347c7f627a7649e0718bce967ae5d32261fe19ba | ||
| 3 | follows 45 23679ed5882b641cb8781bedf229dd9bc81fc72cb2b4c63e713ea25c9e36c0c4 52597 | ||
| 4 | covers 2026-10-09T16:31:25.305817Z 2026-10-09T21:20:37.989880Z | ||
| 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 1227 1227 16 | ||
| 7 | group 33533812 2026-10-31T00:00:00.000000Z 339 339 092b9afff3d1ba86e82bab391354093ae618d5db7369d26d8d914545a01d7fe2 daca555cceae6f743042b3413eb06d435da3d936ce347aa0765970b394140bde 251678e2f09086843b0c29500affc26667e3e06437a4daa16c7f9469c47e6249 0 | ||
| 8 | group 33562612 2026-11-01T00:00:00.000000Z 21 21 eabd826dcee34249bbd53ef9f29e02a31134b0f367326be080c77fc5bef76e8a ca31c2ab4460fa756e615ac9814c93d77745724b66b968f7682d2444229e3e57 63c92b992d787aca96c554a08e48ddb453c6069248a9d78171b647dd4d9d3f06 0 | ||
| 9 | group 33649012 2026-11-04T00:00:00.000000Z 108 108 3dcfc84a3ab6a008816f7a91cb318727b583aad28957a466cf9a1370b1a2fb07 eb841103e021af867aad47e2272baafdfe13941dc8aa4de2724a545569afc824 2c391f67d8e8e8064a5a7177ed9710c6b573b9532476a10f566d2cb129b0e86c 0 | ||
| 10 | group 33677812 2026-11-05T00:00:00.000000Z 12 12 3f7534a5d0dd1221864706a1821f60745a9090cbedb7bde46ac96b75e42b59d9 6a8ec1381609ed979376e695492d32181b8a389ba911e15cdedac927bfc13501 3a81937b64f1863a3ce8ac031a464f774681bfad2e8a88e33bad0606dbb18191 0 | ||
| 11 | group 33793012 2026-11-09T00:00:00.000000Z 36 36 8e4c9cb608dd70d188b92fb2ae392804de6fbf50a8c7b36c20fba3900c997b8e e12a6c9f58c32c2eed6b65260d7dd8093a961ff59c90443990459f49257a9e7b 326b711c75793187cf03382eedb30958ee175c32121e72c2cd328368632ca188 0 | ||
| 12 | group 34685812 2026-12-10T00:00:00.000000Z 336 336 ea1eeed54b6a64c12c8ad140cb49859ef97eba4211d5408a188b2ac0a357bedd 6c744c35a82c3055a61a518b2844a2a2d8233e305cff6f50a86c9f9c10d51d82 0174108376f8f82ad8618be4c324ac0e12725ae1f371f801b706f2dbc0189cb0 0 | ||
| 13 | group 34714612 2026-12-11T00:00:00.000000Z 18 18 1f04ca5359925941f92251efe15de59fe87fc8e56cab8b1155ad2072422a9c93 db69f5689e8f5014eb99f557210108c7e2ac347172f0efe59ceda13c0f984bf9 0f412965f68f3b1a47434dc505d6f6e874d6cffd16f27f3a108d619e9bc6efcf 0 | ||
| 14 | group 34801012 2026-12-14T00:00:00.000000Z 105 105 e40f7ceb57652cf64b2547e3b328a4b35cd6aab94467cb0573545bc0968b5b55 b79a48d2552d5028daac85242ebac48449468e42167bbbd166e41212b7dfc033 b721225062333aec901d7382247eb38dcbf61870fab3689ba15f9a51c505d23d 0 | ||
| 15 | group 34829812 2026-12-15T00:00:00.000000Z 12 12 ac9dfa6db527551f00079b1c80d21271bd186e58350fb09b147ad5c24ec3265a 08d45335183d1ff228be045a1f1f70490869a8e9ae6f4bd73e1bcda6f7a76e42 5ae18479a66a5f09419a1069eb67f88b3f5293f1d6ae97b0ea4536e9dae8398b 0 | ||
| 16 | group 34945012 2026-12-19T00:00:00.000000Z 36 36 64b263716ccff5b2dc029602c3da67c956898604f155bf3ea83449384d64bdef c81586ca65094a1d14e7f0e112d6e54297051e630d6270313ff693040a3d5c42 d86a46eba860d06de2501a267367bfc23e03e2ceddfee04f2255539d3ceca817 0 | ||
| 17 | group 35578612 2027-01-10T00:00:00.000000Z 9 9 94b6250528065f08b85d7bbc158ebbf54f45aeb55cf9cdfee6908be50eb4638c b59293fbddc0f440032b280497d889d731127e8ff0d9d91180d48560c3dcabcc 7b0f1439aa5424800ce0e1380f3da5163d8f58174191320b6765ba08530b53a9 0 | ||
| 18 | group 35693812 2027-01-14T00:00:00.000000Z 78 78 4a021ae959af427b51d6e700fa8cc6f0fbc7f419b498fe6deff8da011b07dc18 40dcfd86892743e3d9eb5517b32342795c7669e9da42fe7a1c73309a28123e3a a65e9bbac48c889dffa8a3009ba3f54f73bbf6b9ee81f4f66c05c011a3df0e1f 0 | ||
| 19 | group 36730612 2027-02-19T00:00:00.000000Z 9 9 4f3399b9d34d0bed43af4eb49e57b165aa622c4fec5ba1d18ef7849995f457c2 0559ae1b751959f403772e7b11e221fb9f285616bcae5ce780a4d23ca74c6104 8566644621eb2dff672164db8f43b4e17bf4de3c77c8cb46fbda899a027eb426 0 | ||
| 20 | group 36788212 2027-02-21T00:00:00.000000Z 12 12 5d325e737f9c7eaf89a1e91961f6b05182489d8c8f8adb352287e44db80d0ceb 09e2645bdaea0695b0d46fcce19cdb530dee5153476add7377edc542ac44c826 e60d594f8cc1e956b17690e73e2f6c5b70c88ac1f7fe5cd8738ad29a43bcb366 0 | ||
| 21 | group 36845812 2027-02-23T00:00:00.000000Z 84 84 bb98419ca3bdaf94a26feac3d847176f2e8624f0c4c7722871ba1abb51893a0f 53ec7b623272057a70d54cc807613369b8952eb38a21e0c1f1198a075b738e39 6e94cf62615764351441df78bbcaa1275faaef8e515c7345726948923418f5ac 0 | ||
| 22 | group 37940212 2027-04-02T00:00:00.000000Z 12 12 170514d02dccd65fe1cc5ef497f4a1633f3bc7321e6d10f1174cbecefce3e1a9 f486c8f779359b30b552d1d57abf9929f4db38793105e4040bdb280885f520d8 295c470be828d8f818108cb8947ef262c562f177b2ab69312f5a6fd9bcd9d425 0 \ No newline at end of file | ||
diff --git a/reveal/v5-000015/manifest.txt.ots b/reveal/v5-000015/manifest.txt.ots new file mode 100644 index 0000000..b40c225 --- /dev/null +++ b/reveal/v5-000015/manifest.txt.ots | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r33533812.ct b/reveal/v5-000015/r33533812.ct new file mode 100644 index 0000000..5828552 --- /dev/null +++ b/reveal/v5-000015/r33533812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r33533812.nostr.json b/reveal/v5-000015/r33533812.nostr.json new file mode 100644 index 0000000..508cb3a --- /dev/null +++ b/reveal/v5-000015/r33533812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTMzODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaTA3WXZ5aEhwWUZpQ3lRMXZOaE11TiswV1laOFluMGZjM0FHWVN2\nOTJpOWRLU3RiN3ZKK2NhL1F4ZStWUlpGKwpFLzhsMGdaalZQbXFGVWsxLy91QzBo\nbkh5K05kb3BOV0VwUXdnTzNsOVdiaVFYMUpoRkpXcC9jb0VMM3FIaVRqCm52Qi9X\nMk9zOFVsMjluNjRkWEp0QzViaFIzcFYwOTRPUnA2WGk1M01tVGcKLS0tIGQ3dFVu\nOFhoM3NhdlpzeHpHS3B1ODE3Wi8xSHVUa1hHcEQyT3VUVWVCMU0K+0l2gj9T8y8B\nDgc5KqdRD1hVipcbENMLcCZGJkLBy9iHUOLCnC/Cs0Uhe35rGs+48ceCw9D4LJNG\nXsYG97lnHg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33533812"],["reveal_at","2026-10-31T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","092b9afff3d1ba86e82bab391354093ae618d5db7369d26d8d914545a01d7fe2"],["ct","daca555cceae6f743042b3413eb06d435da3d936ce347aa0765970b394140bde"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r33533812.tlock b/reveal/v5-000015/r33533812.tlock new file mode 100644 index 0000000..3256942 --- /dev/null +++ b/reveal/v5-000015/r33533812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTMzODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKaTA3WXZ5aEhwWUZpQ3lRMXZOaE11TiswV1laOFluMGZjM0FHWVN2 | ||
| 5 | OTJpOWRLU3RiN3ZKK2NhL1F4ZStWUlpGKwpFLzhsMGdaalZQbXFGVWsxLy91QzBo | ||
| 6 | bkh5K05kb3BOV0VwUXdnTzNsOVdiaVFYMUpoRkpXcC9jb0VMM3FIaVRqCm52Qi9X | ||
| 7 | Mk9zOFVsMjluNjRkWEp0QzViaFIzcFYwOTRPUnA2WGk1M01tVGcKLS0tIGQ3dFVu | ||
| 8 | OFhoM3NhdlpzeHpHS3B1ODE3Wi8xSHVUa1hHcEQyT3VUVWVCMU0K+0l2gj9T8y8B | ||
| 9 | Dgc5KqdRD1hVipcbENMLcCZGJkLBy9iHUOLCnC/Cs0Uhe35rGs+48ceCw9D4LJNG | ||
| 10 | XsYG97lnHg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r33562612.ct b/reveal/v5-000015/r33562612.ct new file mode 100644 index 0000000..c4c3486 --- /dev/null +++ b/reveal/v5-000015/r33562612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r33562612.nostr.json b/reveal/v5-000015/r33562612.nostr.json new file mode 100644 index 0000000..103dc6d --- /dev/null +++ b/reveal/v5-000015/r33562612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbFZUL3hkTUl5aktsR2xFVFBid3d2YXdKeFJaUUp0dWJIQlBweWNy\nN0ZMa0Q5RVJrM3IwUWwrQ0xYNWxxK2RVcApHY1ZZK1ZBcHpSTERpZjhQNzhCRTU5\nZUp3OEZvK3RqTy9NdWtzQ09BbnloSEgzYndRZlN1OXRpckhoMzB6dkYwCk5nWUdo\ndy8xZmM2SWQyQXI5VDA2QUp2MVozVTJXVXhUYVFlZUtUZ2lwdjgKLS0tIHJXRDBJ\ncWNtZGFzb0FOMjRrcmdtaGs4NDhleVNwelBpaGdFMytTM2E3UVEKIVcAUE+9wzXM\nv25zqLvHJzjEJin6FVvR4twYa+/HzGK34V9kFNXgmykNbt+tozDFvLzm1ElzRLg8\nCNdru4rHTQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33562612"],["reveal_at","2026-11-01T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","eabd826dcee34249bbd53ef9f29e02a31134b0f367326be080c77fc5bef76e8a"],["ct","ca31c2ab4460fa756e615ac9814c93d77745724b66b968f7682d2444229e3e57"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r33562612.tlock b/reveal/v5-000015/r33562612.tlock new file mode 100644 index 0000000..6dd8275 --- /dev/null +++ b/reveal/v5-000015/r33562612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKbFZUL3hkTUl5aktsR2xFVFBid3d2YXdKeFJaUUp0dWJIQlBweWNy | ||
| 5 | N0ZMa0Q5RVJrM3IwUWwrQ0xYNWxxK2RVcApHY1ZZK1ZBcHpSTERpZjhQNzhCRTU5 | ||
| 6 | ZUp3OEZvK3RqTy9NdWtzQ09BbnloSEgzYndRZlN1OXRpckhoMzB6dkYwCk5nWUdo | ||
| 7 | dy8xZmM2SWQyQXI5VDA2QUp2MVozVTJXVXhUYVFlZUtUZ2lwdjgKLS0tIHJXRDBJ | ||
| 8 | cWNtZGFzb0FOMjRrcmdtaGs4NDhleVNwelBpaGdFMytTM2E3UVEKIVcAUE+9wzXM | ||
| 9 | v25zqLvHJzjEJin6FVvR4twYa+/HzGK34V9kFNXgmykNbt+tozDFvLzm1ElzRLg8 | ||
| 10 | CNdru4rHTQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r33649012.ct b/reveal/v5-000015/r33649012.ct new file mode 100644 index 0000000..e76975c --- /dev/null +++ b/reveal/v5-000015/r33649012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r33649012.nostr.json b/reveal/v5-000015/r33649012.nostr.json new file mode 100644 index 0000000..56a3b34 --- /dev/null +++ b/reveal/v5-000015/r33649012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjQ5MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcWNOUEhtZ1hiR0RmeGx5SWtMMEg0Q3N6dUdVTTJuMUJWUjNmdFlD\nblYxcFJjbzRBSERXYlI3UUo5cm1ITnlNbApGZzAzbGtJOEhialJUZVJCQ1FZYVB2\nYXpNMmpnL0F1UTVESlA1RU1KS2lWRnFSNFI5TVFhdDA0akpqM1dWVjVHClVNSlQx\nbGNkdXo4TzVsR2czVUh2dHNoZjg5Nmp1YkRad1BkR0UzZkxURTQKLS0tIDJzTG13\nTXpTSWlmUGpxeVVlRm56Y0NjQ1JCQW5oMFlueVlVK1EySmhkaDgKzwugtgC7aPJk\nID84+BNR9PWq9hWste9CnOH7MFvTYrA4PMgVAPx20n5W5jMXjMpruiHlzpvxCMq5\n9ldnbZSW0w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33649012"],["reveal_at","2026-11-04T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3dcfc84a3ab6a008816f7a91cb318727b583aad28957a466cf9a1370b1a2fb07"],["ct","eb841103e021af867aad47e2272baafdfe13941dc8aa4de2724a545569afc824"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r33649012.tlock b/reveal/v5-000015/r33649012.tlock new file mode 100644 index 0000000..4bcb76e --- /dev/null +++ b/reveal/v5-000015/r33649012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjQ5MDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcWNOUEhtZ1hiR0RmeGx5SWtMMEg0Q3N6dUdVTTJuMUJWUjNmdFlD | ||
| 5 | blYxcFJjbzRBSERXYlI3UUo5cm1ITnlNbApGZzAzbGtJOEhialJUZVJCQ1FZYVB2 | ||
| 6 | YXpNMmpnL0F1UTVESlA1RU1KS2lWRnFSNFI5TVFhdDA0akpqM1dWVjVHClVNSlQx | ||
| 7 | bGNkdXo4TzVsR2czVUh2dHNoZjg5Nmp1YkRad1BkR0UzZkxURTQKLS0tIDJzTG13 | ||
| 8 | TXpTSWlmUGpxeVVlRm56Y0NjQ1JCQW5oMFlueVlVK1EySmhkaDgKzwugtgC7aPJk | ||
| 9 | ID84+BNR9PWq9hWste9CnOH7MFvTYrA4PMgVAPx20n5W5jMXjMpruiHlzpvxCMq5 | ||
| 10 | 9ldnbZSW0w== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r33677812.ct b/reveal/v5-000015/r33677812.ct new file mode 100644 index 0000000..00ee3eb --- /dev/null +++ b/reveal/v5-000015/r33677812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r33677812.nostr.json b/reveal/v5-000015/r33677812.nostr.json new file mode 100644 index 0000000..5a81b80 --- /dev/null +++ b/reveal/v5-000015/r33677812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjc3ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbUFDU2kyOHlYSWJGQ2FBUU1uN0tUQkZhbVJjMVVTVW0wanlQMjZt\nNjVVenlEd091dWFlM3lCZ3NqaUxad2o4WApFaSt2RHhQZTNScVNEeUdySWRWRFpR\nUlZlQS9DOWlyWS9hWGxPOFJta0RHWVFGQ2llcC9KZGVxTHd4bUl5SFRWCktlMS9Q\nYnVpVCtENVIzUm81Z1FtekFlcHpvUlo3RmZmN3gzZE5FdzZnN2cKLS0tIGxyNXBx\nRHloSy9leGxWaUtvZEUzUnFxcDU1YU5TbS9HZS8xMWNPbGxRWDgK8ggX+zhlwq+3\nz2QlYlzYbEKitOZmBHSy2e3vwF/xIKXCA6O+Jdxbe2yQycrQu544PlfABKCca+B2\nmljvfCvHBQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33677812"],["reveal_at","2026-11-05T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3f7534a5d0dd1221864706a1821f60745a9090cbedb7bde46ac96b75e42b59d9"],["ct","6a8ec1381609ed979376e695492d32181b8a389ba911e15cdedac927bfc13501"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r33677812.tlock b/reveal/v5-000015/r33677812.tlock new file mode 100644 index 0000000..724e11a --- /dev/null +++ b/reveal/v5-000015/r33677812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjc3ODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKbUFDU2kyOHlYSWJGQ2FBUU1uN0tUQkZhbVJjMVVTVW0wanlQMjZt | ||
| 5 | NjVVenlEd091dWFlM3lCZ3NqaUxad2o4WApFaSt2RHhQZTNScVNEeUdySWRWRFpR | ||
| 6 | UlZlQS9DOWlyWS9hWGxPOFJta0RHWVFGQ2llcC9KZGVxTHd4bUl5SFRWCktlMS9Q | ||
| 7 | YnVpVCtENVIzUm81Z1FtekFlcHpvUlo3RmZmN3gzZE5FdzZnN2cKLS0tIGxyNXBx | ||
| 8 | RHloSy9leGxWaUtvZEUzUnFxcDU1YU5TbS9HZS8xMWNPbGxRWDgK8ggX+zhlwq+3 | ||
| 9 | z2QlYlzYbEKitOZmBHSy2e3vwF/xIKXCA6O+Jdxbe2yQycrQu544PlfABKCca+B2 | ||
| 10 | mljvfCvHBQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r33793012.ct b/reveal/v5-000015/r33793012.ct new file mode 100644 index 0000000..0fa8e7b --- /dev/null +++ b/reveal/v5-000015/r33793012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r33793012.nostr.json b/reveal/v5-000015/r33793012.nostr.json new file mode 100644 index 0000000..d5b6ff0 --- /dev/null +++ b/reveal/v5-000015/r33793012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzkzMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcnl3ditWMVVZeWtXQjU1UE83amdqR3hQK3d2bjU5R2FVY3lOaFZR\nTGd6Qms4TXgraFB2ZmJYWXI2ejZwSktGYwpHVHVkb2IvNklSTll3akN5V014VDZp\nTVVnTnBZMEpQaTFzSWFNc2M3RFFRRVRPV1VHMktXd2lvRHpIa0hJS1Y0CjFRcGpt\nN3pPL3FLVmFUWndqeEpXSzZ6M2FIZHN1ZDBFdGNwOUtTVXNETGcKLS0tIHVHWG9l\nYy9wakdhR3ZmY2YrUVhLdmVUbG5RVHRnS1RVZC9oa2trdlYvWFEKX0hQ34PlFLLw\nQ565SJiARdipZmWtB1RKQ1aNYQKRoYSR9XqpoctP6Eq738TnmaLJoz9FRovfuDtO\nVTMBIRAfZQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33793012"],["reveal_at","2026-11-09T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","8e4c9cb608dd70d188b92fb2ae392804de6fbf50a8c7b36c20fba3900c997b8e"],["ct","e12a6c9f58c32c2eed6b65260d7dd8093a961ff59c90443990459f49257a9e7b"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r33793012.tlock b/reveal/v5-000015/r33793012.tlock new file mode 100644 index 0000000..56be7f3 --- /dev/null +++ b/reveal/v5-000015/r33793012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzkzMDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcnl3ditWMVVZeWtXQjU1UE83amdqR3hQK3d2bjU5R2FVY3lOaFZR | ||
| 5 | TGd6Qms4TXgraFB2ZmJYWXI2ejZwSktGYwpHVHVkb2IvNklSTll3akN5V014VDZp | ||
| 6 | TVVnTnBZMEpQaTFzSWFNc2M3RFFRRVRPV1VHMktXd2lvRHpIa0hJS1Y0CjFRcGpt | ||
| 7 | N3pPL3FLVmFUWndqeEpXSzZ6M2FIZHN1ZDBFdGNwOUtTVXNETGcKLS0tIHVHWG9l | ||
| 8 | Yy9wakdhR3ZmY2YrUVhLdmVUbG5RVHRnS1RVZC9oa2trdlYvWFEKX0hQ34PlFLLw | ||
| 9 | Q565SJiARdipZmWtB1RKQ1aNYQKRoYSR9XqpoctP6Eq738TnmaLJoz9FRovfuDtO | ||
| 10 | VTMBIRAfZQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r34685812.ct b/reveal/v5-000015/r34685812.ct new file mode 100644 index 0000000..94b3899 --- /dev/null +++ b/reveal/v5-000015/r34685812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r34685812.nostr.json b/reveal/v5-000015/r34685812.nostr.json new file mode 100644 index 0000000..d7c6494 --- /dev/null +++ b/reveal/v5-000015/r34685812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0Njg1ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbUdTdlpzOFdpMzhGL1VGYjFOdlpkeXhFb3hKT0kwL08yWjJMVm45\nUGxnMWVsbXllR0lwNitrYnpxVUQ4VVRzYwpDVUpMOTFaWFNGQkhnb3d5U0Vtd3Bw\nb2lPN3RFVjNVdzJESkJJb0JxY0RzRXM4M3k1akU3NjE3VnBQN0E1S3V1CmZKSVlW\nRmpGTVk5MTB4MG0yUkF6Vzd3ekg3UXkrbnM3WEozSmVHdXFDYkEKLS0tIDlTTzM0\ndUk3TklwSjVVUUgxOXZDRm1HM1lMZHdUNVZGT1hqa3JlelBCRjAKjrw0WHXXFUu/\nfwldCn+qJJtmbFA1IM/nLbxH777dqzmihyEcnwbXm2TEqN9J31qywr2ofdygW/2X\n5q9U739ffg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34685812"],["reveal_at","2026-12-10T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","ea1eeed54b6a64c12c8ad140cb49859ef97eba4211d5408a188b2ac0a357bedd"],["ct","6c744c35a82c3055a61a518b2844a2a2d8233e305cff6f50a86c9f9c10d51d82"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r34685812.tlock b/reveal/v5-000015/r34685812.tlock new file mode 100644 index 0000000..14171fe --- /dev/null +++ b/reveal/v5-000015/r34685812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0Njg1ODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKbUdTdlpzOFdpMzhGL1VGYjFOdlpkeXhFb3hKT0kwL08yWjJMVm45 | ||
| 5 | UGxnMWVsbXllR0lwNitrYnpxVUQ4VVRzYwpDVUpMOTFaWFNGQkhnb3d5U0Vtd3Bw | ||
| 6 | b2lPN3RFVjNVdzJESkJJb0JxY0RzRXM4M3k1akU3NjE3VnBQN0E1S3V1CmZKSVlW | ||
| 7 | RmpGTVk5MTB4MG0yUkF6Vzd3ekg3UXkrbnM3WEozSmVHdXFDYkEKLS0tIDlTTzM0 | ||
| 8 | dUk3TklwSjVVUUgxOXZDRm1HM1lMZHdUNVZGT1hqa3JlelBCRjAKjrw0WHXXFUu/ | ||
| 9 | fwldCn+qJJtmbFA1IM/nLbxH777dqzmihyEcnwbXm2TEqN9J31qywr2ofdygW/2X | ||
| 10 | 5q9U739ffg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r34714612.ct b/reveal/v5-000015/r34714612.ct new file mode 100644 index 0000000..86cdaa9 --- /dev/null +++ b/reveal/v5-000015/r34714612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r34714612.nostr.json b/reveal/v5-000015/r34714612.nostr.json new file mode 100644 index 0000000..9afab7d --- /dev/null +++ b/reveal/v5-000015/r34714612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaFJvaFN0NWdmL2VwL0xnbEx0WkJsYmpxWkRqc0ZOTDgvSVdyQjZR\nbUYvcCszQnE1TEdlQlBZR0EzNXRBQ2NyQgpDU1IvMEdFZmRQNDY1MUZTM1hmTXBS\nNXluZjhVTzgwaGJUT3RJbmg4T1BTL1FYZkxMMzRmUU9tQlVMM1Ruc2N6CmgxK1ls\naldzdit4TmhjTVhRcFJjbGRxVVFDWi9yRitkY0N6aDc3VUVQeEEKLS0tIElpNzdJ\ndmZjVG56K2xoeUhkTEsxL2VDOE5yQzJoWUdIUm9xSUozWUtwd28KZJ/fr+jTJ6Od\nXh0BtDDaWn4OhWGZoz5wEfZm5hGZ+ZXZfWLmQWt2IS6NDlAFWFTa4JLuJJiP9jIG\nt/kOPuoKyg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34714612"],["reveal_at","2026-12-11T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","1f04ca5359925941f92251efe15de59fe87fc8e56cab8b1155ad2072422a9c93"],["ct","db69f5689e8f5014eb99f557210108c7e2ac347172f0efe59ceda13c0f984bf9"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r34714612.tlock b/reveal/v5-000015/r34714612.tlock new file mode 100644 index 0000000..c8f0e16 --- /dev/null +++ b/reveal/v5-000015/r34714612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKaFJvaFN0NWdmL2VwL0xnbEx0WkJsYmpxWkRqc0ZOTDgvSVdyQjZR | ||
| 5 | bUYvcCszQnE1TEdlQlBZR0EzNXRBQ2NyQgpDU1IvMEdFZmRQNDY1MUZTM1hmTXBS | ||
| 6 | NXluZjhVTzgwaGJUT3RJbmg4T1BTL1FYZkxMMzRmUU9tQlVMM1Ruc2N6CmgxK1ls | ||
| 7 | aldzdit4TmhjTVhRcFJjbGRxVVFDWi9yRitkY0N6aDc3VUVQeEEKLS0tIElpNzdJ | ||
| 8 | dmZjVG56K2xoeUhkTEsxL2VDOE5yQzJoWUdIUm9xSUozWUtwd28KZJ/fr+jTJ6Od | ||
| 9 | Xh0BtDDaWn4OhWGZoz5wEfZm5hGZ+ZXZfWLmQWt2IS6NDlAFWFTa4JLuJJiP9jIG | ||
| 10 | t/kOPuoKyg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r34801012.ct b/reveal/v5-000015/r34801012.ct new file mode 100644 index 0000000..12a3217 --- /dev/null +++ b/reveal/v5-000015/r34801012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r34801012.nostr.json b/reveal/v5-000015/r34801012.nostr.json new file mode 100644 index 0000000..5305846 --- /dev/null +++ b/reveal/v5-000015/r34801012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODAxMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcmIwbDAwbUZnVDlkamdIcW83TkVyZlJiRWE3akdiTzc2OW96bzk4\nejdPWFZOVEVaM0ttelNvbDRnUUhkTkd3dwpBRVBZamtrRG9WNWZtcXNpSjEyTDVL\nQ1ZLSjRWVFloblErT0hCWDdGUmhHSHVTYWIyZEJNbk13NFlzUWlubEdQCkV3ai9s\nWVVSSE8xMzRJVmN1eW1WVnBmeUFab2hzdjFJS3Y2cHFWRXd6QmsKLS0tIFVEVHI1\nZG1ZOE9NL1BIeE0rejd6dWt2d3dWWVJVekdoTDk1UEVJVytiSkEK8sAqZ2bpynaO\n6OJBNVZ28nHhE2kqrtknDo2FyZCxR5iIlDfFKTV1zfhBDCF89UYZEZy4sMb/Wk7b\nUFzxiwgLXQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34801012"],["reveal_at","2026-12-14T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","e40f7ceb57652cf64b2547e3b328a4b35cd6aab94467cb0573545bc0968b5b55"],["ct","b79a48d2552d5028daac85242ebac48449468e42167bbbd166e41212b7dfc033"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r34801012.tlock b/reveal/v5-000015/r34801012.tlock new file mode 100644 index 0000000..6fe4629 --- /dev/null +++ b/reveal/v5-000015/r34801012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODAxMDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcmIwbDAwbUZnVDlkamdIcW83TkVyZlJiRWE3akdiTzc2OW96bzk4 | ||
| 5 | ejdPWFZOVEVaM0ttelNvbDRnUUhkTkd3dwpBRVBZamtrRG9WNWZtcXNpSjEyTDVL | ||
| 6 | Q1ZLSjRWVFloblErT0hCWDdGUmhHSHVTYWIyZEJNbk13NFlzUWlubEdQCkV3ai9s | ||
| 7 | WVVSSE8xMzRJVmN1eW1WVnBmeUFab2hzdjFJS3Y2cHFWRXd6QmsKLS0tIFVEVHI1 | ||
| 8 | ZG1ZOE9NL1BIeE0rejd6dWt2d3dWWVJVekdoTDk1UEVJVytiSkEK8sAqZ2bpynaO | ||
| 9 | 6OJBNVZ28nHhE2kqrtknDo2FyZCxR5iIlDfFKTV1zfhBDCF89UYZEZy4sMb/Wk7b | ||
| 10 | UFzxiwgLXQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r34829812.ct b/reveal/v5-000015/r34829812.ct new file mode 100644 index 0000000..f4e537c --- /dev/null +++ b/reveal/v5-000015/r34829812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r34829812.nostr.json b/reveal/v5-000015/r34829812.nostr.json new file mode 100644 index 0000000..9e6d85d --- /dev/null +++ b/reveal/v5-000015/r34829812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODI5ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa1dTUGxWRFlZbEtFakxyMEdybkxRejhDV1Z0TVFrYlBMVTNkMDlq\nTkpYc2hKS1l1Vlo5VENidlJOMFVmQ3JHagpESzZVZXpVTWlnazRiM0pTZVlWRTV1\nMUlod21kU2VpRmN2RkFTMVdZVEhMRk0wRUcxVjEwSHh1YzVSNzU3M0RPCnJySEtY\nY3dBRXFBOTcycVJaL1R6c2Z4RGlmNTEyUVZkbldrMkpCS2docEkKLS0tIHZTMmN2\nK0pCQVM1VWlSOVhIQlJSOUNtT3R0VDdvejE0S3lubXV2VDlDZXMKgHW0PZmYwhKb\nzA5/CMhlyk/7MgSnayJaFMBHEzMJT9JHJhKg+UFF0iuTBQ2szs5E0JlVaIBZNHpi\ndcDAuXyCMg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34829812"],["reveal_at","2026-12-15T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","ac9dfa6db527551f00079b1c80d21271bd186e58350fb09b147ad5c24ec3265a"],["ct","08d45335183d1ff228be045a1f1f70490869a8e9ae6f4bd73e1bcda6f7a76e42"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r34829812.tlock b/reveal/v5-000015/r34829812.tlock new file mode 100644 index 0000000..4fa1b37 --- /dev/null +++ b/reveal/v5-000015/r34829812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODI5ODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKa1dTUGxWRFlZbEtFakxyMEdybkxRejhDV1Z0TVFrYlBMVTNkMDlq | ||
| 5 | TkpYc2hKS1l1Vlo5VENidlJOMFVmQ3JHagpESzZVZXpVTWlnazRiM0pTZVlWRTV1 | ||
| 6 | MUlod21kU2VpRmN2RkFTMVdZVEhMRk0wRUcxVjEwSHh1YzVSNzU3M0RPCnJySEtY | ||
| 7 | Y3dBRXFBOTcycVJaL1R6c2Z4RGlmNTEyUVZkbldrMkpCS2docEkKLS0tIHZTMmN2 | ||
| 8 | K0pCQVM1VWlSOVhIQlJSOUNtT3R0VDdvejE0S3lubXV2VDlDZXMKgHW0PZmYwhKb | ||
| 9 | zA5/CMhlyk/7MgSnayJaFMBHEzMJT9JHJhKg+UFF0iuTBQ2szs5E0JlVaIBZNHpi | ||
| 10 | dcDAuXyCMg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r34945012.ct b/reveal/v5-000015/r34945012.ct new file mode 100644 index 0000000..9409cde --- /dev/null +++ b/reveal/v5-000015/r34945012.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r34945012.nostr.json b/reveal/v5-000015/r34945012.nostr.json new file mode 100644 index 0000000..a96899f --- /dev/null +++ b/reveal/v5-000015/r34945012.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTQ1MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcy9GbXJmMThySDd3cllUbFJtZG5tSDB0ejQyOG1NM0l4d3pEeHRI\nWmw2NDBsVXJMckRRMFNHQXFkbEduLzIrWQpCNnhiQlI5Zlh2azVEelQydkNsVWtR\nbTZtME9JU2Y0b0VEUlRXM3psYmUyOEl5UWY1ZmhHSjVmRmFUL25ud0p3CjhYVWNP\nQ3Z5aTBxTTJXdDl0VGlveVRSSXZMaUVETHNSZGp4RmhLWnVzUlkKLS0tIGxEVFJw\nUHhTamlsUVA2Ukp3aTgrRDV1dEc2NEVVVXZnSXlkMGVRMVgzYzAKJaLTOVx3+1/9\nb3h3hZcsEu2+af74eoVHHUm1RcAeSuQVDy62lcWj0wDW1ZzVe8XjaPZ4PrZDuMOv\n3Me67CFSQQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34945012"],["reveal_at","2026-12-19T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","64b263716ccff5b2dc029602c3da67c956898604f155bf3ea83449384d64bdef"],["ct","c81586ca65094a1d14e7f0e112d6e54297051e630d6270313ff693040a3d5c42"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r34945012.tlock b/reveal/v5-000015/r34945012.tlock new file mode 100644 index 0000000..b50b53b --- /dev/null +++ b/reveal/v5-000015/r34945012.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTQ1MDEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcy9GbXJmMThySDd3cllUbFJtZG5tSDB0ejQyOG1NM0l4d3pEeHRI | ||
| 5 | Wmw2NDBsVXJMckRRMFNHQXFkbEduLzIrWQpCNnhiQlI5Zlh2azVEelQydkNsVWtR | ||
| 6 | bTZtME9JU2Y0b0VEUlRXM3psYmUyOEl5UWY1ZmhHSjVmRmFUL25ud0p3CjhYVWNP | ||
| 7 | Q3Z5aTBxTTJXdDl0VGlveVRSSXZMaUVETHNSZGp4RmhLWnVzUlkKLS0tIGxEVFJw | ||
| 8 | UHhTamlsUVA2Ukp3aTgrRDV1dEc2NEVVVXZnSXlkMGVRMVgzYzAKJaLTOVx3+1/9 | ||
| 9 | b3h3hZcsEu2+af74eoVHHUm1RcAeSuQVDy62lcWj0wDW1ZzVe8XjaPZ4PrZDuMOv | ||
| 10 | 3Me67CFSQQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r35578612.ct b/reveal/v5-000015/r35578612.ct new file mode 100644 index 0000000..38ca0bc --- /dev/null +++ b/reveal/v5-000015/r35578612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r35578612.nostr.json b/reveal/v5-000015/r35578612.nostr.json new file mode 100644 index 0000000..62becc0 --- /dev/null +++ b/reveal/v5-000015/r35578612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NTc4NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaytyOXVUYWs5aFdMdkFlc2c2OVFPNDZCWHhZQWZIMjNkZzBJR0ZU\nTFh1TEJnamI4bXhsVXR2azRuQTgxREIvUApFRnB1VXZhc3VaNmcvaXVzTFlrVU9t\nZThJblZUTVhKK1JmVmlNTGlwbFFiM1ZOOW5JUUlmc0crbFEzWkxKOVRiClZ2NWFQ\nSHlRT1VJa0d0WmhyeXB5dm4xRFByS21Ga3FrYXVhOXFnVUdRTUkKLS0tIG1oKzNK\ncHRvU3JtSkNjUVdqRjd6eU9mTzR6clJ2R3VWWHNZQm1WSExXc0kKibm6m6xAgtAc\nVlndR4cJmTBOELcNlABmm6Oy3DkVTvrKyOipuliz2tLx+D1RejzTpw/dC1MVSCoW\noIidFZk+3g==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35578612"],["reveal_at","2027-01-10T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","94b6250528065f08b85d7bbc158ebbf54f45aeb55cf9cdfee6908be50eb4638c"],["ct","b59293fbddc0f440032b280497d889d731127e8ff0d9d91180d48560c3dcabcc"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r35578612.tlock b/reveal/v5-000015/r35578612.tlock new file mode 100644 index 0000000..e5f04d0 --- /dev/null +++ b/reveal/v5-000015/r35578612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NTc4NjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKaytyOXVUYWs5aFdMdkFlc2c2OVFPNDZCWHhZQWZIMjNkZzBJR0ZU | ||
| 5 | TFh1TEJnamI4bXhsVXR2azRuQTgxREIvUApFRnB1VXZhc3VaNmcvaXVzTFlrVU9t | ||
| 6 | ZThJblZUTVhKK1JmVmlNTGlwbFFiM1ZOOW5JUUlmc0crbFEzWkxKOVRiClZ2NWFQ | ||
| 7 | SHlRT1VJa0d0WmhyeXB5dm4xRFByS21Ga3FrYXVhOXFnVUdRTUkKLS0tIG1oKzNK | ||
| 8 | cHRvU3JtSkNjUVdqRjd6eU9mTzR6clJ2R3VWWHNZQm1WSExXc0kKibm6m6xAgtAc | ||
| 9 | VlndR4cJmTBOELcNlABmm6Oy3DkVTvrKyOipuliz2tLx+D1RejzTpw/dC1MVSCoW | ||
| 10 | oIidFZk+3g== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r35693812.ct b/reveal/v5-000015/r35693812.ct new file mode 100644 index 0000000..b5d00da --- /dev/null +++ b/reveal/v5-000015/r35693812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r35693812.nostr.json b/reveal/v5-000015/r35693812.nostr.json new file mode 100644 index 0000000..e7e9f1a --- /dev/null +++ b/reveal/v5-000015/r35693812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NjkzODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa25rdFZFOVdqL2VIdXRVUjA2SVhoUFd0MnNGUnoxWVNRcjdYSGhZ\nUWl4Y1J6UlkxT0ZYWTlNZmN1L0FUbzVvNQpDcHNqTjVIQ0tjL3EwNnEvNlFtcmxp\nS3gyOTM4andIcW9iYU45YWFTZER2Nko5NXI4TUJrTmF6SktXZWNQUk1PCklQamRO\nRTFXbm1EV0hxMlRBS0hqeEdkMnVrWUl4N0doTmw1N2NIWFFsNUEKLS0tIG1OMG5G\nR1d1ZFo3TmRtREtaRXJuTUoxeXI5TDJ2V0M2cHhvV1p6eENTSjgKR2U+cbEEEn+I\ndHxZ3ehCDh1qe7CysHKNeSnbKOxL+76TqzRESOvCtXAvUjB7v6nMd1pzSYaKSepP\n7U7ZYAfuMA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35693812"],["reveal_at","2027-01-14T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","4a021ae959af427b51d6e700fa8cc6f0fbc7f419b498fe6deff8da011b07dc18"],["ct","40dcfd86892743e3d9eb5517b32342795c7669e9da42fe7a1c73309a28123e3a"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r35693812.tlock b/reveal/v5-000015/r35693812.tlock new file mode 100644 index 0000000..03e2b4d --- /dev/null +++ b/reveal/v5-000015/r35693812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NjkzODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKa25rdFZFOVdqL2VIdXRVUjA2SVhoUFd0MnNGUnoxWVNRcjdYSGhZ | ||
| 5 | UWl4Y1J6UlkxT0ZYWTlNZmN1L0FUbzVvNQpDcHNqTjVIQ0tjL3EwNnEvNlFtcmxp | ||
| 6 | S3gyOTM4andIcW9iYU45YWFTZER2Nko5NXI4TUJrTmF6SktXZWNQUk1PCklQamRO | ||
| 7 | RTFXbm1EV0hxMlRBS0hqeEdkMnVrWUl4N0doTmw1N2NIWFFsNUEKLS0tIG1OMG5G | ||
| 8 | R1d1ZFo3TmRtREtaRXJuTUoxeXI5TDJ2V0M2cHhvV1p6eENTSjgKR2U+cbEEEn+I | ||
| 9 | dHxZ3ehCDh1qe7CysHKNeSnbKOxL+76TqzRESOvCtXAvUjB7v6nMd1pzSYaKSepP | ||
| 10 | 7U7ZYAfuMA== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r36730612.ct b/reveal/v5-000015/r36730612.ct new file mode 100644 index 0000000..db7eafe --- /dev/null +++ b/reveal/v5-000015/r36730612.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r36730612.nostr.json b/reveal/v5-000015/r36730612.nostr.json new file mode 100644 index 0000000..cde73cb --- /dev/null +++ b/reveal/v5-000015/r36730612.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2NzMwNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKdG9ueWlSbG45NmVUcE9XcXJXRWd0a2NpeUQra2VRT1RwLzNrVjJt\nR1E0NFhpbkF5UVhxREhvRkREN3dnbGlibQpCVkE2SzNLbEVWNUp5cWtmSzU3U0h1\neE5Pa2lCcjE4M1ZnNDgwczNVOC9LdmRnLzNZMWVGVE5Oa094RVBldk5mCjRmeEhk\nSG9Ma1h3VENGaHZkUEI3YnhoWGlBdEV6OEFwZytGZmFCdXlTRDAKLS0tIGxVZG82\nNDJ4VlBMSWYrckd0WFFUM0FYcHp3Zlg5Qzl5M2tFam9SM0tTTTgK5yd3hskuhqpc\nRCvqUEGc7bJUJz1vJAENWVeNeCieSm+3fYr4SbNLaoAlZUSDBRkf0rRmjVGms+CP\npAwv6T2ZnQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36730612"],["reveal_at","2027-02-19T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","4f3399b9d34d0bed43af4eb49e57b165aa622c4fec5ba1d18ef7849995f457c2"],["ct","0559ae1b751959f403772e7b11e221fb9f285616bcae5ce780a4d23ca74c6104"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r36730612.tlock b/reveal/v5-000015/r36730612.tlock new file mode 100644 index 0000000..1ed58d6 --- /dev/null +++ b/reveal/v5-000015/r36730612.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2NzMwNjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKdG9ueWlSbG45NmVUcE9XcXJXRWd0a2NpeUQra2VRT1RwLzNrVjJt | ||
| 5 | R1E0NFhpbkF5UVhxREhvRkREN3dnbGlibQpCVkE2SzNLbEVWNUp5cWtmSzU3U0h1 | ||
| 6 | eE5Pa2lCcjE4M1ZnNDgwczNVOC9LdmRnLzNZMWVGVE5Oa094RVBldk5mCjRmeEhk | ||
| 7 | SG9Ma1h3VENGaHZkUEI3YnhoWGlBdEV6OEFwZytGZmFCdXlTRDAKLS0tIGxVZG82 | ||
| 8 | NDJ4VlBMSWYrckd0WFFUM0FYcHp3Zlg5Qzl5M2tFam9SM0tTTTgK5yd3hskuhqpc | ||
| 9 | RCvqUEGc7bJUJz1vJAENWVeNeCieSm+3fYr4SbNLaoAlZUSDBRkf0rRmjVGms+CP | ||
| 10 | pAwv6T2ZnQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r36788212.ct b/reveal/v5-000015/r36788212.ct new file mode 100644 index 0000000..0612802 --- /dev/null +++ b/reveal/v5-000015/r36788212.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r36788212.nostr.json b/reveal/v5-000015/r36788212.nostr.json new file mode 100644 index 0000000..d657ca5 --- /dev/null +++ b/reveal/v5-000015/r36788212.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2Nzg4MjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKZ3BIbXZ1YXhGL3JUNVZZWmtmK1ZNQUtENGpSU09MbndRZlU5cU1x\nNVQ1eVdIcUh1QlA3U2RvdnpNNmNBaG4ybApDelk1QlRleXRyRmd6VXZ6U3JFUjlH\ndnFZZ2o3dmREVkdHaDUxUHB1ZHIzUmpGd0NxU3c3NkVKS3drcGt3Y2h1Clo3TWVt\nM1RHMjJhRUFCWFlWUkl1SWtrNDdHQVhCQStCM2dsbWdINWltMmcKLS0tIEV5Z3Rx\nL09JVnZSRUdXQmFad2NOQ2R5L3lpalRzajg4alc3aFNSTnJXMjAKOSv89M/Ib20i\n3FLuKon6sYNz1XIw416JZ7GkZ9/Qs3nSGbluEKnMRN5CMOybbh8vqawV8ZesJV8L\nKnc8tETixQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36788212"],["reveal_at","2027-02-21T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","5d325e737f9c7eaf89a1e91961f6b05182489d8c8f8adb352287e44db80d0ceb"],["ct","09e2645bdaea0695b0d46fcce19cdb530dee5153476add7377edc542ac44c826"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r36788212.tlock b/reveal/v5-000015/r36788212.tlock new file mode 100644 index 0000000..7806c0e --- /dev/null +++ b/reveal/v5-000015/r36788212.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2Nzg4MjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKZ3BIbXZ1YXhGL3JUNVZZWmtmK1ZNQUtENGpSU09MbndRZlU5cU1x | ||
| 5 | NVQ1eVdIcUh1QlA3U2RvdnpNNmNBaG4ybApDelk1QlRleXRyRmd6VXZ6U3JFUjlH | ||
| 6 | dnFZZ2o3dmREVkdHaDUxUHB1ZHIzUmpGd0NxU3c3NkVKS3drcGt3Y2h1Clo3TWVt | ||
| 7 | M1RHMjJhRUFCWFlWUkl1SWtrNDdHQVhCQStCM2dsbWdINWltMmcKLS0tIEV5Z3Rx | ||
| 8 | L09JVnZSRUdXQmFad2NOQ2R5L3lpalRzajg4alc3aFNSTnJXMjAKOSv89M/Ib20i | ||
| 9 | 3FLuKon6sYNz1XIw416JZ7GkZ9/Qs3nSGbluEKnMRN5CMOybbh8vqawV8ZesJV8L | ||
| 10 | Knc8tETixQ== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r36845812.ct b/reveal/v5-000015/r36845812.ct new file mode 100644 index 0000000..f92ef94 --- /dev/null +++ b/reveal/v5-000015/r36845812.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r36845812.nostr.json b/reveal/v5-000015/r36845812.nostr.json new file mode 100644 index 0000000..babd1a6 --- /dev/null +++ b/reveal/v5-000015/r36845812.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODQ1ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcmdwTWRnOFcwV3RaVXdxTGdjRWNaQTk1YlBCTFQydTY4Vm1LcW1V\nYUVuamlRSkZnRmxxQWZEanRXTXVES3RuZQpGNnEvVVAxbTcwU0U4SEJtQ1NCYWh0\nOFhMTFFxS2l2RkNoTys4VUtPZzRxTUg4OU1jcy9nRm5kczA5UEJzak1EClkyMFFj\na2JqcmIrYTV5MXI0OHExdC9oWDJxUW0vTC9vMXVNeEFtOXZ6M1kKLS0tIGxVQXRZ\nV0t0aW5RNFByd0RQUU11eUhCLzVScXBCaFRqcUhWd2xoazJhWm8KFpmlOcQ5dQxN\nFoXcIzL1qYrQMgldWinBE5GPYZvsa/xzPnpk926XjaerddUFpPvhYUTba4vuoxjO\nBfcH55pWQA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36845812"],["reveal_at","2027-02-23T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","bb98419ca3bdaf94a26feac3d847176f2e8624f0c4c7722871ba1abb51893a0f"],["ct","53ec7b623272057a70d54cc807613369b8952eb38a21e0c1f1198a075b738e39"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r36845812.tlock b/reveal/v5-000015/r36845812.tlock new file mode 100644 index 0000000..29fad50 --- /dev/null +++ b/reveal/v5-000015/r36845812.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODQ1ODEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKcmdwTWRnOFcwV3RaVXdxTGdjRWNaQTk1YlBCTFQydTY4Vm1LcW1V | ||
| 5 | YUVuamlRSkZnRmxxQWZEanRXTXVES3RuZQpGNnEvVVAxbTcwU0U4SEJtQ1NCYWh0 | ||
| 6 | OFhMTFFxS2l2RkNoTys4VUtPZzRxTUg4OU1jcy9nRm5kczA5UEJzak1EClkyMFFj | ||
| 7 | a2JqcmIrYTV5MXI0OHExdC9oWDJxUW0vTC9vMXVNeEFtOXZ6M1kKLS0tIGxVQXRZ | ||
| 8 | V0t0aW5RNFByd0RQUU11eUhCLzVScXBCaFRqcUhWd2xoazJhWm8KFpmlOcQ5dQxN | ||
| 9 | FoXcIzL1qYrQMgldWinBE5GPYZvsa/xzPnpk926XjaerddUFpPvhYUTba4vuoxjO | ||
| 10 | BfcH55pWQA== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/r37940212.ct b/reveal/v5-000015/r37940212.ct new file mode 100644 index 0000000..1385688 --- /dev/null +++ b/reveal/v5-000015/r37940212.ct | |||
| Binary files differ | |||
diff --git a/reveal/v5-000015/r37940212.nostr.json b/reveal/v5-000015/r37940212.nostr.json new file mode 100644 index 0000000..3add4e3 --- /dev/null +++ b/reveal/v5-000015/r37940212.nostr.json | |||
| @@ -0,0 +1 @@ | |||
| {"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3OTQwMjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKckM4TytSTUV2MGNkNUxLclRUMEdTVnNnNFl4MEN0bXp5TVlvTmg5\nczVxVzd3cmNSTU1STFdBVDBJemgydi9WWQpBZEV3VldaUGJ3T2V4U2FPcnhES2o2\nZXhoc2VTVEEwSkp6NVpqb2N5aGI2SUwwUllNNlluRzllVFhnU2w5eEFVCjJYa053\nNFM1Mk1xN3NiRUJUWGN2R2xXL3ZUMlhUaS84VkRoWG0zQVV3RlkKLS0tIGhVcXZQ\nOEtDZ2Z4czJ0eXF2OFhZdktLVVhMaWc1WjhXeFJKK21IRjlyYVkKu27BLhG/kxBT\nALYKV8f+bufMZ56Nh5x4VPUDmGdCaZk0bHlxj2WlHhUIBweAVhBElFVLido65hlS\nKRLs5v/uBg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","37940212"],["reveal_at","2027-04-02T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","170514d02dccd65fe1cc5ef497f4a1633f3bc7321e6d10f1174cbecefce3e1a9"],["ct","f486c8f779359b30b552d1d57abf9929f4db38793105e4040bdb280885f520d8"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} | |||
diff --git a/reveal/v5-000015/r37940212.tlock b/reveal/v5-000015/r37940212.tlock new file mode 100644 index 0000000..c770dc9 --- /dev/null +++ b/reveal/v5-000015/r37940212.tlock | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | -----BEGIN AGE ENCRYPTED FILE----- | ||
| 2 | YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3OTQwMjEyIDUyZGI5YmE3 | ||
| 3 | MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw | ||
| 4 | MGM4NGU5NzEKckM4TytSTUV2MGNkNUxLclRUMEdTVnNnNFl4MEN0bXp5TVlvTmg5 | ||
| 5 | czVxVzd3cmNSTU1STFdBVDBJemgydi9WWQpBZEV3VldaUGJ3T2V4U2FPcnhES2o2 | ||
| 6 | ZXhoc2VTVEEwSkp6NVpqb2N5aGI2SUwwUllNNlluRzllVFhnU2w5eEFVCjJYa053 | ||
| 7 | NFM1Mk1xN3NiRUJUWGN2R2xXL3ZUMlhUaS84VkRoWG0zQVV3RlkKLS0tIGhVcXZQ | ||
| 8 | OEtDZ2Z4czJ0eXF2OFhZdktLVVhMaWc1WjhXeFJKK21IRjlyYVkKu27BLhG/kxBT | ||
| 9 | ALYKV8f+bufMZ56Nh5x4VPUDmGdCaZk0bHlxj2WlHhUIBweAVhBElFVLido65hlS | ||
| 10 | KRLs5v/uBg== | ||
| 11 | -----END AGE ENCRYPTED FILE----- | ||
diff --git a/reveal/v5-000015/seal.json b/reveal/v5-000015/seal.json new file mode 100644 index 0000000..fc56c17 --- /dev/null +++ b/reveal/v5-000015/seal.json | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | { | ||
| 2 | "algorithm": "sha256-live-v5", | ||
| 3 | "anchor_ref": "sha256:2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28", | ||
| 4 | "covers_after": "2026-10-09T16:31:25.305817Z", | ||
| 5 | "covers_through": "2026-10-09T21:20:37.989880Z", | ||
| 6 | "digest": "2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28", | ||
| 7 | "follows_seq": 45, | ||
| 8 | "n_forecasts": 1227, | ||
| 9 | "n_groups": 16, | ||
| 10 | "n_withheld": 1227, | ||
| 11 | "prev_digest": "11293db524a9ce788df948c5347c7f627a7649e0718bce967ae5d32261fe19ba", | ||
| 12 | "prev_seq": 14, | ||
| 13 | "sealed_at": "2026-10-09T21:21:07.305632Z", | ||
| 14 | "seq": 15, | ||
| 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 | } | ||