Elchai

CertiKFiles named in the report

CertiK reviewed Elchai on 14 Feb 2023: 8 findings, 0 critical; 5 marked fixed, 3 acknowledged.

No open critical findings
Open the reportOpen Elchai’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
High020
Medium000
Low015
LowMissing Emit EventsFixed

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

LowMissing Zero Address ValidationFixed

Addresses should be checked before assignment or external call to make sure they are not zero addresses. ```solidity=285 lpPair = newPair; ``` - `newPair` is not zero-checked before being used. --- ```solidity=322 marketingAddress = payable(marketing); ``` - `marketing` is not zero-checked before being used. --- ```solidity=323 marketingAddress2 = payable(marketing2); ``` - `marketing2` is not zero-checked before being used.

LowPotential Risk On `approve()`/`transferFrom()` MeFixed

Contract `BEC` is vulnerable to [a known ERC20 race condition issue](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729), which could lead to token theft. When a user calls `approve()` for a second time on a spender that has already been allowed, the spender could call `transferFrom()` to transfer the previous value and still receive the authorization to transfer the new value. Exploit scenario: 1. Alice calls `approve(Bob, 100)` to allow Bob to spend 100 tokens. 2. Alice changes her mind and calls `approve(Bob, 50)`. 3. Bob observes the second `approve(Bob, 50)` function call and calls `transferFrom(Alice, Bob, 100)` before the second `approve(Bob, 50)` call. 4. The above scenario can be achieved by front-running. In this case, Bob can transfer another 50 tokens from Alice and in total, he transferred 150 tokens from Alice.

LowPush over Pull for `TransferOwnership` method impFixed

The `transferOwnership` method in the `Ownable` contract is implemented using a typical "Push" pattern, which can result in the loss of contract ownership if an invalid owner address is supplied.

LowUnchecked VariablesFixed

```solidity (success,) = marketingAddress.call{value: mark1, gas: 35000}(""); (success,) = marketingAddress2.call{value: mark2, gas: 35000}(""); ``` The variable `success`, which means if the function call succeeds, is not checked.

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

  • contracts/ElChai.sol
  • contracts/ElChai Updated.sol

Part of Elchai’s security record

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