crates/adapters/lighter/README.md
NautilusTrader adapter for the Lighter decentralized spot and perpetuals exchange.
The nautilus-lighter crate implements the Lighter adapter for NautilusTrader, including
typed HTTP and WebSocket clients, REST and stream models, venue parsing, data and execution
client wiring, and an in-tree L2 signer for the official Lighter API.
Lighter is a high-throughput central-limit-order-book decentralized crypto exchange for spot and perpetual futures, settling on Ethereum via a custom zero-knowledge rollup. Order matching is performed off-chain by a sequencer, with ZK proofs published on-chain to guarantee correctness of matching, fills, and liquidations.
Trading is non-custodial: users hold their assets in Lighter's smart contracts and authorise trades with their own keys.
NautilusTrader is an open-source, production-grade, Rust-native engine for multi-asset, multi-venue trading systems.
The system spans research, deterministic simulation, and live execution within a single event-driven architecture, providing research-to-live semantic parity.
This crate provides feature flags to control source code inclusion during compilation:
python: Enables Python bindings from PyO3.extension-module: Builds as a Python extension module.Python bindings are intentionally narrow: configuration, enums, factory wiring, and the integrator revocation helper. Data and execution clients are consumed directly through the Rust trait surface.
High-precision mode (128-bit value types) is enabled by default.
Submitted create and modify order transactions carry the NautilusTrader integrator account index in
Lighter's L2TxAttributes. This helps us gauge real usage of the integration and prioritize
ongoing maintenance. Maker and taker integrator fees are set to zero, so attribution adds no trading
cost.
Lighter requires an ApproveIntegrator approval before these attributes can be attached to orders.
During startup, the execution client submits the required zero-fee approval for the configured
L2 account. See the
Lighter integration guide
for approval and revocation details.
Lighter restricts maker-only API keys to the 0ms speed-bump lane (PostOnly orders, modifies on
ALO orders, and cancels), so they cannot submit ApproveIntegrator themselves. The execution
client detects maker-only keys at startup via getMakerOnlyApiKeys and skips the approval with
a WARN log. Approval is account-scoped: a single ApproveIntegrator from any non-maker-only
key on the same account permanently unlocks orders for every key on that account, including
maker-only ones.
The crate ships an in-tree implementation of the Lighter L2 signer (Schnorr over the ECgFp5 curve, Goldilocks field, Poseidon2 binding). Correctness is gated by independent layers:
elliottech/poseidon_crypto)
for every algebra layer.lighter-python SDK, covering end-to-end outputs for the four supported tx
kinds.pornin/ecgfp5), kept in the publish=false fuzz crate so the crates.io
package graph has no git dependencies. The fuzz targets assert every public
algebra operation byte-for-byte against it and soak point decode and scalar
multiplication under coverage guidance. Pornin's reference accompanies the
curve's design paper (IACR ePrint 2022/274), has been public and reused by
downstream zero-knowledge projects since 2022, and shares no code lineage
with our implementation: a bug that slips the gate would have to be present
in both implementations in the same way.Round-trip testing against Lighter itself remains the final correctness gate for what the sequencer accepts.
Coverage-guided fuzz targets for the L2 signer live in fuzz/. They require the
workspace-pinned cargo-fuzz binary and a Rust nightly toolchain; install them from the repository
root with make install-tools and rustup toolchain install nightly.
See the docs for more detailed usage.
The source code for NautilusTrader is available on GitHub under the GNU Lesser General Public License v3.0.
Reference attributions for cryptographic parameter sets and reproduced test vectors
used by the L2 transaction signer are listed in
licenses/THIRD_PARTY_LICENSES.md.
NautilusTrader™ is developed and maintained by Nautech Systems, a technology company specializing in the development of high-performance trading systems. For more information, visit https://nautilustrader.io.
Use of this software is subject to the Disclaimer.
© 2015-2026 Nautech Systems Pty Ltd. All rights reserved.