یکی از بزرگترین مشکلاتی که افراد تازهکار در دنیای ارزهای دیجیتال با آن سر و کار دارند، درک مفهوم و چگونگی کار بیت کوین است. تس رینیرسون (Tess Rinearson) در پستی ۲ قسمتی که در مدیوم منتشر کرده است، به زبان خیلی ساده و با استفاده از ایموجیها به تشریح چگونگی سازوکار بیت کوین و بلاک چین آن میپردازد. متن کامل این مقاله را در ادامه میخوانید.
بیتکوین را میتوان انقلابی در چگونگی ذخیره و خرج کردن پول دیجیتالی دانست. این ارز دیجیتال، این قابلیت را دارد که بقیه جنبههای زندگی ما را هم تحت تاثیر قرار دهد. برای درک آن نیازی نیست که یک ریاضیدان و یا یک رمزنگار باشید. در ادامه با این مقاله جذاب همراه باشید. مطمئنم پس از خواندن آن، این پست را به دوستان خود که نمیدانید چگونه بیت کوین را برایشان شرح دهید ارسال خواهید کرد 🙂
فرض کنید که من قرار است با استفاده از اینترنت، یک فیلم برای شما ارسال کنم. فایل فیلم را در یک ایمیل پیوست میکنم و پس از فشردن دکمه ارسال، چند لحظه بعد شما آن را دریافت میکنید. شما میتوانید این فیلم را دانلود و تماشا کنید و یا میتوانید آن را پاک کنید. میتوانید هر کاری دلتان میخواهد با آن انجام دهید.
اما این را به خاطر داشته باشید؛ من هنوز یک نسخه از این تعاملی که بین ما اتفاق افتاد، یعنی همان فیلم را دارم.
اطلاعات دیجیتالی در اینترنت اینگونه جابهجا میشوند. هنگام ارسال یک فایل، شما در واقع خودِ محتوا را منتقل نمیکنید، بلکه یک نسخه رونوشت و کپی از آن تهیه میکنید. و تا به امروز این روش به خوبی کار کرده است. هر چند ممکن است این عمل قانونی و یا منصفانه نباشد، اما بعید است که کپی کردن یک آهنگ و یا فیلم به اقتصاد ضربه مهلکی وارد کند.
اما اگر قرار باشد به جای فایل، پول را کپی کنیم چه؟
در ابتدا شاید استفاده از ایمیل برای ایجاد پول دیجیتالِ نامحدود جذاب به نظر برسد، اما وقتی همه شروع به انجام این کار کنند چه اتفاقی میافتد؟ تورمی وحشتناک بر جامعه حاکم خواهد شد و اقتصاد رو به زوال خواهد رفت. اگر من برای شما یک دلار ارسال کنم، اینکه نتوانم یک نسخه و کپی از آن را برای خودم نگه دارم خیلی مهم است. در واقع من نباید بتوانم که یک پول را دو بار خرج کنم.
معمولا، در دنیای نقل و انتقالات مبتنی بر سیم و کارتهای اعتباری، پولهای دیجیتال به صورت مرکزی کنترل میشوند تا از تکثیر آنها جلوگیری شود.
به عنوان مثال در بانک شما یک پایگاه داده (دیتابیس) که اطلاعات همه حسابها را در خود ذخیره کرده است، تایید میکند که چه کسی مالک چه چیزی است. این سیستم به یک مرجع و قدرت مرکزی و متمرکز متکی است که مفهومی آشنا برای همهی ماست. واضح است که این مرجع مرکزی کنترل و دسترسی کاملی روی پول شما دارد.
اما اگر راه دیگری وجود داشته باشد چه؟ اگر برای اثبات مالکیت و انتقال پول به جای استفاده از بانک و بقیه سازمانهای مالی، از یک قدرت توزیعشده که توسط یک شخص و یا نهاد خاصی کنترل نمیشود استفاده کنیم چه؟
چه میشود اگر پول ما دارای ارزش باشد، نه به این دلیل که ما به قدرت دولت برای حمایت از آن اعتماد داریم، بلکه به این دلیل که به قدرت ریاضیات اعتماد داریم؟ پاسخ به این سوالها ما را به بیت کوین میرسانند.
معرفی بیت کوین
بیت کوین یک سیستم ارز دیجیتال است که به هیچ نهاد و دولتی وابسته نیست. کلمه bitcoin با حرف b کوچک، نام خود ارز دیجیتال است. سیستم و مفهوم کلی Bitcoin با B بزرگ، در سال ۲۰۰۹ ایجاد شد، اما واحدهای ارزی بیت کوین به طور مداوم طی فرآیندی به نام استخراج تولید میشوند. این فرآیند همانند استخراج طلاست، اما طلای دیجیتال قرن ۲۱ام.
بنابراین بیت کوین دارای دو مفهوم است: ۱- شبکه ۲- واحدهای ارز دیجیتال که روی این شبکه منتقل میشوند
تمامی تراکنشهای شبکه بیت کوین برای همیشه بر روی بلاک چین آن ثبت میشوند. بلاک چین لیستی محرمانه نیست که توسط یک مقام و یا مرجع مرکزی از آن محافظت شود.
بلاک چین در واقع لیستی عمومی و توزیعشدهای است که هر کامپیوتری که در شبکه آن مشارکت میکند، یک نسخه از آن را دارد. بلاک چین بیت کوین یک دفترکل تغییرناپذیر، عمومی و توزیعشده است.
منظور از تغییرناپذیر این است که به محض اینکه تراکنشی برای چند ساعت بر روی بلاک چین ثبت شود، دیگر تغییر و یا پاک کردن آن غیرممکن میشود. دلیل این امر این است که تراکنشهای بعدی بر مبنای اطلاعات تراکنش پیشین انجام میشوند و بدین ترتیب بلاکها ساخته میشوند.
عمومی بودن بلاک چین به این معناست که هرکسی (نه فقط مدیران بانک) میتواند به بلاک چین دسترسی داشته باشد. البته این دسترسی بدان معنا نیست که شما دقیقا بدانید چه کسی پول را ارسال و دریافت میکند، چرا که سوابق تراکنشها با نوعی نام مستعار (که وارد جزئیات فنی آن نمیشویم) ثبت میشوند. هویت گیرنده و فرستنده با استفاده از نامهای ساختگی پنهان میشود. در رابطه با بیت کوین این نام ساختگی در واقع یک رشته طولانی از اعداد است.
وقتی مدعی میشویم که بلاک چین بیت کوین توزیعشده است، منظورمان این است که نسخههای همگامسازیشدهی بلاک چین توسط کامپیوترهای مختلف در جهان نگهداری میشوند. هیچ نسخه اصلی و برتری وجود ندارد، همه نسخهها با هم برابرند.
هر کس که به بلاک چین بیت کوین وصل میشود یک نسخه از کل آن را دریافت میکند. حالا اگر آن فرد شبکه بیت کوین را ترک کند یا نسخه خودش را نابود کند چه میشود؟ هیچ اتفاقی رخ نمیدهد چون بقیه هستند.
در نهایت دفترکل (Ledger) بودن بلاک چین به این معناست که میتوان آن را به عنوان لیستی از تراکنشها در نظر گرفت. در واقع آن را معادل تاریخچه تراکنشها در موسسه بانکی بدانید.
این دفترکل توزیعشده «بلاک چین» نامیده میشود، چرا که مجموعهای از چند تراکنش است که با یکدیگر تشکیل یک بلاک را میدهند و در نهایت این بلاکها به صورت زنجیرهوار به یکدیگر متصل میشوند. ایجاد هر بلاک ۱۰ دقیقه زمان نیاز دارد.
برای درک بهتر قدرت یک دفترکل توزیعشدهی عمومی، بیایید تراکنشی که دربرگیرنده مقداری بیت کوین به ارزش ۵ دلار است را تصور کنیم.
فرض کنید دوست من، آلیس، مقداری بیت کوین به ارزش ۵ دلار را برای من ارسال میکند. همانند تمامی تراکنشها، این تراکنش نیز بر روی بلاک چین ثبت میشود. سپس، من این مقدار بیت کوین را برای شما ارسال میکنم و حالا تمامی نسخههای بلاک چین نشان میدهند که شما اکنون صاحب آن بیت کوینی هستید که متعلق به من بود و پیش از آن نیز متعلق به آلیس بود.
نیازی نیست که هیچ کدام از ما، نه من، نه شما و نه آلیس، از یک مرجع و یک پایگاه داده مرکزی استعلام کنیم تا بدانیم که چه چیزی برای چه کسی است و یا اینکه برای انجام این تراکنشها از کسی کسب اجازه کنیم. قدرت غیرمتمرکز است، این قدرت در تمامی نسخههای بلاک چین در سرتاسر جهان توزیعشده است.
شاید برایتان سوال شود که آلیس بیت کوینی که برای من ارسال کرد را از کجا به دست آورده است؟ پاسخ کوتاه به این سوال این است که احتمالا کسی آن را برای او ارسال کرده است. تقریبا هر کسی به این ترتیب صاحب بیت کوین میشود.
اما این سکهها باید برای اولین بار به گونهای ایجاد و یا تولید میشدند، این اتفاق چگونه رقم خورد؟
یک بیت کوین چگونه متولد میشود؟
دلارها وقتی متولد میشوند که دولت ایالات متحده آمریکا آنها را چاپ میکند، درست همانطور که سایر ارزهای معمول توسط دولتهای مربوطه صادر میشوند. در گذشته، پشتوانه دلار آمریکا مقدار معادلی طلا بود که در خزانه ایالات متحده نگهداری میشد. در آن زمان عرضه ارز جدید مستلزم دارا بودن میزان متناسبی طلا بود. اما امروزه دیگر دلار پشتوانهای ندارد.
بیت کوین در جریان فرآیندی به نام استخراج (ماینینگ) ایجاد و تولید میشود. لازم به ذکر است که این استخراج به صورت دیجیتالی انجام میشود، و به جای بیل و دینامیت از کامپیوتر و نرمافزار استفاده میشود.
برای افزودن یک بلاک جدید به بلاک چین، باید معادلات و مسائل پیچیده ریاضی حل شوند. ماینری که اول از همه این معادلات را حل کند و به جواب برسد، به او پاداش تعلق میگیرد. پاداش او بیت کوینهای جدید و تازه ایجاد شده است. این نحوه استخراج بیت کوین است.
به عبارت دیگر، در فرآیند استخراج دو عمل انجام میشود؛ بلاک جدیدی به بلاک چین افزوده میشود و بیت کوینهای جدید تولید میشود. این معاملات و مسائل ریاضی که پیشتر به آن اشاره کردیم و ماینرها برای حل آن با یکدیگر به رقابت میپردازند، شامل فرآیندی به نام هش کردن است.
هش کردن به زبان ساده
هش همانند اثر انگشت برای دادههاست، به این صورت که سیستم به صورت کاملا منحصر به فرد بخشی از محتوای دیجیتال مانند عکس، فیلم، رمزعبور، متن و یا هر چیز دیگری را یکی میکند. این خروجی طی فرآیندی به نام هش کردن، از خود محتوای دیجیتال حاصل میشود و میتوان به فرم رشتهای حروف، اعداد و یا هر نشانه دیگر باشد.
برای مثال دو عبارت «arzdigital» و «bitcoin10000000» را در نظر بگیرید. این دو عبارت از نظر تعداد حروف و اندازه با یکدیگر متفاوت هستند. حالا هش این دو عبارت را در تابع SHA ۲۵۶ مشاهده میکنید:
هش عبارت «arzdigital»:
ac۴۲۱۶۵f۳۹۰aef۲۹۹a۴۱d۶d۷a۷۴d۴fb۹۰۹۱۴۵f۶e۴۵f۴feb۵۰۵۵۱۹c۰۸۲۸۰۲۱۶۰c
هش عبارت «bitcoin10000000»:
۴dd۲۳eacecd۸۰۸۲af۶۴d۹۰۷f۱۴a۷۵۴cec۲۵۹c۹۰۰۴b۱۹۰۶f۲۳c۸۳۶۹۸eb۰۹۹۴af۹
همانطور که مشاهده میکنید، اگر چه اندازه دو عبارت با هم متفاوت بود اما اندازه هش آنها کاملا یکسان است. تابع هش یک قابلیت فوقالعاده دیگر هم دارد: کوچکترین تغییر در ورودی، هش را کاملا تغییر میدهد.
هش کردن، یک مفهوم کلی و بنیادینی در علوم کامپیوتر است که به طور گستردهای در پشت پردهی عملیات رایانهای مورد استفاده قرار میگیرد. اصولا سرویسهای ارائهدهنده خدمات آنلاین برای افزایش امنیت به جای رمزعبورهای واقعی، هشهای رمزعبورها را نگه میدارند. زمانی که شما میخواهید وارد سیستم شوید، هش رمزعبوری که وارد کردید با هش رمزعبور واقعی شما مقایسه میکنند.
فیسبوک از هشها برای بررسی مناسب بودن تصاویر آپلود شده استفاده میکند. هیچ شخصی در فیسبوک مسئول این کار نیست که تک تک عکسهای این پلتفرم را چک کند و از اینکه محتوای خشونتآمیز و یا مستهجن ندارد، اطمینان حاصل کند.
در عوض، فیسبوک عکسهایی که به عنوان عکس نامناسب گزارش شدهاند را هش میکند و لیستی از اثر انگشتهایی که حاوی محتوای بد هستند را ایجاد میکند. هر بار که عکسی بر روی فیسبوک آپلود میشود، با استفاده از تابع مشابهی هش میشود. هش حاصل با لیست هشهای ممنوعه مقایسه میشود و در صورت مطابقت، فیسبوک تشخیص میدهد که آن عکس مناسب نیست.
به طور معمول، وقتی که نرمافزار تابع هش را اجرا میکند، دادههای ورودی مانند عکس را دریافت میکند و خروجی رشته نامفهومی است که در واقع همان هش است.
برای نمونه بیایید تصویر این سگ را به تابع هشی با نام SHA-256 بدهیم.
واضح است که تصویر این حیوان بامزه، دربرگیرنده هیچ محتوای خشونتآمیزی نیست. اما هیچ کسی در فیسبوک این تصویر را بررسی نمیکند. در عوض نرمافزاری در فیسبوک هش آن را که به صورت زیر است کنترل میکند:
۸EC۹D۴۷۱۸F۹۱۹C۶۰۸۷CA۵۸۹EDA۰۹E۷DD۹A۷ACCDB۸۲۰F۴۲B۴۱۹۶E۱D۰D۴BEDE۷۷A
رقم بالا خروجی تابع SHA-256 است، وقتی که تصویر سگ را به آن دادیم. همانطور که گفتیم، یکی از ویژگیهای جالب تابع هش این است که اگر کمی تصویر را تغییر دهیم، خروجی آن کاملا متفاوت خواهد بود.
مثلا با تغییر یک پیکسل از عکس این سگ، و قرار دادن نقطهای سیاه به اندازه ۱ پیکسل بالای چشم او، هشی کاملا متفاوت از تصویر اصلی دریافت خواهیم کرد:
۰۳۹E۱AF۹۲F۷D۰۰۷۷۵ECE۳۵C۲۲۱۶FC۳F۷F۰BBCD۳۱F۹۱۲A۱۰۵D۲۶۰۱۳۸۰D۸DEABA۲
حالا، در ادامه این پست ما میتوانیم از محتوا و مقادیر مرتبط به هش واقعی استفاده کنیم، اما از آنجایی که این مقاله زمینه آموزشی دارد و هشها هم به نوعی قابل تفکیک و مخاطبپسند نیستند، از ایموجیها برای نمایش مقادیر ورودی و خروجی استفاده میکنیم. در مثال زیر، ورودی (محتوایی که قرار است هش شود)، با گربه و خروجی (نتیجه هش) با یک ربان نمایش داده شده است.
تصور کنید فیسبوک تابع هش خود را بر روی دو تصویر نامناسب زیر اجرا کرده است. بیایید آنها ? و ❌ بنامیم. هش خروجی به صورت ? و ? خواهد بود.
بعدتر، یکی از کاربران تصویری را آپلود میکند که ما نمیدانیم چیست وآن را (؟) مینامیم. فیسبوک این عکس را هش میکند و نتیجه ? خواهد بود.
اگر چه هیچکس به این عکس نگاه ننداخته، اما فیسبوک میداند که این یک تصویر نامناسب است چرا که هش آن مطابق هش ? است. در واقع نیازی نیست که کسی عکس را مستقیما بررسی و چک کند.
شناسایی عکسها تنها یکی از هزاران کاربرد هش کردن است. استخراج بیت کوین که سبب تولید بیت کوین جدید و افزودن بلاک جدید به بلاک چین میشود، یکی دیگر از کاربردهای آن است.
هش کردن و بلاک چین بیت کوین
بلاک چین بیت کوین دفترکلی است که دربرگیرنده تمام تراکنشهای بیت کوین است. بلاک چین در واقع زنجیرهای از بلاکهاست که و بلاک شامل گروهی از تراکنشهای انجام شده بر روی شبکه بیت کوین است. میتوانید در ذهنتان بلاک چین را شبیه به یک سری بسته تجسم کنید که هر حاوی تراکنشهایی هستند که در طی مدت زمان ۱۰ دقیقه انجام میشوند.
یا ممکن است آن را همانند بستههای انبار شده بالای یکدیگر تجسم کنید که اولین بلاک تراکنشها در پایینترین قسمت و جدیدترین در بالا قرار دارد. میتوان تصور کرد که دستکاری یک جعبه در قسمت زیرین سبب فروریختن تمام جعبههای بالایی خواهد شد. بنابراین برای تغییر یک بلاک در بلاک چین مجبور به تغییر گسترده بلاک های قبل خواهید بود که در بلاک چینهای بزرگی مثل بیت کوین تقریبا غیرممکن است.
هر بلاک یک هش منحصر به فرد دارد، اثر انگشتی که به شکل رشتههای بسیار بزرگی از اعداد و به صورت رشتهای از کاراکترهای درهم و برهم نشان داده میشود. به عنوان نمونه هش یک بلاک ممکن است به صورت “00000000003e95b0ac78cb961d0” باشد.
برای اینکه بحث ما سادهتر و قابل فهمتر باشد، اجازه دهید از ایموجیها به جای شماره برای نشان دادن هش استفاده کنیم. بیایید هش بلاک اول را به صورت ⚽، بلاک دوم را ? و بلاک سوم را با ? نشان دهیم. حال با استفاده از ایموجیها، بلاک چین را میتوان به شکل زیر نمایش داد.
همان مثالی که دوست من آلیس بیت کوینی به ارزش ۵ دلار برایم ارسال کرد و من نیز میخواهم آن را برای شما ارسال کنم را در نظر بگیرید. هنگامی که من این کار را انجام میدهم، تراکنش همراه با بسیاری از تراکنشهای دیگر در بلاک جدیدی به زنجیره افزوده میشود. هر بلاک در زنجیره میداند که در کدام دنباله قرار دارد، زیرا حاوی هش بلاک پیش از خود است. به عبارت دیگر، بلاک سوم نه تنها شامل گروهی از تراکنشهاست؛ بلکه حاوی هش بلاک قبلی ? نیز هست.
تصور کنید که سیستم بیت کوین چند ثانیه پیش بلاک شماره ۳ را هش کرد (?را ایجاد کرد). وقتی که من ۵ دلار را به شما انتقال دهم، بیت کوین تراکنش ما را در بلاک جدید قرار میدهد. این بلاک جدید که ما آن را بلاک شماره ۴ مینامیم، هنوز هشی ندارد و فعلا به جای آن علامت سوال قرار میدهیم.
بخش جالب ماجرا اینجاست. کامپیوترهای قدرتمندی که ماینر نامیده میشوند برای افزودن بلاک شماره ۴ به زنجیره، با حل معادلات و مسائل پیچیده ریاضی با یکدیگر به رقابت میپردازند. اولین ماینری که موفق شود هش بلاک جدید را محاسبه کند برنده است و صاحب آن ۱۲.۵ بیت کوین جدید را به عنوان پاداش دریافت میکند.
لازم به ذکر است که تقریبا هر ۴ سال یکبار پاداش استخراج بیت کوین کاهش مییابد و نصف میشود.
اینگونه است که پول جدید «استخراج» میشود. به محض اینکه یک هش درست به دست آمد، بلافاصله بین ماینرهای دیگر توزیع میشود. ماینرها هش جدید را تایید میکنند و آن را به نسخه بلاک چین خود اضافه میکنند. پس از این، مسابقه برای یافتن هش بلاک بعدی زنجیره آغاز میشود.
هش کردن در کل فرآیند آسانی است و کامپوترها و لپتاپهای معمولی میتوانند هزاران هش در ثانیه ایجاد کنند. اما در شبکه بیت کوین، ماینرها برای به دست آوردن هش درست به طور متوسط ۱۰ دقیقه زمان صرف میکنند.
سیستم بیت کوین عمدا طوری طراحی شده که پیدا کردن یک هش قابل قبول و درست را بسیار سخت میکند. یک هش میتواند هر عدد بزرگی باشد، عددی که صرفا یکی از تریلیون احتمالهای موجود باشد.
بنابراین، ماینرها میخواهند یک مقدار هش نسبتا کوچکی پیدا کنند، و تنها راه رسیدن به آن این است که بارها و بارها امتحان کنند. هر کدام از این تلاشها باید متفاوت باشد. ماینر نمیتواند روش هش کردن خود را تغییر دهد، اما میتواند چیزی که هش میکند را اندکی تغییر دهد.
آنها این کار را با کمک چیزی به نام نانس (Nonce) انجام میدهند که به نوعی شبیه به همان پیکسل سیاهی است که ما پیشتر به تصویر سگ اضافه کردیم.
به یاد آورید که اضافه کردن تنها یک پیکسل سبب شد که هش این تصویر کاملا متفاوت از هش تصویر اصلی باشد. چرا که تغییر محتوای دیجیتالی حتی در همین حد اندک سبب میشود که هش به کلی متفاوت و غیرقابل پیشبینی باشد.
یک نانس در واقع یک حدس بدون حساب و کتاب است، عددی که بر مبنای سعی و خطا و با امید اینکه سبب میشود که هشی که حاصل میشود، هش برنده باشد، به بلاک بیت کوین اضافه میشود.
ماینرها همه تراکنشها به علاوه هش بلاک پیشین را در بلاک جدیدی قرار میدهند، در نهایت نانس را اضافه میکنند و نتیجه را هش میکنند.
هر ماینری با امید اینکه بالاخره یکی از تلاشهایش به ثمر بنشیند، عددهای زیادی برای نانس امتحان میکند. وقتی که این اعداد درون بلاک قرار میگیرند، سبب میشوند که هش بلاک عدد نسبتا کوچکی باشد.
در واقع، ممکن است ماینرهای موفق میلیونها عدد را به عنوان حدس برای نانس به کار برند تا اینکه در نهایت یکی از آنها درست باشد.
این روزها، کل ماینرهایی که برای استخراج بلاک جدید تلاش میکنند معمولا در مجموع، کادریلیون (۱۰۱۵) عدد را امتحان میکنند تا یک هش درست را به دست آورند. هر ۱۰ دقیقه یک برنده دارد، چرا که استخراجکنندگان صاحب فارمهای بزرگ و منابع محاسباتی بسیار قدرتمندی هستند. اگر متوسط زمان استخراج به زیر ۱۰ دقیقه برسد، سیستم بیت کوین به طور خودکار با تغییر سایز هش مورد قبول، معادلات ریاضی را سختتر میکند که به آن افزایش سختی استخراج هم میگویند.
ارزش طلا به این خاطر است که یک فلز کمیاب است، به همین ترتیب هش برنده با توجه به اینکه یک عدد کمیاب است، ارزش پیدا میکند. عددی که ویژگی خاصی (اندازه کوچک) دارد و این ویژگی آن را بسیار نادر و با ارزش میسازد.
ماینرها با امید اینکه اولین کسی باشند که عدد نانس را درست حدس میزنند و چراغی در تاریکی روشن کنند، آغاز به کار میکنند. به عنوان مثال ممکن است الزام شبکه بیت کوین این باشد که هش کوچکتر از 0000000003e95b0acc32ac089222 باشد. استراتژی ماینر برنده این است که به اندازه کافی توان کامپیوتری و محاسباتی در اختیار داشته باشد تا بتواند هش را به درستی حدس بزند.
شبکه بیت کوین خواستار هشهایی که از یک اندازه خاصی کوچکتر باشند. برای ادامه فرآیند بهره بردن از ایموجیها برای روشنتر شدن مطلب، بیایید تصور کنیم که این محدودیتها دوستانهترند. برای مثال بیایید فرض کنیم که محدودیت شبکه این است که هشها باید ایموجی حیوان باشند. در اولین تلاش، هشی که ماینرها به دست میآورند به صورت زیر است.
تنها یکی از ماینرها توانست این محدودیت را برآورده کند. نه شکوفه گیلاس و نه گلابی هیچ کدام حیوان نیستند، اما نهنگ این الزام را برآورده کرد و یک حیوان است.
از آنجایی که ماینر دوم هش درستی را پیدا کرده، مستحق دریافت پاداش میشود. این پاداش که همان پاداش استخراج است در واقع بیت کوینهای جدیدی است که در نتیجه تولید بلاک جدید تولید میشود.
اگر استخراج خیلی سریع اتفاق بیفتد، بیت کوین در سیستم طغیان خواهد کرد و سبب ایجاد تورم خواهد شد. برای جلوگیری از رخ دادن چنین اتفاقی، نرمافزار بیت کوین به گونهای نوشته شده است که دارای یک محدودیت قابل تنظیم است. اگر هشها به راحتی به دست بیایند، شبکه میتواند محدودیت بیشتری را اعمال کند.
مثلا در بلاک چین ایموجی ما، برای رفع مشکل ماین کردن سریع بلاک محدودیتی که اعمال میکنند به صورت زیر باشد: «هش بعدی باید حیوان باشد و علاوه بر این حیوانی باشد که چنگال دارد».
ماینرها تابع هش خود را اجرا کردند و هشهای زیر را به دست آوردند.
هیچکدام از این هشها حیوان چنگالدار نیست. پس آنها باید دوباره تلاش کنند.
در این مرحله، همانطور که مشاهده میکنید ماینر سوم یک هش درست پیدا کرده است؛ خرسهای حیوانات چنگالدار هستند. بنابراین این ماینر میتواند هش به دست آمده را به همراه دادههای داخل بلاک به شبکه مخابره کند.
از آنجا که توابع هش میتوانند به سرعت اجرا شوند، دیگر ماینرها میتوانند تابع هش را بر روی این بلاک اجرا کنند و به صحت سنجی هش به دست آمده ? بپردازند و از اینکه محدودیتها را ارضا کرده است اطمینان حاصل کنند و آن را تایید کنند.
سپس همه آنها این بلاک را در زنجیره خود میپذیرند؛ این بدان معناست که آنها تقریبا کم و بیش با یکدیگر همگام باقی میمانند، و پس از آن به جمعآوری تراکنشها برای استخراج بلاک بعدی میپردازند.
اکنون بلاک چین به شکل زیر است، این بلاک جدید شامل آن ۵ دلاری که من برای شما ارسال کردم نیز هست و ? نامیده میشود.
رمزنگاری کلید عمومی
هش کردن تنها یکی از مفاهیم ریاضی است که بیت کوین بر پایه آن استوار است. رمزنگاری کلید عمومی یکی دیگر از آنهاست.
اصول کسانی که مطالعاتی در حوزه رمزنگاری دارند، از شخصیت «آلیس» و «باب» برای مثالهایشان استفاده میکنند. در اینجا ما نیز از آنها برای توضیح مفهوم رمزنگاری کلید عمومی استفاده میکنیم.
تصور کنید که آلیس میخواهد برای باب یک کیف دستی حاوی اسناد محرمانه ارسال کند. اگر آنها دارای کلیدهای مطابق باشند ساده است؛ آلیس میتواند یک قفل روی کیف قرار دهد، آن را با کلید خود قفل کند و برای باب ارسال کند.
وقتی باب آن را دریافت میکند، از آنجایی که کلید او مشابه کلید آلیس است، میتواند آن قفل را باز کند و به اسناد محرمانه دسترسی پیدا کند. این توضیح ساده فرآیند رمزنگاری متقارن است.
اما از آنجاییکه این روش امنی نیست، معمولا افرادی که اطلاعات محرمانهای برای یکدیگر ارسال میکنند، کلیدهای مشابه ندارند.
بنابراین آلیس و باب برای یک قفل واحد، کلیدهای مشابه ندارند. در عوض آنها کلید و قفل مخصوص به خود هستند. این بدان معناست که نیازی نیست آنها کلیدها را برای یکدیگر بفرستند.
آلیس آن کیف را با قفل خود مهر و موم میکند و آن را برای باب ارسال میکند. وقتی باب آن را دریافت میکند، او نمیتواند قفل آلیس را باز کند، در عوض او میتواند قفل خود را نیز به آن اضافه کند.
و آن را دوباره برای آلیس بفرستد.
سپس آلیس از کلید خود برای برداشتن قفل خود از روی کیف استفاده میکند.
این کیف اکنون تنها یک قفل دارد و آن هم قفل باب است. آلیس کیف را دوباره برای باب میفرستد.
و در نهایت باب به راحتی میتواند قفل خود را باز کند و به اسناد دسترسی پیدا کند.
حالا آلیس و باب نیازی به پیدا کردن راهی برای پنهان کردن یک کلید واحد ندارند. همهی آن چیزی که نیاز دارند کلیدها و قفلها خودشان است.
اما اگر طرف مقابل آن فردی که شما فکر میکردید نباشد چه؟ اگر به صورت تصادفی به جای باب مثلا یک گاو جایگزین شده باشد چه میشود؟
این چیزی است که بعد از آن اتفاق میافتد:
• آلیس کیف قفلشدهی خود را ارسال میکند. او پیش خود گمان میکند که این کیف را برای باب ارسال میکند، اما در واقع این کیف به یک گاو فرستاده میشود.
• گاو، که متاسفانه بدجنس است، قفل خود را به کیف اضافه میکند و آن را برای آلیس بازپس میفرستد.
• آلیس از اینکه کیف با قفل باب روی آن دوباره برایش فرستاده شده خوشحال میشود و قفل خود را از روی آن باز میکند و آن را دوباره برای طرف مقابلش میفرستد.
• گاو با باز کردن قفل خود کیف را باز میکند و اسناد محرمانه را نوش جان میکند!
هیچ کسی نمیخواهد که اطلاعاتش به دست یک گاو و یا هر گیرنده ناخواسته و ناشناس دیگری بیفتد. بنابراین برای محافظت از اطلاعات محرمانه خود یک کار دیگر هم انجام میدهیم.
برای اینکه اسناد به دست شخص دیگر نیافتد، باب از اینکه آلیس دقیقا میداند قفل او چه شکلی است، اطمینان حاصل میکند. بنابراین وقتی که آلیس کیف را با یک قفل اضافه دریافت میکند، از شکل قفل او تشخیص میدهد و مطمئن میشود که طرف مقابلش باب است.
در واقع، باب از قفل خود چند نسخه تهیه میکند و آن را همه جا در دسترس عموم قرار میدهد. تا زمانی که او تنها کسی است که میتواند قفل را با کلید خود باز کند، اینکه همه بدانند قفل باب چه شکلی است هیچ اهمیتی ندارد.
عمومی کردن قفل باب باعث میشود که آلیس قفل او را به راحتی تشخیص دهد. پیش از اینکه آلیس قفل خود را باز کند میتواند چک کند که آیا قفل دوم متعلق به باب است یا خیر!
اگر ما با کلیدها و قفلها فیزیکی سروکار داشتیم، کپی و توزیع کردن قفلها کار بسیار سختی بود. اما از آنجاییکه با اسناد و پروندههای دیجیتالی سروکار داریم، با کلیدها و قفلهای دیجیتالی کار میکنیم که در واقع عدد هستند.
قفل، عددی عمومی است. کلید، عددی است که محرمانه است. از اعداد خصوصی که با نام «کلید خصوصی» شناخته میشوند، برای باز کردن کلید عمومی استفاده میشود. این اعداد عمومی همان «کلید عمومی» نامیده میشوند.
از آنجایی که کلید خصوصی میتواند هر کلید عمومی مربوط به خود را باز کند، مردم از کلید خصوصی خود به شدت محافظت میکنند. در علم رمزنگاری، گاهی اوقات فرآیند باز کردن قفل، امضا نامیده میشود.
در سیستم بیت کوین از رمزنگاری کلید عمومی برای اثبات مالکیت استفاده میشود. برای صبحت در رابطه با چگونگی عملکرد این سیستم، ابتدا باید بر سر برخی اصطلاحات به توافق برسیم. در بیت کوین، کلید عمومی،کلید خصوصی و آدرس داریم.
بر خلاف مثال آلیس و باب و اسناد محرمانهاشان، کلیدهای موجود در شبکه بیت کوین سعی در رمزگذاری چیزی ندارند. هیچ کیف اسناد مبهمی وجود ندارد که آنها سعی در باز کردنش داشته باشند. در عوض از کلیدها برای اثبات مالکیت استفاده میشود.
در دنیای بیت کوین، آلیس کیف را به صورت پنهانی به باب نمیفرستد؛ بلکه او قفل و بیت کوین خود را درون یک جعبه شیشهای قرار میدهد و برای باب ارسال میکند.
برای ارسال این بیت کوینها به باب، آلیس باید دو کار را انجام دهد:
- آلیس باید قفل باب را به جعبه اضافه کند. ساده است، چرا که قفل باب یک عدد عمومی است. به این طریق، باب میتواند با باز کردن این قفل مالکیت خود را به اثبات برساند.
- آلیس باید اثبات کند که اولین قفل بیت کوین، قفل اوست و برای شخص دیگری نیست. او این کار را با باز کردن قفلش با کلید خودش (عددهای زیادی که او با هیچ کسی به اشتراک نمیگذارد) انجام میدهد.
سپس زمانی که باب تصمیم گرفت این بیت کوین را به شخص دیگری، مثلا کارلوس، انتقال دهد او نیز همین کارها را انجام میدهد؛ قفل کارلوس را اضافه میکند و سپس تراکنش را با کلید خصوصی خود امضا میکند.
در این شرایط، قفل دقیقا چیست؟ قفل همان کلید عمومی است. اما پروتکل بیت کوین تفاوت دیگری در رمزنگاری کلید عمومی دارد.
آلیس میتواند به جای آدرس عمومی باب، آدرس بیت کوین او را در جعبه شیشهای قرار دهد. آدرسهای بیت کوین از کلید عمومی گرفته میشوند. بنابراین به نظر میرسد آلیس نمایه خاصی از قفل باب را درون جعبه قرار داده است.
در عمل، تعداد نامتناهی آدرس را میتوان با استفاده از تنها یک کلید عمومی تولید کرد، بنابراین اگر باب بخواهد که هر بار از یک آدرس متفاوت استفاده کند، میتواند این کار را انجام دهد.
بیایید دوباره برگردیم به آن ۵ دلاری که من برای شما ارسال کردم. من آن را به آدرس بیت کوین شما که از کلید عمومی خود تولید کردید و کلید عمومیتان نیز از کلید خصوصیتان مشتق شد ارسال کردم. بنابراین، از لحاظ ریاضی، آدرس بیت کوین شما به کلید خصوصیتان مرتبط است. اگر شما صاحب کلید خصوصی مرتبط با یک آدرس هستید، پس میتوان گفت که شما مالک بیت کوینهای آن آدرس هستید.
برای انتقال ۵ دلار خودتان، شما باید یک تراکنش جدید ایجاد کنید و این تراکنش شامل آدرسی باشد که متعلق به گیرنده بیت کوین است و آن را با کلید خصوصی خود امضا کنید. این در واقع معادل قرار دادن قفل گیرنده بر روی کیف و باز کردن قفل خودتان است.
یکی از تاثیرات جانبی جالب استفاده از آدرس این است که سبب میشود تراکنشهای بیت کوین ناشناس باقی بمانند.
در واقع این آدرسها شبیه به نام مستعار هستند. بیت کوین هیچ ارتباطی با نام شما ندارد. همه چیزی که نیاز دارد یک کلید خصوصی است. تا زمانی که کلید خصوصی خود را دارید، صاحب بیت کوینهای خود هستید. پس مراقب آن باشید.