Ting at vide: |
– Seed-generering af Trust Wallet var mangelfuld, den samlede entropi var kun 32 bit. Vi har lavet en fil, der indeholder alle mulige frø.
– Heldigvis opdagede Ledger Donjon sårbarheden meget hurtigt og undgik sandsynligvis et af de største hack i kryptoøkosystemet. |
Den 14. november 2022 annoncerede Trust Wallet, en meget brugt softwarepung, udgivelsen af sin browserudvidelse. Det giver adgang til digitale aktiver på flere blockchains direkte fra browseren og er en længe ventet tilføjelse til de eksisterende iOS- og Android-apps.
Ledger Donjon har for nylig opdaget en kritisk sårbarhed i denne browserudvidelse, som gør det muligt for en angriber at stjæle alle aktiver i enhver tegnebog, der er oprettet med denne udvidelse, uden brugerinteraktion. Ved at kende adressen på en konto er det muligt straks at beregne dens private nøgle og derefter få adgang til alle dens midler. Nedenfor er detaljer om sårbarheden, hvordan Ledger Donjon opdagede den, dens indvirkning over tid, et estimat af de sårbare aktiver, og hvordan Trust Wallet reagerede for at rette det. Men lad os starte med at huske det grundlæggende.
Hvordan tegnebøger skabes
Entropigenerering er vanskelig. Som videnskabsmænd kan vi godt lide reproducerbarhed og at kunne forklare fænomener med årsag-virkning-principper. Så generelt er det svært at skabe tilfældigheder. Desuden er det svært at demonstrere, at tilfældige tal er korrekte, og en dårlig, men ikke endegyldigt defekt tilfældig talgenerator, kan nemt narre observatøren. For god tilfældighed har vi brug for ensartet fordeling af bits og bytes (og endda alle chunks-størrelser) og uforudsigelighed. For en observatør af en sekvens skal det være umuligt at have nogen information om den næste del af sekvensen, der skal genereres.
Da disse egenskaber er utroligt svære at opnå, forsøger kryptovaluta-området så meget som muligt at undgå at stole på tilfældighed – men vi har stadig brug for det på et tidspunkt: når vi opretter en ny tegnebog.
Du er sikkert allerede bekendt med din mnemonic, de 12 til 24 engelske ord, der giver dig mulighed for at sikkerhedskopiere din tegnebog (hvis ikke, kan du tjekke Ledger Academy artikel om netop dette emne).
Denne mnemonic koder for 16 til 32 bytes entropi, ifølge BIP 39 standard – kvaliteten af denne entropi er kritisk, da den vil være kimen til alle nøgler, der bruges af din tegnebog på alle kæder, efter en deterministisk afledningsproces defineret af BNP 32 , BNP 44 standarder.
Denne hierarkiske deterministiske ordning er stort set allestedsnærværende i dag, i betragtning af hvor nemt det gør det for brugere at lave en sikkerhedskopi af en uendelighed af nøgler og dens portabilitet (på trods af at BIP 39 er "enstemmigt frarådes implementering"). Signer-roaming er en kraftfuld funktion – når din yndlingspung fejler eller skuffer, kan du bare tage din mnemonik med dig (eller endnu bedre, din Ledger-enhed), skifte til en anden, bevare din økonomiske frihed og begrænse enhver påvirkning af dens nedetid.
Men igen, det kræver en fejlfri entropikilde.
Oversigt over sårbarheden
Trust Wallet er afhængig af Trust Wallet Core, et bibliotek på tværs af platforme, der implementerer lavniveau kryptografisk tegnebogsfunktionalitet til mange blockchains. Den var mobilfokuseret, men den er også rettet mod Wasm siden april 2022 (se #2132).
Mens det meste af Trust Wallet Core er bærbart, er nogle få moduler og funktioner meget specifikke for et mål. Dette er især tilfældet for den sikre tilfældige genereringsdel, der bruges til at skabe kryptografisk materiale såsom private nøgler og mnemonic til HD-punge. Hver implementering udnytter den pseudorandom number generator (PRNG), der tilbydes af operativsystemet:
- Til iOS,
SecRandomCopyBytes
anvendes. - For Android leveres entropien af en forekomst af
java.security.SecureRandom
.
Dette er normalt en god praksis, da sådanne primitiver formodes at være sikre.
Wasm backend
Der er forskel på Wasm-målet. Dette modul kan køre på flere miljøer, som enhver browser, der understøtter Wasm, eller Node.js. Disse platforme giver ikke en fælles stærk PRNG, og man kan ikke få adgang til de "klassiske" systemgrænseflader fra disse miljøer. For eksempel kunne et Wasm-modul, der kører i Chrome til Linux, ikke læse direkte /dev/urandom
.
For at tackle dette er en dedikeret såkaldt "secure random generator" implementeret i #2240. Den er baseret på en PR lavet i emscripten (se PR #12240 i emscripten) skrevet præcist for at undgå læsning /dev/urandom
.
Ifølge forfatteren:
Det, vi gør her, er enkelt, vi pakker ind std::random_device
med std::mt19937
og returner en tilfældig uint32-værdi, inspireret af emscripten-core/emscripten#12240.
Der er et vigtigt problem her, som fører til en kritisk sårbarhed for wallet-core for Wasm og for ethvert produkt, der er afhængigt af det: den anvendte PRNG er en Mersenne Twister, og den bør ikke bruges til kryptografiske formål. Desuden tager den specialiserede version mt19937 en enkelt 32-bit værdi som input-seed.
Hvad er konsekvenserne her? Det brugerdefinerede Random-modul til Wasm implementerer to funktioner: random32
som udsender en 32-bit tilfældig værdi, og random_buffer
som fylder en buffer af vilkårlig størrelse med tilfældige data. I Wallet Core-projektet bruges disse funktioner udelukkende af trezor-crypto, det kryptografiske bibliotek udviklet af Trezor for at sikre sikker kryptografi på deres hardware-punge.
Lad os nu se, hvordan der genereres HD-tegnebøger:
- Indgangspunktet er HDWallet. Det kræver en styrke og en adgangssætning for at beskytte den senere:
https://github.com/trustwallet/wallet-core/blob/3.1.0/src/HDWallet.cpp#L45
Denne funktion kalder derefter mnemonic_generate
for at oprette en BIP-39 mnemonic:
https://github.com/trustwallet/wallet-core/blob/3.1.0/trezor-crypto/crypto/bip39.c#L55
mnemonic_generate
opkald random_buffer
, som udsender en tilfældig buffer fyldt ved hjælp af en Mersenne twister PRNG, hvis instans netop er blevet seedet:
https://github.com/trustwallet/wallet-core/blob/3.1.0/wasm/src/Random.cpp#L19
Da frøet kun er på 32 bit, tillader Wasm-versionen af wallet-core kun at skabe 2^32 (~4 milliarder) mulige mnemonics. Alle disse mnemonics kan genereres på et par timer i en enkelt computer.
Derfra er en angriber i stand til at:
- Beregn alle frø, private nøgler og derefter adresser på hver kryptovaluta, der håndteres af Trust Wallet.
- Scan de relaterede blockchains for at udtrække alle de brugte adresser.
- Beregn krydset for at få alle adresserne på tegnebøger oprettet af Trust Wallet til Wasm, og stjæl deres penge.
At køre et sådant angreb tager meget mere end et par timer, men det kan lade sig gøre med et par GPU'er på mindre end en dag (se medium.com/@johncantrell97/how-i-checked-over-1-trillion-mnemonics-in-30-hours-to-win-a-bitcoin for en omkostningsvurdering. Angreb er 256 gange nemmere her).
Applikation til Trust Wallet browserudvidelse
Trust Wallet browserudvidelse er en udvidelse til Chromium-baserede browsere. Det er helt klart en MetaMask-konkurrent og er mærket som en "sikker multi-chain crypto wallet og gateway til tusindvis af Web3 decentraliserede applikationer (dApps)."
Udvidelsen er lukket kilde, men dens kode kan let analyseres. Den er afhængig af den sårbare Wasm-implementering af Trust Wallet Core.
Når en tegnebog oprettes, opretter udvidelsen en 12-ords mnemonic fra et tilfældigt 128-bit frø. Mnemonic genereres på denne måde:
HDWallet.create
er den autogenererede Wasm-indpakning til HDWallet-konstruktøren beskrevet ovenfor. Det vil sige de udsatte random_buffer
funktion bruges, så mnemonics kan hentes fra brugeradressen med et brute force angreb.
Denne udvidelse håndterer følgende aktiver: AVAX, BNB, ETH, MATIC, SOL og TWT.
- Adresser er identiske for ETH, BNB, MATIC, AVAX og TWT. Disse er standard Ethereum-adresser, der deler den samme afledningssti (m/44'/60'/0'/0/0).
- Solana bruger en anden afledningssti: m/44'/501'/0'/0'.
For at dræne midlerne for alle Trust Wallet-udvidelsesbrugere kan angriberen:
- Beregn og gem alle mulige mnemonic, derefter Ethereums private nøgle og Ethereum-adresse, der kan genereres af denne udvidelse.
- Saml alle de brugte Ethereum-adresser, der er oprettet siden den første udgivelse af Trust Wallet-browserudvidelsen, og gem dem lokalt.
- Udfør et opslag i adressedatabasen.
- Tøm tegnebogen med den private nøgle, hvis adressen er brugt.
Disse trin kan gengives for hver kæde. Vi beskriver nu, hvordan Ledger Donjon implementerede dette angreb på Ethereum og Binance Smart Chain, uden selvfølgelig at dræne pengepungerne.
Angribende Trust Wallet
Sårbarheden gør det muligt for en angriber at beregne mnemonic fra en hvilken som helst adresse på en tegnebog, der er oprettet af browserudvidelsen. Til det skal man beregne en kortlægning mellem de mulige mnemonics og den resulterende adresse.
Generering af alle de adresser, Trust Wallet-udvidelsen kan oprette
Baseret på sårbarheden i den tidligere forklarede PRNG, er det muligt at opregne alle de adresser (og de relaterede private nøgler), som Trust Wallet-udvidelsen kan oprette. Min idé var at gemme alle mulige adresser i et stort bord. Derefter kan man fra en liste over adresser udtrukket fra Ethereum blockchain kontrollere, om nogle adresser er til stede i denne tabel. Hvis det er tilfældet, kan dens private nøgle beregnes.
Afledning fra entropi til mnemonic og derefter til Ethereum-adresse bruger standardafledningsmekanismen BIP-32, BIP-39, og BIP-44 kontohierarki.
Den første vanskelighed var at opregne alle disse adresser. Transformation fra PRNG-frø til adresse kræver følgende trin:
- Entropi generation: initialiser Mersenne Twister med frøet, og kald det 16 gange for at samle den indledende entropi.
- Entropi til mnemonic: en SHA-256 til at beregne den endelige kontrolsum, der er indlejret i det sidste ord.
- Mnemonisk til frø: mnemonic konverteres til et 512-bit frø ved hjælp af PKBDF2-HMAC-SHA512 med 2048 iterationer. Der er 2 SHA-512-beregninger pr. iteration, så de samlede omkostninger er 4096 SHA-512-beregninger.
- Frø til BIP-32 hovednøgle: 1 HMAC SHA-512 koster 2 SHA-512 beregninger.
- Hovednøgle til Ethereum privat nøgle: hovednøgle er afledt på m/44'/60'/0'/0/0. Dette kræver 3 hærdede underordnede private nøgleafledninger og 2 normale underordnede nøgleafledninger.
- Hver udledning af hærdet underordnet privat nøgle kræver én HMAC SHA-512 (2 SHA-512) beregning og én tilføjelse på secp256k1.
- Hver normal underordnet privat nøgleafledning kræver en underordnet privat nøgleafledning og en skalar multiplikation på secp256k1 for at konvertere den private nøgle, der er angivet i input, til en offentlig nøgle.
- Ethereum privat nøgle til adresse: dette sidste trin kræver en privat til offentlig nøglekonvertering, så endnu en skalar multiplikation og en Keccak-256 hash.
Samlede omkostninger for alle disse trin er da:
- Initialisering og 16 opkald til Mersenne Twister
- 1 SHA-256
- 4108 SHA-512
- 5 point tilføjelser
- 2 skalære multiplikationer på secp256k1
De dyreste trin er SHA-512-beregningerne og de skalære multiplikationer. For at gøre det kort, er den overordnede proces for at transformere PRNG-frøet til en Ethereum-adresse langsom. At køre en sådan beregning på en enkelt CPU ville tage måneder og sandsynligvis flere uger på de CPU'er, der var tilgængelige i Donjon. Så vi implementerede det ved hjælp af OpenCL (baseret på BIP39 Solver GPU) og kørte den på 2 NVIDIA GeForce GTX 1080 Ti GPU'er.
Outputtet af dette værktøj er en stor fil, der indeholder alle de Ethereum-adresser, som udvidelsen kan generere. Da der er 2^32 mulige frø, og hver adresse er 20-byte lang, tager denne tabel 80 Gb.
Derfra er tabelopslag langsomme: For at matche en adresse ville det kræve gentagelse af hele denne store tabel.
For at fremskynde disse opslag opdelte vi tabellen i 256 mindre tabeller i henhold til den første byte af Ethereum-adressen. Hver tabel indeholder par af PRNG-frø og deres resulterende Ethereum-adresse.
Til sidst, for at kunne udføre hurtige opslag i hver tabel, sorterede vi dem efter Ethereum-adressen. Det er nu muligt at lave binære søgninger på disse tabeller: opslag på disse sorterede tabeller er meget billige.
For at spare noget diskplads, gemte vi PRNG-frø og kun de første 8 bytes af hver Ethereum-adresse. De sidste 12 bytes er ikke nødvendige, da kollisioner er ubetydelige i mit use-case. Hver indtastning tager derefter 12 bytes. Hele borde tager så 48 Gb.
Her er tidspunkterne for hvert trin:
Ved at bruge disse tabeller er det muligt straks at hente de mnemonics, der bruges til at generere en adresse. For at vurdere virkningen af sårbarheden, spurgte Binance mig om hukommelsen af 3 testadresser, de opgav. Her er resultatet:
Hentning af de 3 mnemonics og private nøgler tog et par hundrede millisekunder. Ifølge vores test, processen er faktisk hurtig nok til i realtid at behandle alle transaktioner på Ethereum blockchain og til at bryde alle de sårbare adresser, så snart de er brugt. Ved at cache adresser, der allerede er testet, gælder det samme for andre blockchains såsom BSC. I dette angrebsscenarie kunne man overvåge transaktioner, når de når mempoolen, og beregne afsenderens eller modtagerens private nøgler i realtid.
Visning af alle de brugte Ethereum-adresser
Det, vi gerne vil, er at estimere det reelle antal af sårbare tegnebøger og deres balance. Dette lyder nemt, da alle transaktioner er offentlige, og derfor er alle adresser tilgængelige på blockchain. Der er dog ingen mulighed for direkte at hente listen over de brugte adresser.
Vi implementerede en metode, der itererer gennem hver blok af Ethereum blockchain. Vi udtog afsender- og modtageradresserne for alle transaktionerne og adresseparametrene for hvert opkald til ERC-20-kontrakter.
Bemærk, at med denne metode kan kun brugte tegnebøger registreres: nogle sårbare tegnebøger, der ikke modtog aktiver, har aldrig interageret med blockchain.
Vi scannede Ethereum blockchain mellem blokke 14820000 og 16096000. Blok 14820000 blev oprettet den 21. maj 2022, derfor lige før pull-anmodningen, der tilføjede den sårbare kode i Trust Wallet Core. 16096000 var den seneste blok, da jeg skrev dette indlæg.
Offentlige noder ser ud til at have en takstgrænse, så jeg forespurgte flere offentlige noder parallelt for at samle i alt 147,910,120 adresser i løbet af flere dusin timer. Efter dubletter er fjernet, får vi en liste med 32,613,317 unikke adresser.
Samme metode er blevet brugt til Binance Smart Chain. Offentlige BSC-noder er blevet scannet.
Estimering af antallet af sårbare konti
Endelig er der skrevet et værktøj til at teste, om en adresse er blevet oprettet af Trust Wallet-udvidelsen. Den laver et opslag i de genererede tabeller, henter PRNG-frøet og beregner derfra mnemonikken, Ethereum-privatnøgle og den tilhørende adresse.
Beregningen er meget hurtig. Kandidatadresser blev sorteret på forhånd for at minimere I/O og for at udføre en indlejret binær søgning. Opslag på de 32 millioner adresser tager et par minutter ved hjælp af et simpelt Python-script.
Her er et eksempel med en adresse taget fra en offentlig tweet svar på meddelelsen om Trust Wallet-udvidelsen. Jeg tog denne som et eksempel, som denne adresse har aldrig blevet brugt, så brugermidler er ikke i fare.
Værktøjet er blevet kørt på datasættet på 1,873,720 beskrevet ovenfor. At teste alle adresser og beregne de private nøgler til sårbare konti tog 4 min. 22 sekunder, så det er meget billigt.
Med denne liste over sårbare private nøgler er det muligt at liste alle de tilsvarende adresser, deres saldi og naturligvis at dræne dem... Under vores undersøgelser var omkring $30 millioner i fare på et tidspunkt, men vi overvågede ikke alle kæder og tokens overarbejde .
Oprydning
2022, den 17. november
Sårbarhed er blevet rapporteret til Binance ved hjælp af deres bug bounty-program den 2022. november 17.
For at bekræfte sårbarheden sendte Binance os 3 adresser og bad dem om at give mnemonics:
Kan du prøve at køre dit værktøj og levere mnemonics til disse 3 adresser?
Wallet 1 – 0xdf6D9547e163D5E7eafBe2FeB24Bfa12A4C913C0
Wallet 2 – 0xE1E0580cb5eA0c0FD034FF2cdfc872ce4493676C
Wallet 3 – 0x02b2Ae981b138F066344774A2AD75225A046c377
Tak!
Venlig hilsen.
Når alle de mulige adresser er blevet forudberegnet, er det lige så simpelt at hente mnemonikken fra en adresse som et opslag i en tabel med 4 milliarder indgange. De tre mnemonics er blevet hentet på 0.2s:
2022, den 21. november
Et par dage efter, den 21. november, var Trustwallet-teamet offentligt engageret På Github undgår man dannelsen af nye defekte frø. Vi var ret bekymrede for, at nogen ville bemærke det og udnytte sårbarheden.
2022, November
Trustwallet-teamet opdaterede appen for at advare deres brugere, forhindre dem i at generere nye defekte frø og fjernede modtagestrømmene.
Derfra overvågede vi situationen og de midler, der var i fare. Kun få dage efter frigivelsen af denne sårbare tegnebog var omkring 30 millioner dollars i fare.
2023, marts
Trustwallet-teamet tildelte os den højeste dusør, de tilbyder: $100k
2023, den 22. april
Efter måneders venten på, at brugerne skulle migrere deres midler, afslørede Trustwallet-teamet sårbarheden og skrev en efter døden. Lige nu er der stadig tegnebøger med resterende midler, der kan stjæles (~$100k). Trust Wallet lovede tilbagebetaling af stjålne midler.
Konklusion
Denne sårbarhed illustrerer det værste tilfælde af en kryptofejl – kompromitterede konti for altid.
At skabe god tilfældighed er en skræmmende opgave – Ledger-enheder er afhængige af dedikeret siliciumlogik i vores certificerede smartcard-chips, der har været guldstandarden for sikre industrier i de sidste 40 år for at garantere højkvalitets tilfældighed og manipulationsmodstand.
I betragtning af kompleksiteten i at kontakte ejerne af disse konti og muligheden for at bruge disse kompromitterede konti på alle slags forskellige software- og hardware-punge, gjorde TrustWallet et fint stykke arbejde med at reducere risikoen for deres brugere.
I den (meget) (nærmeste) fremtid er det sandsynligt, at bots vil kæmpe for at være de første til at stjæle penge indsat på disse adresser, svarende til hvad der skete med hjernepunge tidligere.
Særlig tak til Jean-Baptiste Bédrune for at redde verden. Kun få dage efter frigivelsen af Trust Wallet-udvidelsen var næsten 30 millioner dollars i fare. Et mareridtsscenarie kunne være opstået, hvis en angriber fandt sårbarheden efter et par måneder.
Under vores undersøgelser bemærkede vi også, at nogle få adresser var sårbare, mens de var blevet genereret lang tid før Trust Wallet-udgivelsen. Det betyder sandsynligvis, at denne sårbarhed eksisterer i nogle andre tegnebogsimplementeringer, der vedrører ...
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoAiStream. Web3 Data Intelligence. Viden forstærket. Adgang her.
- Udmøntning af fremtiden med Adryenn Ashley. Adgang her.
- Køb og sælg aktier i PRE-IPO-virksomheder med PREIPO®. Adgang her.
- Kilde: https://www.ledger.com/blog/funds-of-every-wallet-created-with-the-trust-wallet-browser-extension-could-have-been-stolen
- :har
- :er
- :ikke
- $OP
- 1
- 12
- 13
- 14
- 15 %
- 2022
- 23
- 24
- 30
- 39
- 40
- 49
- 8
- a
- I stand
- over
- adgang
- Ifølge
- Konto
- Konti
- opnå
- faktisk
- tilføjet
- Desuden
- adresse
- adresser
- Efter
- igen
- Alle
- tillade
- tillade
- tillader
- allerede
- også
- an
- ,
- android
- annoncerede
- Fondsbørsmeddelelse
- En anden
- enhver
- app
- applikationer
- Applikationer (DApps)
- apps
- april
- ER
- omkring
- artikel
- AS
- Aktiver
- forbundet
- At
- angribe
- forfatter
- til rådighed
- AVAX
- undgå
- undgås
- undgå
- backup
- Bad
- Balance
- saldi
- baseret
- Grundlæggende
- BE
- været
- før
- være
- jf. nedenstående
- Bedre
- mellem
- Big
- Største
- Billion
- binance
- Binance Smart kæde
- Bip
- Bloker
- blockchain
- blockchains
- Blocks
- bnb
- bots
- Bounty
- Brain
- mærkevarer
- Pause
- browser
- browsere
- brute force
- BSC
- buffer
- Bug
- men
- by
- ringe
- Opkald
- CAN
- kandidat
- kan ikke
- tilfælde
- Certificeret
- kæde
- kæder
- billig
- kontrollere
- barn
- Chips
- Chrome
- tydeligt
- kode
- Fælles
- konkurrent
- kompleksitet
- Kompromitteret
- beregning
- beregninger
- Compute
- computer
- computing
- Bekræfte
- Konsekvenser
- Overvejer
- indeholder
- kontrakter
- Konvertering
- konvertere
- konverteret
- Core
- korrigere
- Tilsvarende
- Koste
- kunne
- Par
- kursus
- CPU
- skabe
- oprettet
- skaber
- kritisk
- cross-platform
- krypto
- Krypto-økosystem
- Crypto tegnebog
- cryptocurrency
- kryptografisk
- kryptografi
- skik
- DApps
- data
- Database
- dag
- Dage
- decentral
- Decentraliserede applikationer
- dedikeret
- definerede
- demonstrere
- deponeret
- Afledt
- beskrevet
- Trods
- detail
- detaljeret
- detaljer
- opdaget
- udviklet
- enhed
- Enheder
- DID
- forskel
- forskellige
- svært
- Vanskelighed
- digital
- Digitale aktiver
- direkte
- modet
- opdaget
- fordeling
- do
- nedetid
- dusin
- dræne
- dubletter
- i løbet af
- hver
- lettere
- nemt
- let
- økosystem
- indlejret
- Engelsk
- nok
- sikre
- indrejse
- miljøer
- ERC-20
- skøn
- ETH
- ethereum
- Ethereum blockchain
- Endog
- Hver
- eksempel
- udelukkende
- eksisterende
- eksisterer
- dyrt
- Forklar
- forklarede
- Exploit
- udvidelse
- ekstrakt
- mislykkes
- bekendt
- FAST
- Favorit
- Feature
- få
- kæmpe
- File (Felt)
- fyldt
- endelige
- finansielle
- økonomisk frihed
- ende
- Fornavn
- Fix
- fejlbehæftet
- strømme
- efter
- Til
- Tving
- evigt
- Heldigvis
- fundet
- Frihed
- fra
- funktion
- funktionalitet
- funktioner
- fonde
- fremtiden
- gateway
- samle
- generelt
- generere
- genereret
- generere
- generation
- generator
- få
- GitHub
- Guld
- Gold Standard
- godt
- GPU'er
- bevilget
- garanti
- hack
- havde
- Håndterer
- skete
- Hård Ost
- Hardware
- Hardware lommebøger
- hash
- Have
- dermed
- link.
- hierarki
- Høj
- højeste
- HOURS
- Hvordan
- Men
- HTTPS
- hundrede
- i
- idé
- identisk
- if
- illustrerer
- straks
- KIMOs Succeshistorier
- implementering
- implementeret
- redskaber
- vigtigt
- umuligt
- in
- utroligt
- industrier
- Uendelighed
- oplysninger
- initial
- indgang
- inspirerede
- instans
- interaktion
- grænseflader
- vejkryds
- ind
- Undersøgelser
- iOS
- IT
- iteration
- iterationer
- ITS
- Job
- lige
- Holde
- Nøgle
- nøgler
- Kend
- Kendskab til
- Efternavn
- senere
- seneste
- Leads
- Ledger
- til venstre
- mindre
- Udnytter
- Bibliotek
- ligesom
- Sandsynlig
- GRÆNSE
- linux
- Liste
- lokalt
- logik
- Lang
- lang tid
- længe ventet
- kig op
- lavet
- lave
- maerker
- mange
- kortlægning
- Master
- Match
- materiale
- Matic
- max-bredde
- Kan..
- midler
- Mempool
- MetaMask
- metode
- migrere
- million
- millioner
- minut
- minutter
- huskesymboler
- modul
- Moduler
- Overvåg
- overvåges
- måned
- mere
- Desuden
- mest
- meget
- multikæde
- skal
- my
- I nærheden af
- nødvendig
- Behov
- behov
- aldrig
- Ny
- næste
- ingen
- node
- node.js
- noder
- normal
- især
- Varsel..
- november
- nu
- nummer
- numre
- Nvidia
- opnå
- forekom
- of
- tilbyde
- tilbydes
- on
- ONE
- kun
- drift
- operativsystem
- or
- Andet
- vores
- output
- i løbet af
- samlet
- ejere
- par
- Parallel
- parametre
- del
- forbi
- sti
- udføre
- Platforme
- plato
- Platon Data Intelligence
- PlatoData
- Vær venlig
- Punkt
- Muligheden
- mulig
- Indlæg
- vigtigste
- pr
- praksis
- præcist
- præsentere
- smuk
- forhindre
- tidligere
- principper
- private
- private nøgle
- Private nøgler
- sandsynligvis
- Problem
- behandle
- Produkt
- projekt
- lovede
- egenskaber
- beskytte
- give
- forudsat
- offentlige
- offentlig nøgle
- formål
- Python
- kvalitet
- hurtigt
- tilfældig
- tilfældighed
- Sats
- nå
- ægte
- realtid
- modtage
- modtagende
- for nylig
- reducere
- hilsen
- relaterede
- frigive
- stole
- resterende
- fjernet
- rapporteret
- anmode
- kræver
- Kræver
- Modstand
- resultere
- resulterer
- afkast
- Risiko
- Kør
- kører
- sikker
- samme
- Gem
- besparelse
- scenarie
- Ordningen
- forskere
- Søg
- sikker
- sikkerhed
- se
- frø
- frø
- synes
- afsender
- sendt
- Sequence
- flere
- deling
- Kort
- bør
- Silicon
- lignende
- Simpelt
- siden
- enkelt
- Situationen
- Størrelse
- langsom
- mindre
- Smart
- Smart kæde
- So
- Software
- SOL
- nogle
- Nogen
- Snart
- Kilde
- Space
- taler
- specialiserede
- specifikke
- hastighed
- delt
- Stage
- standard
- standarder
- starte
- Trin
- Steps
- Stadig
- stjålet
- stjålne midler
- butik
- opbevaret
- styrke
- stærk
- sådan
- Støtte
- formodes
- Kontakt
- systemet
- bord
- tackle
- Tag
- tager
- mål
- mål
- Opgaver
- hold
- prøve
- Test
- tests
- end
- tak
- at
- Grundlæggende
- verdenen
- deres
- Them
- derefter
- Der.
- Disse
- de
- denne
- dem
- tusinder
- tre
- Gennem
- tid
- gange
- til
- i dag
- Tokens
- tog
- værktøj
- emne
- I alt
- Transaktioner
- Transform
- Transformation
- Sikker indbetaling
- Stol
- Trust Wallet
- prøv
- to
- TWT
- allestedsnærværende
- enestående
- unikke adresser
- opdateret
- us
- brug
- anvendte
- Bruger
- brugerfonde
- brugere
- ved brug af
- sædvanligvis
- værdi
- udgave
- meget
- sårbarhed
- Sårbar
- Venter
- tegnebog
- Punge
- var
- Vej..
- we
- Web3
- uger
- var
- hvornår
- som
- mens
- Hele
- hvis
- bredt
- vilje
- med
- uden
- ord
- ord
- world
- bekymret
- Værst
- ville
- skriftlig
- år
- dig
- Din
- zephyrnet