Hehe token

CertiK1 address on Ethereum

CertiK reviewed HeHe (Hehe token) on 7 Dec 2023: 8 findings, 0 critical; 4 marked fixed, 3 acknowledged, 1 open.

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

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings8

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

SeverityOpenAcknowledgedFixed
Critical000
High101
Medium000
Low033
HighCentralization Related RisksFixed

### Ownable In the contract `Ownable` the role `_owner` has authority over the functions listed below. - transferOwnership(): transfer ownership of the contract to a new account. - renounceOwnership(): leave the contract without owner. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and manage the ownership of the contract. ### LzApp In the contract `LzApp` the role `_owner` has authority over the functions listed below. - setConfig(): set the configuration of the LayerZero messaging library of the specified version. - setSendVersion(): set the `send()` LayerZero messaging library version to `_version`. - setReceiveVersion(): set the `lzReceive()` LayerZero messaging library version to `_version` - forceResumeReceive(): only when the UA needs to resume the message flow in blocking mode and clear the stored payload. - setTrustedRemote(): manage state variable `trustedRemoteLookup`. - setTrustedRemoteAddress(): manage state variable `trustedRemoteLookup`. - setPrecrime(): manage state variable `precrime`. - setMinDstGas(): manage state variable `minDstGasLookup`. - setPayloadSizeLimit(): manage state variable `payloadSizeLimitLookup`. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and manage the configuration of the contract. ### OFTCore In the contract `OFTCore` the role `_owner` has authority over the functions listed below. - setUseCustomAdapterParams(): manage state variable `useCustomAdapterParams` Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and manage the configuration of the contract.

LowLack of Input ValidationFixed

In the function `setTrustedRemote()`, it is noted that `_path` should be `abi.encodePacked(address, address)`. However, the `bytes calldata _path` is missing a sanity check for ensuring it is correct(e.g. address size == 20 bytes on EVM chains), which may cause the contract can not work as intended. Similar issue happens in the other functions, which contain `bytes calldata` or `bytes memory` address input.

LowMissing Emit EventsFixed

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

LowMissing Zero Address ValidationFixed

Addresses are not validated before assignment or external calls, potentially allowing the use of zero addresses and leading to unexpected behavior or vulnerabilities. For example, transferring tokens to a zero address can result in a permanent loss of those tokens. ```solidity=119 precrime = _precrime; ``` - `_precrime` is not zero-checked before being used. ```solidity=32 lzEndpoint = ILayerZeroEndpoint(_endpoint); ``` - `_endpoint` is not zero-checked before being used.

Contracts in scope1

AddressChainSource code
0x488cf9905cd9f5dea7212b4571c8b1052631ab8dChain: EthereumSource code: Verified source

Part of HeHe’s security record

HeHe
Audits1 audit by 1 firmLast audit Dec 2023, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open HeHe’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