واجهات برمجة التطبيقات المفتوحة لصانع السوق
المواصفات
البادئة
- لضمان أمان المعاملات، استخدم HTTPS للإرسال.
- JSON هو تنسيق تبادل البيانات.
- يتم تطبيق ترميز الأحرف UTF-8 بشكل عالمي.
- تستخدم خوارزمية توقيع الواجهة HMAC-SHA256.
- يتم استخدام طابع زمني بالميلي ثانية من UNIX، يمثل عدد الميلي ثانية منذ 1 يناير 1970، 0:00:00.
المعلمات
الطلب
| الاسم | النوع | الملاحظات |
|---|---|---|
| H-Request-Id | سلسلة | [رأس] معرف الطلب، فريد |
| H-Api-Key | سلسلة | [رأس] مفتاح API |
| H-Timestamp | طويل | [رأس] طابع زمني صالح، على سبيل المثال، 1672387200000 |
| H-Nonce | سلسلة | [رأس] سلسلة عشوائية |
| Authorization | سلسلة | [رأس] التوقيع، على سبيل المثال: [mm_id]-hmac-sha256 التوقيع |
الاستجابة
| الاسم | النوع | الملاحظات |
|---|---|---|
| code | عدد صحيح | [الجسم] رمز الخطأ |
| message | سلسلة | [الجسم] سبب الخطأ |
| value | T | [الجسم] النتيجة |
توليد التوقيع
تتطلب منصتنا RFQ توقيعات الشركاء للموافقة على الطلبات، تليها إجراء تحقق. ستؤدي فشل التحقق إلى رفض المنصة مع استجابة 401 غير مصرح بها.
بناء سلسلة التوقيع:
تتكون سلسلة التوقيع من خمسة أسطر، يمثل كل سطر معلمة. ينتهي كل سطر بفاصلة منقوطة، بما في ذلك السطر الأخير. يتم أخذ الطابع الزمني الصالح وnonce الطلب من معلمات H-Timestamp و H-Nonce في الرأس، على التوالي.
Timestamp;NonceStr;HTTP_METHOD();URI();RequestBody;
ملء التوقيع
استخدم SecretKey لتشفير StringToSign باستخدام HMAC-SHA256.
StringToSign = Timestamp + ";" + NonceStr + ";" + UPPERCASE(HTTP_METHOD()) + ";" + URI() + ";" + RequestBody + ";";
Signature = BASE64_STRING( HMAC-SHA256( BASE64_DECODE(SecretKey), StringToSign ) );
إعداد رؤوس HTTP
ترسل الطلب التوقيع من خلال رأس HTTP Authorization. يتكون Authorization header من جزئين: نوع المصادقة و معلومات التوقيع.
Authorization: AuthenticationType SignatureInformation
- نوع المصادقة:
[mm_id]-hmac-sha256 - معلومات التوقيع:
Signature
Authorization: [mm_id]-hmac-sha256 Signature
ملاحظة:
- يجب أن تكون طريقة الطلب بأحرف كبيرة.
- يجب أن يتطابق
RequestBodyالمستخدم للتوقيع مع محتوى جسم الطلب. - بالنسبة لطلبات GET و DELETE، يجب أن يتضمن
URIمعلمات الطلب (على سبيل المثال، /api/v1/result?orderId=123).- إذا لم يكن هناك جسم طلب (شائع لطلبات GET)، يجب أن يكون جسم الطلب سلسلة فارغة ("").
- يتم تحديد الطابع الزمني الصالح (H-Timestamp) من قبل الطالب؛ الطلبات التي تتجاوز الطابع الزمني الصالح سيتم رفضها من قبل خادم RFQ.
RFQ
تقديم عرض RFQ DNT
GET rfq/dnt/quote
المعلمات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
| vault | true | string | عنوان الخزنة |
| chainId | true | int | معرف السلسلة |
| expiry | true | long | وقت انتهاء الصلاحية بالثواني، على سبيل المثال، 1672387200 |
| lowerBarrier | true | number | الحاجز السفلي |
| upperBarrier | true | number | الحاجز العلوي |
| depositAmount | true | number | الإيداع |
| premiumAmount | true | number | القسط |
| protectedFundingAmount | false | number | الفائدة المحمية (null عند كونها عالية المخاطر) |
| deadline | true | long | موعد انتهاء الاقتباس، على سبيل المثال، 1672387200 |
| takerWallet | false | string | عنوان محفظة المشتري |
| anchorPricesDecimal | true | long | |
| makerCollateralDecimal | true | long | |
| collateralAtRiskDecimal | true | long | |
| totalCollateralDecimal | true | long | |
| underlyingPair | true | string | الزوج الأساسي، على سبيل المثال. BTC-USDT |
| trackingSource | true | string | مصادر البيانات المستخدمة لتتبع القيمة الأساسية، على سبيل المثال. DERIBIT |
| depositCoin | true | string | العملة / العملة المدفوعة كقسط للاشتراك في DNT |
| tradingFeeRate | true | number | |
| settlementFeeRate | true | number | |
| riskType | true | string | النوع: محمي، عالي المخاطر |
الاستجابة
| الاسم | النوع | الوصف |
|---|---|---|
| timestamp | long | طابع زمني للاقتباس |
| vault | string | |
| chainId | int | |
| expiry | long | طابع زمني لانتهاء الصلاحية، على سبيل المثال، 1672387200 |
| anchorPrices | list[string] | 20000000000,30000000000 |
| makerCollateral | string | |
| totalCollateral | string | |
| collateralAtRisk | string | E18 |
| makerBalanceThreshold | string | |
| deadline | long | الطابع الزمني لموعد الاقتباس |
| makerWallet | string | |
| signature | string | . |
Note:
أمثلة
طلب URL
rfq/dnt/quote
المعلمات
{
"rfqId":1233992,
"apy":0.25,
"tenor":7.9,
"fundingAmount":0.01,
"depositAmount":1,
"premiumCoin":"BTC",
"premiumAmount":0.05,
"bookingQuantity":1,
"totalAmount":0.05,
"payoff":1,
"deadline":1672279892000,
"signature":"dsdkksdsksdk"
}
تقديم اقتباس RFQ لاتجاه الثور/الدب
GET rfq/smart-trend/quote
المعلمات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
| vault | صحيح | سلسلة | عنوان الخزنة |
| chainId | صحيح | عدد صحيح | معرف السلسلة |
| expiry | صحيح | طويل | وقت انتهاء الصلاحية في ثوانٍ، على سبيل المثال، 1672387200 |
| direction | صحيح | سلسلة | صعودي / هبوطي |
| lowerStrike | صحيح | عدد | الحاجز السفلي |
| upperStrike | صحيح | عدد | الحاجز العلوي |
| depositAmount | صحيح | عدد | الإيداع |
| premiumAmount | صحيح | عدد | القسط |
| protectedFundingAmount | خاطئ | عدد | الفائدة المحمية (null عند المخاطرة) |
| deadline | صحيح | طويل | موعد انتهاء الاقتباس، على سبيل المثال، 1672387200 |
| takerWallet | خاطئ | سلسلة | عنوان محفظة المشتري |
| anchorPricesDecimal | صحيح | طويل | |
| makerCollateralDecimal | صحيح | طويل | |
| collateralAtRiskDecimal | صحيح | طويل | |
| totalCollateralDecimal | صحيح | طويل | |
| underlyingPair | صحيح | سلسلة | الزوج الأساسي، على سبيل المثال BTC-USDT |
| trackingSource | صحيح | سلسلة | مصادر البيانات المستخدمة لتتبع القيمة الأساسية، على سبيل المثال DERIBIT |
| tradingFeeRate | صحيح | عدد | |
| settlementFeeRate | صحيح | عدد | |
| depositCoin | صحيح | سلسلة | العملة / العملة للقسط المدفوع للاشتراك في Smart Trend |
| riskType | صحيح | سلسلة | النوع: محمي، مخاطرة |
الاستجابة
| الاسم | النوع | الوصف |
|---|---|---|
| timestamp | طويل | طابع الاقتباس |
| vault | سلسلة | |
| chainId | عدد صحيح | |
| expiry | طويل | طابع انتهاء الصلاحية، على سبيل المثال، 1672387200 |
| anchorPrices | قائمة[سلسلة] | 20000000000,30000000000 |
| makerCollateral | سلسلة | |
| totalCollateral | سلسلة | |
| collateralAtRisk | string | E18 |
| deadline | long | طابع زمني لموعد الاقتباس |
| makerWallet | string | |
| signature | string | . |
ملاحظة:
تقديم اقتباس RFQ مزدوج
GET rfq/dual/quote
المعلمات
| الاسم | مطلوب | النوع | الوصف |
|---|---|---|---|
| vault | true | string | عنوان الخزنة |
| chainId | true | int | معرف السلسلة |
| expiry | true | long | وقت انتهاء الصلاحية بالثواني، على سبيل المثال، 1672387200 |
| strike | true | number | سعر التنفيذ |
| type | true | string | CALL أو PUT |
| depositAmount | true | number | الإيداع |
| deadline | true | long | موعد الاقتباس، على سبيل المثال، 1672387200 |
| refDateTime | true | long | وقت الطلب الحالي |
| takerWallet | false | string | عنوان محفظة المشتري |
| anchorPriceDecimal | true | long | |
| makerCollateralDecimal | true | long | |
| totalCollateralDecimal | true | long | |
| underlyingPair | true | string | الزوج الأساسي، على سبيل المثال BTC-USDT |
| trackingSource | true | string | مصادر البيانات المستخدمة لتتبع القيمة الأساسية، على سبيل المثال DERIBIT |
| depositCoin | true | string | العملة / العملة المدفوعة كقسط للاشتراك في دوال |
| depositCoinTokenAddress | true | string | |
| depositCoinTokenDecimal | true | long | |
| tradingFeeRate | true | number | . |
Response
| name | type | description |
|---|---|---|
| timestamp | long | توقيت الاقتباس |
| vault | string | |
| chainId | int | |
| expiry | long | توقيت انتهاء الصلاحية، على سبيل المثال، 1672387200 |
| anchorPrice | string | 20000000000 |
| makerCollateral | string | |
| totalCollateral | string | |
| deadline | long | توقيت انتهاء الاقتباس |
| makerWallet | string | |
| signature | string | . |
Appendix
| Code | Message |
|---|---|
| 1000 | خطأ في النظام. |
| 2001 | خطأ في التوقيع. |
| 2002 | خطأ في المعاملات. |
| 3001 | المعلومات المطلوبة غير موجودة. |
| 3002 | مبلغ الإيداع خارج نطاق الإيداع. |
| 3003 | تم الوصول إلى الحد الأقصى للاشتراكات. |
| 3004 | فشل الاشتراك بسبب فرق كبير في premiumAmount. |
| 3005 | فشل الاقتباس. |
| 3006 | لا يتم تقديم الخدمة مؤقتًا. |
| 3007 | تم تجاوز حد معدل API. حاول التخفيف. |
| 3100 | فشل إنشاء الطلب. |
Required Functions: