Nonce là gì?
Nonce là một giá trị duy nhất được thiết kế để chỉ sử dụng một lần trong một ngữ cảnh mật mã, blockchain hoặc hợp đồng thông minh cụ thể.Trong crypto, thuật ngữ này thường được hiểu là viết tắt của “number used once” (số được sử dụng một lần).Nonce có thể là bộ đếm giao dịch đơn giản, trường dữ liệu trong khai thác, giá trị ngẫu nhiên, đầu vào chữ ký, ID ủy quyền của hợp đồng thông minh hoặc số thứ tự dùng để ngăn một hành động bị lặp lại.Ý nghĩa chính xác tùy thuộc vào nơi nonce xuất hiện.Trong tài khoản Ethereum, nonce giúp sắp xếp giao dịch và ngăn cùng một giao dịch đã ký được thực thi nhiều lần.Trong block header của Bitcoin, nonce là trường mà thợ đào thay đổi khi tìm kiếm hash Proof of Work hợp lệ.Trong permit của token, nonce giúp ngăn cùng một chữ ký phê duyệt đã ký bị sử dụng lại.Trong chữ ký ECDSA, nonce có thể là giá trị bí mật riêng cho từng chữ ký; nếu tạo nonce không an toàn, khóa riêng tư có thể bị lộ.Vì cùng một thuật ngữ xuất hiện trong nhiều hệ thống crypto, người dùng nên xác định loại nonce đang được nói đến.Điểm chung quan trọng nhất là tính duy nhất.Nonce hữu ích vì giúp phân biệt một hành động, lần thử hash, thông điệp, giao dịch hoặc chữ ký với những đối tượng khác.Tính duy nhất này hỗ trợ bảo vệ chống phát lại, sắp xếp thứ tự, khai thác, an toàn mã hóa, bảo mật hợp đồng, khả năng sử dụng ví và bảo vệ khóa riêng tư.Những điểm chính về nonce
- Nonce là giá trị được dự định chỉ sử dụng một lần trong một ngữ cảnh xác định.
- Tài khoản Ethereum dùng nonce để sắp xếp giao dịch và ngăn giao dịch bị phát lại.
- Thợ đào Bitcoin thay đổi nonce trong block header khi tìm hash Proof of Work đáp ứng ngưỡng mục tiêu.
- Hợp đồng thông minh thường dùng nonce để ngăn permit, phiếu bầu, yêu cầu nhận thưởng và meta-transaction đã ký bị sử dụng lại.
- Permit ERC-2612 dùng nonce của chủ sở hữu để ngăn chữ ký phê duyệt token bị sử dụng lặp lại.
- Tài khoản thông minh ERC-4337 dùng mô hình nonce linh hoạt hơn cho quy trình account abstraction.
- EIP-155 bổ sung khả năng bảo vệ chống phát lại bằng chain ID, hoạt động cùng nonce giao dịch.
- Thông điệp có cấu trúc theo EIP-712 vẫn cần kiểm tra nonce ở cấp ứng dụng vì dữ liệu định kiểu không tự động ngăn mọi cuộc tấn công phát lại.
- Nonce ký ECDSA phải được giữ bí mật và duy nhất; việc dùng lại nonce hoặc tạo nonce theo quy luật dễ đoán có thể làm lộ khóa riêng tư.
- Người dùng không nên tự thay đổi nonce của ví nếu chưa hiểu giao dịch đang chờ xử lý và cơ chế thay thế.
Vì sao nonce quan trọng trong tiền mã hóa?
Nonce quan trọng vì blockchain dựa vào chữ ký, hash và các quy tắc xác định.Bất kỳ ai nhìn thấy chữ ký số hợp lệ đều có thể sao chép chính xác chữ ký đó.Nhiều node có thể phát lại một giao dịch.Hợp đồng thông minh có thể chấp nhận lại cùng một thông điệp đã ký nếu không kiểm tra thông điệp đó đã được dùng hay chưa.Thợ đào có thể thử nhiều đầu vào hash khi tìm block hợp lệ.Ví có thể tạo nhiều giao dịch từ cùng một địa chỉ và phải giữ chúng theo đúng thứ tự.Nonce giúp các hệ thống này tránh nhầm lẫn, trùng lặp, phát lại và tái sử dụng không an toàn.Nếu không có nonce, các hệ thống crypto sẽ khó phân biệt hành động mới với hành động cũ bị sao chép.Người dùng có thể phê duyệt người được phép sử dụng token một lần nhưng vô tình để cùng chữ ký đó bị dùng lại.Bridge có thể xử lý cùng một thông điệp liên chuỗi hai lần.Giao dịch có thể bị phát lại trên một blockchain khác.Ví ký giao dịch có thể làm lộ khóa riêng tư do nonce mật mã yếu.Nonce là giá trị nhỏ, nhưng giúp bảo vệ lượng tài sản kỹ thuật số rất lớn.Nonce tài khoản Ethereum
Nonce tài khoản Ethereum là bộ đếm gắn với một tài khoản.Tài liệu về tài khoản của Ethereum giải thích rằng tài khoản có trường nonce và mỗi tài khoản chỉ có thể thực thi một giao dịch với một nonce nhất định.
Với tài khoản do bên ngoài sở hữu, nonce đếm số giao dịch được gửi từ tài khoản đó.Với tài khoản hợp đồng, nonce liên quan đến các hợp đồng được tạo bởi tài khoản hợp đồng đó.Nếu một địa chỉ đã gửi thành công 25 giao dịch, giao dịch thông thường tiếp theo sẽ dùng nonce 25.Sau khi giao dịch đó được thực thi, giao dịch kế tiếp sẽ dùng nonce 26.Bộ đếm đơn giản này ngăn cùng một giao dịch được thực thi hai lần.Nó cũng tạo thứ tự cho các giao dịch từ cùng một địa chỉ.Thông thường, giao dịch có nonce 27 không thể được xử lý trước khi giao dịch có nonce 26 được xử lý.Đây là lý do một giao dịch bị kẹt có thể chặn các giao dịch tiếp theo từ cùng ví.Nonce giao dịch Ethereum
Nonce giao dịch Ethereum là một phần của dữ liệu giao dịch được ví ký.Tài liệu về giao dịch của Ethereum mô tả nonce là bộ đếm tăng tuần tự, cho biết số thứ tự giao dịch của tài khoản.
Nonce giao dịch giúp tạo hash giao dịch duy nhất.Nó cũng cho mạng biết vị trí của giao dịch trong chuỗi giao dịch của người gửi.Nếu hai giao dịch đang chờ từ cùng một tài khoản dùng chung nonce, chúng sẽ cạnh tranh cùng một vị trí.Chỉ một trong hai giao dịch có thể được thực thi.Đây là nguyên lý cơ bản để tăng tốc hoặc hủy giao dịch Ethereum.Người dùng có thể gửi giao dịch thay thế với cùng nonce và phí cao hơn.Nếu giao dịch thay thế được mạng chấp nhận và đưa vào trước, giao dịch đó sẽ sử dụng nonce và ngăn giao dịch trước đó được thực thi.Cơ chế này hữu ích nhưng có thể khiến người dùng bối rối nếu tự sửa nonce mà không hiểu hàng đợi giao dịch đang chờ.Nonce khai thác Bitcoin
Nonce khai thác Bitcoin khác với nonce tài khoản Ethereum.Tài liệu tham khảo về blockchain của Bitcoin mô tả nonce trong block header là một số tùy ý 32 bit mà thợ đào thay đổi để sửa hash của block header.
Thợ đào liên tục hash dữ liệu block header trong khi thay đổi nonce và các trường có thể điều chỉnh khác.Mục tiêu là tìm hash nhỏ hơn hoặc bằng ngưỡng mục tiêu hiện tại.Nếu thử hết các giá trị nonce 32 bit mà vẫn không tìm được block hợp lệ, thợ đào có thể cập nhật thời gian hoặc thay đổi giao dịch coinbase, qua đó làm thay đổi Merkle root.Nhờ vậy, thợ đào có thêm đầu vào hash để thử.Nonce khai thác không sắp xếp giao dịch của người dùng.Nó cũng không ngăn tấn công phát lại ví.Đây là biến dùng để tìm lời giải Proof of Work.Vì vậy, cùng một từ “nonce” có thể mang ý nghĩa rất khác nhau tùy blockchain và ngữ cảnh.Nonce trong Proof of Work
Trong khai thác Proof of Work, nonce giúp thợ đào tạo ra nhiều lần thử hash khác nhau.Hàm hash mật mã tạo đầu ra rất khác khi đầu vào chỉ thay đổi một chút.Thay đổi nonce sẽ làm thay đổi đầu vào block header.Đầu vào thay đổi sẽ làm hash thay đổi.Thợ đào liên tục thử các giá trị nonce khác nhau cho đến khi một hash đáp ứng mục tiêu độ khó của mạng.Trong ngữ cảnh này, nonce không phải bí mật.Khi tìm được block, mọi người đều có thể xem nonce và xác minh hash.Tính bảo mật đến từ lượng công việc lớn cần thiết để tìm hash hợp lệ, không phải từ việc che giấu nonce.Điều này khác với nonce chữ ký, thường phải được giữ bí mật.Nonce khai thác là công cụ công khai để tìm lời giải Proof of Work.Nonce để bảo vệ chống phát lại
Bảo vệ chống phát lại là một trong những công dụng quan trọng nhất của nonce trong crypto.Tấn công phát lại xảy ra khi ai đó sao chép một hành động đã ký hợp lệ rồi gửi lại hành động đó.Nonce ngăn việc này bằng cách khiến mỗi hành động đã ký chỉ có thể dùng một lần.Khi hành động được thực thi, nonce sẽ bị tiêu thụ, tăng lên hoặc được đánh dấu là đã dùng.Nếu ai đó gửi lại cùng hành động đã ký, bước kiểm tra nonce sẽ thất bại.Điều này quan trọng với giao dịch, phê duyệt token, yêu cầu nhận thưởng bằng hợp đồng thông minh, phiếu bầu quản trị, thông điệp bridge, đăng nhập ví và meta-transaction.Chữ ký hợp lệ chứng minh khóa đã phê duyệt một nội dung.Nonce hợp lệ chứng minh rằng sự phê duyệt chưa được sử dụng trong ngữ cảnh đó.Cần cả hai bước kiểm tra để ủy quyền crypto an toàn.Bảo vệ chống phát lại biến chữ ký bị sao chép từ mối đe dọa nghiêm trọng thành bản sao trùng lặp bị từ chối.Nonce và chain ID trong EIP-155
EIP-155 bổ sung một lớp bảo vệ chống phát lại bằng cách đưa chain ID vào dữ liệu giao dịch Ethereum đã ký.Đặc tả EIP-155 giải thích rằng thay đổi này giúp giao dịch hoạt động trên một blockchain nhưng không hoạt động trên blockchain khác dùng chain ID khác.
Điều này quan trọng vì nhiều blockchain tương thích EVM có thể dùng định dạng địa chỉ và cấu trúc giao dịch tương tự.Nonce giao dịch ngăn cùng một giao dịch tài khoản được thực thi hai lần trên cùng blockchain.Chain ID giúp ngăn giao dịch đã ký bị phát lại trên blockchain khác.Cả hai cơ chế đều quan trọng.Giao dịch có thể là duy nhất trên một blockchain nhưng vẫn nguy hiểm nếu hợp lệ trên blockchain khác.Chữ ký nhận biết chain giúp giảm rủi ro đó.Chữ ký ở cấp ứng dụng cũng nên bao gồm ngữ cảnh chain khi chain có ý nghĩa.Nonce không có domain phù hợp vẫn có thể được sử dụng trên quá nhiều ngữ cảnh.Nonce trong dữ liệu định kiểu EIP-712
EIP-712 là tiêu chuẩn để ký dữ liệu có cấu trúc và định kiểu.Đặc tả EIP-712 nêu rõ rằng bản thân tiêu chuẩn này không có cơ chế bảo vệ chống phát lại.
Vì vậy, nhà phát triển phải bổ sung cơ chế này trong ứng dụng hoặc hợp đồng thông minh xác minh chữ ký.Thông điệp định kiểu có thể chứa nonce.Hợp đồng phải kiểm tra nonce đó.Hợp đồng cũng phải đánh dấu nonce đã được dùng hoặc tăng nonce sau khi thực thi thành công.Nếu hợp đồng xác minh chữ ký nhưng quên cập nhật trạng thái nonce, chữ ký đó có thể tiếp tục được sử dụng.EIP-712 cải thiện khả năng đọc và phân tách domain, nhưng không thay thế việc thiết kế nonce cẩn thận.Chữ ký dữ liệu định kiểu an toàn nên có nonce, thời hạn, chain ID, hợp đồng xác minh và hành động chính xác được ủy quyền.Người dùng nên xem chữ ký dữ liệu định kiểu là quyền ủy quyền thực sự, không phải cửa sổ đăng nhập vô hại.Nonce trong Permit ERC-2612
Permit ERC-2612 cho phép chủ sở hữu token phê duyệt việc sử dụng token bằng thông điệp đã ký thay vì giao dịch phê duyệt trực tiếp trên chuỗi.Tiêu chuẩn ERC-2612 có hàm nonces và nêu rằng ánh xạ nonce được dùng để bảo vệ chống phát lại.
Khi permit thành công, nonce của chủ sở hữu tăng lên.Nhờ vậy, chữ ký permit đó không thể được sử dụng lại trong tương lai.ERC-2612 cũng có thời hạn để chữ ký phê duyệt hết hiệu lực.Điều này quan trọng vì relayer có thể nhận permit và tự chọn thời điểm gửi permit đó.Nếu không có thời hạn, chữ ký cũ có thể còn hiệu lực lâu hơn người dùng dự kiến.Nếu không có nonce, cùng một chữ ký phê duyệt có thể bị gửi nhiều lần.Nonce permit là một lý do quan trọng giúp phê duyệt không gas an toàn và thiết thực hơn.Chúng cũng cho thấy hợp đồng thông minh cần hệ thống nonce riêng, ngoài nonce giao dịch tài khoản thông thường.Nonce trong account abstraction ERC-4337
Account abstraction ERC-4337 sử dụng UserOperation thay cho giao dịch Ethereum thông thường từ tài khoản do bên ngoài sở hữu.Đặc tả ERC-4337 định nghĩa nonce của UserOperation là tham số chống phát lại.
Đặc tả cũng nêu rằng chữ ký phải phụ thuộc vào chain ID và địa chỉ EntryPoint để ngăn phát lại liên chuỗi hoặc phát lại giữa nhiều EntryPoint.ERC-4337 hỗ trợ mô hình nonce bán trừu tượng.Nonce có thể được chia thành key và sequence.Nhờ vậy, tài khoản thông minh có thể dùng nhiều làn nonce.Ví có thể dùng một làn cho giao dịch thông thường và làn khác cho hành động quản trị hoặc khôi phục.Mô hình này linh hoạt hơn một bộ đếm tuần tự đơn giản.Đồng thời, nó cũng phức tạp hơn đối với nhà phát triển ví và người dùng.Account abstraction giúp thiết kế nonce mạnh mẽ hơn, nhưng cũng làm tăng nhu cầu về giao diện ví rõ ràng.Làn nonce
Làn nonce là một chuỗi nonce độc lập trong thiết kế tài khoản hoặc tài khoản thông minh lớn hơn.Làn nonce cho phép các nhóm hành động khác nhau diễn ra song song.Ví dụ, ví có thể dùng một làn cho chi tiêu hằng ngày và một làn khác cho thao tác khôi phục.Ví game có thể dùng một làn cho các giao dịch giá trị thấp diễn ra thường xuyên và làn khác cho chuyển tài sản giá trị cao.Ví đăng ký có thể dùng một làn cho các khoản thanh toán định kỳ và làn khác cho giao dịch do người dùng quản lý.Lợi ích là một hành động bị kẹt không chặn mọi hành động khác.Rủi ro là người dùng có thể không hiểu mình đang ủy quyền cho làn nào.Nhà phát triển phải bảo đảm mỗi làn vẫn có cơ chế bảo vệ chống phát lại mạnh.Ví chỉ nên giải thích làn nonce khi người dùng cần biết.Thiết kế tốt nhất mang lại sự linh hoạt mà không phơi bày các chi tiết kỹ thuật khó hiểu.Nonce tuần tự
Nonce tuần tự là bộ đếm tăng thêm một sau mỗi hành động hợp lệ.Đây là mô hình phổ biến nhất cho giao dịch tài khoản thông thường.Nonce tuần tự dễ kiểm tra vì tạo ra thứ tự rõ ràng.Chúng cũng ngăn hai giao dịch từ cùng tài khoản, dùng cùng nonce, cùng được thực thi.Nhược điểm là giao dịch đến sau có thể bị chặn bởi giao dịch trước đang chờ xử lý.Điều này có thể khiến giao dịch bị kẹt.Người dùng có thể cần tăng tốc hoặc hủy giao dịch trước đó thì các giao dịch sau mới tiếp tục.Nonce tuần tự đáng tin cậy, đơn giản và được sử dụng rộng rãi.Chúng kém linh hoạt hơn đối với các hệ thống cần nhiều hành động độc lập diễn ra cùng lúc.Đây là lý do tài khoản hợp đồng thông minh và hệ thống ủy quyền đôi khi dùng các mô hình nonce khác.Nonce ngẫu nhiên
Nonce ngẫu nhiên là giá trị duy nhất được tạo bằng tính ngẫu nhiên thay vì bộ đếm đơn giản.Nonce ngẫu nhiên hữu ích khi các hành động không cần có thứ tự nghiêm ngặt.Hợp đồng thông minh có thể lưu ánh xạ các nonce ngẫu nhiên đã dùng.Khi một ủy quyền đã ký được sử dụng, hợp đồng đánh dấu nonce ngẫu nhiên đó là đã tiêu thụ.Nếu cùng ủy quyền xuất hiện lần nữa, hợp đồng sẽ từ chối.Nonce ngẫu nhiên cho phép nhiều hành động đã ký cùng tồn tại mà không chặn lẫn nhau.Nhược điểm là yêu cầu lưu trữ và chất lượng của tính ngẫu nhiên.Hợp đồng có thể cần lưu nhiều nonce đã sử dụng.Ví hoặc ứng dụng phải tránh tạo cùng nonce ngẫu nhiên hai lần trong cùng ngữ cảnh.Nonce ngẫu nhiên linh hoạt nhưng phải được theo dõi cẩn thận.Nonce hợp đồng thông minh
Nonce hợp đồng thông minh là bất kỳ hệ thống nonce nào do hợp đồng thông minh định nghĩa và lưu trữ.Nonce đó có thể là bộ đếm cho từng người dùng.Nó có thể là ánh xạ các ID thông điệp đã sử dụng.Nó có thể là chỉ mục yêu cầu nhận airdrop.Nó có thể là trạng thái bỏ phiếu cho một đề xuất quản trị.Nó có thể là hash lệnh trong marketplace.Nó có thể là số thứ tự thông điệp bridge.Nonce hợp đồng thông minh cần thiết vì nonce tài khoản thông thường không bảo vệ mọi chữ ký off-chain hoặc hành động ở cấp hợp đồng.Nếu hợp đồng chấp nhận chữ ký, hợp đồng phải xác định chữ ký đó đã được sử dụng hay chưa.Thiết kế nonce hợp đồng tốt ngăn việc thực thi lặp lại mà vẫn giúp trải nghiệm người dùng dễ quản lý.Nonce trong thông điệp đăng nhập ví
Thông điệp đăng nhập ví thường dùng nonce ngay cả khi không có giao dịch on-chain.Website có thể yêu cầu người dùng ký thông điệp để chứng minh họ kiểm soát địa chỉ ví.Website nên tạo nonce thử thách mới cho lần đăng nhập đó.Thông điệp đã ký nên có domain, nonce, thời điểm phát hành, thời hạn và mục đích.Sau khi đăng nhập thành công, máy chủ nên đánh dấu nonce đó là đã dùng.Nếu kẻ tấn công đánh cắp chữ ký đăng nhập cũ, nonce đã sử dụng sẽ ngăn việc phát lại.Nếu không có nonce mới, chữ ký đăng nhập có thể hoạt động như mật khẩu dùng đi dùng lại.Điều này nguy hiểm vì người dùng thường xem việc ký thông điệp là ít nghiêm trọng hơn giao dịch.Nonce đăng nhập ví là một phần của bảo mật tài khoản.Chữ ký đăng nhập tốt phải cụ thể, mới, giới hạn phạm vi và dễ đọc.Nonce trong chữ ký ECDSA
Chữ ký ECDSA dùng một giá trị bí mật riêng cho từng thông điệp, thường được gọi là nonce hoặc nonce ký.Loại nonce này khác với nonce giao dịch tài khoản.Nó phải bí mật và duy nhất cho mỗi chữ ký.RFC 6979 định nghĩa phương pháp xác định để tạo chữ ký DSA và ECDSA, tránh phụ thuộc vào việc tạo ngẫu nhiên mới cho mỗi chữ ký.
Tiêu chuẩn chữ ký số FIPS 186-5 của NIST nêu rằng ECDSA dùng một số bí mật riêng cho từng thông điệp trong quá trình tạo chữ ký.
Nếu nonce ECDSA bị dùng lại hoặc có thể dự đoán, kẻ tấn công có thể khôi phục khóa riêng tư.Nghiên cứu gần đây về rủi ro va chạm nonce ECDSA trong hoạt động blockchain thực tế cho thấy việc tạo nonce không đúng cách có thể gây hậu quả nghiêm trọng.
Đây là một trong những ý nghĩa nghiêm trọng nhất của nonce đối với bảo mật crypto.Nonce tài khoản không phù hợp có thể khiến giao dịch thất bại hoặc bị kẹt.Nonce ký ECDSA không an toàn có thể làm lộ toàn bộ ví.Nonce trong mã hóa
Một số hệ thống mã hóa cũng sử dụng nonce.Trong mã hóa có xác thực, nonce có thể giúp đầu ra mã hóa luôn duy nhất ngay cả khi cùng một khóa được dùng cho nhiều thông điệp.RFC 5116 định nghĩa giao diện cho mã hóa có xác thực kèm dữ liệu liên kết và thảo luận về các thuật toán AEAD sử dụng nonce.
Ví crypto, bản sao lưu được mã hóa, hệ thống nhắn tin bảo mật và phần mềm lưu ký có thể sử dụng nonce mã hóa nội bộ.Nonce mã hóa không giống nonce giao dịch blockchain.Chúng là một phần của cơ chế bảo vệ thông điệp bằng mật mã.Với nhiều phương thức mã hóa, dùng lại nonce với cùng khóa có thể gây nguy hiểm.Người dùng thường không tự quản lý các nonce này.Nhà phát triển và thư viện ví phải xử lý chúng chính xác.Phần mềm crypto an toàn xem việc tạo nonce là chi tiết tối quan trọng về bảo mật.Nonce và salt
Nonce và salt có liên quan nhưng không giống nhau.Nonce thường được tạo để duy nhất cho một lần sử dụng trong giao thức hoặc ngữ cảnh ký.Salt thường là dữ liệu ngẫu nhiên hoặc duy nhất được thêm vào hash, quy trình xử lý mật khẩu, commitment hoặc phép tính địa chỉ để tạo đầu ra khác biệt.Trong crypto, salt có thể được dùng khi triển khai hợp đồng theo cách xác định hoặc tạo commitment.Nonce có thể dùng để sắp xếp giao dịch hoặc ngăn phát lại.Cả hai giá trị đều có thể bổ sung tính duy nhất.Điểm khác nhau nằm ở vai trò bảo mật của chúng.Salt thường ngăn tính toán trước hoặc tạo tính duy nhất cho các giá trị được dẫn xuất.Nonce thường ngăn tái sử dụng hoặc tạo tính mới cho các hành động trong giao thức.Nhà phát triển nên đặt tên và ghi chú rõ các giá trị này để tránh sai sót bảo mật.Nonce và hash giao dịch
Nonce không giống hash giao dịch.Nonce là đầu vào được đưa vào giao dịch hoặc thông điệp giao thức.Hash giao dịch là mã định danh được tạo bằng cách hash dữ liệu giao dịch đã ký.Thay đổi nonce sẽ làm thay đổi hash giao dịch vì giao dịch đã ký cũng thay đổi.Ví có thể dùng nonce trước khi giao dịch được khai thác vào block.Trình khám phá blockchain thường hiển thị hash giao dịch sau khi giao dịch được phát đi hoặc đưa vào blockchain.Nonce cho mạng biết vị trí giao dịch trong chuỗi giao dịch của người gửi.Hash giao dịch giúp người dùng tìm và xác minh bản ghi giao dịch.Cả hai đều quan trọng nhưng có mục đích khác nhau.Nhầm lẫn giữa hai khái niệm có thể khiến việc khắc phục sự cố giao dịch khó hơn.Nonce và gas
Nonce không phải gas.Gas đo lường khối lượng tính toán và chi phí thực thi giao dịch.Nonce xác định thứ tự hoặc tính duy nhất của giao dịch.Giao dịch có thể có nonce đúng nhưng không đủ gas hoặc phí quá thấp.Giao dịch cũng có thể đủ gas nhưng nonce sai.Hai vấn đề này gây ra các lỗi khác nhau.Lỗi gas có thể khiến giao dịch thực thi thất bại hoặc có mức ưu tiên đưa vào block thấp.Lỗi nonce có thể khiến giao dịch bị từ chối, thay thế, trì hoãn hoặc bị giao dịch đang chờ có nonce thấp hơn chặn lại.Người dùng thường thấy cả hai cài đặt trong các công cụ ví nâng cao.Không nên tùy tiện chỉnh sửa một trong hai cài đặt này.Nonce và việc tạo địa chỉ hợp đồng
Nonce cũng có thể ảnh hưởng đến địa chỉ hợp đồng.Trên các hệ thống tương tự Ethereum, địa chỉ của hợp đồng được tạo bằng thao tác create truyền thống được suy ra từ địa chỉ của bên tạo và nonce của bên đó.Điều này có nghĩa là cùng một tài khoản có thể tạo các địa chỉ hợp đồng khác nhau khi nonce thay đổi.Nhà phát triển cần hiểu cơ chế này khi triển khai hợp đồng, thử nghiệm triển khai hoặc dự đoán địa chỉ.Tập lệnh triển khai hợp đồng có thể thất bại nếu nonce dự kiến khác nonce thực tế của tài khoản.Giao dịch đang chờ có thể thay đổi thứ tự triển khai.Sai sót khi nhập nonce thủ công có thể khiến hợp đồng được triển khai tại địa chỉ ngoài dự kiến.Phương pháp triển khai xác định có thể dùng cơ chế khác, nhưng việc quản lý nonce vẫn quan trọng với quy trình triển khai thông thường.Với những lần triển khai quan trọng, nhóm nên dùng tập lệnh triển khai được kiểm soát và xác minh địa chỉ trước khi công bố.Địa chỉ triển khai sai có thể khiến người dùng nhầm lẫn và làm hỏng các tích hợp.Nonce và giao dịch bị kẹt
Giao dịch thường bị kẹt khi giao dịch có phí thấp vẫn ở trạng thái chờ.Nếu giao dịch đó dùng nonce tiếp theo của tài khoản, các giao dịch sau có thể phải chờ phía sau.Điều này xảy ra vì nonce tuần tự yêu cầu xử lý các vị trí nonce trước đó trước.Ví có thể hiển thị các giao dịch sau là đang chờ ngay cả khi chúng có phí cao.Vấn đề thực sự có thể nằm ở giao dịch cũ hơn có nonce thấp hơn.Người dùng thường có thể tăng tốc giao dịch bị kẹt bằng cách thay thế giao dịch đó bằng giao dịch có cùng nonce và phí cao hơn.Người dùng thường có thể hủy giao dịch bị kẹt bằng cách gửi một giao dịch thay thế không gây hại, dùng cùng nonce và phí cao hơn.Cần thực hiện các thao tác này cẩn thận.Thay thế nhầm nonce có thể hủy hoặc ghi đè hành động mà người dùng vẫn muốn thực hiện.Việc khắc phục sự cố nonce là một lý do khiến cài đặt ví nâng cao có thể gây rủi ro cho người mới.Nonce và thay thế giao dịch
Thay thế giao dịch là sử dụng cùng nonce để thay thế một giao dịch đang chờ.Giao dịch thay thế cạnh tranh với giao dịch ban đầu để sử dụng cùng một vị trí nonce.Nếu giao dịch thay thế được chấp nhận và xác nhận trước, giao dịch ban đầu sẽ không còn hợp lệ vì nonce đã được sử dụng.Cơ chế này hữu ích khi người dùng muốn tăng phí cho giao dịch chậm.Nó cũng hữu ích khi người dùng muốn hủy giao dịch đang chờ trước khi giao dịch được xác nhận.Thay thế không có nghĩa blockchain xóa một giao dịch đã xác nhận.Chỉ có thể thay thế khi giao dịch trước vẫn đang chờ.Khi giao dịch đã được xác nhận, nonce đã bị tiêu thụ.Sau đó, người dùng không thể dùng lại nonce đó cho giao dịch khác.Đây là lý do thời điểm rất quan trọng khi quản lý giao dịch đang chờ.Nonce và bridge
Bridge dùng nonce hoặc ID thông điệp để ngăn cùng một thông điệp liên chuỗi bị xử lý hai lần.Thông điệp bridge có thể đại diện cho thao tác nạp token, rút, mint, burn hoặc gọi hợp đồng.Nếu blockchain đích chấp nhận cùng thông điệp nhiều lần, tài sản có thể bị giải ngân hoặc mint sai.Thông điệp bridge an toàn nên có blockchain nguồn, blockchain đích, hợp đồng nguồn, hợp đồng đích, người gửi, người nhận, số lượng và nonce hoặc ID thông điệp duy nhất.Hợp đồng đích nên đánh dấu thông điệp đã được xử lý.Nếu ai đó gửi lại cùng thông điệp, hợp đồng nên từ chối.Thiết kế nonce của bridge đặc biệt quan trọng vì bridge kết nối các hệ thống đồng thuận khác nhau.Lỗi phát lại trên bridge có thể tạo rủi ro mang tính hệ thống cho nhiều blockchain.Người dùng nên xem bảo mật bridge là vấn đề riêng, không đồng nhất với bảo mật của chính token.Token có thể an toàn trong khi hệ thống thông điệp bridge lại không an toàn.Nonce và quản trị
Hệ thống quản trị dùng trạng thái tương tự nonce để ngăn bỏ phiếu, ủy quyền và thực thi đề xuất lặp lại.Thông thường, mỗi lá phiếu chỉ nên được tính một lần theo snapshot quyền biểu quyết hoặc quy tắc bỏ phiếu được xác định rõ.Chữ ký ủy quyền không nên được sử dụng lại mãi mãi, trừ khi thiết kế cho phép rõ ràng.Không nên thực thi đề xuất hai lần, trừ khi hợp đồng cố ý hỗ trợ việc đó.Thông điệp quản trị có thể cần ID đề xuất, nonce của người bỏ phiếu, chain ID, thời hạn và bước kiểm tra trạng thái thực thi.Điều này đặc biệt quan trọng khi quản trị kiểm soát ngân quỹ, nâng cấp, phí, tham số rủi ro hoặc kết nối bridge.Hành động quản trị bị phát lại có thể nguy hiểm hơn một khoản thanh toán thất bại.Nó có thể thay đổi quy tắc của toàn bộ giao thức.Hợp đồng quản trị tốt xem cơ chế chống phát lại là tính năng an toàn cốt lõi.Người bỏ phiếu có trách nhiệm nên xem xét hành động mình sắp ký trước khi phê duyệt.Nonce và yêu cầu nhận airdrop
Airdrop và hệ thống phần thưởng thường dùng cơ chế bảo vệ tương tự nonce để ngăn yêu cầu nhận lặp lại.Hợp đồng có thể lưu thông tin địa chỉ đã nhận thưởng hay chưa.Hợp đồng có thể lưu chỉ mục yêu cầu Merkle đã được sử dụng hay chưa.Hợp đồng có thể dùng thông điệp nhận thưởng đã ký, bao gồm nonce, ID chiến dịch, số lượng token, thời hạn và địa chỉ người nhận.Nếu thiếu cơ chế bảo vệ này, một yêu cầu hợp lệ có thể bị dùng lại cho đến khi quỹ thưởng cạn kiệt.Hệ thống nhận thưởng tốt sẽ ràng buộc yêu cầu với đúng người dùng, chiến dịch, blockchain, token, số lượng và khoảng thời gian.Người dùng nên thận trọng khi ký thông điệp nhận thưởng từ website không quen thuộc.Chữ ký nhận thưởng có thể ủy quyền nhiều hơn một yêu cầu nhận phần thưởng vô hại nếu nội dung thông điệp gây hiểu lầm.Bảo vệ bằng nonce ngăn việc sử dụng lặp lại, nhưng không khiến lần sử dụng đầu tiên mang tính độc hại trở nên an toàn.Giao diện ví rõ ràng vẫn rất quan trọng.Nonce và DeFi
DeFi sử dụng nonce theo nhiều cách khó nhận thấy.Permit token dùng nonce cho phê duyệt đã ký.Meta-transaction dùng nonce cho các hành động không gas.Giao thức cho vay có thể dùng nonce cho ủy quyền hoặc phê duyệt tín dụng đã ký.Hệ thống lệnh phi tập trung có thể dùng nonce hoặc hash lệnh để ngăn lệnh đã khớp được khớp lại.Quyền chọn, vault và sản phẩm cấu trúc có thể dùng nonce trong báo giá off-chain hoặc thông điệp quyết toán.Bot thanh lý và hệ thống giao dịch cũng phải quản lý nonce tài khoản cẩn thận vì giao dịch bị kẹt có thể chặn các hành động nhạy cảm về thời gian.Trong DeFi, sai sót về nonce có thể nhanh chóng gây thiệt hại tài chính.Chữ ký phê duyệt cũ có thể trở thành rủi ro khiến ví bị rút cạn.Không cập nhật nonce có thể khiến hợp đồng bị tấn công phát lại.Nonce giao dịch sai có thể khiến một giao dịch có lợi nhuận thất bại.Nonce và NFT
Hệ thống NFT cũng dùng nonce trong lệnh niêm yết marketplace, giá chào mua, permit, yêu cầu nhận thưởng và giao dịch chuyển token dựa trên chữ ký.Người bán có thể ký một lệnh off-chain để bán NFT.Hợp đồng marketplace phải ngăn cùng một lệnh đã ký được khớp nhiều hơn số lần cho phép.Có thể thực hiện điều này bằng nonce lệnh, hash lệnh, bộ đếm hủy hoặc ánh xạ trạng thái khớp.Nếu lệnh NFT có thể bị phát lại sau khi bán hoặc hủy, người bán có thể bất ngờ mất tài sản.Nếu chữ ký giá chào mua bị phát lại sau khi điều kiện thay đổi, người mua có thể mua thứ họ không còn muốn mua.Chữ ký NFT nên bao gồm địa chỉ collection, token ID, giá, đơn vị thanh toán, điều kiện người mua hoặc người bán, thời hạn, chain ID và nonce.Người dùng không nên ký thông điệp niêm yết NFT mơ hồ.Họ cũng nên hủy các lệnh niêm yết cũ khi cần.An toàn nonce là một phần của an toàn marketplace.Nonce và an toàn khóa riêng tư
Chất lượng nonce có thể ảnh hưởng trực tiếp đến độ an toàn của khóa riêng tư trong các thuật toán chữ ký.Điều này quan trọng nhất với các hệ thống dùng ECDSA.Nếu cùng nonce ký ECDSA được dùng cho hai thông điệp khác nhau, khóa riêng tư có thể bị khôi phục.Nếu nonce ký tuân theo quy luật dễ dự đoán, kẻ tấn công cũng có thể khôi phục khóa trong một số điều kiện.Vì vậy, nhà phát triển ví dựa vào các thư viện mật mã đã được đánh giá.Người dùng không nên tự tạo phần mềm ký cho ví giá trị cao nếu không có chuyên gia mật mã kiểm tra.Lỗi nonce giao dịch có thể nhìn thấy và khắc phục được.Lỗi nonce ký có thể âm thầm làm lộ khóa riêng tư.Ví phần cứng và thư viện phần mềm đã hoàn thiện giúp giảm rủi ro này.Không nên đi đường tắt khi tạo nonce mật mã.Các loại nonce phổ biến trong crypto
- Nonce tài khoản sắp xếp giao dịch từ một tài khoản blockchain.
- Nonce giao dịch được đưa vào dữ liệu giao dịch đã ký để làm giao dịch trở nên duy nhất.
- Nonce khai thác được thợ đào Proof of Work điều chỉnh để tìm hash block hợp lệ.
- Nonce permit ngăn chữ ký phê duyệt token bị dùng nhiều lần.
- Nonce hợp đồng thông minh ngăn việc thực thi lặp lại các ủy quyền ở cấp hợp đồng.
- Nonce thông điệp bridge ngăn cùng một thông điệp liên chuỗi bị xử lý hai lần.
- Nonce đăng nhập tạo thử thách xác thực ví mới.
- Nonce chữ ký là giá trị bí mật riêng cho mỗi thông điệp, được một số thuật toán chữ ký số sử dụng.
- Nonce mã hóa giúp thông điệp được mã hóa trở nên duy nhất khi dùng cùng khóa.
- Làn nonce là chuỗi nonce độc lập được một số thiết kế tài khoản thông minh sử dụng.
Các lỗi thường gặp khi sử dụng nonce
Một lỗi phổ biến là cho rằng mọi nonce đều có cùng ý nghĩa.Lỗi khác là tự sửa nonce giao dịch mà không kiểm tra các giao dịch đang chờ.Lỗi thứ ba là ký dữ liệu định kiểu không có nonce.Lỗi thứ tư là xác minh chữ ký hợp đồng thông minh nhưng quên đánh dấu nonce đã dùng.Lỗi thứ năm là dùng nonce mà không có chain ID hoặc không phân tách domain của hợp đồng xác minh.Lỗi thứ sáu là cho rằng EIP-712 tự động bảo vệ chống phát lại.Lỗi thứ bảy là dùng tính ngẫu nhiên yếu cho nonce ngẫu nhiên.Lỗi thứ tám là dùng lại hoặc làm lộ nonce ký ECDSA.Lỗi thứ chín là cho rằng nonce ngăn được phishing.Lỗi thứ mười là quên chuyển trạng thái nonce khi nâng cấp hợp đồng.Thực tiễn tốt nhất dành cho nhà phát triển
Xác định mục đích của nonce trước khi viết mã.Dùng nonce tuần tự khi cần thứ tự nghiêm ngặt.Dùng nonce ngẫu nhiên hoặc nonce được ánh xạ khi các ủy quyền độc lập cần được thực thi song song.Đưa chain ID và địa chỉ hợp đồng xác minh vào dữ liệu đã ký khi ngữ cảnh có ý nghĩa.Đặt thời hạn hoặc khoảng thời gian hiệu lực cho chữ ký off-chain.Đánh dấu nonce đã sử dụng trong quá trình thực thi thành công.Kiểm thử các lần thử phát lại trong kiểm thử đơn vị và kiểm thử tích hợp.Dùng thư viện mật mã đã được đánh giá để xử lý nonce chữ ký và nonce mã hóa.Tránh tự tạo nonce ECDSA, trừ khi phương pháp đó dựa trên các tiêu chuẩn được đánh giá kỹ lưỡng.Ghi rõ cách hoạt động của nonce để ví, trình lập chỉ mục, kiểm toán viên và người dùng hiểu được.Thực tiễn tốt nhất dành cho người dùng
Để ví tự quản lý nonce giao dịch thông thường, trừ khi bạn hiểu thứ tự giao dịch đang chờ.Kiểm tra xem giao dịch có bị kẹt hay không trước khi gửi nhiều giao dịch mới từ cùng ví.Thận trọng khi dùng tính năng tăng tốc hoặc hủy để thay thế giao dịch.Đọc thông điệp permit token trước khi ký.Kiểm tra địa chỉ bên được cấp quyền, số lượng, blockchain, thời hạn và ứng dụng trước khi phê duyệt chữ ký.Không ký thông điệp đăng nhập ví từ domain đáng ngờ.Đừng cho rằng chữ ký thông điệp an toàn chỉ vì nó không lập tức chuyển tiền.Sử dụng phần mềm ví đáng tin cậy và tránh công cụ ký không rõ nguồn gốc.Bảo vệ ví phần cứng và phương thức khôi phục khi số dư có giá trị cao.Hãy nhớ rằng bảo vệ bằng nonce có thể ngăn việc dùng lại, nhưng không thể khiến chữ ký xấu trở nên vô hại.Khi nào nonce quan trọng nhất?
Nonce quan trọng nhất khi chữ ký có thể chuyển giá trị hoặc thay đổi trạng thái quan trọng.Nonce quan trọng khi gửi giao dịch blockchain thông thường.Nonce quan trọng khi phê duyệt chi tiêu token bằng permit.Nonce quan trọng khi ký lệnh marketplace.Nonce quan trọng khi gửi thông điệp bridge.Nonce quan trọng khi bỏ phiếu hoặc ký ủy quyền quản trị.Nonce quan trọng khi nhận airdrop hoặc phần thưởng.Nonce quan trọng khi đăng nhập bằng chữ ký ví.Nonce quan trọng khi tạo chữ ký ECDSA.Nonce quan trọng ở mọi nơi mà việc tái sử dụng, phát lại hoặc dễ dự đoán có thể gây thiệt hại tài chính.Nonce trong một câu
Nonce là giá trị duy nhất được sử dụng một lần trong ngữ cảnh blockchain, mật mã hoặc hợp đồng thông minh, nhằm hỗ trợ sắp xếp giao dịch, khai thác Proof of Work, bảo vệ chống phát lại, bảo mật chữ ký, an toàn mã hóa và hoạt động đáng tin cậy của ví.FAQ
Nonce có nghĩa là gì trong crypto?
Trong crypto, nonce là giá trị duy nhất được sử dụng một lần trong ngữ cảnh cụ thể, chẳng hạn như bộ đếm giao dịch, trường khai thác, ID thông điệp đã ký hoặc giá trị ký mật mã.Nonce Ethereum là gì?
Nonce Ethereum là bộ đếm giúp sắp xếp giao dịch từ một tài khoản và ngăn cùng nonce giao dịch bị thực thi hai lần.Nonce Bitcoin là gì?
Nonce Bitcoin là trường trong block header mà thợ đào thay đổi khi tìm hash Proof of Work đáp ứng mục tiêu của mạng.Vì sao ví sử dụng nonce?
Ví dùng nonce để tạo chuỗi giao dịch hợp lệ, ngăn phát lại, thay thế giao dịch đang chờ và theo dõi giao dịch tiếp theo cần thực hiện.Tôi có thể tự thay đổi nonce không?
Có, một số ví cho phép chỉnh sửa nonce thủ công, nhưng người dùng chỉ nên làm vậy nếu hiểu các giao dịch đang chờ và quy tắc thay thế.Điều gì xảy ra nếu hai giao dịch dùng cùng nonce?
Chỉ một giao dịch có cùng người gửi và nonce có thể được thực thi, nên các giao dịch đó cạnh tranh cùng một vị trí.Vì sao giao dịch của tôi bị kẹt do nonce?
Giao dịch đến sau có thể bị chặn nếu giao dịch trước đó có nonce thấp hơn vẫn đang chờ.Nonce ngăn tấn công phát lại như thế nào?
Nonce ngăn tấn công phát lại bằng cách khiến hành động đã ký chỉ dùng được một lần, để hệ thống từ chối cùng nonce sau khi nonce đó được tiêu thụ.EIP-712 có tự động xử lý nonce không?
Không. EIP-712 cấu trúc dữ liệu định kiểu, nhưng nhà phát triển vẫn phải thêm và thực thi bước kiểm tra nonce trong hợp đồng hoặc ứng dụng.Nonce permit là gì?
Nonce permit là nonce của chủ sở hữu token, dùng để ngăn cùng chữ ký phê duyệt token đã ký bị gửi nhiều lần.Nonce ký là gì?
Nonce ký là giá trị bí mật riêng cho từng thông điệp được một số thuật toán chữ ký sử dụng; xử lý không đúng cách có thể làm lộ khóa riêng tư.Nonce có luôn phải bí mật không?
Không. Nonce tài khoản và nonce khai thác thường công khai, còn một số nonce ký mật mã phải được giữ bí mật.Kết luận
Nonce là một từ ngắn nhưng có nhiều ý nghĩa quan trọng trong tiền mã hóa.Về cốt lõi, nonce liên quan đến tính duy nhất.Tính duy nhất đó giúp các hệ thống crypto phân biệt từng giao dịch, thông điệp, chữ ký, lần thử hash hoặc hành động hợp đồng.Trong Ethereum, nonce tài khoản sắp xếp giao dịch và ngăn cùng một giao dịch bị thực thi hai lần.Trong khai thác Bitcoin, nonce của block header là biến để thợ đào thay đổi khi tìm hash Proof of Work hợp lệ.Trong hợp đồng thông minh, nonce ngăn permit, yêu cầu nhận thưởng, phiếu bầu, lệnh và thông điệp bridge đã ký bị phát lại.Trong account abstraction, mô hình nonce linh hoạt hơn cho phép ví thông minh hỗ trợ quy trình song song và logic ủy quyền nâng cao.Trong chữ ký ECDSA, chất lượng nonce có thể quyết định khóa riêng tư được an toàn hay có thể bị kẻ tấn công khôi phục.Các ý nghĩa này có chung nguyên tắc nhưng không cùng cơ chế.Nonce khai thác công khai và được thử nhiều lần.Nonce tài khoản công khai và tuần tự.Nonce hợp đồng có thể là bộ đếm được lưu trữ hoặc ánh xạ các thông điệp đã dùng.Nonce permit bảo vệ chữ ký phê duyệt.Nonce ký phải bí mật và được tạo an toàn.Vì vậy, ngữ cảnh rất quan trọng mỗi khi thuật ngữ này xuất hiện.Với người dùng, bài học thực tế nhất về nonce là để ví tự xử lý thứ tự giao dịch thông thường, trừ khi thật sự cần thao tác thủ công.Người dùng nên thận trọng với giao dịch bị kẹt, giao dịch tăng tốc, thao tác hủy và cài đặt nonce thủ công.Họ cũng nên đọc kỹ yêu cầu ký vì thông điệp off-chain có thể chứa nonce nhưng vẫn ủy quyền cho hành động gây hại.Với nhà phát triển, bài học quan trọng nhất là phải thiết kế rõ ràng cơ chế bảo vệ chống phát lại.Mọi chữ ký có thể chuyển giá trị hoặc thay đổi trạng thái quan trọng đều nên có nonce, domain, thời hạn khi phù hợp và thông tin hành động rõ ràng.Hợp đồng phải kiểm tra và tiêu thụ nonce đúng cách.Ví nên giải thích bằng ngôn ngữ đơn giản nội dung người dùng đang ủy quyền.Mã mật mã nên dùng thư viện đã được đánh giá và phương thức tạo nonce an toàn.Sai sót nonce có thể trông nhỏ trong quá trình phát triển nhưng gây hậu quả nghiêm trọng sau khi triển khai.Thiếu bước kiểm tra nonce có thể cho phép yêu cầu nhận thưởng hoặc phê duyệt bị lặp lại.Nonce tài khoản sai có thể chặn giao dịch.Nonce ECDSA yếu có thể làm lộ khóa riêng tư.Thiếu chain ID có thể cho phép phát lại liên chuỗi.Thông điệp bridge không được theo dõi nonce đúng cách có thể bị xử lý hai lần.Vì vậy, an toàn nonce không phải chi tiết kỹ thuật tùy chọn.Đây là một phần nền tảng giúp tài sản crypto được chuyển đi, hợp đồng được thực thi, thợ đào tìm lời giải, ví ký giao dịch và người dùng tin rằng một lần phê duyệt chỉ tương ứng với một hành động đã định.Có thể bạn cũng thích
WhatsMiner M30S++
Tên miền Web3
Dự án Web3
HOT
Tiền mã hoá thịnh hành hiện nay đang thu hút sự chú ý đáng kể của thị trường
TOP KL
Tiền mã hoá có khối lượng giao dịch cao nhất
Mới được thêm vào
Tiền mã hoá được niêm yết gần đây có thể giao dịch

