As of 5 Nov 2026, Mintlayer has 1 audit report on Trustblock, by CertiK, dated 8 Mar 2023. That report lists no open critical findings.
Record last updated . It holds audits and findings, contracts and incidents up to Nov 2026. Trustblock does not review code.
Newest first
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Mintlayer (Audit #2) | Security firm: CertiK | Date: | Scope: Files named in the report | 1 critical finding, fixed | Open · skynet.certik.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 1 |
| High | 0 | 0 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 1 | 0 | 1 |
The `addRoot()` permits a holder of the `MLTToken` to create a new vesting, and it checks if the caller holds enough tokens (in L125) when calling the function. However, this check is insufficient since there is no guarantee to ensure the caller will pay for the vesting tokens. For instance, an attacker can repeatedly create the vesting with his balance or dramatically inflate his balance instantly by flashloan and creating a huge investing schedule. ```solidity=113 function addRoot( bytes32 _root, uint256 _amount, uint256 _startTimestamp, bytes32[] calldata _proofBalance ) external { bytes32 _leaf = keccak256(abi.encodePacked(_amount)); require( MerkleProof.verify(_proofBalance, _root, _leaf), 'The supply sent does not match that of the merketree' ); require(_amount <= balanceOf(msg.sender), 'Amount exceeds balance'); require(!rootWhitelist[_root], 'Root hash already exists'); rootWhitelist[_root] = true; balanceByRootHash[_root] = _amount; startTimestampByRootHash[_root] = _startTimestamp; } ``` As the function relies only on the `balanceOf(msg.sender)`, an attacker can create multiple vestings by abusing the function `addRoot()`. This can lead to disastrous consequences as the attacker will set a vesting period extremely small, then withdraw tokens earlier than the previous vesting created by legitimate users of the project. The *scenarios* and a *proof of concept* to illustrate the attack are shown below,
Open the reportThe contracts `MLTTokenV1` and `MLTToken` inherit of `Ownable` library from OpenZeppelin but doesn't use features from it.
Open the reportThe reports name a repository or files. Open a report to see its scope.
Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.
Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.
<head><script src="https://widget.trustblock.run/project-widget.min.js" defer></script></head><body><divdata-tb-project-widgetdata-tb-project-slug="mintlayer"></div></body>
Paste the code where the label should appear. It uses no API credit and updates by itself.
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