TgWitness / ডকুমেন্টেশন

ডকুমেন্টেশন / 08

প্রমাণ কীভাবে কাজ করে দেখুন

একটি বার্তা পরিবর্তন হতে পারে। আপনি যা পর্যবেক্ষণ করেছেন তার রেকর্ড যাচাইযোগ্য রাখা উচিত।

নিচে দুটি ছোট পরীক্ষা অন্বেষণ করুন। এগুলো কাল্পনিক বার্তা ব্যবহার করে, আপনার ব্রাউজারেই থাকে এবং কখনই টেলিগ্রামের সাথে সংযুক্ত হয় না।

একটি বার্তা, তিনটি পর্যবেক্ষণ

যখন টেলিগ্রাম একটি নতুন বার্তা, একটি সম্পাদনা বিজ্ঞপ্তি এবং একটি মুছে ফেলার বিজ্ঞপ্তি পাঠায়, তখন সংগ্রহকারী তিনটি পৃথক পর্যবেক্ষণ যোগ করে। সম্পাদনা প্রথম রেকর্ডটিকে প্রতিস্থাপন করে না। মুছে ফেলার বিজ্ঞপ্তিটি এটিকে মুছে ফেলে না।

০১ / বার্তা যাত্রাউদাহরণস্বরূপ ক্রম
Telegram delivers an update to the collector, which appends a journal record. টেলিগ্রামসংগ্রাহকজার্নাল আপডেট →সংযোজন →
বর্তমান চ্যাট ভিউ বার্তা #৪২
বার্তা মুছে ফেলা হয়েছে

বার্তাটি চ্যাট ভিউ থেকে অদৃশ্য হয়ে গেছে।

পর্যবেক্ষণ জার্নাল ৩টি রেকর্ড
  1. 01
    message.new

    ১০:০০ টায় মিলিত হন

    ✓
  2. 02
    message.edited

    ১১:০০ টায় মিলিত হোন

    ✓
  3. 03
    message.deleted

    #৪২-এর মুছে ফেলার বিজ্ঞপ্তি

    ✓

তিনটি পর্যবেক্ষণই জার্নালে রাখা হয়েছে।

ইতিমধ্যেই নির্বাচিত একটি উৎসের জন্য সরলীকৃত পথ। কার্যক্রমিক রেকর্ডগুলোও প্রকৃত জার্নাল শেয়ার করে। ক্যাপচার নির্ভর করে অ্যাকাউন্টটি কী দেখতে পারে এবং টেলিগ্রাম কী সরবরাহ করে তার উপর।

একটি মুছে ফেলার বিজ্ঞপ্তি নির্ভরযোগ্য মুছে ফেলার সময় বা বার্তাটি কে মুছেছে তা কোনোটিই সরবরাহ করে না। এই মানগুলো অজানা রেখে দিলে পর্যবেক্ষণ এবং অনুমানের মধ্যে পার্থক্য বজায় থাকে।

একটি রেকর্ড পরিবর্তন করুন। হ্যাশ অনুসরণ করুন।

প্রতি রেকর্ডে পূর্ববর্তী রেকর্ডের হ্যাশ থাকে। এর নিজস্ব হ্যাশ ইভেন্ট ক্ষেত্রগুলো, সেই লিঙ্কসহ, আচ্ছাদন করে। বাহ্যিকভাবে সংরক্ষিত একটি চেকপয়েন্ট নির্দিষ্ট জার্নাল দৈর্ঘ্য এবং হেড হ্যাশকে পিন করে।

০২ / হ্যাশ-চেইন স্যান্ডবক্সবাস্তব SHA-256 · নমুনা রেকর্ডসমূহ
রেকর্ড ০১বার্তা প্রাপ্তh₁ = SHA-256(e₁)৬৪টি শূন্যের লিঙ্ক
রেকর্ড ০২১১:০০ টায় মিলিত হোনh₂ = SHA-256(e₂)h₁ অন্তর্ভুক্ত
রেকর্ড ০৩মোছা হয়েছেh₃ = SHA-256(e₃)h₂ অন্তর্ভুক্ত
অন্যত্র রাখা হয়েছে৩টি রেকর্ড · হেড h₃এই স্থির সীমাটি সরবরাহিত জার্নালের সাথে তুলনা করুন।

ইভেন্ট পরিবর্তন করলে তার হ্যাশ পরিবর্তিত হয়। চেইন পুনর্নির্মাণ করলে এর হেড পরিবর্তিত হয়। টেইল অপসারণ করলে এটি সংরক্ষিত চেকপয়েন্টের তুলনায় ছোট হয়ে যায়।

এই স্যান্ডবক্স হ্যাশ গণনা করে, স্বাক্ষর নয়। প্রকৃত যাচাইকারী প্রতিটি ইভেন্টের Ed25519 স্বাক্ষর, ক্রম এবং লিঙ্কও যাচাই করে। শুধুমাত্র হ্যাশ পুনর্নির্মাণ করে বিশ্বাসযোগ্য কী-এর অধীনে বৈধ স্বাক্ষর তৈরি করা যায় না।

বাস্তব নিয়মগুলো, কয়েকটি লাইনে

হ্যাশ + স্বাক্ষর
h0 = 064
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))

C সিরিয়ালে নয়টি ইভেন্ট ফিল্ডকে UTF-8 JSON হিসেবে রূপান্তর করে: সাজানো কী, অতিরিক্ত ফাঁকা স্থান নেই, ASCII এস্কেপিং নেই এবং NaN/ইনফিনিটি নেই। ইভেন্টের previous_hash হল hi−1। প্রদর্শিত h0 মানে 64টি শূন্য অক্ষর; স্বাক্ষরগুলো 32টি কাঁচা ডাইজেস্ট বাইটকে আচ্ছাদন করে।

নয়টি ফিল্ড হলো seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload এবং previous_hash। এটি TgWitness-এর ডকুমেন্টেড JSON এনকোডিং; হ্যাশ এবং স্বাক্ষর নিজেই হ্যাশ-ইনপুট ফিল্ড নয়।

রিটেইন্ড চেকপয়েন্ট
Nexport ≥ Ncheckpoint
hexport[Ncheckpoint] = Hcheckpoint

পিন করা কালেক্টর কী-এর অধীনে চেকপয়েন্ট স্বাক্ষর যাচাই করুন, তারপর যাচাইকৃত জার্নালের সীমানার সাথে এর মিল পরীক্ষা করুন। পরবর্তী রপ্তানিতে আরও রেকর্ড থাকতে পারে; তবুও এটি পূর্ববর্তী চেকপয়েন্টে মিল থাকতে হবে।

তিনটি প্রশ্ন, তিনটি ভিন্ন পরীক্ষা

একটি মিলিত হ্যাশ চেইন অখণ্ডতার একটি প্রশ্নের উত্তর দেয়। এটি সম্পূর্ণ টেলিগ্রাম ডেলিভারি, বার্তার সত্যতা বা স্বতন্ত্রভাবে বিশ্বাসযোগ্য পর্যবেক্ষণ সময় প্রতিষ্ঠা করে না।

অধিগ্রহণের পর থেকে মামলা প্যাকেজ পর্যন্ত সম্পূর্ণ হিসাব তদন্ত অনুসরণ করুন।