जांचों का क्रम
निकासी विंडो एक फॉर्म है जिसमें एक पता, एक राशि, कभी-कभी एक नेटवर्क, कभी-कभी एक टैग और कभी-कभी एक कोड होता है। इस तरह के फॉर्म हर एक्सचेंज और हर वॉलेट पर मौजूद होते हैं, और वे सभी एक जैसे दिखते हैं, जो यह छिपाता है कि बटन सक्षम होने तक कितना निर्णय पहले से ले लिया गया है। यह इतना छोटा है कि पूरी तरह पढ़ा जा सकता है, तो यह करता है।
| जांच | क्या पास होता है | अगर यह विफल हो तो आप क्या देखते हैं |
|---|---|---|
| क्या यह शून्य से बड़ी संख्या है? | कोई भी सकारात्मक राशि | एक राशि त्रुटि, और बटन बंद रहता है |
| क्या आपके पास है? | राशि ≤ उस सिक्के में आपका बैलेंस, सिक्के की सबसे छोटी इकाई से रूपांतरित | "अपर्याप्त बैलेंस" |
| क्या यह भेजने के लिए पर्याप्त है? | राशि ≥ सिक्के की न्यूनतम निकासी | न्यूनतम, सिक्के के प्रतीक के साथ, संदेश में |
न्यूनतम और फीस प्रति सिक्के और प्रति नेटवर्क हैं, और दोनों फॉर्म के नीचे की चेतावनी पाठ में मुद्रित होते हैं इससे पहले कि आप कुछ भी टाइप करें।
ENGINE-VERIFIEDcomponent/common/popup/wallet/withdraw.tsx: राशि वेलिडेटर एक गैर-सकारात्मक मान (amountError) को खारिज करता है, फिर Big(balance) ÷ 10^precision को टाइप की गई राशि से तुलना करता है (notEnoughBalance), फिर selectCoin.minWithdrawView से तुलना करता है (minWithdraw, {min} और {symbol} प्रतिस्थापित के साथ)। चेतावनी ब्लॉक withdrawWarn को {symbol}, {min: selectCoin.minWithdrawView} और {fee: selectCoin.feeView} के साथ प्रस्तुत करता है। store/CoinStore.ts: minWithdrawView और feeView संग्रहीत minWithdraw और fee को 10^precision से विभाजित करते हैं।
नेटवर्क, टैग और कोड
तीन फील्ड केवल तभी दिखाई देते हैं जब सिक्के को उनकी आवश्यकता होती है, और प्रत्येक एक ऐसे तरीके के कारण मौजूद है जिससे पैसा खो गया है। नेटवर्क सिलेक्टर उन सिक्कों के लिए दिखाई देता है जो एक से अधिक चेन पर रहते हैं: एक स्टेबलकॉइन ERC-20 टोकन, TRC-20 टोकन, या कई अन्य नेटवर्क पर यात्रा कर सकता है, और एक नेटवर्क पर भेजा गया ट्रांसफर जो प्राप्त करने वाले वॉलेट को नहीं देखता वह ट्रांसफर नहीं है, यह एक नुकसान है। जब आप एक नेटवर्क चुनते हैं तो अनुरोध उस नेटवर्क के आधार सिक्के को ले जाता है, ताकि सर्वर को पता चल जाए कि आपने कौन सी चेन के लिए अनुरोध किया था। नेटवर्क लेख समस्या के दूसरे आधे भाग को कवर करता है।
टैग फील्ड उन सिक्कों के लिए दिखाई देता है जिनका पता एक व्यक्ति की तुलना में एक एक्सचेंज या साझा वॉलेट की पहचान करता है, और जिनका गंतव्य टैग या मेमो इसमें आपकी पहचान करता है। टैग के बिना पते पर भेजने से फंड सही इमारत में आते हैं लेकिन कोई रूम नंबर नहीं। विंडो टैग को अपने स्वयं के फील्ड के रूप में भेजती है, और केवल उन सिक्कों के लिए।
कोड फील्ड दिखाई देता है अगर आपने अपने खाते के लिए एक बार का कोड चालू किया है। विंडो बिल्कुल छह अंक स्वीकार करती है, अनुरोध में कोड शामिल करती है, और सर्वर इसे किसी और चीज़ से पहले जांचता है। यह सूची पर एक जांच है जो आपको किसी और से सुरक्षित रखती है, जो इसे चालू करने के लायक होने का कारण है।
ENGINE-VERIFIEDwithdraw.tsx: अनुरोध body है { coinId, amount: Big(amount) × 10^precision एक string के रूप में, address }; baseCoinId को जोड़ा जाता है जब isNetworkCoin && selectedNetwork; otpCode को जोड़ा जाता है जब छह अंकों की input (onTypeOtp: code.length === 6) भरी जाती है; tag को जोड़ा जाता है जब selectCoin.type === ECoinType.TAG और फील्ड खाली नहीं है। अनुरोध है api.post('/wallet/withdraw', body); एक गैर-सफलता कोड फेंका जाता है और दिखाया जाता है, सफलता requestWithdrawDone दिखाती है और विंडो बंद करती है।
जो इसे जांच नहीं सकता
ऊपर की हर जांच राशि, मार्ग और भेजने वाले के बारे में है। कोई भी गंतव्य के बारे में नहीं है, क्योंकि कोई भी नहीं हो सकता। एक address एक string है जो या तो अच्छी तरह से बनाया गया है या नहीं है, और एक अजनबी का अच्छी तरह से बनाया गया address आपके एक अच्छी तरह से बनाए गए address से अलग नहीं किया जा सकता। साइट यह देख सकती है कि string parse करता है। यह देख नहीं सकता कि यह किसका है।
- साइट राशि, शेष, न्यूनतम, नेटवर्क, tag और कोड को जांचती है। ये इसका काम हैं, और उनमें से किसी में विफलता अनुरोध को ब्राउज़र से बाहर जाने से पहले रोक देती है।
- आप address को जांचते हैं। इसे उस जगह से कॉपी करें जहां इसे जारी किया गया था, मध्य वर्णों को भी पढ़ें साथ ही अंतों को, और अपने इतिहास में किसी भी हाल के छोटे ट्रांसफर को कठिन दिखने के लिए एक कारण के रूप में मानें, न कि एक शॉर्टकट के रूप में।
- शुल्क नेटवर्क का है, पहले से दिखाया गया है। यह न्यूनतम के बगल में मुद्रित किया जाता है इससे पहले कि आप टाइप करें, और शुल्क लेख बताता है कि यह क्यों हिलता है।
- बटन के बाद, चेन तय करता है। एक जमा किया गया withdrawal वॉलेट सेवा द्वारा संसाधित किया जाता है और फिर नेटवर्क द्वारा पुष्टि की जाती है; एक confirmation क्या है प्रतीक्षा को कवर करता है।
यह लेख रिपॉजिटरी में दिखाई देने वाले क्लाइंट-साइड withdraw component को बताता है; वॉलेट सेवा सर्वर पर अपनी स्वयं की जांच करती है और यह प्राधिकार है कि क्या withdrawal भेजा जाता है। सीमाएं, शुल्क और न्यूनतम प्रति coin हैं और बदल सकते हैं; विंडो वर्तमान मान दिखाती है।
अक्सर पूछे जाने वाले सवाल
withdraw बटन अक्षम क्यों रहता है?
क्योंकि एक जांच विफल हुई: राशि सकारात्मक नहीं है, आपके शेष से अधिक है, या coin की न्यूनतम से कम है, या एक आवश्यक फील्ड जैसे नेटवर्क, tag या छह अंकों का कोड अनुपस्थित है। राशि के तहत संदेश बताता है कि कौन सा है।
मुझे न्यूनतम और शुल्क कहां दिखाई देता है?
फॉर्म के तहत चेतावनी text में, उस coin और नेटवर्क के लिए जो आपने चुना है। दोनों coin के सबसे छोटे unit में संग्रहीत हैं और सामान्य units में परिवर्तित दिखाए जाते हैं।
कुछ coins के लिए नेटवर्क selector क्यों है?
क्योंकि वे coins एक से अधिक chain पर मौजूद हैं। अनुरोध उस नेटवर्क के base coin को ले जाता है जिसे आप चुनते हैं ताकि ट्रांसफर उस chain पर जाए जिसे आपका प्राप्त करने वाला wallet देखता है।
tag फील्ड क्या है?
एक destination tag या memo उन coins के लिए जिनका address एक shared wallet की पहचान करता है। इसे अपने स्वयं के field के रूप में केवल उन coins के लिए भेजा जाता है; इसके बिना funds address पर पहुंचते हैं लेकिन आप पर नहीं।
क्या विंडो address को जांचती है?
केवल यह कि यह मौजूद है। यह नहीं बता सकता कि यह किसका address है, जो यह है कि आपको इसे उस जगह से कॉपी करना चाहिए जहां इसे जारी किया गया था और पहले और अंतिम वर्णों से अधिक को पढ़ना चाहिए।
स्रोत और संदर्भ
- Betkyo client source: component/common/popup/wallet/withdraw.tsx (validation, request body, OTP and tag handling), store/CoinStore.ts (minWithdrawView, feeView)