بلاک چین چیست و نحوه کار بلاک چین
معرفی بلاک چین یا همان زنجیره بلوکی از عناصر تشکیل دهنده تا شبکه های نوین
امیر صلح جو
بلاک چین یا همان زنجیره بلوکی از جمله فناوری های عصر جدید می باشد ، بسیاری از مردم برا بالا بردن اطلاعاتشان در مورد بلاک چین با جستجوی عباراتی نظیر ” بلاک چین چیست و چگونه کار می کند” ، ” کاربردهای بلاک چین ” ، ” بلاک چین چیست ” و … در اینترنت با دنیای انبوهی از اطلاعات پراکنده مواجه می شوند! که بعضا موجب پیچیده تر شدن مفهوم بلاک چین در دید افراد می شود ، ما در دسته ای از مقالات سعی کرده ایم مفاهیمی همچون بلاک چین ، بیت کوین و … را با زبانی ساده و همراه با ویدئوهای آموزشی به شما توضیح دهیم.
اگر طی ده سال گذشته پیگیر مسائل بانکداری، سرمایه گذاری و یا ارز دیجیتال (cryptocurrency)بوده باشید، احتمالا باید با اصطلاح “بلاک چین”، که یک فناوری حفظ سوابق و اسناد در بستر شبکه بیتکوین است آشنا باشید. برای آموختن بیشتر در مورد بلاکچین احتمالا باید با چنین تعریفی برخورد کرده باشید: “بلاکچین یک دفتر کل یا حساب پراکندهی غیر متمرکز همگانیست.”
بلاکچین (Blockchain) چیست؟
اگر این فناوری تا این حد پیچیده است، چرا آن را بلاکچین (در لاتین به معنای زنجیره بلوک) میخوانیم؟ در ابتداییترین سطح خود، بلاکچین به معنای واقعی کلمه فقط یک زنجیره بلوک است، اما نه در آنچه بطور مرسوم و عرف معنا میشود. وقتی میگوییم بلاک (block) و چِین (chain)، ما در حقیقت به اطلاعات دیجیتالی (یا بلوک) ذخیره شده در یک پایگاه داده همگانی (یا چِین) اشاره میکنیم.
چه چیز بلاکچین را متمایز میسازد؟
شبکه بلاکچین متصدی مرکزی ندارد و معنای واقعی یک نظام دموکرات است.
اما این جمله به چه معناست؟
از آنجایی که یک دفتر کل مشترک و تغییرناپذیر داریم، اطلاعات موجود در آن برای همگان قابل رویت است. از این رو، هرچیزی که بر اساس بلاکچین بنا شده، ماهیت شفافی دارد و هرکسی را در این مجموعه مسئول اعمال خود قرار میدهد.
سه رکن تکنولوژی بلاکچین
سه ویژگی اصلی تکنولوژی بلاکچین که موجب شده که با استقبال گسترده روبرو شود عبارتند از:
• عدم تمرکز
• شفافیت
• تغییر ناپذیری
رکن اول: عدم تمرکز
پیش از بیتکوین و بیتتورنت، ما بیشتر با خدمات و مدل های متمرکز آشنا بودیم. ساده بگوییم، شما یک نهاد متمرکز دارید که تمام داده هارا ذخیره میکند و برای بدست آوردن اطلاعات مورد نیاز، تنها میبایست با این نهاد در تعامل بود.
مثال دیگر سیتم متمرکز بانک ها هستند. آنها پول شما را نگهداری میکنند و تنها راهی که میتوان مبلغی را از آن به کسی پرداخت کرد از طریق بانک است
کلاینت سرور یا سیستمی که در آن یک سرور مرکزی مسئول فراهم کردن داده هاست مثال کاملی است از:
هنگامی که در گوگل به جستجو میپردازید، شما در واقع یک درخواست به سرور ارسال میکنید که سپس با اطلاعات مربوطه به شما باز میگردد. این نمونه ساده یک کلاینت سرور است.
سیستم های متمرکز برای سالها برای ما مفید واقع شدند اما در عین حال ضعف و آسیبپذیری های خود را نیز دارند.
در ابتدا، از آنجایی که آنها متمرکز هستند، تمام داده ها در یک نقطه ذخیره میشوند و این امر آنرا به هدف قابل دسترس و راحتی برای حمله احتمالی هکرها تبدیل میکند.
اگر قرار باشد سیستم متمرکز، ارتقای نرمافزاری داده شود یا به اصطلاح بروزرسانی (upgrade) شود، کل سیستم را متوقف میکند.
یا برای مثال فرض کنید آن نهاد متمرکز به هر دلیلی خاموش شده و از کار بیافتد، در اینصورت هیچکس قادر نخواهد بود به اطلاعاتی که مالک آن است دسترسی داشته باشد.
یا در بدترین حالت اگر در نظر بگیریم، چه اتفاقی میافتد اگر اطلاعات این نهاد مخدوش شود؟ در آن صورت تمام دادههای موجود در بلاکچین به خطر میافتد.
خب، چه میشود اگر ما این نهاد متمرکز را کنار بگذاریم؟
در یک سیستم غیرمتمرکز ، اطلاعات توسط یک نهاد واحد ذخیره نمی شود. در حقیقت ،همه افراد در این شبکه این اطلاعات را در اختیار دارند.
در یک شبکه غیرمتمرکز ، اگر می خواهید با دوست خود ارتباط برقرار کنید ، می توانید مستقیماً بدون حضور شخص ثالث این کار را انجام دهید. ایدئولوژی اصلی پشت بیتکوین نیز همین بود. تنها شمایید که مسئولیت پول خود را بر عهده دارید. شما می توانید بدون نیاز به مراجعه به بانک پول خود را به هر کس که می خواهید ارسال کنید.
رکن دوم: شفافیت
یکی از جذاب ترین مفاهیم در بلاکچین که غالبا از آن سوء برداشت میشود مفهوم “شفافیت” است. برخی می گویند که بلاکچین به ما حریم خصوصی می دهد در حالی که برخی دیگر معتقد هستند که بلاکچین کاملا شفاف است. چرا فکر می کنید این اتفاق می افتد؟
هویت شخص از طریق رمزنگاریهای پیچیده پنهان می شود و فقط توسط آدرس عمومیشان ( public address ) نشان داده می شود. بنابراین اگر شما دنبال تاریخچه تراکنش فردی بگردید بجای داشتن نام و تعداد بیتکوین (به عنوان مثال آقای صلح جو ۱ بیتکوین (BTC) ارسال کرد)، چنین چیزی خواهید داشت:
“۱MF۱bhsFLkBzzz۹vpFYEmvwT۲TbyCt۷NZJ sent ۱ BTC”
همانطور که مشاهده کردید مشخصات هویتی شخصی که بیتکوین ارسال کرده رمزگذاری شده و محفوظ میماند.
عکس زیر از تراکنشهای اتریوم (Ethereum) منظورمان را روشن میسازد:
بنابراین ، در حالی که هویت واقعی فرد محفوظ میباشد، اما هنوز هم میتوان تمام تراکنشهایی را که توسط آدرس عمومی آنها انجام شده است مشاهده کرد. این سطح از شفافیت قبلاً هرگز در یک سیستم مالی وجود نداشته است.
اگر از منظر ارز دیجیتالی (cryptocurrency) بنگریم، چنانچه آدرس عمومی یکی از این شرکت های بزرگ را بشناسید ، به سادگی میتوانید آن را در یک مرورگر کپی کرده و به تمام تراکنش هایی که انجام داده اند دسترسی داشته باشید و این قضیه بالاجبار همه چیز را شفاف میکنید، چیزی که در گذشته اجباری در موردش وجود نداشته است.
گرچه باید قبول کنیم که همیشه اینطور نیست. ما میدانیم که اکثر این شرکت ها تراکنش های خود را، یا حداقل تمامی تراکنش های خود را با استفاده از ارز دیجیتالی انجام نمیدهند. اکنون تصور کنید چه میشد اگر بلاکچین برای مثال با زنجیره تامین آنها ادغام میشد؟
حال میشود دید که چرا چیزی شبیه به این می تواند برای صنعت مالی بسیار مفید باشد.
رکن سوم: تغییر ناپذیری
در بلاکچین تغییر ناپذیری به این معنا است که به محض ورود چیزی به زنجیره بلوک، نمی توان آن را دستکاری کرد.
می توانید تصور کنید که این موضوع چقدر میتواند برای موسسات مالی ارزشمند باشد.
تصور کنید اگر مردم بدانند که دیگر قادر نیستند تا به اسناد و مدارک و حساب های شرکتها دست ببرند، از چند مورد اختلاس میتوان جلوگیری کرد! و دلیل این موضوع همان قابلیت هَش رمزنگاری شده است.
به زبان ساده تر، هَشینگ (hashing) به معنای گرفتن ورودی با سایزهای متفاوت و تولید خروجی با یک اندازه ثابت میباشد.
حال بیایید ببینیم فرایند هَشینگ چگونه کار می کند. کاری که انجام میدهیم این است که یک سری ورودی های خاصی را وارد مکنیم. برای مثال قصد داریم از ( SHA-256 ) که معادل الگوریتم ایمن هشینگ 256 است استفاده کنیم.
همانطور که در الگوریتم SHA-۲۵۶ مشاهده می کنید، مهم نیست ورودی شما چقدر بزرگ یا کوچک باشد، خروجی ما همیشه دارای طول ثابت ۲۵۶بیت میباشد.
زمانی که شما با حجم وسیعی از دادهها و تراکنش ها سروکار دارید، این قضیه تبدیل به امری حیاتی میشود. بنابراین در اصل بجای حفظ دادهی ورودی ما میتوانیم هَش را مورد بررسی قرار دهیم.
یک تابع هش شده به کلاس ویژهای از توابع هش گفته میشود که دارای ویژگیهای مختلفی است که آن را برای رمزنگاری ایده آل می کند.
برای اینکه بگوییم که یک تابع هَش از نظر امنیتی مطمئن است باید یک سری ویژگیهایی را دارا باشد که یک ویژگی مهم آن به نام “اثر بهمنی” (Avalanche Effect) است ، حال این اثر بهمنی به چه معناست؟
اگر ما تغییر ناچیز در ورودی ایجاد کنیم، تغییراتی که در هَش منعکس میشوند گسترده خواهند بود.
بیاییم توسط SHA-256 آنرا امتحان کنیم:
مشاهده کردید؟ با اینکه حرف اول را فقط از حرف بزرگ لاتین به حرف کوچک تغییر دادیم اما میبینیم که تغییری که در هَش خروجی رخ داده به مراتب گسترده و وسیع است.
اکنون بیایم تا به مقوله قبلیمان که در مورد معماری یا ساختار بلاکچین بود بپردازیم.
چیزی که گفتیم چنین بود:
بلاکچین دارای لیستی مرتبط شامل داده و یک نشانگر هَش است که به بلوک قبلی اشاره دارد، و بدینصورت است که ما یک زنجیره واحد داریم. نشانگر هَش به چه معناست؟ نشانگر هَش نشانگریست که علاوه بر دارا بودن آدرس بلوک قبلی، هَش داده درون بلوک قبلی را نیز دارا میباشد. همین تفاوت ساده بلاک چین را امن و مطمئن میسازد.
تصور کنیم که هکری به بلوک سه حمله کرده و داده ها را تغییر میدهد. بخاطر ویژگیای که توابع هَش دارند، تغییر کوچکی در داده ها هَش را به کلی دگرگون میسازد. این بدین معناست که تغییر ناچیزی در بلوک سه، هَش های ذخیره شده در بلوک دو را تغییر میدهند که خود باعث تغییر در بلوک یک و… میشود و این امر به کلی زنجیره را تغییر میدهد که امری غیر ممکن است. این همان ویژگی است که بلاک چین ها را تغییر ناپذیر میکند.
شبکه های نوین :
متمرکز: سیستم های متمرکز یک قدرت مرکزی دارند که صحت امر را برای مخاطبان شبکه مشخص میکند.
فقط کاربران ممتاز و یا نهاد ها میتوانند در تاریخچه تراکنش ها دخل و تصرف داشته باشند یا تراکنش جدیدی را تایید کنند
غیر متمرکز: سیستم های غیر متمرکز هیچ قدرت مرکزی ای برای تایین صحت امر برای مخاطبان شبکه ندارند.
همه کاربران در شبکه میتوانند به تاریخچه تراکنش ها دسترسی داشته باشند یا تراکنش جدیدی راتایید کنند
عناصر تشکیل دهنده بلوک ها:
“بلوکها” در بلاکچین متشکلاند از تکههای دیجیتالی حاوی اطلاعات
آنها بطور مشخص دارای سه بخش هستند:
- بلوکها اطلاعات مربوط به تراکنشها نظیر تاریخ، زمان و مبلغ دلار(ریال) آخرین خرید شما از دیجی کالا را ذخیره میکنند. (توجه داشته باشید که دیجی کالا در اینجا صرفا جهت مثال بکار رفته و سایت خرده فروشی دیجی کالا حین نگارش این مقاله با قائدهی بلاکچین عمل نمی کند).
- بلوک ها اطلاعات مربوط به شخصی که در تراکنش شرکت میکند را ذخیره میکند. بلوکی برای خریدتان از دیجی کالا در نظر گرفته میشود که نام شما را بهمراه digikala.com,Inc ثبت میکند. بجای استفاده از نام حقیقی شما، خرید شما بدون هرگونه اطلاعات هویتی و با استفاده از یک امضای دیجیتالی منحصر به فرد ثبت میشود، چیزی شبیه به یک نام کاربری.
- بلوکها اطلاعاتی را که آنها را از دیگر بلوک ها متمایز میکند ذخیره میکنند. همانطور که ما اسم هایی داریم تا ما را از یکدیگر متمایز سازند، هر بلوک کد منحصر به فردی را که هَش (hash) نامیده میشود ذخیره میکند تا با استفاده از آن بتوانیم هر بلوک را از دیگری متمایز سازیم.
حال آنکه بلوکی که در بالا مثال زدیم اطلاعات تنها یک خرید از دیجی کالا را ذخیره میکند، اما آنچه که در واقعیت اتفاق میافتد کمی متفاوت است. تنها یک بلوک در بلاکچین بیتکوین در حقیقت میتواند تا سقف ۱مگابایت داده را ذخیره کند. بسته به سایز تراکنشها، یک بلوک به تنهایی میتواند تا چند هزار تراکنش را زیر یک سقف جای دهد.
بلاکچین چگونه کار میکند؟
در ابتدا باهم در نمودار زیر روند کار بلاکچین مرور کنیم:
حال بگذارید به چرخه عملیات با جزییات بیشتری بپردازیم:
وقتی یک بلوک دادهی جدیدی را ذخیره میکند، آن داده به زنجیره بلوک اضافه میشود. بلاکچین، همانطور که از نامش پیداست، متشکل از چند بلوک است که بصورت رشتهای بهم متصل می باشند. برای اینکه یک بلوک به زنجیره بلوک اضافه شود، به چهار چیز نیاز داریم:
- تراکنشی می بایست انجام شود.
بیاییم با همان مثال خرید دیجی کالا پیش برویم. بعد از اینکه بصورت شتابزده از رسید های پرداخت گذشتید، خریدتان را نهایی میکنید. همانطور که در بالا به آن پرداختیم، در بسیاری از موارد یک بلوک بطور بالقوه هزاران تراکنش را بصورت گروهی در میآورد، از این رو خرید شما بصورت پکیج همراه با اطلاعات تراکنش کاربر های دیگر در می آید.
- تراکنش می بایست تایید شود.
پس از انجام خرید، تراکنش شما باید مورد تایید قرار گیرد. در سایر اطلاعات اسناد یا پرونده های عمومی مانند کمیسیون بورس اوراق بهادار، ویکیپدیا، یا حتی کتابخانه محلی شما، شخصی مسئول وارسی اطلاعات جدید وارد شده میباشد. اما در بلاکچین این امر بر عهدهی شبکه ای از کامپیوتر هاست. وقتی شما خریدی از دیجی کالا انجام میدهید، آن شبکه کامپیوتری بسرعت بررسی میکند که آیا تراکنش به درستی انجام گرفته است یا خیر. به عبارت دیگر، آنها اطلاعات خرید را به همراه زمان تراکنش، مبلغ ریال(دلار) و خریدار تطبیق میدهند.(در ادامه به اینکه چگونه اینکار صورت میپذیرد خواهیم پرداخت.)
- تراکنش می بایست در یک بلوک ذخیره شود
بعد اینکه تراکنش شما بعنوان یک تراکنش صحیح مورد تایید قرار گرفت، یک چراغ سبز دریافت میکند. مبلغ ریال(دلار) تراکنش، امضای دیجیتالی شما و امضای دیجیتالی خود دیجی کالا همه و همه در یک بلاک ذخیره میشود. آنجاست که تراکنش شما به صدها یا هزاران تراکنش دیگر شبیه به خود ملحق میشود.
- یک هَش باید به بلوک تعلق بگیرد.
تا زمانی که تمامی تراکنش های بلوک ها تایید شد، یک کد دارای شناسه منحصر بفرد (هَش)به آن تعلق میگیرد. به بلوک همچنین هَش آخرین بلوک اضافه شده به بلاکچین داده میشود. وقتی که تراکنش به اصطلاح هَش شد، آنوقت آن بلوک میتواند به بلاکچین یا زنجیره بلوک اضافه شود.
وقتی بلوک جدید به زنجیره بلوک اضافه شد، در دسترس عموم قرار میگیرد و برای همه، حتی شما، قابل مشاهده میشود. وقتی شما به زنجیره بلوک بیتکوین نگاه میکنید، میبینید که به داده تراکنش، اطلاعات مربوط به زمان، مکان و شخصی توسط آن بلوک به زنجیره اضافه شده دسترسی دارید.