Omniscia Nevermined Audit

Compilation

Compilation

The project utilizes truffle as its development pipeline tool, containing an array of tests and scripts coded in JavaScript.

To compile the project, the compile command needs to be issued via the truffle CLI tool:

truffle compile

The truffle tool automatically selects Solidity version 0.6.12 based on the version specified within the truffle.js file.

The project contains discrepancies with regards to the Solidity version used, however, these exist solely in the external dependencies and can be safely ignored.

The Nevermined team has locked their pragma statements to 0.6.12, the same version utilized for our static analysis as well as optimizational review of the codebase. The X team has proceeded to lock all contract pragma statements accordingly.

One compilation error for DIDRegistry was raised that indicated the contract code size exceeds 24576 bytes, a limit imposed by the Spurious Dragon hard-fork of Ethereum. In most cases, this error can be mitigated by using a low runs value during the optimization phase. Additionally, a few of the dependencies that the project utilizes in their flattened format contain dead-code that is not utilized and as such could be removed to further reduce the bytecode size.

This compilation issue has been resolved in the latest iteration of the codebase and the error no longer shows up.