ساختار و عملکرد پول دیجیتال بیتکوین-1
آخرین وضعیت پول دیجیتال در فضای مجازی با کوشش گروه فناوری و فضای مجازی موسسه راهبردی فرهیختگان دستمایه سلسله یاداشت هایی است که ارائه می گردد.
20 نوامبر 2018 11:28
ساختار و عملکرد بیتکوین
- مقدمه
بیتکوین یک سیستم پول دیجیتالِ مبتنی بر زنجیره بلوک[1] و امضای دیجیتال است که جهت انتقال ارزش مالی می تواند مورد استفاده قرار بگیرد. ویژگی های بیتکوین از قبیل کمیابی، امکان انتقال بدون برگشت، گمنامی، امنیت بالا و اعتبارِ منشا گرفته از توافق جمعی، آنرا برای تبدیل شدن به نوعی ارز بدون پشتوانه قابل استفاده می سازد. تفاوت عمده بیتکوین و ارزهای متعارف در این است که تولید و کنترل بیتکوین در دست یک مرکزی نظیر بانک مرکزی نیست و از آن تمرکززدایی شده است. شبکه بیتکوین نیاز به هیچگونه سازمان مرکزی برای کنترل و مدیریت ندارد. همین امر دخالت هایی را که بانک مرکزی در روی پول دارد از بین برده است و به بیتکوین موقعیتی شبیه طلا و فلزات با ارزش داده است. استفاده از بیتکوین امکانات مهمی فراهم میکند. نظیر گمنامی و دشوار بودن ردگیری تعاملات مالی، انتقال امن و برگشت ناپذیر، شفافیت و آشکار بودن همه تعاملات مالی برای همه کاربران با وجود گمنامی و متن باز بودن[2] برنامه های مرتبط با آن که کار توسعه و اختصاصی کردن آن را ممکن ساخته است.
ساختار و عملکرد بیتکوین
- تاریخچه
نخستین بار شخص یا سازمانی با نام مستعار ساتوشی ناکاموتو این سیستم را به عنوان نرم افزاری متن باز ارائه کرد. در سال 2008 مقاله ای با نام ناکاموتو منتشر شد و در آن روش و تئوری الگوریتم های بیتکوین، از جمله توافق مرکززدایی شده و ارتباط نظیر به نظیر و … بیان شد. در ژانویه 2009، شبکه بیتکوین با انتشار اولین نسخه متن باز نرم افزار بیتکوین و صدور اولین بیتکوین ها، پا به عرصه وجود گذاشت. این کار با استخراج اولین بلوک بیتکوین، توسط ساتوشی ناکاموتو انجام شد که نخستین مجموعه 50 بیتکوینی و نخستین تراکنش را ایجاد کرد. این سیستم مورد استقبال برنامه نویسان قرار گرفت و به توسعه آن مشغول شدند. با گذشت زمان اندک اندک بیتکوین پذیرش جامعه تجاری و اقتصادی را جلب کرد و قیمت آن فزونی یافت. به طوری که از اولین خرید بیتکوین که 10000 بیتکوین به ازای دو پیتزا به ارزش 25 دلار پرداخته شد، تاکنون ارزش آن رو به فزونی بوده است. در زمان کنونی (آوریل 2018) قیمت هر بیتکوین حدود 7000 دلار است. ارزش بیتکوین شبیه بورس های سهام و فلزات گران بها همواره فراز و نشیب داشته است.
شکل 1 ) ارزش بیتکوین برحسب دلار در سال های گذشته
در ادامه ما به بررسی فنی این سیستم خواهیم پرداخت و درباره مفاهیم اصلی آن توضیح خواهیم داد در سومین بخش به کلیات شبکه بیتکوین خواهیم پرداخت و در بخش چهارم به بیان مفاهیمی نظیر کیف پول و تراکنش و شرح آنها میپردازیم. بخش پنجم به فرآیند استخراج خواهیم پرداخت و در آخرین بخش به سراغ تحلیل امنیت شبکه خواهیم رفت.
ساختار و عملکرد بیتکوین
- شبکه بیتکوین
شبکه بیتکوین متشکل از نودهایی است که به صورت همتا به همتا (P2P)[3] به یکدیگر مرتبط شده اند و ارتباطات بین آنها به صورت مستقیم برقرار می شود. نودهای این شبکه انواع مختلفی دارند. برخی از نودها را می توان نود کامل نامید. این نودها تمام اطلاعات تراکنش ها و بلوک ها را در خود دارند. برخی دیگر از نودها به استخراج بیتکوین میپردازند و برخی دیگر که آنها را نود کیف پول مینامیم، محل استفاده کاربران معمولی است که صرفا میخواهند بیتکوین را منتقل کنند.
شکل 2) پراکنش نودهای شبکه بیتکوین.
در این شبکه اطلاعاتی نظیر تراکنش ها[4] منتقل می شود. تراکنش به زبانی ساده دستور انتقال بیتکوین است که توسط دارنده آن صادر شده و به میزان خاصی و برای شخص خاصی قابل استفاده است و از این رو به چک بانکی تضمینی بدون تاریخ شباهت دارد. نحوه انتشار اطلاعات در این شبکه به این نحو است که هر نود تراکنشهایی که دریافت میکند را بررسی میکند. اگر اعتبار امضا و سایر اطلاعات مرتبط آن را بتواند تایید کند، آنرا به نودهای دیگری که به آنها مرتبط است، ارسال می کند. شبکه بیتکوین شبکه به هم پیوسته ای از هزاران نود کامل موجود در سراسر کره زمین است و مجموعه این نودها اعتبار شبکه را تامین میکنند. در صورتی که شخصی بخواهد عملکرد شبکه را به صورت برگشت ناپذیری مختل کند یا جعل بسیار بزرگی انجام دهد، باید بتواند کنترل نیمی از نودها را به دست گیرد. امر مهم دیگری که می تواند مورد توجه قرار بگیرد در این است که برای کار کردن شبکه الزامی به رمزگذاری ارتباط وجود ندارد. امضا اصالت تراکنش وارد شده را تضمین می کند و همین برای شبکه کافی است. شبکه بیتکوین را می توان در درون شبکه اینترنت ایجاد کرد و از بستر آن برای ارتباط بهره گرفت. شبکه های دیگری نظیر بیت تورنت که برای اشتراک فایل به کار می رود نیز وجود دارد که شبیه به بیتکوین از بستر اینترنت برای ارتباط همتا به همتا استفاده کرده باشد.
ساختار و عملکرد بیتکوین
- سکه ها کیف پول و تراکنش
یکی از سوالاتی که پرسیده می شود این است که اصولا بیتکوین چیست؟ و سکههای آن از چه جنسی است؟ تصوری در نزد عموم وجود دارد که سکههای بیتکوین بایستی یک فایل داده یا یک شیء باشد. در حالی که چنین نیست. سکه های بیتکوین اساسا وجودی به جز در تراکنشها ندارند و تنها اعدادی هستند که در شبکه بیتکوین توافق شده است که به شخص خاصی تعلق داشته باشند. این سکه ها اعدادی هستند که در یک تراکنش منتقل می شوند. به نوعی شاید بشود گفت که اسکناس هم همین است، اسکناس تراکنشی است که بانک مرکزی به افراد می دهد و اعتبار آن نه فیزیکی که به امضا و چاپ بانک مرکزی وابسته است. با این تفاوت که تراکنش بیتکوین هر مقداری می تواند داشته باشد و باید به دست شخص خاصی برسد، و فقط همان شخص حق خرج کردن آن را دارد. شبیه یک چک تضمینی است که بانک به شما می دهد و شما میتوانید با امضا کردن به شخص ثالثی بدهید و خرج کنید. ولی این تفاوت وجود دارد که در این سیستم بانک مرکزی ای وجود ندارد و ایجاد بیتکوین از طریق عملیات استخراج صورت می پذیرد. استخراج تایید کننده اعتبار بیتکوین است و بیتکوینهای به وجود آمده در آن را می توان خرج کرد. علاوه بر این فرآیند استخراج اعتبار یک تراکنش را تایید می کند.
- کیف پول و امضای دیجیتال
در شبکه بیتکوین هر کسی می تواند یک کیف پول بسازد. کیف پول محلی است که کلیدهای خصوصی کاربر ذخیره و حفاظت می شود. ولی کلید عمومی و آدرسی که از کلید عمومی تولید می شود منتشر می شود. بدین سان کاربر می تواند امضا کند و تراکنش ایجاد کند. با توجه به این امر که آدرس و کلید عمومی اعدادی بی معنا و شبه تصادفی هستند و کاربر خودش آنها را تولید می کند و با استفاده از آنها خودش را به شبکه معرفی می کند، گمنامی تامین می شود و نیازی به ثبت هویت در یک مرکز وجود ندارد (برخلاف بانک ها که لازم است ثبت هویت صورت بپذیرد) ولی ذکر این نکته ضروری است که در صورت گم شدن کلیدهای خصوصی دارایی مرتبط با آن برای همیشه از دست می رود، چرا که بدون آن کاربر قادر به امضا و خرج کردن تراکنش خود نیست. الگوریتم های کیف پول انواع مختلفی از الگوریتم های تولید و نگهداری کلید را به کار می برند. برخی از این الگوریتم ها تمامی کلیدها را از یک کلمه عبور تولید می کنند و امنیت شان وابسته به کلمه عبور است. به هر ترتیب ساختمان و الگوریتمهای کیف پول امری متعین شده از طرف استاندارد بیتکوین نیستند و میتوان انواع متفاوتی از آنرا طراحی کرد و توسعه داد.
امضای دیجیتال همانند امضای معمولی صرفا توسط صاحب امضا میتواند ایجاد شود (به دلیل اینکه تنها او به کلید خصوصی دسترسی دارد) اما توسط عموم افراد قابل بررسی است. (به دلیل اینکه کلید عمومی منتشر شده است). به عبارت دیگر امضا به این نحو است که فرد امضاکننده با کلید خصوصی متن را رمز می کند و متن اصلی و رمز شده را منتشر می کند. سپس کسی که بخواهد امضا را بررسی کند امضا که متن رمز شده است را با کلید عمومی رمزگشایی می کند و حاصل هش را با هش متن اصلی که خود بدست میآورد، مقایسه می کند. در صورت مطابقت اصالت امضا را احراز می کند. در شبکه بیتکوین امضا با هش صورت می پذیرد.
تابع هش تابعی است که به صورت یکطرفه یک متن با هر طولی را به یک متن باینری با طول مشخص تبدیل می کند. و عملکرد تابع صرفا بستگی به متن ورودی دارد و همواره برای یک متن مشخص مقداری یکسان است. امضای با هش بدین نحو است که به جای اینکه همه متن امضا شود متن هش شده و هش آن امضا می شود. در بررسی نیز ابتدا متن هش شده و سپس مطابقت امضا با هش بررسی می شود.
در بیتکوین از رمزنگاری منحنی بیضوی[5] جهت امضا استفاده می شود. در این الگوریتم به صورت یک طرفه کلید عمومی قابل تولید از کلید خصوصی است.
ساختار و عملکرد بیتکوین
تراکنش
تراکنش ساختاری است که انتقال پول را ممکن می سازد. علاوه بر این تراکنش در واقع خود پول مجازی است. تراکنشی که در استخراج اعتبار آن تایید شده باشد و مدت کافی از استخراج گذشته باشد همانند پول قابلیت خرج شدن دارد. مهمترین و محوری ترین مفهوم در این سیستم تراکنش است و بقیه امور در خدمت تایید اعتبارسنجی امضا و …. آن قرار دارند.
ساختار تراکنش شامل چند بخش اساسی است:
- هش تراکنش هایی که ورودی تراکنش محسوب می شوند و اصالت آنها زودتر یا همراه با تراکنش در فرآیند استخراج تایید شده است.
- آدرس اشخاصی که تراکنش را می توانند خرج کنند. در واقع هر تراکنش آدرس افراد و مبلغی که به آنها منتقل شده مشخص می کند و افراد در حین خرج کردن علاوه بر هش تراکنش شماره خودشان را در خروجی نیز مشخص کنند.
- کلید عمومی و آدرس خرج کننده که مالکیت او بر تراکنش های ورودی را اثبات می کند.
- امضاهایی که مشخص کننده قصد او برای خرج کردن تراکنش های ورودی و انتقال به آدرس های خروجی دارد.
شکل 3) ساختار یک تراکنش
اعتبار تراکنش به تراکنش های ورودی آن بستگی دارد. اگر این نکته را برای تراکنش های ورودی نیز درنظر بگیریم به زنجیره هایی از تراکنش ها می رسیم که هر تراکنش منشا گرفته از دیگری است. ابتدای این زنجیره تراکنش های پایهای[6] هستند که در حین استخراج به وجود می آیند و شامل جایزه استخراج و کارمزد انتقال هستند.
روش ایجاد تراکنش بدین نحو است که ابتدا سازنده تراکنش بایستی مقداری بیتکوین داشته باشد. به عبارت دیگر باید یک تراکنش تایید شده به آدرس او وجود داشته باشد. کاربر بایستی مشخصه تراکنش هایی را که می خواهد خرج کند در قسمت ورودی ذکر کند. سپس باید آدرس اشخاصی که قصد انتقال بیتکوین به آنها را دارد و همچنین مقدار پول منتقل شونده را در قسمت خروجی بنویسد. سپس قدری به عنوان کارمزد تراکنش برای استخراج کننده کنار بگذارد (این بخش کار خاصی نمی خواهد. کافی است جمع مبالغ ورودی بیشتر از جمع مبالغ خروجی باشد. استخراج کننده بقیه مبلغ را به عنوان هزینه انتقال در نظر می گیرد.) و اگر قصد دارد بخشی از پول موجود در تراکنشها برای خودش باقی بماند آنها را هم به آدرس خودش باید ارسال کند. علاوه بر این اطلاعات لازم دیگری نظیر کلید عمومی خودش را به آن اضافه کند و نهایتا همه را هش کند و امضا کند و هش امضا شده را به تراکنش اضافه کند.
کاربر باید در قسمت ورودی تراکنش هایی که در فرآیند استخراج تایید شده اند یا منتظر تایید هستند قرار دهد. منظور از تراکنش در انتظار تایید، تراکنشی است که اعتبارسنجی آن در نودها انجام شده است، ولی هنوز در فرآیند استخراج قرار نگرفته اند.
تراکنش پس از ساخته شدن در شبکه قرار می گیرد و نودهای شبکه پس از بررسی صحت امضا و مشخصه تراکنش های ورودی آنرا در شبکه منتشر می کنند. هر نود شبکه مستقلا اعتبار تراکنش را بررسی می کند و در صورت عدم اعتبار آنرا فیلتر می کند و عبور نمی دهد. همچنین اگر کاربر بخواهد از یک تراکنش در دو تراکنش جدید استفاده کند و یک تراکنش را دوبار خرج کند، شبکه با توجه به اطلاعات با آن مقابله می کند. در نهایت هنگامی تراکنش ها معتبر محسوب می شوند که در استخراج اصالت آنها تایید شود.
به صورت خلاصه، داستان یک انتقال پول در شبکه را توصیف می کنیم: فرض می کنیم که آلیس بخواهد 10 میلیبیتکوین به باب منتقل کند. ابتدا به کیف پول خود نگاه می کند و تراکنش هایی که به آدرس او فرستاده شده بررسی می کند. دو تراکنش 8 میلیبیتکوینی و 5 میلیبیتکوینی به حساب خود می یابد. هش و مبلغ آنها را در قسمت ورودی تراکنش می نویسد. در قسمت خروجی آدرس باب و 10 mBTC و آدرس خودش و 2.9 mBTC را می نویسد. (یک دهم میلیبیتکوین به عنوان کارمزد کنار می گذارد و بقیه را به حساب خود برمی گرداند) امضاهای لازم را انجام می دهد و در شبکه منتشر می کند. نودهای شبکه به محض دریافت اصالت امضاها را بررسی می کنند. پس از اطمینان از امضاها و اینکه تراکنش های ورودی را فرد معتبری خرج کرده است، اصالت تراکنش های ورودی را بررسی می کنند. پس از اطمینان، تراکنش را به نودهای دیگر هم منتشر می کنند و در استخر تراکنش قرار می دهند تا برای فرآیند استخراج آماده شوند.
انواع مختلفی از تراکنش وجود دارد از جمله تراکنش چندامضایی و توسعه دهندگان بیتکوین در این بخش سیستم را به خوبی توسعه داده اند. طول یک تراکنش بسته به تعداد ورودی و خروجی های آن متفاوت است. برای مثال در بلوک 277316 تراکنش پایه 110 بایت طول دارد و یک تراکنش با 5 ورودی و 2 خروجی طولی حدود 4 کیلوبایت دارد.
ادامه دارد…………..
[1] blockchain
[2] Open source
[3] Peer to Peer
[4] transaction
[5] Elliptic Curve Cryptography(ECC)
[6] Coinbase transaction or generation transaction