بلاکچین


این روزها میشنوید که یک ویدیو یا عکس روی شبکه بلاکچین به قیمت های چند میلیون دلاری فروخته میشه.

مثلا توییت جک دورسی که اولین توییتی بوده که منتشر شده به قیمت دو و نیم میلیون دلار توسط یک ایرونی خریداری شده.
شاید فکر کنین این دیوونگیه

شاید بگید که احمقانه ست

اما به هر حال ما باید درک کنیم که چه اتفاقی میفته که یک محتوای دیجیتال تا این حد ارزش پیدا میکنه.

سلام

من اشکانم

تصمیم گرفتم یک سری پست در مورد اکوسیستم بیتکوین، بلاکچین، اسمارت کانترکت و... برای دولوپرها بسازم

قرار نیست اینجا در مورد خرید و فروش و مارکت و... صحبت کنیم فقط در مورد تکنولوژی و اینکه چطور ازش باید استفاده کنیم.

حالا...

هدف از این سری اینه که در انتها شما بفهمید چطوری مردم دارن عکس و ویدیوهای خودشون رو روی شبکه بلاک چین میفروشن؟

و قضیه این بازار هنری که روی کریپتو راه افتاده چیه؟

مثلا قراره بفهمید فرق بین سوشی سواپ و پنکیک سواپ چیه

یا اینکه چرا بعضی از صرافیهای غیر متمرکز دارند از اتریوم به بایننس چین میرن

اگه هیچ کدوم از چیزایی که الان گفتم براتون معنی نداره و متوجه نمیشید

شما بهترین مخاطب برای این سری هستید

چون من میخوام همه اینها رو از پایه توضیح بدم تا در پایان این سری شما همه این اصطلاحات عجیب و غریب رو خوب متوجه بشید

و امروز میخوایم با مفهوم شماره یک و مهمترین اونها یعنی بلاکچین شروع کنیم

بلاک چین اون چیزیه که بیت کوین و اتریم و کاردانو و پولکادوت و داج کوین رو راه اندازی میکنه

و ما باید بفهمیمش تا بتونیم به مفاهیم پیشرفته تر برسیم

خوب پس بیاید سعی کنیم کار رو با توضیح مفهوم بلاکچین شروع کنیم

من خیلی آدما رو دیدم که سعی کردن بلاکچین رو توضیح بدن

و همه هم کارشون واقعا درسته!

اما من میخوام با کلمات خیلی ساده این کار رو انجام بدم

پس گوش کنید

یک بلاک چین در واقع زنجیره ای از بلوک هاست

اما معنی این جمله چیه

به زبون برنامه نویس ها بیاید بجای بلاک چین کلمه دیتابیس رو بگذاریم

ما میدونیم دیتابیس چیه

اما بلاک چین در واقع یک دیتابیس خیلی باحال و س_ک_سی محسوب میشه

چرا؟

اول از همه اینکه این دیتابیس append only هست

اپند یعنی اضافه کردن

یعنی توی این دیتابیس شما فقط میتونید اطلاعات اضافه کنید

نمیتونید چیزی رو پاک کنید

نمیتونید چیزی رو ویرایش کنید

فقط میتونید یک چیزی اضافه کنید به این دیتابیس

و همین الان یه گروهی دارن روی این نوع دیتابیس کار میکنن، دیتابیسی که اطلاعات قبلی اون قابل تغییر یا حذف نیستن.

مثلا شما میتونید یک دیتابیس از مدارک دانشگاهی داشته باشید

یعنی شما که میرید دانشگاه و درستون رو تموم میکنید دانشگاه مدرک رو میذاره روی بلاک چین

شما این مدرک رو گرفتید نه قراره مدرک شما حذف بشه و نه قراره تغییر کنه

شما همیشه میدونید مدرک تون جای مطمئنیه و کسی نمیتونه عوضش کنه

یا مثلا دولت ها میتونن از بلاکچین برای ثبت گواهینامه رانندگی شما استفاده کنن یا گواهی تولد یا مرگ یا ازدواج، اینها و مواردی مانند اینها نوعی از داده هستند که ما میخوایم تولید بشن و قابل پاک کردن و تغییر دادن نباشن.

مورد دوم بعد از اپند اونلی بودن بلاک چین اینه که بلاک چین میتونه غیر متمرکز یا دیسنترالایزد باشه

غیر متمرکز بودن یعنی اینکه مثلا من یا هر کس دیگه نمیتونیم کنترل همه این دیتابیس رو در دست داشته باشیم و همه ما یک کپی نسبتا یکسان از دیتابیس رو در اختیار داریم بنابر این مثلا اگه من بخوام دروغ بگم و ادعا کنم که 2000 تا بیت کوین دارم بقیه میفهمن که من دارم دروغ میگم چون همه یک کپی از این دیتابیس رو در اختیار دارن و به همین دلیل هم بسیار کار مشکلیه که بخوایم یک رمزارز رو سانسور کنیم یا کلا از بین ببریم چون خیلی از آدمهای دیگه هستند که همزمان دارن نودهای مثلا بیت کوین رو اجرا میکنن و همگی کپی مشابهی از کل اطلاعات رو در اختیار داریم و باید همه ما همزمان نودهای خودمون رو خاموش کنیم تا شبکه بیتکوین خاموش بشه و قاعدتا هم کسی این کار رو نخواهد کرد.

به همین دلیله که رمزارزها بسیار بسیار در مقابل سانسور دولتی قوی هستند خوب اینها دلایلی بود که بفهمیم چرا بلاک چین دیتابیس خیلی خیلی باحالیه اما بیاید در مورد قسمت بلاک صحبت کنیم.

بلاک ها شکل اضافه شدن داده به یک شبکه بلاکچین هستند مثلا بجای اینکه مثل یک دیتابیس ریلیشنال ما دیتا رو توی یک سطر بنویسیم ما یک بلاک میسازیم و مثلا در مورد بیت کوین این بلاک ها هر 10 دقیقه تولید میشن. بلاک ها شامل اطلاعات زیادی هستن ولی مهمترین دیتایی که یک بلاک باید داشته باشه که valid محسوب بشه، hash خودش و هش بلاک قبلی و دیتایی هست که میخوایم به اون اضافه کنیم.

نترسید الان توضیح میدم، بیاید با آسونه شروع کنیم یعنی data: همونجور که اولش گفتم شما میتونید از هرچیزی که دلتون میخواد یک بلاکچین تولید کنید، از اسناد ازدواج و طلاق گرفته تا گواهینامه رانندگی و مدارک تحصیلی و... اینها رو ما میذاریم توی بخش دیتای یک بلاک مثلا در مورد بیتکوین در قسمت دیتای بلاک اون فقط یک تعداد ترنزاکشن قرار داره که مثلا کی برای کی چقدر پول فرستاده، این چیزیه که توی قسمت دیتای بلاک بیتکوین قرار گرفته

حالا بیاید در مورد هش حرف بزنیم:

هش یک تابع ریاضیه که یک ورودی میگیره و یک خروجی تحویل میده اما این تابع یک سری خاصیت باید داشته باشه اول اینکه خروجی شما اصطلاحا deterministic هست

یعنی چی؟ یعنی اینکه مثلا شما یک ورودی میدید به تابع و خروجی تابع همیشه یکسان خواهد بود اگر صد بار هم شما ورودی یکسان بدید به این تابع همیشه باید خروجی یکسان بگیرید

اما اگر یک تغییر حتی خیلی جزیی توی ورودی خودتون ایجاد کنید خروجی این تابع باید خیلی تغییر کنه این یکی از مفاهیمی هست که توی کریپتوگرافی (رمزنگاری) تعریف میشه و دلیل این تغییر کلی اینه که نشه هیچ زمانی ورودی رو حدس زد.

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

درسته؟ خوب حالا چرا این موضوع اینقدر مهمه چون همین قضیه ست که زنجیره بلوک ها رو به هم متصل نگه میداره. فرض کنید من یک بلاک هستم و دارم میرم که به شبکه بلاکچین متصل بشم. باید چکار کنم؟ اول از همه باید دیتا جمع کنم در مثال بیت کوین مثلا باید یک تعداد ترنزاکشن انجام شده باشه و من اونها رو داشته باشم تا بتونم به بلاکچین بیتکوین متصل بشم خوب حالا که من دیتا رو دارم میذارمش توی جیبم و میرم که به شبکه متصل شم خوب مورد بعدی که نیاز دارم اینه که هش بلاک قبل از خودم رو که میخوام بهش متصل بشم داشته باشم خوب فرض کنید که هش اون بلاک رو هم از میگیرم و میذارم توی اون یکی جیبم خوب مرحله آخر برای اینکه من بتونم عضو بلاکچین بشم اینه که دیتای خودم رو و هش بلاک قبلی رو با هم هش کنم و یک هش جدید تولید کنم و این میشه هش خودم و به این شکل من میتونم به بلاکچین وصل بشم. پس میرم میگم من میخوام به شما متصل بشم هم دیتای جدید رو آوردم هم هش بلاک قبلیمو ازش گرفتم و دارم و هم هش خودمو ساختم و به این شکل اجازه دارم که عضوی از شبکه بلاکچین بیتکوین باشم.

میبینید چی میشه؟ هر بلاکی داره هش قبل از خودش رو هم هش میکنه و به این شکل همه به هم متصل میشن و به این صورت اگر فرض کنیم که بلاکچین من 10 میلیون بلاک داشته باشه و روی بلاک شماره 1 یک نفر بیاد یک کاراکتر دیتا رو حتی تغییر بده با توجه به ماهیت deterministic بودن هش خروجی کلا تغییر میکنه و همه هش ها تا بلاک 10 میلیون به هم میریزه به این شکله که همه به هم متصل هستن و همه میدونن که دیتایی که داره وارد بلاکچین میشه دستکاری نشده.

توی مقاله بعدی که دارم حاضر میکنم میخوایم با هم ببینیم که هش کردن چطور انجام میشه و یک بلاکچین چطور ایجاد میشه که کار اصلا سختی نیست میشه با جاوااسکریپت یا پایتون و... شبکه بلاکچین خودمون رو تولید کنید همچنین میخواید بفهمیم که چطور شبکه بلاکچین بیتکوین از خودش محافظت میکنه چون نباید هر کسی بتونه به سادگی یک بلاک اضافه کنه باید بالاخره یک قوانینی وجود داشته باشه برای اضافه کردن بلاک، باید شما یک کاری انجام بدید، یک قابلیتی از خودتون نشون بدید که به عنوان یک بلاک توی شبکه بلاکچین بیتکوین پذیرفته بشید و اینها مواردیه که میخواید توی پست بعدی بهش بپردازیم... میخوایم بفهمیم معنی Proof of work چیه، ماین کردن یعنی چی و چرا مردم میان این تجهیزات گرون قیمت رو میخرن تا بیتکوین ماین کنن و مطمئن باشید اگر مفهوم هش هنوز براتون جا نیفتاده اصلا جای نگرانی نیست توی پست بعدی به خوبی توضیحش میدم.

اگر دوست دارید این سری ادامه پیدا کنه یا اگر سوالی دارید کامنت بگذارید.