5 693
Suscriptores
-624 horas
-747 días
-55330 días
Archivo de publicaciones
5 692
پایان
بخش ۹ رو هم تموم کردیم.
از فهرست پین شده و این لینک میتونید راحت دسترسی داشته باشید به مطالب گفته شده.
امیدوارم براتون مفید بوده باشه و استفاده کرده باشید و درک عمیقی نسبت به بیتکوین پیدا کرده باشید.
قدر این اطلاعات غنی رو بدونید و بدونید که کمتر کسی اینها رو رایگان در اختیار کسی میذاره. ارزش و منافع دانشی و فکری سطح بالایی که دریافت میکنید رو درک کنید.
تنها هدف ما از بررسی عمیق بیتکوین، آگاهی و فهم بیشتر شما بوده بدون هیچ چشم داشتی.
و تو ایران کسی رو ندیدیم، یا کمتر کسی رو دیدیم، که در مورد بیتکوین دانش خاصی داشته باشه.
تهِ سواد اکثریت کسانی که ادعا دارند و نافِ استاد استاد میبندن به خودشون از بیتکوین، اینه که میدونن ۲۱ میلیونه و ساتوشی ناکاموتوی ناشناس خالق اولیهاش بوده.
و کارهای دیگهشون هم خلاصه میشه به شکل الاغ و قورباغه کشیدن روی چارت قیمتی چهارتا شتکوین، معامله کردن تو صرافیها، شارلاتانبازی و دزدی و جیببُری، با قماری مثل ترید و پکیجفروشی با شبهعلم تکنیکال، و پامپ و دامپ کردن توکنهای آشغال.
و خوشبهحال این قشر سطحی و بیسواد که عقل ندارند، راحتاند؛ ناف استاد استاد میبندن به خودشون و کلی احمقتر از خودشون هم این سبکمغزهای دریوزه رو دنبال میکنند و پای حرفهای زردشون میشینن.
ما اینجا هیچوقت ادعایی نداشتیم و نخواهیم داشت و دنبال عنوان بستن به خودمون نیستیم. همیشه در حال یادگیری هستیم؛ چون حقیقت و علم بزرگتر از اونین که کسی بتونه ادعا کنه به آخرشون رسیده.
با اینکه از خیلی از اونایی که ادعا میکنن، تو این زمینهها هم تخصصمون بیشتره و هم درکمون بالاتره.
و از همه مهمتر، آدمحسابی هستیم و همیشه حقیقت رو گفتیم.
علیرغم اینکه تو این دنیا سود و پول زیاد تو حقیقت نیست تو شارلاتانبازیه، اما ترجیح دادیم خوب باشیم و آدمحسابی.
همین.
مخلصیم 💚
5 692
Fedimint و Cashuپروتکلهایی که تلاش میکنند حریم خصوصی، سهولت استفاده و مقیاسپذیری را برای جوامع کوچک و محلی بهبود دهند. راهکارهای نوظهور مقیاسپذیری پروژههایی مانند Ark و انواع Rollupهای بیتکوینی در تلاشاند بدون افزایش بار لایه اول، تعداد بیشتری تراکنش را پردازش کنند و تجربه کاربری بهتری ارائه دهند. ----------- آینده فنی بیتکوین بر پایه حفظ سه اصل بنیادین بنا شده است: امنیتی که با اثبات کار تضمین میشود، کمیابیای که توسط سیاست پولی و هاوینگ حفظ میشود، و حریم خصوصیای که با پیشرفت فناوریهای رمزنگاری همچنان در حال تکامل است. آنچه احتمالاً در دهههای آینده تغییر خواهد کرد، ابزارها، قابلیتها و لایههای بالای این سیستم است؛ اما اصول بنیادینی که بیتکوین را به یک شبکه پولی غیرمتمرکز تبدیل کردهاند، همچنان ستونهای اصلی این معماری باقی خواهند ماند.
5 692
بخش ۹ | فهرست
۵. آینده فنی بیتکوین؛ BIPهای مهم، ارتقاهای احتمالی و مسیر توسعه
توسعه در لایه اول بیتکوین (Layer 1) با سایر بلاکچینها متفاوت است. در اینجا خبری از هاردفورکهای ناگهانی یا تغییرات سریع نیست. هر تغییر بزرگ باید از مسیر BIP (پیشنهاد بهبود بیتکوین) عبور کند و فرآیند بررسی، ممیزی و آزمایش آن گاهی سالها زمان میبرد.
در حال حاضر، بخش مهمی از بحثهای فنی جامعه توسعهدهندگان بیتکوین روی سه محور متمرکز است: قابلیتهای قراردادی (Covenants)، افزایش حریم خصوصی و آمادگی برای تهدیدات بلندمدت مانند رایانش کوانتومی.
۱. پدیده عهدنامهها (Covenants)؛ قراردادهای هوشمند پیشرفتهتر
بزرگترین محدودیت زبان اسکریپت بیتکوین این است که وقتی یک خروجی خرج میشود، معمولاً فقط میتوان شرط گذاشت که «چه کسی» اجازه خرج کردن آن را دارد. اما نمیتوان به سادگی تعیین کرد که آن کوین پس از خرج شدن باید به «کجا» منتقل شود.
به این قابلیت کنترل مسیر آینده کوینها، Covenant یا عهدنامه گفته میشود.
در حال حاضر چندین پیشنهاد مختلف برای افزودن چنین قابلیتهایی در جامعه توسعهدهندگان مطرح است که دو مورد از شناختهشدهترین آنها عبارتاند از:
OP_CATکد دستوری OP_CAT در نسخههای اولیه بیتکوین وجود داشت اما بعدها به دلایل امنیتی غیرفعال شد. این دستور امکان اتصال دو رشته داده را درون اسکریپت فراهم میکند. فعالسازی مجدد آن میتواند زمینه را برای ساخت قراردادهای پیشرفتهتر، پلهای غیرامانی و قابلیتهای جدید برنامهنویسی در بیتکوین فراهم کند.
BIP-119
(OP_CHECKTEMPLATEVERIFY)این پیشنهاد به کاربران اجازه میدهد قالب مشخصی برای تراکنشهای آینده تعیین کنند. یکی از کاربردهای مهم آن ساخت کیفپولهای Vault است؛ کیفپولهایی که در آنها حتی در صورت سرقت کلید خصوصی، مهاجم نمیتواند فوراً دارایی را به آدرس دلخواه خود منتقل کند. در عوض، تراکنش باید از یک مسیر از پیش تعیینشده عبور کند و مالک اصلی فرصت واکنش و بازیابی دارایی را خواهد داشت. ۲. بهبود حریم خصوصی (Silent Payments – BIP 352) با وجود ارتقاهایی مانند Taproot، تاریخچه تراکنشها همچنان روی دفترکل عمومی بیتکوین قابل مشاهده است. یکی از جذابترین فناوریهای جدید در این حوزه، Silent Payments است که در سالهای اخیر توجه زیادی را به خود جلب کرده است. حل مشکل آدرسهای ثابت در مدل سنتی، اگر فردی یک آدرس دریافت ثابت را در وبسایت یا شبکههای اجتماعی منتشر کند، دیگران میتوانند تمام پرداختهای ورودی آن آدرس را مشاهده کنند. منطق عملکرد در Silent Payments، فرستنده و گیرنده بدون نیاز به تبادل آدرس جدید برای هر پرداخت، میتوانند برای هر تراکنش یک مقصد منحصربهفرد تولید کنند. در نتیجه، برای ناظران بیرونی تشخیص اینکه چندین تراکنش به یک گیرنده واحد تعلق دارند بسیار دشوارتر میشود و سطح حریم خصوصی کاربران افزایش پیدا میکند. ۳. رمزنگاری پساکوانتومی (Post-Quantum Cryptography) یکی از چالشهای بلندمدت تمام سامانههای رمزنگاری مدرن، ظهور کامپیوترهای کوانتومی است. الگوریتمهای امضای فعلی بیتکوین، یعنی ECDSA و Schnorr، بر پایه مسائل ریاضیای ساخته شدهاند که در برابر رایانههای کلاسیک بسیار امن هستند. اما در صورت ظهور کامپیوترهای کوانتومی بسیار قدرتمند، الگوریتمهایی مانند Shor's Algorithm میتوانند این فرض امنیتی را به چالش بکشند. به بیان ساده، یک کامپیوتر کوانتومی پیشرفته ممکن است بتواند از روی یک کلید عمومی، کلید خصوصی متناظر را محاسبه کند. لایه اول دفاع: آدرسهای هششده در بسیاری از انواع آدرسهای بیتکوین، تا زمانی که دارایی خرج نشده باشد، کلید عمومی واقعی روی بلاکچین آشکار نیست و تنها هش آن ذخیره شده است. از آنجا که توابع هش امروزی در برابر تهدیدات کوانتومی مقاومت بیشتری دارند، این دسته از کوینها در برابر چنین حملاتی محافظت بیشتری خواهند داشت. لایه دوم دفاع: ارتقای الگوریتمهای امضا جامعه توسعهدهندگان بیتکوین احتمالاً پیش از عملی شدن تهدید کوانتومی، از طریق سافتفورک به سمت الگوریتمهای امضای مقاوم در برابر کوانتوم حرکت خواهد کرد. از جمله گزینههای مورد بحث میتوان به امضاهای مبتنی بر مشبک (Lattice-Based Signatures) و امضاهای مبتنی بر هش (مانند XMSS) اشاره کرد. ۴. رویکرد لایهای (The Layered Approach) آینده بیتکوین صرفاً به لایه اول محدود نمیشود. دیدگاه غالب میان بسیاری از توسعهدهندگان این است که لایه اول باید به عنوان لایه نهایی تسویه حساب و امنیت باقی بماند؛ در حالی که بخش عمده فعالیتهای روزمره به لایههای بالاتر منتقل شود. شبکه لایتنینگ (Lightning Network) برای پرداختهای آنی، کمهزینه و خرد.
5 692
بخش ۹ | فهرست
۴. مقاومت در برابر سانسور (Censorship Resistance) و پایداری شبکه
مقاومت در برابر سانسور به این معناست که هر کسی، در هر زمان و در هر کجای جهان، بتواند بدون نیاز به کسب اجازه از هیچ نهادی، دارایی خود را جابجا کند. این ویژگی در بیتکوین حاصل یک شعار اخلاقی نیست، بلکه خروجی مستقیم معماری توزیعشده پروتکل است.
۱. ستونهای فنی مقاومت در برابر سانسور
بیتکوین از سه لایه کاملاً مجزا برای ایستادگی در برابر فیلترینگ و توقیف استفاده میکند:
الف) عدم امکان توقیف در سطح کلیدها (Non-Custodial): کنترل دارایی در بیتکوین تنها و تنها از طریق داشتن کلید خصوصی امکانپذیر است. از نظر کدهای لایه اجماع، هیچ دستوری به نام «توقیف یا فریز کردن آدرس» در پروتکل بیتکوین وجود ندارد. تا زمانی که کلید خصوصی در اختیار شماست، هیچ قدرتی در جهان نمیتواند کوینهای شما را از روی زنجیره جابجا کند.
ب) توزیع جهانی نودها: برای متوقف کردن شبکه بیتکوین، باید تکتک رایانههایی که نسخه کدهای بیتکوین کور را در سراسر جهان اجرا میکنند (دهها هزار نود فعال) پیدا و خاموش شوند. حتی اگر دولتی اینترنت کل کشور خود را قطع کند، نودها میتوانند از طریق شبکههای ماهوارهای (مثل ماهواره Blockstream) یا امواج رادیویی کوتاه، بلاکها و تراکنشها را بدون نیاز به اینترنت شهری همگامسازی کنند.
ج) بازار ممپول (Mempool): اگر یک ماینر در کشوری خاص تحت فشار دولت مجبور شود تراکنش شما را به دلیل هویت یا مقصد آن سانسور کند و درون بلاکش جا ندهد، تراکنش شما همچنان در ممپول (حافظه موقت) بقیه نودهای جهان باقی میماند. به محض اینکه یک ماینر مستقل در گوشه دیگری از دنیا بلاک بعدی را استخراج کند، تراکنش شما با پرداخت کارمزد استاندارد ثبت خواهد شد.
۲. تقابل با حملات پیشرفته: سانسور در سطح استخرها (Mining Pools)
یکی از تهدیدهای جدی در سالهای اخیر، تمرکز استخرهای بزرگ ماینینگ در چند کشور و احتمال اعمال قوانین نظارتی (مثل قوانین OFAC آمریکا) روی آنها بود. اگر چند استخر بزرگ تصمیم بگیرند تراکنشهای آدرسهای بلکلیست شده را پردازش نکنند چه میشود؟
برای حل این چالش، پروتکل ارتقایافتهای به نام Stratum V2 توسعه یافته است:
در مدل قدیمی (Stratum V1): استخر ماینینگ مشخص میکرد چه تراکنشهایی درون بلاک چیده شوند و دستگاههای ماینر خانگی فقط قدرت پردازش (Hashrate) را تأمین میکردند.
در مدل مدرن (Stratum V2): این قدرت به خودِ ماینرهای خرد و خانگی بازگردانده میشود. حالا هر ماینر کوچک خودش میتواند تراکنشهای داخل بلاک را انتخاب کند و استخر بزرگ دیگر توانایی فیلتر کردن یا حذف تراکنشها را نخواهد داشت.
۳. پایداری شبکه در برابر نوسانات ژئوپلیتیک (حمله مهاجرت بزرگ)
یک سیستم پایدار باید بتواند در برابر شوکهای ناگهانی مقاومت کند. بزرگترین آزمون بقای بیتکوین در سال ۲۰۲۱ رخ داد؛ زمانی که کشور چین (که در آن زمان میزبان بیش از ۵۰ درصد از کل قدرت پردازش شبکه بود) استخراج بیتکوین را کاملاً ممنوع و غیرقانونی اعلام کرد.
رفتار سیستم: در عرض چند هفته، نیمی از هشریت شبکه به طور ناگهانی خاموش شد. در هر سیستم متمرکز پولی، این پدیده باعث از کار افتادن کامل زیرساخت میشد.
پاسخ خودکار پروتکل: کدهای بیتکوین بدون نیاز به هیچ مدیر یا اتاق فکری، با مکانیزم تنظیم سختی (Difficulty Adjustment) خود را تطبیق دادند. سختی شبکه پایین آمد تا ماینرهای باقیمانده در بقیه نقاط جهان بتوانند شبکه را زنده نگه دارند. در کمتر از چند ماه، ماینرهای مهاجر در کشورهای دیگر روشن شدند و شبکه به اوج قدرت قبلی خود بازگشت، بدون اینکه حتی یک ثانیه قطعی داشته باشد.
-----------
مقاومت در برابر سانسور، محصول نهایی تمام بخشهایی است که تا اینجا یاد گرفتیم. رمزنگاری منسجم، توزیعپذیری نودها، بازار کارمزد و نظریه بازیها دست به دست هم دادهاند تا سیستمی بسازند که در برابر سانسور بیرونی رویینتن باشد.
5 692
بخش ۹ | فهرست
۳. نظریه بازیها (Game Theory) و طراحی انگیزهها در بیتکوین
نظریه بازیها شاخهای از اقتصاد است که رفتار بازیگران هوشمند را در شرایطی که منافع آنها به هم وابسته است، تحلیل میکند. هدف اصلی در طراحی بیتکوین این بود: «چطور کاری کنیم بازیگرانی که همدیگر را نمیشناسند و به هم اعتماد ندارند، به قوانین یک سیستم وفادار بمانند؟»
۱. تعادل نش (Nash Equilibrium) در پروتکل بیتکوین
در نظریه بازیها، تعادل نش وضعیتی است که در آن هیچ بازیگری انگیزه ندارد استراتژی خود را تغییر دهد، چون میداند با این کار وضعیتش بدتر میشود. بیتکوین یک تعادل نشِ پایدار خلق کرده است.
در این بازی، سه نقش اصلی وجود دارد: نودها، ماینرها و کاربران.
قانون بازی: اگر قوانین پروتکل (مثلاً عدم چاپ پول یا عدم خرج دوبارۀ کوین) را رعایت کنی، پاداش میگیری. اگر تقلب کنی، هزینه سنگینی پرداخت میکنی بدون اینکه سودی ببری.
به دلیل وجود این تعادل، بهترین و سودآورترین استراتژی برای هر بازیگر در شبکه بیتکوین، «صداقت و پیروی از قوانین» است.
۲. کالبدشکافی انگیزه ماینر: چرا حمله ۵۱ درصد رخ نمیدهد؟بزرگترین فرضیه آسیبپذیری در شبکههای اثبات کار، حمله ۵۱ درصد (51% Attack) است؛ یعنی یک ماینر یا ائتلافی از آنها، بیش از نیمی از قدرت پردازشی شبکه (Hashrate) را در دست بگیرند تا بتوانند تاریخچه تراکنشها را بازنویسی کنند (حمله دوبار خرج کردن).بیایید این سناریو را از زاویه نظریه بازیها کالبدشکافی کنیم:
هزینه حمله: مهاجم برای تصاحب ۵۱ درصد از شبکه، باید میلیاردها دلار صرف خرید سختافزارهای فوقپیشرفته (ASIC) و تأمین مگاواتها برق کند.
نتیجه حمله: اگر مهاجم حمله را با موفقیت انجام دهد و قوانین را نقض کند، کاربران و نودهای جهان فوراً متوجه تقلب میشوند. این اتفاق اعتماد به شبکه را نابود کرده و قیمت بیتکوین را به شدت کاهش میدهد.
سود و زیان: حالا مهاجم مانده است با کوینهای بیارزشی که دزدیده و انبوهی از سختافزارهای گرانقیمت که به درد هیچ کار دیگری جز استخراج بیتکوین نمیخورند.
ساتوشی ناکاموتو در وایتپپر بیتکوین این انگیزه را اینطور خلاصه میکند:
«او (مهاجم) باید متوجه شود که پیروی از قوانین برایش سودآورتر از نقض آنهاست؛ چرا که قوانین فعلی کوینهای بیشتری را نسبت به مجموع ترکیب تمام بازیگران دیگر به او اختصاص میدهند، تا اینکه بخواهد سیستم و ارزش دارایی خود را نابود کند.»۳. مکانیزم دفاعی نودها در برابر ماینرهای قدرتمند یک تصور اشتباه این است که ماینرها به دلیل داشتن قدرت پردازشی بالا، پادشاهان بیتکوین هستند. اما نظریه بازیها بین ماینرها و نودهای کامل (Full Nodes) موازنه قدرت برقرار کرده است. جریمه سنگین بدون نیاز به شلیک: اگر یک ماینرِ قدرتمند بلاکی بسازد که قوانین پروتکل را نقض کرده باشد، نودهای خانگی و صرافیها (که هیچ قدرت پردازشی برای ماینینگ ندارند) آن بلاک را طبق کدهای خود ریجکت میکنند. نتیجه اقتصادی: برق و هزینهای که ماینر برای آن بلاک صرف کرده، کاملاً میسوزد و هیچ پاداشی دریافت نمیکند. این سیستمِ نظارتیِ غیرمتمرکز، عملاً دسترسی ماینرها به قدرت مطلقه را مسدود میکند. ----------- بیتکوین اولین سیستمی است که طمع و منفعتطلبی انسانها را به ابزاری برای تأمین امنیت خود تبدیل کرده است. شبکه نیازی به اخلاقمدار بودن بازیگران ندارد؛ کدهای پروتکل طوری چیده شدهاند که افراد برای کسب سود بیشتر، مجبورند درستکار باشند. این توزیعِ هوشمندانه قدرت و انگیزهها، ویژگی دیگری به نام «مقاومت در برابر سانسور» را متولد میکند.
5 692
بخش ۹ | فهرست
۲. اقتصاد ماینرها و مشوقهای کارمزد (Fee Incentives)
در طراحی اولیه بیتکوین، پاداش بلاک (کوینهای تازه خلقشده) نقش یک سوبسید یا کمکهزینه پولی را برای ماینرها بازی میکرد تا شبکه در سالهای اولیه با امنیت بالا رشد کند. اما با وقوع هاوینگها، ساختار درآمدی ماینرها مجبور است از مدل پاداشمحور به سمت مدل کارمزدمحور حرکت کند.
۱. بازار کارمزد (Fee Market) چیست و چطور شکل میگیرد؟
از آنجا که فضای داخل هر بلاک بیتکوین محدود است (تقریباً ۴ مگابایت وزن یا همان Weight لایه سگویت)، فضای بلاک به یک کالای نایاب تبدیل میشود. کاربران برای اینکه تراکنش خود را زودتر از بقیه درون بلاک جا دهند، وارد یک حراجی کور میشوند.
تغییر مبنای اولویت: ماینرها به مقصد، آدرس یا حجم بیتکوین ارسالی شما کاری ندارند. ملاک آنها برای انتخاب تراکنشها، میزان «کارمزد به ازای هر بایت داده» است.تأمین امنیت مستقل: با کاهش پاداش بلاک، کارمزدها دیگر یک درآمد جانبی نیستند، بلکه به منبع اصلی درآمد ماینرها تبدیل میشوند. این یعنی امنیت شبکه بیتکوین در آینده مستقیماً به حجم تراکنشها و رقابت کاربران برای ثبت داده وابسته خواهد بود.
۲. چالشهای فنی در یک شبکه کاملاً کارمزدمحور
وقتی پاداش بلاک به صفر برسد و ماینرها فقط با کارمزد تراکنشها زنده بمانند، رفتار سیستم از نظر مهندسی دچار چالشهای جدیدی میشود که به آنها حملات پاداشمحور یا رفتارهای استراتژیک میگویند:
الف) نوسان شدید در امنیت بلاکها (Fee Sniping)
در مدل فعلی، هر بلاک پاداش ثابتی دارد. اما در آینده، ممکن است یک بلاک حاوی تراکنشهای بسیار پرکارمزد باشد و بلاک بعدی کارمزد کمی داشته باشد. در این سناریو، ماینرها ممکن است وسوسه شوند که بلاک آخر را نادیده بگیرند و تلاش کنند با بازنویسی تاریخچه (فورک عمدی)، آن بلاک پرکارمزد را برای خود استخراج کنند.
راهکار فنی فعلی: کدهای بیتکوین کور به صورت پیشفرض از قفل زمانی nLockTime استفاده میکنند تا تراکنشها نتوانند در بلاکهای گذشته بازنویسی شوند.
ب) پدیده بلاکهای خالی
اگر در یک بازه زمانی، تراکنشی در ممپول وجود نداشته باشد یا کارمزدها بسیار ناچیز باشند، ماینرها انگیزهای برای صرف هزینه برق جهت بستن بلاک نخواهند داشت. این موضوع میتواند زمان ثبت تراکنشها را بسیار نامنظم کند.
۳. مدلهای ارزیابی پایداری بودجه امنیت (Security Budget)
بودجه امنیت بیتکوین برابر است با: کل ارزش سرمایهای که برای هشریت و برق مصرف میشود تا جلوی حمله ۵۱ درصد گرفته شود.
برای پایداری این بودجه در آینده، دو سناریو وجود دارد:
افزایش ارزش کل: قیمت بیتکوین به قدری بالا برود که حتی مقادیر کم کارمزدها (به سنت یا ساتوشی)، از نظر ارزش دلاری هزینههای ماینرها را پوشش دهد.
توسعه لایههای دوم: تراکنشهای کلان، تسویهحسابهای لایتنینگ و سایدچینها (که کارمزدهای سنگینی برای جابجایی میلیاردها دلار پرداخت میکنند) روی لایه اول بنشینند و کاربران عادی به لایههای دوم منتقل شوند.
-----------
بازار کارمزد، ماهیت پویای بیتکوین را به تصویر میکشد؛ سیستمی زنده که تداوم حیاتش وابسته به جریان مستمر فعالیت اقتصادی کاربران است. در واقع، امنیت آیندهٔ بیتکوین نه یک امر انتزاعی، بلکه تابعی مستقیم از میزان استفادهٔ واقعی از آن خواهد بود. اینجاست که اقتصاد بیتکوین با کنشهای انسانی گره میخورد؛ نقطهای که در آن، «نظریهٔ بازیها» به کمک ما میآیند تا رفتارها، مشوقها و تعادلهای ممکن را در این اکوسیستم پیچیده، ریشهکاوی کنیم.
5 692
بخش ۹ | فهرست
۱. پویایی عرضه بیتکوین و مکانیزم هاوینگ (Halving)
برخلاف سیستمهای پولی سنتی که عرضه پول در آنها توسط بانکهای مرکزی تغییر میکند، عرضه بیتکوین کاملاً برنامهریزیشده، خودکار و غیرقابل تغییر است. این ساختار به گونهای طراحی شده که به مرور زمان، میزان تولید کوینهای جدید کمتر و کمتر شود.
۱. منطق توزیع و سقف ۲۱ میلیون کوین
محدودیت ۲۱ میلیون واحدی بیتکوین، بر اساس یک قانون ثابت در کدهای شبکه شکل گرفته است. در ابتدا، با تولید هر بلاک جدید، ۵۰ بیتکوین خلق میشد. اما سیستم طوری برنامهریزی شده که هر ۲۱۰,۰۰۰ بلاک یکبار (تقریباً هر ۴ سال)، این پاداش نصف (Halve) شود.
با تکرار این فرآیند نصف شدن، مقدار کوینهای جدیدی که به شبکه تزریق میشوند به قدری کوچک میشود که در نهایت پس از ۳۳ بار هاوینگ، پاداش تولید بلاک به صفر مطلق میرسد و فرآیند خلق بیتکوین برای همیشه متوقف میشود.
۲. کالبدشکافی کد منبع: لایه کنترل عرضه
در کد منبع نرمافزار اصلی بیتکوین (Bitcoin Core)، تابعی وجود دارد که وظیفه آن بررسی شماره بلاک و تعیین پاداش ماینر است. منطق این کد به این صورت عمل میکند:
۱. ابتدا شماره بلاک فعلی شبکه را بر عدد ۲۱۰,۰۰۰ تقسیم میکند تا مشخص شود شبکه تا به حال چند بار هاوینگ را تجربه کرده است.
۲. اگر تعداد هاوینگها به عدد ۶۴ برسد، کد فوراً پاداش را صفر خروجی میدهد.
۳. در غیر این صورت، با استفاده از یک دستور برنامهنویسی سریع در سطح پردازنده (Bitwise Shift)، پاداش پایه را به تعداد هاوینگهای رخداده نصف میکند و عدد نهایی را برای تایید به لایه اجماع میفرستد.
اگر ماینری تلاش کند بلاکی بسازد که حتی یک ساتوشی بیشتر از این مقدار قانونی در آن خلق شده باشد، تمام نودهای شبکه آن بلاک را نامعتبر دانسته و فوراً ریجکت میکنند.
۳. مکانیزم تنظیم سختی و کمیابی مطلق
در دنیای واقعی، اگر قیمت یک دارایی (مثل طلا) بالا برود، شرکتهای استخراج، تجهیزات بیشتری میآورند تا طلای بیشتری از زمین خارج کنند. اما در بیتکوین این اتفاق غیرممکن است.
شبکه بیتکوین مجهز به مکانیزم تنظیم سختی (Difficulty Adjustment) است. اگر ماینرهای زیادی با دستگاههای فوقپیشرفته وارد شبکه شوند، سیستم خود به خود استخراج را سختتر میکند تا فاصله تولید بلاکها همان ۱۰ دقیقه باقی بماند. بنابراین، هیچ قدرت پردازشی یا تکنولوژی جدیدی نمیتواند سرعت عرضه بیتکوین را افزایش دهد یا زمان هاوینگ را جلو بیندازد.
-----------
مکانیزم هاوینگ تضمین میکند که بیتکوین یک دارایی با کاهش نرخ تورم ساختاری باقی بماند. اما این کاهش مداوم پاداش، یک چالش اقتصادی بزرگ ایجاد میکند: وقتی پاداش بلاک به مرور کم و در نهایت صفر شود، ماینرها چطور هزینههای سنگین سختافزار خود را تامین خواهند کرد؟
5 692
بخش ۹ | فهرست
۱. پویایی عرضه بیتکوین و مکانیزم هاوینگ (Halving)
برخلاف سیستمهای پولی سنتی که عرضه پول در آنها توسط بانکهای مرکزی تغییر میکند، عرضه بیتکوین کاملاً برنامهریزیشده، خودکار و غیرقابل تغییر است. این ساختار به گونهای طراحی شده که به مرور زمان، میزان تولید کوینهای جدید کمتر و کمتر شود.
۱. منطق توزیع و سقف ۲۱ میلیون کوین
محدودیت ۲۱ میلیون واحدی بیتکوین، بر اساس یک قانون ثابت در کدهای شبکه شکل گرفته است. در ابتدا، با تولید هر بلاک جدید، ۵۰ بیتکوین خلق میشد. اما سیستم طوری برنامهریزی شده که هر ۲۱۰,۰۰۰ بلاک یکبار (تقریباً هر ۴ سال)، این پاداش نصف (Halve) شود.
با تکرار این فرآیند نصف شدن، مقدار کوینهای جدیدی که به شبکه تزریق میشوند به قدری کوچک میشود که در نهایت پس از ۳۳ بار هاوینگ، پاداش تولید بلاک به صفر مطلق میرسد و فرآیند خلق بیتکوین برای همیشه متوقف میشود.
۲. کالبدشکافی کد منبع: لایه کنترل عرضه
در کد منبع نرمافزار اصلی بیتکوین (Bitcoin Core)، تابعی وجود دارد که وظیفه آن بررسی شماره بلاک و تعیین پاداش ماینر است. منطق این کد به این صورت عمل میکند:
۱. ابتدا شماره بلاک فعلی شبکه را بر عدد ۲۱۰,۰۰۰ تقسیم میکند تا مشخص شود شبکه تا به حال چند بار هاوینگ را تجربه کرده است.
۲. اگر تعداد هاوینگها به عدد ۶۴ برسد، کد فوراً پاداش را صفر خروجی میدهد.
۳. در غیر این صورت، با استفاده از یک دستور برنامهنویسی سریع در سطح پردازنده (Bitwise Shift)، پاداش پایه را به تعداد هاوینگهای رخداده نصف میکند و عدد نهایی را برای تایید به لایه اجماع میفرستد.
اگر ماینری تلاش کند بلاکی بسازد که حتی یک ساتوشی بیشتر از این مقدار قانونی در آن خلق شده باشد، تمام نودهای شبکه آن بلاک را نامعتبر دانسته و فوراً ریجکت میکنند.
۳. مکانیزم تنظیم سختی و کمیابی مطلق
در دنیای واقعی، اگر قیمت یک دارایی (مثل طلا) بالا برود، شرکتهای استخراج، تجهیزات بیشتری میآورند تا طلای بیشتری از زمین خارج کنند. اما در بیتکوین این اتفاق غیرممکن است.
شبکه بیتکوین مجهز به مکانیزم تنظیم سختی (Difficulty Adjustment) است. اگر ماینرهای زیادی با دستگاههای فوقپیشرفته وارد شبکه شوند، سیستم خود به خود استخراج را سختتر میکند تا فاصله تولید بلاکها همان ۱۰ دقیقه باقی بماند. بنابراین، هیچ قدرت پردازشی یا تکنولوژی جدیدی نمیتواند سرعت عرضه بیتکوین را افزایش دهد یا زمان هاوینگ را جلو بیندازد.
-----------
مکانیزم هاوینگ تضمین میکند که بیتکوین یک دارایی با کاهش نرخ تورم ساختاری باقی بماند. اما این کاهش مداوم پاداش، یک چالش اقتصادی بزرگ ایجاد میکند: وقتی پاداش بلاک به مرور کم و در نهایت صفر شود، ماینرها چطور هزینههای سنگین سختافزار خود را تامین خواهند کرد؟
5 692
یه توضیح مهم دربارهٔ بخش ۸ که باید بدونید
هدف این بخش صرفاً آشنایی مقدماتی با توسعه و برنامهنویسی در اکوسیستم بیتکوین بود.یادگیری حرفهای توسعه روی بیتکوین نیازمند مطالعه منابع تخصصیتر، تمرینهای عملی، آشنایی عمیقتر با مفاهیم فنی بیشتر و بررسی کد منبع پروژههای واقعی هست.
اگر هدف شما فعالیت در حوزه توسعه بیتکوین (مانند ساخت کیفپول، صرافی، ابزارهای تحلیل زنجیره، زیرساختهای پرداخت یا نرمافزارهای مبتنی بر لایتنینگ) هست، این بخش رو باید تنها یک نقطه شروع در نظر بگیرید. برای رسیدن به سطح حرفهای، لازمه مطالعه خودتون رو با منابع تخصصیتر ادامه بدید.
منابع پیشنهادی برای مطالعه عمیقتر:
کتابها:
Mastering Bitcoin – Andreas M. Antonopoulos
(نسخه سوم، رایگان در گیتهاب نویسنده)
Programming Bitcoin – Jimmy Song
(تمرین محور، از صفر تا ساخت تراکنش)
Bitcoin and Cryptocurrency Technologies – Arvind Narayanan
(نظری و عمیق از دانشگاه پرینستون)
مستندات رسمی:
Bitcoin Core Documentation
(بخش Developer Reference)
Bitcoin Wiki
(خصوصاً صفحات Transaction, Script, Protocol)
BIPs (Bitcoin Improvement Proposals)
( به خصوص BIPهای 32، 39، 44، 141، 340-345)
دورههای آنلاین:
Bitcoin & Cryptocurrency – Princeton University
(سایت Coursera)
Chaincode Labs – Bitcoin Seminars
(ضبط شده در یوتیوب، بسیار فنی)
کد منبع:
Bitcoin Core on GitHub
( فقط بخش /src برای مطالعه ساختار داخلی)
bitcoinjs-lib on GitHub
( برای کار با تراکنشها در JavaScript)
rust-bitcoin on GitHub
( برای توسعه در Rust)
تمرین عملی:
Learn Me A Bitcoin (Greg Walker)
(شبیهساز تعاملی تراکنش و بلاک)
Base58 – Bitcoin Developer Challenges
(مسئلههای عملی و کدهای کاربردی)
5 692
این زنجیره آزمایش، یکی از مهمترین عوامل کاهش ریسک و افزایش کیفیت نرمافزارهای بیتکوینی پیش از انتشار روی شبکه اصلی است.
پایان بخش ۸
در این بخش با معماری Bitcoin Core، رابطهای برنامهنویسی RPC، ساخت تراکنشها در سطح کد، کتابخانههای توسعه و محیطهای تست آشنا شدیم. اکنون ابزارهای لازم برای درک نحوه توسعه نرمافزارهای بیتکوینی را در اختیار داریم.
در بخش بعدی وارد جنبهای متفاوت از بیتکوین میشویم؛ جایی که اقتصاد، نظریه بازیها، مشوقهای مالی و آینده پروتکل را بررسی خواهیم کرد.
5 692
بخش ۸ | فهرست
۵. تستنت (Testnet)، ساینت (Signet) و ریگتست (Regtest)
توسعهدهندگان بسته به اینکه میخواهند کد خود را روی یک شبکه محلی کاملاً ایزوله تست کنند یا روی یک شبکه عمومی که رفتار اینترنت واقعی را شبیهسازی میکند، یکی از محیطهای زیر را انتخاب میکنند.
۱. شبکه ریگتست (Regtest - Regression Test)
ریگتست قدرتمندترین و پرکاربردترین ابزار برای تستهای اولیه و اتوماسیون (CI/CD) است. در این حالت، شما یک شبکه بیتکوین کاملاً خصوصی و محلی روی کامپیوتر خودتان راهاندازی میکنید.
کنترل مطلق بر زمان
در ریگتست، سختی شبکه روی مقدار بسیار پایینی تنظیم شده و هیچ ماینینگ واقعی رخ نمیدهد. بلاکها تنها زمانی تولید میشوند که شما به صورت برنامهنویسی یا از طریق RPC دستور تولید آنها را صادر کنید.
تولید بلاک آنی
با اجرای دستور:
generatetoaddress 101 <address>نود شما فوراً ۱۰۱ بلاک جدید تولید میکند. چرا ۱۰۱ بلاک؟ زیرا پاداش استخراج تراکنش کوینبیس (Coinbase Transaction) تا ۱۰۰ بلاک بعد قابل خرج کردن نیست. با تولید ۱۰۱ بلاک، پاداش بلاک اول آزاد میشود و میتوانید فوراً از آن برای ساخت تراکنشهای آزمایشی استفاده کنید. بدون هزینه و تقریباً نامحدود شما کنترل کامل این شبکه محلی را در اختیار دارید و میتوانید سناریوهای پیچیدهای مانند فورکهای آزمایشی، تست کیفپولها، بررسی عملکرد قراردادهای اسکریپتی و حتی شبیهسازی برخی حملات را بدون هیچ ریسک مالی اجرا کنید. ۲. شبکه ساینت (Signet - BIP 325)؛ آزمایشگاه مدرن تستنتهای قدیمی مانند Testnet3 یک مشکل بزرگ داشتند. از آنجا که کوینهای آنها هیچ ارزش اقتصادی ندارند، برخی ماینرها به صورت مقطعی قدرت پردازشی زیادی وارد شبکه میکردند که باعث نوسان شدید زمان تولید بلاکها و بیثباتی محیط تست میشد. برای حل این مشکل، استاندارد Signet معرفی شد. اعتبارسنجی مبتنی بر امضا در Signet، بلاکها علاوه بر رعایت قوانین معمول بیتکوین، باید دارای امضای معتبر Signet Challenge نیز باشند. این سازوکار باعث میشود شبکه رفتار بسیار کنترلشدهتر و پایدارتری نسبت به Testnet داشته باشد. پایداری بالای زمان بلاکها به لطف این معماری، بلاکها با نظم بسیار بیشتری تولید میشوند و محیطی پایدار برای آزمایش نرمافزارها فراهم میشود. این ویژگی Signet را به یکی از بهترین گزینهها برای تست: - کیفپولها - تراکنشهای پیچیده - قفلهای زمانی (Timelocks) - برنامههای مبتنی بر لایتنینگ تبدیل کرده است. ۳. شبکه تستنت (Testnet4) تستنت یک شبکه عمومی جهانی است که ساختار آن بسیار شبیه شبکه اصلی بیتکوین (Mainnet) است؛ با این تفاوت که کوینهای آن ارزش مالی ندارند و میتوان آنها را از سرویسهایی به نام Faucet دریافت کرد. پس از مشکلات متعدد Testnet3، نسخه جدیدی با نام Testnet4 معرفی شد تا محیط پایدارتری برای توسعهدهندگان فراهم کند. قوانین بهبودیافته
Testnet4با تغییرات ساختاری در مکانیزم تنظیم سختی و مدیریت بلاکها، بسیاری از مشکلات نسخههای قبلی را کاهش داده و ثبات بیشتری ارائه میدهد. شبیهسازی اینترنت واقعی این شبکه بهترین محیط برای آزمایشهای پیش از انتشار (Pre-Production Testing) محسوب میشود، زیرا رفتار واقعی شبکه را تا حد زیادی بازسازی میکند. در Testnet4 میتوان مواردی مانند: - تأخیرهای شبکه - رفتار نودهای عمومی - انتشار تراکنشها - تعامل با ممپول - ارتباط با سرویسهای خارجی را در شرایطی نزدیک به دنیای واقعی بررسی کرد. مقایسه محیطهای تست بیتکوین
ارزش مالی کوینها Mainnet: واقعی و دارای ارزش اقتصادی Testnet4: بدون ارزش مالی Signet: بدون ارزش مالی Regtest: بدون ارزش مالی مکانیزم اجماع Mainnet: اثبات کار (PoW) Testnet4: اثبات کار با سختی پایینتر Signet: اثبات کار همراه با اعتبارسنجی امضای Signet Challenge Regtest: تولید بلاک تحت کنترل مستقیم توسعهدهنده سرعت تولید بلاک Mainnet: میانگین ۱۰ دقیقه Testnet4: متغیر و وابسته به شرایط شبکه Signet: پایدار و نزدیک به برنامه زمانی هدف شبکه Regtest: آنی و بر اساس دستور کاربر محیط ایدهآل برای Mainnet: اجرای نهایی محصول Testnet4: تست نهایی سیستمهای توزیعشده Signet: توسعه و آزمایش کیفپولها، لایتنینگ و Timelockها Regtest: تستهای اولیه، اتوماسیون و Unit Testها پرچم اجرای نود Mainnet: پیشفرض Testnet4: "-testnet4" Signet: "-signet" Regtest: "-regtest"تسلط بر Regtest، Signet و Testnet4 به توسعهدهنده اجازه میدهد نرمافزارهای خود را در سه سطح مختلف آزمایش کند: از یک آزمایشگاه کاملاً خصوصی و تحت کنترل گرفته تا محیطی عمومی که رفتار شبکه واقعی بیتکوین را شبیهسازی میکند. -----------
5 692
استفاده از کتابخانههای ممیزیشده و شناختهشده، ریسک بسیاری از خطاهای رایج برنامهنویسی را به شکل قابل توجهی کاهش میدهد. با این حال، هیچ توسعهدهنده حرفهای کدهای خود را مستقیماً روی شبکه اصلی بیتکوین (Mainnet) آزمایش نمیکند؛ زیرا یک خطای کوچک میتواند منجر به از دست رفتن سرمایه یا ارسال تراکنشهای اشتباه شود.
در مبحث پایانی این بخش (۸.۵)، به سراغ «محیطهای تست، ساینت (Signet) و ریگتست (Regtest)» میرویم تا ببینیم چطور یک آزمایشگاه اختصاصی و رایگان برای تست کدهایمان راهاندازی کنیم.
5 692
بخش ۸ | فهرست
۴. توسعه با کتابخانههای بیتکوین (BDK، rust-bitcoin و ...)
در سالهای اخیر، اکوسیستم توسعه بیتکوین دچار یک تحول بزرگ شده است. زبان Rust (راست) به دلیل امنیت بسیار بالا در مدیریت حافظه و سرعت نزدیک به ++C، به یکی از مهمترین زبانهای توسعه زیرساختهای بیتکوین، بهویژه در حوزه شبکه لایتنینگ و کیفپولهای پیشرفته، تبدیل شده است.
۱. فریمورک BDK (Bitcoin Dev Kit)؛ استاندارد توسعه کیفپولهای مدرن
پروژه BDK یک فریمورک چندزبانه (دارای بایندینگ برای Rust، Python، Swift و Kotlin) است که با هدف حذف کدهای تکراری و پیچیدگیهای رایج در توسعه کیفپولهای بیتکوینی ایجاد شده است.
بزرگترین مزیت فنی BDK، اتکای کامل آن به توصیفکنندههای خروجی (Output Descriptors) است. به جای مدیریت مستقیم آدرسها، توسعهدهنده ساختار اسکریپت و کیفپول را با یک Descriptor استاندارد تعریف میکند و BDK باقی فرآیندها را مدیریت میکند.
نمونهای از یک Descriptor در BDK:
wpkh([d34db33f/84'/0'/0']xpub661MyMwAqRbcF.../0/*)(این مثال صرفاً برای نمایش ساختار Descriptor است و یک کلید واقعی محسوب نمیشود.) این عبارت به BDK میگوید:
«یک کیفپول Native SegWit مبتنی بر استاندارد BIP-84 ایجاد کن که کلید عمومی توسعهیافته (xpub) آن مشخص شده و آدرسهای فرزند از مسیر تعریفشده تولید شوند.»پس از آن، فرآیندهایی مانند: اسکن بلاکچین کشف UTXOها محاسبه موجودی ساخت تراکنش مدیریت تغییر آدرسها (Change) به صورت خودکار توسط BDK انجام میشود. ۲. کتابخانه سطح پایین rust-bitcoin اگر BDK یک ابزار سطح بالا برای ساخت کیفپول است، کتابخانه rust-bitcoin ابزار سطح پایین اکوسیستم Rust محسوب میشود. این کتابخانه هیچ منطق آمادهای برای ذخیره کلیدها، مدیریت موجودی یا همگامسازی کیفپول ندارد؛ بلکه بلوکهای سازنده اصلی بیتکوین را در اختیار توسعهدهنده قرار میدهد. کاربردهای رایج rust-bitcoin عبارتاند از: تجزیه و تحلیل بلاکهای خام ساخت و سریالسازی تراکنشها محاسبه هشهای بیتکوینی کدگذاری و رمزگشایی آدرسهای Bech32 کار با اسکریپتها و Witnessها توسعه ابزارهای تحلیل زنجیره به همین دلیل بسیاری از پروژههای زیرساختی و بکاندهای حرفهای بیتکوین بر پایه rust-bitcoin ساخته میشوند. ۳. کتابخانه bitcoinjs-lib برای دنیای وب و Node.js برای توسعهدهندگانی که در اکوسیستم JavaScript و TypeScript فعالیت میکنند، bitcoinjs-lib یکی از قدیمیترین و معتبرترین کتابخانههای بیتکوین است. این کتابخانه امکان ساخت، امضا و مدیریت تراکنشها را در مرورگر یا محیط Node.js فراهم میکند. یکی از مزایای مهم bitcoinjs-lib این است که میتوان فرآیند امضای تراکنش را در سمت کاربر (Client Side) انجام داد. در نتیجه سرور هرگز به کلید خصوصی دسترسی پیدا نمیکند و کیفپول میتواند به صورت کاملاً غیرامانی (Non-Custodial) عمل کند. به همین دلیل بسیاری از: افزونههای مرورگر کیفپولهای تحت وب برنامههای مبتنی بر Node.js از این کتابخانه استفاده میکنند. مقایسه کتابخانههای اصلی توسعه بیتکوین
BDK (Bitcoin Dev Kit)زبان اصلی: Rust / چندزبانه سطح انتزاع: بالا (High-Level) مناسب برای: توسعه سریع کیفپولهای موبایل، دسکتاپ و وب ویژگی کلیدی: پشتیبانی بومی از Output Descriptors و مدیریت خودکار کیفپول
rust-bitcoinزبان اصلی: Rust سطح انتزاع: پایین (Low-Level) مناسب برای: توسعه زیرساختها، نودها و ابزارهای تحلیل زنجیره ویژگی کلیدی: کنترل دقیق ساختارهای بیتکوینی همراه با امنیت بالای حافظه
bitcoinjs-libزبان اصلی: JavaScript / TypeScript سطح انتزاع: متوسط (Mid-Level) مناسب برای: توسعه برنامههای وب، افزونههای مرورگر و سرویسهای Node.js ویژگی کلیدی: سازگاری گسترده با اکوسیستم وب ۴. چرخه منطقی ساخت یک برنامه با BDK وقتی با ابزارهایی مانند BDK توسعه انجام میدهید، معماری کلی برنامه معمولاً از مراحل زیر پیروی میکند: انتخاب پایگاه داده محلی ابتدا یک فضای ذخیرهسازی محلی (مانند SQLite یا حافظه موقت) برای نگهداری اطلاعات کیفپول و ایندکسهای UTXO انتخاب میشود. اتصال به شبکه برنامه به یک منبع داده متصل میشود. این منبع میتواند: یک نود کامل از طریق RPC یک سرور Electrum یا یک کلاینت مبتنی بر فیلترهای فشرده Neutrino باشد. همگامسازی (Sync) برنامه با فراخوانی تابع Sync، بلاکچین را بر اساس Descriptor کیفپول اسکن کرده و موجودی و UTXOها را بهروزرسانی میکند. ساخت و ارسال تراکنش در نهایت: تراکنش با ابزارهایی مانند TxBuilder ساخته میشود. توسط کلید خصوصی محلی امضا میشود. نسخه Hex نهایی به شبکه ارسال (Broadcast) میشود. -----------
5 692
برنامهنویسی تراکنشهای خام به توسعهدهندگان اجازه میدهد کنترل کاملی بر فرآیند ساخت، امضا و انتشار تراکنشها داشته باشند. بسیاری از صرافیها، سیستمهای پرداخت، کیفپولها و سرویسهای مالی بیتکوینی از همین روش برای مدیریت تراکنشهای خود استفاده میکنند.
با این حال، کار مستقیم با ساختار بایتها و امضاها میتواند پیچیده و مستعد خطا باشد. به همین دلیل جامعه بیتکوین در طول سالها مجموعهای از کتابخانهها و ابزارهای استاندارد توسعه را ایجاد کرده است تا این فرآیند سادهتر و ایمنتر شود.
ساخت تراکنش در سطح کد به ما نشان میدهد که پشت هر انتقال بیتکوین چه فرآیند پیچیدهای در حال وقوع است. اما در پروژههای واقعی، توسعهدهندگان معمولاً از کتابخانههای تخصصی استفاده میکنند تا به جای کار مستقیم با بایتها و ساختارهای سطح پایین، روی منطق پروژه تمرکز کنند.
5 692
بخش ۸ | فهرست
۳. ساخت و تحلیل تراکنشها به صورت برنامهنویسی
برای ساخت یک تراکنش به صورت برنامهنویسی، یک کلاینت یا اسکریپت بکاند باید اطلاعات دقیق ورودیها و خروجیها را در قالب بایتها آرایش دهد. این فرآیند شامل سه گام اصلی است: تعریف ساختار تراکنش، تولید داده امضاشونده (SigHash Preimage) و در نهایت اعمال امضای دیجیتال.
۱. ساختار بایتهای یک تراکنش خام (Raw Transaction Structure)
وقتی یک تراکنش به صورت کدهای ۱۶تایی (Hex) از یک برنامه خارج میشود، دادهها با ترتیب بسیار دقیقی پشت سر هم قرار گرفتهاند (Serialize شدهاند). نودها هنگام دریافت این دادهها، آنها را بایتبهبایت بر اساس ساختار زیر تجزیه (Deserialize) میکنند:
Version اندازه: ۴ بایت توضیح: نسخه پروتکل تراکنش (معمولاً نسخه ۲) Marker & Flag اندازه: ۲ بایت توضیح: فقط در تراکنشهای SegWit وجود دارد و برای شناسایی دادههای Witness استفاده میشود. Input Count اندازه: ۱ تا ۹ بایت (VarInt) توضیح: تعداد ورودیهای تراکنش TXID (Input) اندازه: ۳۲ بایت توضیح: شناسه تراکنش قبلی که خروجی موردنظر در آن قرار دارد (به صورت Little-Endian ذخیره میشود). VOUT (Input) اندازه: ۴ بایت توضیح: شماره خروجی در تراکنش قبلی ScriptSig Length اندازه: ۱ تا ۹ بایت توضیح: طول ScriptSig ScriptSig اندازه: متغیر توضیح: دادههای بازکننده قفل خروجی قبلی. در بسیاری از تراکنشهای SegWit این فیلد تقریباً خالی است. Sequence اندازه: ۴ بایت توضیح: مربوط به Timelockها و قابلیت RBF (Replace-By-Fee) Output Count اندازه: ۱ تا ۹ بایت توضیح: تعداد خروجیها Value (Output) اندازه: ۸ بایت توضیح: مقدار خروجی بر حسب ساتوشی و به صورت Little-Endian ScriptPubKey Length اندازه: ۱ تا ۹ بایت توضیح: طول اسکریپت قفلکننده ScriptPubKey اندازه: متغیر توضیح: شرایط خرج شدن خروجی (قفل تراکنش) Witness Data اندازه: متغیر توضیح: اطلاعات امضاها و دادههای Witness در تراکنشهای SegWit Locktime اندازه: ۴ بایت توضیح: زمان یا ارتفاع بلاکی که تراکنش از آن به بعد قابل استخراج است.۲. فرآیند فنی امضا: تولید SigHash Preimage یکی از چالشهای مهم در بیتکوین این است که امضا نباید روی تراکنشی محاسبه شود که خودِ امضا را درونش دارد؛ زیرا با اضافه شدن امضا، دادههای تراکنش تغییر میکنند و هش جدیدی تولید خواهد شد. برای حل این مشکل، فرآیند امضا به شکل زیر انجام میشود: ۱. ساخت تراکنش موقت: ابتدا یک تراکنش بدون دادههای امضا ساخته میشود. فیلدهای امضا (ScriptSig یا Witness) در این مرحله خالی در نظر گرفته میشوند. ۲. جایگذاری اسکریپت مرجع: اسکریپت قفلکننده خروجی موردنظر (ScriptPubKey) به صورت موقت در ساختار امضاشونده قرار میگیرد. ۳. افزودن نوع SigHash: یک مقدار چهار بایتی مانند SIGHASH_ALL به انتهای دادهها اضافه میشود تا مشخص کند امضا دقیقاً کدام بخشهای تراکنش را پوشش میدهد. ۴. تولید هش: از این ساختار موقت هش گرفته میشود. خودِ دادهای که برای تولید این هش ساخته شده است، SigHash Preimage نام دارد و هش حاصل همان مقداری است که قرار است امضا شود. ۵. امضای هش: کلید خصوصی کاربر این هش را امضا میکند و امضای دیجیتال تولید میشود. ۶. قرار دادن امضا در تراکنش نهایی: در نهایت امضای تولیدشده در فیلد Witness یا ScriptSig قرار داده میشود و تراکنش آماده انتشار خواهد بود. ۳. نمونه کد فرضی: ساخت یک تراکنش در عمل، توسعهدهندگان نیازی ندارند تمام بایتهای تراکنش را به صورت دستی بنویسند. کتابخانههای مختلف این کار را انجام میدهند. منطق کدنویسی یک تراکنش (مثلاً با جاوااسکریپت) ساختاری شبیه به این دارد:
// تعریف ورودی (UTXO موجود)
const utxo = {
txid: "a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890",
vout: 0,
satoshis: 5000000 // 0.05 BTC
};
// تعریف مبالغ
const sendAmount = 4000000; // 0.04 BTC
const fee = 50000; // 0.0005 BTC
const changeAmount = utxo.satoshis - sendAmount - fee;
// ساخت اسکلت تراکنش
const tx = new BitcoinTransaction();
tx.from(utxo);
tx.to("<destination-address>", sendAmount);
tx.to("<change-address>", changeAmount);
// امضای تراکنش
tx.sign(privateKey);
// سریالسازی خروجی نهایی
const rawHex = tx.serialize();
console.log(rawHex);
// خروجی: 02000000000101907856cded...
در پشت صحنه، کتابخانه تمام مراحل پیچیده مانند تولید Preimage، محاسبه هش، ایجاد امضا، ساخت Witness و سریالسازی نهایی را انجام میدهد.
-----------