عباس پالاش
عباس پالاش
خواندن ۵ دقیقه·۵ سال پیش

آشنایی با بیت‌کوین Bitcoin قسمت ۱

چند وقت قبل رامتین عزیز در مورد اینکه بیت‌کوین چیست پرسید. بیت‌کوین ترکیب چند تکنولوژی و مفهوم کامپیوتری و غیرکامپیوتری پیچیده است و برای توضیح باید اول این اجزا را خوب شناخت. یکی از این اجزا مفهومی به نام Blockchain یا زنجیره بلوک‌هاست. برای فهم بلاک‌چین هم باید Hashing یا هش یا درهم‌سازی رو شناخت.

مفهوم Hash مفهومی ریاضی-کامپیوتری است با چند کاربرد متفاوت. به نظرم رسید با طراحی یک بازی با حروف ابجد می‌توان مفهوم هش و مفهوم بلاک‌چین را راحت‌تر توضیح داد. این تلاش، البته تلاش خامی است و مشمول به‌روزشدن و بهتر شدن.

ابجد چیست؟

حتما دیده‌اید که برای ترتیب و شمردن بخش‌های یک مطلب در عوض اعداد ۱،۲،۳ گاهی از الف ب ج د ه استفاده می‌شود

بطور خیلی خلاصه ۲۸ حرف عربی به صورت زیر به یک عدد نسبت داده شده و مساوی با اون عدد قرار گرفته‌اند که در تصویر زیر مشاهده می‌کنید

جدول حروف ابجد و معادل عددی آنها
جدول حروف ابجد و معادل عددی آنها

یعنی حرف الف عدد ۱ و حرف ب عدد ۲ و حرف ج عدد ۳ تا حرف ط که عدد ۹، حرف ی عدد ۱۰ و بعد ۱۰ تا ۱۰ جلو می‌رویم تا به حرف ص که معادل ۹۰ هست می‌رسیم. بعد ق عدد ۱۰۰ و این بار ۱۰۰ تا ۱۰۰ جلو می‌رویم تا به غ که معادل ۱۰۰۰ است می‌رسیم.

با کمک این جدول می‌توانیم برای کلمات معادل عددی بسازیم. مثلا کلمه «علی» از ۳ حرف ساخته شده: ع (۷۰) + ل (۳۰) + ی (۱۰) که میشه ۱۱۰، عبارت «یاعلی» میشه ۱۲۱.

رامتین میشه => ر (۲۰۰) + ا (۱) + ت (۴۰۰) + ی (۱۰) + ن (۵۰) => ۶۶۱

عباس (تشدید ب حساب نمیشه) => ع (۷۰) + ب (۲) + ا (۱) + س (۶۰) => ۱۳۳

برای بخاطر سپردن این ترتیب خاص از حروف عربی اگر حروف رو پشت سرهم بچینیم به این شکل در می‌آیند. «اَبْجَدْ - هَوََّزْ - حُطّی - کَلَمَنْ - سَعْفَصْ - قَرَشَتْ - ثَخَِّذْ - ضَظِغْ»

ابجد در واقع نوعی هش hash هست، در واقع یکی از انواع خیلی قدیمی هش. با جزییات و تاریخ این ابداع و داستان‌های ماورالطبیعه‌ای که برای ابجد و خواصش ذکر می‌شود در اینجا کاری نداریم. یکی از کارهای جالبی که در تاریخ صورت می‌گرفته این بوده که سعی می‌کردند برای تاریخ یک اتفاق یک کلمه یا عبارت پیدا کنند که عدد ابجدش با اون تاریخ برابر باشه. مثلا عبارت عدل مظفر رو در نظر بگیرید.

ع(۷۰) + د (۴) + ل (۳۰) + م (۴۰) + ظ (۹۰۰) + ف (۸۰) + ر (۲۰۰) = ۱۳۲۴

در ۱۳۲۴ قمری یا ۱۲۸۵ خورشیدی فرمان مشروطیت توسط مظفرالدین شاه قاجار صادر شد.

لوح عدل مظفر در میان دو شیر و خورشید در سر در مجلس شورای ملی در اوایل دوران پهلوی جای گرفته‌است
لوح عدل مظفر در میان دو شیر و خورشید در سر در مجلس شورای ملی در اوایل دوران پهلوی جای گرفته‌است

پس در واقع با حروف ابجد ۲ کار می‌شود انجام داد. کلمه یا عبارت رو به معادل عددیش تبدیل کنیم و عملیات برعکس یعنی برای یک عدد کلمه یا عبارت معادل پیدا کنیم. عملیات اول یک جواب قطعی بیشتر ندارد یعنی برای هر کلمه یا عبارت فقط یک عدد ابجد وجود دارد اما ممکن است برای یک عدد چندین کلمه یا عبارت ابجد وجود داشته باشد، مثلا برای عدد ۲۱ می‌شود کلمات معادل زیر را ساخت

۲۱ => هدایا، جایز، کا، وادی، داوود

حروف پارسی ۳۲ حرف است و حروف عربی ۲۸ حرف برای همین ۴ حرف پارسی گ چ پ ژ در جدول ابجد نیستند. برای تطبیق حروف فارسی با ابجد یکی از راه‌ها این است که ارزش حروف گ را با ک (۲۰)، چ را با ج (۳) و پ را با ب (۲) و ژ را با ز (۷) یکی بدانیم. به این ترتیب مثلا کلمه گچی می‌شود گ(۲۰) + چ(۳) + ی (۱۰) = ۳۳

بازی بلاک‌چینی با حروف ابجد

تعداد بازیکن: ۲ و بیشتر (تعداد بیشتر بهتر)

ابتدا نام هر بازیکن تبدیل به حروف ابجد می‌شود مثلا فرض کنید ۳ بازیگر داریم: رامتین، عباس، علی
که به ترتیب رامتین (۶۶۱) عباس (۱۳۳) علی (۱۱۰) هستند. به این اعداد می‌گویم امضاء یا نشان بازیکن.

بازی به این ترتیب هست که یک کلمه برای شروع داریم مثلا «بهار» که ابجدش می‌شود
ب (۲) + ه (۵) + ا (۱) + ر (۲۰۰) => ۲۰۸

وقتی اولین کلمه اعلام می‌شود همه بازیکن‌ها ۲ دقیقه مهلت دارند که کلمه یا عبارتی غیرتکراری به کلمه اعلام شده اضافه کنند که وقتی با امضاء یا نشان خودشون جمع شود، حاصل جمع یک عدد با ۳ صفر در انتها باشد مثلا ۱۰۰۰ یا ۲۰۰۰ یا ۳۰۰۰ یا ۴۷۰۰۰. برنده هر مرحله کسی هست که زودتر بتواند کلمه یا عبارت غیر تکراری پیدا کند.

مثلا رامتین ۶۶۱ هست + بهار ۲۰۸ می‌تواند بگوید «سکان» که ابجدش ۱۳۱ هست و جمع این ۳ می‌شود ۱۰۰۰.

حالا زنجیر کلمات این گونه می‌شود
بهار => سکان (رامتین)
حالا بازی با کلمه سکان ادامه پیدا می‌کند.
برای دور بعد شرط این است که جمع حاصل ۲ تا صفر داشته باشد مثل ۱۰۰، ۲۰۰، ۴۵۰۰

عباس که ابجدش (۱۳۳) هست می‌گوید «کاه» (۳۶) که با سکان (۱۳۱) جمعش می‌شود ۱۳۳+۳۶+۱۳۱ = ۳۰۰

زنجیر کلمات می‌شود

بهار => سکان (رامتین) => کاه (عباس)

حالا بازی با کلمه «کاه» (۳۶) ادامه پیدا می‌کند. این دور شرط آن است حاصل‌جمع ۳ صفر در انتها داشته باشد

علی (۱۱۰) می‌گوید «ضخامت احد» ض (۸۰۰) + خ (۶۰۰) + ا (۱) + م (۴۰) + ت (۴۰۰) + ۱ (۱) + ح (۸) + د (۴) => ۱۸۵۴

که جمع کاه (۳۶) + علی (۱۱۰) + ضخامت احد (۱۸۵۴) می‌شود ۲۰۰۰

زنجیره کلمات می‌شود

بهار => سکان (رامتین) => کاه (عباس) => ضخامت احد (علی)

در این زنجیر شکل گرفته علی نمی‌تواند ادعا کند که کاه را او گفته است چون جمع کلمه کاه+علی+سکان می‌شود ۲۷۷ که شرط ۲ صفر پایانی را ندارد. همچنین عباس نمی‌تواند ادعا کند که سکان را او گفته است، چون جمع بهار+عباس+سکان می‌شود ۴۷۲ و شرط ۳ صفر رو ندارد

البته جلوتر توضیح خواهیم داد که ابجد تابع Hash هش خیلی خوبی از نظر رمزگذاری و رمزگشایی محسوب نمی‌شود. فعلا در حد اشاره می‌شود گفت مثلا ابجد به جایگاه و ترتیب حروف حساس نیست و کلمات «وکیل» و «کیلو» و «کویل» هر ۳ یک عدد ابجد دارند بدون توجه به جای و ترتیب حروف.

ادامه دارد







بیت‌کوینبلاک‌چینbitcoinblockchainابجد
داد جاروبی به دستم آن نگار / گفت کز دریا برانگیزان غبار
شاید از این پست‌ها خوشتان بیاید