NOAH’ARK

CertiK2 addresses on BNB Chain

CertiK reviewed Noah (NOAH’ARK) on 24 Mar 2023: 11 findings, 0 critical; none marked fixed.

No open critical findings
Open Noah’s security record

The original report was removed from its address (seen 19 Oct 2026).

Trustblock does not review code.

Findings11

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

SeverityOpenAcknowledgedFixed
Critical000
High100
Medium000
Low1000
HighInitial Token DistributionOpen

All **Noah** tokens are sent to the deployer assigned address `addr` when deploying the contract. This is a potential centralization risk as the deployer can distribute **Noah** tokens without the consensus of the community.

LowFunction `transfer` of Contract `Token` Fails onOpen

It is expected that invocations of the form `transfer(recipient, amount)` succeed and return `true` if * The address in `recipient` is not the zero address, * `amount` does not exceed the balance of address `msg.sender`, * transferring `amount` to the address `recipient` does not lead to an overflow of the recipient's balance, and * the supplied gas suffices to complete the call. Nevertheless, the `transfer` function of `Token` fails in some of those admissible cases.

LowFunction `transfer` of Contract `Token` Fails onOpen

It is expected that invocations of the form `transfer(recipient, amount)` where the address in `recipient` equals the address in `msg.sender` (i.e. self-transfers) succeed and return `true` if * The value in `amount` does not exceed the balance of `msg.sender` and * the supplied gas suffices to complete the call. Nevertheless, the `transfer` function of `Token` fails in some of those admissible cases.

LowFunction `transfer` of Contract `Token` Handles SOpen

It is expected that non-reverting invocations of `transfer(recipient, amount)` that return `true` and where the address in `recipient` equals the address of `msg.sender` (i.e. self-transfers) do not change the balance of address `msg.sender`. However, in `Token.transfer` the balance of address `msg.sender` is changed by executing a self-transfer.

LowFunction `transferFrom` of Contract `Token` FailsOpen

It is expected that invocations of `transferFrom(from, dest, amount)` succeed and return `true` if * the value of `amount` does not exceed the balance of address `from`, * the value of `amount` does not exceed the allowance of `msg.sender` for address `from`, * transferring a value of `amount` to the address in `dest` does not lead to an overflow of the recipient's balance, and * the supplied gas suffices to complete the call. Nevertheless, the `transferFrom` function of `Token` fails in some of those admissible cases.

LowFunction `transferFrom` of Contract `Token` FailsOpen

It is expected that invocations of `transferFrom(from, dest, amount)` where the address in `dest` equals the address in `from` (i.e. self-transfers) succeed and return `true` if: * The value of `amount` does not exceed the balance of address `from`, * the value of `amount` does not exceed the allowance of `msg.sender` for address `from`, and * the supplied gas suffices to complete the call. Nevertheless, the `transferFrom` function of `Token` fails for some self-transfers in these admissible cases.

LowFunction `transferFrom` of Contract `Token` ModifOpen

It is expected that non-reverting invocations of `transferFrom(from, dest, amount)` that return `true` and where the address in `from` equals the address in `dest` (i.e. self-transfers) do not change the balance entry of the address in `from` (which equals `dest`). However, in `Token.transferFrom`, at least one balance entry of the addresses provided in the `from` or `dest` input parameters is changed when executing a self-transfer.

LowFunction `transferFrom` of Contract `Token` TransOpen

It is expected that all invocations of `transferFrom(from, dest, amount)` that succeed (i.e. that do not revert) and that return `true` subtract the value in `amount` from the balance entry for the address in `from` and add the same value to the balance entry for the address in `dest`. However, the amount that the `transferFrom` function in `Token` deducts from the balance of address `from` is not always equal to the amount that it credits to the balance of the recipient's address in `dest`.

LowMissing Zero Address ValidationOpen

Addresses should be checked before assignment or external call to make sure they are not zero addresses. ```solidity=599 _marketAddress = marketAddress_; ``` - `marketAddress_` is not zero-checked before being used. --- ```solidity=660 _marketAddress = marketAddress; ``` - `marketAddress` is not zero-checked before being used.

LowState Variable Should Be Declared ConstantOpen

State variables that never change should be declared as `constant` to save gas. ```solidity=584 uint16 public _marketRatio = 2; ``` - `_marketRatio` should be declared `constant`.

Show 1 more
LowUnnecessary Use of SafeMathOpen

The `SafeMath` library is used unnecessarily. With Solidity compiler versions 0.8.0 or newer, arithmetic operations will automatically revert in case of integer overflow or underflow. ```solidity=126 library SafeMath { ``` - An implementation of `SafeMath` library is found. --- ```solidity=572 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `Token` contract.

Contracts in scope2

AddressChainSource code
0x494aed889b52baa32bec68460ab9786a3e41078fChain: BNB ChainSource code: Verified source
0xcf968cec61c8883c1b52f3bc8a87c3101734bba3Chain: BNB ChainSource code: Verified source

Part of Noah’s security record

Noah
Audits2 audits by 1 firmLast audit Jul 2023, by CertiK.
Critical findingsNo open critical findingsAcross 2 reports.
Open Noah’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