As of 30 Oct 2026, IOST has 1 audit report on Trustblock, by CertiK, dated 10 Mar 2025. That report lists no open critical findings.
Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.
Newest first
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 2 | 0 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 0 | 0 | 2 |
There should always be events emitted in the sensitive functions that are controlled by centralization roles.
Open the reportThe following inputs may not be validated in the `createVestingSchedule` function: #### No Zero Address Check to `_beneficiary` The function `createVestingSchedule` does not explicitly validate that the `_beneficiary` is not the zero address. If `_beneficiary = address(0)`, any call to `release` would attempt to transfer tokens to the zero address. Depending on the underlying ERC20 token implementation: - Some tokens treat transfers to address(0) as a burn, which might be unintended. - Others might revert on transfers to address(0), causing the tokens to remain locked in the contract. The current `IOSToken` will revert transfers to `address(0)`, potentially locking the tokens in the contract forever. #### Slice Period Seconds is Larger Than Duration If `slicePeriodSeconds` is larger than `duration`, no tokens become vested until `currentTime >= cliff + duration`. If the intended vesting is truly linear or incremental, it could be an unintended design. If the team wants lump-sum vesting at the end (one big slice), the current design should be okay. The admin could deliberately set `slicePeriodSeconds = duration` or even `slicePeriodSeconds > duration` and get a single unlocking event at the end. #### The `_start` Can be Before the Current Time There is no restriction preventing `_start` from being less than the current block timestamp (`block.timestamp`). When `_start + _cliff` is already in the past, the schedule may be partially or fully vested upon creation. If this design is intended to allow the `beneficiary` to immediately have the right to release some or all of the tokens, the current should be okay.
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="iost"></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