حتی اگر ندانید که این اصطلاح چه معنایی می دهد، حتما این واژه برایتان آشناست. زیرا صحبتهای مختلفی درباره بلاک چین به گوش می رسد. مثلا بعضی اعتقاد دارند که با وجود این تکنولوژی، زندگی بهتر و آسان تر می شود و دیگر خبری از بانکهای کنونی نخواهد بود. اما کاربرد بلاک چین به بانکداری و امور پولی و مالی محدود نمیشود.
اینطور برداشت می شود که این عبارت تازهوارد در زمینههای مختلف، حرفهای فراوانیزیاد برای زدن دارد. به این دلیل در این مطلب قصد داریم فناوری بلاک چین را بیان کنیم و همراه با تصاویر متنوع، درک آن را برای شما تسهیل کنیم.
با این حال که رشد و رونق بازار کریپتو به چشم می آید (ارزهای دیجیتال)، پای بلاک چین به بحثهای تخصصی و عمومی زیادی باز شده است،با این وجود هستند کسانی که کاربرد آن را نمیدانند و از جریان بیخبرند. اگر شما نیز اطلاعات زیادی در این زمینه ندارید ، بهتر است این مقاله را بخوانید و با مفاهیمی چون: بلاک چین (Blockchain)، گرهها (Nodes)، لِجِر (Ledger) و امنیت بلاک چین بیشتر آشنا شوید.
آیا بلاک چین همان بیتکوین است؟
ابتداعا باید تفاوت میان این دو مفهوم اساسی را بدانید. بیتکوین و بلاک چین. اجازه دهید که درباره بیتکوین که از انواع ارز دیجیتال است بیشتر صحبت کنیم:
• بیتکوین:
هرگز نباید بیتکوین را با بلاک چین، اشتباه گرفت. برخی افراد این دو مفهوم را به جای هم یکدیگر مورد استفاده قرار می دهند. پس همین حالا به یاد داشته باشید که بیتکوین فقط یک ارز دیجیتال است که براساس تکنولوژِی بلاک چین کار میکند.
• بلاک چین:
بلاک چین نوعی تکنولوژی است که به انتقال داراییهای دیجیتالی نظیر بیتکوین از شخصی به شخص دیگر می تواند کمک کند.
پس مفهوم دقیق بلاک چین چیست؟
برای تفهیم این موضوعی مثالی میزنیم که نمونهای از راهکارهای بلاک چین را ارائه میکند. در این مثال موضوع انتقال پول مورد بحث است.
فرض کنید سعید میخواهد به بهروز، مبلغی پرداخت کند. به طور معمول و روال، این تراکنش از طریق نفر سومی مانند بانک یا کارت اعتباری اتفاق می افتد. حال اگر این افراد در ۲ شهر مختلف زندگی کنند، روند تراکنش کمی طول میکشد. ضمن اینکه مبلغی نیز به عنوان کارمزد از طرف سوم معامله که بانک است، برداشته میشود.
همه تلاش سیستم بلاک چین، این است که طرف سوم در تراکنشها را از میان بردارد. در نتیجه بسیاری از معاملات و تراکنشها با سرعت بیشتری نسبت به گذشته و بدون هیچگونه واسطهای صورت خواهد گرفت. علاوه بر زمان، کارمزدی که برای استفاده از شخص به طرف ثالث پرداخت میشد نیز به کمک بلاک چین بسیار کم خواهد شد.
برای توضیح روند انجام عملیات انتقال از جانب سیستم بلاک چین، نیاز به درک مفاهیم پیچیده بسیاری است که در ادامه به تعدادی از آنها می پردازیم:
لِجِر (Ledger)
لجر به گروهی از حسابهای شمارهگذاری شده برای ثبت حسابهای هر شرکت خاصی می گویند. لجر در طول فعالیت شرکت، تمام تراکنشهای مالی را ثبت می کند و اطلاعات محاسباتی را فراهم میکند. اطلاعاتی که برای ترازنامههای مالی همچون: حساب داراییها، بدهیها، سرمایه، درآمد و مخارج مورد نیاز می باشد. به عبارت دیگر، لجر زنجیرهای است که تراکنشهای مالی مختلفی را به هم وصل می کند و آنها را در کنار هم ثبت مینماید.
اصطلاح لجر باز (open ledger) به معنای این است که هر کسی که توانایی دارد به این شبکه باز، بپیوندد و تمام تراکنشها نیز در لجر ثبت می شوند. شبکه، تمام دادههای بوجود آمده از تراکنش را در حافظه یا لجر مرکزی ذخیره میکند. لجر توزیعشده یا همان دفتر کل توزیعشده اصولا همانند لجر باز کار میکند. اما یک تفاوت اساسی دارد و آن این است که لجر توزیعشده مانند لجر باز متمرکز نخواهد بود. تمرکززدایی در لجر توزیعشده مفهومش این است که در شبکه هر کسی دارای نسخهای کپی از لجر روی گره می باشد.
گره (Node) چیست؟
Node یا گره، به معنی همان دستگاهی است که هر شرکتکننده در شبکه داراست و یک کپی از لجر باز را در اختیار دارد.
ما از اصطلاح “گره”، به منظور تعریفی از یک مشارکتکننده در زنجیره دفترکل توزیع شده استفاده می نماییم (یک مشارکت کننده در شبکه)
لجر باز (Open Ledger)
برای معنی دقیق تر از این مفهوم در اختیارتان قرار بگیرد، یک مثال میزنیم. فرض کنید شبکهای با ۴ عضو وجود دارد: بهروز، سامان، شاهین، سهیل. هر فرد در این شبکه خواهان ارسال و دریافت مبلغی پول باشد. در آغاز شکلگیری این شبکه، بهروزدارای ۲۰۰ تومان است.
معنی و مفهوم و کاربرد لجر باز در اینجا به این شکل خواهد بود.
با این فرض که تراکنشهایی میان اعضای شبکه اتفاق افتاده است:
• بهروز۱۰۰ تومان به سامان داده است.
• سامان، ۵۰ تومان به شاهین داده است.
• شاهین نیز ۳۰ تومان به سهیل تحویل داده است.
کل این تراکنشها ثبت و به تراکنشهای قبلی موجود در لجر، متصل میشوند. به این مفهوم که در این مثال ۴ پیوند تراکنش در زنجیره لجر باز موجود است که اطلاعات نوع تراکنش و افرادی که در آن مداخله داشته اند را در اختیار ما میگذارد.
زنجیره تراکنشها در لجر باز، معلوم و برای همه قابل مشاهده و دسترسی می باشد. یعنی همه اعضای شبکه توانایی دارند که از جای پول و مبلغی که هر شخص دارد، مطلع شوند. همچنین ، هر عضو لجر باز، میتواند درباره اعتبار تراکنشها تصمیم بگیرد.
اجازه بدهید دوباره به مثال قبل اشاره کنیم.
در مثال عنوانشده، بهروز ۲۰۰ تومان در شروع کار داشت و ۱۰۰ تومان به سامان منتقل کرد. بنابراین ۱۰۰ تومان برای بهروز باقی میماند. حال، او تصمیم میگیرد که ۱۵۰ تومان دیگر به سهیل انتقال دهد.
نتیجتا، هر کس در شبکه میتواند نامعتبر بودن این تراکنش را تشخیص بدهد زیرا پول باقیمانده برای بهروز، کفاف این مبلغ از تراکنش را نخواهد داد. بنابراین این تراکنشی به زنجیره تراکنشها در لجر باز اضافه نمی شود.
لجر توزیعشده (Distributed Ledger)
یکی از اهداف مهم تکنولوژی بلاک چین ایجاد سیستمی غیرمتمرکزست. معنی تمرکززدایی زنجیره ارتباطات، لجر توزیعشده است. به معنای دیگر، هر شخص یا گره در شبکه، یک کپی از لجر دریافت میکند. مثلا بهروز، سامان، شاهین، سهیل نیز مشارکتکنندگان در یک شبکه اند که هرکدام یک نسخه کپی از لجر دریافت میکنند.
وقتی لجر در سطح شبکه توزیع می گردد، هر عضو شبکه میتواند از زنجیره تراکنشهای اتفاق افتاده مطلع شود. پس در واقع، تمرکزگرایی موجود در لجر باز، در لجر توزیعشده، از بین خواهد رفت.
به این منظور که، همان شخص ثالثی که در معاملات و تراکنشهای بانکی حضور داشت، اکنون در چنین سیستمی نخواهد بود.
البته مشکل جدیدی در اینجا اتفاق می افتد. زیرا هر عضو شبکه نسخهای کپی از لجر دارد و در صورت هماهنگ نبودن لجر اعضا با یکدیگر، اشکالاتی پیش می آید. برای حل این مشکلات، اجازه دهید مفهوم دیگری از فناوری بلاک چین با نام ماینینگ یا استخراج را توضیح دهیم.
استخراج کردن (mining)
اکنون به خوبی میدانید که لجر توزیعشده، شبکهای باز است که قابلیت دسترسی عمومی دارد. نسخه کپی لجر در بین تمامی گرههای (اعضای) موجود در شبکه پخش میشود. اما اعتبار تراکنشهای شبکه، به چه صورت تأیید میشود؟
باز بهتر است به مثال عنوان شده بازگردید.
فرض کنید که بهروز میخواهد ۱۰۰ تومان به سامان منتقل کند. وقتی این تراکنش انجام می شود، به صورت اتومات، تراکنش صورتگرفته در سطح شبکه انتشار می یابد. پس همه اعضا از وقوع این تراکنشی مطلع میشوند ولی اعتبار آن هنوز به تایید نرسیده . تا تأیید تراکنش، این انتقال در لجر ثبت نخواهد شد. برای این مساله که هر تراکنش در لجر تأیید و ثبت شود، لازم است تا با واژه دیگری به نام استخراج یا ماینینگ آشنا شوید.
ماینینگ برای حل محاسبات است. افرادی که وظیفه انجام این استخراج و ماینینگ را بر دوش می کشند، گرهها یا اعضایی بخصوصی هستند و میتوانند به علت عمومی بودن لجر، وظیفه خود را در کل شبکه انجام دهند.
مثلا فرض کنید، شاهین و سهیل هر دو از گرههای خاص (ماینرها) باشند. آنها وظیفهای خیلی مهم بر عهده دارند. البته باید بگوییم که تمام استخراجکنندگان یا ماینِرها رقیب یکدیگرند.
در این مثال، شاهین و سهیل هر دو با هم بر سر تأیید اعتبار تراکنش انجام گرفته از سوی بهروز و انتقال پول به سامان رقابت می نمایند. هر یک از آنها تلاش می کند تا زودتر این تراکنش را تأیید کرده و به زنجیره لجر اضافه کند. کسی که زودتر این کار را انجام می دهد، امتیاز و پاداش خواهد گرفت.
به عنوان مثال اگر از این سیستم برای یک تراکنش بیتکوین استفاده شود، پاداش و امتیازی که به ماینر داده میشود، بصورت بیتکوین است.
معنی اینکه بیتکوین چگونه تولید میشود تاحدودی پیچیده است. اما به طور خلاصه می توان گفت که بیتکوین از طریق فرایند محاسباتی تأیید تراکنش تولید میشود و نه از طریق پرداخت مستقیم بهروز و سامان به ماینرها.
ماینرها برای بردن رقیب باید ۲ گام را پشت سر هم طی کنند:
گام اول – تأیید تراکنش جدید:
تأیید تراکنش تازه بسیارساده است زیرا اطلاعات موجود در لجر در دسترس هستند. بنابراین، ماینر سریعا میتواند با انجام محاسبات اعلام کند که فردی که تراکنش را شروع کرده، بودجه کافی در دست داشته یا نه. در واقع با این محاسبه، می فهمد که تراکنش معتبر است یا خیر.
گام دوم – یافتن «کلید» مخصوص:
برای قفل کردن تراکنش نو در زنجیره لجر، ماینر باید کلیدی مخصوص پیدا کند که این فرایند را فعال کند. کلیدها به طور رندوم امتحان میشوند. ماینرها باید از قدرت محاسباتی برای پیدا کردن کلید مناسب از میان کلیدهای رندوم استفاده کنند که البته زمان زیادی میبرد. بنابراین لازم است از قدرت رایانه برای حدس کلیدهای تصادفی استفاده کرد. پس کسی که بتواند سریعتر این فرایند را به سرانجام برساند، برنده رقابت با ماینر دیگر است و امتیاز و جایزه را در قالبهای مختلف (به عنوان مثال بیتکوین) دریافت خواهد کرد.
همگامسازی لجرها در طول شبکه، چگونه انجام میشود؟
سوال مهمی در اینجا پیش میآید. هر گره چطور میتواند، تراکنشهای انجام شده را به شکل همگام با آخرین تغییرات دریافت کند؟ این موضوع خیلی مهم است زیرا مشکل داشتن کپی همانند از لجر را در همه گرههای شبکه برطرف میکند. به عنوان مثال فرض کنید که سهیل توانست در رقابت با شاهین، تراکنش را زودتر تأیید کند. بنابراین، تراکنش زودتر در لجر او ثبت خواهد شد. حال او باید نتیجه حاصله را در تمام شبکه منتشر سازد.
به این معنا که او باید به شاهین، سامان و سهیل اطلاع دهد که معما را حل کرده و تراکنش را تایید کرده است (تراکنشی که بهروز قصد داشت به سامان ارسال کند)
وقتی این تراکنش از سوی سهیل (استخراجکننده موفق) به همه اطلاعرسانی می شود، او باید کلیدی فراهم کند تا سایر اعضای گره را بتوانند تراکنش را به لجرهایشان اضافه نمایند.
شاهین (استخراج کننده دیگر) هم این تراکنش را به لجر خود اضافه میکند، به این دلیل که دیگر نیازی به نهایی کردن و تایید آن تراکنش نخواهد بود، زیرا تایید تراکنش توسط سهیل انجام شده و پاداش آن نیز به سهیل داده شده است. البته شاهین میتواند در جستجوی تایید تراکنشهای دیگر باشد تا به این صورت پاداش استخراج مربوط به آنها را بدست آورد.
بنابراین فرایند، این تراکنش به لجر سایر افراد شبکه نیز اضافه خواهد شد. سامان نیز۱۰۰ تومانی که بهروزبرای وی ارسال کرده را دریافت می کند، زیرا افراد موجود در شبکه همگی پذیرفتهاند که این تراکنش مورد تایید است.
در این لحظه، تمامی لجرهای توزیع شده در شبکه، بروزرسانی می شود و زنجیرههای تراکنشها در همه آنها به شکل یکسانی خواهد بود.
بلاکهای موجود در زنجیره به چه معناست؟
اکنون که کمی با مفاهیم اولیه در حوزه فناوری بلاک چین آشنا شدهایم، بهتر است دقیقتر این موضوع را پیگیری کنیم. تا اینجای کار متوجه شده ایم که با زنجیرهای از بلاکها (بلوکها) رو به رو هستیم.
هر بلاک در زنجیره شامل دادههای خاصی است:
۱ – داده
نوع داده ذخیره شده در بلاک به نوع بلاک چین بستگی دارد. به عنوان مثال، هر بلاک در بلاک چینِ بیتکوین، اطلاعاتی همچون تعداد بیتکوینها در بلاک را ذخیره می نماید. یعنی مشخص میشود که چه کسی بیتکوین را ارسال و چه کسی آن را دریافت نموده است. اگر بلاک چین به کریپتوکارنسی دیگری همچون اتریوم متعلق باشد، اطلاعات بلاک به جای بیتکوین درباره اتریوم خواهد بود.
۲ – هَش (hash)
هش میتواند به این شکل باشد:
۸۷۴۳b52063cd84097a65d1633f5c74f5
هر هَش کاملا اختصاصی است و شامل رشتهای از اعداد و حروف می باشد. رشته منحصربفرد اساسا شامل اطلاعات محتوایی است که در بلاک ذخیره خواهد شد. وقتی یک بلاک ایجاد میشود، هش اختصاصی تولیدشده مورد محاسبه واقع می شود. با تغییر هر چیزی در بلاک (مثلا افزایش تعداد بیتکوینها)، هَش نیز تغییر میکند. به این معنا که ،وقتی هش تغییر می کند دیگر بخشی از بلاک پیشین نخواهد بود. بنابراین، بلاکی جدید تشکیل خواهد شد.
۳ – هَش بلاک قبلی
هر بلاکی که تازه ساخته میشود نیز حاوی رشته هَشی اختصاصی مربوط به بلاک قبلی می باشد. به این صورت، تمام بلاکها با هم در ارتباط خواهند بود.
در مثال زیر میبینید که، هر بلاک با عنوان کردن هش بلاک قبلی، به آن بلاک وصل است.
اولین بلاک شامل هَش قبلی نخواهد بود زیرا مشخص است که قبل از آن بلاکی وجود ندارد. اولین بلاک موجود در زنجیره، جِنسیس بلاک (Genesis block) نامیده می شود.
امنیت بلاک چین چگونه است؟
اگر کسی قصد ایجاد تغییری در بلاک را داشته باشد، هَش تغییر می کند. یعنی تمام بلاکهای بعدی نیز نامعتبر خواهند شد. زیرا شامل هَشی متفاوت نسبت به هَش تازه ایجاد شده است. برای رفع موضوع نامعتبر شدن بلاکهای دیگر تمام هَشهای بلاک دیگر باید مجددا محاسبه شوند. برای تقابل با اینگونه مشکل، دادهای به نام «اثبات کار» وجود دارد که تولید بلاکهای جدید را کند میکند. دشواری ایجاد بلاکهای جدید برای ماینرها کنترل میشود به همین دلیل، زمان لازم برای حل هر کدام از محاسبه ها و ایجاد بلاکی جدید فقط۱۰ دقیقه زمان می برد.
لایه دیگری که در امنیت بلاک چین است، شبکه همتا به همتا (P2P یا Peer to Peer Network) نامیده می شود. وجود شبکه P2P باعث ایجاد اطمینان نسبت به این موضوع است که بلاک چین در بین یک شبکه وسیع توزیع شده است. همانطور که قبلا ذکر کردیم، بلاک چین شبکهای عمومی است که عضویت در آن برای عموم آزاد است و با ورود به آن نسخهای کپی از بلاک چین به هر عضو داده خواهد شد.
با تشکیل هر بلاک جدید، یک نسخه از بلاک چین برای همه اعضا (Nodes) ارسال می شود.
بنابراین، هر گره از هر عضو در شبکه، بلاکهای جدید را مورد بررسی قرار خواهد داد و معلوم میکند که بلاک معتبر است یا خیر. اگر بلاک تأیید شود، هر گره (Node) آنرا به بلاک چین اضافه می کند. اگر تمام گرهها دارای بلاک چینی شبیه به هم باشند، به این معناست که توافقی عمومی برای پذیرش آن بلاک چین به عنوان بلاک چین رسمی وجود دارد و بلاک چینهای غیرمعتبر از اضافه شدن به بلاک چین منع می شوند.
در مورد امنیت، اگر بخواهید در یک بلاک چین دخیل شوید و آنرا تغییر دهید، باید تمام بلاکهای بلاک چین تغییر کند، تمام هَشها دوباره محاسبه شوند، برای «اثبات کار» جانشینی بیابید و از مهمترین اصل اینکه باید کنترل بیشتر از ۵۰ % شبکه P2P را بدست آورید. در غیر این صورت، اصلاحات و تغییراتی که روی بلاک چین انجام داده اید مورد قبول سایر اعضای شبکه واقع نخواهد شد.
طبیعی است که انجام همچین کاری تقریبا غیرممکن خاهد بود و این نکته را نشان می دهد که امنیت بلاک چین به طور کلی به شدت بالا است.
خلاصه تکنولوژی بلاک چین
ابتداعا فرا گرفتیم که بلاک چین و بیتکوین دو موضوع کاملا متفاوت هستند. همچنین، فهمیدیم که تکنولوژی بلاک چین براساس چندین اصول اولیه و پایهای استوار است.
۱ – دفترکل توزیع شده (distributed ledger) یک شبکه باز است که دسترسی آن برای عموم آزاد است.
۲ – هر شرکت کننده در شبکه میتواند تایید کننده تراکنشها باشد.
۳ – دفترکل (لجر) در بین مشارکتکنندگان (Node) های بسیاری توزیع شده است (این ویژگی باعث حذف شخص سوم و واسط خواهد شد).
۴ – مفهوم ماینینگ و کار ماینرها، تایید تراکنشهایی است که در لجرصورت می گیرد و اینکار از طریق محاسبات ریاضی انجام می شود.
ماینرها، مشارکتکنندگانی در شبکه اند که کارشان تایید تراکنشهای موردنظر، حل کردن محاسبات و منتشر کردن و به اشتراکگذاری آنها در شبکه است تا همگی بتوانند این تراکنش را به دفترکل در زنجیره اضافه نمایند.
ماینرها تلاش میکنند معادلات ریاضی را حل کنند. اینکار به مشارکتکنندگان در شبکه این اطمینان را میدهد که زنجیره جدید در دفتر کل رسمی تشکیل شده و تمام افراد شبکه می بایست از آن استفاده کنند.
ضمنا آموختیم که هر بلاک در بلاک چین دارای ۳ نوع داده است:
۱ – داده
۲ – هش
۳ – هش بلاک قبلی
لازم به ذکر است چیزی که در هر بلاک نگهداری میشود بستگی به بلاک چین دارد. مثلا هر بلاک چین بیتکوین، هر بلاک شامل اطلاعاتی درباره بیتکوین است.
ضمنا آموختیم که هر بلاک شامل یک سری از اعداد و حروف رندوم است که “هش” نامیده میشود. هش، اطلاعات مرتبط با آن بلاک را در خود جای داده است، پس هر زمان اطلاعاتی در بلاک تغییر کند، هش نیز تغییر خواهد کرد.
برای اتصال بلاکها به هم، هر بلاک، هش بلاک قبلی را در خود نگه میدارد . فقط اولین بلاک (جنسیس بلاک) هش بلاک قبلی ندارد(چون اساسا بلاک قبلی وجود ندارد).