Phát hành nguồn mở phần mã Tính toán phần thưởng
Ngày 31 tháng 10 năm 2023 - Chia sẻ bài viết này trên Twitter | Facebook | Telegram
Trên giao thức bằng chứng cổ phần (PoS) của Cardano — Ouroboros — người ủy quyền và SPOs (SPO) nhận được phần thưởng khi họ góp phần bảo mật mạng. Thông số kỹ thuật của sổ cái Cardano phác thảo các công thức để tính toán những phần thưởng này. Ghi nhớ điều này và là một phần trong nỗ lực của Cardano Foundation hướng tới khả năng phục hồi hoạt động của mạng, chúng tôi đã mở nguồn tính toán phần thưởng độc lập với node. Dự án nhằm mục đích đạt được một phương tiện thực hiện và xác nhận tính toán phần thưởng độc lập với một lần triển khai duy nhất. Nó cũng có vẻ cung cấp tài liệu toàn diện liên quan đến ngân quỹ, dự trữ và phần thưởng pool của Cardano.
Là một kho lưu trữ nguồn mở theo giấy phép MIT, sáng kiến này cũng tăng cường cam kết của Cardano Foundation hướng tới sự trưởng thành của nguồn mở và nhằm mục đích thu hút sự đóng góp từ hệ sinh thái nói chung. Cuối cùng, phép tính cũng có thể đóng vai trò như một công cụ đào tạo, chẳng hạn như liên quan đến việc thay đổi tham số giao thức có thể tác động như thế nào đến dòng tiền. Cuối cùng, nó tăng cường tính minh bạch và cải thiện khả năng phục hồi hoạt động.
Tăng cường khả năng phục hồi hoạt động với nguồn mở
Blockchain Cardano cung cấp một số tính năng độc đáo, được nghiên cứu cẩn thận. Điều quan trọng là ADA stake luôn nằm trong ví của người dùng. Người ủy thác tự do chuyển sang ví khác bất cứ lúc nào. Mặc dù chức năng này có nhiều lợi ích nhưng nó cũng đặt ra những thách thức trong việc thực hiện tính toán phần thưởng. Điều này đòi hỏi phải sử dụng snapshot (bản chụp nhanh trạng thái) để tính toán phần thưởng, như được nêu trong đặc tả sổ cái.
Quá trình này bắt đầu bằng việc tính toán khoản dự trữ mới, phí, tổng số phần thưởng và ngân quỹ. Sau đó, phần thưởng pool được xác định dựa trên tổng số phần thưởng này. Phần thưởng pool được sử dụng để tính toán phần thưởng của người ủy quyền stake pool và người vận hành stake pool. Do yêu cầu tính toán dựa trên snapshot, có thể xảy ra trường hợp tài khoản stake có thể bị hủy đăng ký sau khi chụp ảnh nhanh. Do đó, tài khoản stake không thể nhận phần thưởng sau khi tính toán xong và cần có các quy tắc tùy chỉnh để xử lý những tình huống đặc biệt đó.
Các quy tắc này được phổ biến một cách tự nhiên trên cơ sở mã vì bản thân quá trình tính toán được phân bổ theo thời gian. Kho lưu trữ sổ cái cardano tổng hợp hầu hết logic kinh doanh cùng với các tài liệu liên quan. Bạn có thể tìm thấy một số thành phần bổ sung cần thiết cho quá trình này trong chính node cardano hoặc trong kho lưu trữ mạng ouroboros.
Mã được thực thi bằng cách sử dụng bộ lập lịch dựa trên vị trí, điều này có thể gây khó khăn cho việc đọc và làm theo đối với những người không quen thuộc với cơ sở mã. Mặc dù một số tối ưu hóa nhất định đã được đưa ra để nâng cao hiệu suất tính toán nhưng những tối ưu hóa này có thể làm cho mã trở nên khó hiểu hơn. Việc tính toán phần thưởng nguồn mở nhằm giải quyết những thách thức này trong khi vẫn duy trì các tính năng mạnh mẽ vốn có của mạng Cardano.
Cơ chế phần thưởng Cardano
Đặc tả sổ cái Cardano bao gồm nhiều phương trình xác định chung luồng ADA ở cuối mỗi epoch. Mỗi node sẽ tính toán phần thưởng độc lập cho mỗi epoch theo cách phân tán với mọi phần thưởng tiềm năng sau đó được phân phối dựa trên cơ chế đồng thuận. Đáng chú ý, không một thực thể nào hoàn thành phép tính này và không ai có thể giữ lại phần thưởng. Những phần thưởng ADA này được tính toán theo từng thời điểm và xuất phát từ sự tương tác của hai nguồn: phí giao dịch và mở rộng tiền tệ.
- Phí giao dịch: Vào cuối mỗi epoch, giá trị nhận được từ khoản phí (tổng của tất cả phí giao dịch trong epoch đó) sẽ được tính vào tổng phần thưởng.
- Mở rộng tiền tệ: Ngoài phí giao dịch, một tỷ lệ phần trăm cố định của khoản dự trữ sẽ được đưa vào cùng một phần thưởng.
Tổng số phần thưởng sau đó được chia thành hai phần. Phần đầu tiên được đưa vào ngân quỹ, trong khi phần thứ hai tạo thành phần thưởng cho pool stake. Đáng chú ý, trữ lượng nói trên ban đầu có khoảng 14 tỷ ADA và giảm dần sau mỗi epoch.
Đồng thời, một phép tính khác tính toán phần thưởng stake pool, sử dụng các tham số stake pool, kết hợp với hiệu suất rõ ràng của pool, xác định phần thưởng stake pool riêng lẻ. Giá trị kết quả tạo thành nền tảng để tính toán phần thưởng cho cả người ủy quyền và người điều hành. Điều quan trọng là tất cả những tính toán này đều phụ thuộc vào các tham số giao thức. Việc tính toán phần thưởng là một phần không thể thiếu của hệ sinh thái blockchain Cardano, khiến việc đào tạo mọi người về cách thức hoạt động của nó trở nên quan trọng. Kiến thức này cho phép mọi người chọn stake pool phù hợp với tầm nhìn và giá trị của họ.
Cách tính toán phần thưởng cải thiện tính minh bạch
Ngân quỹ, dự trữ, phần thưởng, tiền gửi và phí — thường được gọi là ADA-pot — có tổng nguồn cung tối đa là 45 tỷ ADA. Mặc dù bất kỳ ai cũng có thể xem lại số ADA-pot trên explorer blockchain Cardano và trên Cardano DB Sync, nhưng các nền tảng này chỉ có thể cung cấp đầu ra cuối cùng của các phép tính mà không có bất kỳ dữ liệu cơ bản nào để xác thực cách tính toán. Mặc dù các phép tính này tồn tại trong mã Haskell của node và kho sổ cái, nhưng chúng sử dụng cách triển khai công thức phức tạp, có tính phân tán cao.
Vì lý do này, Cardano Foundation bắt đầu theo đuổi cách tính phần thưởng độc lập với node, triển khai các công thức được nêu trong thông số kỹ thuật sổ cái Cardano và đóng vai trò là tài nguyên tài liệu để xử lý các trường hợp đặc biệt trong đó công thức được chỉ định không phù hợp với việc triển khai thực tế. Ví dụ: trong một trường hợp, một lỗi trong quá trình triển khai node đã dẫn đến việc chủ sở hữu pool chạy hai pool khác nhau nhưng có cùng địa chỉ phần thưởng chỉ nhận được phần thưởng cho một stake pool. Trong trường hợp này, việc sửa lỗi sẽ dẫn đến phần thưởng bổ sung từ ngân quỹ được cấp cho chủ sở hữu pool.
Mặc dù các biện pháp can thiệp thủ công đó hoàn toàn phù hợp với đặc tả giao thức và được ghi lại một cách minh bạch thông qua cái gọi là chứng chỉ phần thưởng di chuyển tức thời ( MIR) ), nhưng các ADA-pot được tính cho epoch này sẽ không chính xác. Cụ thể, nếu người ta tính toán giá trị ngân quỹ bằng công thức đơn giản cho epoch này, thì rõ ràng là nó không khớp với số lượng ADA thực tế được nắm giữ. Nói tóm lại, nếu không biết về những sự kiện bất thường như vậy, sự khác biệt giữa công thức và giá trị ngân quỹ sẽ gặp khó khăn trong việc theo dõi và sẽ có ít tiền trong ngân quỹ hơn mức được chỉ ra trong công thức.
Ưu điểm của việc công khai mã mở nguồn của công thức tính thưởng
Việc tính toán phần thưởng ban đầu được tích hợp vào LedgerSync, đường dẫn dữ liệu dựa trên Java được phát triển để cung cấp cho explorer Cardano mới của Cardano Foundation dữ liệu từ blockchain Cardano. Tuy nhiên, nhóm Kỹ thuật của Cardano Foundation đã sớm nhận ra rằng việc gỡ rối nhiều thành phần liên quan đến các khía cạnh khác nhau của quá trình tính toán sẽ tỏ ra khá phức tạp. Sự đa dạng của dữ liệu đầu vào, bao gồm thông số kỹ thuật, bài đăng trên blog, chuỗi diễn đàn và tài liệu cộng đồng tự lưu trữ, có nghĩa là việc thu thập thông tin cần thiết từ nhiều nguồn khác nhau để hiểu toàn diện luồng ADA trở nên đặc biệt tốn thời gian.
Mặt khác, nguồn mở để tính toán phần thưởng có thể trao quyền cho công chúng kiểm tra, đánh giá và xác minh thuật toán cũng như mã được sử dụng để xác định cách phân phối phần thưởng. Tương tự, cách tiếp cận này giúp xây dựng niềm tin vào cơ sở hạ tầng Cardano bằng cách đóng vai trò là kho lưu trữ bao gồm biểu đồ tương tác giải thích luồng ADA ở cuối epoch, cùng với các báo cáo nêu bật sự khác biệt giữa công thức và giá trị thực tế.
Nó cũng hoạt động như một cách hữu ích để đào tạo mọi người về hệ thống ngân quỹ phi tập trung của Cardano và góp phần cung cấp cái nhìn sâu sắc về việc sử dụng phí giao dịch. Là một kho lưu trữ nguồn mở, việc tính toán phần thưởng sẽ thu hút cộng đồng hơn nữa, thúc đẩy mọi người đóng góp càng nhiều tài liệu càng tốt. Hơn nữa, nó còn cung cấp một công cụ hỗ trợ kỹ thuật vì nó hiển thị một API cho phép người dùng tính toán các giá trị hiện chỉ khả dụng với Cardano DB Sync, một công cụ Haskell của IOG để thu thập dữ liệu node và làm cho nó có thể truy cập được trong cơ sở dữ liệu PostgreSQL.
Hướng tới sự minh bạch trong tính toán phần thưởng
Như đã thảo luận trong ví dụ về trường hợp cạnh trước đó, việc sử dụng công thức cho epoch tiếp theo để tính toán, chẳng hạn như giá trị ngân quỹ, đôi khi sẽ không mang lại kết quả chính xác. Động lực này có thể phát sinh khi chuyển tiền để thanh toán đề xuất Project Catalyst hoặc, chẳng hạn như khi sử dụng chứng chỉ MIR để bù đắp cho phần thưởng pool bị bỏ lỡ do lỗi. Mặc dù được ghi lại một cách minh bạch trên blockchain Cardano thông qua cơ chế chứng chỉ MIR, nhưng những trường hợp đặc biệt như vậy không phải lúc nào cũng được ghi lại chi tiết một cách công khai, dẫn đến thiếu nền tảng lịch sử và do đó ảnh hưởng đáng kể đến tính minh bạch, từ đó dẫn đến sự không chắc chắn và giảm độ tin cậy. Việc thiết lập tài liệu phù hợp có thể ngăn chặn điều này, cho phép đánh giá và kiểm toán trong tương lai cũng như cải thiện tài liệu, do đó củng cố độ tin cậy và khả năng phục hồi hoạt động của Cardano.
Công việc của Cardano Foundation bắt đầu với việc triển khai công thức và tài liệu về các trường hợp đặc biệt, nhưng một số điểm chưa biết còn lại vẫn cần được giải quyết. Ví dụ: cần phải tính đến các quỹ Catalyst hoặc chứng chỉ MIR đầu tiên trước epoch 271 vì chúng không có siêu dữ liệu kèm theo. Thông qua nguồn mở công thức này, Cardano Foundation hy vọng hợp tác với các thành viên cộng đồng để thiết lập một giải pháp độc lập với nguồn dữ liệu. Hiện tại, chúng tôi có nhà cung cấp dữ liệu Koios và nhà cung cấp dữ liệu cho các tệp JSON tĩnh phục vụ dữ liệu tổng hợp. Ngoài ra, một trình lập chỉ mục có phạm vi—có thể nói dựa trên Yaci-Store, một triển khai kho dữ liệu Cardano dựa trên Java—sẽ tỏ ra hữu ích trong việc đảm bảo tính minh bạch tối đa trong tính toán phần thưởng.
Sáng kiến này cuối cùng cũng liên quan đến giá trị ngân quỹ mà Cardano sử dụng để tài trợ cho sự phát triển phi tập trung của hệ sinh thái, phần thưởng chung và phí giao dịch. Do đó, nó tác động trực tiếp đến các khía cạnh mà mọi người dùng Cardano nên quan tâm, bao gồm cả việc triển khai phần thưởng trong hệ sinh thái mà họ là thành viên. Đồng thời, tất cả những người đóng góp, dù chia sẻ mã hay thông tin, đều đóng vai trò quan trọng trong việc mang lại sự tin cậy và minh bạch hơn cho hệ sinh thái, từ đó cải thiện các điều kiện để tăng cường ứng dụng Blockchain.
Khám phá tính toán
Cardano Foundation tạo ra một báo cáo cùng với mọi phiên bản mới của kho lưu trữ. Chúng tôi đã thêm chênh lệch tuyệt đối trung bình giữa phép tính và giá trị ngân quỹ thực tế làm thước đo và cùng với cộng đồng, chúng tôi hy vọng sẽ giảm được giá trị này theo thời gian.
Đóng góp cho kho lưu trữ này không chỉ giới hạn ở mã; mọi người có thể thêm dữ liệu, liên kết, tài liệu và thông tin chi tiết về những khác biệt đáng kể được quan sát thấy ở một số epoch. Bản thân kho lưu trữ tuân theo cách tiếp cận dựa trên thử nghiệm, do đó, nên bắt đầu bằng cách tạo các thử nghiệm, chẳng hạn như các thử nghiệm liên quan đến phần thưởng pool cụ thể trong các epoch cụ thể. Quỹ chỉ tạo báo cáo cho ngân quỹ nhưng chúng tôi nhận thấy có tiềm năng giới thiệu loại báo cáo này cho các thành phần khác của ADA-pot cũng như các báo cáo chi tiết về stake pool được chọn và phần thưởng thành viên trong tương lai.
Hầu hết thời gian, giá trị ngân quỹ trung bình cao hơn khoảng 3.500 ADA so với dự đoán của công thức. Quy tắc thu thập chung hướng các khoản tiền gửi chung không thể nhận được — chẳng hạn như khi một pool ngừng hoạt động và địa chỉ cổ phần liên quan đã bị hủy đăng ký — trở lại ngân quỹ. Ngoài ra, mỗi pool có thể kiếm được giá trị ADA tối đa cho mỗi epoch. ngân quỹ cũng chỉ đạo bất kỳ sự khác biệt nào giữa giá trị được tính theo công thức và giá trị tối đa. Những điều chỉnh này đối với việc thực hiện hiện tại sẽ làm giảm sự khác biệt tuyệt đối trung bình.
Cardano Foundation đã đạt được một số thành công trong việc giải quyết các nguyên tắc cơ bản của phép tính và xác định lời giải thích cho một số khác biệt này. Tuy nhiên, sẽ rất có giá trị nếu có tài liệu toàn diện về mọi giao dịch gửi đi từ ngân quỹ.
Các bước tiếp theo cũng liên quan đến việc triển khai quy tắc Pool Reap, cũng như thêm phần thưởng có giới hạn vào ngân quỹ, kết hợp chứng chỉ MIR và chuyển các phần thưởng chưa có người nhận vào kho dự trữ. Ngoài ra, mặc dù hiện tại với mỗi epoch mới, chúng tôi đặt lại về một giá trị đã biết để ngăn lỗi relayer từ các epoch trước đó, nhưng trong tương lai, sẽ có lợi nếu có người tiêu dùng trong phạm vi phí, pool đã ngừng hoạt động, tài khoản cổ phần đã hủy đăng ký, cập nhật pool, v.v. Cấu trúc này sẽ cho phép tính toán động dựa trên tính toán trước đó.
Tuy nhiên, nếu có một ẩn số khác trong phép tính, dẫn đến sự chênh lệch giữa phép tính và giá trị thực tế, thì việc kiểm tra chuyên sâu về việc triển khai Haskell trong kho lưu trữ cardano-node và cardano-ledger có thể được hoàn thành. Kịch bản này nhằm mục đích xác định những thay đổi gây ra sự khác biệt bằng cách khám phá lịch sử cam kết và thảo luận các vấn đề.
Trong tương lai, Cardano Foundation dự định sử dụng các báo cáo và biểu đồ tương tác từ kho lưu trữ này để giải thích về hệ thống kinh tế token ADA cho các cơ quan quản lý, doanh nghiệp và Cardano Foundation. Vào tháng 9, chúng tôi cũng đã gặp các pool từ Koios CNTools để giới thiệu với họ về kho lưu trữ và thu thập phản hồi ban đầu. Họ hoan nghênh sáng kiến này cũng như ý tưởng triển khai và ghi lại cách tính phần thưởng và lưu ý rằng việc nhờ các nhà phát triển khác chuyển việc triển khai tham chiếu Java này sang các ngôn ngữ bổ sung sẽ mang lại giá trị bổ sung.
Cách tiếp cận nguồn mở luôn làm phong phú hệ sinh thái, mang lại lợi ích chung cho tất cả các bên liên quan, đồng thời thúc đẩy tính minh bạch và cải thiện khả năng ứng dụng rộng rãi công nghệ Blockchain. Do đó, Cardano Foundation có kế hoạch tiếp tục các giải pháp và kho lưu trữ nguồn mở nhằm thúc đẩy sự trưởng thành của nguồn mở của Cardano.
Nguồn bài viết tại đây
Đọc thêm các bài viết liên quan tại thẻ Tags bên dưới