HIP-729: Đề xuất không dùng Nonce

Trong cộng đồng blockchain, việc cải tiến và phát triển luôn diễn ra không ngừng nghỉ. . Một trong những cải tiến quan trọng là việc thay đổi các giao thức để nâng cao tính bảo mật và hiệu suất. HIP-729 là một ví dụ về sự phấn đấu của cộng đồng để đưa ra những cải tiến mang tính đột phá trong việc quản lý tài khoản hợp đồng trong mạng Hedera. Bài viết này sẽ đưa bạn vào thế giới của HIP-729 và giải thích rõ ràng về nó.

HIP-729 Là Gì?

Bài viết lần này sẽ đề cập tới HIP (Hedera Improvement Proposal), tức Đề xuất cải tiến của Hedera (giống như EIP của Ethereum)

HIP-729 là đề xuất xoay quanh việc điều chỉnh cách quản lý tài khoản hợp đồng trong mạng Hedera, đặc biệt là việc loại bỏ việc sử dụng nonce (một số duy nhất được sử dụng một lần) cho các tài khoản hợp đồng.

Trong Ethereum, các tài khoản hợp đồng có các giá trị nonce, theo quy định của bảng và EIP-161 (Ethereum Improvement Proposal – Đề xuất Cải tiến Ethereum). EVM sử dụng giá trị nonce nội bộ cho nhiều hoạt động khác nhau, ví dụ:

  • Để kiểm tra xem một tài khoản có tồn tại tại một địa chỉ không, hệ thống xem xét xem số thứ tự nonce cho địa chỉ đó có khác 0 không (đồng thời cũng xem xét số dư và mã nguồn cho địa chỉ này, nhưng không cần phải quan tâm tới phần này trong cuộc thảo luận này).
  • Khi tạo một hợp đồng mới thông qua việc tạo (CREATE), địa chỉ của hợp đồng Ethereum được tính toán dựa trên địa chỉ người tạo (người gửi) và số giao dịch mà người tạo đã thực hiện trước đó (gọi là nonce). Thông qua quá trình mã hóa và băm, hệ thống tạo ra địa chỉ cho hợp đồng mới.
  • Khi tạo một hợp đồng mới thông qua việc tạo (CREATE2), cách tạo địa chỉ mới không cần dùng đến số thứ tự nonce. Thay vào đó, địa chỉ hợp đồng mới được tạo ra dựa trên địa chỉ người tạo, mã code của hợp đồng và một thông tin gọi là salt.

Tại Sao Cần Cải Tiến?

Việc sử dụng nonce trong tài khoản hợp đồng là một phần quan trọng của việc bảo đảm tính toàn vẹn và an toàn của giao dịch trong các mạng blockchain. Tuy nhiên, việc này có thể tạo ra một số hạn chế và khó khăn trong việc phát triển ứng dụng và tối ưu hóa hiệu suất. HIP-729 ra đời để giải quyết những thách thức này và mang lại một cách tiếp cận mới cho việc quản lý tài khoản hợp đồng.

Ưu điểm và Nhược điểm của HIP-729

Ưu Điểm Của HIP-729

  1. Tối Ưu Hóa Hiệu Suất: Một trong những lợi ích chính của HIP-729 là tối ưu hóa hiệu suất. Việc loại bỏ việc sử dụng nonce cho tài khoản hợp đồng có thể giúp giảm bớt các phức tạp trong quá trình xử lý giao dịch và tăng tốc độ thực hiện.
  2. Dễ Dàng Phát Triển Ứng Dụng: Với HIP-729, việc phát triển ứng dụng trở nên dễ dàng hơn. Nhà phát triển không cần quan tâm đến việc quản lý nonce nữa, giúp họ tập trung vào việc xây dựng các ứng dụng tốt hơn và đổi mới hơn.
  3. Tích Hợp Dễ Dàng: HIP-729 cung cấp một cách tiếp cận mới cho việc tích hợp các tài khoản hợp đồng vào các ứng dụng và dịch vụ khác. Việc loại bỏ nonce có thể giúp tạo ra sự tương thích tốt hơn giữa các hệ thống khác nhau.

Nhược Điểm Của HIP-729

  1. Vấn Đề Bảo Mật: Mặc dù HIP-729 mang lại nhiều lợi ích, việc loại bỏ nonce cũng có thể ảnh hưởng đến tính bảo mật của hệ thống. Việc này đòi hỏi cẩn trọng và kiểm tra kỹ lưỡng để đảm bảo rằng không có lỗ hổng bảo mật nào được tạo ra.
  2. Sự Thay Đổi Trong Xây Dựng Ứng Dụng: Việc loại bỏ nonce có thể yêu cầu các nhà phát triển thay đổi cách họ xây dựng ứng dụng. Điều này có thể tạo ra một giai đoạn điều chỉnh và tốn thời gian.

Nói thêm

Các nút Ethereum cung cấp một điểm cuối JSON-RPC có thể được truy vấn cho giá trị nonce của mỗi tài khoản: eth_getTransactionCount.

Trong Hedera, Node Mirror lưu trữ thông tin thực thể và giao dịch lịch sử và không có thông tin về giá trị nonce của hợp đồng và luôn trả về giá trị 0. Do đó, Relay JSON-RPC (như được mô tả trong HIP-482) mà trình bày điểm cuối eth_getTransactionCount JSON-RPC phải truy vấn nút Consensus và không phải Node Mirror để trả về giá trị nonce cho các tài khoản hợp đồng. Truy vấn nút Consensus đến với một chi phí khác với các trường hợp sử dụng EVM. Hành vi mong muốn sẽ là giá trị nonce của 1 + n, trong đó n là số lần hợp đồng đã tạo ra các hợp đồng khác thông qua các hoạt động CREATE hoặc CREATE2 được hiển thị trên Node Mirror và các khách hàng sử dụng các API Node Mirror như Relay JSON RPC.

Lý do: Như được mô tả trong HIP-482, Relay JSON-RPC hoạt động với EthereumTransactions mà nó chuyển tiếp cho các nút consensus. Ngoài EthereumTransaction type, các nút consensus cũng có thể xử lý các loại giao dịch khác (ví dụ: ContractCall hoặc ContractCreate) không đến từ Relay JSON-RPC nhưng có thể được sử dụng bởi các nhà phát triển thông qua các phương tiện khác. Nói chung, khi chúng ta nói về giá trị nonce tài khoản, chúng ta sẽ cần xem xét tất cả các loại giao dịch đó cho cả hai loại tài khoản (tức là EOAs và hợp đồng):

  • Cập nhật nonce hợp đồng cho cả hai trường hợp EthereumTransactions và non-EthereumTransactions (tức là ContractCall hoặc ContractCreate) sẽ cần phải được theo dõi và được xuất ra Node Mirror.
  • Theo dõi nonces cho EOAs trong EthereumTransactions không thay đổi (hiện nay chúng ta không có một protobuf cụ thể để xuất nonces nhưng giá trị nonce được truyền dưới dạng một phần của thân EthereumTransaction, do đó Node Mirror có thể đọc giá trị từ đó).
  • Theo dõi nonces cho EOAs trong non-EthereumTransactions không được hỗ trợ vì không có trường hợp sử dụng cho nó trong Hedera.

Câu chuyện người dùng Như người dùng, khi tôi thực hiện một yêu cầu tới api/v1/contracts/{contractId} của Node Mirror, tôi quan sát được một giá trị nonce hợp đồng hợp lệ khác 0. Như người dùng, khi tôi thực hiện một yêu cầu tới điểm cuối eth_getTransactionCount, tôi muốn có khả năng nhận được các giá trị nonce chính xác cho các hợp đồng.

Thông số kỹ thuật Không cần thay đổi trạng thái Dịch vụ vì hiện tại các giá trị nonce đang được tính toán chính xác ở đó. Chúng ta cần xuất các thay đổi này ra Node Mirror để nó có thể duy trì một biểu diễn trạng thái chính xác cho các tài khoản hợp đồng.

Những thay đổi HAPI Xác định loại tin nhắn mới:

go

message ContractNonceInfo {

    /**
     * Id của hợp đồng
     */
    ContractID contract_id = 1;

    /**
     * Giá trị nonce hiện tại của tài khoản hợp đồng
     */
    int64 nonce = 2;
}

Cập nhật ContractFunctionResult:

r

message ContractFunctionResult {
    ...

    /**
     * Danh sách các nonces tài khoản hợp đồng đã cập nhật chứa giá trị nonce mới cho mỗi tài khoản hợp đồng
     */
    repeated ContractNonceInfo contract_nonces = 14;
}

Những thay đổi Node Mirror Node Mirror nên bắt đầu sử dụng trường contract_nonces mới và cập nhật trạng thái của các tài khoản hợp đồng với nó. Hơn nữa, các phản hồi của các điểm cuối /api/v1/contracts và api/v1/contract/{contractIdOrAddress} nên được cập nhật để trả lại giá trị nonce của hợp đồng:

json

{
  ...,
  "nonce": 1,
  ...
}

Những thay đổi SDK Các SDK sẽ cần hỗ trợ trả lại trường contract_nonces trong ContractFunctionResult.

Những thay đổi Node Mirror Explorer Công cụ khám phá node mirror sẽ cần hiển thị trường contract nonce khi giao diện REST API của node mirror có sẵn dữ liệu này.

Khả năng tương thích ngược HIP không giới thiệu bất kỳ thay đổi nào không tương thích ngược.

Tác động về bảo mật Không có.

Kết Luận

HIP-729 đại diện cho sự phấn đấu của mạng Hedera để mang lại những cải tiến mang tính đột phá trong việc quản lý tài khoản hợp đồng. Bằng cách loại bỏ việc sử dụng nonce, HIP-729 tạo ra một cách tiếp cận mới, tối ưu hóa hiệu suất và giúp các nhà phát triển dễ dàng xây dựng và tích hợp ứng dụng. Tuy nhiên, như bất kỳ cải tiến nào khác, HIP-729 cũng đi kèm với những thách thức và yêu cầu sự cân nhắc cẩn thận.

Click Digital

  • If you’d like to invest in blockchain advertising companies, just BUY token Saigon (SGN) at Pancakeswap: https://t.co/KJbk71cFe8 (do not worry about low liquidity)
  • Backed by Click Digital Company
  • Enhancing blockchain knowledge
  • BSC address: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
  • Twitter: https://twitter.com/SaigonSGN135
  • Staking SGN: http://135web.net
Rate this post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *