Ngày nay, các giải pháp kiểm tra và đo điểm chuẩn của chuỗi khối được điều chỉnh cho phù hợp với một chuỗi khối cụ thể hoặc các nhánh của nó. Nhưng cũng có một số giải pháp tổng quát hơn có chức năng khác nhau: một số trong số đó là các dự án nguồn mở, một số khác được cung cấp dưới dạng SaaS, nhưng hầu hết là các giải pháp nội bộ do nhóm phát triển blockchain tạo ra. Tuy nhiên, tất cả đều giải quyết được những vấn đề tương tự. Trong bài viết này, tôi đã cố gắng xem xét ngắn gọn một số sản phẩm được thiết kế đặc biệt để thử nghiệm chuỗi khối.
Hoạt động của mạng blockchain giống như hoạt động của cơ sở dữ liệu phân tán, do đó, các công cụ và phương pháp tương tự có thể được sử dụng để thử nghiệm. Để hiểu rõ hơn cách kiểm tra cơ sở dữ liệu phân tán, hãy xem tuyển tập các tài nguyên và bài viết hay
Tôi sẽ mô tả một số giải pháp phổ biến để thử nghiệm và đánh giá các chuỗi khối. Tôi sẽ rất vui nếu trong phần nhận xét bạn mô tả các sản phẩm phần mềm hữu ích khác để giải quyết các vấn đề tương tự.
Tôi sẽ bắt đầu với một công cụ, mặc dù không được tạo riêng cho các chuỗi khối, nhưng cho phép bạn kiểm tra hoạt động của chúng một cách hiệu quả, miễn là có một mạng đang chạy mà bạn có thể thử nghiệm trên đó. Yếu tố quan trọng nhất tạo nên độ tin cậy của hệ thống phân tán là khả năng tiếp tục hoạt động trong trường hợp xảy ra sự cố với máy chủ và mạng. Điều này có thể là do mạng bị trễ, ổ đĩa đầy, không có sẵn các dịch vụ bên ngoài (DNS), lỗi phần cứng và hàng trăm lý do khác. Để kiểm tra tính ổn định của bất kỳ hệ thống nào hoạt động đồng bộ trên một số lượng lớn máy hệ thống, bạn có thể sử dụng
Sử dụng tác nhân mạng của riêng mình, Gremlin tạo ra nhiều loại sự cố khác nhau trên số lượng máy được yêu cầu: mạng bị trễ, quá tải bất kỳ tài nguyên nào (CPU, đĩa, bộ nhớ, mạng), vô hiệu hóa các giao thức riêng lẻ, v.v. Đối với blockchain, Gremlin có thể được sử dụng trên các máy chủ testnet, mô phỏng các vấn đề thực tế và quan sát hành vi của mạng. Với nó, các nhà phát triển và quản trị viên có thể quan sát trong một môi trường được kiểm soát điều gì sẽ xảy ra nếu hệ thống gặp sự cố hoặc khi mã được cập nhật. Trong trường hợp này, mạng phải được cấu hình và triển khai trước, cũng như được cấu hình để thu thập các số liệu cần thiết.
Gremlin là một công cụ tiện lợi dành cho các kiến trúc sư, nhà phát triển và chuyên gia bảo mật, đồng thời là giải pháp phổ quát để thử nghiệm mọi hệ thống phân tán được tạo sẵn và đang chạy, bao gồm cả chuỗi khối.
Hyperledger Caliper là một giải pháp chuyên biệt hơn nhiều
Sử dụng Caliper, bạn có thể thiết lập cấu trúc liên kết của mạng blockchain và các hợp đồng để thử nghiệm, cũng như mô tả cấu hình của nút. Các nút chuỗi khối được nâng lên trong các thùng chứa docker trên một máy. Tiếp theo, bạn có thể chọn những thứ cần thiết
Hyperledger Caliper là một công cụ dành cho các nhà phát triển và kiến trúc sư hệ thống, vì nó cung cấp khả năng lặp lại thử nghiệm và tự động hóa quá trình thử nghiệm và đo điểm chuẩn. Nó được sử dụng để phát triển cốt lõi của chuỗi khối: thuật toán đồng thuận, máy ảo để xử lý hợp đồng thông minh, lớp ngang hàng và các cơ chế hệ thống khác.
MixBytes Tank sử dụng một số dịch vụ đám mây (Digital Ocean, Google Cloud Engine, v.v.), trong đó nó có thể khởi chạy nhiều nút, thực hiện quy trình cấu hình sơ bộ, chạy song song một số điểm chuẩn trên các máy khác nhau, thu thập số liệu cần thiết và tự động tắt mạng.
MixBytes Tank cho phép bạn tiết kiệm tiền trên máy chủ đám mây bằng cách tự động giảm thiểu các tài nguyên không cần thiết sau khi thử nghiệm. Một tính năng đặc biệt khác là sử dụng gói Molecule, cho phép nhà phát triển thử nghiệm việc triển khai blockchain mong muốn cục bộ.
MixBytes Tank cho phép bạn phát hiện sớm các tắc nghẽn và lỗi trong thuật toán phát sinh trong mạng thực với số lượng lớn máy chủ và máy khách được phân bổ theo địa lý. Bể chứa sẽ giúp bạn hiểu điều gì sẽ xảy ra trên các nút nếu khách hàng gửi giao dịch với tốc độ tps nhất định trong điều kiện có độ lặp lại cao và với số lượng nút thực trải rộng trên các lục địa khác nhau, nếu cần.
Whiteblock Genesis là một nền tảng thử nghiệm các chuỗi khối dựa trên Ethereum. Công cụ này có chức năng khá rộng: nó cho phép bạn khởi chạy mạng, tạo số lượng tài khoản cần thiết trong đó, tăng số lượng khách hàng cần thiết, định cấu hình cấu trúc liên kết mạng, chỉ định các tham số băng thông và mất gói và chạy thử nghiệm.
Whiteblock Genesis cung cấp các cơ sở thử nghiệm riêng. Các nhà phát triển chỉ cần chỉ định các tham số thử nghiệm, chạy chúng bằng API tạo sẵn và nhận kết quả bằng bảng điều khiển tiện lợi.
Whiteblock Genesis cho phép bạn định cấu hình một thử nghiệm khá chi tiết mà nền tảng sẽ tự động tiến hành đối với mọi thay đổi mã quan trọng. Điều này sẽ cho phép bạn phát hiện lỗi ở giai đoạn đầu và đánh giá ngay tác động của những thay đổi đối với các thông số mạng quan trọng, chẳng hạn như tốc độ giao dịch và tài nguyên mà các nút tiêu thụ.
Madt
Một sản phẩm trẻ thú vị khác để thử nghiệm các hệ thống phân tán là
Madt chỉ mới xuất hiện gần đây nhưng với kiến trúc rất linh hoạt, nó có thể phát triển thành một sản phẩm chức năng.
Các giải pháp khác
Hầu như bất kỳ thử nghiệm nào đối với phần hệ thống của chuỗi khối đều yêu cầu chạy các tập lệnh sơ bộ, chuẩn bị tài khoản và điều kiện cho thử nghiệm (đây có thể là thử nghiệm các lỗi đồng thuận có thể tạo ra nhiều nhánh của chuỗi, thử nghiệm các kịch bản hard fork, thay đổi tham số hệ thống, v.v.). Tất cả các thao tác này được thực hiện khác nhau trong các chuỗi khối khác nhau, do đó, các nhóm sẽ dễ dàng điều chỉnh dần việc thử nghiệm và đo điểm chuẩn sản phẩm cho phù hợp với CI/CD nội bộ và sử dụng các phát triển của riêng họ, dần dần trở nên phức tạp hơn khi chức năng của chuỗi khối phát triển.
Tuy nhiên, việc sử dụng các giải pháp làm sẵn có thể giảm đáng kể thời gian thử nghiệm cho các nhóm này, vì vậy tôi nghĩ rằng phần mềm này sẽ được phát triển tích cực trong những năm tới.
Kết luận
Để kết thúc bài đánh giá ngắn này, tôi sẽ liệt kê một số đặc điểm quan trọng của các công cụ kiểm tra blockchain:
- Khả năng tự động triển khai mạng blockchain trong các điều kiện lặp lại. Yếu tố này rất quan trọng khi phát triển các bộ phận hệ thống của blockchain: thuật toán đồng thuận, tính hữu hạn, hợp đồng thông minh hệ thống.
- Chi phí sở hữu hệ thống, tài nguyên tiêu thụ và sự thuận tiện khi sử dụng liên tục. Yếu tố này cung cấp cho dự án những bài kiểm tra chất lượng cao với số tiền ít.
- Tính linh hoạt và đơn giản của cấu hình thử nghiệm. Yếu tố này làm tăng cơ hội xác định các sự cố của hệ thống - ít có khả năng bỏ sót điều gì đó quan trọng.
- Tùy chỉnh cho các loại blockchain cụ thể. Phát triển một giải pháp dựa trên giải pháp hiện có có thể cải thiện đáng kể chất lượng và giảm chi phí thời gian.
- Sự thuận tiện và khả năng tiếp cận các kết quả thu được và loại của chúng (báo cáo, số liệu, đồ thị, nhật ký, v.v.). Điều này thực sự cần thiết nếu bạn muốn theo dõi lịch sử phát triển của sản phẩm hoặc nếu bạn yêu cầu phân tích sâu về hoạt động của mạng blockchain.
Chúc bạn thử nghiệm may mắn và chuỗi khối của bạn có thể hoạt động nhanh và có khả năng chịu lỗi!
Nguồn: www.habr.com