مفاهیم برنامه نویسی بلاک چین
قبل از هرچیزی اول باید یکم در مورد هش و digital signature صحبت کنیم.
مکانیزم Digital Signature مکانیزم رمزنگاری هست که برای تأیید صحت و یکپارچگی داده های دیجیتال استفاده میشه و شامل سه مرحله ی اصلیه : مرحله ی اول : hashing، مرحله ی دوم : signing و مرحله ی سوم : verifying
به زبان ساده digital signature رو میتونیم به عنوان یک کدی در نظر بگیریم که به یه پیام یا سندی وصله و به عنوان اثبات عدم دستکاری پیام در طول مسیرش از فرستنده به گیرنده عمل می کند.
برای آشنایی با نحوه ی کار Digital Signature ، اول باید اصول توابع hash و public-key cryptography یا PKC رو بدونیم.
تابع hash تابعی هست که یک رشته (String) رو به عنوان ورودی میگیره و یک رشته alphanumeric (شامل حروف و اعداد) با اندازه ثابت رو برمی گردونه. ینی ورودی میتونه میتونه هر سایزی داشته باشه ولی طول خروجی ثابته…
حالا این رشته ی خروجی ای که تابع برمیگردونه میشه مقدار هش که بهش message digest هم میگن .
چیزی که این وسط خیلی مهمه اینه که این تابعی که ما باهاش این هش رو بدست آوردیم ، نسبت به اون ورودی غیر قابل برگشته .
ینی به زبون خودمونی نمیتونیم از آخر بریم اول و با داشتن خروجی ورودی رو بدست بیاریم.
یه ویژگی دیگه ای هم که داره اینه که هش کاملا یه چیز منحصر به فرده و هیچ دو تا هش یکسانی رو نمیتونیم پیدا کنیم و اگه کوچکترین تغییری تو ورودی بدیم، خروجیمون (هش مون) کلا عوض میشه. برای همین هم ازش، برای تأیید صحت داده های دیجیتالی منتقل شده به طور گسترده ای استفاده میشه.
این توابع رو متخصصین این حوزه نوشتن و بیشتر زبون های برنامه نویسی براش کتابخونه دارن.
و اما بریم سراغ (Public-key cryptography (PKC
این سیستم یک سیستم رمزنگاری هست که از دو تا کلید (key) استفاده می کنه: یکیش کلید عمومی یا public key و یکیشم کلید خصوصی یا private key. این دو کلید از نظر ریاضی با هم مرتبط هستن و میتونن هم برای رمزگذاری داده ها و هم برای digital signature استفاده بشن. و PKC به عنوان یک ابزار رمزگذاری خیلی ایمن تر از روشهای رمزگذاری سنتی و قبلی هست. در واقع داده ها با کلید عمومیشون رمزگذاری میشن و با کلید خصوصیشون رمزگشایی میشن.
حالا ربط همه ی اینا به بلاک چین چیه؟
خوب بلاک چین به شدت متکی به هشینگه (Hashing) .
ما در بلاک چین زنجیره ی مرتبی از بلاک ها داریم که هر بلاک شامل اطلاعات زیر هست :
-
هش بلوک قبلی
-
لیست معاملات و تراکنش ها
-
هش خود بلاک
بلاک ساده ی مقابل رو در نظر بگیرید : [0, “X paid $100 to Y”, 91b452]
تو این مثال، چون این اولین بلاک بلاک چینه ، Hash بلاک قبلی 0 هست. لیست معاملات فقط شامل 1 معاملست - X صد دلار به Y پرداخت کرده . Hash خود بلاک از طریق روش زیر محاسبه می شه:
hash_itself = Hash(List of transactions, Hash of the previous block)
در واقع ، لیست تراکنش ها و Hash بلوک قبلی رو به عنوان یک رشته ورودی با هم ترکیب می کنیم و به تابع Hash می دیم تا مقدار هش خودش یا hash_itself رو بدست بیاریم.
بلاک هایی که هش بلاک قبلی اونها صفر باشه بهشون بلاک های Genesis گفته میشه… در واقع بلاک Genesis اولین بلاک، بلاک چین هست.
حالا اگه بخوایم یه بلاک دیگه به این بلاک چین اضافه کنیم به این صورت میشه :
block1 = [91b452, “Y paid $20 to Z, X paid $10 to P”, 8ab32k]
-
که اینجا 91b452 هش بلاک قبلی (بلاک Genesis) هست.
-
2 تا تراکنش وجود داره : Y paid $20 to Z و X paid $10 to P
-
و 8ab32k که هش همین بلاک ینی بلاک1 هست
پس ازینا میشه نتیجه گرفت که اگر هر کسی بخواد تغییری ایجاد کنه مثلا X paid $100 to Y رو بخواد به جای Y مثلا A بزاره ، هش بلاک جنسیس (91b452) تغییر میکنه در نتیجه بین بلاک جنسیس و بلاک1 مشکل عدم تطابق پیش میاد و کل زنجیره نامعتبر میشه…
بنابراین بلاک چین سطح بالایی از امنیت داده ها رو فراهم می کنه …