Nonce
Khi một giao dịch được băm bởi người khai thác, một số tùy ý chỉ được sử dụng một lần sẽ được tạo, được gọi là nonce.
Nonce là gì?
Nonce (nghĩa đen – cho một trường hợp) là một cách để xâu chuỗi và tách biệt các giao dịch trên chuỗi khối Ethereum và các nền tảng hợp đồng thông minh khác. Nói chung, nó được sử dụng trong mật mã như một số không lặp lại để đảm bảo thông tin liên lạc.
Ví Ethereum có thể truyền nhiều giao dịch từ một tài khoản mà không có nhiều độ trễ giữa các tài khoản khác, đến mạng chính. Do đó, cần phải có một cơ chế có thể xác định giao dịch nào được xử lý trước. Nếu không, sẽ có trục trặc do các giao dịch xung đột liên quan đến chuyển số dư tài khoản.
Ví dụ: nếu một giao dịch được truyền phát có giá trị nonce là 2, thì nó phải được xử lý đầu tiên trước giao dịch có giá trị nonce là 3. Mạng chính Ethereum được thiết kế theo cách sao cho giao dịch có giá trị nonce cao hơn không thể được đưa vào trong bất kỳ khối nào cho đến khi những khối trước chúng được xóa và giải quyết trên chuỗi.
Tuy nhiên, quá trình này có thể có vấn đề vì nếu giao dịch có giá trị nonce thấp hơn bị kẹt (do lượng gas), tất cả các giao dịch nhận được sau đó với giá trị nonce cao hơn cũng sẽ bị kẹt.
Quá trình hủy giao dịch và tăng tốc giao dịch trên mạng Ethereum cũng sử dụng “nonce” làm cơ sở của nó. Ví dụ: nếu người dùng muốn hủy giao dịch, anh ta có thể gửi giao dịch đến ví của chính mình với cùng số nonce với giao dịch mà anh ta đang cố gắng hủy. Tuy nhiên, điều này không phải lúc nào cũng được đảm bảo, vì nếu nonce giống nhau, thì bất kỳ giao dịch nào cũng có thể được chấp thuận ngẫu nhiên.
Trong trường hợp giao dịch bị kẹt và không được chấp thuận, người dùng có thể tăng giá gas và gửi giao dịch tương tự với cùng một số nonce. Vì số nonce giống nhau trong khi phí đã tăng lên, giao dịch này có xác suất được xác thực cao hơn. Một số ví có cả hai chức năng này tự động.
Nonce
When a transaction is hashed by a miner, an arbitrary number meant to be used only once is generated, called a nonce.
What Is a Nonce?
Nonce (literal meaning — for one occasion) is a way to sequence and segregate transactions on the Ethereum blockchain and other smart contract platforms. Generally, it is used in cryptography as a non-repeated number for securing communication.
An Ethereum wallet can broadcast multiple transactions from an account, without much delay between one another, to the mainnet. Hence, it is necessary to have a mechanism which can determine which transaction is processed first. Otherwise, there would be malfunctions caused by conflicting transactions associated with account balance transfers.
For example, if a broadcasted transaction has a nonce value of 2, it must be processed first before the transaction with nonce value of 3. The Ethereum mainnet is designed in such a manner that a higher-nonce-value transaction couldn’t be included in any blocks until the ones before them are cleared and settled on-chain.
However, this process can have issues since if a transaction with a lower nonce value is stuck (owing to the gas amount), all transactions received afterwards with nonce values higher would also be stuck.
The process of transaction cancellation and transaction speeding on the Ethereum network also uses “nonce” as its basis. For instance, if a user wishes to cancel a transaction, he can send a transaction to his own wallet with the same nonce number as the transaction he is attempting to cancel. It’s not always guaranteed, though, since if the nonce is the same, any transaction might get randomly approved.
In case a transaction is stuck and does not get approved, users can raise the gas price and send the same transaction with the same nonce number. Since the nonce number is the same while the fee has been bumped, this transaction has a higher probability of being validated. Some wallets have both of these functions automated.