QTUM
تیم بحث آراد | 2019.12.29

Qtum چیست؟

Qtum در فضای رمزارز توجه های زیادی را به خود جلب کرده است. مؤسسه Qtum در سنگاپور واقع است و یک پروژه جهانی می باشد و اعضای تیم در آسیا، آمریکا، آفریقا و اروپا قرار دارند. دلیل محبوبیت مربوط به USP آنها می باشد (برای ماشین مجازی اتریوم مدل UTXO امن بیت کوین فرآهم می کند). مهم تر از آن اینکه آنها از الگوریتم POS 3.0 (Proof of Stake 3.0) استفاده می کنند. در این راهنما، نگاهی عمیق تر به Qtum خواهیم داشت و خواهیم دید چرا توسعه دهندگان باید تجربه کار در این پلتفرم را داشته باشند.

ترکیب بهترین ها از هر دو دنیا:

در حال حاضر، محبوب ترین بلاک چین ها در دنیا بیت کوین و اتریوم هستند. بیت کوین، اولین بلاک چین بود و همچنان به عنوان ایمن ترین بلاک چین محسوب می شود. مدل UTXO (Unspent Transaction Output) منجر به افزایش پیگیری معاملات می شود. به همین دلیل Qtum تصمیم گرفت بر روی بلاک چین بیت کوین بنا شود. در طرف دیگر، بلاک چین اتریوم وجود دارد. اتریوم در دوره قراردادهای هوشمند بوجود آمد. بلافاصله پس از آن یک بلاک چین از یک سیستم انتقال پول به سیستمی تبدیل شد که به توسعه دهندگان در سراسر دنیا اجازه می داد تا در بتوانند در چین اپلیکیشن های نامتمرکز (dApp ها) خود را بسازند. برای شامل شدن قراردادهای هوشمند، توسعه دهندگان Qtum یک لایه مجازی به نام AAL (Account Abstraction Layer) را ایجاد کرده اند تا به ماشین مجازی اتریوم (EVM) اجازه دهند تا بر روی بلاک چین Qtum’s UTXO باشد. با این نوآوری ساده، Qtum توانست برای کاربران یک مکانیزم ایمن برای قراردادهای هوشمند بسازد که در بیت کوین و اتریوم قابل اجرا بود. این موقعیت ویژه برای کاربران معمولی و توسعه دهندگان هیجان انگیز بود زیرا تکنیک های مقیاس پذیری در بلاک چین و اتریوم در Qtum نیز قابل اجرا بود البته تا جائیکه جامعه رضایت داشته باشد. در مورد interoperability دو جنبه بسیار هیجان انگیز وجود دارد که باید بخاطر داشت:

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

  • سازگاری با قراردادهای هوشمند اتریوم:

Qtum از EVM استفاده می کند تا تضمین کند قراردادهای هوشمند اتریوم در Qtum و برعکس اجرا می شوند. این کاربرد بسیار مهم است. اتریوم دارای جامعه توسعه دهندگان در جهان است. از طریق این کارکرد، Qtum می تواند توسعه دهندگان را به پلتفرم هایشان انتقال دهد. dAppها می توانند به سادگی به Qtum منتقل شوند. یعنی توسعه دهندگان می توانند از Solidity استفاده کنند، یک زبان برنامه نویسی، تا بتوانند در Qtum قرارداد هوشمند ایجاد کنند.

Qtum و UTXO:

برای فهم UTXO، باید با کارکرد معاملات در بیت کوین آشنا شوید. می توان آن را مشابه یک قرارداد پول نقد پایه ای دانست. فرض کنید دوستتان به شما 6 دلار بدهکار است. او از کیف پول خود یک اسکناس 5 و 1 دلاری خارج می کند و بدهی خود را به شما می پردازد.

حال، اگر شما به شخصی 8 دلار بدهکار باشید، یک 5 دلاری و 1 دلاری که دوستتان به شما داد و یک 2 دلاری که شخصی قبل از آن به شما داده بود می پردازید.

معاملات بیت کوین نیز اینگونه کار می کنند. خروجی معامله قبلی ورودی معاملات بعدی می شود. بنابراین، این موضوع را به خاطر داشته باشید و اجازه دهید نگاهی به معاملات بیت کوین بیاندازیم.

ورودی معاملات:

فرض کنید آلیس باید مقداری بیت کوین برای باب بفرستد. به منظور انجام این معامله، کیف پول آلیس خروجی معاملات قبلی را ورودی معامله جدید می کند.

بنابراین، فرض کنید آلیس می خواهد بیت کوین را از معاملات TX(0)، TX (1) و TX (2) بردارد. این سه معامله به یکدیگر اضافه می شوند و ورودی معامله شما در TX (Input) می شوند.

به صورت دیاگرامی شبیه زیر خواهد شد:

Qtum

اجازه دهید نگاهی به خروجی نیز بیاندازیم.

خروجی معاملات:

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

دیاگرام خروجی به صورت زیر خواهد بود:

Qtum

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

بنابراین، چرا Qtum مدل UTXO را به کار می برند؟ دو دلیل عمده وجود دارد:

  • در درجه اول، برای استفاده از یک مدل معاملاتی پایدار و ایمن که به صورت گسترده در بلاک چین بیت کوین قابل فهم باشد.
  • در درجه دوم، مدل UTXO در اجرای SPV (Simple Payment Verification) کمک می کند.

SPV به نود سبک اجازه می دهد تا با قراردادهای هوشمند در تعامل باشند و معاملات را تأیید کنند. نودهای سبک نودهایی هستند که تنها بخشی از بلاک چین را دانلود می کنند نه همه بلاک چین را.

Qtum و EVM:

همانطور که در بالا اشاره شد، اتریوم در دوره قراردادهای هوشمند ارائه شد. قراردادهای هوشمند توافق هایی هستند که به صورت اتوماتیک بین دو نفر یا بیشتر اجرا می شوند و به هیچ واسطه ای نیاز ندارند.

چه زمانی این قراردادها را اجرا می کنید؟ قراردادهای هوشمند می توانند در یکی از دو سیستم زیر اجرا شوند:

  • ماشین مجازی (اتریوم از این مورد استفاده می کند)
  • داکر (فبریک از آن استفاده می کند)

اجازه دهید این دو را مقایسه کنیم و تعیین کنیم کدام اکوسیستم بهتری ایجاد می کند. به منظور سادگی، در اینجا اتریوم (ماشین مجازی) را با فبریک (داکر) مقایسه می کنیم.

qutm

بنابراین، ماشین مجازی یک محیط قطعی، منطقی و ایزوله برای قراردادهای هوشمند ایجاد می کند. EVM کارکردی شبیه به مکانیزم بنزین دارد و از بروز لوپ بی نهایت و اسپم جلوگیری می کند.

اتصال UTXO و EVM:

از آنجائیکه UTXO ها و EVM دو مفموم متفاوت هستند، چطور QTUM آنها را به پلتفرم وصل می کند؟ از طریق AAL (Account Abstract Layer). AAL به عنوان یک لایه کاربری بین UTXO و EVM عمل می کند. زیبایی AAL این است که فقط محدود به EVM نیست. هر ماشین مجازی که با AAL سازگار است می تواند بر روی AAL اجرا شود.

بنابراین، قبل از بررسی بیشتر AAL، اجازه دهید با مفهوم abstraction آشنا شویم. Abstraction یعنی هر شخصی می تواند از هر سیستم و یا پروتکلی استفاده کند بدون اینکه از جزئیات آن چیزی بداند. برای مثال، وقتی از آیفون خود استفاده می کنید، نیازی ندارید که دانش یک برنامه نویس را داشته باشید و یا یک مهندس باشید. شما به راحتی با فشار یک دکمه اپ را فعال می کنید. نیازی ندارید بدانید که با فشار یک دکمه دقیقاً چه سازوکارهایی شکل می گیرد. Abstraction یک تکنولوژی پیچیده را با پوشش پیچیدگی های آن برای عموم افراد ساده می کند.

برای قراردادهای هوشمند و dAppها، Abstraction بسیار ضروری است. اگر پذیرش از طرف عموم افراد یک هدف باشد، dApp ها باید شبیه اپلیکیشن های نرمال اجرا شوند. به طور مشابه، Qtum باید با EVM و UTXO یکپارچه شود به طوری که استفاده از آن برای کاربران و توسعه دهندگان ساده باشد.

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

ستون اسکریپت دارای تعدادی کلمه کلیدی است که به آنها  opcodeگفته می شود. معاملات بیت کوین توسط ترکیبی از این opcode ها اسکریپت شده اند. AAL سه opcode دیگر به بیت کوین اضافه می کند تا از قراردادهای هوشمند پشتیبانی کند.

  • OP_CREATE: به منظور ایجاد قرارداد هوشمند جدید استفاده می شود.
  • OP_CALL: به منظور اجرای کد در قرارداد هوشمند موجود به کار می رود.
  • OP_SPEND: برای ارسال ارزش در قراردادهای هوشمند به کار می رود.

چگونه این opcode ها پرداش می کنند؟ اجازه دهید ببینیم.

  • نرم افزار تأییدکننده اسکریپت معاملات Qtum را تجزیه می کند.
  • پس از یافتن یکی از سه opcode، آنها آن را کنار می گذارند تا با EVMها پردازش شوند.
  • قرارداد معاملات EVM سپس در یک Expected Contract Transaction List خاص که توسط نود تأییدکننده اجرا می شود پردازش می شود.
  • این معاملات در EVM اجرا می شوند و خروجی به Qtum tx خرج شدنی تبدیل می شود.
  • اگر در طول اجرای یک قرارداد، قرارداد یک قرارداد دیگر را با یک ارزش فرا خواند، آن معامله همچنین تبدیل به یک explicit Qtum tx می شود و به بلاک حاضر وصل می شود.

اندازه یک Qtum UTXO را می توان به خوبی مدیریت کرد زیرا معاملات OP_CREATE، OP_CALL و OP_SPEND خرج کردنی هستند. وقتی یک قرارداد باز می شود، معامله OP_CREATE خرج می شود، که آن را از استخر UTXO خارج می کند.

اگر شما یک توسعه دهنده solidity هستید، بهتر است شروع به کدنویسی در Qtum کنید زیرا آن قبلاً به EVM مجهز شده است. اگرچه، همانطور که قبلاً اشاره شد، EVM تنها ماشین مجازی برای اجرای قرارداد هوشمند در Qtum نیست. تیم Qtum در حال توسعه قراردادهای هوشمند ماشین مجازی  X86  برای Qtum است. این ماشین مجازی X86 به توسعه دهندگان اجازه می دهد تا با استفاده از زبان برنامه نویسی محبوب خود کد قراردادهای هوشمند را بنویسند (مثل Rust).

Qtum و POS (Proof of Stake):

همانطور که چندین بار اعلام شد، Qtum از POS استفاده می کند. بسیاری از بلاک چین های مدرن POS را انتخاب می کنند زیرا مزیت هایی نسبت به مدل POW دارد. POW یا proof of work یک مدل اجماع نظر است که توسط بیت کوین معرفی شده است، در این مدل نودهای ویژه به نام ماینر مسائل پیچیده رمزنگاری را با استفاده از ASICها حل می کنند.

مشکلات استفاده از POW:

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

POS، از طرف دیگر، فرآیند استخراج را کاملاً مجازی می کند. اجازه دهید مختصری راجع به آن توضیح دهیم:

  • تأییدکننده/ماینر تعدادی سکه به عنوان وجه تضمین (stake) بلوکه می کند.
  • پس از آن، آنها شروع به تأیید بلاک ها می کنند. یعنی، پس از کشف بلاکی که فکر می کنند می تواند به چین اضافه شود، آنها آن را از طریق شرط بندی (staking) یک یا تعدادی UTXO برای 500 تأیید آن را تأیید می کنند.
  • اگر بلاک اضافه شود، تأیید کنندگان پاداش بلاک را دریافت می کنند، تکرر پاداش بلاک بستگی به میزان شرط تأیید کننده دارد.

پروژه های مختلف از الگوریتم های مختلف POS استفاده می کنند. اتریوم از پروتکل کسپر استفاده می کند، درحالیکه Algorand از POS استفاده می کند. پروژه هایی مثل EOS وجود دارد که از نمایندگان POS استفاده می کنند.

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

POSv1:

Coin age واژه ای است که برای توصیف طول مدت خرج نشدن یک UTXO در بلاک چین به کار می رود. POSv1 بشدت به coin age وابسته بود. هر قدر میزان coin age بالاتر بود، دشواری کاسته می شد. اگرچه، مشکل این رویکرد این بود که افراد استفاده از سکه ها را متوقف کردند. در واقع، افراد فقط کیف پول خود را وقتی باز می کردند که نیاز به شرط گذاشتن داشتند. اگر سکه به اندازه کافی قدیمی بود، بسرعت بلاک staking جدیدی را تولید می شد.

POSv2:

این نسخه توسعه یافته نسخه قبلی است. در این نسخه مفهوم coin age حذف شد. تغییر بزرگ دیگری که آنها ایجاد کردند استفاده از مکانیزم مادیفایر stake متفاوت است. این مادیفایر stake دارای زمان بلاک قبلی می باشد. به خاطر داشته باشید.

POSv3:

زمان بلاک POSv2 می تواند آن را مستعد حمله short-range کند که در آن این احتمال وجود دارد بوسیله تکرار زمان بلاک قبلی یک بلاک چین جایگزین را استخراج کرد. تغییراتی مثل این  POSv3 را نسخه بهتری نسبت به نسخه POSv2 می کند.

POSv2 همچنین از بلاک و زمان معاملات استفاده می کند تاage   UTXOرا تعیین کنند، که با coin age تفاوت دارد. POSv3 ، UTXO the age را بوسیله ارزشیابی عمق آن در بلاک چین تعیین می کند.

نگاه دقیق تر به POSv3 :

در یک سیستم POW، یک nonce تصادفی به هش هدر بلاک اضافه می شود و نتیجه دوباره هش می شود. این هش، در عوض، باید کمتر از سختی کلی شبکه باشد. تنها پس از آن، بلاک به بلاک چین اصلی اضافه می شود.

از طرف دیگر، POSv3 دارای هش kernel  است، که از چندین سری داده غیرقابل تغییر در بلاک کنونی تشکیل شده است. در زیر لیستی از فیچرهای بیشتر سیستم POS مربوط به Qtum را می بینیم:

  • معامله دوم در هر بلاک را یک coinstake transaction می گویند، درحالیکه معامله اول یک empty coinbase transaction است.
  • هر بلاک باید دارای حداقل یک معامله staking باشد.
  • برچسب زمانی بلاک باید دارای 4 بیت پائینی صفر باشد. بنابراین، زمان بلاک باید به صورت بازه های 16 ثانیه ای باشد.
  • فقط پس از هر 500 بلاک (حدود 18 ساعت) یک UTXO می تواند برای تولید یک معامله staking به کار رود.

حال اجازه دهید بدانیم یک هش POSv3’s Kernel از چه ساخته شده است:

  • مادیفایرstake بلاک پیشین، که یک هش از معامله prevout در بلاک POS است و مادیفایرstake بلاک پیشین می باشد.
  • برچسب زمانی از معامله prevout است.
  • هش معامله prevout است.
  • عدد خروجی prevout (این خروجی معامله ای است که توسط معامله staking خرج می شود.)
  • زمان بلاک کنونی جائیکه است که 4 بیت پائینی صفر هستند. این ویژگی خاص در طول فرآیند staking تغییر می کند.

نکته: یک معامله prevout یک UTXO است که برای ایجاد معامله staking به کار برده شده است. تنها راه تغییر هش kernel کنونی تغییر UTXO است که برای ایجاد بلاک یا تغییر زمان بلاک مورد استفاده قرار گرفته است، می باشد.

حال که با کارکرد Qtum’s POSv3 آشنا شدیم، اجازه دهید ببینیم چطور مشکل بزرگ POS را رفع می کند (مشکل nothing-at-stake).

مشکل nothing-at-stake چیست؟

وضعیت زیر را در نظر بگیرید:

Qtum

در دیاگرام بالا، چین اصلی به رنگ آبی، که تا بلاک #53 استخراج شده است. اگرچه، شاخه ای موازی ناشی از بلاک #50 (قرمز) وجود دارد. اگر تعدادی ماینر مخرب به یکدیگر بپیوندند و به استخراج در بلاک قرمز ادامه دهند تا بر چین آبی مسلط شود چه اتفاقی می افتد؟ همه معاملات که در بلاک آبی 51،52 و 53 اتفاق افتاده اند بی اثر و بی اعتبار خواهند شد.

بلاک چین POW نسبت به حمله 51 درصد آسیب پذیر است زیرا قدرت هش می تواند در کوتاه مدت بدست آید.

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

بدلیل دارا بودن قدرت هش اجاره شده، احتمال حمله 51 درصد در POW بالا است. بنابراین تقسیم چین مشکل ساز است امام بلاک چین های بزرگ POW در معرض این ریسک قرار ندارند (بیت کوین).

اگرچه، در سیستم POS مسئله متفاوت است. اگر شما یک تأییدکننده باشید، می توانید بسادگی پول خود را در چین قرمز و آبی بدون هیچ گونه ترسی قرار دهید. مهم نیست چه اتفاقی بیفتد، شما همواره برنده هستید و چیزی برای از دست دادن ندارید، علی رغم اینکه چقدر فعالیت شما خرابکارانه است. اگرچه، چین قرمز باید سکه های بیشتری را به عنوان stake قرار دهد (network weight) تا موفق شود و برخلاف POW که یک حمله کننده می تواند نرخ هش قرض بگیرد، POS نیاز به مالکیت سکه واقعی دارد. به این مشکل Nothing-at-Stake گفته می شود.

پروتکل کسپر اتریوم این مشکل را با استفاده از مکانیزم تنبیه حل کرده است. اساساً، تأییدکننده مخرب با از دست دادن مقدار stake تنبیه می شود. Qtum برنامه دارد که راهکار متفاوتی را برای مشکل nothing-at-stake فرآهم کند و فقط آنها را از شبکه بیرون می اندازد. آنها معتقد هستند که هیچ نرم افزاری عالی نیست و ریسک باگ وجود دارد و به استیکرها اجازه رفتار غیرقانونی را می دهد که منجر به از دست دادن میلیونها دلار خواهد شد. نکات زیر باید بخاطر سپرده شود تا بتوان راهکار Qtum برای حل مشکل nothing-at-stake را درک کرد:

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

همچنین، باید توجه داشت که Qtum نسبت به مشکل nothing-at-stake دیدگاهی افراطی دارد، بویژه به دلیل سیستم آنها زیرا:

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

پروتکل کنترلی نامتمرکز:

یکی دیگر از ویژگی های Qtum، DGP (Decentralized Governance Protocol) است که برای اصلاح سریع و بدون توقف پارامترهای بلاک چین بدون نیاز به فورک سخت معرفی شده است. DGP با استفاده از تکنولوژی قرارداد هوشمند ساخته شده است و قادر است تا سایز بلاک را تا 32 مگابایت تنظیم کند و مقدار بنزین را برای کارکردهای قرارداد هوشمند مختلف تغییر می دهد.

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

نتیجه گیری:

Qtum یکی از پروژه های هیجان انگیز در این فضا می باشد. بوسیله ترکیب UTXO، EVM و POS، Qtum توانسته است پلتفرمی فرآهم کند که بی نظیر، ایمن و ذاتاً مقیاس پذیر است. بدلیل ارتباط با EVM، Qtum می تواند بسادگی جامعه ای پویا از توسعه دهنده های solidity را جذب کرده و به آنها اجازه داده است که dAppها را وارد پلتفرم کنند. پیش بینی می شود این پروژه در آینده نزدیک به سرعت پیشرفت کند.