علیرضا کهن
علیرضا کهن
خواندن ۶ دقیقه·۴ سال پیش

بیت کوین و قورت بده!

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

  • هش (Hash)
  • امضای دیجیتال (Digital signatures)

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

این شبکه تا زمانیکه نودهای درستکار قدرت پردازش بیشتری از شبکه، نسبت به هر گروه مهاجمی، را در اختیار داشته باشد قابل اعتماد است. ارزهای رمزنگاری شده در یک شبکه باز مالی فعالیت میکنند، که مفهوم جدیدی از اعتماد را ایجاد کرده اند و با الگوریتم های اجماع کار می کنند و مرز های جغرافیایی را نمی شناسند. همچنین تاریخچه تراکنش های انجام شده قابل تغییر نیست. به این ارزها پول قابل برنامه ریزی (Programmable Money) نیز گفته می شود. این ارزها قابل جعل شدن نیستند و به منظور حفظ ارزش خود در طولانی مدت، مقدار محدود و مشخصی دارند. این ارزها در بستر بلاکچین فعالیت میکنند و متعلق به هیچ کشور یا دولت خاصی نیستند.

ساتوشی ناکاماتو در مقاله منتشر شده خود در سال 2008 اظهار داشت تکنولوژی بلاکچین یک جایگزین مناسب برای از بین بردن واسطه ها است. بلاکچین در واقع یک دفتر کل توزیع شده(Distributed Ledger) است که با ذخیره سازی تاریخچه تراکنش های انجام شده، امکان تکذیب هر عملیات انجام شده ای را از بین می برد. اولین بلاک ارسالی در شبکه، بلوک پیدایش(Genesis block) نام دارد. دیگر بلوکهای ارسالی در شبکه به ترتیب به یکدیگر متصل شده و تشکیل یک زنجیره میدهند.

هر بلوک ارسالی دارای یک سرتیتر(Header) می باشد که در آن هش نوشته میشود. تمام داده های ارسالی در شبکه رمزنگاری میشود. در هر زنجیره اطلاعات نوشته شده در بلوکها و سرتیتر آنها با توجه به هدف ایجاد آن بلاکچین متغیر است. هنگامی که یک بلوک توسط اکثریت شبکه پذیرفته میشود، مهر زمان(Timestamp) آن لحظه بر روی بلوک ثبت میشود. برای حفظ ترتیب بلوکها در زنجیره، و تثبیت وجود اطلاعات هر بلوک در زمانی خاص، در هش هر بلوک برچسب زمان بلوک قبلی نیز نوشته میشود. با انجام این کار نودها یک مقدار پول را نمیتوانند دو بار خرج (Double Spending)کنند.

دیگر اعضای مهم هر بلاکچین ماینر(Miner) یا استخراج کنندگان هستند که وظیفه تایید تراکنشهای ارسال شده در زنجیره را بر عهده داشته و در ازای هر تایید از طرف شبکه پاداش دریافت میکنند. هر تراکنش ارسال شده در شبکه علاوه بر هش خود بلاک، هش بلاک قبلی و یک نانس که توسط استخراج کننده محاسبه میشود را در بر دارد. در واقع وظیفه ماینرها پیدا کردن عدد برای نانس(Nonce) است که با آن تعداد معینی بیت صفر در سمت چپ مقدار هش شده بلوک به وجود بیاید. تعداد بیتهای صفر لازم، سختی شبکه(Difficulty) نامیده شده. ماینرها باید به روش brute force به این مقدار دست یابند که کاری بسیار زمانبر و هزینه بر است.

با افزایش ماینرهای شبکه، افرادی به استخراج گروهی پرداخته و استخر استخراج(Mining Pool) تشکیل داده­اند. اولین نودی که بتواند به هش درست دست یابد آن را به همه دیگر نودها پخش کرده و دیگران آن را بررسی و در صورت صحیح بودن به زنجیره خود اضافه میکنند. این کار اجماع نامیده میشود. استخراج کننده هر بلوک از خود شبکه بیتکوین پاداشی دریافت میکند. یعنی به ازای هر استخراج انجام شده در شبکه تعداد معینی سکه(Coin) به شبکه اضافه میشود. به این ترتیب انگیزه لازم برای افراد جهت مشارکت در شبکه و تایید تراکنشهای دیگران به وجود می آید. تعداد سکه های پاداش به منظور تثبیت تعداد سکه ها و حفظ ارزش هر سکه، به مرور زمان کاهش می یابد.

به طور خلاصه شبکه بیتکوین به صورت زیر فعالیت میکند:

  1. تراکنش جدید به تمام نودها پخش میشود.
  2. هر نود تعدادی تراکنش را در حافظه mempool خود جمع آوری کرده و تشکیل یک بلوک میدهد.
  3. هر نود برای پیدا کردن نانس و حل سختی شبکه تلاش میکند.
  4. زمانیکه نودی به هش درست رسید آن را در شبکه همه پخشی میکند.
  5. نودها در صورتیکه تراکنشهای آن پیشتر تایید نشده باشد، آن بلوک را میپذیرند.
  6. نودها بلوک تایید شده را به زنجیره موجود اضافه می کنند و در سیستم خود نشان میدهند.

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

درخت مرکل یک روش نگهداری خلاصه اطلاعات خیلی بزرگ در مقیاس کوچک است. در این ساختار نگهداری داده، اطلاعات هر برگ، پس از هش شدن با برگ کناری تلفیق شده و به سطح بالاتر ارسال می شوند تا به ریشه درخت مرکل(Merkle Root) برسیم. از این روش برای اطلاع از تغییرات در معاملات سیستم های ذخیره سازی بزرگ میتوان استفاده کرد. هر تغییر هرچند کوچک در یک برگ در ریشه درخت نمود پیدا میکند. و به این ترتیب با پیمودن برگ تا ریشه میتوان داده دستکاری شده را یافت.

نگهداری خلاصه ای از حجم زیادی از اطلاعات توسط درخت مرکل
نگهداری خلاصه ای از حجم زیادی از اطلاعات توسط درخت مرکل


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

برای استخراج بلوکها در بلاکچینهای مختلف از الگوریتم های متفاوتی استفاده می شود. در بلاکچین بیتکوین الگوریتم اثبات کار(PoW) استفاده می شود، در این روش تمامی نودها باید به محاسبه هش بپردازند، که از لحاظ زمانی و انرژی بسیار هزینه بر است. به منظور ذخیره انرژی در مدل فوق، الگوریتم اثبات سهام(PoS) پیشنهاد شد که در این مدل افرادی با دارایی های بیشتر به تصدیق تراکنش ها بپردازند. زیرا افراد با دارایی های بیشتر، تمایل کمتری برای حمله به شبکه را دارند.

بیت‌کوینبیت کوینرمز ارزbitcoin
back-end engineer
شاید از این پست‌ها خوشتان بیاید