فرهنگی اجتماعی

ساختار و عملکرد پول دیجیتال بیت‏کوین-۲

نحوه استخراج و بهره برداری ، ساختار بلوک های استفاده شده در پول دیجیتال و چگونگی امنیت پول دیجیتال در فضای مجازی دستمایه قسمت دوم از یاداشت گروه فناوری و فضای مجازی موسسه راهبردی فرهیختگان است..

۲۱ آذر ۱۳۹۷ ۱۲:۴۵

مقدمه:

در قسمت اول این مقاله در خصوص ساختار و عملکرد پول دیجیتال بیت کوین  با بیان مقدمه ایی به تاریخچه ، چگونگی شبکه های بیت کوین ، ماهئیت سکه ها و تراکنش های مالی در بیت کوین ، ساختار کیف پول و امضای دیجیتال در این نوع پول و نحوه تراکنش های آن طرح گردید . در قسمت دوم و در ادامه به زوایا  دیگر این پول پرداخته می شود.

 استخراج

زنجیره بلوکها ساختاری از داده است که در شبکه یه صورت یکتا وجود دارد. این ساختار متشکل از بلوکهایی است که پشت سر هم قرار گرفته اند و هر بلوک از تعدادی تراکنش و تاییدیه آنها ساخته شده است. زنجیره بلوکها به صورت دنباله ای از بلوکها است که از اولین استخراج تا کنون به شکل یک زنجیره بدون انشعاب شکل یافته است و هربار استخراج یک بلوک تازه به آن می افزاید. در این قسمت نحوه استخراج و تولید یک بلوک شرح داده شده است.

پس از اینکه تراکنشهای معتبر در نودها منتشر شدند آنها در یک استخر تراکنش قرار میگیرند. استخراج کننده ها تعدادی از تراکنشهای موجود در استخر را برمیدارند و در یک بلوک موقت قرار میدهند.  بلوک ساختار خاصی دارد و علاوه بر تراکنشها حاوی داده های دیگری نیز میباشد.

شکل ۴)  ساختار سرآیند (header ) بلوک

 

این داده ها که در یک بخش header جمع شده‏اند عبارت اند از: مقدار هش بلوک قبلی، ریشه درخت مرکل، برچسب زمانی، برچسب دشواری و مقدار اختیاری  Nonce که در مجموع معادل ۸۰ بایت یا ۶۴۰ بیت می‏شود.  فرآیند استخراج بدین نحو است که از header بلوک مدنظر  هش گرفته میشود. اگر این هش با ساختاری که از پیش برای بیت‌کوین تعیین شده مطابق باشد(باستی در هش ایجاد شده تعداد مشخصی از بیتهای آغازین که به میزان دشواری وابسته است صفر باشد و مقدار هش از عدد خاصی کمتر باشد)، گفته میشود که استخراج صورت گرفته است و در غیر این صورت با تغییر مقدار Nonce هش دیگری گرفته میشود. با توجه به اینکه احتمال استخراج موفق بسیار اندک است باستی این عمل را به تعداد بسیار زیادی انجام داد تا به موفقیت رسید. در صورت موفق شدن استخراج، جایزه و کارمزدها به استخراج‌کننده میرسد. جایزه استخراج که در واقع مبدا همه پولهایی است که در شبکه خرج میشود در ابتدا ۵۰ بیت‌کوین بوده و پس از هر ۴ سال یا به عبارت دقیقتر ۲۱۰هزار بلوک مقدار جایزه نصف میشود. همین امر تضمین میکند که تعداد بیت‌کوینها نهایتا ۲۱میلیون شود.

 

  • ساختار بلوک

بلوک از دو بخش تراکنشها و بخش header  تشکیل شده است. تراکنشها از بین تراکنشهای معتبر موجود در استخر برداشته میشوند  و در انتخاب آنها اولویت با تراکنشهایی است که زمان انتظار × مبلغ تراکنش بالاتر باشد یا اینکه کارمزد بیشتری پیشنهاد کرده باشند. پس از این کار یک تراکنش پایه ای به آدرس استخراج‌کننده و به مبلغ جمع جایزه استخراج و کارمزدها ساخته میشود. این تراکنش در صورت موفقیت به استخراج‌کننده میرسد و پس از گذشت ۱۰۰ استخراج قابل خرج کردن میشود. درباره اندازه بلوک باید گفت که حداکثر  اندازه در آغاز نباید از ۱MB  بیشتر میشد، ولی اکنون این حد به ۲MB افزایش پیدا کرده است.

بخش header  متشکل از ۶ داده است. اولین بخش header شماره ورژن بلوک است که در همه بلوکها مقدار آن ثابت است. دومین داده هش قسمت header بلوک قبلی در زنجیره بلوکها است. این هش مشخصه اصلی بلوک قبلی است و ارتباط بلوکها را با یکدیگر میسر میکند. سومین داده ریشه درخت مرکل است. منظور از درخت ساختار داده خاصی است که به گراف درخت شباهت دارد. در این ساختار برگها، هشهای تراکنشها هستند و دو به دو از آنها هش گرفته میشود.(دو هش تراکنش در کنار یکدیگر گذاشته میشود و از آن هش گرفته میشود. H(AB)=H(A|B)) در لایه بعدی دوباره همین کار روی هشهای به دست آمده از لایه قبلی تکرار میشود تا به یک هش نهایی برسیم. اگر در لایه ای  تعداد هشها فرد بود، آخرین هش را یکبار کپی میکنیم تا تعداد زوج شود. برای مثال اگر پنج تراکنش داشته باشیم و بخواهیم ریشه درخت مرکل آنها را به دست آوریم و تراکنشها به ترتیب A,B,C,D,E باشد و H تابع هش باشد، داریم:

STEP1

HAB=H(HA|HB)

HCD= H(HC|HD)

HEE= H(HE|HE)

STEP2

HABCD= H(HAB|HCD)

HEEEE=H(HEE|HEE)

STEP3

HABCDE=H(HABCD|HEEEE)        Merkle Tree Root

 

شکل ۵) درخت مرکل

بدین صورت ریشه درخت در واقع خلاصه شده همه تراکنشها است. علت برگزیدن ساختار درخت برای این کار امکانی است که این ساختار برای چک کردن حضور یک تراکنش در یک بلوک در اختیار ما قرار میدهد. اهمیت یک سیستم با توان پردازشی  یا حافظه کم مشخص میشود. به نحوی که بدون اینکه نیاز به ذخیره کردن همه بلوک وجود داشته باشد، با استفاده از header  بلوک و تراکنش و چند هش وجود تراکنش در بلوک را بررسی کرد. مثلا در شکل بالا اگر بخواهیم وجود A در بلوک را بررسی کنیم صرفا به HB و HCD و HEFGH و HIJKLMNOP نیاز است. به عبارت دیگر با این روش مقدار حافظه و پردازش برای چک کردن بلوک، با افزایش اندازه بلوک به صورت لگاریتمی و به آهستگی رشد میکند.

چهارمین داده برچسب زمانی(timestamp) یونیکس است و زمان ساخته شدن بلوک را نشان میدهد. این برچسب نشان دهنده میزان ثانیه های گذشته شده از اول ژانویه ۱۹۷۰ است.

پنجمین داده میزان دشواری عملیات استخراج را تعیین میکند. برچسب دشواری مشخص کننده عددی است که برای پذیرفته شدن استخراج مقدار عددی هش تولید شده بایستی کمتر از آن باشد. در واقع این برچسب همین عدد با فرمتی خاص(به شکل مقادیر a,b در نمایش عدد به صورت a×۲۵۶b ) است. طبیعتا هر قدر مقدار این برچسب کمتر باشد بیتهای آغازین بیشتری صفر میشود و کار استخراج دشوارتر میشود. مقدار این برچسب به نحوی در شبکه تعیین میشود که فاصله بین دو استخراج به طور متوسط ۱۰ دقیقه باشد و تنظیم آن در هر نود به صورت مستقل ولی با الگوریتم یکسان هر دو هفته یک بار صورت میپذیرد. همین امر سبب میشود که کل شبکه روی برچسب دشواری توافق داشته باشد. این تنظیم به نحوی است که در صورت افزایش قدرت پردازش شبکه دشواری بیشتر میشود به نحوی که فاصله دو استخراج موفق به طور متوسط روی ۱۰ دقیقه باقی بماند.  مقدار این برچسب در زمان کنونی(آوریل ۲۰۱۸) به اندازه ای است که سبب شده  ۷۵ بیت آغازین هش استخراج شده صفر باشد (برای مثال مقدار هش در بلوک ۵۱۷۲۰۰ام برابر ۰x00000000000000000015353fca3bfb1e97f221705d8aebc307aaecc4b474bc0f است. )

آخرین داده Nonce است. این داده در واقع یک شمارنده چهار بایتی است. در عملیات استخراج ابتدا مقدار آن صفر در نظر گرفته میشود و از header  بلوک هش گرفته میشود. اگر هش از مقداری که برچسب دشواری تعیین میکند کمتر باشد عملیات استخراج موفق است و در غیر این صورت باید این کار دوباره ولی با یک مقدار Nonce  متفاوت انجام شود. این تغییر مقدار Nonce ها است که سبب تغییر در هش خروجی و موفقیت استخراج میشود.

با گذشت زمان و بیشتر شدن دشواری تغییر Nonce که حدود ۴میلیارد گزینه میشود برای استخراج کافی نیست و ممکن است با آزمودن همه مقادیر ممکن خبری از  موفقیت نباشد. به همین دلیل استخراج کننده ها برچسب زمانی را آپدیت میکردند. اما این روش هر یک ثانیه یک بار قابل انجام است و پس از گذشت سرعت محاسبات  از ۴ گیگاهش بر ثانیه به کار نمی آید. به همین دلیل استخراج کننده ها به سراغ منبع دیگری برای ایجاد تغییر رفته اند. آنها به دستکاری تراکنش پایه نیز میپردازند. این تراکنش به اندازه ۸ بایت فضای قابل تغییر دارد که برای ایجاد تغییر و یه وجود آوردن هش جدید تا سرعتهای پردازش بسیار بالا(تا ۲۹۶  هش بر ثانیه) کفایت میکند.

پس از استخراج موفقیت آمیز استخراج کننده بلوک را منتشر و به نودهای اطراف خود میفرستد. نودها صحت استخراج را بررسی میکنند و در صورت درستی همه فرآیند(از جمله درستی تراکنشها، درستی هش، مطابق  بودن هش با شرط دشواری درست بودن تراکنش پایه‌ای) بلوک در سایر نودها منتشر میکنند. سایر استخراج کننده ها دست از استخراج میکشند و بلوک جدید را به عنوان مبنای استخراج خود قرار میدهند.

انشعاب در زنجیره بلوکها[۱]

هرچند زنجیره بلوکها یک زنجیره یکدست و بدون انشعاب است، ولی ممکن است به صورت موقت دچار انشعاب شود. این انشعاب غالبا در یک بلوک بعدی حل میشود. انشعاب وقتی رخ میدهد که دو نود دور (منظور دوری و نزدیکی از نظر شبکه است و تعداد نودهایی که بین آنها فاصله انداخته است، نه لزوما فاصله جغرافیایی) در فاصله زمانی کمی موفق به استخراج شوند و برمبنای بلوک O دو بلوک جدید A , B را تشکیل دهند. این دو نود بلوک خود را منتشر میکنند و برخی از نودها بلوک A  و برخی بلوک B را میپذیرند و استخراج بلوک بعدی را بر پایه بلوکی که پذیرفته اند آغاز میکنند. با توجه به زمان تاخیر ارسال بلوکها در شبکه ها چنین رخدادی محتمل است و نودی که یک بلوک خاص را پذیرفته از پذیرفتن بلوک دیگر اجتناب میکند. سپس یکی از بلوکهایی که A را پذیرفته استخراج موفقی انجام میدهد و بلوک C را ایجاد میکند و به همه نودها میرساند. نودهایی که زنجیره بلوکشان  OB است و زنجیره بلوک OAC را دریافت میکنند در انتخاب بین این دو زنجیره بلوکی را انتخاب میکنند که طول بیشتری دارد. از این رو بلوک OAC انتخاب میشود و بلوک B حذف میگردد و انشعاب از بین میرود.

  • امنیت

امنیت شبکه بیت‌کوین مبتنی بر توافق دسته جمعی و وجود داشتن و یکسان بودن الگوریتم است. به نحوی که هرکس میتواند اصالت و صحت عملکرد شبکه از آغاز زنجیره بلوکها تا کنون بررسی کند. با وجود این برخی حملات به  این سیستم ممکن است. یکی از این حملات حمله ۵۱ درصد است و آن وقتی است که حمله کننده کنترل ۵۱ درصد نودهای شبکه را به دست گیرد. در این صورت او قادر خواهد بود که با ایجاد انشعابات دلخواه بر روی زنجیره بلوکها موفق به خرج کردن دوباره تراکنشهایی شود که بلوک تاییدکننده خرج شدن آنها نوپدید است و زمان زیادی از آن نگذشته است. به همین دلیل باید برای غلبه بر چنین ریسکی در هنگام دریافت کردن مقادیر زیاد بیت‌کوین، به صرف تایید شدن تراکنش در استخراج اکتفا نکرد و گذشت زمان و اضافه شدن بلوکهای بیشتر و عمیق شدن بلوک تاییدکننده تراکنش لااقل به اندازه ۶ بلوک را نشانه تایید و اعتبار انتقال در نظر گرفت.

البته احتمال رخداد چنین حمله ای آنهم وقتی هزاران نود در سراسر جهان به استخراج بیت‌کوین میپردازند چندان زیاد نیست.

با این وجود حملات زیادی به بیت‌کوین گزارش میشود و گاه از سرقت بیت‌کوینها خبر داده میشود. این حملات اغلب به کیف پول صورت میپذیرند و ناشی از اهمال صاحب بیت‌کوین در حراست از آن میباشند. کیف پول فایل دربرگیرنده کلیدهای خصوصی کاربر است و با دسترسی به آن کنترل و مالکیت بیت‌کوینها به دست حمله کننده میفتد. بدیهی است که این فایل همانند بقیه فایلهای کامپیوتر میتواند سرقت شود و برای غلبه بر این امر باید آنرا رمزگذاری کرد و بکاپ از آن تهیه کرد.

  • جمع بندی و نتیجه گیری

بیت‌کوین یک سیستم مبتنی بر زنجیره بلوکها است و با دفتر کار توزیع شده و مرکززدایی شده کار میکند. ایده محوری بیت‌کوین توافق مرکززدایی شده روی یک زنجیره بلوک است. زنجیره بلوکی که با هربار استخراج موفق یک بلوک به آن اضافه میشود و هیچ انشعابی در آن وجود ندارد.  خلق پول در این سیستم از طریق استخراج صورت میپذیرد و الگوریتم آن میزان خلق پول در طی زمان را به صورت تصاعد هندسی کاهش میدهد. همین امر سبب میشود که تعداد بیت‌کوینهای قابل استخراج ۲۱میلیون بیشتر نشود. فرآیند استخراج تضمین کننده اعتبار تراکنشهای صورت‌پذیرفته شده است ساختار تراکنش به نحوی است که به جز مالک شخص دیگری توان استفاده از آن را ندارد  و درصورت ساخت تراکنش جعلی شبکه آن را فیلتر میکند.

استفاده از بیت‌کوین و ارزهای مشابه میتواند نتایج اقتصادی و سیاسی جدیدی برای جهان به ارمغان بیاورد. این ارزها بالقوه میتوانند مسائلی مانند تورم و تحریمهای مالی و بانکی را حل کنند، ولی همزمان میتوانند معضلاتی نظیر فرار مالیاتی، خروج سرمایه از کشورها، تامین مالی تروریسم و ایجاد بستر پولی مناسب برای اعمالی نظیر قاچاق مواد مخدر، قاچاق انسان، تجارت فحشا و اسلحه و …. ایجاد کنند. به همین دلیل شناختن آن و امکانات و فرصتها و تهدیدات آن برای زندگی در جهان امروز ضروری است.

علاوه بر این کشورها میتوانند بر پایه بیت‌کوین و زنجیره بلوک مبادرت به ایجاد ارز دیجیتال مناسب با نیازهای مالی خود کنند.

برای دریافت پیوست های این مقاله اینجا را کلیک کنید.

[۱] Blockchain fork

یک دیدگاه برای “ساختار و عملکرد پول دیجیتال بیت‏کوین-۲

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.