Chúng tôi chạy gần 3.000 Trình xác thực trên mạng thử nghiệm Ethereum 2.0
Lưu ý của biên tập viên: Bài viết này đến từCộng đồng HashQuark (ID: HashQuarkPool), được in lại bởi Odaily với sự cho phép.
Prysm là một triển khai tuyệt vời của ETH2.0 và hiện tại nó là triển khai chạy nhiều nhất trên mạng thử nghiệm Medalla. Prysm áp dụng kiến trúc của Nút chuỗi Beacon + Nút xác thực, cái trước chịu trách nhiệm đồng bộ hóa dữ liệu khối và cái sau chịu trách nhiệm ký các khối và chứng kiến. Vì Nút trình xác thực có thể tải nhiều trình xác thực cùng một lúc, nên để có hiểu biết định tính và định lượng về số lượng trình xác thực mà nó có thể tải và các bước triển khai trình xác thực có liên quan, chúng tôi đã đặc biệt sắp xếp thử nghiệm này.
tiêu đề phụ
Chúng tôi đã sao chép mạng thử nghiệm Medalla, xây dựng Chuỗi Beacon ETH2.0 của riêng HashQuark, tiến hành hai vòng thử nghiệm, tổng cộng 14 trường hợp thử nghiệm và chạy hàng trăm nghìn Trình xác thực. Việc triển khai Prsym rất tuyệt vời.Đối với những người dùng bình thường muốn tham gia Đặt cược Ethereum với một lượng nhỏ ETH (hàng chục đến hàng trăm Trình xác thực), máy chủ đám mây 8G 4 lõi có thể chạy Beacon Chain Node và Trình xác thực một cách trơn tru. các sự cố kỹ thuật gặp phải trong quá trình chạy không thể được giải quyết bởi người dùng thông thường không phải là nhân viên kỹ thuật.
Đối với nhóm khai thác PoS chuyên nghiệp chạy hàng chục nghìn Trình xác thực, cần có cấu hình cao hơn để đảm bảo tỷ lệ khối siêu cao. Tỷ lệ chặn sẽ giảm khi số lượng Trình xác thực tăng lên.
Tiếp theo, chúng tôi sẽ tiến hành vòng thử nghiệm tiếp theo trên mạng thử nghiệm công khai Medalla để gần hơn với môi trường mạng chính, hiện tại chúng tôi có gần 3.000 trình xác nhận đang chạy bình thường trên Medalla, chiếm 5% toàn bộ mạng.
tiêu đề phụ
môi trường thử nghiệm
Đối với việc triển khai máy chủ đám mây được sử dụng trong các thử nghiệm sau đây, chúng tôi chọn mô hình N có mục đích chung và nền tảng CPU là Intel/Broadwell. Hệ thống sử dụng Ubuntu 18.04.2 LTS. phiên bản geth là 1.9.19-ổn định và phiên bản Prysm là v1.0.0-alpha.24.
Giai đoạn đầu tiên của những nỗ lực sơ bộ
tiêu đề phụ
Chương trình kiểm tra
Sử dụng hai nút ETH1.0 cơ bản nhất + hai Nút chuỗi ETH2.0 Beacon + hai kiến trúc Nút xác thực để xây dựng một mạng riêng làm kế hoạch bắt đầu. Thời gian hoạt động ổn định của mạng trong một ngày là thời gian quan sát.
tiêu đề phụ
Bảng dưới đây cung cấp tổng quan về các thử nghiệm của chúng tôi:
Bảng 1
tiêu đề phụ
Trong quá trình thử nghiệm, chúng tôi đã thu thập CPU, bộ nhớ, IO ổ đĩa, IO băng thông mạng và các chỉ số khác của từng máy chủ phiên bản.
tiêu đề phụ
Trong thử nghiệm 1, bộ nhớ của 2 lõi 4G Beacon Chain Node tăng theo từng giai đoạn, sau khi chạy khoảng 6 giờ, mức sử dụng bộ nhớ đạt 100% khiến quá trình dừng lại do lỗi bộ nhớ không đủ và mức sử dụng CPU cũng giảm dần. tăng. Như hình dưới đây:
Hình 1
Mô tả hình ảnh
Hình 2
Sau đó, chúng tôi đã nâng cấp cấu hình của Beacon Chain Node lên 8G 4 nhân.
Sau đó, chúng tôi đã triển khai các nút ETH2.0 ở các khu vực khác nhau để quan sát xem liệu kết nối mạng ở các khu vực khác nhau có tác động lớn hơn đến từng chỉ số hay không và kết quả thử nghiệm là bình thường.
tiêu đề phụ
Theo tình hình kiểm tra mạng riêng, Beacon Chain Node khuyến nghị cấu hình 4 nhân 8G và cấu hình 4G 2 nhân của nút Trình xác thực là đủ, nhưng nó sẽ chiếm CPU 1 nhân khi nhập tệp khóa và tốc độ sử dụng CPU là 100% (như minh họa trong hình bên dưới), để đảm bảo an toàn, bạn nên định cấu hình 4C6G.
Mô tả hình ảnh
Ngoài ra, trong giai đoạn thử nghiệm này, các yêu cầu về hiệu suất I/O của đĩa và băng thông mạng bên ngoài rất thấp, có thể là do lý do mạng riêng. Các yêu cầu hiệu suất cụ thể tương ứng cần được kiểm tra trong ETH2.0 chính thức mạng thử nghiệm.
Thử nghiệm so sánh giai đoạn 2
tiêu đề phụ
Giai đoạn đầu tiên chủ yếu kiểm tra áp lực của số lượng người xác minh khác nhau đối với tài nguyên máy chủ, ngoài ra, việc tạo khối và nhân chứng của người xác minh cũng là các chỉ số quan trọng đối với người xác minh. Để kết thúc này, chúng tôi đã tiến hành một thử nghiệm so sánh. Trong cùng một mạng, số lượng trình xác thực khác nhau được triển khai ở các khu vực khác nhau để thử nghiệm so sánh.
tiêu đề phụ
Trong quá trình kiểm tra, chúng tôi sẽ thu thập các chỉ số như CPU, bộ nhớ, đĩa IO, băng thông mạng IO, số khối sẽ được tạo, số khối thực tế được tạo, số khối cần được chứng kiến và số khối thực tế được chứng kiến bởi mỗi máy chủ phiên bản.
tiêu đề phụ
Sau đây là trường hợp thử nghiệm của chúng tôi:
Mô tả hình ảnh
ban 2
Mạng ETH1.0 bao gồm ba máy chủ đám mây 4G 2 lõi, hai ở Hồng Kông và một ở Sao Paulo. Thời gian khối được đặt thành 15 giây.
Chúng tôi đã triển khai Nút chuỗi Beacon và Nút xác thực tại Hồng Kông, Singapore, Los Angeles, Frankfurt, Sao Paulo và London. Nút chuỗi Beacon và Nút trình xác thực trong mỗi khu vực được kết nối thông qua mạng nội bộ. Cấu hình và số lượng trình xác nhận tương ứng được hiển thị trong hình trên.
Cả phiên bản 1 và phiên bản 2 đều có 1k trình xác thực, sự khác biệt nằm ở cấu hình của Nút trình xác thực, được sử dụng để so sánh tác động của số lượng trình xác thực với các cấu hình khác nhau đối với các chỉ báo.
Các nút Beacon Chain trong mỗi khu vực được kết nối với các nút khác.
tiêu đề phụ
Lựa chọn tham số testnet
Lần đầu tiên chúng tôi triển khai hợp đồng tiền gửi trên mạng ETH1.0 và sau khi tạo số lượng khóa xác thực cần thiết, chúng tôi đã gửi các giao dịch tiền gửi theo lô. Prysm bắt đầu với các tham số sau được sửa đổi:
MinGenesisActiveValidatorCount được đặt thành 8192, thỏa mãn vì 40k trình xác thực được bao gồm trong thử nghiệm của chúng tôi;
Eth1FollowDistance được đặt thành 20, nghĩa là hợp đồng tiền gửi trên mạng ETH1.0 sẽ được mạng ETH2.0 theo dõi sau 5 phút;
SecondsPerETH1Block được đặt thành 15, phù hợp với cài đặt thời gian của từng khối trong mạng ETH1.0;
Trên thực tế, vì chúng tôi đã gửi trước tất cả các giao dịch gửi tiền để đáp ứng số lượng trình xác thực tối thiểu được đặt vào thời điểm bắt đầu sớm nhất, nên toàn bộ mạng ETH2.0 đã được khởi chạy vào lúc 1599811207(2020-09-11T16:00:07+08:00) .
tiêu đề phụ
Thống kê và kết quả kiểm tra
Chúng tôi cũng đã triển khai Nút chuỗi Beacon để kết nối với mạng riêng ETH2.0 để truy vấn dữ liệu. Thêm tham số --slots-per-archive-point=1 để lưu trữ liên tục dữ liệu của từng khối nhằm tăng tốc độ truy vấn. Việc thêm tham số --rpc-max-page-size=1000 cho phép chúng tôi truy vấn nhiều dữ liệu hơn mỗi lần, do đó giảm số lượng yêu cầu và tăng tốc độ tổng thể.
Chúng tôi đã chọn khoảng thời gian khi mạng tương đối ổn định, lấy mẫu từ 75 kỷ nguyên (khoảng 2020-09-12 00:00:00 +0800) đến 1200 kỷ nguyên (2020-09-17 00:00:00 +0800) đến có được phân đoạn này Dữ liệu tạo khối và dữ liệu nhân chứng của người xác minh trong các trường hợp khác nhau trong một khoảng thời gian nhất định được phân tích và thu được các kết quả sau:
Nhân chứng xác thực ở các khu vực khác nhau hơi khác nhau:
Mô tả hình ảnh
bàn số 3
Ở đây, chúng tôi xác định tỷ lệ nhân chứng chia cho số lượng nhân chứng được đưa vào trong một khoảng thời gian chia cho số lượng nhân chứng được chỉ định cho nó. Không khó để thấy rằng, nhìn chung, khi số lượng người xác thực tăng lên, tỷ lệ nhân chứng sẽ giảm xuống. Nhưng trong Ví dụ 3, mặc dù số lượng người xác minh chỉ là 2k nhưng tỷ lệ nhân chứng thấp hơn tỷ lệ nhân chứng 6k hoặc thậm chí 10k.
Chúng tôi chia tỷ lệ của từng người xác minh theo phạm vi và nhận được dữ liệu sau:
Mô tả hình ảnh
Vì số lượng trình xác minh trong mỗi trường hợp là khác nhau nên tỷ lệ chuyển đổi sẽ trực quan hơn:
Mô tả hình ảnh
bảng 5
Để đạt được điều này, chúng tôi đã kiểm tra nhật ký của phiên bản 3 và nhận thấy rằng kết nối giữa Nút chuỗi Beacon với các nút khác và ETH1.0 không ổn định. Người ta đoán rằng điều này gây ra tỷ lệ nhân chứng bất thường, cần được kiểm tra sau.
tiêu đề phụ
Trong vòng thử nghiệm này, chúng tôi đã quan sát dữ liệu chỉ số hiệu suất trong bảng sau:
Mô tả hình ảnh
Beacon Chain Node
bảng 6
Validator Node
Trong phiên bản 1-5, mức sử dụng CPU của Beacon Chain Node nằm trong khoảng từ 5% đến 10% và mức sử dụng CPU của Beacon Chain Node trong phiên bản 6 là khoảng 12%. Bộ nhớ cho thấy mức tăng đều đặn, từ 12% đến 17% và không có sự khác biệt đáng kể về IO của đĩa và băng thông.
Ngoài ra, để tạo tệp khóa xác minh, chúng tôi sử dụng dòng lệnh python được đề xuấtdụng cụ, hiệu quả của công cụ tạo khóa này tương đối thấp, nó chỉ chiếm 1 nhân trên máy đa nhân và mất khoảng 2,5 giờ để tạo 2000 cặp khóa. Mặt khác, cặp khóa nhập của Nút xác thực cũng là thực thi lõi đơn và thời gian nhập 2000 cặp khóa là khoảng 40 phút.
tiêu đề phụ
Thông qua vòng thử nghiệm này, chúng tôi đã quan sát thấy trong mạng riêng rằng việc tăng số lượng trình xác thực sẽ ảnh hưởng đến tốc độ sản xuất khối của tất cả các trình xác thực trên nút. ít hơn khoảng 10 khối mỗi ngày. Về mặt tạo khối, chúng tôi không tìm thấy sự khác biệt nào trong các thử nghiệm của mình. So với CPU và băng thông, việc sử dụng bộ nhớ và đĩa IO tăng rõ ràng hơn khi số lượng trình xác thực tăng lên.
tiêu đề phụ
Kế hoạch kiểm tra tiếp theo và các bước để được tối ưu hóa
Trong vòng thử nghiệm này, các khía cạnh sau cần nhiều thời gian chuẩn bị hơn:
Tạo cặp khóa xác thực
Triển khai hợp đồng đặt cọc
Cặp khóa nhập Nút xác thực
Trong kế hoạch tiếp theo, nó được lên kế hoạch để tối ưu hóa các bước trên để cải thiện hiệu quả thử nghiệm.
Ngoài ra, trong kế hoạch kiểm tra tiếp theo, khi xem xét tính ổn định giữa các mạng ở các khu vực khác nhau và tác động của nó đối với các chỉ số của trình xác thực, có thể xem xét các cải tiến sau:
Thêm nhiều phiên bản thử nghiệm trong cùng một khu vực để so sánh xem sự khác biệt có phải do khu vực gây ra hay không;
Triển khai nhiều nút ETH1.0 để cho phép Nút chuỗi Beacon kết nối với mạng ETH1.0 một cách suôn sẻ và giảm tác động;
Thêm một thử nghiệm so sánh riêng trong cùng một khu vực, tăng số lượng người xác minh, biến kiểm soát và chỉ cần so sánh tác động của số lượng người xác minh.Về dữ liệu thống kê, hãy xem xét thêm các khía cạnh khác, chẳng hạn như xem xét khoảng cách của nhân chứng được đưa vào, v.v., bạn có thể tham khảo bài viết này vềbài báo.
tiêu đề cấp đầu tiên
Tổng Hợp Đề Thi
Khi tăng lên gần 4k trình xác minh, Nút xác thực sẽ báo cáo rằng kích thước thông báo 5350532 (5M) do grpc thu được vượt quá giá trị tối đa là 4194304 (4M).
Mô tả hình ảnh
hinh 4
Giải pháp: Sử dụng tham số --grpc-max-msg-size để tăng kích thước thư được grpc cho phép khi khởi động Nút xác thực.
Trong vòng thử nghiệm đầu tiên, khi chỉ có hai Nút chuỗi Beacon trong mạng, sẽ dễ xảy ra sự cố là các khối không thể được đồng bộ hóa giữa hai nút và không nút nào coi nút kia là ngang hàng phù hợp. Như hình dưới đây:
Mô tả hình ảnh
Hình 5
Giải pháp: Chúng tôi hiện đang giải quyết vấn đề này bằng cách xóa đồng bộ lại dữ liệu của nút. Trong quá trình thử nghiệm, chúng tôi nhận thấy rằng khi số lượng nút Beacon Chain tăng lên, vấn đề này không còn xảy ra nữa.
Số tiền gửi không đủ bị báo cáo saiissue, đã được khắc phục trong phiên bản mới nhất của báo cáo này.
Mô tả hình ảnh


