Hal-hal yang perlu diketahui: |
– Pembuatan benih Trust Wallet cacat, total entropi hanya 32 bit. Kami telah membuat file yang berisi semua seed yang mungkin.
– Untungnya, Ledger Donjon menemukan kerentanan dengan sangat cepat dan kemungkinan menghindari salah satu peretasan terbesar di ekosistem crypto. |
Pada 14 November 2022, Trust Wallet, dompet perangkat lunak yang banyak digunakan, mengumumkan perilisan ekstensi perambannya. Ini memungkinkan akses ke aset digital di beberapa blockchain langsung dari browser, dan merupakan tambahan yang telah lama ditunggu untuk aplikasi iOS dan Android yang ada.
Ledger Donjon baru-baru ini menemukan kerentanan kritis dalam ekstensi browser ini, yang memungkinkan penyerang mencuri semua aset dompet apa pun yang dibuat dengan ekstensi ini, tanpa interaksi pengguna apa pun. Dengan mengetahui alamat suatu akun, dimungkinkan untuk segera menghitung kunci privatnya, lalu mengakses semua dananya. Di bawah ini adalah detail kerentanan, bagaimana Ledger Donjon menemukannya, dampaknya dari waktu ke waktu, perkiraan aset yang rentan, dan bagaimana Trust Wallet merespons untuk memperbaikinya. Tapi mari kita mulai dengan mengingat dasar-dasarnya.
Bagaimana dompet dibuat
Pembuatan entropi itu rumit. Sebagai ilmuwan, kami menyukai reproduktifitas dan mampu menjelaskan fenomena dengan prinsip sebab-akibat. Jadi, secara umum sulit untuk menghasilkan keacakan. Selain itu, sulit untuk mendemonstrasikan bahwa angka acak itu benar, dan generator angka acak yang buruk tetapi tidak cacat dapat dengan mudah menipu pengamat. Untuk keacakan yang baik, kita membutuhkan distribusi bit dan byte yang seragam (dan bahkan semua ukuran potongan), dan ketidakpastian. Untuk seorang pengamat dari suatu urutan, pasti tidak mungkin untuk memiliki informasi apa pun tentang bagian selanjutnya dari urutan yang akan dibuat.
Karena sifat-sifat ini sangat sulit untuk dicapai, ruang mata uang kripto mencoba menghindari ketergantungan pada keacakan sebanyak mungkin – tetapi kami masih membutuhkannya pada satu tahap: saat kami membuat dompet baru.
Anda mungkin sudah terbiasa dengan mnemonik Anda, 12 hingga 24 kata bahasa Inggris yang memungkinkan Anda membuat cadangan dompet Anda (jika tidak, Anda dapat memeriksa Akademi Buku Besar artikel tentang topik ini).
Mnemonik ini mengkodekan 16 hingga 32 byte entropi, menurut standar BIP39 – kualitas entropi ini sangat penting, karena ini akan menjadi benih dari semua kunci yang digunakan oleh dompet Anda di semua rantai, mengikuti proses derivasi deterministik yang ditentukan oleh BIP 32 dan BIP 44 standar.
Skema Hierarchical Deterministic ini cukup banyak di mana-mana saat ini, mengingat betapa mudahnya bagi pengguna untuk membuat cadangan kunci yang tak terbatas dan portabilitasnya (meskipun BIP 39 "dengan suara bulat tidak disarankan untuk implementasi"). Signer roaming adalah fitur yang hebat – ketika dompet favorit Anda gagal atau mengecewakan, Anda dapat membawa mnemonik Anda (atau bahkan lebih baik, perangkat Ledger Anda), beralih ke yang lain, menjaga kebebasan finansial Anda dan membatasi dampak waktu henti.
Tapi sekali lagi, itu membutuhkan sumber entropi yang sempurna.
Ikhtisar Kerentanan
Trust Wallet mengandalkan Inti Dompet Kepercayaan, pustaka lintas platform yang mengimplementasikan fungsionalitas dompet kriptografi tingkat rendah untuk banyak blockchain. Itu berfokus pada seluler, tetapi juga menargetkan Wasm sejak April 2022 (lihat #2132).
Sementara sebagian besar Inti Trust Wallet bersifat portabel, beberapa modul dan fungsi sangat spesifik untuk target. Hal ini terutama terjadi pada bagian pembuatan acak yang aman, yang digunakan untuk membuat materi kriptografi seperti kunci pribadi, dan mnemonik untuk dompet HD. Setiap implementasi memanfaatkan pseudorandom number generator (PRNG) yang ditawarkan oleh sistem operasi:
- Untuk iOS,
SecRandomCopyBytes
digunakan. - Untuk Android, entropi disediakan oleh instance dari
java.security.SecureRandom
.
Ini biasanya merupakan praktik yang baik, karena primitif seperti itu seharusnya aman.
Bagian belakang Wasm
Ada perbedaan dengan target Wasm. Modul ini dapat berjalan di beberapa lingkungan, seperti browser yang mendukung Wasm, atau Node.js. Platform ini tidak menyediakan PRNG umum yang kuat, dan seseorang tidak dapat memperoleh akses ke antarmuka sistem "klasik" dari lingkungan ini. Misalnya, modul Wasm yang berjalan di Chrome untuk Linux tidak dapat langsung membaca /dev/urandom
.
Untuk mengatasi ini, apa yang disebut "generator acak aman" khusus telah diterapkan di #2240. Itu didasarkan pada PR yang dibuat di emscripten (lihat PR #12240 dalam emscripten) ditulis dengan tepat untuk menghindari membaca /dev/urandom
.
Menurut penulis:
Apa yang kami lakukan di sini sederhana, kami bungkus std::random_device
dengan std::mt19937
dan kembalikan nilai uint32 acak, terinspirasi oleh emscripten-core/emscripten#12240.
Ada masalah penting di sini, yang mengarah pada kerentanan kritis untuk inti-dompet untuk Wasm dan untuk produk apa pun yang mengandalkannya: PRNG yang digunakan adalah Mersenne Twister, dan tidak boleh digunakan untuk tujuan kriptografi. Selain itu, versi khusus mt19937 mengambil satu nilai 32-bit sebagai benih input.
Apa konsekuensinya di sini? Modul Acak khusus untuk Wasm mengimplementasikan dua fungsi: random32
yang menghasilkan nilai acak 32-bit, dan random_buffer
yang mengisi buffer ukuran sewenang-wenang dengan data acak. Dalam proyek Wallet Core, fungsi ini secara eksklusif digunakan oleh trezor-crypto, perpustakaan kriptografi yang dikembangkan oleh Trezor untuk memastikan keamanan kriptografi pada dompet perangkat keras mereka.
Sekarang, mari kita lihat bagaimana dompet HD dibuat:
- Entrypoint adalah HDWallet. Dibutuhkan kekuatan, dan frasa sandi untuk melindunginya nanti:
https://github.com/trustwallet/wallet-core/blob/3.1.0/src/HDWallet.cpp#L45
Fungsi ini kemudian memanggil mnemonic_generate
untuk membuat mnemonik BIP-39:
https://github.com/trustwallet/wallet-core/blob/3.1.0/trezor-crypto/crypto/bip39.c#L55
mnemonic_generate
panggilan random_buffer
, yang menampilkan buffer acak yang diisi menggunakan Mersenne twister PRNG, yang instansnya baru saja diunggulkan:
https://github.com/trustwallet/wallet-core/blob/3.1.0/wasm/src/Random.cpp#L19
Karena benihnya hanya 32 bit, versi inti dompet Wasm memungkinkan untuk membuat hanya 2^32 (~4 miliar) kemungkinan mnemonik. Semua mnemonik ini dapat dibuat dalam beberapa jam di satu komputer.
Dari sana, penyerang dapat:
- Hitung semua benih, kunci pribadi, lalu alamat setiap mata uang kripto yang ditangani oleh Trust Wallet.
- Pindai blockchain terkait untuk mengekstrak semua alamat yang digunakan.
- Hitung persimpangan untuk mendapatkan semua alamat dompet yang dibuat oleh Trust Wallet for Wasm, dan curi dana mereka.
Menjalankan serangan seperti itu memakan waktu lebih dari beberapa jam, tetapi dapat dilakukan dengan beberapa GPU dalam waktu kurang dari sehari (lihat medium.com/@johncantrell97/how-i-check-over-1-triliun-mnemonik-dalam-30-jam-untuk-memenangkan-bitcoin untuk estimasi biaya. Serangan 256 kali lebih mudah di sini).
Aplikasi untuk ekstensi browser Trust Wallet
Grafik Ekstensi browser Trust Wallet adalah ekstensi untuk browser berbasis Chromium. Ini jelas merupakan pesaing MetaMask, dan dicap sebagai "dompet crypto multi-rantai yang aman dan gerbang ke ribuan aplikasi terdesentralisasi Web3 (dApps)."
Ekstensi adalah sumber tertutup, tetapi kodenya dapat dengan mudah dianalisis. Itu bergantung pada implementasi Wasm yang rentan dari Trust Wallet Core.
Saat dompet dibuat, ekstensi membuat mnemonik 12 kata dari benih 128 bit acak. Mnemonik dihasilkan dengan cara ini:
HDWallet.create
adalah pembungkus Wasm yang dibuat secara otomatis untuk konstruktor HDWallet yang dijelaskan di atas. Itu berarti rentan random_buffer
fungsi digunakan, sehingga mnemonik dapat diambil dari alamat pengguna dengan serangan brute force.
Ekstensi ini menangani aset berikut: AVAX, BNB, ETH, MATIC, SOL, dan TWT.
- Alamat identik untuk ETH, BNB, MATIC, AVAX dan TWT. Ini adalah alamat Ethereum standar, berbagi jalur derivasi yang sama (m/44'/60'/0'/0/0).
- Solana menggunakan jalur derivasi yang berbeda: m/44'/501'/0'/0'.
Untuk menguras dana semua pengguna ekstensi Trust Wallet, penyerang dapat:
- Hitung dan simpan setiap mnemonik yang memungkinkan, lalu kunci pribadi Ethereum dan alamat Ethereum, yang dapat dihasilkan oleh ekstensi ini.
- Kumpulkan semua alamat Ethereum bekas yang dibuat sejak rilis pertama ekstensi browser Trust Wallet, dan simpan secara lokal.
- Lakukan pencarian di database alamat.
- Kosongkan dompet dengan kunci pribadi, jika alamatnya telah digunakan.
Langkah-langkah ini dapat direproduksi untuk setiap rantai. Kami merinci sekarang bagaimana Ledger Donjon menerapkan serangan ini pada Ethereum dan Binance Smart Chain, tanpa, tentu saja, menguras dompet.
Menyerang Trust Wallet
Kerentanan memungkinkan penyerang menghitung mnemonik dari alamat dompet mana pun yang dibuat oleh ekstensi browser. Untuk itu, seseorang perlu menghitung pemetaan antara mnemonik yang mungkin dan alamat yang dihasilkan.
Menghasilkan semua alamat yang dapat dibuat oleh ekstensi Trust Wallet
Berdasarkan kerentanan di PRNG yang dijelaskan sebelumnya, dimungkinkan untuk menghitung semua alamat (dan kunci pribadi terkait) yang dapat dibuat oleh ekstensi Trust Wallet. Ide saya adalah menyimpan setiap kemungkinan alamat dalam sebuah tabel besar. Kemudian, dari daftar alamat yang diambil dari blockchain Ethereum, seseorang dapat memeriksa apakah ada beberapa alamat dalam tabel ini. Jika demikian, kunci privatnya dapat dihitung.
Derivasi dari entropi ke mnemonik lalu ke alamat Ethereum menggunakan mekanisme derivasi standar BIP-32, BIP-39, Dan BIP-44 hierarki akun.
Kesulitan pertama adalah menghitung semua alamat ini. Transformasi dari benih PRNG ke alamat membutuhkan langkah-langkah berikut:
- Generasi entropi: inisialisasi Mersenne Twister dengan seed, dan panggil 16 kali untuk mengumpulkan entropi awal.
- Entropi ke mnemonik: satu SHA-256 untuk menghitung checksum terakhir yang disematkan di kata terakhir.
- Mnemonik ke benih: mnemonik diubah menjadi seed 512-bit menggunakan PKBDF2-HMAC-SHA512 dengan iterasi 2048. Ada 2 komputasi SHA-512 per iterasi, jadi total biayanya adalah 4096 komputasi SHA-512.
- Seed ke kunci master BIP-32: 1 HMAC SHA-512 dengan biaya 2 komputasi SHA-512.
- Kunci master ke kunci pribadi Ethereum: kunci master berasal dari m/44'/60'/0'/0/0. Ini membutuhkan 3 turunan kunci privat anak yang diperkeras dan 2 turunan kunci anak normal.
- Setiap derivasi kunci privat anak yang diperkeras memerlukan satu kalkulasi HMAC SHA-512 (2 SHA-512) dan satu tambahan pada secp256k1.
- Setiap turunan kunci privat anak normal memerlukan turunan kunci privat anak, dan perkalian skalar pada secp256k1 untuk mengonversi kunci privat yang disediakan di input menjadi kunci publik.
- Kunci pribadi Ethereum untuk diatasi: langkah terakhir ini membutuhkan konversi kunci privat ke publik, jadi perkalian skalar lainnya, dan satu hash Keccak-256.
Maka total biaya untuk semua langkah ini adalah:
- Inisialisasi dan 16 panggilan ke Mersenne Twister
- 1 SHA-256
- 4108 SHA-512
- penambahan 5 poin
- 2 perkalian skalar pada secp256k1
Langkah yang paling mahal adalah perhitungan SHA-512 dan perkalian skalar. Singkatnya, proses keseluruhan untuk mengubah benih PRNG menjadi alamat Ethereum lambat. Menjalankan perhitungan seperti itu pada satu CPU akan memakan waktu berbulan-bulan, dan mungkin beberapa minggu pada CPU yang tersedia di Donjon. Jadi, kami mengimplementasikannya menggunakan OpenCL (berdasarkan GPU Pemecah BIP39) dan menjalankannya pada 2 GPU NVIDIA GeForce GTX 1080 Ti.
Output dari alat ini adalah file besar yang berisi semua alamat Ethereum yang dapat dihasilkan oleh ekstensi. Karena ada 2^32 kemungkinan benih, dan setiap alamat panjangnya 20 byte, tabel ini membutuhkan 80 Gb.
Dari sana, pencarian tabel menjadi lambat: untuk mencocokkan alamat, diperlukan iterasi melalui semua tabel besar ini.
Untuk mempercepat pencarian ini, kami membagi tabel menjadi 256 tabel yang lebih kecil, menurut byte pertama alamat Ethereum. Setiap tabel berisi pasangan benih PRNG, dan alamat Ethereum yang dihasilkan.
Terakhir, agar dapat melakukan pencarian cepat di setiap tabel, kami mengurutkannya berdasarkan alamat Ethereum. Sekarang dimungkinkan untuk melakukan pencarian biner pada tabel ini: pencarian pada tabel yang diurutkan ini sangat murah.
Untuk menghemat ruang disk, kami menyimpan benih PRNG dan hanya 8 byte pertama dari setiap alamat Ethereum. 12 byte terakhir tidak diperlukan, karena tabrakan dapat diabaikan dalam kasus penggunaan saya. Setiap entri membutuhkan 12 byte. Seluruh tabel lalu ambil 48 Gb.
Berikut adalah pengaturan waktu untuk setiap langkah:
Dengan menggunakan tabel ini, dimungkinkan untuk segera mengambil mnemonik yang digunakan untuk membuat alamat. Untuk menilai dampak kerentanan, Binance menanyakan mnemonik dari 3 alamat pengujian yang mereka berikan. Inilah hasilnya:
Mengambil 3 mnemonik dan kunci pribadi membutuhkan waktu beberapa ratus milidetik. Menurut pengujian kami, prosesnya sebenarnya cukup cepat untuk memproses secara real time semua transaksi di blockchain Ethereum dan untuk memecahkan semua alamat yang rentan segera setelah digunakan. Dengan melakukan caching alamat yang sudah diuji, hal yang sama berlaku untuk blockchain lain seperti BSC. Dalam skenario serangan ini, seseorang dapat memantau transaksi ketika mencapai mempool, dan menghitung kunci privat pengirim atau penerima secara real time.
Daftar semua alamat Ethereum yang digunakan
Yang kami inginkan adalah memperkirakan jumlah sebenarnya dari dompet yang rentan, dan saldonya. Kedengarannya mudah, karena semua transaksi bersifat publik, sehingga semua alamat tersedia di blockchain. Namun, tidak ada cara untuk langsung mengambil daftar alamat yang digunakan.
Kami menerapkan metode yang berulang melalui setiap blok blockchain Ethereum. Kami mengekstrak alamat pengirim dan penerima dari semua transaksi, dan parameter alamat dari setiap panggilan ke kontrak ERC-20.
Perhatikan bahwa dengan metode ini, hanya dompet bekas yang dapat dideteksi: beberapa dompet rentan yang tidak menerima aset tidak pernah berinteraksi dengan blockchain.
Kami memindai blockchain Ethereum antara blok 14820000 dan 16096000. Blok 14820000 dibuat pada 21 Mei 2022, maka tepat sebelum pull request yang menambahkan kode rentan di Trust Wallet Core. 16096000 adalah blok terbaru saat saya menulis postingan ini.
Node publik tampaknya memiliki batas kecepatan, jadi saya menanyakan beberapa node publik secara paralel untuk mengumpulkan total 147,910,120 alamat selama beberapa lusin jam. Setelah duplikat dihapus, kami memperoleh daftar 32,613,317 alamat unik.
Metode yang sama telah digunakan untuk Binance Smart Chain. Node BSC publik telah dipindai.
Memperkirakan jumlah akun yang rentan
Akhirnya, sebuah alat untuk menguji apakah sebuah alamat telah dibuat oleh ekstensi Trust Wallet telah ditulis. Itu membuat pencarian di tabel yang dihasilkan, mendapatkan benih PRNG, dan dari sana menghitung mnemonik, kunci privat Ethereum, dan alamat terkait.
Perhitungannya sangat cepat. Alamat kandidat disortir sebelumnya untuk meminimalkan I/O dan untuk melakukan pencarian biner bersarang. Pencarian pada 32 juta alamat membutuhkan waktu beberapa menit menggunakan skrip Python sederhana.
Berikut adalah contoh dengan alamat yang diambil dari a tweet publik membalas pengumuman perpanjangan Trust Wallet. Saya mengambil yang ini sebagai contoh seperti alamat ini tidak pernah digunakan, jadi dana pengguna tidak berisiko.
Alat telah dijalankan pada kumpulan data 1,873,720 yang dirinci di atas. Menguji semua alamat dan menghitung kunci pribadi dari akun yang rentan membutuhkan waktu 4 menit 22 detik, jadi ini sangat murah.
Dengan daftar kunci pribadi yang rentan ini, dimungkinkan untuk membuat daftar semua alamat yang sesuai, saldo mereka dan jelas mengurasnya… Selama penyelidikan kami, sekitar $30 juta berisiko di beberapa titik, tetapi kami tidak memantau semua rantai dan token dari waktu ke waktu .
Remediasi
2022, 17 November
Kerentanan telah dilaporkan ke Binance menggunakan program karunia bug pada 2022, 17 November.
Untuk mengonfirmasi kerentanan, Binance mengirimi kami 3 alamat dan meminta mereka untuk memberikan mnemonik:
Bisakah Anda mencoba menjalankan alat Anda dan memberikan mnemonik untuk 3 alamat ini?
Wallet 1 – 0xdf6D9547e163D5E7eafBe2FeB24Bfa12A4C913C0
Wallet 2 – 0xE1E0580cb5eA0c0FD034FF2cdfc872ce4493676C
Wallet 3 – 0x02b2Ae981b138F066344774A2AD75225A046c377
Terima kasih!
Salam.
Setelah semua kemungkinan alamat telah dihitung sebelumnya, mengambil mnemonik dari alamat semudah mencari di tabel entri 4 miliar. Tiga mnemonik telah diambil dalam 0.2 detik:
2022, 21 November
Beberapa hari kemudian, pada tanggal 21 November, tim Trustwallet berkomitmen publik di Github perbaikan menghindari pembuatan benih baru yang cacat. Kami cukup khawatir seseorang akan menyadarinya dan mengeksploitasi kerentanan tersebut.
2022, November
Tim Trustwallet memperbarui aplikasi untuk memperingatkan pengguna mereka, mencegah mereka menghasilkan bibit cacat baru dan menghapus alur penerimaan.
Dari sana, kami memantau situasi dan dana yang berisiko. Hanya beberapa hari setelah peluncuran dompet yang rentan ini, risikonya sekitar $30 juta.
2023, Maret
Tim Trustwallet memberi kami hadiah tertinggi yang mereka tawarkan : $100k
2023, 22 April
Setelah berbulan-bulan menunggu pengguna untuk memigrasikan dana mereka, tim Trustwallet mengungkapkan kerentanan tersebut dan menulis a postmortem. Sampai sekarang, masih ada dompet dengan sisa dana yang bisa dicuri (~$100k). Trust Wallet menjanjikan penggantian dana yang dicuri.
Kesimpulan
Kerentanan ini menggambarkan skenario terburuk dari bug crypto – akun yang disusupi selamanya.
Menciptakan keacakan yang baik adalah tugas yang menakutkan – Perangkat Ledger mengandalkan logika silikon khusus dalam chip smartcard bersertifikat kami yang telah menjadi standar emas industri aman selama 40 tahun terakhir untuk menjamin keacakan kualitas tinggi dan ketahanan tamper.
Mengingat kerumitan dalam menghubungi pemilik akun tersebut dan kemungkinan untuk menggunakan akun yang disusupi tersebut pada semua jenis dompet perangkat lunak dan perangkat keras yang berbeda, TrustWallet melakukan pekerjaan yang cukup bagus untuk mengurangi risiko bagi penggunanya.
Dalam (sangat) (dekat) masa depan, kemungkinan bot akan berjuang untuk menjadi yang pertama mencuri dana yang disimpan ke alamat tersebut, mirip dengan apa yang terjadi dengan dompet otak di masa lalu.
Terima kasih khusus kepada Jean-Baptiste Bédrune karena telah menyelamatkan dunia. Hanya beberapa hari setelah rilis ekstensi Trust Wallet, hampir $30 juta berada dalam risiko. Skenario mimpi buruk dapat terjadi jika penyerang menemukan kerentanan setelah beberapa bulan.
Selama penyelidikan kami, kami juga melihat bahwa beberapa alamat rentan saat dibuat jauh sebelum rilis Trust Wallet. Itu mungkin berarti kerentanan ini ada di beberapa implementasi dompet lain yang memprihatinkan…
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoAiStream. Kecerdasan Data Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Mencetak Masa Depan bersama Adryenn Ashley. Akses Di Sini.
- Beli dan Jual Saham di Perusahaan PRE-IPO dengan PREIPO®. Akses Di Sini.
- Sumber: https://www.ledger.com/blog/funds-of-every-wallet-created-with-the-trust-wallet-browser-extension-could-have-been-stolen
- :memiliki
- :adalah
- :bukan
- $NAIK
- 1
- 12
- 13
- 14
- 15%
- 2022
- 23
- 24
- 30
- 39
- 40
- 49
- 8
- a
- Sanggup
- atas
- mengakses
- Menurut
- Akun
- Akun
- Mencapai
- sebenarnya
- menambahkan
- tambahan
- alamat
- alamat
- Setelah
- lagi
- Semua
- mengizinkan
- Membiarkan
- memungkinkan
- sudah
- juga
- an
- dan
- android
- mengumumkan
- Pengumuman
- Lain
- Apa pun
- aplikasi
- aplikasi
- Aplikasi (DApps)
- aplikasi
- April
- ADALAH
- sekitar
- artikel
- AS
- Aktiva
- terkait
- At
- menyerang
- penulis
- tersedia
- AVAX
- menghindari
- dihindari
- menghindari
- backup
- Buruk
- Saldo
- saldo
- berdasarkan
- Dasar-dasar
- BE
- menjadi
- sebelum
- makhluk
- di bawah
- Lebih baik
- antara
- Besar
- Terbesar
- Milyar
- binansi
- Rantai Cerdas Binance
- Berbunyi
- Memblokir
- blockchain
- blockchains
- Blok
- bnb
- bot
- karunia
- Otak
- bermerek
- Istirahat
- Browser
- browser
- brute force
- BSC
- penyangga
- Bug
- tapi
- by
- panggilan
- Panggilan
- CAN
- calon
- tidak bisa
- kasus
- Tersertifikasi
- rantai
- rantai
- murah
- memeriksa
- anak
- Keripik
- Chrome
- Jelas
- kode
- Umum
- saingan
- kompleksitas
- Dikompromikan
- komputasi
- perhitungan
- menghitung
- komputer
- komputasi
- Memastikan
- Konsekuensi
- mengingat
- mengandung
- kontrak
- Konversi
- mengubah
- dikonversi
- Core
- benar
- Sesuai
- Biaya
- bisa
- sepasang
- Tentu saja
- CPU
- membuat
- dibuat
- menciptakan
- kritis
- cross-platform
- kripto
- Ekosistem Crypto
- Dompet crypto
- cryptocurrency
- kriptografi
- kriptografi
- adat
- DApps
- data
- Basis Data
- hari
- Hari
- Terdesentralisasi
- Aplikasi Terdesentralisasi
- dedicated
- didefinisikan
- mendemonstrasikan
- disimpan
- Berasal
- dijelaskan
- Meskipun
- rinci
- terperinci
- rincian
- terdeteksi
- dikembangkan
- alat
- Devices
- MELAKUKAN
- perbedaan
- berbeda
- sulit
- Kesulitan
- digital
- Aset-Aset Digital
- langsung
- patah hati
- ditemukan
- distribusi
- do
- penghentian
- lusin
- menguras
- duplikat
- selama
- setiap
- mudah
- mudah
- Mudah
- ekosistem
- tertanam
- Inggris
- cukup
- memastikan
- masuk
- lingkungan
- ERC-20
- memperkirakan
- ETH
- ethereum
- Blockchain Ethereum
- Bahkan
- Setiap
- contoh
- khusus
- ada
- ada
- mahal
- Menjelaskan
- menjelaskan
- Mengeksploitasi
- perpanjangan
- ekstrak
- gagal
- akrab
- FAST
- Favorit
- Fitur
- beberapa
- pertarungan
- File
- terisi
- terakhir
- keuangan
- kebebasan finansial
- akhir
- Pertama
- Memperbaiki
- cacat
- Mengalir
- berikut
- Untuk
- kekuatan
- selama-lamanya
- Untung
- ditemukan
- Kebebasan
- dari
- fungsi
- fungsi
- fungsi
- dana-dana
- masa depan
- pintu gerbang
- mengumpulkan
- umumnya
- menghasilkan
- dihasilkan
- menghasilkan
- generasi
- generator
- mendapatkan
- GitHub
- Gold
- Gold Standard
- baik
- GPU
- diberikan
- menjamin
- terjangan
- memiliki
- Menangani
- terjadi
- Sulit
- Perangkat keras
- Dompet perangkat keras
- hash
- Memiliki
- karenanya
- di sini
- hirarki
- High
- paling tinggi
- JAM
- Seterpercayaapakah Olymp Trade? Kesimpulan
- Namun
- HTTPS
- ratus
- i
- ide
- identik
- if
- menggambarkan
- segera
- Dampak
- implementasi
- diimplementasikan
- mengimplementasikan
- penting
- mustahil
- in
- luar biasa
- industri
- Angka tak terbatas
- informasi
- mulanya
- memasukkan
- terinspirasi
- contoh
- interaksi
- interface
- persimpangan
- ke
- Investigasi
- iOS
- IT
- perulangan
- iterasi
- NYA
- Pekerjaan
- hanya
- Menjaga
- kunci
- kunci-kunci
- Tahu
- Mengetahui
- Terakhir
- kemudian
- Terbaru
- Memimpin
- Buku besar
- meninggalkan
- kurang
- memanfaatkan
- Perpustakaan
- 'like'
- Mungkin
- MEMBATASI
- linux
- Daftar
- lokal
- logika
- Panjang
- lama
- lama ditunggu-tunggu
- lookup
- terbuat
- membuat
- MEMBUAT
- banyak
- pemetaan
- menguasai
- Cocok
- bahan
- Matic
- max-width
- Mungkin..
- cara
- Mempool
- MetaMask
- metode
- bermigrasi
- juta
- jutaan
- menit
- menit
- ilmu tentang cara menghafal
- modul
- Modul
- Memantau
- dipantau
- bulan
- lebih
- Selain itu
- paling
- banyak
- multi-rantai
- harus
- my
- Dekat
- perlu
- Perlu
- kebutuhan
- tak pernah
- New
- berikutnya
- tidak
- simpul
- Node.js
- node
- normal
- terutama
- Melihat..
- November
- sekarang
- jumlah
- nomor
- Nvidia
- memperoleh
- terjadi
- of
- menawarkan
- ditawarkan
- on
- ONE
- hanya
- operasi
- sistem operasi
- or
- Lainnya
- kami
- keluaran
- lebih
- secara keseluruhan
- pemilik
- pasang
- Paralel
- parameter
- bagian
- lalu
- path
- melakukan
- Platform
- plato
- Kecerdasan Data Plato
- Data Plato
- silahkan
- Titik
- kemungkinan
- mungkin
- Pos
- kuat
- pr
- praktek
- tepat
- menyajikan
- cukup
- mencegah
- sebelumnya
- prinsip-prinsip
- swasta
- Key pribadi
- Kunci Pribadi
- mungkin
- Masalah
- proses
- Produk
- proyek
- dijanjikan
- properties
- melindungi
- memberikan
- disediakan
- publik
- Key publik
- tujuan
- Ular sanca
- kualitas
- segera
- acak
- keserampangan
- Penilaian
- mencapai
- nyata
- real-time
- menerima
- menerima
- baru-baru ini
- mengurangi
- salam
- terkait
- melepaskan
- mengandalkan
- yang tersisa
- Dihapus
- Dilaporkan
- permintaan
- membutuhkan
- membutuhkan
- Perlawanan
- mengakibatkan
- dihasilkan
- kembali
- Risiko
- Run
- berjalan
- aman
- sama
- Save
- penghematan
- skenario
- skema
- ilmuwan
- Pencarian
- aman
- keamanan
- melihat
- benih
- biji
- terlihat
- pengirim
- mengirim
- Urutan
- beberapa
- berbagi
- Pendek
- harus
- Silikon
- mirip
- Sederhana
- sejak
- tunggal
- situasi
- Ukuran
- lambat
- lebih kecil
- pintar
- Rantai Cerdas
- So
- Perangkat lunak
- SOL
- beberapa
- Seseorang
- Segera
- sumber
- Space
- berbicara
- khusus
- tertentu
- kecepatan
- membagi
- Tahap
- standar
- standar
- awal
- Langkah
- Tangga
- Masih
- dicuri
- dana curian
- menyimpan
- tersimpan
- kekuatan
- kuat
- seperti itu
- pendukung
- Seharusnya
- Beralih
- sistem
- tabel
- memecahkan
- Mengambil
- Dibutuhkan
- target
- target
- tugas
- tim
- uji
- pengujian
- tes
- dari
- Terima kasih
- bahwa
- Grafik
- Dasar-dasar
- Dunia
- mereka
- Mereka
- kemudian
- Sana.
- Ini
- mereka
- ini
- itu
- ribuan
- tiga
- Melalui
- waktu
- kali
- untuk
- hari ini
- Token
- mengambil
- alat
- tema
- Total
- Transaksi
- Mengubah
- Transformasi
- peti besi
- Kepercayaan
- Dompet Kepercayaan
- mencoba
- dua
- TWT
- di mana-mana
- unik
- alamat unik
- diperbarui
- us
- menggunakan
- bekas
- Pengguna
- dana pengguna
- Pengguna
- menggunakan
- biasanya
- nilai
- versi
- sangat
- kerentanan
- Rentan
- Menunggu
- dompet
- Wallet
- adalah
- Cara..
- we
- Web3
- minggu
- adalah
- ketika
- yang
- sementara
- seluruh
- yang
- sangat
- akan
- dengan
- tanpa
- Word
- kata
- dunia
- cemas
- terburuk
- akan
- tertulis
- tahun
- kamu
- Anda
- zephyrnet.dll