Kontrollerin sırası
Para çekme penceresi bir adres, bir miktar, bazen bir ağ, bazen bir etiket ve bazen bir kod içeren bir formdur. Bunun gibi formlar her borsada ve her cüzdanda mevcuttur ve hepsi aynı görünür, bu da düğme etkinleştirilene kadar kararın ne kadarının zaten verilmiş olduğunu gizler. Bu form tamamını okuyabilecek kadar kısa, o yüzden ne yaptığı burada.
| KONTROL | NE GEÇER | BAŞARISIZ OLURSA NE GÖRÜRSÜN |
|---|---|---|
| Sıfırdan büyük bir sayı mı? | Herhangi bir pozitif miktar | Bir miktar hatası ve düğme kapalı kalır |
| Sende var mı? | Miktar ≤ o coindeki bakiyeniz, coinin en küçük biriminden dönüştürülmüş | “Yetersiz bakiye” |
| Göndermeye yetiyor mu? | Miktar ≥ coinin minimum çekim tutarı | Mesajda, coin sembolüyle birlikte minimum tutar |
Minimum tutar ve ücret coine ve ağa göre değişir ve her ikisi de siz henüz bir şey yazmadan önce formun altındaki uyarı metninde yazılıdır.
MOTOR TARAFINDAN DOĞRULANMIŞcomponent/common/popup/wallet/withdraw.tsx: miktar doğrulayıcı sıfır veya negatif bir değeri reddeder (amountError), ardından Big(balance) ÷ 10^precision değerini yazılan değerle karşılaştırır (notEnoughBalance), ardından selectCoin.minWithdrawView ile karşılaştırır (minWithdraw, {min} ve {symbol} yerine konularak). Uyarı bloğu withdrawWarn'ı {symbol}, {min: selectCoin.minWithdrawView} ve {fee: selectCoin.feeView} ile render eder. store/CoinStore.ts: minWithdrawView ve feeView, saklanan minWithdraw ve fee değerlerini 10^precision'a böler.
Ağ, etiket ve kod
Üç alan yalnızca coin bunlara ihtiyaç duyduğunda görünür ve her biri paranın kaybedildiği bir yol yüzünden vardır. Ağ seçici, birden fazla zincirde bulunan coinler için görünür: bir stablecoin ERC-20 token, TRC-20 token veya birkaç başka ağ üzerinde hareket edebilir ve alıcı cüzdanın izlemediği bir ağda gönderilen bir transfer, transfer değil, bir kayıptır. Bir ağ seçtiğinizde istek o ağın temel coinini taşır, böylece sunucu tam olarak hangi zinciri talep ettiğinizi bilir. Ağ makalesi sorunun diğer yarısını kapsar.
Etiket alanı, adresi bir kişiyi değil bir borsayı veya paylaşılan bir cüzdanı tanımlayan ve hedef etiketi veya notu sizi onun içinde tanımlayan coinler için görünür. Etiket olmadan adrese göndermek, fonları doğru binaya ama oda numarası olmadan ulaştırır. Pencere etiketi kendi alanı olarak gönderir ve bunu yalnızca bu coinler için yapar.
Hesabınız için tek kullanımlık kod açıksa kod alanı görünür. Pencere tam olarak altı haneyi kabul eder, kodu isteğe dahil eder ve sunucu başka her şeyden önce bunu kontrol eder. Bu, sizin olmayan birinden sizi koruyan listedeki tek kontroldür, bu yüzden açmaya değer olan da odur.
MOTOR TARAFINDAN DOĞRULANDIwithdraw.tsx: istek gövdesi { coinId, amount: Big(amount) × 10^precision bir string olarak, address } şeklindedir; isNetworkCoin && selectedNetwork olduğunda baseCoinId eklenir; altı haneli giriş (onTypeOtp: code.length === 6) doldurulduğunda otpCode eklenir; selectCoin.type === ECoinType.TAG olduğunda ve alan boş değilse tag eklenir. İstek api.post('/wallet/withdraw', body) şeklindedir; başarısız bir kod fırlatılır ve gösterilir, başarı durumunda requestWithdrawDone gösterilir ve pencere kapanır.
Neyi kontrol edemez
Yukarıdaki her kontrol miktar, rota ve gönderenle ilgilidir. Hiçbiri hedefle ilgili değildir, çünkü hiçbiri olamaz. Bir adres ya iyi biçimlendirilmiş ya da değildir, ve bir yabancıya ait iyi biçimlendirilmiş bir adres, size ait iyi biçimlendirilmiş bir adresten ayırt edilemez. Site, string'in ayrıştığını görebilir. Kimin olduğunu göremez.
- Site miktarı, bakiyeyi, minimumu, ağı, etiketi ve kodu kontrol eder. Bunlar sitenin işidir ve bunlardan herhangi birinde bir hata, istek tarayıcıdan çıkmadan önce durdurulur.
- Adresi siz kontrol edersiniz. Onu yayınlayan yerden kopyalayın, sadece uçlarını değil orta karakterlerini de okuyun, ve geçmişinizdeki herhangi bir küçük son transferi daha dikkatli bakmak için bir neden olarak görün, bir kısayol olarak değil.
- Ücret ağa aittir, önceden gösterilir. Siz yazmadan önce minimumun yanında yazılıdır ve ücret makalesi neden değiştiğini açıklar.
- Düğmeden sonra, zincir karar verir. Gönderilen bir para çekme işlemi cüzdan servisi tarafından işlenir ve ardından ağ tarafından onaylanır; bir onayın ne olduğu bekleme sürecini kapsar.
Bu makale, depodaki haliyle client-side para çekme bileşenini açıklar; cüzdan servisi sunucu tarafında kendi kontrollerini yapar ve bir para çekme işleminin gönderilip gönderilmeyeceği konusunda yetkili olan odur. Limitler, ücretler ve minimumlar coin başına değişir ve değişebilir; pencere güncel değerleri gösterir.
SSS
Para çekme butonu neden devre dışı kalıyor?
Çünkü kontrollerden biri başarısız oldu: miktar pozitif değil, bakiyenizi aşıyor, ya da coin'in minimumunun altında, veya ağ, etiket ya da altı haneli kod gibi gerekli bir alan eksik. Miktarın altındaki mesaj hangisi olduğunu söyler.
Minimumu ve ücreti nerede görürüm?
Formun altındaki uyarı metninde, seçtiğiniz coin ve ağ için. İkisi de coin'in en küçük biriminde coin başına saklanır ve normal birimlere dönüştürülerek gösterilir.
Bazı coin'ler için neden ağ seçici var?
Çünkü o coin'ler birden fazla zincirde var oluyor. İstek, seçtiğiniz ağın temel coin'ini taşır, böylece transfer alıcı cüzdanınızın izlediği zincirden gider.
Etiket alanı nedir?
Adresi paylaşılan bir cüzdanı tanımlayan coin'ler için bir hedef etiketi veya memo. Sadece bu coin'ler için ayrı bir alan olarak gönderilir; onsuz para adrese ulaşır ama size ulaşmaz.
Pencere adresi kontrol ediyor mu?
Sadece mevcut olup olmadığını. Kimin adresi olduğunu söyleyemez, bu yüzden onu yayınlayan yerden kopyalamalı ve sadece ilk ve son karakterlerden fazlasını okumalısınız.
KAYNAKLAR VE REFERANSLAR
- Betkyo istemci kaynağı: component/common/popup/wallet/withdraw.tsx (doğrulama, istek gövdesi, OTP ve etiket işleme), store/CoinStore.ts (minWithdrawView, feeView)