BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR

Suy nghĩ sau khi viết kịch bản Celestia: Cosmos còn nhiều thiếu sót

Đọc bài viết này mất 15 phút
Kinh nghiệm của tôi vào đêm 17 tháng 12 chỉ gói gọn trong một câu: Celestia chắc chắn không có biện pháp đối phó với lưu lượng truy cập quy mô lớn vào thời điểm đó và nó cũng rất chiếu lệ trong cấu hình nút RPC.
Tiêu đề gốc: "Suy ngẫm sau khi viết kịch bản Celestia: Rất nhiều công việc trong Cosmos đã không được thực hiện tốt"
Tác giả gốc: Wuyue, Geek Web3


Ngày 17 tháng 12, tôi biết Celestia sắp có dòng chữ CIAS, nên tôi dự định viết kịch bản để xóa dòng chữ tạm thời. Bây giờ, tôi có rất nhiều điều để phàn nàn về Celestia và hệ sinh thái Cosmos nơi nó tồn tại, cũng như chính sự kiện CIAS.


Trên thực tế, không khó để viết một kịch bản đánh dấu dòng chữ. Nó chủ yếu được chia thành ba mô-đun: xây dựng ví, kết nối các nút và giao dịch tràn ngập. Hai bước đầu tiên chỉ cần có trong tài liệu dành cho nhà phát triển của chuỗi công khai mục tiêu để nhanh chóng triển khai chúng.


Lần đầu tiên tôi vào trang web chính thức của Celestia và Github để xem xung quanh. Không có trường hợp sử dụng nào để các nhà phát triển xây dựng kịch bản người dùng. Chúng chủ yếu là các tài liệu liên quan đến nút. hoạt động và như vậy. Tất nhiên, điều này có thể hiểu được vìCelestia không phải là một blockchain ToC. Celestia chỉ đề cập ở một nơi kín đáo rằng nó dựa trên Cosmos và có thể tương tác với mạng chính của nó bằng CosmJS.


Vì vậy tôi đã đến thẳng CosmJS. Nhưng tôi có thể nói gì về Cosmos? Ngay cả tài liệu cũng không tốt. Tôi đã truy cập trực tiếp vào Github. Nói chung, loại JS này sẽ có các trường hợp sử dụng trên Github. Nhưng hướng dẫn của nó bị ẩn trong một trang phụ và sau khi nhấp vào, hãy làm theo cấu hình của nó và cuối cùng báo lỗi.


Lỗi này không phải do vấn đề môi trường mà là do phần hướng dẫn của nó chưa được cập nhật phiên bản hướng dẫn Thường là tên lớp. Không thể đợi được nữa. Tôi đã chuyển đổi phiên bản thư viện npm trên phiên bản hướng dẫn cũ, nhưng một số trường hợp sử dụng vẫn không hoạt động nên tôi đã bỏ cuộc sau một thời gian loay hoay.


Vì vậy, tôi đã tìm lại trên Google và tôi thấy rằng tài liệu chính xác nằm trên trang web chính thức thay vì Github, điều này hơi vô lý. Một lần nữa, sẽ rất tuyệt nếu cập nhật hướng dẫn readme của Github để trỏ đến trang web chính thức phải không?


Sau khi nhận được hướng dẫn chính xác, tôi nhanh chóng hoàn thành hai bước xây dựng ví và kết nối nút, đồng thời bắt đầu xây dựng mô-đun giao dịch lũ lụt. Mô-đun này chỉ đơn giản là một vòng lặp for xử lý chữ ký giao dịch + yêu cầu mạng. Nhưng chúng tôi gặp phải một số vấn đề ở đây:


Tất cả các phương thức giao dịch trong thư viện CosmJS chỉ hiển thị các tham số của chính giao dịch đó chứ không hiển thị trình tự của nó (trình tự tương tự như The nonce in Ethereum là một bộ đếm giao dịch được thiết lập để ngăn chặn các cuộc tấn công lặp lại Sau khi mỗi giao dịch được phát hành, số nonce và trình tự sẽ tự động +1).



Trình tự thực sự có được bằng cách kết nối với mạng khi ký (chainId, v.v.). ), bạn cần phải đi qua sendTokens() -> signAndBroadCast -> sign(). Việc vào mạng để yêu cầu và chờ trả lại mỗi khi bạn gửi giao dịch sẽ ảnh hưởng đến tốc độ xử lý và tăng các yêu cầu mạng vô dụng, điều này không tốt cho việc tràn ngập Tất nhiên là như vậy. cũng không tốt cho việc tăng tốc/hủy giao dịch.



Chúng tôi có thể xem lại phương thức gửi giao dịch trong Ethereum Web3JS, trong đó bạn Bạn có thể tự mình chỉ định nonce. Nhưng không phải trong CosmJS. Tôi vẫn nghĩ rằng thiết kế của Ethereum hợp lý hơn nhiều. Bạn có thể trực tiếp chỉ định thời điểm hủy/tăng tốc giao dịch. giao dịch tất nhiên cũng có thể được sử dụng trong cuộc tấn công tràn ngập của chúng tôi.



Do hạn chế về thời gian nên có một số thư viện khác cần được sửa đổi ., Tôi quyết định không sử dụng Proxy để nối và viết lại nó mà trực tiếp sửa đổi nó trong thư viện CosmJS.


Ý tưởng đằng sau tập lệnh kích hoạt giao dịch tràn ngập là liên tục bắt đầu các giao dịch và tạo chữ ký thông qua vòng lặp for, gửi chúng đến Nút RPC và bắt đầu Sau một giao dịch, trình tự/nonce là +1 Sau khi 20 giao dịch được bắt đầu, chu kỳ sẽ bắt đầu lại.


Trình tự chỉ được kéo về cục bộ trước khi bắt đầu mỗi chu kỳ ngập lụt Không cần thiết phải kéo nó về cục bộ sau mỗi giao dịch như lần trước. mặc định của thư viện CosmJS. Nút yêu cầu lại trình tự. ChainId được viết dưới dạng một giá trị cố định, do đó không cần phải yêu cầu nút nhiều lần. (Ghi chú của biên tập viên: Số vòng lặp ở đây được đặt tương đối thấp, rõ ràng tác giả không bạo lực đến thế. Khi ai đó đang viết dòng chữ Conflux, anh ta đã từng thay đổi số vòng lặp trong mỗi chu kỳ thành 1000 và gần 200 giao dịch khác nhau được gửi đi mỗi lần phút.)



Cuối cùng, tôi đã có được một tập lệnh Celestia đơn giản và CIAS đã rút cáp mạng vào đêm tháng 12 đó Ngày 17 Cuối cùng, tôi đã thử nghiệm ngắn gọn kịch bản và gửi đi hàng trăm giao dịch. Tôi đã bắn trúng một vài CIAS (có thể là 1800) sau khi vụ bắn CIAS tiếp tục vào đầu giờ ngày 19 tháng 12. Nhưng vẫn còn những điều khác cần phàn nàn:


·Vào ngày 17 tháng 12, nút RPC của Celestia đã gặp sự cố dữ liệu nghiêm trọng Vấn đề không đồng bộ hóaĐộ cao khối của các nút RPC khác nhau rất khác nhau. Khi bạn yêu cầu Trình tự tài khoản của chính mình từ nút đó, kết quả trả về về cơ bản không nhất quán, điều này rất khó khăn. Celestia block explorer cũng không có sẵn, điều này về cơ bản là gây nhầm lẫn. Có thể nói rằng mặc dù mạng Celestia không ngừng hoạt động vào thời điểm này và vẫn có thể tạo ra các khối nhưng ước tính nó đã đạt đến giới hạn.


·Ngày hôm đó, quan chức bia ký của CIAS thấy Celestia không thể chịu đựng được nữa nên tạm thời tuyên bố đúc bia ký sau độ cao của khối 48460. Mọi giao dịch đều không hợp lệ và có xu hướng "trao đổi rút cáp mạng". Và trang web riêng của CIAS đã ngừng hoạt động.



·Một số người cho rằng giao thức đồng thuận có nguồn gốc từ chuỗi Cosmos là dựa trên Về sự nhất trí của khối, cơ quan này đã làm rất kém và không có bình luận gì về việc này, nhưng rõ ràng mục đích của việc CIAS rút cáp mạng đêm qua là rất hấp dẫn.


·Ngày 17 tháng 12, thật khó để bạn chọn được nút đồng bộ hóa dữ liệu nhanh nhất,vì hầu như tất cả các nút RPC đều đông đúc, thường xuyên. không phản hồi. Sau đó tôi đã cố gắng viết một số mã để tự động chuyển đổi các nút.


·Bản thân định dạng dòng chữ của CIAS không nhất quán với các dòng chữ khác. Ví dụ: trong json của brc-20, tất cả các số đều là chuỗi, trong khi cia- 20 Bên trong là một con số.



·Giá của các bản khắc của CIAS đã tăng vọt đêm qua ở mức cao nhất Với mức giá 1,5 ~ 2U mỗi mảnh, một số người thậm chí còn trả 80U để có được một dòng chữ. Mức phí cao như vậy phản ánh TPS hạn chế Người sáng lập Celestia tuyên bố rằng họ có thể xử lý 10 nghìn giao dịch mỗi giây, điều này rõ ràng là vô nghĩa.



Nhìn chung trải nghiệm trong đêm 17/12 gói gọn trong một câu:Celestia Nó chắc chắn không được chuẩn bị để đối phó với lưu lượng truy cập quy mô lớn và nó cũng rất chiếu lệ trong việc định cấu hình các nút RPC (thật khó để tưởng tượng rằng hàng chục nút RPC có thể bị phá hủy trong một giờ).


Tình hình tốt hơn nhiều vào đêm 19. Ngoài giá xăng tăng vọt, các mặt khác tôi không gặp vấn đề gì lớn. Chỉ có thể nói Là một mạng DA chuyên phân phối dữ liệu đến các nút nhẹ, Celestia đã tạm thời vượt qua được thử nghiệm, nhưng tôi không biết liệu có bất kỳ cạm bẫy nào khác trong tương lai hay không.


Liên kết gốc


Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi