مشتقات Blockchain: حل المشكلة مقابل 500 تريليون دولار والفوز في هاكاثون توافق الآراء 2018

في 11 و 12 مايو 2018 ، قررنا فريق 8base في شخص Evgeny Semushin و Gabe Kelly اختبار قوتي والتنافس على جائزة AlphaPoint في هاكاثون Consensus 2018 ، التي عقدت في نيويورك. في المجموع ، شارك 33 فريقًا في hackathon ، وكان من بين رعاته عمالقة مثل CoinDesk و Microsoft و IBM و Hyperledger و Quorum.



في مسابقة AlphaPoint ، كان من الضروري كتابة تطبيق مرتبط بتبادل العملات المشفرة ، لذلك كنا نأمل أن تكون تجربتي في صندوق التحوط مفيدة للغاية. أردنا إنشاء شيء أكثر من الواجهة الأمامية لحل blockchain الحالي. كان هدفنا هو حل المشكلة الحقيقية من خلال تطبيق القدرات الفريدة لهندسة blockchain وتجربتنا الخاصة في تطوير العقود الذكية ومعرفة الآليات الداخلية للتمويل.

لقد أنشأنا مجموعة من العقود الذكية في شبكة Ethereum ، والتي تسمح لك بإنشاء مشتقات لامركزية وإدارة توفيرها على أساس blockchain. من خلال حلنا ، يمكن لأي مستخدم أن يصبح ضامنًا بموجب عقد لبيع أو شراء أي من أصول ERC20 دون أي إدارة خارجية للمتطلبات واستيفائها. ونتيجة لذلك ، فزنا بالجائزة الرئيسية.

تحت قطع الفروق الدقيقة في تنفيذ هذا المشروع.

المشكلة


المشتقات شيء خطير. تقدر رسملة سوق المشتقات العالمية بنحو 500 تريليون دولار. إذا قارنت ذلك بسوق العملات المشفرة (حوالي 0.4 تريليون دولار) ، والنقد (حوالي 40 تريليون دولار) وسوق الأوراق المالية العالمية (حوالي 70 تريليون دولار) ، يصبح من الواضح مدى أهمية دور المشتقات في الاقتصاد العالمي. مجرد إلقاء نظرة على هذا الرسم البياني . تستخدم البنوك والصناديق والشركات بنشاط الخيارات والعقود الآجلة والمقايضات والمشتقات الأخرى لإدارة المخاطر.



القيمة السوقية للأصول المختلفة:

  • التشفير - العملات المشفرة
  • أموال سائلة - نقدية
  • أسواق الأسهم العامة العالمية - سوق الأسهم العالمية
  • المشتقات - المشتقات

الصعوبة الرئيسية في عقود المشتقات هي أنها عادة ما تستخدم الرافعة المالية ، حيث أن المخاطر المحتملة أعلى من المبالغ التي تمتلكها الأطراف بالفعل. لهذا السبب ، ينشأ نظام معقد للتسويات المتبادلة ، بالإضافة إلى متطلبات الحد الأدنى للهامش وطلبات زيادة الهامش: يجب أن يظل مستوى الضمان بحيث يكون الخروج من المعاملة أكثر تكلفة دائمًا من تنفيذه.

كل هذا انهار في عام 2008. متشابكا في تعقيدات عقود المشتقات ، فقد لاعبو وول ستريت السيطرة على الوضع. ونتيجة لذلك ، نجح "تأثير الدومينو": أدت سلسلة من الطلبات لزيادة الهوامش وعدم القدرة على الوفاء بها إلى انهيار Lehman Brothers واللاعبين الآخرين. كان على حكومة الولايات المتحدة التدخل والعمل كضامن لوول ستريت على المبالغ الضخمة من العقود المعلقة للمشتقات. نعلم جميعًا ما أدى هذا إلى ...

الحل




BlockSigma هي مجموعة من العقود الذكية لتنظيم المعاملات على مشتقات العملات المشفرة وإدارة مثل هذه المعاملات. تعتمد إدارة الضمانات على سلسلة الكتل ، وبالتالي ، لضمان الامتثال لمتطلبات الهامش الدنيا للأموال المسجلة في العقد الذكي ، لا يلزم وسيط.

الابتكار الرئيسي هو إدارة الهامش القائمة بالكامل على blockchain ، دون تحكم مركزي والتدفق المتوقع للعروض. للقيام بذلك ، قمنا بدمج بروتوكول Bancor . يجري تنفيذ بروتوكول Bancor بالفعل بنشاط في عمليات التبادل وعمليات الخدمات اليومية لملايين الدولارات. يستخدم Bancor دالة سعر حتمية تستند إلى نسبة العرض والطلب لأصل معين. وفقًا لذلك ، يمكن تحديد سعر الرمز الأساسي مباشرة على blockchain ، مما يسمح لك بصياغة متطلبات الحد الأدنى للهامش بدقة وفي الوقت المناسب لإنشاء طلبات لزيادة الهوامش.

تم تصميم منطق العقود الذكية بحيث يقوم مشتري الخيار بإغلاق المركز بالقوة بمجرد انخفاض الضمانات في العقد الذكي إلى أقل من الحد الأدنى الإلزامي لمتطلبات الهامش. تأخذ وظيفة تحديد الحد الأدنى للهامش في الاعتبار الاحتياطي الزائد ، مما يخلق حوافز اقتصادية لمشتري الخيار لمراقبة الموقف عن كثب والحصول على هذا الاحتياطي (بالإضافة إلى الفائض) عندما يضطر إلى الإغلاق في حالة انتهاك الحد الأدنى للهامش. في المقابل ، لدى البائع (الضامن) للخيار أيضًا حوافز اقتصادية لتجديد الضمان في الوقت المحدد إذا كانت المعاملة غير ناجحة حتى لا تفقد الاحتياطي الزائد.

التنفيذ




يتم نشر كود مصدر الحل الكامل في مستودع GitHub .

يتكون الحل من ثلاثة ملفات Solidity رئيسية: BlockSigmaBase.sol و BlockSigmaCall.sol و BlockSigmaPut.sol. يقوم BlockSigmaBase بتطبيق المنطق المشترك ، بينما يرثه BlockSigmaCall و BlockSigmaPut وينفذ منطق عقود الشراء والبيع على التوالي.

إليك ما تبدو عليه واجهة العقد:

contract BlockSigmaBase is StandardToken { /** * @dev Constructor * @param _underlyingTokenAddress address of the underlying ERC20 token. * @param _currencyTokenAddress address of the currency ERC20 token. * @param _strike option strike denominated in the currency token. * @param _exp expiration timestamp. * @param _minReserve minimum (excess) reserve * @param _underlyingBancorConverter address of the Bancor converter contract that converts underlying token into BNT. * @param _currencyBancorConverter address of the Bancor converter contract that converts currency token into BNT. * @param _issuer address that is allowed to issue(underwrite) new contracts. */ function BlockSigmaBase(address _underlyingTokenAddress, address _currencyTokenAddress, uint256 _strike, uint256 _exp, uint256 _minReserve, address _underlyingBancorConverter, address _currencyBancorConverter, address _issuer) public; /** * @dev get the required maintenance margin level in currency token. */ function getRequiredReserve() public view returns (uint256); /** * @dev Get price of the underlying token expressed in currency token from Bancor */ function getUnderlyingPrice() public view returns (uint256); /** * @dev Ability for writer to issue(underwrite) new contracts * @param amount how many contracts to issue (in wei). */ function issue(uint256 amount) public onlyIssuer returns (bool); /** * @dev Buyer can exercise the option anytime before the maturity. Buyer deposits currency(call) or underlying tokens(put). */ function exercise() public returns (bool); /** * @dev Writer delivers the underlying tokens(call) or currency(put). * @param to which buyer to deliver to. */ function deliver(address to) public onlyIssuer returns (bool); /** * @dev Buyer can force liquidation if exercise is past due or reserve is below requirement */ function forceLiquidate() public returns (bool); /** * @dev Writer can deposit additional reserve * @param amount how much currency token to deposit. */ function depositReserve(uint256 amount) public returns (bool); /** * @dev Writer can withdraw reserve * @param amount how much currency token to withdraw. */ function withdrawReserve(uint256 amount) public onlyIssuer returns (bool); /** * @dev Is reserve below the requirement? */ function isReserveLow() public view returns (bool); /** * @dev Is option series expired? */ function isExpired() public view returns (bool); /** * @dev Can option be liquidated? */ function canLiquidate() public view returns (bool); } 

الآن فكر في سير العمل الأساسي لعقد البيع. خذ ، على سبيل المثال ، عقدًا لبيع رموز EOS المميزة بالـ DAI ، والذي يسمح لك بالتحوط الفعال للأصول في EOS مقابل الدولار الأمريكي. ستكون دورة حياة هذا العقد على النحو التالي:

  1. يمكن لأي مستخدم نشر عقد BlockSigmaPut لإصدار محدد من الخيارات . عند النشر ، يجب عليك تحديد: (1) رمز الأساس ، (2) رمز العملة ، (3) تاريخ انتهاء الصلاحية ، (4) الإضراب ، (5) عنوان المصدر المفوض للعمل كضامن للعقود في هذا الإصدار و (6) الحد الأدنى لمتطلبات الاحتياطي بموجب العقد. مثال: بيع EOS قبل 1 يوليو 2018 بإضراب 10 DAI واحتياطي لا يقل عن 2 DAI. يمنح هذا العقد المشتري الحق في بيع EOS إلى الضامن مقابل 10 DAI في أي وقت حتى 1 يوليو 2018. الحد الأدنى لمتطلبات الهامش لكل عقد في هذه الحالة سيكون 2 + بحد أقصى (0 ، 10 - سعر EOS الحالي).
  2. يعمل المصدر المحدد كضامن لعدد معين من العقود ، ويضع الاحتياطي اللازم في رمز العملة. للمثال أعلاه ، بسعر السوق EOS الحالي البالغ 12 دولارًا ، يجب على المصدر وضع 2 + كحد أقصى (0 ، 10-12) = 2 DAI من أجل إصدار عقد خيار واحد. سيتم اعتبار العقود الصادرة رموز ERC20 العادية ، والتي ستسمح بإدراجها في البورصة للبيع.
  3. يجب على المشتري الذي يرغب في تنفيذ العقد الإذن بنقل EOS إلى عقد الخيار الذكي ثم استدعاء طريقة التمرين. بعد بدء تنفيذ العقد ، سيكون أمام البائع 24 ساعة لتحويل الدفع برمز العملة. في مثالنا ، يجب على البائع تقديم 10 DAI لكل رمز EOS المميز.
  4. يمنح المصدر إذنًا لتحويل رموز DAI من حسابه إلى عقد الخيار الذكي ويستدعي طريقة التسليم. يقوم العقد الذكي الذي تم تنفيذه بتسوية المعاملة تلقائيًا: ينقل DAI و EOS إلى المشتري والبائع (المصدر) ، على التوالي ، ويتم إرجاع الاحتياطي إلى البائع.
  5. (اختياري) إذا لم يقم البائع بالدفع خلال 24 ساعة ، يمكن للمشتري الاتصال بطريقة forceLiquate لإرجاع EOS الموضوعة مع الاحتياطي لتغطية الإجراءات غير الصحيحة للبائع.

الآن فكر في كيفية تنفيذ إدارة الضمانات. في مثالنا ، كان سعر EOS في وقت إصدار عقد الخيار هو 12 دولارًا. لنفترض أنها انخفضت إلى 9 دولارات. ثم سيكون الاحتياطي اللازم 2 + كحد أقصى (0 ، 10 - 9) = 3. وهذا يعني أنه يجب على البائع بالإضافة إلى ذلك إيداع وديعة واحدة لكل عقد يعمل بموجبه كضامن. إذا لم يتمكن البائع من القيام بذلك ، فسيكون لدى المشتري حافز اقتصادي لإغلاق المركز بقوة:

  • إذا مارس المشتري الخيار ، فسوف يتلقى دفعة بقيمة 10 - 9 = 1 DAI لكل عقد (أي أنه سيشتري EOS في السوق مقابل 9 دولارات ويبيعه إلى المصدر مقابل 10 دولارات).
  • من ناحية أخرى ، إذا قام المشتري بإغلاق المركز بالقوة ، فسيحصل على الاحتياطي بالكامل ، وهو على سبيل المثال 2 DAI لكل عقد.

هذا يحفز المشتري على إغلاق المراكز بقوة في أقرب وقت ممكن من أجل تحقيق الربح بسرعة.

الصعوبات


هذا ليس بأي حال من الأحوال حلًا جاهزًا. هدفها الرئيسي هو إظهار القدرات الخارقة لعقود blockchain والعقود الذكية لأتمتة التسويات المتبادلة وإدارة توفير عقود الخيارات. تقليديا ، يتم توفير هذه الخدمات من قبل وسطاء ، وتتطلب أيضا العمل اليدوي ودفع العمولات.

على الرغم من أن حلنا واعد للغاية في هذا الصدد ، إلا أننا نرى عددًا من الصعوبات الخطيرة:

  • لم يتم اختبار بروتوكول Bancor في ظل ظروف صارمة. يستخدم دالة السعر الحتمية التي تتلاقى لتبادل الأسعار من خلال التحكيم. ليس من الواضح بعد كيف ستعمل هذه الآلية مع تقلبات أكبر و / أو مع فجوات سعرية خطيرة.
  • إن آلية إدارة الضمانات غير مستقرة بسبب الفجوات الحادة في الأسعار. من الناحية النظرية ، يمكن أن تكون الحالة التي تتجاوز فيها مسؤولية الضامن الاحتياطي ، والتي يريد الكفيل قطع الصفقة ، ولا يحصل المشتري على تعويض كامل. لتجنب ذلك ، يمكنك زيادة الحد الأدنى للاحتياطي. بالإضافة إلى ذلك ، يمكنك القيام بذلك بالطريقة التقليدية: يقوم مستخدمو النظام بإيداع الأموال في "مجموعة تأمين" موزعة ، والتي تغطي تلقائيًا النقص في الحالات الاستثنائية.
  • نظرًا لأن Bancor يستخدم دالة سعر حتمية ، فمن الممكن إجراء العديد من التلاعبات لزيادة المدفوعات إلى جانب واحد من عقد الخيار على حساب الطرف الآخر. يمكن أن يحدث هذا فقط مع احتياطي صغير من محول Bancor (أي مع حساسية عالية للسعر) نسبة إلى حجم مركز الخيارات. في هذه الحالة ، قد يتبين أن التلاعب بالأسعار في Bancor أكثر ربحية من مدفوعات الخيار الناتجة عن مثل هذا التلاعب. ومع ذلك ، تعد هذه المشكلة نموذجية ليس فقط للعملات المشفرة ، ولكن أيضًا للأسواق التقليدية (على سبيل المثال ، إشعال النار في منزل للتأمين).
  • عدم اليقين في التنظيم. لم ندرس الجوانب التنظيمية ، لأن مشروعنا له حتى الآن أهداف بحثية بحتة.

إذا لاحظت أي مشاكل غير مدرجة ، فاكتب عنها في التعليقات.

الاستنتاجات


يعكس الحل الموصوف بعبارات عامة التغييرات الأساسية التي ستجلبها blockchain للصناعة المالية خلال السنوات القادمة. بالإضافة إلى التسويات الأكثر فاعلية وإدارة الضمانات ، ستقدم هذه التكنولوجيا قواعد شفافة ومكتفية ذاتياً لجميع المشاركين في السوق.

لا يتخصص فريق 8base في الحلول والبروتوكولات المتخصصة الموضحة في هذه المقالة. نتوقع نموًا هائلاً لتقنيات ثورية مماثلة في السنوات القادمة على موجة التحول الرقمي. وبناءً على ذلك ، فإننا نركز على بناء المستوى التالي من البنية التحتية من أجل منح مستخدمي الأعمال سهولة الوصول إلى هذه التقنيات والقدرة على دمجها في برامج المؤسسة لتحقيق أهداف الأعمال.
مصادر جيثب

Source: https://habr.com/ru/post/ar415755/


All Articles