HanIdentity - Addendum

CertiKFiles named in the report

CertiK reviewed HANeP (HanIdentity - Addendum) on 27 Jun 2023: 13 findings, 0 critical; 10 marked fixed, 3 open.

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

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings13

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

SeverityOpenAcknowledgedFixed
Critical000
High203
Medium000
Low107
HighCentralization Risks in HanGovernor.solOpen

Contract `HanGovernor` inherits from some `openzeppelin` contracts which are related to governance design. One important point is that if a time lock was set, then the time lock could play as a governance role and execute some privileged functions. However, if the time lock wasn't set correctly, centralization issues may occur. ```solidity constructor( IVotes _token, TimelockController _timelock ) Governor("HanGovernor") GovernorSettings(1 /* 1 block */, 50400 /* 1 week */, 0) GovernorVotes(_token) GovernorVotesQuorumFraction(4) GovernorTimelockControl(_timelock) {} ``` **Privileged functions:** - relay(): Relays a transaction or function call to an arbitrary target. - setVotingDelay(): Update the voting delay. - setVotingPeriod(): Update the voting period. - setProposalThreshold(): Update the proposal threshold. - updateQuorumNumerator(): Changes the quorum numerator. - updateTimelock(): Public endpoint to update the underlying timelock instance. Any compromise to the time lock address may allow the hacker to take advantage of this authority and gain benefits by influencing governance functions.

HighInitial Distribution Centralization RiskOpen

All of the **HANeP** tokens are sent to the contract deployer when deploying the contract. This could be a centralization risk as the anonymous deployer can distribute tokens without obtaining the consensus of the community. Any compromise to the deployer account that holds undistributed tokens may allow the attacker to steal and sell tokens on the market, resulting in severe damage to the project.

LowLack of Balance CheckOpen

The function `release()` is used to releases tokens to payees based on the vesting schedule. According to the logic of the contract `TokenVestingLock.sol`, token distributors will send tokens to this contract directly, then anyone can execute the function `release()` to release tokens to payees. Since tokens are sent by distributors, it is best to determine if the current balance is sufficient, considering that the number of tokens sent to this contract may not be sufficient. ```solidity= token.transfer(payees[i].account, tokensToRelease); ```

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 (4)

  • contracts/TokenVestingLock.sol
  • contracts/HANePlatform.sol
  • contract/governance/HanTimelockController.sol
  • contract/governance/HanGovernor.sol

Part of HANeP’s security record

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