EYBlockchain / nightfall_3

a mono-repo containing an optimistic version of nightfall
Creative Commons Zero v1.0 Universal
261 stars 57 forks source link

Issues from Static Analysis in Smart Contracts #880

Closed israelboudoux closed 2 years ago

israelboudoux commented 2 years ago

Please, refer to the ticket #6 to see the list of issues detected in our Smart Contracts.

Westlad commented 2 years ago

No actions were found necessary from the Mythril analysis. Details are provided under Action Taken in the following:

Tests using Mythril. Issues were found only in State.sol and Proposers.sol contratcts, here is the report:

Analysis results for #Proposers.sol

Dependence on predictable environment variable

Description

A control flow decision is made based on The block.timestamp environment variable. The block.timestamp environment variable is used to determine a control flow decision. Note that the values of variables like coinbase, gaslimit, block number and timestamp are predictable and can be manipulated by a malicious miner. Also keep in mind that attackers know hashes of earlier blocks. Don't use any of those environment variables as sources of randomness and be aware that use of these variables introduces a certain level of trust into miners. In file: Proposers.sol:101

Code

require(
            bond.time + COOLING_OFF_PERIOD < block.timestamp,
            'It is too soon to withdraw your bond'
        )

Action Taken

NO-ACTION: The timestamp can be changed by a miner by ~15 seconds. This does not affect the integrity of a bond withdrawal.

Initial State:

Account: [CREATOR], balance: 0x410c0400000883, nonce:0, storage:{} Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}

Transaction Sequence

Caller: [CREATOR], calldata: , value: 0x0 Caller: [SOMEGUY], function: withdrawBond(), txdata: 0x66eb9cec, value: 0x0

Dependence on predictable environment variable

Description

A control flow decision is made based on The block.number environment variable. The block.number environment variable is used to determine a control flow decision. Note that the values of variables like coinbase, gaslimit, block number and timestamp are predictable and can be manipulated by a malicious miner. Also keep in mind that attackers know hashes of earlier blocks. Don't use any of those environment variables as sources of randomness and be aware that use of these variables introduces a certain level of trust into miners. In file: Proposers.sol:27

Code

require(
            block.number - state.getProposerStartBlock() > ROTATE_PROPOSER_BLOCKS,
            "It's too soon to rotate the proposer"
        )

Action Taken

NO-ACTION: A malicious miner could change the time at which the block appears slightly (as measured by the block timestamp) and this may affect (within ~15s), the apparent time at which a block appears but that has no affect on the integrity of the proposer rotation.

Initial State:

Account: [CREATOR], balance: 0x20d9fbd, nonce:0, storage:{} Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}

Transaction Sequence

Caller: [CREATOR], calldata: , value: 0x0 Caller: [SOMEGUY], function: changeCurrentProposer(), txdata: 0x77603f4a, value: 0x0

Dependence on predictable environment variable

Description

A control flow decision is made based on The block.number environment variable. The block.number environment variable is used to determine a control flow decision. Note that the values of variables like coinbase, gaslimit, block number and timestamp are predictable and can be manipulated by a malicious miner. Also keep in mind that attackers know hashes of earlier blocks. Don't use any of those environment variables as sources of randomness and be aware that use of these variables introduces a certain level of trust into miners. In file: #utility.yul:613

Code

th_t_array$_t_uint64_$2_memory_ptr(va

Action Taken

NO-ACTION: Unclear which code is being referred to here but it seems to be a re-statement of the previous concern.

Initial State:

Account: [CREATOR], balance: 0x1, nonce:0, storage:{} Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}

Transaction Sequence

Caller: [CREATOR], calldata: , value: 0x0 Caller: [ATTACKER], function: changeCurrentProposer(), txdata: 0x77603f4a, value: 0x0


Analysis results for State.sol

External Call To User-Supplied Address

Description

A call to a user-supplied address is executed. An external message call to an address specified by the caller is executed. Note that the callee account might contain arbitrary code and could re-enter any function within this contract. Reentering the contract in an intermediate state may lead to unexpected behaviour. Make sure that no state modifications are executed after this call and/or reentrancy guards are in place. In file: State.sol:233

Code

payable(msg.sender).call{value: amount}('')

Action Taken

NO-ACTION: This function uses a reentrancy guard.

Initial State:

Account: [CREATOR], balance: 0x1000400016dd5, nonce:0, storage:{} Account: [ATTACKER], balance: 0x21080490920482001, nonce:0, storage:{}

Transaction Sequence

Caller: [CREATOR], calldata: , value: 0x0 Caller: [ATTACKER], function: withdraw(), txdata: 0x3ccfd60b, value: 0x0

State access after external call

Description

Write to persistent state following external call The contract account state is accessed after an external call to a user defined address. To prevent reentrancy issues, consider accessing the state only before the call, especially if the callee is untrusted. Alternatively, a reentrancy lock can be used to prevent untrusted callees from re-entering the contract in an intermediate state. In file: @openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol:66

Code

_status = _NOT_ENTERED

Action Taken

NO-ACTION: This is an Openzeppelin contract. We accept these as correct.

Initial State:

Account: [CREATOR], balance: 0x41000000013d9d, nonce:0, storage:{} Account: [ATTACKER], balance: 0x11080092424488001, nonce:0, storage:{}

Transaction Sequence

Caller: [CREATOR], calldata: , value: 0x0 Caller: [ATTACKER], function: withdraw(), txdata: 0x3ccfd60b, value: 0x0

Westlad commented 2 years ago

No actions were found necessary following the Slither analysis. The NO-ACTIONS headers below the summary explain why:

This was another Static Test run using Slither. The command used was slither . --exclude msg-value-loop,delegatecall-loop --checklist --markdown-root https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/ > slither-nightfall-results.MD which generates a file with the name slither-nightfall-results.MD containing the content of the analyze. I had to exclude some the detectors msg-value-loop and delegatecall-loop, because the tool was failing during the analyze.

There should be some false positives, like the three ones with Severity = HIGH. Most of the warnings are "Informational", but there are some with LOW (25) and MEDIUM (28) severity.

Please, ignore the ones related to OpenZeppelin. The tool doesn't have an option to ignore warnings in libraries.


Summary

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L28

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L16

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L17

locked-ether

Impact: Medium Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L18-L375

uninitialized-local

Impact: Medium Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L72

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L70

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Proposers.sol#L58

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L92

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L498

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L480

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L61

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L503

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L70

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L476

unused-return

Impact: Medium Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L117-L196

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L87-L115

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L488-L509

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L203-L236

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L467-L486

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L59-L80

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L87-L115

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L243-L303

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L117-L196

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L33-L50

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L117-L196

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L394-L416

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L203-L236

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L59-L80

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L33-L50

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L117-L196

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L117-L196

shadowing-local

Impact: Low Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC721Mock.sol#L13

missing-zero-check

Impact: Low Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L56

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L42

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L44

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L46

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/SimpleMultiSig.sol#L117

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L31

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L43

incorrect-modifier

Impact: Low Confidence: High

variable-scope

Impact: Low Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L503

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L401

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L480

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L498

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L403

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L476

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L403

reentrancy-events

Impact: Low Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Proposers.sol#L26-L35

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L225-L252

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Proposers.sol#L38-L84

timestamp

Impact: Low Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L117-L140

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L150-L176

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L306-L324

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L49-L90

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Proposers.sol#L99-L112

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L81-L174

assembly

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L67-L80

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L85-L111

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L90-L192

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L394-L416

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#L174-L194

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L151-L185

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Address.sol#L201-L221

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33-L62

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L50-L64

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L12-L25

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L81-L174

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L9-L522

boolean-equal

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L49-L90

pragma

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L12

dead-code

Impact: Informational Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L33-L40

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L29-L31

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L113-L121

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L15-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L68-L74

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L123-L137

solc-version

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L3

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pausable.sol#L6

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Key_Registry.sol#L3

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Migrations.sol#L2

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L2

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L28

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Structures.sol#L6

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC721Mock.sol#L2

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L5

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC1155Mock.sol#L2

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Strings.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Address.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC20Mock.sol#L2

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Counters.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Ownable.sol#L3

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L14

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L3

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/IERC1155.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Proposers.sol#L7

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Stateful.sol#L9

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L9

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L4

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L3

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/SimpleMultiSig.sol#L47

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Context.sol#L4

low-level-calls

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Address.sol#L184-L193

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#L60-L65

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L225-L252

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Address.sol#L60-L65

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Address.sol#L128-L139

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L49-L90

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/utils/Address.sol#L157-L166

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#L128-L139

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Proposers.sol#L38-L84

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/SimpleMultiSig.sol#L117-L138

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol#L157-L166

missing-inheritance

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L22-L324

naming-convention

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L16-L193

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L92

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-IERC20PermitUpgradeable.sol#L59

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L21-L26

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L64

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Migrations.sol#L6

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L55

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L84

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L56

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L44

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#L36

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#L44-L46

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Key_Registry.sol#L22

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33-L62

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L67-L80

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L42

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L93

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L116

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L21

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Key_Registry.sol#L8-L32

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L64

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L77

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#L40-L42

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L21

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/SimpleMultiSig.sol#L71

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#L21-L22

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L64

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Ownable.sol#L20

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L43

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#L74

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L39-L43

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L54

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L15-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L33-L40

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L67

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L50

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L49

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Pairing.sol#L29-L31

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MerkleTree_Stateless.sol#L93

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L64-L75

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L66

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L77-L82

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L77

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L34-L36

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L56

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol#L18-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Key_Registry.sol#L21

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L45-L51

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L68

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L64

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L38-L40

similar-names

Impact: Informational Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L92

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L207

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L103

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L92

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L90

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L206

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L208

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Challenges.sol#L206

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L104

too-many-digits

Impact: Informational Confidence: Medium

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Shield.sol#L287-L323

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC1155Mock.sol#L13-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L9-L140

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Poseidon.sol#L9-L522

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L34-L41

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC1155Mock.sol#L13-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC1155Mock.sol#L13-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L15-L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L33-L62

unimplemented-functions

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L18-L375

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L13-L101

unused-state

Impact: Informational Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L9

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L11

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L9

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol#L74

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L14

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L9

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L11

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L13

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L10

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L9

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L29

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L116

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L14

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L18

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol#L116

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L10

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L13

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L11

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L19

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L14

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L12

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L14

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Config.sol#L13

constable-states

Impact: Optimization Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L29

external-function

Impact: Optimization Confidence: High

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L351-L360

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L158-L167

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L305-L307

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L17-L25

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L180-L182

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L247-L249

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L86-L88

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L59-L61

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L87-L99

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L347-L349

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L117-L129

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L21-L26

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L184-L186

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L134-L146

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L164-L170

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L84-L92

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L292-L303

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L201-L210

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L343-L345

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L192-L194

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L70-L72

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L243-L245

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L101-L103

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L113-L117

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L181-L185

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L288-L290

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L200-L202

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L150-L159

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Migrations.sol#L16-L18

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L112-L122

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L235-L237

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L93-L100

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Verifier.sol#L53-L63

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L196-L198

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Ownable.sol#L56-L60

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L87-L89

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L372-L374

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L256-L263

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L41-L50

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L62-L64

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L284-L286

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Utils.sol#L19-L32

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L228-L233

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L79-L81

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L82-L98

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L204-L211

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L224-L226

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L251-L254

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/mocks/ERC721Mock.sol#L13-L24

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC1155/ERC1155.sol#L103-L105

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L188-L190

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L368-L370

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L312-L325

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/Key_Registry.sol#L29-L31

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L94-L96

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol#L136-L140

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L62-L65

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L327-L341

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L27-L52

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/State.sol#L362-L366

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/MiMC.sol#L77-L82

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol#L136-L138

https://github.com/EYBlockchain/nightfall_3/blob/master/nightfall-deployer/contracts/ChallengesUtil.sol#L101-L139