مهدی فولادگر
مهدی فولادگر
خواندن ۸ دقیقه·۴ سال پیش

در عمق بلاک‌چین: بلاک‌چین چیست؟

در مجموعه نوشته‌های «در عمق بلاک‌چین» تلاش می‌کنم هر بار در مورد بلاک‌چین و ویژگی‌های اون صحبت کنم. نوشته‌های این مجموعه معمولا با یک سوال شروع می‌شوند و در طول بحث تلاش می‌کنیم در مورد پاسخ آن سوال بحث کنیم. اگر به بلاک‌چین علاقه‌مند هستید خوشحال می‌شم که متن را مطالعه کنید و نظراتتون را بنویسید.

در ویرگول یا پلتفرم‌های نوشتاری مشابه حتما می‌تونید در مورد بلاک‌چین نوشته‌های متعددی پیدا کنید. من هم احتمالا قرار نیست چیزی فراتر و یا خیلی متفاوت از آن نوشته‌ها در این پست چیزی بگم، اما ترجیح دادم در ابتدای کار و برای شروع مجموعه «در عمق بلاک‌چین»، ابتدا به صورت خلاصه از کمی در مورد بلاک‌چین و ساختار آن صحبت کنیم و به ادبیات یکسان برسیم.

بلاک‌چین یک پایگاه‌داده توزیع‌شده و به عبارتی یک «دفترکل توزیع‌شده (Distributed Public Ledger)» است. این مفهوم اولین بار به عنوان هسته‌مرکزی پول دیجیتال بیت‌کوین معرفی شده و در واقع شامل شبکه‌ای از گره‌های (Node) یک شبکه همتا-به-همتا (Peer to Peer) است که هر کدام از آن‌ها یک نسخه تمامی اطلاعات شبکه (شامل تراکنش‌های مالی در بیت‌کوین) را نزد خود نگهداری می‌کنند. بنابراین طبیعی‌ است که امکان وجود اختلاف در کپی‌های مختلف وجود داشته باشد که در چنین شرایطی ملاک نسخه‌ای است که حداقل بیش از نیمی از گره‌های شبکه بر روی آن اتفاق نظر دارند.

بلاک‌چین را می‌توان یک ساختمان داده دانست که در آن تمامی اطلاعات شبکه به نحوی ذخیره می‌شوند که تغییر ناپذیری اطلاعات را تضمین نماید. برای تسلط بیشتر بر روی این ساختمان داده نیاز است که ابتدا مفهوم هش-پوینتر را معرفی کنیم.

هش‌-پوینتر از مفهوم اشاره‌گر‌ها وام گرفته‌است و اشاره‌گرهایی را شامل می‌شود که علاوه بر آدرس داده‌ها در حافظه، چکیده‌ای (رجوع شود به مفهوم Hash) از اطلاعات آن را نیز ذخیره می‌کند. بنابراین تغییر یک بیت از اطلاعات حافظه هم امکان‌پذیر نخواهد بود و منجر به ناهم‌خوانی با چکیده ذخیره‌شده در هش‌-پوینتر می‌شود. با این تفاسیر، هش‌-پوینتر اشاره‌گری به داده‌هاست که تغییرناپذیری آن‌ها را نیز تامین می‌کند.

با استفاده از هش-‌پوینتر می‌توان تمامی ساختمان‌داده‌ای که با استفاده از اشاره‌گرها ساخته می‌شوند را به منظور تامین ویژگی تغییر ناپذیری باز طراحی کرد. به عنوان مثال، می‌توان ساختمان‌داده‌ای مشابه با لیست‌پیوندی (Linked List) را پیاده‌سازی نمود که دقیقا همان ساختمان‌داده بلاک‌چین است.

بلاک‌چین؛ لیست‌پیوندی با استفاده از هش-پوینتر [۱].
بلاک‌چین؛ لیست‌پیوندی با استفاده از هش-پوینتر [۱].


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

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

پیش از این، ساختاری مشابه، اما به صورت مرکزی و نه توزیع‌شده، در بانک‌ها و نرم‌افزارهای آنان پیاده‌سازی و استفاده شده بود. اما از آن‌جا که نگهداری حساب‌ها نیازمند اعتماد سرمایه‌داران به بانک است، بیت‌کوین پیشنهاد می‌دهند ذخیره‌سازی این اطلاعات در محیط‌های بی‌اعتمادی (Trustless Environments) نزد تمامی گره‌های شبکه صورت پذیرد تا تغییر در آن امکان‌پذیر نباشد.

مفهوم دفترکل غیر متمرکز؛ در بلاک‌چین هر گره نسخه‌ای از دفترکل را نگهداری می‌کند [۱].
مفهوم دفترکل غیر متمرکز؛ در بلاک‌چین هر گره نسخه‌ای از دفترکل را نگهداری می‌کند [۱].

اما نکته‌ مهم آن‌جاست که چگونه می‌توان از ناهماهنگی این نسخ مختلف از دفترکل جلوگیری کرده و به یک نمای واحد از واقعیت دست یافت؟ اولین راهکاری که به ذهن می‌رسد آن است که طی یک فرآیند کاملا تصادفی هر بار تنها یکی از گره‌های شبکه اجازه داشته باشد بر اساس تراکنش‌های دریافتی خود از جانب کاربران شبکه، تغییرات مورد نیاز در دفترکل را اعمال نماید و به تمامی گره‌های شبکه اطلاع دهد. گره‌های دیگر شبکه صحت تراکنش‌ها را (از طریق تطبیق‌دهی امضای دیجتال بر روی آن‌ها) بررسی می‌کنند و در صورتی که درخواست‌ها صحیح بود کپی خود از دفترکل را آپدیت می‌کنند. به این فرآیند توافق بر روی نسخه‌ای واحد از دفترکل پروتکل اجماع (Consensus Protocol) گفته می‌شود و به فرآیند انتخاب یک گره‌ی تصادفی برای اعمال تغییرات در دفترکل، استخراج (Mining) می‌گویند.

به منظور تحقق فرآیند انتخاب تصادفی نیاز است تا تمامی گره‌های شبکه یک پازل سخت که تنها راه حل کردن آن بررسی تمامی حالات ممکن است را حل نمایند. در بلاک‌چین بیت‌کوین پیدا کردن عددی است که چکیده آن در یک بازه مشخص باشد. گره‌های شبکه برای یافتن این عدد بایستی چکیده را برای تمامی اعداد ممکن بررسی کرده و عدد مد نظر خود را بیابند. یافتن چنین عددی برای کامپیوتر به تنهایی ممکن است سال‌ها زمان‌بر باشد اما سختی چنین پازلی به صورتی تنظیم می‌شود که در مدت محدود (حدود ۱۰ دقیقه) حداقلی یکی از اعضای شبکه موفق به یافتن پاسخ برای پازل مربوطه شود. به عنوان مثال این فرآیند را می‌توان مشابه با ریختن تاس دانست؛ به این معنا که کسی اجازه دارد دفترکل را ویرایش نماید که با ریختن چندهزار تاس موفق به بدست آوردن حدود ۸۰ درصد تاس با مقدار ۶ شود.

به فرآیند اجماع پیشنهادی بیت‌کوین که مبتنی بر پازل سخت یافتن عدد با چکیده مناسب است، اثبات کار (Proof of Work) گفته می‌شود. همچنین به کسانی که تلاش می‌کنند تا جواب مناسب پازل هر ده دقیقه را بیابند ماینر، استخراج‌کننده یا کاوش‌گر گفته می‌شود (همه کلمات به جای کلمه انگلیسیMiner به کار می‌روند). در حال حاضر قدرت پردازشی تمام ماینرهای شبکه بیت‌کوینی چیزی در حدود ۱۲۲ اگزا-هش بر ثانیه است.

قدرت‌پردازشی شبکه بیت‌کوین بر حسب اگزا-هش بر ثانیه (از سایت blockchain.com/charts)
قدرت‌پردازشی شبکه بیت‌کوین بر حسب اگزا-هش بر ثانیه (از سایت blockchain.com/charts)

قراردادهای هوشمند

از آن‌جایی که بلاک‌چین یک ساختمان داده تغییرناپذیر بوده و قادر است در محیط بی‌اعتمادی نیز صحت عملکرد و نگهداری اطلاعات را تضمین نماید. به مرور، عده‌ای به فکر استفاده از این تکنولوژی برای کاربردهای غیر مالی نیز افتادند. قراردادهای هوشمند (Smart Contracts) مجموعه‌ای از دستورات برنامه‌نویسی هستند که با استفاده از آن‌ها می‌توان پرداخت‌ها را در چارچوب‌ قراردادهای انجام داد. در واقع قراردادهای هوشمند را می‌توان قیودی بر خروجی تراکنش‌ها قرار گرفت؛ در صورتی که شروط مذکور بر قرار باشند یک پرداخت انجام خواهد شد. تکنولوژی دفترکل غیر متمرکز می‌تواند نیاز به اعتماد در قراردادهای دنیای فیزیکی را از میان برداشته و حتی در محیط‌های بی‌اعتمادی صحت تحقق یک قرارداد را تضمین نماید. با اضافه کردن قراردادهای هوشمند به بلاک‌چین‌ها می‌توان کاربردهای جدیدی را خلق کنیم که عبارتند از:

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

ویژگی‌های امنیتی بلاک‌چین

‌مهم‌ترین ویژگی‌هایی که بلاک‌چین فراهم‌ می‌آورد را در لیست زیر بررسی می‌کنیم:

  • توزیع‌پذیری و بی‌نیازی از نهاد مرکزی قابل اعتماد
  • شبه‌ناشناسی*
  • شفافیت و تغییرناپذیری
  • جامعیت (Integrity) داده و فرآیند جابجایی داده‌ها
  • قابلیت پی‌‌گیری و رهگیری تغییرات
  • متن‌باز بودن اکثر پیاده‌سازی‌ها با هدف قابلیت بررسی امنیتی آن‌ها توسط عده زیادی از جامعه متخصصین
  • امکان طراحی قراردادهای هوشمند و امکان بررسی صحت رفتار آن‌ها برای همگان

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

مراجع

[۱] مهدی فولادگر، «تحلیل و طراحی مشوق برای بلاک‌چین‌های بدون نیاز به مجوز از دیدگاه نظریه بازی‌ها»، پایان‌نامه کارشناسی ارشد، دانشگاه صنعتی اصفهان، ۱۳۹۸

بلاک‌چینبیت‌کوینامنیت
مدیر نوآوری شرکت پیام‌پرداز، دانشجوی دکتری کامپیوتر - دانشگاه تهران
شاید از این پست‌ها خوشتان بیاید