Bethropic

Wat het withdraw window controleert voordat het verzendt

sepialadle7750 weergaven
🌐 Originally written in English· AI translationView original

De volgorde van controles

Het withdraw window is een formulier met een adres, een bedrag, soms een netwerk, soms een tag, en soms een code. Formulieren zoals dit bestaan op elke exchange en elke wallet, en ze zien er allemaal hetzelfde uit, wat verbergt hoeveel van de beslissing al genomen is op het moment dat de knop beschikbaar wordt. Deze is kort genoeg om volledig te lezen, dus hier is wat het doet.

De controles die het withdraw window op het bedrag uitvoert, in volgorde

CONTROLEWAT SLAAGTWAT JE ZIET ALS HET MISLUKT
Is het een getal groter dan nul?Elk positief bedragEen bedragfout, en de knop blijft uit
Heb je het?Bedrag ≤ je saldo in die coin, omgerekend van de kleinste eenheid van de coin"Onvoldoende saldo"
Is het genoeg om te verzenden?Bedrag ≥ minimale withdrawal van de coinHet minimum, met het coinsymbool, in het bericht

Het minimum en de fee zijn per coin en per netwerk, en beide worden in de waarschuwingstekst onder het formulier afgedrukt voordat je iets typt.

ENGINE-VERIFIEDcomponent/common/popup/wallet/withdraw.tsx: de amount validator verwerpt een niet-positieve waarde (amountError), vergelijkt vervolgens Big(balance) ÷ 10^precision met de getypte waarde (notEnoughBalance), vergelijkt vervolgens selectCoin.minWithdrawView ermee (minWithdraw, met {min} en {symbol} vervangen). Het waarschuwingsblok rendert withdrawWarn met {symbol}, {min: selectCoin.minWithdrawView} en {fee: selectCoin.feeView}. store/CoinStore.ts: minWithdrawView en feeView delen de opgeslagen minWithdraw en fee door 10^precision.

Netwerk, tag en code

Drie velden verschijnen alleen wanneer de coin ze nodig heeft, en elk veld bestaat vanwege een manier waarop geld verloren is gegaan. De netwerkkiezer verschijnt voor coins die op meer dan één chain leven: een stablecoin kan reizen als een ERC-20 token, een TRC-20 token, of op verschillende andere netwerken, en een transfer verzonden op een netwerk dat de ontvangende wallet niet volgt, is geen transfer, het is een verlies. Wanneer je een netwerk kiest, bevat het verzoek de base coin van dat netwerk, zodat de server precies weet welke chain je gevraagd hebt. Het netwerkartikel behandelt de andere helft van het probleem.

Het tag veld verschijnt voor coins waarvan het adres een exchange of een gedeelde wallet identificeert in plaats van een persoon, en waarvan de destination tag of memo jou erin identificeert. Verzenden naar het adres zonder de tag brengt de geldmiddelen in het juiste gebouw zonder kamernummer. Het window verzendt de tag als zijn eigen veld, en alleen voor die coins.

Het codeveld verschijnt als u een eenmalige code voor uw account heeft ingeschakeld. Het venster accepteert precies zes cijfers, voegt de code toe aan het verzoek, en de server controleert deze voordat hij iets anders doet. Het is de enige controle op de lijst die u beschermt tegen iemand die niet u bent, wat de reden is dat het de enige is die het waard is om in te schakelen.

ENGINE-VERIFIEDwithdraw.tsx: the request body is { coinId, amount: Big(amount) × 10^precision as a string, address }; baseCoinId is added when isNetworkCoin && selectedNetwork; otpCode is added when the six-digit input (onTypeOtp: code.length === 6) is filled; tag is added when selectCoin.type === ECoinType.TAG and the field is non-empty. The request is api.post('/wallet/withdraw', body); a non-success code is thrown and shown, success shows requestWithdrawDone and closes the window.

Wat het niet kan controleren

Elke controle hierboven gaat over het bedrag, de route en de afzender. Geen gaat over de bestemming, omdat dat niet kan. Een adres is een string die ofwel goed gevormd is of niet, en een goed gevormd adres dat toebehoort aan een vreemde is niet te onderscheiden van een goed gevormd adres dat toebehoort aan u. De site kan zien dat de string parsed. Het kan niet zien van wie het is.

  • De site controleert het bedrag, het saldo, het minimum, het netwerk, de tag en de code. Dat zijn haar taken, en een fout in een van deze stopt het verzoek voordat het de browser verlaat.
  • U controleert het adres. Kopieer het van de plaats die het heeft uitgegeven, lees ook de middelste tekens en niet alleen de uiteinden, en behandel elke recente kleine overdracht in uw geschiedenis als een reden om beter te kijken, niet als een snelkoppeling.
  • De vergoeding behoort aan het netwerk en wordt van tevoren weergegeven. Het wordt afgedrukt naast het minimum voordat u typt, en het artikel over vergoedingen legt uit waarom het verandert.
  • Na de knop beslist de chain. Een ingediend withdrawal wordt verwerkt door de wallet service en vervolgens bevestigd door het netwerk; wat een bevestiging is behandelt het wachten.

Dit artikel beschrijft de client-side withdraw component zoals deze in de repository voorkomt; de wallet service voert zijn eigen controles uit op de server en is gezaghebbend over de vraag of een withdrawal wordt verzonden. Limieten, vergoedingen en minima zijn per coin en kunnen veranderen; het venster toont de huidige waarden.

Veelgestelde vragen

Waarom blijft de withdraw knop uitgeschakeld?

Omdat een van de controles is mislukt: het bedrag is niet positief, overschrijdt uw saldo, of ligt onder het minimum van de coin, of een vereist veld zoals het netwerk, tag of zesciferige code ontbreekt. Het bericht onder het bedrag zegt welke.

Waar zie ik het minimum en de vergoeding?

In de waarschuwingstekst onder het formulier, voor de coin en het netwerk dat u hebt geselecteerd. Beide worden per coin in de kleinste eenheid van de coin opgeslagen en weergegeven omgerekend naar normale eenheden.

Waarom is er voor sommige coins een netwerk selector?

Omdat deze coins op meer dan één chain bestaan. Het verzoek draagt de base coin van het netwerk dat u kiest, zodat de overdracht plaatsvindt via de chain die uw ontvangende wallet volgt.

Wat is het tag veld?

Een destination tag of memo voor coins waarvan het adres een gedeelde wallet identificeert. Het wordt alleen voor deze coins als een eigen veld verzonden; zonder het komen de fondsen aan bij het adres maar niet bij u.

Controleert het venster het adres?

Alleen dat het aanwezig is. Het kan niet bepalen van wie het adres is, wat is waarom u het moet kopiëren van de plaats die het heeft uitgegeven en meer moet lezen dan alleen de eerste en laatste tekens.

BRONNEN & REFERENTIES

  • Betkyo client source: component/common/popup/wallet/withdraw.tsx (validatie, request body, OTP en tag handling), store/CoinStore.ts (minWithdrawView, feeView)
Wat het withdraw window controleert voordat het verzendt

Reacties (1)

  • bluekettle58

    So the withdraw form basically locks you out until you hit every single requirement - makes sense but never really thought about the order mattering like that.