As of 30 Oct 2026, Ocean Protocol has 2 audit reports by 2 security firms on Trustblock; the latest is by OpenZeppelin, dated 12 Oct 2023. Those reports list 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
| Audit | Security firm | Date | Scope | Critical findings | Report |
|---|---|---|---|---|---|
| Ocean Vesting Wallet Audit | Security firm: OpenZeppelin | Date: | Scope: Files named in the report | No open critical findings | Open · blog.openzeppelin.com |
| Ocean Protocol v3 | Security firm: CertiK | Date: | Scope: Files named in the report | No open critical findings | Open · skynet.certik.com |
Statuses are the security firm’s own, from each report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 1 | 0 |
| Medium | 1 | 2 | 2 |
| Low | 0 | 30 | 31 |
The report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe report gives no description here.
Open the reportThe linked functions contain identical statements with the core differentiator being the boolean literal they utilize.
Open the reportThe purpose of the literals within the linked assembly block should be properly documented before proper evaluation of its functionality is conducted.
Open the reportAll members of the Exchange struct are accessed and each mapping lookup operation as well as data retrieval costs significant gas.
Open the reportEmpty constructors are redundant as they are directly implied even if not provided.
Open the reportEmpty constructors are redundant as they are directly implied even if not provided.
Open the reportThe ERC20 specification denotes that the decimals of a token should be of type uint8 whereas here both the getter as well as the storage variable are declared as uint256 . This will cause complete incompatibility with the ERC20 specification as external contracts will not be able to properly retrieve the decimals of the contract.
Open the reportThroughout the contracts of the project proper sanitization of input variables during construction is conducted whereby the addresses of contracts are ensured to be different than zero. However, the error message provided is of a completely different convention than DTFactory.sol for instance.
Open the reportThe linked code statements conduct a greater-than comparison between zero and an unsigned integer.
Open the reportThe linked code statements conduct a greater-than comparison between zero and an unsigned integer.
Open the reportThe linked code statements conduct a greater-than comparison between zero and an unsigned integer.
Open the reportThe linked event declarations contain no indexed variables.
Open the reportThe _decimals variable is being assigned to the literal 18.
Open the reportThe event declarations state that a timestamp type variable is emitted along the event whereas a block.number is provided instead of a block.timestamp wherever the events are emitted.
Open the reportThe linked functions contain identical statements with the core differentiator being the boolean literal they utilize.
Open the reportDirectly replacing the minter address of a contract is dangerous as a single misinputed character can freeze the minting functions of the contract indefinitely.
Open the reportThe linked `TokenRegistered` event includes the `block.number` within the variables it emits.
Open the reportThe linked BPoolRegistered event includes the block.number within the variables it emits indexed as well.
Open the reportThe abi.encodePacked function solely makes sense when the variables it operates on can be tightly packed.
Open the reportThe Exchange struct can be further optimized.
Open the reportThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practise to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practise to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practise to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practise to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practise to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practice to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportTThe compiler version utilized in this file uses the “^” prefix specifier, denoting that a compiler at or above the version included after the specifier should be used to compile the contracts. It is a general practise to instead lock the compiler at a specific version rather than allow a range of compiler versions to be utilized to avoid compiler-specific bugs and be able to identify ones more easily.
Open the reportThe input variables of the startOrder function are unsanitized, meaning that anyone is capable of setting a zero feePercentage as well as a custom feeCollector address.
Open the reportIn general, it is a good practise to avoid user-defined getters and instead rely on compilergenerated ones via the public keyword as they are far more maintainable and aid in the legibility of the codebase
Open the reportWithin Solidity, the order of variable declaration is important within a contract as it dictates how the compiler will tightly-pack the variables it is provided with. While the layout of the contract does not appear to follow a particular convention, it has tightly packed most slots possible except one.
Open the reportThe visibility specifiers for the linked variables should be explicitly set as it is standard security practise and aids in the readability of the codebase.
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="ocean-protocol"></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