بیتکوین (bitcoin) اولین و محبوبترین ارز دیجیتال جهان است که کاملا غیرمتمرکز است، و توسط مقام یا سازمانی خاص کنترل نمیشود. حال ممکن است از خود بپرسید اگر بیت کوین غیرمتمرکز است، چرا من نمیتوانم بیت کوین های خود را کپی کنم و یا چه چیزی مانع از انجام تراکنشهای میشود که من مالک آنها نیستم؟
در این نوشتار به زبان ساده در مورد نحوه عملکرد بیت کوین صحبت میشود و همچنین بیان میشود که فناوری زیربنای این ارز دیجیتال دارای کاربردهایی در اموری غیر از امور مالی نیز است.
بیت کوین سه مشکل ثبت سوابق را حل میکند و در این میان نیاز به یک ثبت کننده غیرمتمرکز مانند یک بانک نیست. این چالشها به قرار زیر هستند:
۱- اثبات مالکیت بیت کوین ها
۲- جلوگیری از مداخله شخص ثالث با ثبت سوابق تراکنشهای گذشته
۳- فراهم کردن یک دفتر کل معتبر از تراکنشها که قابل اعتماد باشد
اثبات مالکیت بیتکوین
اولین مشکلی که برای بیت کوین مطرح است، اثبات مالکیت است. وقتی تراکنشی در داخل شبکه صورت میگیرد، چگونه ما متوجه میشویم که آن تراکنش از جانب فردی ست که آن بیت کوین ها را در اختیار دارد؟ جواب این سوال، ریشه در الگوریتم های رمزگذاری دارد.
بیت کوین بر اساس نوعی رمزنگاری کار میکند که به آن رمزگذاری SHA-256 میگویند، قبل از معرفی این رمزگذاری، الگوریتم های دیگری نیز برای این موضوع وجود داشت، اما هیچ کدام امنیت لازم را فراهم نمیکرد و امکان شکستن رمزگذاری ها بدون در اختیار داشتن کلید خصوصی آن وجود داشت. در این روش از رمزگذاری، الگوریتم با دریافت ورودی های متغیر ، خروجیهایی با مقدار ثابت را ارائه میدهد ، که در شبکه بیتکوین به آن هش میگویند. تمام الگوریتم های رمزگذاری به این صورت اجرا میشوند که بر اساس یک الگوی منحصر به فرد، بنام کلید خصوصی، هر یک از اجزای یک متن، کد و یا توابع را بر مبنای الگوریتم شان تغییر میدهند. که رمزنگاری کلید خصوصی و عمومی نام دارد. در این نوع رمزنگاری، دو نوع کلید ایجاد میشود. دادههای رمزنگاری شده با یک کلید را میتوان توسط کلید دیگر رمزگشایی کرد و بالعکس. یکی از این کلیدها عمومی است و دیگری را باید به صورت خصوصی نگه داشت.
تابع هش یک معادله ریاضی است که بسیاری از اشکال رمزگذاری مانند امضای دیجیتال را امکانپذیر میکند و شامل همه چیز اعم از پروتکل HTTPS تا پرداختهای انجام شده در وبسایتها میشود. این تابع نیز مانند دیگر توابع است که می توان گفت یک فرمول با مجموعهای از ویژگیهای خاص است که آن را برای رمزگذاری مفید میکند.
تابع هش دادهها را با اندازه و طول متغیر دریافت میکنند و به خروجی یکسان و قطعی تبدیلشان میکنند. به عبارتی دیگر، میتوان گفت تابع هش یک رشته کد با طول متناوب را دریافت و تبدیل به یک خروجی با طول ثابت میکند. توابع Hash مختلف، خروجیهایی با اندازههای متفاوت تولید میکنند، اما اندازههای خروجی برای هر الگوریتم همیشه ثابت است.
خروجیهای الگوریتمهای هش مرسوم و الگوریتمهای مورد استفاده در رمزنگاری، قطعی هستند. قطعی بودن به این معنی است که تا زمانی ورودی تغییر نکند، این الگوریتمها همیشه همان خروجی را تولید میکنند.
به طور معمول، الگوریتمهای Hash رمز ارزها به عنوان توابع یک طرفه طراحی میشوند، بدین معنی که بدون صرف مقدار زیادی زمان و محاسبات پیچیده، نمیتوان آنها را به راحتی برگرداند. به عبارت دیگر، ایجاد خروجی از ورودی کاملاً آسان بوده، اما حرکت در جهت مخالف (تولید ورودی از خروجی) بسیار دشوار است. به طور کلی، یافتن ورودی هرچه دشوارتر باشد، الگوریتم هش امنتر محسوب میشود.
به عنوان مثال، الگوریتم SHA-256 فقط میتواند خروجی با اندازه 256 بیت را تولید کند، در حالی که SHA-1 همیشه یک خروجی 160 بیتی ایجاد میکند.
برای توضیح، بیایید کلمات “Ircc” و “ircc” را از طریق الگوریتم هش SHA-256 (الگویی که در بیت کوین استفاده میشود) اجرا کنیم.
Ircc: 65592d00da56347062e6dc84e8ff978ba021267b288bbe3c7f2cb5c04d797bd4
ircc: 478734e921cc9b571d7ab5fc226dcb2ce59fcab83fb73258ab8082382d86c6ee
توجه داشته باشید که یک تغییر جزئی (بزرگ یا کوچک بودن حرف اول) منجر به یک مقدار Hash کاملا متفاوت میشود. اما از آنجایی که ما از SHA-256 استفاده میکنیم، خروجیها همیشه یک اندازه ثابت 256 بیت (یا 64 کاراکتر مبتنی بر هگزادسیمال) بدون تاثیر از اندازه ورودی خواهند داشت. همچنین، مهم نیست که چند بار دو کلمه را از طریق الگوریتم اجرا کنیم، دو خروجی ثابت میمانند.
برعکس، اگر ورودیهای مشابه را از طریق الگوریتم هش SHA-1 اجرا کنیم، نتایج زیر را خواهیم داشت:
Ircc: a6f9af856be33de008c9f5ffb942e2c4e2d644f7
ircc: 3ec8e2b221402e786dfa6f0884a0e7f7be11c32a
عبارت SHA مخفف عبارت الگوریتمهای هش ایمن (Secure Hash Algorithms) است. این عبارت به مجموعهای از توابع هش رمزنگاری اشاره داشته که الگوریتمهای SHA-0 ،SHA-1 ،SHA-2 و SHA-3 را در بر میگیرد. SHA-256 به همراه SHA-512 و انواع دیگر، بخشی از گروه SHA-2 هستند. در حال حاضر، فقط گروههای SHA-2 و SHA-3 ایمن در نظر گرفته میشوند.
از این قابلیت میتوان برای ارسال پیام سری استفاده کرد و این پیام در این میان برای اشخاص ثالث به صورت سخنانی نامفهوم درمیآید و تنها گیرنده خواهد توانست با کلید خصوصی خود، آن را رمزگشایی کند.
با استفاده از این کلیدها به صورت معکوس میتوان اعتبار ایجاد کننده دادهها را تایید کرد. در این حالت ممکن است پیام ارسالی از جانب فرستنده خصوصی نباشد، اما فرستنده میخواهد گیرنده متوجه شود که این پیام واقعا از اوست و از جانب یک شخص ثالث نیست.
همچنین در این حالت، فرستنده، پیام خود را با کلید عمومی خود رمزنگاری میکند. گیرنده نیز این پیام را با کلید خصوصی خود رمزگشایی میکند و مطمئن میشود که این پیام از جانب فرستنده مورد نظر است و از جانب یک شخص ثالث نیست.
کیف پولهای بیت کوین در واقع ترکیبی از جفت کلید های خصوصی و عمومی هستند. وقتی فردی ID کیف پول خود را به شما میدهد، این آی دی در واقع همان کلید عمومی است. وقتی شما کوین ها را به کیف پول دیگری میفرستید، نرم افزار بیت کوین با استفاده از کلید خصوصی شما تایید میکند که تراکنش از جانب شماست و از جانب یک فرد کلاهبردار نیست.
در این حالت، وقتی که فرستنده میخواهد مقداری بیت کوین برای گیرنده ارسال کند، از کلید خصوصی خود برای امضای تراکنش استفاده میکند. در اینجا، همه افراد شبکه مطمئن هستند که این تراکنش از جانب فرستنده مورد نظر است؛ زیرا کلید عمومی او میتواند این تراکنش را رمزگشایی و تایید کند.
بیت کوین مانند یک دفتر کل است که محتوی ورودیهاست و نشان میدهد که چه کسی چه مقدار بیت کوین را برای فرد دیگر ارسال کرده است و همه این تراکنشها با امضای دیجیتال تایید شدهاند. این درست مانند یک دفتر کل مالی کاغذی است که ورودیها نوشته شدهاند و هر ورودی با امضا تایید شده است.
مداخله کردن در دفتر کل
مشکل دیگری که پیش روی بیت کوین است، مداخله و دستکاری دفتر کل است. فرض کنید من ماه قبل مقداری بیت کوین را برای یکی از دوستان ارسال کردهام و اینک پشیمان هستم. چه چیزی مانع از آن میشود که من بتوانم تراکنش را از دفتر کل حذف کنم و یا آن را تغییر دهم؟ در اینجا با مفهومی به نام هشینگ سر و کار خواهیم داشت.
هشینگ
هش الگوریتمی برای تایید صحت داده هاست. هر پیامی میتواند یک ارزش هش ایجاد کند، اما تغییرات کوچک در این پیام منجر به تغییرات اساسی در ارزش هش میشود. در اینجا به عنوان مثال، دو پیام و ارزش هشی آنها آورده میشود:
فرض کنید که شما به آرشیوی از یک پیام نگاه میکنید که در آن نوشته شده My name is Arthur Kelly ،اگر شما پیشاپیش بدانید که این پیام را من در گذشته نوشتهام و دارای ارزش هشی FE100DDA6D28B2280B34FC228ADAB42E است، میتوانید تایید کنید که این پیام دستکاری نشده است. اگر فردی این سابقه را به صورت My name is ARTHUR kelly تغییر دهد، شما با ارزش هشی 1761420899A8F0B731A2EE56A6F71567 مواجه میشوید و متوجه میشوید که فردی اقدام به مداخله کرده است.
بلاک چین بیتکوین
بیت کوین از هش استفاده میکند و از این طریق تایید میکند که دفتر کل آن مورد مداخله واقع نشده است. مجموعهای از تراکنشها به صورت دورهای به عنوان سابقهای جدید با هم منتشر میشوند که این مجموعه را یک بلاک مینامند. هر بلاک، هش تراکنشهای بلاک های قبلی خود را ذخیره میکند. به عنوان مثال، در شکل بالا تراکنشها در یک دفتر کل سه بلاکی ثبت شدهاند.
اگر من برگردم و تراکنش ۳ را از بلاک اول حذف کنم، همه متوجه میشوند که این نامعتبر است زیرا هش در بلاک ۲ ثابت میکند که بلاک ۱ مورد مداخله واقع شده است.
سپس من بلاک ۲ را هم ویرایش میکنم تا هشی داشته باشم که بلاک ۱ جعل شده من را تایید کند. این هم کار نمیکند؛ زیرا ارزش هشی در بلاک ۲ به عنوان ورودی برای ایجاد هش اعتبار سنج بلاک ۳ مورد استفاده قرار میگیرد و اینک هش بلاک ۳ آشکار میکند که بلاک ۲ دستکاری شده است.
به طور خلاصه میتوان گفت که دستکاری هر قسمتی از این دفتر کل غیر ممکن است و برای کوچکترین دستکاری باید یک دفتر کل کاملا جدید ایجاد کرد. این دفتر کل به همین دلیل است که بلاک چین نامیده میشود زیرا همه بلاکها کاملا مرتبط هستند و نمیتوان آنها را از همدیگر جدا کرد.
کدام دفتر کل صحیح و معتبر است؟
اگرچه همه دفتر های بلاک چینی خاص قابل مداخله نیستند، اما چه چیزی افراد را از ایجاد دفتر کل رقیب جدید باز میدارد؟ چگونه ما میدانیم که کدام دفتر کل معتبر است؟
فرض کنید که بلاک چین ما دو بلاک داشته باشد. سپس من سه تراکنش جدید را منتشر کنم که به دفتر کل الحاق شده باشند. اما همزمان، سه تراکنش دیگر را نیز منتشر کنم که در دفتر کل ضمیمه شده باشند. اینک ما دو بلاک چین رقیب داریم.
گواه اثبات کار
این از طریق مفهومی بنام گواه اثبات کار (PoW) حل میشود. کامپیوترها ارزشهای هشی را به مجموعهای صفر و یک مانند زیر تبدیل میکنند:
فرض کنید ما مانعی ایجاد کردهایم که یک بلاک نمیتواند به دفتر کل اضافه شود، مگر اینکه هش تایید کند که بلاک قبلی با صفر شروع میشود. سپس ما ۵۰ درصد شانس خواهیم داشت که به هشی برسیم که کار میکند و مورد نظر ماست.
به طور مشابهی، اگر ما مانعی ایجاد کنیم که باید با دو صفر شروع شود، پس ۲۵ درصد شانس خواهیم داشت.
این به صورت نمایی افزایش مییابد. فرضا اگر مانعی ایجاد کنیم که باید با ۳۲ صفر شروع شود، شانس ما تقریبا ۱ در ۴ میلیارد خواهد بود.
بیت کوین چنین مانعی را ایجاد میکند. با این وجود، هش بلاک قبلی همیشه ثابت میماند. چگونه ما هشی را دریافت میکنیم که این مانع را با یک ورودی ثابت حل میکند؟ این کار با اضافه کردن یک مقدار دلخواه تصادفی به هر بلاک انجام میشود. این را اصطلاحا ارزش نانس (nonce) مینامند.
در زمان محاسبه هش، این نانس با بلاک قبلی ترکیب میشود. قبل از اضافه کردن یک بلاک به دفتر کل، کامپیوترهای سراسر جهان از طریق ارزشهای تصادفی به حرکت در میآیند و به جستجوی ارزش نانسی میپردازند که منجر به هشی شود که با تعداد معینی صفر شروع میشود. پیدا کردن آن ارزش نانس همان گواه اثبات کار (POW) است.
این از لحاظ محاسباتی بسیار شدید است و به طور متوسط میتوان پیشبینی کرد که چه مدت به طول میانجامد. در مورد بیت کوین، آن یک بلاک است که به طور متوسط ۱۰ دقیقه به طول میانجامد. به مرور زمان، کامپیوترها قدرتمند تر میشوند و بنابراین سختی بیت کوین افزایش پیدا میکند و هر زمان که عدد خاصی از یک بلاک منتشر میشود، صفرهای بیشتری مورد نیاز خواهد بود.
طولانیترین دفتر کل همان قدیمیترین است
از آنجا که گواه اثبات کار اجازه نمیدهد که بلاکهای جدید سریعتر از نرخ خاصی منتشر شوند، میدانیم که هر دفتر کلی که از دفتر کل دیگر طولانیتر باشد، از آن دفتر کل قدیمیتر است. این غیرممکن است که دفتر کلی بلاک چینی ایجاد کنیم که از دفتر کل رسمی طویلتر باشد، مگر این که قدرت محاسباتی که ما در اختیار داریم بیش از قدرت محاسباتی همه کاربران بیت کوین با هم باشد.
به طور خلاصه میتوان گفت که وقتی دفتر کلهای رقیب بر روی اینترنت وجود دارند، همه کاربران بیت کوین آنی را که دارای بیشترین بلاک است به عنوان قدیمیترین میشناسند و بنابراین آن را یک دفتر کل معتبر تلقی میکنند.
بنابراین میتوان بیت کوین را در سه مرحله ساده زیر توضیح داد:
امضاهای دیجیتال مالکیت بیت کوینها را تایید میکنند.
هشها صحت تراکنشهای لیست شده بر روی دفتر کل را تایید میکنند.
گواه اثبات کار از ایجاد دفتر کلهای ناصادق جلوگیری میکند.
میتوانید ببینید که بیت کوین دفتر کلی غیرمتمرکز است که همه کاربران به آن میتوانند اعتماد کنند. این دفتر کل مجبور نیست که تنها پول ذخیره کند. بلاک چینهای دیگری را میتوان ایجاد کرد که به افراد اجازه اشتراک اطلاعات بدهند و در این میان نیازی به واسطه نباشد. در این زمینه میتوان به مثالهای زیر اشاره کرد:
بلاک چین میتواند از جعل جلوگیری کند. فرض کنید یک کارخانهدار محصولی را بیرون میدهد و برند خاصی را بر روی آن حک میکند و همزمان این محصول را نیز بر روی بلاک چین ثبت میکند. هر زمان که این محصول دست به دست شود، کارخانهدار آن را بر روی بلاک چین ثبت میکند و از این طریق وقتی شما محصول را دریافت میکنید، با مراجعه به بلاک چین و سوابق ثبت شده آن میتوانید در مورد جعل بودن و یا جعل نبودن این محصول اطمینان حاصل کنید.
بلاک چین میتواند در زمینه تدارکات نیز مفید واقع شود. در این حالت، شرکتهای بزرگی مانند Ford شرکتهای کوچکتر عرضه کننده خود را از طریق بلاک چین مشخص میکنند و دیگر کوچکترین تغییری در این میان سریع مشخص میشود و شرکت اصلی میتواند سریع به آن واکنش نشان دهد.
بلاک چین همکاری متقابل بین شرکتها را نیز آسان میکند و این شرکتها میتوانند از طریق یک بلاک چین امن به اشتراک اطلاعات بپردازند و این منجر به پردازش شدن سریعتر مطالبات خواهد شد و در نهایت، هزینههای مربوط به فرآیند مبادله اطلاعات دستی را نیز کاهش خواهد داد.
پس میبینیم که فناوری زیربنای بیت کوین واقعا کاربردهای زیادی میتواند داشته باشد.
امروز مشکلی که پیش روی بلاک چین است، این است که کسب و کار ها نمیتواند آن را کنترل کنند و هر تغییری در آن، نیازمند اجماع اکثریت است. این برای کسب و کارها که میخواهند نوآوری داشته باشند و از رقبا پیش بیافتند چندان جالب نیست.
مشکل دیگری که در این میان مطرح است، این است که راهاندازی اولیه بلاکچین هزینههایی دارد و شرکت راهاندازی کننده باید هزینههایی را برای دیگران متحمل شود. بعد از این که شرکتی یک بلاک چین را با هزینه خود راهاندازی کرد، همه افراد موجود در آن صنعت میتوانند از آن بلاک چین استفاده کنند و بنابراین کمتر کسی زیر بار این هزینه اولیه خواهد رفت.
در نهایت باید گفت که حفاظت دادهای که در بلاک چین صورت میگیرد، گاهی با قانون جور در نمیآید. دادهها در بلاک چین غیر قابل تغییر هستند و گاهی قوانین ایجاب میکنند که دادههایی تغییر داده شوند. البته برای این مشکل راهحلهایی وجود دارد که خارج از حدود این مقاله است.
با این وجود، بلاک چین کاربردهای تجاری زیادی میتواند داشته باشد. این کاربردها از بیت کوین شروع شده و امروزه کاربردهای دیگری را نیز شاهد هستیم. بلاک چین میتواند به اشتراک اطلاعات به صورت ایمن و بین افرادی که همدیگر را نمیشناسند، کمک کند. شما تنها کاری که باید انجام دهید، این است که کاربرد بلاک چین را برای صنعت خود پیدا کنید و با در نظر گرفتن قوانین حال و آینده اقدام به استفاده از بلاک چین کنید.