بلاکچین دفتر ثبت مشترکی است که رایانههای زیادی آن را همگام نگه میدارند، بیآنکه مالک واحدی داشته باشد. این مقاله با کلمات ساده و مثالهای واقعی توضیح میدهد چگونه ساخته میشود، چرا تغییر تاریخچهاش بسیار سخت است و قرارداد هوشمند چیست.
در حین خواندن میتوانید ایده را در عمل ببینید. صفحه زنده اتریوم یا صفحه زنده بیتکوین را باز کنید و بلوکهای جدید را پشت سر هم ببینید که ظاهر میشوند.
ایده پایه: دفتر ثبتی که مردم زیادی نگه میدارند
دفترچهای را تصور کنید که هر پرداختی را که تاکنون در یک شبکه انجام شده فهرست میکند. حالا تصور کنید هزاران نفر هر کدام نسخهای یکسان از آن دارند و صفحههای جدید فقط وقتی اضافه میشوند که بیشتر آنها توافق کنند. این هسته بلاکچین است.
ثبت عمومی است. هر کس میتواند آن را بخواند و بررسی کند. هیچکس لازم نیست برای نگه داشتن دفتر به بانک یا شرکتی اعتماد کند، چون قوانین شبکه و نسخههایی که شرکتکنندگان بسیار دارند این کار را میکنند.
بلوکها: صفحههای تراکنش
تراکنش یک دستور است، مثلاً «20 USDC از آلیس به باب بفرست». تراکنشها در گروههایی به نام بلوک جمع میشوند. بلوک مثل یک صفحه در دفتر ثبت است.
هر بلوک یک ارتفاع بلوک (block height) دارد که جایگاهش در زنجیره است. نخستین بلوک ارتفاع 0، بعدی ارتفاع 1 و همینطور ادامه دارد. بلوکها با ریتم منظمی ساخته میشوند که به شبکه بستگی دارد:
- بیتکوین تقریباً هر 10 دقیقه یک بلوک میسازد.
- اتریوم هر 12 ثانیه یک بلوک میسازد.
- سولانا تقریباً هر 400 میلیثانیه یک اسلات جدید تولید میکند.
در ChainMonitor هر بلوک بهصورت کاشی نشان داده میشود که میگوید چقدر پر است و چه کارمزدی پرداخته. روی کاشی کلیک کنید تا تراکنشهای داخلش را ببینید. راهنمای خواندن تراکنش توضیح میدهد در آنجا چه مییابید.
هشهای زنجیرهای: چرا زنجیر، زنجیر است
هش (hash) اثر انگشت کوتاهی از یک داده است. تابع هش هر ورودی را به رشتهای از نویسهها با طول ثابت تبدیل میکند. ورودی یکسان همیشه هش یکسان میدهد. یک حرف از ورودی را عوض کنید و هش کاملاً متفاوت به نظر میرسد. نمیتوانید از هش به عقب برگردید و به داده برسید.
هر بلوک هش بلوک قبل از خود را دارد. همین پیوند است که آن را زنجیر میکند.
- بلوک 100 تراکنشهای خودش و هش بلوک 99 را دارد.
- بلوک 101 تراکنشهای خودش و هش بلوک 100 را دارد.
- بلوک 102 هش بلوک 101 را دارد و همینطور ادامه.
اگر کسی یک تراکنش را در بلوک 100 تغییر دهد، هش بلوک 100 عوض میشود. بلوک 101 آنگاه به هشی اشاره میکند که دیگر مطابقت ندارد. ناهمخوانی فوراً آشکار میشود و هر بلوک بعد از آن هم میشکند.
نودها: کسانی که نسخهها را نگه میدارند
نود (node) رایانهای است که نرمافزار شبکه را اجرا میکند، بلاکچین را ذخیره میکند و قوانین را بررسی میکند. وقتی بلوک جدیدی میرسد، هر نود بهطور مستقل آن را راستیآزمایی میکند. اگر بلوکی قاعدهای را بشکند، مثلاً سکههایی را که وجود ندارند خرج کند، نودهای درستکار آن را رد میکنند.
برخی نودها به تولید بلوک هم کمک میکنند. بقیه فقط میخوانند و راستیآزمایی میکنند. وقتی از کیف پول استفاده میکنید، معمولاً از طریق نقطه پایانی RPC (RPC endpoint)، آدرس وبی که به پرسشهایی مثل «موجودی من چقدر است؟» پاسخ میدهد، با نود صحبت میکند. میتوانید نقاط پایانی عمومی را در صفحه سلامت RPC مقایسه کنید.
اجماع: همه چگونه توافق میکنند
با هزاران نسخه، شبکه به راهی نیاز دارد که توافق کند کدام بلوک بعدی است. این فرایند توافق اجماع (consensus) نام دارد. دو نوع اصلی وجود دارد.
اثبات کار
در اثبات کار (proof of work یا PoW) شرکتکنندگانی به نام ماینر برای حل معمایی سخت رقابت میکنند. معما را فقط با امتحان تعداد عظیمی حدس میتوان حل کرد که برق و زمان رایانه میخورد. برنده بلوک بعدی را اضافه میکند و پاداش میگیرد. بیتکوین از اثبات کار استفاده میکند.
تقلب گران است. برای بازنویسی تاریخچه، مهاجم باید کار بلوک قدیمی و همه بلوکهای بعد از آن را دوباره انجام دهد و این کار را سریعتر از کل بقیه شبکه با هم انجام دهد.
اثبات سهام
در اثبات سهام (proof of stake یا PoS) شرکتکنندگانی به نام اعتبارسنج سکهها را بهعنوان سپردهای به نام استیک (stake) قفل میکنند. شبکه اعتبارسنجها را برای پیشنهاد و تأیید بلوک انتخاب میکند. اعتبارسنجهایی که از قوانین پیروی کنند پاداش میگیرند. آنهایی که قوانین را بشکنند میتوانند بخشی از استیک خود را از دست بدهند. اتریوم و سولانا از اثبات سهام استفاده میکنند.
تقلب اینجا هم گران است، اما هزینه بهجای برق، سپرده است.
چرا هیچکس نمیتواند بیصدا تاریخچه را ویرایش کند
سه چیز با هم کار میکنند:
- پیوندهای هش. تغییر یک بلوک قدیمی هر بلوک بعدی را میشکند.
- نسخههای بسیار. ویرایشگر باید اکثر نسخهها را تغییر دهد، نه فقط یکی.
- هزینه. در اثبات کار مهاجم به توان محاسباتی عظیم نیاز دارد. در اثبات سهام مهاجم به استیک بزرگی نیاز دارد که میتواند نابود شود.
این به معنای جادویی بودن سیستم نیست. یعنی هرچه بلوکهای بیشتری روی تاریخچه اضافه شود، تغییر آن سختتر میشود. به همین دلیل صرافیها و اپلیکیشنها پیش از آنکه پرداخت را قطعی بدانند منتظر چند تأییدیه میمانند. برای جزئیات قطعیت و تأییدیهها را ببینید.
دو روش نگه داشتن موجودی: حسابها و UTXO
شبکهها «چه کسی صاحب چیست» را به یکی از دو روش پیگیری میکنند.
مدل حساب. اتریوم، آربیتروم، بیس، اپتیمیزم، پالیگان و سولانا مثل دفتر بانکی کار میکنند. هر آدرس موجودیای دارد و تراکنش از یک موجودی کم و به دیگری اضافه میکند.
مدل UTXO. بیتکوین بیشتر شبیه پول نقد کار میکند. UTXO (خروجی خرجنشده تراکنش) تکهای سکهمانند است که فقط یک بار قابل خرج است. پرداخت یک یا چند UTXO را بهعنوان ورودی مصرف میکند و موارد جدیدی را بهعنوان خروجی میسازد، معمولاً شامل «باقیمانده» که به فرستنده برمیگردد. موجودی بیتکوین شما مجموع UTXOهایی است که میتوانید خرج کنید.
هیچکدام از دو مدل از هر نظر بهتر نیست. طراحیهای متفاوتی با بدهبستانهای متفاوتاند.
قرارداد هوشمند چیست؟
قرارداد هوشمند (smart contract) برنامه کوچکی است که روی بلاکچین ذخیره میشود. وقتی کسی تراکنشی به آن میفرستد دقیقاً همانطور که نوشته شده اجرا میشود. میتواند توکن نگه دارد، از قوانین پیروی کند و نتایج را به قراردادهای دیگر بفرستد. هیچکس نمیتواند کد قرارداد مستقرشده را تغییر دهد مگر اینکه خود کد اجازه ارتقا بدهد.
نمونهها: قراردادی که یک توکن را با دیگری سواپ میکند، قراردادی که در برابر وثیقه پول قرض میدهد، یا قراردادی که توکن USDC را تعریف میکند. اتریوم و زنجیرههای ساختهشده روی آن قراردادها را با EVM (ماشین مجازی اتریوم) اجرا میکنند. سولانا سیستم قرارداد مخصوص خود را دارد که برنامهها در طراحی متفاوتی اجرا میشوند. بیتکوین فقط اسکریپتهای ساده را پشتیبانی میکند.
اجرای قرارداد کارمزدی به نام گس (gas) دارد. برای نحوه محاسبه آن گس و کارمزدها را ببینید.
قرارداد هوشمند فقط به اندازه کدش خوب است. باگ در قرارداد میتواند دارایی را از بین ببرد و تراکنش پس از قطعی شدن قابل لغو نیست.
گام بعدی
برای دیدن اینکه شبکههای مختلف چه ارتباطی با هم دارند لایه 1، لایه 2 و لایه 3 به زبان ساده را بخوانید. برای یادگیری نگه داشتن دارایی خودتان کیف پولها و کلیدها را بخوانید. برای تعریفهای کوتاه از واژهنامه استفاده کنید.
پرسشهای متداول
آیا بلاکچین همان بیتکوین است؟
خیر. بیتکوین یک بلاکچین است و نخستینی که بهطور گسترده استفاده شد. بلاکچین فناوری زیربنایی است. اتریوم، سولانا و بسیاری دیگر بلاکچینهای جداگانه با قوانین خودشان هستند.
آیا بلاکچین را میتوان هک کرد یا تغییر داد؟
بازنویسی بلوکهای قدیمی شبکه بزرگ بسیار پرهزینه است و در بزرگترینها رخ نداده است. بیشتر ضررها از جاهای دیگر میآید: کلیدهای دزدیدهشده، کلاهبرداری یا باگ در قراردادهای هوشمند و اپلیکیشنهای ساختهشده روی آن.
چه کسی بلاکچین را کنترل میکند؟
هیچ مالک واحدی بلاکچین عمومی را کنترل نمیکند. قوانین را نرمافزاری که نودها اجرا میکنند تعیین میکند و تغییرات به توافق گسترده توسعهدهندگان، اعتبارسنجها یا ماینرها و کاربران نیاز دارد. این عمداً کندتر از تصمیم شرکتی است.
تفاوت بلوک و تراکنش چیست؟
تراکنش یک عمل است، مثل پرداخت. بلوک بستهای از تراکنشهای بسیار است که با هم به زنجیره اضافه میشوند.
چرا تراکنشهای بلاکچین کارمزد دارند؟
کارمزدها به کسانی که شبکه را اجرا میکنند میپردازند و جلوی هرزنامه را میگیرند. بلوکها فضای محدودی دارند، پس کارمزدها وقتی شبکه شلوغ است تعیین میکنند تراکنش چه کسی زودتر وارد شود.