Bu sayfa otomatik olarak çevrilmiştir. İngilizce orijinal kanonik versiyondur. İngilizce oku →
Ana içeriğe geç

Piyasa Yapıcı Koruması (MMP)

Piyasa yapıcılar için dolum penceresi limitleri ve otomatik iptal davranışı.

Cüzdan kapsamlı tüm MMP uç noktaları EIP-712 kimlik doğrulaması gerektirir. Yapılandırma yazma işlemleri, cüzdan sahibini veya o cüzdan için yetkilendirilmiş bir ajanı kabul eder. Okuma işlemleri yalnızca sahibe açıktır ve yetkilendirilmiş ajan imzalarını reddeder.

MMP, dolumların ait olduğu işlem hesabına uygulanır. Portföy teminatlı bir yönetici için, yönetici cüzdanı adına imzalanan okuma ve yazma işlemleri o yöneticinin Account.sol işlem hesabına, yani emir girişinin kullandığı hesabın aynısına çözümlenir. Yanıtlar bu hesabı wallet_address alanında raporlar ve MMP nonce dizisi bu hesaba aittir.

Yazma sonrası okuma tutarlılığı için, herhangi bir MMP değişikliği isteğinde X-Hypercall-Fence-Wait: 1 gönderin. Başarılı bir yanıt bu durumda X-Hypercall-Fence içerir; bu değeri kimlik doğrulamalı GET isteğinde X-Hypercall-Fence olarak geri gönderin. İsteğe bağlı bekleme başlığı olmayan değişiklik istekleri bilinçli olarak fence döndürmez.

Genel Bakış​

MMP, piyasa yapıcıları hızlı ve aleyhte gerçekleşen dolumlardan şu yollarla korur:

  1. Kayan bir zaman penceresi içinde kümülatif dolum metriklerini izleyerek
  2. Limitler aşıldığında emirleri iptal ederek
  3. Aynı cüzdan+dayanak varlık için MMP etkin diğer tüm emirleri otomatik olarak iptal ederek

Yapılandırma​

MMP Yapılandırmasını Ayarlama​

Uç nokta: POST /mmp-config

İstek: SetMmpConfigRequest

{
"wallet": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": "1000000",
"delta_limit": "10.0",
"vega_limit": "5.0",
"nonce": 1,
"signature": "0x..."
}

Alanlar:

  • wallet: Cüzdan adresi
  • currency: Dayanak varlık para birimi (ör. "BTC", "ETH")
  • interval_ms: Milisaniye cinsinden kayan pencere uzunluğu
  • frozen_time_ms: Tetiklenme sonrası dondurma süresi (milisaniye)
  • qty_limit: İsteğe bağlı miktar limiti (kontrat birimi), ondalık string olarak serileştirilir
  • delta_limit: İsteğe bağlı delta limiti, ondalık string olarak serileştirilir
  • vega_limit: İsteğe bağlı vega limiti, ondalık string olarak serileştirilir
  • nonce: Tekrar oynatma koruması nonce değeri; kimlik doğrulamalı okumanın döndürdüğü son kaydedilmiş nonce değerinden tam olarak bir fazla olmalıdır
  • signature: Tüm istek alanları üzerinde EIP-712 SetMmpConfig imzası

Yanıt: ApiResponse<MmpConfigData>

MMP Yapılandırmasını Okuma​

Uç nokta: GET /mmp-config?wallet=...&currency=...

Sorgu parametreleri:

  • wallet (zorunlu)
  • currency (isteğe bağlı filtre)

Zorunlu başlıklar:

  • X-Hypercall-Expires-At-Ms: Milisaniye cinsinden Unix geçerlilik sonu, en fazla 60 saniye ileride
  • X-Hypercall-Signature: wallet, currency (belirtilmediğinde boş string) ve başlıktaki geçerlilik sonu üzerinde GetMmpConfig imzası

Kurtarılan imzalayan, cüzdan sahibi olmalıdır. Bu okuma için yetkilendirilmiş ajan imzaları kabul edilmez.

Yanıt: MmpConfigResponse

{
"success": true,
"data": [
{
"wallet_address": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": "1000000",
"delta_limit": "10.0",
"vega_limit": "5.0",
"enabled": true,
"nonce": 1
}
]
}

MMP Yapılandırmasını Silme​

Uç nokta: DELETE /mmp-config

İstek: DeleteMmpConfigRequest

{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}

Yanıt: ApiResponse<String>. Başarılı bir komut, cüzdan/dayanak varlık için sayısal yetki durumunu devre dışı bırakır. X-Hypercall-Fence-Wait: 1 istek başlığı ile yanıt, projeksiyon tabanlı okuma için X-Hypercall-Fence içerir.

MMP Durumunu Sıfırlama​

Uç nokta: POST /mmp-config/reset

İstek: ResetMmpRequest

{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}

Yanıt: ApiResponse<String>. Başarılı bir komut, tekrar oynatılabilir yetki durumundaki MMP dolum penceresini ve dondurma durumunu temizler. X-Hypercall-Fence-Wait: 1 istek başlığı ile yanıt, projeksiyon tabanlı okuma için X-Hypercall-Fence içerir.

MMP Davranışı (Anlaşılması Kritik)​

Hangi Dolumlar Sayılır​

Her dolum, emrinde mmp_enabled=true bulunan her bir tarafın MMP penceresine sayılır; bu emrin defterde bekleyen (maker) ya da gelen (taker) emir olması fark etmez:

  • Bekleyen kotasyonlar: gelen bir emir, sizin defterde bekleyen MMP etkin emrinizle eşleştiğinde, bu dolum pencerenize eklenir. MMP'nin var olma nedeni budur: kotasyonlarınıza karşı ani bir dolum dalgası MMP'yi tetikler ve o dayanak varlıktaki kalan MMP etkin kotasyonlarınızı iptal eder.
  • Gelen emirler: likidite alan MMP etkin bir emir, kendi dolumlarını aynı şekilde sayar.
  • Kombo ve türetilmiş (implied) emirler: bir paketin korunan her katılımcısı, işlem yaptığı her bacağı sayar; değerlendirme paket başına bir kez yapılır.
  • RFQ ve RPI dolumları henüz MMP'ye sayılmaz. Bununla birlikte MMP dondurması, dondurulmuş kotasyon sağlayıcısı için yeni RFQ işlemlerini engeller.

Her dolum sizin kendi tarafınızdan ölçülür: bir alım opsiyonu satan dolum, satıcının penceresine negatif delta, alıcınınkine ise pozitif delta ekler.

Bir emirde mmp_enabled=true olduğu hâlde cüzdanın o dayanak varlık için MMP yapılandırması yoksa, MMP güvenli tarafta kalarak kapanır (fail closed): ilk dolum tetiklenir ve o cüzdanın ilgili dayanak varlıktaki MMP etkin emirlerini iptal eder. Emirleri işaretlemeden önce MMP'yi yapılandırın.

Dolum İşleme Sırası​

MMP değerlendirmesi DOLUM SONRASI yapılır:

  1. Motor eşleştirir ve önce dolumu kabul eder
  2. Ardından MMP, dolumun korunan her tarafı için kümülatif metrikleri kontrol eder
  3. Bir tarafın limitleri aşılırsa:
    • MMP, o tarafın cüzdanı ve dayanak varlığı için tetiklenir
    • Motor MmpTriggered olayını yayar
    • Motor, o cüzdan+dayanak varlık için MMP etkin tüm açık emirleri otomatik olarak iptal eder
    • Limiti aşan taraf gelen emirse, kalan miktarı durur ve emir "MMP triggered during fill processing" nedeniyle CANCELED durumuna geçer
    • Limiti aşan taraf defterde bekleyen maker ise, gelen emir diğer likiditeye karşı eşleşmeye devam eder; maker'ın diğer MMP etkin kotasyonları zaten iptal edilmiştir

Sonuç: MMP tetiklenmeden önce, yapılandırdığınız eşiklerin ötesine geçmenize yol açan dolumlar alabilirsiniz.

Tetiklenme Koşulları​

Yapılandırılmış limitlerden herhangi biri aşılırsa MMP tetiklenir:

  • Miktar limiti: cumulative_qty > qty_limit
  • Delta limiti: |cumulative_delta| > delta_limit
  • Vega limiti: |cumulative_vega| > vega_limit

Kümülatif metrikler kayan pencere (interval_ms) üzerinden hesaplanır.

İptal Davranışı​

MMP tetiklendiğinde:

  1. Tetikleyen gelen emir: kalan miktarı durur, emir "MMP triggered during fill processing" nedeniyle CANCELED durumuna geçer
  2. Tetikleyen bekleyen emir: dolum geçerli kalır; emrin varsa kalan kısmı diğer MMP etkin emirlerle birlikte iptal edilir
  3. Diğer emirler: Aynı cüzdan+dayanak varlık için MMP etkin tüm açık emirler "Order canceled by MMP trigger" nedeniyle otomatik olarak iptal edilir

Not: Yalnızca MMP etkin emirler iptal edilir. mmp_enabled=false olan emirler etkilenmez.

Dondurma Davranışı​

MMP tetiklendikten sonra:

  • Cüzdan ve dayanak varlık frozen_time_ms milisaniye boyunca dondurulur
  • Dondurma süresince cüzdan, o dayanak varlıktaki RPI açık artırmalarından ve RFQ'lardan hariç tutulur; cüzdanı dolduracak kombo veya türetilmiş işlemler reddedilir
  • Dondurma sırasında MMP etkin bir emirde gerçekleşen doğrudan (outright) dolum yine geçerli kalır, ardından MMP'yi yeniden tetikler ve o cüzdanın ilgili dayanak varlıktaki MMP etkin emirlerini iptal eder
  • POST /mmp-config/reset dondurmayı erken sonlandırır

Dolum Metriklerinin Hesaplanması​

Miktar​

  • Kaynak: Dolum size değeri (kontrat birimi)
  • Kümülatif: Kayan penceredeki tüm dolumların toplamı

Delta​

  • Kaynak: Dolum sembolü ve GreeksCache üzerinden hesaplanır
  • Kümülatif: Kayan penceredeki tüm dolum deltalarının toplamı

Vega​

  • Kaynak: Dolum sembolü ve GreeksCache üzerinden hesaplanır
  • Kümülatif: Kayan penceredeki tüm dolum vegalarının toplamı

Kayan Pencere​

Pencereden Çıkarma​

interval_ms değerinden daha eski dolumlar pencereden otomatik olarak çıkarılır:

  • Çıkarma işlemi, bir sonraki dolum işlenirken, yeni dolum eklenmeden önce çalışır
  • Eski dolumlar çıkarıldıkça kümülatif metrikler azaltılır

Pencereyi Sıfırlama​

MMP durumunu POST /mmp-config/reset ile sıfırlayın:

  • Penceredeki tüm dolumları temizler
  • Kümülatif metrikleri sıfıra çeker
  • Para biriminin dondurmasını kaldırır

MMP Olayları​

MmpTriggered Olayı​

Dahili olay (şu anda WS istemcilerine iletilmez):

MmpTriggeredMessage {
wallet: WalletAddress,
currency: String,
reason: String, // "MMP triggered during fill processing" | "MMP triggered by a resting order fill"
timestamp: u64,
}

En İyi Uygulamalar​

Yapılandırma​

  1. Uygun limitler belirleyin: Risk toleransınıza ve tipik dolum büyüklüklerinize göre
  2. Para birimine özgü yapılandırmalar kullanın: Her dayanak varlık için ayrı yapılandırın (BTC, ETH vb.)
  3. MMP tetiklenmelerini izleyin: Yüksek tetiklenme oranı, hatalı yapılandırılmış limitlere veya aleyhte piyasa koşullarına işaret edebilir

Emir Yönetimi​

  1. MMP'yi seçici olarak etkinleştirin: mmp_enabled=true değerini yalnızca korunmasını istediğiniz emirlerde ayarlayın
  2. Tutarlı para birimi kullanın: Aynı dayanak varlığa ait tüm emirlerin MMP yapılandırmasında aynı para birimini kullandığından emin olun
  3. MMP iptallerini ele alın: MMP kaynaklı iptalleri tespit edip kotasyonlarınızı ayarlayan bir mantık uygulayın

İzleme​

  1. MMP tetiklenmelerini takip edin: "MMP triggered during fill processing" ve "Order canceled by MMP trigger" nedenlerini izleyin
  2. Dolum pencerelerini gözden geçirin: Kümülatif pencere metrikleri henüz API üzerinden sunulmamaktadır; dolumlarınızı dayanak varlık bazında kendiniz takip edin
  3. Limitleri ayarlayın: MMP çok sık tetikleniyorsa limitleri artırın; çok seyrek tetikleniyorsa limitleri azaltın

Sık Karşılaşılan Sorunlar​

MMP Çok Sık Tetikleniyor​

Nedenler:

  • Limitler tipik dolum büyüklükleri için çok düşük
  • Aleyhte piyasa koşulları
  • Hızlı kotasyon nedeniyle çok sayıda dolum

Çözümler:

  • qty_limit, delta_limit veya vega_limit değerlerini artırın
  • Pencerede daha fazla doluma izin vermek için interval_ms değerini artırın
  • Kotasyon sıklığını azaltın

MMP Tetiklenmiyor​

Nedenler:

  • Limitler çok yüksek
  • Emirlerde MMP etkin değil (mmp_enabled=false)
  • Para birimi uyuşmazlığı (MMP yapılandırma para birimi != emrin dayanak varlığı)

Çözümler:

  • Limitleri azaltın
  • Emirlerde mmp_enabled=true olduğunu doğrulayın
  • MMP yapılandırma para biriminin emrin dayanak varlığıyla eşleştiğini doğrulayın

Beklenmeyen İptaller​

Belirti: Emirler "Order canceled by MMP trigger" nedeniyle iptal edildi, ancak bunu beklemiyordunuz.

Neden: Aynı cüzdan+dayanak varlık için başka bir emir MMP'yi tetikledi.

Çözüm: Biri tetiklendiğinde aynı dayanak varlığa ait tüm MMP etkin emirleri gözden geçirin.