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