De ce portofelul tău afișează un transfer pe care nu l-ai trimis niciodată: tranzacții cu valoare zero și otrăvirea adreselor
O tranzacție de ieșire necunoscută nu înseamnă automat că portofelul tău a fost compromis. Află ce demonstrează, de fapt, înregistrările cu valoare zero, adresele asemănătoare și mișcările reale de active.
Ce demonstrează această înregistrare despre portofelul meu?
Dacă istoricul arată brusc că ai trimis 0 USDT la o adresă necunoscută, această înregistrare nu dovedește, singură, că cineva ți-a accesat cheia privată. Un terț poate crea anumite înregistrări de transfer cu zero tokenuri în care apare adresa ta, fără semnătura sau permisiunea ta de a cheltui o sumă pozitivă. Înregistrarea poate exista pe blockchain chiar dacă nu ai inițiat-o niciodată.
Întrebările utile sunt mai precise: Despre ce activ este vorba? Cât s-a transferat efectiv? Cine a transmis tranzacția? Ce a autorizat eventualele cheltuieli reale?
- Un eveniment cu zero tokenuri nu dovedește că ai semnat sau cheltuit ceva. Pentru un token autentic, valoarea exactă zero înseamnă că transferul respectiv nu a mutat tokenuri.
- Un transfer sub numele unui token cunoscut nu identifică activul. Un contract fără legătură poate utiliza același nume și simbol.
- O plată de intrare minusculă poate fi autentică și, totodată, poate introduce în istoric o adresă de expeditor înșelătoare.
- O ieșire confirmată și neexplicată de active autentice trebuie investigată. Nu o ignora doar fiindcă alt câmp arată zero.
Acest ghid acoperă Ethereum, BNB Smart Chain (BSC) și rețele similare care folosesc contracte de tokenuri de tip Ethereum. Exemplele sunt înregistrări fictive, simplificate intenționat, nu capturi de ecran sau constatări privind un anumit portofel.
Mai întâi, află care câmp arată zero
Expresia tranzacție cu valoare zero este folosită pentru lucruri diferite. Dintre afișajele următoare, numai unul spune că numărul de tokenuri este zero:
- Cantitatea de tokenuri: 0 USDC. Pentru contractul USDC autentic, valoarea exactă zero înseamnă că acest transfer nu mută USDC.
- Valoarea tranzacției: 0 ETH. Tranzacția principală nu include ETH atașat. Tokenurile se pot totuși mișca, iar acțiunile contractelor se pot executa.
- Valoarea estimată: $0.00. Interfața arată o evaluare în monedă fiduciară. Aceasta nu stabilește cantitatea de tokenuri.
Pe BSC, câmpul monedei native folosește de obicei BNB în loc de ETH. O interacțiune cu un contract care are valoare nativă zero poate transfera tokenuri, modifica permisiuni de cheltuire sau declanșa alte operațiuni. Valoarea nativă este separată de datele de intrare ale tranzacției.
O cantitate pozitivă mică poate fi rotunjită la $0.00. Un activ fără un preț fiabil poate avea și o afișare în monedă fiduciară inutilă. Extinde afișajul cantității de tokenuri la precizia maximă; chiar și o cantitate afișată ca 0.00 poate ascunde o valoare pozitivă mai mică. Variația valorii portofoliului nu este o evidență fiabilă a unităților intrate sau ieșite din cont.
Zero este o cantitate permisă de tokenuri, deci nu dovedește singur existența unui atac. Adresele asemănătoare și detaliile de plată copiate sunt indicii care merită investigate.
De ce pot fi diferite cele două câmpuri From
Istoricul unui portofel poate combina informații din straturi diferite:
- Tranzacția: instrucțiunea semnată și transmisă rețelei. Pentru o tranzacție Ethereum obișnuită, câmpul principal From identifică acel cont care a semnat.
- Evenimentul tokenului: o înregistrare emisă de un contract în timpul execuției. Un eveniment Transfer are propriile câmpuri From, To și cantitate.
- Rândul din istoric: felul în care portofelul sau exploratorul prezintă informațiile. Poate eticheta un eveniment drept OUT fiindcă evenimentul îți indică adresa drept expeditor.
Cele două câmpuri From nu sunt interschimbabile. Prezența adresei tale într-un eveniment nu constituie o semnătură a portofelului tău. Un contract rău intenționat îți poate trece adresa în datele evenimentului, dar asta nu înseamnă că jurnalul provine de la contractul tokenului autentic. Contractul emitent este, așadar, o parte esențială a dovezilor.
De asemenea, un hash de tranzacție identifică o tranzacție, nu îți dovedește consimțământul. Marcajul Success al unei tranzacții incluse arată că execuția exterioară nu a fost anulată. Nu reprezintă o validare a tokenului, destinatarului sau scopului.
Cinci exemple explicate de istoric al tranzacțiilor
Exemplul 1: un transfer de ieșire cu zero tokenuri pe care nu l-ai semnat
Înregistrare în istoric: OUT · 0 USDC · De la adresa ta la o adresă necunoscută, asemănătoare.
- From al tranzacției: un cont fără legătură a transmis tranzacția.
- From al evenimentului tokenului: evenimentul indică adresa ta.
- Contractul emitent al tokenului: contractul USDC autentic de pe această rețea.
- Cantitatea exactă de tokenuri: zero.
Ce demonstrează: contractul tokenului autentic a înregistrat un transfer de zero tokenuri în care apare adresa ta. Transferul respectiv nu a mutat USDC. Nu dovedește că portofelul tău a semnat tranzacția, că apelantul poate cheltui o cantitate pozitivă sau că cheia ți-a fost furată.
Cum se întâmplă: ERC-20, standardul comun pentru tokenuri, cere emiterea evenimentelor Transfer și pentru transferuri cu valoare zero. În implementările obișnuite, funcția de transfer delegat transferFrom verifică dacă valoarea cerută depășește allowance-ul apelantului. Zero nu depășește nici un allowance de zero. Sub rezerva celorlalte reguli ale contractului, apelul poate reuși fără o aprobare prealabilă.
Acest lucru nu este garantat pentru toate tokenurile. Contractele individuale pot impune restricții suplimentare.
Ce să verifici apoi: examinează restul tranzacției. Un rând cu zero descrie doar acel rând; o altă operațiune poate avea alt efect. Dacă este o înregistrare izolată de otrăvire, fără cheltuieli suspecte sau schimbări de permisiuni, reacția potrivită este să eviți adresa introdusă, nu să presupui că portofelul trebuie înlocuit.
Exemplul 2: o tranzacție falsă care afișează o cantitate mare de tokenuri
Înregistrare în istoric: OUT · 2,500 USDC · De la adresa ta la o adresă necunoscută.
- Simbolul afișat al tokenului: USDC.
- Contractul emitent: un contract fără legătură, nu USDC autentic.
- Cantitatea raportată de eveniment: 2,500.
- Mișcare de USDC autentic în această tranzacție: niciuna.
Ce demonstrează: un alt contract a emis o înregistrare prezentată sub eticheta USDC. Nu dovedește că din contul tău au plecat 2,500 USDC autentici.
O tranzacție falsă din portofel poate fi o informație reală de pe blockchain, interpretată înșelător. Atacatorii pot copia numele și simbolul unui token și pot emite evenimente asemănătoare plăților tale anterioare, inclusiv ca valoare. Contractele nestandard pot emite și înregistrări de transfer care nu corespund unor schimbări ale propriilor solduri.
Ce să verifici apoi: identifică rețeaua și contractul exact care a emis evenimentul. Compară adresa cu informațiile despre contract obținute independent de la emitent pentru acea rețea. Un ticker familiar, un logo sau o etichetă de verificare a codului-sursă nu sunt suficiente pentru a stabili identitatea emitentului.
Exemplul 3: o mică plată reală dintr-o adresă asemănătoare
Înregistrare în istoric: IN · 0.000001 USDC · De la o adresă necunoscută la adresa ta.
Să presupunem că acel contract autentic confirmă transferul și soldul tău de tokenuri crește cu acea cantitate minusculă. Aici au sosit tokenuri reale. Primirea lor nu a necesitat aprobarea expeditorului de către tine și nu îi acordă acestuia dreptul de a cheltui.
Capcana este adresa. Privește aceste exemple fictive, separate prin spații ca să fie vizibil fiecare caracter. Adresele reale nu conțin spații; grupurile din mijloc, îngroșate, diferă:
Destinatar verificat: 0x7a2f 1111 2222 3333 4444 5555 6666 7777 8888 9c4d
Adresă introdusă de atacator: 0x7a2f aaaa bbbb cccc dddd eeee ffff 0000 1111 9c4d
O interfață care afișează numai începutul și sfârșitul le-ar putea arăta pe amândouă ca 0x7a2f...9c4d.
Ce demonstrează: cineva ți-a trimis o cantitate mică de la acea adresă. Nu dovedește că expeditorul este destinatarul tău obișnuit sau un cont controlat de tine. Caracterele vizibile identice nu stabilesc proprietatea.
Ce să verifici apoi: recuperează destinația dorită de la un contact verificat separat sau din pagina de cont de încredere a destinatarului. Compară întreaga adresă. Otrăvirea adreselor încearcă să transforme o intrare plantată în istoric în adresa pe care o alegi pentru o plată ulterioară. Pierderea se poate produce mai târziu, când autorizezi un transfer perfect valid spre destinația greșită.
Exemplul 4: zero ETH, dar ies 2,500 de tokenuri autentice
Antetul tranzacției: Value · 0 ETH.
- Valoarea nativă atașată apelului: 0 ETH.
- Transfer de tokenuri autentice: 2,500 USDC de la adresa ta.
- Schimbarea soldului USDC produsă de această tranzacție: o scădere de 2,500 USDC.
- Starea execuției: Success.
Ce demonstrează: în acest exemplu au ieșit USDC autentici. Zero descrie ETH atașat apelului. Nu descrie transferul USDC și nu exclude costurile de gas.
Ce rămâne necunoscut: de ce a avut loc plata și dacă ai intenționat-o. Ar putea fi un schimb, o depunere, o operațiune programată, o plată către o adresă greșită sau o cheltuire neautorizată. Compar-o cu acțiunea pe care ai efectuat-o și cu destinația urmărită înainte să o clasifici.
Exemplul 5: tokenurile autentice ies, dar alt cont a transmis tranzacția
Înregistrare în istoric: OUT · 500 USDC autentici · O destinație necunoscută.
Presupune că tranzacția reușită ți-a redus soldul USDC autentic cu 500, dar câmpul ei principal From indică altcineva.
Ce demonstrează: tokenurile s-au mutat. Faptul că expeditorul tranzacției este diferit nu face mișcarea falsă.
Un cheltuitor aprobat anterior poate folosi un allowance pentru tokenuri fără să-ți ceară să semnezi o tranzacție nouă la fiecare retragere. Unele tokenuri acceptă și semnături permit, care autorizează un allowance printr-un mesaj semnat ce poate fi transmis de altcineva. Conturile inteligente și portofelele delegate oferă și alte moduri prin care altcineva poate transmite o operațiune autorizată.
Ce să verifici apoi: examinează cheltuitorul, allowance-ul relevant sau permisiunea semnată și operațiunea portofelului. Dacă debitul rămâne neexplicat, tratează-l ca pe un incident de securitate. Dovezile pot indica o aprobare dăunătoare, o semnătură obținută prin înșelăciune sau compromiterea controlului asupra contului; rândul singur nu le poate deosebi.
Pentru o tranzacție obișnuită semnată direct, prezența adresei tale în câmpul principal From este dovada unei semnături valide pentru acel cont. Tot nu dovedește că ai înțeles acțiunea, că ai intenționat acel destinatar sau că ai inițiat-o personal. Câmpul From al evenimentului de token oferă dovezi mult mai slabe.
Ce au măsurat efectiv cele 270 de milioane de încercări de otrăvire
O analiză pe doi ani a activității Ethereum și BSC, din 1 iulie 2022 până în 30 iunie 2024, a identificat aproximativ 270 de milioane de înregistrări de transfer pentru otrăvire care au vizat 17 milioane de adrese.
Înregistrările s-au împărțit în trei categorii:
- 147.7 milioane de transferuri cu valoare zero.
- 118.4 milioane de transferuri de tokenuri contrafăcute.
- 4.0 milioane de transferuri minuscule.
Acestea erau înregistrări de transfer în aproximativ 18.2 milioane de tranzacții, deoarece atacatorii pot grupa mai multe înregistrări. Adresele vizate nu sunt echivalente cu persoane, portofele compromise sau victime care au pierdut bani.
Analiza a identificat 6,633 de transferuri reușite către atacatori, însumând cel puțin $83.8 milioane. Unele victime au plătit de mai multe ori. Detecția s-a concentrat pe anumite stablecoinuri, astfel că estimarea pierderilor reprezintă o limită inferioară în acel domeniu, nu totalul pentru toate tokenurile și lanțurile.
Implicația practică este că verificarea exclusivă a valorilor zero ratează o parte importantă a atacurilor. Înregistrările contrafăcute pot imita o plată semnificativă, iar un transfer minuscul de intrare poate muta tokenuri reale introducând totodată o adresă periculoasă.
Cum să examinezi înregistrarea care te privește
- Deschide tranzacția pe rețeaua corectă. Folosește opțiunea de explorator a portofelului sau un explorator cunoscut, precum Etherscan ori BscScan. Verifică starea tranzacției. Citirea detaliilor publice nu necesită conectarea portofelului, aprobarea tokenurilor, semnarea unui mesaj sau introducerea frazei de recuperare.
- Identifică activul real. Deosebește ETH sau BNB nativ de un token care folosește acest nume. Pentru tokenuri, verifică rețeaua exactă și contractul emitent folosind o referință de încredere a emitentului.
- Citește suma la precizia maximă. Separă cantitatea de tokenuri de valoarea nativă a tranzacției și de estimarea în monedă fiduciară.
- Distinge expeditorul tranzacției de expeditorul evenimentului. Pentru un cont inteligent, examinează și operațiunea portofelului și permisiunile ei. Dacă altcineva a plătit gas, asta nu dovedește că activele tale n-au putut fi mutate.
- Examinează întreaga tranzacție. Verifică toate mișcările de tokenuri, transferurile monedei native și schimbările relevante de permisiuni. Dacă exploratorul afișează variațiile soldurilor la nivel de tranzacție, folosește-le ca să verifici rezultatul. Soldul neschimbat de astăzi este o dovadă mai slabă: depunerile ulterioare sau transferurile compensatorii pot ascunde mișcări anterioare.
- Verifică independent destinația. Folosește datele de plată de încredere ale destinatarului sau o intrare din agenda de adrese verificată anterior. Un rând recent din istoric este un indiciu de examinat, nu dovada destinației corecte.
Dacă exploratorul nu clarifică rezultatul, comunică echipei oficiale de asistență a furnizorului portofelului rețeaua și hash-ul public al tranzacției. Descrie acțiunea la care te așteptai, dacă există. Aceste detalii ajută la diferențierea unei operațiuni neobișnuite, dar intenționate, de o cheltuire neexplicată, fără să dezvălui secretele care îți controlează portofelul.
Ce trebuie să faci după verificare
Dacă ai găsit doar o înregistrare izolată de otrăvire
Ascunde sau raportează spamul dacă portofelul permite și evită să folosești adresele respective. Ascunderea unui rând schimbă interfața; nu șterge istoricul blockchain și nu revocă permisiuni.
Un transfer zero poate apărea cu allowance zero, deci înregistrarea singură nu justifică revocarea tuturor aprobărilor sau mutarea tuturor fondurilor. Este posibil să nu existe nicio permisiune de cheltuire asociată acelei înregistrări care să poată fi eliminată. Nu folosi niciodată site-ul promovat de un token sau un link de recuperare trimis de un străin pentru a-ți „curăța” portofelul.
Dacă ai găsit o permisiune suspectă de cheltuire
Folosește metoda de gestionare a aprobărilor, considerată de încredere de portofel, pentru a revizui și revoca allowance-ul relevant. Deconectarea unui site de portofel nu revocă aprobările existente de tokenuri pe blockchain. Revocarea rezolvă acea permisiune, dar nu repară o cheie privată furată.
Dacă active autentice s-au mutat fără intenția ta
Păstrează hash-ul tranzacției, rețeaua, activul afectat și adresele relevante. Revizuiește semnăturile, aprobările și operațiunile recente ale portofelului prin canalele oficiale de asistență.
Dacă există dovezi că fraza de recuperare sau cheia privată a fost expusă, creează pe un dispozitiv de încredere un portofel nou, cu o frază de recuperare nouă, și urmează un plan atent pentru mutarea activelor rămase. Un alt cont derivat din fraza compromisă nu rezolvă expunerea. Dacă fondurile dispar automat, nu continua să adaugi bani pentru gas: un program de tip sweeper îi poate lua.
Dacă ai semnat conștient o plată, dar ai copiat o destinație otrăvită, documentează această diferență. Plata poate fi semnată și executată corect, dar trimisă destinatarului greșit. Acest rezultat nu dovedește, singur, că ți-a fost furată cheia privată.
Întrebări frecvente despre tranzacțiile necunoscute
Atacatorul m-a făcut să plătesc gas?
În scenariul obișnuit de otrăvire, atacatorul transmite tranzacția și plătește taxa de rețea. Simpla includere a adresei tale într-un eveniment al tokenului nu îți debitează contul. Totuși, tranzacțiile sponsorizate și conturile inteligente înseamnă că plătitorul taxei, singur, nu poate stabili dacă operațiunea a fost inofensivă. Verifică efectele reale.
Dar dacă tranzacția a eșuat?
Un transfer de tokenuri anulat prin revert nu a finalizat acel transfer, deși gas poate fi taxat. Dacă portofelul folosește delegarea contului, verific-o separat: Ethereum poate păstra o delegare chiar dacă execuția ulterioară eșuează. O delegare necunoscută merită examinată.
Ar preveni un portofel hardware otrăvirea adreselor?
Îți oferă încă un loc pentru verificarea destinației înainte de semnare. Nu poate transforma într-o destinație corectă una controlată de atacator dacă o aprobi. Compară adresa integrală de pe ecranul de semnare de încredere cu datele destinatarului verificate independent.
Pot împiedica străinii să adauge astfel de înregistrări?
În general, nu poți împiedica terții să trimită active sau să genereze înregistrări aplicabile unei adrese publice. Filtrele portofelului și exploratorului pot reduce ceea ce vezi. Salvează destinatarii verificați și verifică întreaga destinație înainte de plată; simpla ascundere a intrărilor cu valoare zero nu poate detecta toate variantele cu tokenuri contrafăcute sau transferuri minuscule.
