Omisego Plasma MVP

QuantstampFiles named in the report

Quantstamp reviewed OMG Network (Omisego Plasma MVP) on 22 Oct 2018: 13 findings, 0 critical; 3 marked fixed, 10 open.

No open critical findings
Open the reportOpen OMG Network’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings13

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High101
Medium000
Low902
HighDeposit Block Can Be Written Past CHILD_BLOCK_INTERVALFixed

The contract RootChain.sol uses the constant CHILD_BLOCK_INTERVAL to distinguish between child chain and deposit blocks. It protects against reorgs, i.e., block and transaction order changing on the root chain. Reorgs can lead to spurious invalidity of the child chain. The check in line 161, however, can be bypassed and, consequently, the invariant that deposit blocks should never appear in child block indices and vice-versa can be violated. We note that the issue may be exploited by a malicious token contract which can be added by any user. Exploit Scenario: 1. Add malicious token contract to RootChain.sol via the function addToken(). 2. depositFrom() calls transferFrom() (line 164). 3. transferFrom() of a malicious token calls deposit() multiple times till currentDepositBlock == CHILD_BLOCK_INTERVAL - 1. 4. transferFrom() returns true allowing writeDepositBlock() to increment currentDepositBlock beyond CHILD_BLOCK_INTERVAL. 5. This allows a malicious token to enable transfers without a real deposit as the deposit block will be overwritten by the next submitted plasma block.

LowAnybody May Initiate Deposit on Behalf of the OwnerFixed

The function depositFrom() takes owner as parameter instead of relying on msg.sender. Consequently, once an allowance is approved, anybody may initiate a deposit on behalf of the owner at any time, even against the actual owner's will.

LowSupplement the code with Trufe projectFixed

Trufe is a prominent tool used for organizing Solidity code projects. It helps to manage dependencies, run tests, and process the code with other tools.

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

  • contracts/ERC20Basic.sol
  • contracts/ERC20.sol
  • contracts/PlasmaCore.sol
  • contracts/Merkle.sol
  • contracts/PlasmaCoreTest.sol
  • contracts/PlasmaRLP.sol
  • contracts/Math.sol
  • contracts/SafeMath.sol
  • contracts/BasicToken.sol
  • contracts/RLP.sol
  • contracts/Validate.sol
  • contracts/ECRecovery.sol
  • contracts/PriorityQueue.sol
  • contracts/MintableToken.sol
  • contracts/RLPTest.sol
  • contracts/ByteUtils.sol
  • contracts/RootChain.sol
  • contracts/Ownable.sol
  • contracts/StandardToken.sol

Part of OMG Network’s security record

OMG Network
Audits2 audits by 2 firmsLast audit Jan 2020, by Consensys.
Critical findingsNo open critical findingsAcross the 2 reports, 1 critical finding was reported. It is marked fixed by the firm that reported it.
Open OMG Network’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’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