Tại 0xArc, chúng tôi cần có mọi dữ liệu, trên mọi chuỗi, tại mọi thời điểm (quá khứ, hiện tại và tương lai). Do đó, các kho dữ liệu của chúng tôi có kích thước hàng trăm terabyte. Để có được dữ liệu này, chúng tôi đã thực hiện hàng tỷ cuộc gọi RPC và tiếp tục thực hiện hàng trăm triệu cuộc gọi mỗi tháng trên nhiều mạng Blockchain. Tuy nhiên, chúng tôi nhận thấy, trung bình, các cuộc gọi RPC đến các nút hoạt động khoảng ~80% thời gian, tùy thuộc vào điều kiện với sự biến động giá 10 lần! Bài viết này chia sẻ một số phát hiện của chúng tôi và hy vọng sẽ hữu ích cho cộng đồng còn lại.
Cách thức hoạt động của các nút
Trước khi nói về các con số, điều quan trọng là phải hiểu ngành công nghiệp nút trong tiền điện tử hoạt động như thế nào để chúng ta có thể hiểu đúng những gì đang được thảo luận. Mặc dù sẽ tuyệt vời nếu mọi người đều chạy các nút của riêng họ và chúng ta tuân theo các nguyên tắc phi tập trung hoàn hảo, nhưng thực tế là chạy một nút là phức tạp và yêu cầu chuyên môn. Do đó, chúng tôi ủy quyền trách nhiệm này cho một nhà cung cấp nút. Sơ đồ này dựa trên cách ngành công nghiệp nút thương mại hoạt động trong tiền điện tử vào năm 2024.
Ở mức độ cao, bạn có các nút đầy đủ hoặc lưu trữ được chạy trên một loại triển khai nút cụ thể (geth/reth/erigon). Các nút này được một nhà cung cấp như Alchemy hoặc Quicknode lưu trữ cho mọi mạng Blockchain mà họ hỗ trợ. Bạn, với tư cách là người tiêu dùng RPC, truy cập tất cả những thứ này ở cuối dây.
Lựa chọn nút tối ưu
Khi bạn phân tích chuỗi logic này, bạn có 4 chiều chính sẽ ảnh hưởng đáng kể đến hiệu suất:
Chuỗi bạn đang thực hiện các yêu cầu RPC: mạng nút của mỗi chuỗi có hành vi khác nhau và có mức độ hoạt động khác nhau.
Phương thức bạn đang gọi: điều này sẽ phụ thuộc vào việc bạn thực hiện các cuộc gọi nút đầy đủ hay lưu trữ và triển khai máy khách nút.
Nhà cung cấp mà bạn đang sử dụng: thực thể lưu trữ các nút để bạn truy cập.
Khi bạn gọi nút: hiệu suất nút thay đổi theo thời gian trên tất cả các chiều trên, không phải là không đổi.
Có thể rất khó để thiết lập và hiểu dữ liệu này. Tuy nhiên, tại 0xArc, đây là công việc của chúng tôi khi chúng tôi thực hiện hàng tỷ cuộc gọi RPC và theo dõi cẩn thận hiệu suất của mọi thứ chúng tôi chạm vào. Hiệu suất, độ tin cậy và chi phí là quan trọng hàng đầu đối với chúng tôi. Chúng tôi biết khi một chuỗi bị ngừng hoạt động hoặc khi một nhà cung cấp RPC bị ngừng hoạt động trước hầu hết các thành viên thị trường. Đây là bối cảnh của dữ liệu mà chúng tôi sẽ xem xét trong bài viết này:
Khoảng thời gian: 1 tháng 8 năm 2024 - 20 tháng 10 năm 2024
Yêu cầu: 1.492.103.937
Thành công: 1.171.952.063
Thất bại: 320.793.140
Tỷ lệ thành công trung bình: 78,5%
Để hiểu đúng những gì đang xảy ra với hơn 1 tỷ dòng dữ liệu, chúng tôi sẽ phải cắt và phân tích nó theo nhiều chiều. May mắn thay, chúng tôi biết những chiều đó là gì thông qua các điểm tôi đã nêu trên.
Phần còn lại của bài viết sẽ cho thấy những trường hợp duy nhất về cách hiệu suất có thể thay đổi theo từng chiều này theo cách không thể dự đoán được.
Hiệu suất chuỗi
Giả sử bạn đang xây dựng một ứng dụng liên chuỗi dựa trên giao tiếp với các mạng khác nhau. Hiệu suất của nút của bạn sẽ thay đổi đáng kể dựa trên chuỗi bạn đang gọi và thời điểm bạn đang gọi nó.
Biểu đồ đầu tiên này cho thấy tỷ lệ thành công trung bình hàng ngày cho mỗi chuỗi được tổng hợp trên tất cả các nhà cung cấp và phương thức. Như bạn có thể thấy từ biểu đồ bên dưới, tỷ lệ thành công trung bình bạn nhận được từ các chuỗi thay đổi đáng kể gần như mỗi tháng. Chúng tôi không chắc tại sao điều này có thể xảy ra, nhưng chúng tôi có thể thấy rằng các cuộc gọi Polygon thành công trung bình 60% thời gian vào tháng 8 nhưng sau đó đã tăng lên 80%+ trong những tuần gần đây.
Một điều quan trọng cần lưu ý khi đánh giá dữ liệu này là không phải: "Polygon là một chuỗi tệ và các cuộc gọi RPC chỉ thành công 70% thời gian trung bình". Đây là tỷ lệ thành công trung bình trên tất cả các chuỗi, tất cả các nhà cung cấp, tất cả các phương thức trong khoảng thời gian ~2,5 tháng. Khi chúng tôi đào sâu vào bất kỳ chiều nào trong số này, dữ liệu thay đổi đáng kể.
Đây là cùng một biểu đồ nhưng cho một khoảng thời gian 17 ngày và được lọc theo một nhà cung cấp duy nhất. Như bạn có thể thấy, biểu đồ trở nên mượt mà hơn nhiều và khác với tổng hợp chung.
Nếu chúng tôi thấy một nhà cung cấp duy nhất đang hoạt động tốt, điều gì ngăn chúng tôi tập trung vào họ mọi lúc? Phần tiếp theo sẽ giải quyết câu hỏi đó một cách chi tiết hơn.
Hiệu suất của nhà cung cấp
Biểu đồ tiếp theo tôi đã đơn giản hóa vì tôi muốn tránh có quá nhiều đường. Mỗi đường này đại diện cho một mạng nhà cung cấp RPC chính và tỷ lệ thành công của họ được tổng hợp trên tất cả các chuỗi và phương thức. Như bạn có thể thấy từ biểu đồ bên dưới, nhà cung cấp màu cam là một trong những nhà cung cấp đáng tin cậy nhất so với những người khác và sự khác biệt là khá lớn!
Một lần nữa, điều hiển nhiên có thể chỉ là "sử dụng nhà cung cấp màu cam" vì nó hoạt động tốt. Tuy nhiên, điều đó thực sự không hoạt động. Khi chúng tôi xem hiệu suất của nhà cung cấp màu cam chỉ đối với Ethereum, các phương thức nút lưu trữ có thể giảm hiệu suất một cách đáng kể. Như bạn có thể thấy trong gần một tháng, các nút lưu trữ hoạt động rất tệ trên những gì được coi là "nhà cung cấp tốt nhất" trong ví dụ trên.
Để làm cho vấn đề càng trở nên phức tạp hơn, giá cả cho mỗi nhà cung cấp thay đổi theo từng chuỗi và phương pháp. Những khác biệt này có thể lên đến 10 lần chi phí cho mỗi phương pháp/chuỗi. Đột nhiên, một sự khác biệt 10-20% về hiệu suất lại khiến bạn phải trả nhiều hơn! Mỗi nhà cung cấp muốn khóa bạn vào một kế hoạch hàng năm hoặc một hạn ngạch hàng tháng có thêm chi phí. Gần như không có nhà cung cấp nào dựa hoàn toàn trên mức sử dụng, điều này có nghĩa là bạn buộc phải đặt cược vào một nhà cung cấp duy nhất — mà không có bất kỳ dữ liệu nào! Những gì được gọi là "dịch vụ đơn giản" ban đầu, thực sự có sự khác biệt lớn về hiệu suất khi được kiểm tra kỹ lưỡng.
Nếu bạn đang trả tiền cho các RPC hoặc đang suy nghĩ về độ tin cậy của cơ sở hạ tầng của mình, hãy cùng tìm hiểu cách để tối đa hóa hiệu suất trên các chuỗi và nhà cung cấp. Hãy liên hệ với chúng tôi để thảo luận về những phát hiện của chúng tôi hoặc để xem chúng tôi có thể giúp bạn như thế nào.
Hiện đang trả tiền cho các RPC và muốn tìm hiểu thêm về cách cải thiện độ tin cậy của bạn
Là một nhà cung cấp RPC và muốn biết các nút của bạn hoạt động như thế nào
Đang nghĩ về việc đăng ký sử dụng dịch vụ RPC và muốn nhận một số lời khuyên
Hãy liên hệ trực tiếp với tôi từ email này hoặc gửi email cho tôi tại k@0xarc.io để chúng ta có thể sắp xếp thời gian để trò chuyện.