بلاکچین

این روزها میشنوید که یک ویدیو یا عکس روی شبکه بلاکچین به قیمت های چند میلیون دلاری فروخته میشه.مثلا توییت جک دورسی که اولین توییتی بوده که منتشر شده به قیمت دو و نیم میلیون دلار توسط یک ایرونی خریداری شده.شاید فکر کنین این دیوونگیهشاید بگید که احمقانه ستاما به هر حال ما باید درک کنیم که چه اتفاقی میفته که یک محتوای دیجیتال تا این حد ارزش پیدا میکنه.سلاممن اشکانمتصمیم گرفتم یک سری پست در مورد اکوسیستم بیتکوین، بلاکچین، اسمارت کانترکت و... برای دولوپرها بسازمقرار نیست اینجا در مورد خرید و فروش و مارکت و... صحبت کنیم فقط در مورد تکنولوژی و اینکه چطور ازش باید استفاده کنیم.حالا...هدف از این سری اینه که در انتها شما بفهمید چطوری مردم دارن عکس و ویدیوهای خودشون رو روی شبکه بلاک چین میفروشن؟و قضیه این بازار هنری که روی کریپتو راه افتاده چیه؟مثلا قراره بفهمید فرق بین سوشی سواپ و پنکیک سواپ چیهیا اینکه چرا بعضی از صرافیهای غیر متمرکز دارند از اتریوم به بایننس چین میرناگه هیچ کدوم از چیزایی که الان گفتم براتون معنی نداره و متوجه نمیشیدشما بهترین مخاطب برای این سری هستیدچون من میخوام همه اینها رو از پایه توضیح بدم تا در پایان این سری شما همه این اصطلاحات عجیب و غریب رو خوب متوجه بشیدو امروز میخوایم با مفهوم شماره یک و مهمترین اونها یعنی بلاکچین شروع کنیمبلاک چین اون چیزیه که بیت کوین و اتریم و کاردانو و پولکادوت و داج کوین رو راه اندازی میکنهو ما باید بفهمیمش تا بتونیم به مفاهیم پیشرفته تر برسیمخوب پس بیاید سعی کنیم کار رو با توضیح مفهوم بلاکچین شروع کنیممن خیلی آدما رو دیدم که سعی کردن بلاکچین رو توضیح بدنو همه هم کارشون واقعا درسته!اما من میخوام با کلمات خیلی ساده این کار رو انجام بدمپس گوش کنیدیک بلاک چین در واقع زنجیره ای از بلوک هاستاما معنی این جمله چیهبه زبون برنامه نویس ها بیاید بجای بلاک چین کلمه دیتابیس رو بگذاریمما میدونیم دیتابیس چیهاما بلاک چین در واقع یک دیتابیس خیلی باحال و س_ک_سی محسوب میشهچرا؟اول از همه اینکه این دیتابیس append only هستاپند یعنی اضافه کردنیعنی توی این دیتابیس شما فقط میتونید اطلاعات اضافه کنیدنمیتونید چیزی رو پاک کنیدنمیتونید چیزی رو ویرایش کنیدفقط میتونید یک چیزی اضافه کنید به این دیتابیسو همین الان یه گروهی دارن روی این نوع دیتابیس کار میکنن، دیتابیسی که اطلاعات قبلی اون قابل تغییر یا حذف نیستن.مثلا شما میتونید یک دیتابیس از مدارک دانشگاهی داشته باشیدیعنی شما که میرید دانشگاه و درستون رو تموم میکنید دانشگاه مدرک رو میذاره روی بلاک چینشما این مدرک رو گرفتید نه قراره مدرک شما حذف بشه و نه قراره تغییر کنهشما همیشه میدونید مدرک تون جای مطمئنیه و کسی نمیتونه عوضش کنهیا مثلا دولت ها میتونن از بلاکچین برای ثبت گواهینامه رانندگی شما استفاده کنن یا گواهی تولد یا مرگ یا ازدواج، اینها و مواردی مانند اینها نوعی از داده هستند که ما میخوایم تولید بشن و قابل پاک کردن و تغییر دادن نباشن.مورد دوم بعد از اپند اونلی بودن بلاک چین اینه که بلاک چین میتونه غیر متمرکز یا دیسنترالایزد باشهغیر متمرکز بودن یعنی اینکه مثلا من یا هر کس دیگه نمیتونیم کنترل همه این دیتابیس رو در دست داشته باشیم و همه ما یک کپی نسبتا یکسان از دیتابیس رو در اختیار داریم بنابر این مثلا اگه من بخوام دروغ بگم و ادعا کنم که 2000 تا بیت کوین دارم بقیه میفهمن که من دارم دروغ میگم چون همه یک کپی از این دیتابیس رو در اختیار دارن و به همین دلیل هم بسیار کار مشکلیه که بخوایم یک رمزارز رو سانسور کنیم یا کلا از بین ببریم چون خیلی از آدمهای دیگه هستند که همزمان دارن نودهای مثلا بیت کوین رو اجرا میکنن و همگی کپی مشابهی از کل اطلاعات رو در اختیار داریم و باید همه ما همزمان نودهای خودمون رو خاموش کنیم تا شبکه بیتکوین خاموش بشه و قاعدتا هم کسی این کار رو نخواهد کرد.به همین دلیله که رمزارزها بسیار بسیار در مقابل سانسور دولتی قوی هستند خوب اینها دلایلی بود که بفهمیم چرا بلاک چین دیتابیس خیلی خیلی باحالیه اما بیاید در مورد قسمت بلاک صحبت کنیم.بلاک ها شکل اضافه شدن داده به یک شبکه بلاکچین هستند مثلا بجای اینکه مثل یک دیتابیس ریلیشنال ما دیتا رو توی یک سطر بنویسیم ما یک بلاک میسازیم و مثلا در مورد بیت کوین این بلاک ها هر 10 دقیقه تولید میشن. بلاک ها شامل اطلاعات زیادی هستن ولی مهمترین دیتایی که یک بلاک باید داشته باشه که valid محسوب بشه، hash خودش و هش بلاک قبلی و دیتایی هست که میخوایم به اون اضافه کنیم.نترسید الان توضیح میدم، بیاید با آسونه شروع کنیم یعنی data: همونجور که اولش گفتم شما میتونید از هرچیزی که دلتون میخواد یک بلاکچین تولید کنید، از اسناد ازدواج و طلاق گرفته تا گواهینامه رانندگی و مدارک تحصیلی و... اینها رو ما میذاریم توی بخش دیتای یک بلاک مثلا در مورد بیتکوین در قسمت دیتای بلاک اون فقط یک تعداد ترنزاکشن قرار داره که مثلا کی برای کی چقدر پول فرستاده، این چیزیه که توی قسمت دیتای بلاک بیتکوین قرار گرفتهحالا بیاید در مورد هش حرف بزنیم:هش یک تابع ریاضیه که یک ورودی میگیره و یک خروجی تحویل میده اما این تابع یک سری خاصیت باید داشته باشه اول اینکه خروجی شما اصطلاحا deterministic هستیعنی چی؟ یعنی اینکه مثلا شما یک ورودی میدید به تابع و خروجی تابع همیشه یکسان خواهد بود اگر صد بار هم شما ورودی یکسان بدید به این تابع همیشه باید خروجی یکسان بگیریداما اگر یک تغییر حتی خیلی جزیی توی ورودی خودتون ایجاد کنید خروجی این تابع باید خیلی تغییر کنه این یکی از مفاهیمی هست که توی کریپتوگرافی (رمزنگاری) تعریف میشه و دلیل این تغییر کلی اینه که نشه هیچ زمانی ورودی رو حدس زد.این از خاصیت اول، خاصیت دوم اینه که این تابع یک طرفه ست یعنی اگه شما یک خروجی بگیرید نمیتونید به هیچ عنوان دوباره ورودی رو از روی اون باز تولید کنید در نظر بگیرید مثلا انبه داشته باشید و با اون آب انبه درست کنید. انبه رو میریزید توی بلندر و میکس میکنید و به شما آب انبه میده ولی شما هیچ وقت نمیتونید از این آب انبه دوباره به میوه انبه برسید ولی باز میتونید با انبه های دیگه آب انبه درست کنید. درست کردن آب انبه دقیقا شبیه هش کردن می مونه چون یک تابع یک طرفه ست.درسته؟ خوب حالا چرا این موضوع اینقدر مهمه چون همین قضیه ست که زنجیره بلوک ها رو به هم متصل نگه میداره. فرض کنید من یک بلاک هستم و دارم میرم که به شبکه بلاکچین متصل بشم. باید چکار کنم؟ اول از همه باید دیتا جمع کنم در مثال بیت کوین مثلا باید یک تعداد ترنزاکشن انجام شده باشه و من اونها رو داشته باشم تا بتونم به بلاکچین بیتکوین متصل بشم خوب حالا که من دیتا رو دارم میذارمش توی جیبم و میرم که به شبکه متصل شم خوب مورد بعدی که نیاز دارم اینه که هش بلاک قبل از خودم رو که میخوام بهش متصل بشم داشته باشم خوب فرض کنید که هش اون بلاک رو هم از میگیرم و میذارم توی اون یکی جیبم خوب مرحله آخر برای اینکه من بتونم عضو بلاکچین بشم اینه که دیتای خودم رو و هش بلاک قبلی رو با هم هش کنم و یک هش جدید تولید کنم و این میشه هش خودم و به این شکل من میتونم به بلاکچین وصل بشم. پس میرم میگم من میخوام به شما متصل بشم هم دیتای جدید رو آوردم هم هش بلاک قبلیمو ازش گرفتم و دارم و هم هش خودمو ساختم و به این شکل اجازه دارم که عضوی از شبکه بلاکچین بیتکوین باشم.میبینید چی میشه؟ هر بلاکی داره هش قبل از خودش رو هم هش میکنه و به این شکل همه به هم متصل میشن و به این صورت اگر فرض کنیم که بلاکچین من 10 میلیون بلاک داشته باشه و روی بلاک شماره 1 یک نفر بیاد یک کاراکتر دیتا رو حتی تغییر بده با توجه به ماهیت deterministic بودن هش خروجی کلا تغییر میکنه و همه هش ها تا بلاک 10 میلیون به هم میریزه به این شکله که همه به هم متصل هستن و همه میدونن که دیتایی که داره وارد بلاکچین میشه دستکاری نشده.توی مقاله بعدی که دارم حاضر میکنم میخوایم با هم ببینیم که هش کردن چطور انجام میشه و یک بلاکچین چطور ایجاد میشه که کار اصلا سختی نیست میشه با جاوااسکریپت یا پایتون و... شبکه بلاکچین خودمون رو تولید کنید همچنین میخواید بفهمیم که چطور شبکه بلاکچین بیتکوین از خودش محافظت میکنه چون نباید هر کسی بتونه به سادگی یک بلاک اضافه کنه باید بالاخره یک قوانینی وجود داشته باشه برای اضافه کردن بلاک، باید شما یک کاری انجام بدید، یک قابلیتی از خودتون نشون بدید که به عنوان یک بلاک توی شبکه بلاکچین بیتکوین پذیرفته بشید و اینها مواردیه که میخواید توی پست بعدی بهش بپردازیم... میخوایم بفهمیم معنی Proof of work چیه، ماین کردن یعنی چی و چرا مردم میان این تجهیزات گرون قیمت رو میخرن تا بیتکوین ماین کنن و مطمئن باشید اگر مفهوم هش هنوز براتون جا نیفتاده اصلا جای نگرانی نیست توی پست بعدی به خوبی توضیحش میدم.اگر دوست دارید این سری ادامه پیدا کنه یا اگر سوالی دارید کامنت بگذارید.