Написавши писемність Celestia і надрукувавши напис, він поскаржився: базові навички Космосу не є твердими

Автор: Вуюе, Geek Web3

17 грудня я дізнався, що напис CIAS збираються опублікувати на Celestia, і планував тимчасово попрацювати над написанням сценарію для чищення напису. Тепер мені є куди скаржитися на Celestia та її екосистему Cosmos, а також на саму подію CIAS.

Насправді написати скрипт для брашування написів нескладно, який в основному ділиться на три модулі: побудова гаманця, сполучні вузли та транзакції флуду. **Перші два кроки потрібно знайти лише в документації розробника цільового публічного ланцюга, щоб знайти швидку реалізацію.

Спочатку я зайшов на офіційний сайт Celestia та Github, щоб подивитися, і там немає варіантів використання розробниками сценаріїв користувача, в основному роботи вузлів та іншої пов’язаної документації. Звичайно, це зрозуміло, адже Celestia не є ToC блокчейном. Celestia просто згадує в невідомому місці, що вона заснована на Cosmos і що можна взаємодіяти з її основною мережею з CosmJS.

Тому я відразу перейшов до CosmJS. А як щодо Cosmos, він навіть не дуже добре розбирається в документації. **Я перейшов безпосередньо на Github, і, згідно зі здоровим глуздом, загалом цей тип JS матиме сценарій використання на Github. Але його підручник прихований на другорядній сторінці.,І після натискання на нього.,Дотримуйтесь його конфігурації, щоб зробити прохід.,Нарешті, повідомляється про помилку.。

**Ця помилка не є екологічною проблемою.,Це тому, що його підручник не був оновлений навчальною версією.**Часто ім’я цього класу змінюється, і це не можна налаштувати тощо.。 Я перейшов на версію бібліотеки npm на старій навчальній версії, і все ще є деякі варіанти використання, які не працюють, тому я здався після того, як деякий час кидав.

Тому я ще раз погуглив, і виявилося, що правильна документація була на офіційному сайті, а не на Github, що було трохи нелогічно. **Знову ж таки, чи не добре оновити посібник з readme на Github на офіційному веб-сайті?

Отримавши правильну інструкцію, я швидко виконав два кроки зі створення гаманця та підключення вузлів і почав створювати модуль транзакції флуду. Простіше кажучи, цей модуль є циклом for, який обробляє підписи транзакцій + мережеві запити. Але ось деякі проблеми:

Всі методи транзакцій в бібліотеці CosmJS виставляють тільки параметри самої транзакції, але її послідовність не піддається впливу (послідовність аналогічна nonce в майстерні ETH, який є лічильником транзакцій, встановленим для запобігання атакам повтору, і після кожної транзакції nonce і послідовність автоматично стають +1).

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

Послідовність насправді полягає в тому, що він підключається до мережі, щоб отримати його під час підпису (chainId тощо) під час підпису, і він повинен пройти через sendTokens() -> signAndBroadCast -> sign(). **Звернення до мережі для запиту та очікування повернення кожного разу, коли подається транзакція, вплине на швидкість роботи щітки, а також збільшить кількість непотрібних мережевих запитів, що не добре для флуду, і, звичайно, не сприяє прискоренню/скасуванню транзакції. **

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

Давайте розглянемо ETH метод відправки транзакцій Web3JS, де ви можете вказати nonce самостійно. Але не в CosmJS. Я все ще вважаю, що дизайн ETH Ікла набагато розумніший, ви можете безпосередньо вказати nonce для скасування/прискорення транзакції, якщо транзакція застрягла, ви можете налаштувати nonce з тією ж транзакцією, щоб замінити застряглу транзакцію, звичайно, це також можна використовувати для нашої атаки флуду.

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

У зв’язку з обмеженням у часі, в бібліотеці було кілька інших функцій, які потрібно було змінити, ** Я вирішив не використовувати Proxy для дечекування переписування, а модифікувати його безпосередньо в бібліотеці CosmJS. **

Ідея скрипту для запуску транзакції флуду полягає в тому, щоб безперервно ініціювати транзакцію через цикл for і генерувати підпис, відправляти його на вузол RPC, і після ініціювання транзакції sequence/nonce буде +1, а після ініціювання 20 транзакцій цикл буде повторно повторюватися.

Послідовності витягуються лише локально перед початком кожного циклу флуду, і немає необхідності повторно запитувати послідовності від вузлів після кожної транзакції, як це за замовчуванням у бібліотеці CosmJS. ChainId, з іншого боку, записується як фіксоване значення, і його не потрібно повторно запитувати у вузла. (Примітка редактора: кількість петель тут встановлена відносно невелика, і видно, що автор не такий жорстокий.) Хтось, набираючи напис Conflux, змінив кількість циклів на 1000, висилаючи близько 200 різних транзакцій за хвилину)

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

Врешті-решт, у мене з’явився рудиментарний скрипт Celestia, який я ненадовго протестував після того, як CIAS відключився в ніч на 17 грудня, і розіслав сотні транзакцій. Після того, як CIAS відновився рано вранці 19 грудня, я досяг деякого CIAS (близько 1800). Але є й інші речі, на які варто скаржитися:**

  • 17 грудня у вузла RPC Celestia виникла серйозна проблема з розсинхронізацією даних, висота блоків різних вузлів RPC сильно відрізняється, і коли ви запитуєте вузол до послідовності вашого облікового запису, результат повернення в основному суперечливий, що дуже болісно. Провідник блоків Celestia також недоступний, і він в основному сліпий. Можна сказати, що на даний момент, хоча мережа Celestia не працює і все ще може виробляти блоки, за оцінками, це майже до межі.
  • У той же день представник напису CIAS побачив, що Celestia ось-ось не зможе це витримати, і тимчасово оголосив, що всі транзакції карбування написів на ланцюжку після висоти блоку 48460 недійсні, що було досить тенденцією «від’єднання мережевого кабелю біржі». А власний сайт CAS зазнав краху.

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

  • Немає коментарів щодо сприйняття, що нативний протокол консенсусу Cosmos chain погано справляється з консенсусом щодо блоків, але очевидно, що мета CIAS витягнути мережевий кабель минулої ночі інтригує.
  • 17 грудня важко вибрати вузол з найшвидшими синхронізованими даними, тому що майже всі вузли RPC переповнені і часто не відповідають. Пізніше я спробував написати якийсь код, який автоматично перемикає вузли.
  • Формат напису в самому CIAS не зовсім узгоджується з іншими написами, наприклад, в json brc-20 всі цифри є рядками, в той час як в CIA-20 це число.

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

  • Вартість написів CIAS злетіла до 1,5~2U за напис, коли вона була найвищою минулої ночі, а деякі люди навіть заплатили 80U за напис. Така висока комісія відображає обмежений TPS, а засновник Celestia стверджує, що може обробляти 10 тисяч транзакцій в секунду, що явно нонсенс.

写Celestia脚本打铭文后吐槽:Cosmos基本功不扎实

Загалом, досвід ночі 17 грудня був одним реченням: Celestia точно не була готова мати справу з масштабним трафіком, і це було дуже поверхово з точки зору конфігурації RPC-вузлів (важко уявити, що десятки RPC-вузлів можуть бути підірвані за 1 годину). **

У ніч на 19 число ситуація була набагато кращою, крім стрімкого зростання плати за газ, в інших аспектах великої проблеми не було, можна лише сказати, що Celestia, як мережа DA, що займається розподілом даних на легкі вузли, тимчасово витримала випробування, але я не знаю, чи будуть ще якісь підводні камені в майбутньому.

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
0/400
Немає коментарів
  • Закріпити