Contract 0xd7936052d1e096d48c81ef3918f9fd6384108480 15
Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
SeriesNonceManager
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; pragma abicoder v1; /// @title A helper contract to manage nonce with the series contract SeriesNonceManager { error AdvanceNonceFailed(); event NonceIncreased(address indexed maker, uint256 series, uint256 newNonce); // { // 1: { // '0x762f73Ad...842Ffa8': 0, // '0xd20c41ee...32aaDe2': 1 // }, // 2: { // '0x762f73Ad...842Ffa8': 3, // '0xd20c41ee...32aaDe2': 15 // }, // ... // } mapping(uint256 => mapping(address => uint256)) public nonce; /// @notice Advances nonce by one function increaseNonce(uint8 series) external { advanceNonce(series, 1); } /// @notice Advances nonce by specified amount function advanceNonce(uint256 series, uint256 amount) public { if (amount == 0 || amount > 255) revert AdvanceNonceFailed(); unchecked { uint256 newNonce = nonce[series][msg.sender] + amount; nonce[series][msg.sender] = newNonce; emit NonceIncreased(msg.sender, series, newNonce); } } /// @notice Checks if `makerAddress` has specified `makerNonce` for `series` /// @return Result True if `makerAddress` has specified nonce. Otherwise, false function nonceEquals(uint256 series, address makerAddress, uint256 makerNonce) public view returns(bool) { return nonce[series][makerAddress] == makerNonce; } /// @notice Checks passed time against block timestamp /// @return Result True if current block timestamp is lower than `time`. Otherwise, false function timestampBelow(uint256 time) public view returns(bool) { return block.timestamp < time; // solhint-disable-line not-rely-on-time } function timestampBelowAndNonceEquals(uint256 timeNonceSeriesAccount) external view returns(bool) { uint256 _time = uint40(timeNonceSeriesAccount >> 216); uint256 _nonce = uint40(timeNonceSeriesAccount >> 176); uint256 _series = uint16(timeNonceSeriesAccount >> 160); address _account = address(uint160(timeNonceSeriesAccount)); return timestampBelow(_time) && nonceEquals(_series, _account, _nonce); } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
[{"inputs":[],"name":"AdvanceNonceFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"maker","type":"address"},{"indexed":false,"internalType":"uint256","name":"series","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newNonce","type":"uint256"}],"name":"NonceIncreased","type":"event"},{"inputs":[{"internalType":"uint256","name":"series","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"advanceNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"series","type":"uint8"}],"name":"increaseNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"series","type":"uint256"},{"internalType":"address","name":"makerAddress","type":"address"},{"internalType":"uint256","name":"makerNonce","type":"uint256"}],"name":"nonceEquals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"timestampBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeNonceSeriesAccount","type":"uint256"}],"name":"timestampBelowAndNonceEquals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061030b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806363592c2b1161005057806363592c2b146101285780637a37dc2c14610145578063976222211461016557600080fd5b80632cc2878d146100775780634a7f2a4b146100a85780635d3a09dc14610103575b600080fd5b6100946004803603602081101561008d57600080fd5b50356101b8565b604080519115158252519081900360200190f35b6100f1600480360360408110156100be57600080fd5b5060006020818152823582526040808320825292013573ffffffffffffffffffffffffffffffffffffffff168152205481565b60408051918252519081900360200190f35b6101266004803603604081101561011957600080fd5b5080359060200135610220565b005b6100946004803603602081101561013e57600080fd5b5035421090565b6101266004803603602081101561015b57600080fd5b503560ff166102c4565b6100946004803603606081101561017b57600080fd5b5080356000908152602081815260408083208285013573ffffffffffffffffffffffffffffffffffffffff16845290915290819020549101351490565b600060d882901c60b083901c64ffffffffff1661ffff60a085901c16846101de84421090565b8015610216575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205483145b9695505050505050565b80158061022d575060ff81115b15610264576040517fbd71636d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832033808552908352928190208054850190819055815186815292830181905281519093927fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac192908290030190a2505050565b6102d28160ff166001610220565b5056fea26469706673582212200b1a6c091be9f676e58f9ebb89a234b4458d9dd7724e30ca38b42875a55a7eb764736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100725760003560e01c806363592c2b1161005057806363592c2b146101285780637a37dc2c14610145578063976222211461016557600080fd5b80632cc2878d146100775780634a7f2a4b146100a85780635d3a09dc14610103575b600080fd5b6100946004803603602081101561008d57600080fd5b50356101b8565b604080519115158252519081900360200190f35b6100f1600480360360408110156100be57600080fd5b5060006020818152823582526040808320825292013573ffffffffffffffffffffffffffffffffffffffff168152205481565b60408051918252519081900360200190f35b6101266004803603604081101561011957600080fd5b5080359060200135610220565b005b6100946004803603602081101561013e57600080fd5b5035421090565b6101266004803603602081101561015b57600080fd5b503560ff166102c4565b6100946004803603606081101561017b57600080fd5b5080356000908152602081815260408083208285013573ffffffffffffffffffffffffffffffffffffffff16845290915290819020549101351490565b600060d882901c60b083901c64ffffffffff1661ffff60a085901c16846101de84421090565b8015610216575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205483145b9695505050505050565b80158061022d575060ff81115b15610264576040517fbd71636d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832033808552908352928190208054850190819055815186815292830181905281519093927fdc0537f71d06d3708f52baf4ddf6918b25f1a145ba08873de27485682b35cac192908290030190a2505050565b6102d28160ff166001610220565b5056fea26469706673582212200b1a6c091be9f676e58f9ebb89a234b4458d9dd7724e30ca38b42875a55a7eb764736f6c63430008110033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.