Loopring Decentralized token exchange protocol

Loopring is an open protocol for building high-performance, order book decentralized exchanges on Ethereum. Their goal is to enable the building of highly scalable exchanges without compromising Ethereum-level security guarantees through a zkRollup construction.

Background

Loopring's primary objectives include reducing user reliance on centralized exchanges or other trusted third parties and enabling global liquid markets. Loopring protocol pursues this by incentivizing ecosystem participants to perform exchange functions in a decentralized manner, with trades processed by non-custodial smart contracts.

Although blockchains inherently provide trustless trading, there are problems with building exchanges purely on-chain. Specifically, processing speed, throughput, and computation costs. Performing all exchange steps on-chain can be prohibitively expensive, or impossible to emulate centralized exchange speed and performance. For these reasons, Loopring has moved almost all data and computation off-chain but leverages zero-knowledge proofs to retain trust-minimized properties.

Loopring originally planned to be blockchain agnostic and to operate on all feasible large public blockchains with smart contract capability. Loopring was first deployed on Ethereum to trade ERC20 tokens and uses its LRC token to operate. It has deployed on top of NEO
and airdropped a native LRN, however, that effort is paused. There were plans for a similar launch on top of QTUM with an LRQ token but that was scrapped entirely.

Technology

Loopring uses a traditional order-book exchange model but moves all computation off-chain by using zero-knowledge proofs (zkSNARKs). When a user wants to deposit funds, they send assets to an exchange smart contract. Their balances are stored off-chain in Merkle trees where they are updated based on transfer requests rather than an actual exchange of assets between user wallets. The manner in which orders are matched up is up to the exchange operator but when it comes time for settlement, the protocol will create a ring settlement request by matching two orders and sending the request to the operator who in turn includes it in a block, receives a fee and commits the request on-chain. Users can also withdraw their funds at any time. If a specified amount of time passes since the withdrawal requests and the exchange still has not processed the withdrawal, the protocol will enter an irreversible withdrawal mode that shuts the exchange down enabling only withdrawal functionality.