Suy nghĩ của tôi sau khi viết kịch bản Celestia: Rất nhiều việc Cosmos chưa được thực hiện tốt

Bài viết này được dịch máy
Xem bản gốc
Tài liệu Github của Cosmos viết chưa tốt, nhiều phần trong thư viện CosmJS chưa được tối ưu, trải nghiệm của mình chưa được mượt mà cho lắm.

Được viết bởi: Wuyue, Geek Web3

Vào ngày 17 tháng 12, tôi biết Celestia sẽ có khắc chữ CIAS, và tôi dự định viết một kịch bản để tạm thời xóa khắc chữ. 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ế, viết kịch bản để đánh dấu khắc chữ không khó, nó chủ yếu được chia thành ba mô-đun: xây dựng ví, kết nối 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 phương pháp.

Lần đầu tiên tôi vào trang web chính thức của Celestia và Github để tìm hiểu, không có trường hợp sử dụng nào để xây dựng kịch bản người dùng cho nhà phát triển, chủ yếu là các tài liệu liên quan đến hoạt động nút, v.v. 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 mainnet của nó bằng CosmJS.

Vì vậy tôi đã truy cập thẳng vào 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 đã trực tiếp truy cập Github, theo lẽ thường, loại JS này nhìn chung 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ụ, 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 hoàn cảnh 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 thì tên của lớp này bị thay đổi và không thể điều chỉnh được, v.v. 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à 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 Github readme để 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 ở đây chúng tôi gặp phải một số vấn đề:

Tất cả phương pháp giao dịch trong thư viện CosmJS chỉ hiển thị các tham số của chính giao dịch đó, nhưng trình tự của nó không bị lộ (trình tự tương tự như nonce trong Ethereum , là 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. Mỗi giao dịch sau khi giao dịch được phát hành , cả nonce và Sequence đều 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.) và nó cần phải đi qua sendTokens() -> signAndBroadCast -> sign(). Vào mạng để yêu cầu và chờ trả lại mỗi khi giao dịch được gửi sẽ ảnh hưởng đến tốc độ quét và tăng các yêu cầu mạng vô dụng, điều này không tốt cho tình trạng ngập lụt và tất nhiên không có lợi cho việc tăng tốc/hủy giao dịch.

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

Vì thời gian rất eo hẹp và có một số chức năng khác trong thư viện cần phải sửa đổi nên tôi quyết định không sử dụng Proxy để hook và viết lại chúng mà sửa đổi chúng trực tiếp trong thư viện CosmJS.

Ý tưởng của 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 và gửi chúng đến nút RPC. Sau khi bắt đầu một giao dịch, chuỗi/nonce sẽ là +1. Sau khi bắt đầu 20 giao dịch , chu kỳ sẽ được lặp lại một lần nữa.

Trình tự chỉ được kéo cục bộ trước khi bắt đầu mỗi chu kỳ lũ lụt, không cần thiết phải yêu cầu lại trình tự từ nút sau mỗi giao dịch như yêu cầu mặc định của thư viện CosmJS. ChainId được viết dưới dạng 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ố chu kỳ ở đâ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 khắc chữ Conflux , anh ta đã từng thay đổi số chu kỳ 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 nhận được một tập lệnh Celestia đơn giản, sau khi CIAS rút cáp mạng vào đêm 17/12, tôi đã thử nghiệm nhanh tập lệnh này và gửi hàng trăm giao dịch. Sau khi CIAS tiếp tục chiến đấu vào sáng sớm ngày 19/12, tôi đã đánh trúng một số CIAS (khoảng 18h00). Nhưng vẫn còn những điều khác để phàn nàn:

  • Vào ngày 17 tháng 12, nút RPC của Celestia đã gặp phải sự cố không đồng bộ hóa dữ liệu nghiêm trọng. Chiều Block Height của 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 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 đau đớ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, 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.
  • Cùng ngày, chính thức của CIAS Khắc chữ nhận thấy Celestia không thể cầm cự được nữa nên tạm thời thông báo rằng tất cả các giao dịch đúc Khắc chữ trên chuỗi sau Block Height 48460 đều không hợp lệ, điều này khá giống với việc " sàn giao dịch 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 thực hiện công việc kém đồng thuận về các khối và họ không bình luận về điều này, nhưng rõ ràng mục đích của việc CIAS rút cáp mạng tối qua là rất hấp dẫn.
  • Vào ngày 17/12, bạn khó có thể chọn được nút đồng bộ dữ liệu nhanh nhất vì hầu như tất cả nút RPC đều đông đúc và thường không phản hồi. Sau đó tôi đã cố gắng viết một số mã để tự động chuyển nút.
  • Bản thân định dạng khắc chữ của CIAS không nhất quán với khắc chữ khác, ví dụ: trong json của brc-20, tất cả các số đều là chuỗi, nhưng trong cia-20 thì đó là một số.

  • Giá của khắc chữ CIAS đêm qua cao nhất, tăng vọt lên 1,5 ~ 2U một chiếc, thậm chí có người trả giá 80U để có được một khắc chữ. Phí xử lý cao như vậy phản ánh TPS hạn chế.Người sáng lập Celestia tuyên bố rằng nó 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 của tôi vào đêm 17/12 có thể tóm tắt trong một câu: Celestia chắc chắn không có biện pháp nào để đối phó với lưu lượng truy cập quy mô lớn vào thời điểm đó và việc cấu hình nút RPC cũng rất chiếu lệ (rất khó để thực hiện). hãy 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 được cải thiện rất nhiều vào đêm ngày 19. Ngoại trừ phí gas tăng vọt, các khía cạnh khác không có vấn đề gì lớn, chỉ có thể nói rằng Celestia, với tư cách là một mạng DA chuyên phân phối dữ liệu đến light node , đã có tạm thời chịu đựng được khảo nghiệm, nhưng không biết sau này còn có cạm bẫy nào khác hay không.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
2
Thêm vào Yêu thích
1
Bình luận