Trong một số trường hợp, giao dịch mà bạn đã khởi tạo hoặc đã phê duyệt có thể cần được điều chỉnh hoặc hủy bỏ trước khi được xác nhận trên blockchain. Ledger Multisig cung cấp các công cụ để quản lý những giao dịch “đang chờ” này, chủ yếu dựa trên cơ chế nonce mật mã.
Tìm hiểu về Nonces
Thuật ngữ nonce (number used once) đóng vai trò cực kỳ quan trọng trong Ethereum và các blockchain tương thích EVM. Trong ngữ cảnh này, nonce đề cập đến account nonce, hay còn gọi là transaction nonce, và đây không phải là một con số ngẫu nhiên dùng cho việc tạo khối mà thực chất là một bộ đếm tuần tự được gắn liền với từng địa chỉ Ethereum cụ thể.
Nonce (viết tắt của number used once) là những chuỗi số 32 bit ngẫu nhiên được sử dụng trong quá trình khai thác khối (block) mới trong blockchain Proof-of-Work (PoW). Số nonce là số được tạo ngẫu nhiên và chỉ được sử dụng một lần trong giao dịch mật mã. Trong các giao dịch blockchain, nonce được sử dụng để tạo ra một giá trị băm duy nhất cần thiết để xác nhận tính xác thực của giao dịch.
Sở dĩ account nonce có ý nghĩa then chốt là vì nó đảm nhiệm nhiều chức năng cốt lõi trong hoạt động của mạng lưới:
- Đảm bảo thứ tự giao dịch: mọi giao dịch được gửi từ một địa chỉ Ethereum đều mang theo một account nonce duy nhất. Nonce này bắt đầu từ 0 cho giao dịch đầu tiên và tăng dần từng đơn vị cho mỗi giao dịch gửi đi tiếp theo từ cùng địa chỉ đó, đồng thời mạng Ethereum chỉ xử lý các giao dịch theo đúng thứ tự tăng dần của nonce, do đó nếu bạn gửi một giao dịch với nonce là 5 trong khi nonce 4 vẫn chưa được xử lý, giao dịch nonce 5 sẽ bị giữ ở trạng thái pending (đang chờ) cho đến khi nonce 4 được xác nhận, qua đó tránh nhầm lẫn và đảm bảo chuỗi sự kiện trên blockchain diễn ra chính xác.
- Ngăn chặn các cuộc tấn công replay: đây có lẽ là chức năng quan trọng nhất của account nonce, bởi nếu không có cơ chế này, kẻ xấu hoàn toàn có thể chặn một giao dịch đã được bạn ký (ví dụ gửi 1 ETH cho người khác) và phát tán lại giao dịch đó nhiều lần lên mạng, khiến mỗi lần phát lại đều được xem là hợp lệ và dẫn đến việc tài sản bị chuyển trái phép nhiều lần. Trong khi đó việc buộc mỗi nonce chỉ được sử dụng duy nhất một lần cho mỗi địa chỉ sẽ khiến mạng lưới ngay lập tức từ chối mọi giao dịch dùng lại nonce đã sử dụng, từ đó loại bỏ hoàn toàn nguy cơ replay attack.
- Duy trì tính nhất quán của trạng thái: bằng cách đảm bảo rằng các giao dịch là duy nhất và được xử lý đúng thứ tự, account nonce giữ vai trò nền tảng trong việc bảo toàn tính toàn vẹn và trạng thái nhất quán của toàn bộ blockchain, cho phép mọi node trong mạng có thể tái dựng chính xác lịch sử giao dịch cũng như số dư hiện tại của bất kỳ tài khoản nào chỉ dựa trên việc xử lý các giao dịch theo nonce tương ứng.
Thay thế một giao dịch
Nếu một giao dịch bị treo (ví dụ do phí gas quá thấp) hoặc bạn cần thay đổi các tham số của giao dịch như địa chỉ người nhận hoặc số lượng tài sản, bạn hoàn toàn có thể thay thế giao dịch đó bằng cách gửi một giao dịch mới sử dụng cùng nonce nhưng với mức phí gas cao hơn.
Cách chọn nonce để thay thế một giao dịch đang chờ bằng giao dịch mới
- Trong giao diện Ledger Multisig, trước hết hãy truy cập danh sách Pending Transactions (Danh sách đang chờ) và tìm giao dịch bạn muốn thay thế, sau đó ghi lại nonce của giao dịch đó.
- Tiếp theo, tạo một giao dịch mới với các tham số mong muốn.
- Tại phần tùy chọn nâng cao, hãy tìm mục cho phép chỉ định nonce thủ công và nhập đúng nonce của giao dịch đang chờ cần thay thế.
- Để đảm bảo giao dịch mới được mạng lưới xử lý trước giao dịch cũ, bạn cần thiết lập mức phí gas cao hơn cho giao dịch mới này.
Lưu ý rằng, theo kinh nghiệm thực tế, bạn nên tăng phí gas ít nhất khoảng 10–20% so với giao dịch ban đầu. - Sau đó, đề xuất giao dịch mới. Giao dịch này vẫn sẽ yêu cầu các Signer (Ví xác nhận giao dịch) phê duyệt bằng thiết bị Ledger của họ như mọi giao dịch multisig khác. Các Signer sẽ thấy rõ chi tiết giao dịch mới cũng như mức phí gas cao hơn trực tiếp trên màn hình thiết bị Ledger thông qua cơ chế Clear Signing. Khi giao dịch mới có cùng nonce và phí gas cao hơn được xác nhận trên blockchain, giao dịch đang chờ ban đầu với nonce đó sẽ bị hủy hiệu lực hoặc bị ghi đè hoàn toàn.
Từ chối một giao dịch
Trong trường hợp bạn chỉ muốn hủy một giao dịch đang chờ đã được đề xuất và đã có chữ ký, bạn có thể thực hiện điều này bằng cách gửi một giao dịch “hủy” sử dụng cùng nonce. Cách này đôi khi còn được gọi là “đẩy nhanh giao dịch giá trị bằng 0” hoặc “giao dịch rỗng”.
Cách hủy một giao dịch pending on-chain bằng cùng nonce
- Truy cập danh sách Pending Transactions (Danh sách đang chờ) và xác định giao dịch bạn muốn hủy, đồng thời ghi lại nonce của giao dịch đó.
- Nhấn Cancel (Huỷ) để bắt đầu thao tác hủy.
- Sau đó, đề xuất giao dịch hủy này. Giao dịch sẽ yêu cầu các Signer cần thiết phê duyệt thông qua thiết bị Ledger. Trên thiết bị, các Signer sẽ thấy một giao dịch có giá trị “0” gửi đến chính địa chỉ multisig, kèm theo nonce và phí gas tương ứng.
Khi giao dịch giá trị 0 này, với phí gas cao hơn và cùng nonce, được xác nhận trên blockchain, nonce đó sẽ bị “tiêu thụ”, khiến giao dịch pending ban đầu thất bại hoặc bị loại khỏi mempool của mạng.
Xóa khỏi hàng đợi (Cục bộ)
Nếu một giao dịch đã được khởi tạo nhưng chưa nhận được bất kỳ chữ ký nào (vẫn ở trạng thái “Initiating” hoặc chỉ mới được người khởi tạo ký nếu họ đồng thời là Signer), thì người khởi tạo có thể xóa giao dịch đó khỏi hàng đợi.
- Không ảnh hưởng on-chain: Đây chỉ là thao tác cục bộ trong giao diện ứng dụng và hoàn toàn không tương tác với blockchain.
- Chỉ người khởi tạo: Thông thường, chỉ người khởi tạo ban đầu của giao dịch mới có quyền xóa giao dịch khỏi chế độ xem cục bộ trước khi bất kỳ Signer nào bắt đầu phê duyệt.
- Tìm tùy chọn “Cancel”: Hãy tìm nút “Cancel” bên cạnh giao dịch chưa được ký trong danh sách đang chờ hoặc đã xếp hàng (đã được phê duyệt và đang chờ những Signer còn lại phê duyệt nốt).
Lưu ý quan trọng: Các thao tác on-chain yêu cầu chữ ký và phát sinh phí gas
- Việc thay thế (Replacing) và từ chối (Rejecting) giao dịch theo cách on-chain hoàn toàn không miễn phí, bởi đây là các giao dịch mới được gửi lên blockchain.
- Cả hai thao tác này đều yêu cầu các Signer của multisig phê duyệt dựa trên ngưỡng chữ ký, tương tự như bất kỳ giao dịch gửi tài sản nào khác.
- Đồng thời, các thao tác này sẽ tiêu tốn phí gas, được trừ từ số dư tiền mã hóa gốc của multisig, vì vậy bạn cần đảm bảo ví multisig có đủ số dư để chi trả.
- Luôn sử dụng Clear Signing trên thiết bị Ledger để kiểm tra kỹ mọi chi tiết của giao dịch mới (dù là thay thế hay hủy) trước khi phê duyệt, nhằm chắc chắn rằng bạn hiểu rõ và hoàn toàn nhận thức được hành động mình đang ủy quyền.
Việc quản lý hiệu quả các giao dịch pending sẽ mang lại sự linh hoạt và khả năng kiểm soát cao hơn, giúp multisig của bạn vận hành trơn tru ngay cả khi điều kiện mạng hoặc nhu cầu giao dịch thay đổi.

