Що потрібно знати: |
– Початкова генерація Trust Wallet мала недоліки, загальна ентропія становила лише 32 біти. Ми створили файл, що містить усі можливі початкові значення.
– На щастя, Ledger Donjon дуже швидко виявив вразливість і, ймовірно, уникнув одного з найбільших хакерів у крипто-екосистемі. |
14 листопада 2022 року Trust Wallet, широко використовуваний програмний гаманець, оголосив про випуск свого розширення для браузера. Він дозволяє отримати доступ до цифрових активів у кількох блокчейнах безпосередньо з браузера та є довгоочікуваним доповненням до існуючих програм для iOS та Android.
Ledger Donjon нещодавно виявив критичну вразливість у цьому розширенні браузера, що дозволяє зловмиснику викрасти всі активи будь-якого гаманця, створеного за допомогою цього розширення, без будь-якої взаємодії з користувачем. Знаючи адресу облікового запису, можна негайно обчислити його закритий ключ, а потім отримати доступ до всіх його коштів. Нижче наведено детальну інформацію про вразливість, як Ledger Donjon виявив її, її вплив з часом, оцінку вразливих активів і те, як Trust Wallet відреагував на її усунення. Але почнемо з нагадування основ.
Як створюються гаманці
Генерація ентропії складна. Як науковці, ми любимо відтворюваність і здатність пояснювати явища за допомогою принципів причини та наслідку. Отже, загалом важко генерувати випадковість. Крім того, важко продемонструвати, що випадкові числа є правильними, а поганий, але не остаточно помилковий генератор випадкових чисел може легко обдурити спостерігача. Для гарної випадковості нам потрібен рівномірний розподіл бітів і байтів (і навіть розмір усіх фрагментів) і непередбачуваність. Для спостерігача послідовності повинно бути неможливо мати будь-яку інформацію про наступну частину послідовності, яка має бути згенерована.
Оскільки досягти цих властивостей неймовірно важко, криптовалютний простір намагається якомога більше уникати покладатися на випадковість, але нам все одно вона потрібна на одному етапі: коли ми створюємо новий гаманець.
Ви, мабуть, уже знайомі зі своєю мнемосхемою, 12-24 англійськими словами, які дозволяють вам створити резервну копію свого гаманця (якщо ні, ви можете перевірити Академія Ledger стаття саме на цю тему).
Ця мнемоніка кодує від 16 до 32 байтів ентропії, відповідно до Стандарт BIP 39 – якість цієї ентропії має вирішальне значення, оскільки вона буде зерном усіх ключів, що використовуються вашим гаманцем у всіх ланцюжках, дотримуючись детермінованого процесу виведення, визначеного БІП 32 та БІП 44 стандарти
Ця ієрархічна детермінована схема є майже всюдисущою сьогодні, враховуючи, наскільки легко користувачам створювати резервну копію нескінченної кількості ключів та її переносимість (незважаючи на те, що BIP 39 «одноголосно не рекомендується для впровадження»). Роумінг підписувачів є потужною функцією: коли ваш улюблений гаманець виходить з ладу або розчаровує, ви можете просто взяти з собою свою мнемосхему (або навіть краще, свій пристрій Ledger), переключитися на інший, зберегти свою фінансову свободу та обмежити будь-який вплив його простою.
Але знову ж таки, це вимагає бездоганного джерела ентропії.
Огляд вразливості
Trust Wallet покладається на Trust Wallet Core, кросплатформену бібліотеку, яка реалізує низькорівневу функціональність криптографічного гаманця для багатьох блокчейнів. Він був орієнтований на мобільні пристрої, але з квітня 2022 року також націлений на Wasm (див # 2132).
Хоча більша частина ядра Trust Wallet є портативною, деякі модулі та функції є дуже специфічними для цільової програми. Це особливо стосується безпечної частини випадкової генерації, яка використовується для створення криптографічного матеріалу, такого як закриті ключі, і мнемоніки для гаманців HD. Кожна реалізація використовує генератор псевдовипадкових чисел (PRNG), запропонований операційною системою:
- Для iOS,
SecRandomCopyBytes
використовується. - Для Android ентропія надається екземпляром
java.security.SecureRandom
.
Зазвичай це хороша практика, оскільки такі примітиви мають бути безпечними.
Сервер Wasm
Є різниця з ціллю Wasm. Цей модуль може працювати в кількох середовищах, як-от будь-який браузер, що підтримує Wasm або Node.js. Ці платформи не забезпечують загальний потужний PRNG, і з цих середовищ неможливо отримати доступ до «класичних» системних інтерфейсів. Наприклад, модуль Wasm, що працює в Chrome для Linux, не може безпосередньо читати /dev/urandom
.
Щоб вирішити цю проблему, було реалізовано спеціальний так званий «безпечний генератор випадкових змін». # 2240. Він заснований на PR, зробленому в emscripten (див. PR # 12240 in emscripten), написаний саме для того, щоб уникнути читання /dev/urandom
.
За словами автора:
Що ми робимо тут просто, загортаємо std::random_device
з std::mt19937
і повертає випадкове значення uint32, натхненне emscripten-core/emscripten#12240.
Тут є важлива проблема, яка призводить до критичної вразливості для ядра гаманця для Wasm і для будь-якого продукту, що покладається на нього: використовується PRNG — це Mersenne Twister, і його не слід використовувати для криптографічних цілей. Крім того, спеціалізована версія mt19937 приймає єдине 32-бітне значення як початкове значення.
Які тут наслідки? Спеціальний модуль Random для Wasm реалізує дві функції: random32
який виводить 32-бітне випадкове значення, і random_buffer
який заповнює буфер довільного розміру випадковими даними. У проекті Wallet Core ці функції використовуються виключно trezor-crypto, криптографічною бібліотекою, розробленою Trezor для забезпечення безпечної криптографії на їхніх апаратних гаманцях.
Тепер давайте подивимося, як генеруються HD-гаманці:
- Точкою входу є HDWallet. Щоб захистити його пізніше, потрібна сила та парольна фраза:
https://github.com/trustwallet/wallet-core/blob/3.1.0/src/HDWallet.cpp#L45
Потім викликається ця функція mnemonic_generate
щоб створити мнемосхему BIP-39:
https://github.com/trustwallet/wallet-core/blob/3.1.0/trezor-crypto/crypto/bip39.c#L55
mnemonic_generate
дзвінки random_buffer
, який виводить випадковий буфер, заповнений за допомогою PRNG-звуку Мерсенна, екземпляр якого щойно заправлено:
https://github.com/trustwallet/wallet-core/blob/3.1.0/wasm/src/Random.cpp#L19
Оскільки початковий код складається лише з 32 бітів, версія Wallet-core Wasm дозволяє створити лише 2^32 (~4 мільярди) можливих мнемосхем. Усі ці мнемосхеми можна згенерувати за кілька годин на одному комп’ютері.
Звідти зловмисник може:
- Обчислюйте всі вихідні дані, приватні ключі та адреси кожної криптовалюти, яка обробляється Trust Wallet.
- Скануйте пов’язані блокчейни, щоб отримати всі використані адреси.
- Обчисліть перетин, щоб отримати всі адреси гаманців, створених Trust Wallet для Wasm, і вкрасти їхні кошти.
Запуск такої атаки займає набагато більше, ніж пару годин, але здійсненний за допомогою кількох графічних процесорів менш ніж за день (див. medium.com/@johncantrell97/how-i-checked-over-1-trillion-mnemonics-in-30-hours-to-win-a-bitcoin для оцінки вартості. Атака тут легша в 256 разів).
Розширення браузера Application to Trust Wallet
Команда Розширення для браузера Trust Wallet це розширення для браузерів на основі Chromium. Очевидно, що це конкурент MetaMask і називається «безпечним багатоланцюжковим крипто-гаманцем і шлюзом до тисяч децентралізованих програм Web3 (dApps)».
Розширення закрите, але його код можна легко проаналізувати. Він покладається на вразливу реалізацію Wasm Trust Wallet Core.
Коли гаманець створюється, розширення створює мнемоніку з 12 слів із випадкового 128-бітного початкового числа. Мнемоніка генерується таким чином:
HDWallet.create
це автоматично згенерована оболонка Wasm для конструктора HDWallet, описаного вище. Це означає вразливі random_buffer
використовується функція, тому мнемоніку можна отримати з адреси користувача за допомогою атаки грубої сили.
Це розширення обробляє такі активи: AVAX, BNB, ETH, MATIC, SOL і TWT.
- Адреси ідентичні для ETH, BNB, MATIC, AVAX і TWT. Це стандартні адреси Ethereum, які мають однаковий шлях виведення (m/44'/60'/0'/0/0).
- Solana використовує інший шлях виведення: m/44'/501'/0'/0'.
Щоб викачати кошти всіх користувачів розширення Trust Wallet, зловмисник може:
- Обчисліть і збережіть усі можливі мнемоніки, а потім приватний ключ Ethereum і адресу Ethereum, які можуть бути згенеровані цим розширенням.
- Зберіть усі використані адреси Ethereum, створені після першого випуску розширення для браузера Trust Wallet, і зберігайте їх локально.
- Виконайте пошук у базі даних адрес.
- Порожній гаманець із закритим ключем, якщо адреса була використана.
Ці кроки можна відтворити для кожного ланцюга. Зараз ми детально розповімо, як Ledger Donjon реалізував цю атаку на Ethereum і Binance Smart Chain, звісно, не виснажуючи гаманці.
Атака Trust Wallet
Уразливість дозволяє зловмиснику обчислювати мнемоніку з будь-якої адреси гаманця, створеного розширенням браузера. Для цього потрібно обчислити відображення між можливою мнемонікою та результуючою адресою.
Генерація всіх адрес, які може створити розширення Trust Wallet
На основі вразливості в PRNG, описаній раніше, можна перерахувати всі адреси (і відповідні приватні ключі), які може створити розширення Trust Wallet. Моєю ідеєю було зберегти всі можливі адреси у великій таблиці. Потім зі списку адрес, отриманих із блокчейну Ethereum, можна перевірити, чи присутні деякі адреси в цій таблиці. Якщо так, його закритий ключ можна обчислити.
Виведення від ентропії до мнемоніки, а потім до адреси Ethereum використовує стандартний механізм виведення БІП-32, БІП-39, А БІП-44 ієрархія облікових записів.
Першою проблемою було перерахувати всі ці адреси. Для перетворення вихідного коду PRNG на адресу потрібно виконати наступні кроки:
- Генерація ентропії: ініціалізуйте Mersenne Twister за допомогою зерна та викликайте його 16 разів, щоб зібрати початкову ентропію.
- Ентропія до мнемотехніки: один SHA-256 для обчислення остаточної контрольної суми, вбудованої в останнє слово.
- Мнемоніка до насіння: мнемоніка перетворюється на 512-бітове початкове число за допомогою PKBDF2-HMAC-SHA512 з 2048 ітераціями. Є 2 обчислення SHA-512 на ітерацію, тому загальна вартість становить 4096 обчислень SHA-512.
- Засіб на відмичку БІП-32: 1 HMAC SHA-512 коштує 2 обчислення SHA-512.
- Головний ключ до закритого ключа Ethereum: головний ключ отримано на m/44'/60'/0'/0/0. Для цього потрібні 3 надійні похідні дочірні приватні ключі та 2 звичайні похідні дочірні ключі.
- Кожне отримання надійного дочірнього приватного ключа вимагає одного обчислення HMAC SHA-512 (2 SHA-512) і одного додавання на secp256k1.
- Кожне звичайне виведення дочірнього приватного ключа вимагає виведення дочірнього приватного ключа та скалярного множення на secp256k1 для перетворення приватного ключа, наданого у вхідних даних, у відкритий ключ.
- Закритий ключ Ethereum для адреси: цей останній крок вимагає перетворення приватного ключа у відкритий, тому ще одне скалярне множення та один хеш Keccak-256.
Тоді загальна вартість усіх цих кроків становить:
- Ініціалізація та 16 викликів на Mersenne Twister
- 1 SHA-256
- 4108 SHA-512
- Доповнення 5 очок
- 2 скалярні множення на secp256k1
Найдорожчими етапами є обчислення SHA-512 і скалярне множення. Коротко кажучи, загальний процес перетворення початкового числа PRNG на адресу Ethereum відбувається повільно. Виконання таких обчислень на одному процесорі займе місяці, а ймовірно, кілька тижнів на процесорах, доступних у Донжоні. Отже, ми реалізували це за допомогою OpenCL (на основі GPU Solver BIP39) і запустив його на 2 графічних процесорах NVIDIA GeForce GTX 1080 Ti.
Результатом роботи цього інструменту є великий файл, що містить усі адреси Ethereum, які може створити розширення. Оскільки існує 2^32 можливих початкових значень, а кожна адреса має 20 байт, ця таблиця займає 80 Гб.
З цього моменту пошуки в таблиці відбуваються повільно: щоб знайти відповідність адреси, знадобиться ітерація по всій цій великій таблиці.
Щоб пришвидшити ці пошуки, ми розділили таблицю на 256 менших таблиць відповідно до першого байту адреси Ethereum. Кожна таблиця містить пари початкових значень PRNG та їх результуючу адресу Ethereum.
Нарешті, щоб мати можливість виконувати швидкий пошук у кожній таблиці, ми відсортували їх відповідно до адрес Ethereum. Тепер можна здійснювати двійковий пошук у цих таблицях: пошук у цих відсортованих таблицях дуже дешевий.
Щоб заощадити дисковий простір, ми зберегли початкове значення PRNG і лише перші 8 байт кожної адреси Ethereum. Останні 12 байтів не потрібні, оскільки колізії незначні в моєму випадку використання. Кожен запис займає 12 байт. Цілі таблиці тоді займають 48 Гб.
Ось час для кожного кроку:
Використовуючи ці таблиці, можна негайно отримати мнемоніку, використану для створення адреси. Щоб оцінити вплив уразливості, Binance запитав у мене мнемоніку 3 тестових адрес, які вони надали. Ось результат:
Отримання 3 мнемосхем і закритих ключів зайняло кілька сотень мілісекунд. Згідно з нашими тестами, процес насправді досить швидкий, щоб обробляти в режимі реального часу всі транзакції в блокчейні Ethereum і зламати всі вразливі адреси, як тільки вони використовуються. Через кешування вже перевірених адрес те саме стосується інших блокчейнів, таких як BSC. У цьому сценарії атаки можна відстежувати транзакції, коли вони досягають пам’ятного пулу, і обчислювати приватні ключі відправника чи одержувача в реальному часі.
Список усіх використаних адрес Ethereum
Нам би хотілося оцінити реальну кількість вразливих гаманців і їх баланс. Це звучить просто, оскільки всі транзакції є публічними, отже, усі адреси доступні в блокчейні. Однак немає способу безпосередньо отримати список використаних адрес.
Ми реалізували метод, який повторює кожен блок блокчейну Ethereum. Ми вилучили адреси відправників і одержувачів усіх транзакцій, а також параметри адреси кожного виклику до контрактів ERC-20.
Зауважте, що за допомогою цього методу можна виявити лише використані гаманці: деякі вразливі гаманці, які не отримали активи, ніколи не взаємодіяли з блокчейном.
Ми просканували блокчейн Ethereum між блоками 14820000 і 16096000. Блок 14820000 було створено 21 травня 2022 року, отже, безпосередньо перед запитом на отримання, який додав уразливий код у Trust Wallet Core. 16096000 був останнім блоком, коли я писав цю публікацію.
Схоже, що загальнодоступні вузли мають обмеження по швидкості, тому я запитав декілька публічних вузлів паралельно, щоб зібрати загалом 147,910,120 32,613,317 XNUMX адрес протягом кількох десятків годин. Після видалення дублікатів ми отримуємо список з XNUMX XNUMX XNUMX унікальних адрес.
Той самий метод був використаний для Binance Smart Chain. Загальнодоступні вузли BSC проскановано.
Оцінка кількості вразливих акаунтів
Нарешті, було створено інструмент для перевірки того, чи була адреса створена розширенням Trust Wallet. Він виконує пошук у згенерованих таблицях, отримує початкове значення PRNG і звідти обчислює мнемоніку, приватний ключ Ethereum і пов’язану адресу.
Обчислення дуже швидке. Адреси-кандидати були відсортовані заздалегідь, щоб мінімізувати введення-виведення та виконати вкладений двійковий пошук. Пошук 32 мільйонів адрес займає кілька хвилин за допомогою простого сценарію Python.
Ось приклад із адресою, взятою з a публічний твіт відповідаючи на оголошення про розширення Trust Wallet. Я взяв цей приклад як цю адресу ніколи не використовувався, тому кошти користувачів не знаходяться під загрозою.
Інструмент було запущено на наборі даних 1,873,720 4 22, деталізовано вище. Тестування всіх адрес і обчислення приватних ключів уразливих облікових записів зайняло XNUMX хвилини XNUMX секунди, тому це дуже дешево.
За допомогою цього списку вразливих приватних ключів можна перерахувати всі відповідні адреси, їхні баланси та, очевидно, вичерпати їх… Під час наших розслідувань близько 30 мільйонів доларів опинилися під загрозою в певний момент, але ми не відстежували всі ланцюжки та токени протягом тривалого часу. .
Санація
2022, 17 листопада
Binance повідомили про вразливість за допомогою їх Програма баунти 2022, 17 листопада.
Щоб підтвердити вразливість, Binance надіслав нам 3 адреси та попросив надати мнемоніку:
Чи можете ви спробувати запустити свій інструмент і надати мнемоніку для цих 3 адрес?
Wallet 1 – 0xdf6D9547e163D5E7eafBe2FeB24Bfa12A4C913C0
Wallet 2 – 0xE1E0580cb5eA0c0FD034FF2cdfc872ce4493676C
Wallet 3 – 0x02b2Ae981b138F066344774A2AD75225A046c377
Спасибо!
З найкращими побажаннями.
Після того, як усі можливі адреси попередньо обчислено, отримати мнемоніку з адреси так само просто, як пошук у таблиці з 4 мільярдами записів. Три мнемоніки було отримано за 0.2 с:
2022, 21 листопада
Через кілька днів, 21 листопада, команда Trustwallet публічно здійснені на Github виправлення, що дозволяє уникнути генерації нових дефектних насіння. Ми дуже хвилювалися, що хтось це помітить і скористається вразливістю.
2022, листопад
Команда Trustwallet оновила додаток, щоб попередити своїх користувачів, запобігти створенню нових помилкових вихідних даних і видалила потоки отримання.
Звідти ми стежили за ситуацією та коштами під загрозою. Лише через кілька днів після випуску цих вразливих гаманців близько 30 мільйонів доларів опинилися під загрозою.
2023, березень
Команда Trustwallet надала нам найвищу винагороду, яку вони пропонують: 100 тис. доларів США
2023, 22 квітня
Після кількох місяців очікування, поки користувачі перенесуть свої кошти, команда Trustwallet розкрила вразливість і написала посмертний. На даний момент ще є гаманці з рештою коштів, які можна вкрасти (~100 тис. доларів). Trust Wallet пообіцяв відшкодування вкрадених коштів.
Висновок
Ця вразливість ілюструє найгірший сценарій криптографічної помилки – облікові записи скомпрометовані назавжди.
Створення якісної випадковості є складним завданням. Пристрої Ledger покладаються на спеціальну кремнієву логіку в наших сертифікованих чіпах смарт-карт, які протягом останніх 40 років були золотим стандартом безпечних індустрій, щоб гарантувати високу якість випадковості та захист від несанкціонованого доступу.
Враховуючи складність зв’язку з власниками цих облікових записів і можливість використовувати ці скомпрометовані облікові записи на будь-якому різному програмному та апаратному забезпеченні гаманців, TrustWallet виконав досить хорошу роботу, зменшивши ризик для своїх користувачів.
У (дуже) (найближчому) майбутньому ймовірно, що боти боротимуться за те, щоб першими викрасти кошти, розміщені на цих адресах, подібно до що сталося з мозковими гаманцями в минулому.
Особлива подяка Жану-Батисту Бедруну за порятунок світу. Лише через кілька днів після випуску розширення Trust Wallet майже 30 мільйонів доларів опинилися під загрозою. Кошмарний сценарій міг статися, якби зловмисник знайшов уразливість через пару місяців.
Під час нашого дослідження ми також помітили, що кілька адрес були вразливими, хоча вони були згенеровані задовго до випуску Trust Wallet. Ймовірно, це означає, що ця вразливість існує в деяких інших реалізаціях гаманця, що викликає стурбованість...
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoAiStream. Web3 Data Intelligence. Розширення знань. Доступ тут.
- Карбування майбутнього з Адріенн Ешлі. Доступ тут.
- Купуйте та продавайте акції компаній, які вийшли на IPO, за допомогою PREIPO®. Доступ тут.
- джерело: https://www.ledger.com/blog/funds-of-every-wallet-created-with-the-trust-wallet-browser-extension-could-have-been-stolen
- : має
- :є
- : ні
- $UP
- 1
- 12
- 13
- 14
- 15%
- 2022
- 23
- 24
- 30
- 39
- 40
- 49
- 8
- a
- Здатний
- вище
- доступ
- За
- рахунки
- Рахунки
- Achieve
- насправді
- доданий
- доповнення
- адреса
- адреси
- після
- знову
- ВСІ
- дозволяти
- Дозволити
- дозволяє
- вже
- Також
- an
- та
- чоловіча
- оголошений
- Оголошення
- Інший
- будь-який
- додаток
- застосування
- Програми (DApps)
- додатка
- квітня
- ЕСТЬ
- навколо
- стаття
- AS
- Активи
- асоційований
- At
- атака
- автор
- доступний
- AVAX
- уникнути
- уникати
- уникає
- резервна копія
- поганий
- Balance
- баланси
- заснований
- Основи
- BE
- було
- перед тим
- буття
- нижче
- Краще
- між
- Великий
- найбільший
- Мільярд
- бінанду
- Смарт ланцюжок Binance
- Сигнал
- Блокувати
- blockchain
- блокчейни
- блоки
- НББ
- боти
- щедрість
- Brain
- фірмова
- Перерва
- браузер
- браузери
- груба сила
- BSC
- буфера
- Помилка
- але
- by
- call
- Виклики
- CAN
- кандидат
- не може
- випадок
- Сертифікований
- ланцюг
- ланцюга
- дешево
- перевірка
- дитина
- Чіпси
- Chrome
- очевидно
- код
- загальний
- конкурент
- складність
- Компрометація
- обчислення
- обчислення
- обчислення
- комп'ютер
- обчислення
- підтвердити
- Наслідки
- беручи до уваги
- містить
- контрактів
- Перетворення
- конвертувати
- перероблений
- Core
- виправити
- Відповідний
- Коштувати
- може
- Пара
- курс
- центральний процесор
- створювати
- створений
- створює
- критичний
- Крос-платформна
- крипто
- Крипто-екосистема
- Крипто гаманець
- криптовалюта
- криптографічні
- криптографія
- виготовлений на замовлення
- DApps
- дані
- Database
- день
- Днів
- Децентралізований
- Децентралізовані програми
- присвячених
- певний
- демонструвати
- депонований
- Отриманий
- описаний
- Незважаючи на
- деталь
- докладно
- деталі
- виявлено
- розвиненою
- пристрій
- прилади
- DID
- різниця
- різний
- важкий
- трудність
- цифровий
- Цифрові активи
- безпосередньо
- збентежений
- відкритий
- розподіл
- do
- час простою
- дюжина
- виснажувати
- дублікати
- під час
- кожен
- легше
- легко
- легко
- екосистема
- вбудований
- англійська
- досить
- забезпечувати
- запис
- середовищах
- ERC-20
- оцінити
- ETH
- Ефіріума
- Блокчейн Ethereum
- Навіть
- Кожен
- приклад
- виключно
- існуючий
- існує
- дорогий
- Пояснювати
- пояснені
- Експлуатувати
- розширення
- витяг
- зазнає невдачі
- знайомий
- ШВИДКО
- Улюблений
- особливість
- кілька
- боротися
- філе
- заповнений
- остаточний
- фінансовий
- фінансова свобода
- кінець
- Перший
- виправляти
- недоліки
- Потоки
- після
- для
- Примусово
- назавжди
- На щастя
- знайдений
- Freedom
- від
- функція
- функціональність
- Функції
- засоби
- майбутнє
- шлюз
- збирати
- в цілому
- породжувати
- генерується
- породжує
- покоління
- generator
- отримати
- GitHub
- золото
- Золотий Стандарт
- добре
- Графічні процесори
- надається
- гарантувати
- зламати
- було
- Ручки
- сталося
- Жорсткий
- апаратні засоби
- Ключниці для обладнання
- мішанина
- Мати
- отже
- тут
- ієрархія
- Високий
- найвищий
- ГОДИННИК
- Як
- Однак
- HTTPS
- сто
- i
- ідея
- однаковий
- if
- ілюструє
- негайно
- Impact
- реалізація
- реалізовані
- implements
- важливо
- неможливе
- in
- неймовірно
- промисловості
- Infinity
- інформація
- початковий
- вхід
- натхненний
- екземпляр
- взаємодія
- Інтерфейси
- перетин
- в
- Дослідження
- iOS
- IT
- ітерація
- ітерації
- ЙОГО
- робота
- просто
- тримати
- ключ
- ключі
- Знати
- Знання
- останній
- пізніше
- останній
- Веде за собою
- Гросбух
- залишити
- менше
- важелі
- бібліотека
- як
- Ймовірно
- МЕЖА
- Linux
- список
- локально
- логіка
- Довго
- багато часу
- довгоочікуваний
- пошук
- made
- зробити
- РОБОТИ
- багато
- відображення
- майстер
- матч
- матеріал
- Matic
- макс-ширина
- Може..
- засоби
- Мемпул
- MetaMask
- метод
- мігрувати
- мільйона
- мільйони
- хвилин
- протокол
- мнемоніка
- Модулі
- Модулі
- монітор
- контрольований
- місяців
- більше
- Більше того
- найбільш
- багато
- багатоланцюгові
- повинен
- my
- Близько
- необхідно
- Необхідність
- потреби
- ніколи
- Нові
- наступний
- немає
- вузол
- Node.js
- вузли
- нормальний
- особливо
- Зверніть увагу..
- Листопад
- зараз
- номер
- номера
- Nvidia
- отримувати
- сталося
- of
- пропонувати
- запропонований
- on
- ONE
- тільки
- операційний
- операційна система
- or
- Інше
- наші
- вихід
- над
- загальний
- Власники
- пар
- Паралельні
- параметри
- частина
- Минуле
- шлях
- виконувати
- Платформи
- plato
- Інформація про дані Платона
- PlatoData
- будь ласка
- точка
- можливість
- це можливо
- пошта
- потужний
- pr
- практика
- точно
- представити
- досить
- запобігати
- раніше
- Принципи
- приватний
- Private Key
- Приватні ключі
- ймовірно
- Проблема
- процес
- Product
- проект
- пообіцяв
- властивості
- захист
- забезпечувати
- за умови
- громадськість
- публічний ключ
- цілей
- Python
- якість
- швидко
- випадковий
- випадковість
- ставка
- досягати
- реальний
- реального часу
- отримати
- отримання
- нещодавно
- зниження
- що стосується
- пов'язаний
- звільнити
- покладатися
- решті
- Вилучено
- Повідомляється
- запросити
- вимагати
- Вимагається
- Опір
- результат
- в результаті
- повертати
- Risk
- прогін
- біг
- сейф
- то ж
- зберегти
- економія
- сценарій
- схема
- Вчені
- Пошук
- безпечний
- безпеку
- побачити
- насіння
- Насіння
- здається
- відправника
- посланий
- Послідовність
- кілька
- поділ
- Короткий
- Повинен
- Кремній
- аналогічний
- простий
- з
- один
- ситуація
- Розмір
- сповільнювати
- менше
- розумний
- Розумна ланцюг
- So
- Софтвер
- SOL
- деякі
- Хтось
- Скоро
- Source
- Простір
- розмова
- спеціалізований
- конкретний
- швидкість
- розкол
- Стажування
- standard
- стандартів
- старт
- Крок
- заходи
- Як і раніше
- вкрали
- викрадені кошти
- зберігати
- зберігати
- сила
- сильний
- такі
- Підтримуючий
- передбачуваний
- перемикач
- система
- таблиця
- снасті
- Приймати
- приймає
- Мета
- цілі
- Завдання
- команда
- тест
- Тестування
- Тести
- ніж
- Дякую
- Що
- Команда
- Основи
- світ
- їх
- Їх
- потім
- Там.
- Ці
- вони
- це
- ті
- тисячі
- три
- через
- час
- times
- до
- сьогодні
- Жетони
- прийняли
- інструмент
- тема
- Усього:
- Transactions
- Перетворення
- Перетворення
- сейф
- Довіряйте
- Кошик довіри
- намагатися
- два
- TWT
- повсюдний
- створеного
- унікальні адреси
- оновлений
- us
- використання
- використовуваний
- користувач
- кошти користувачів
- користувачі
- використання
- зазвичай
- значення
- версія
- дуже
- вразливість
- Вразливий
- Очікування
- Wallet
- Гаманці
- було
- шлях..
- we
- Web3
- тижня
- були
- коли
- який
- в той час як
- всі
- чий
- широко
- волі
- з
- без
- слово
- слова
- світ
- хвилювалися
- найгірше
- б
- письмовий
- років
- ви
- вашу
- зефірнет