NFE - Audit

CertiKFiles named in the report

CertiK reviewed NFE (NFE - Audit) on 9 Nov 2022: 12 findings, 0 critical; 2 marked fixed, 2 acknowledged, 8 open.

No open critical findings
Open the reportOpen NFE’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings12

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High020
Medium001
Low801
LowContract Lacks Function ImplementationsOpen

The contract `NonFungibleEstate` may assign its own address as the `protections` address. The contract however lacks certain implementations of the `Protections1 interface and functions `setLpPair()`, and `removeSniper()` each shadowing the `Protections` function and would result in an infinite loop.

LowFunction Should Be Declared ExternalOpen

The functions which are never called internally within the contract should have external visibility for gas optimization. ```solidity=289 function transfer(address recipient, uint256 amount) public override returns (bool) { ``` --- ```solidity=370 function getCirculatingSupply() public view returns (uint256) { ``` --- ```solidity=561 function enableTrading() public onlyOwner { ```

LowMissing Allowance ResetOpen

```solidity=322 function setNewRouter(address newRouter) external onlyOwner { require(!_hasLiqBeenAdded, "Cannot change after development."); IRouter02 _newRouter = IRouter02(newRouter); address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; _approve(address(this), address(dexRouter), type(uint256).max); } ``` When the dex router is changed to a new one, the new router is approved for a maximum allowance from the contract. But the allowance for the old dex router is still greater than zero.

LowMissing Emit EventsOpen

There should always be events emitted in the sensitive functions that are controlled by centralization roles.

LowMissing Zero Address ValidationOpen

Addresses should be checked before assignment or external call to make sure they are not zero addresses. ```solidity=265 operator = newOperator; ``` - `newOperator` is not zero-checked before being used.

LowThird Party DependencyOpen

The contract is serving as the underlying entity to interact with one or more third party protocols. The scope of the audit treats third party entities as black boxes and assume their functional correctness. However, in the real world, third parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of third parties can possibly create severe impacts, such as increasing fees of third parties, migrating to new LP pools, etc. ```solidity=148 IRouter02 public dexRouter; ``` - The contract `NonFungibleEstate` interacts with third party contract with `IRouter02` interface via `dexRouter`. --- ```solidity=171 Protections protections; ``` - The contract `NonFungibleEstate` interacts with third party contract with `Protections` interface via `protections`.

LowUnnecessary checks to `block.chainid`Open

Inside the constructor, there are multiple checks for chain deployment. Since this is unnecessary in production, this could be removed to avoid spending useless gas.

LowUsage of `transfer` for sending EtherOpen

It is not recommended to use Solidity's `transfer()` and `send()` functions for transferring Ether, since some contracts may not be able to receive the funds. Those functions forward only a fixed amount of gas (2300 specifically) and the receiving contracts may run out of gas before finishing the transfer. Also, EVM instructions' gas costs may increase in the future. Thus, some contracts that can receive now may stop working in the future due to the gas limitation. ```solidity=577 payable(_owner).transfer(address(this).balance); ``` - `NonFungibleEstate.sweepContingency` uses `transfer()`.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (1)

  • contracts/NonFungibleEstate.sol

Part of NFE’s security record

NFE
Audits1 audit by 1 firmLast audit Nov 2022, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open NFE’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us