-
Notifications
You must be signed in to change notification settings - Fork 11.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Francisco Giordano <fg@frang.io>
- Loading branch information
Showing
9 changed files
with
20 additions
and
156 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,30 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.19; | ||
|
||
import "./Counters.sol"; | ||
|
||
/** | ||
* @dev Provides tracking nonces for addresses. Nonces will only increment. | ||
*/ | ||
abstract contract Nonces { | ||
using Counters for Counters.Counter; | ||
|
||
mapping(address => Counters.Counter) private _nonces; | ||
mapping(address => uint256) private _nonces; | ||
|
||
/** | ||
* @dev Returns an address nonce. | ||
*/ | ||
function nonces(address owner) public view virtual returns (uint256) { | ||
return _nonces[owner].current(); | ||
return _nonces[owner]; | ||
} | ||
|
||
/** | ||
* @dev Consumes a nonce. | ||
* | ||
* Returns the current value and increments nonce. | ||
*/ | ||
function _useNonce(address owner) internal virtual returns (uint256 current) { | ||
Counters.Counter storage nonce = _nonces[owner]; | ||
current = nonce.current(); | ||
nonce.increment(); | ||
function _useNonce(address owner) internal virtual returns (uint256) { | ||
// For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be | ||
// decremented or reset. This guarantees that the nonce never overflows. | ||
unchecked { | ||
// It is important to do x++ and not ++x here. | ||
return _nonces[owner]++; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters