Dokumentatsiya / 08
Dalillar qanday ishlashini ko'ring
Xabar o'zgarishi mumkin. Siz kuzatgan narsalarning yozuvi tekshirib ko'rilishi mumkin bo'lib qolishi kerak.
Quyida ikkita kichik tajribani o'rganing. Ular badiiy xabarlarni ishlatadi, brauzeringizda qoladi va hech qachon Telegramga ulanmaydi.
Bir xabar, uch kuzatuv
Telegram yangi xabar, tahrir va o'chirish bildirishnomasini yetkazganda, yig'uvchi uchta alohida kuzatuvni qo'shadi. Tahrir birinchi yozuvni almashtirmaydi. O'chirish bildirishnomasi uni o'chirib tashlamaydi.
Xabar suhbat ko'rinishidan yo'qoldi.
- 01✓
message.new10:00 da uchrashing
- 02✓
message.edited11:00 da uchrashing
- 03✓
message.deleted#42 uchun o'chirish bildirishnomas
Uchala qabul qilingan kuzatuvlar jurnalda saqlanadi.
O'chirish bildirishnomasi na ishonchli o'chirish vaqtini, na xabarni o'chirgan shaxsni ko'rsatmaydi. Ushbu qiymatlarni noma'lum saqlash kuzatuv bilan taxmin o'rtasidagi farqni saqlab qoladi.
Yozuvni o'zgartiring. Hashni kuzating.
Har bir yozuv oldingi yozuvning hashini o'z ichiga oladi. Uning o'z hashi, shu havolani ham o'z ichiga olgan holda, voqea maydonlarini qamrab oladi. Tashqarida saqlanadigan tekshiruv nuqtasi jurnalning ma'lum uzunligi va boshlang'ich hashini belgilaydi.
h₁ = SHA-256(e₁)64 ta nolga havolalarh₂ = SHA-256(e₂)h₁ ni o'z ichiga oladih₃ = SHA-256(e₃)h₂ ni o'z ichiga oladih₃Ushbu belgilangan chegarani taqdim etilgan jurnal bilan solishtiring.Voqeani o'zgartirish uning hashini o'zgartiradi. Zanjirni qayta qurish uning boshini o'zgartiradi. Oxirini olib tashlash uni saqlangan tekshiruv nuqtasidan qisqaroq qiladi.
2-yozuvni va to'liq hashlarni tekshiring
Bu misolda ko'rsatilgan aniq UTF-8 JSON hashi. Qadriyatlar tasodifiy; to'qqizta maydon va serializatsiya jurnal formatiga mos keladi.
- Saqlangan yozuv 2 xesh
- Yozuv 2 hashni qayta hisobladi
Asl qoidalar, bir necha satrda
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C to'qqizta voqea maydonini UTF-8 JSON shaklida serializatsiya qiladi: tartiblangan kalitlar, ortiqcha bo'shliqlar yo'q, ASCII qochirish yo'q va NaN/cheksizlik yo'q. Voqeaning previous_hash hi−1 ga teng. Ko'rsatilgan h0 esa 64 ta nol belgisini anglatadi; imzo esa 32 ta xom digest baytlarini qamrab oladi.
To'qqizta maydon: seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload va previous_hash. Bu TgWitness'ning hujjatlashtirilgan JSON kodlashidir; hash va imzo o'zlari hash-kirish maydonlari emas.
hexport[Ncheckpoint] = Hcheckpoint
Mahkamlangan yig'uvchi kalit ostidagi tekshiruv nuqtasi imzosini tasdiqlang, so'ng uning chegarasini tasdiqlangan jurnal bilan solishtiring. Keyingi eksport ko'proq yozuvlarni o'z ichiga olishi mumkin; u baribir avvalgi tekshiruv nuqtasida mos kelishi kerak.
Uchta savol, uch xil tekshiruv
Hashlar va imzolarni alohida ishonchli kalitga qarshi tekshiring.
02 / DAVOMIAvval nimalar saqlangan edi?Imzolangan eksportni alohida guvoh tomonidan saqlangan tekshiruv nuqtalari bilan solishtiring.
03 / ETKAZIB BERISHBu test voqealari yetib keldimi?Har bir akkaunt jurnalida amalga oshirilgan jo'natish, tahrirlash va o'chirish harakatlarini mos keltiring.
Mos keladigan xesh zanjiri yaxlitlik savoliga javob beradi. U Telegram xabarining to'liq yetkazilganini, xabar haqiqatini yoki mustaqil ishonchli kuzatuv vaqtini aniqlamaydi.
Hisobni to'liq o'rganishni ma'lumotlarni olishdan ish hujjatlari paketini tayyorlashgacha kuzating.