LayerZero
Security review case study
“Guardian’s thorough audit process have left a strong impression on us. Their keen eye for detail and responsive support are qualities that shine through in every engagement.”
Core TeamLayerZero
Overview
This case study covers Guardian's security work for LayerZero, the omnichain messaging protocol behind the OApp and OFT standards. Through 2026 Guardian has reviewed LayerZero's code in five execution environments: Solidity on EVM chains, Rust on Solana, Rust on Stellar's Soroban, DAML on Canton, and the TypeScript validator stack that runs LayerZero's protocol for Canton.
A messaging protocol is only as secure as its weakest runtime, so the work ran as parallel tracks: Console, LayerZero's control plane for multichain assets; the Canton build-out; the Solana programs; and OneSig, the multisig behind LayerZero's privileged operations, on every chain it reaches.
LayerZero publishes Guardian's reports in its own audit index. You can access all of Guardian's public LayerZero reports here.
Guardian
Guardian provides institutional-grade security for digital asset teams, onchain and off. Every engagement runs two independent teams, backed by Helix, Guardian's AI auditor, and only human-verified findings reach the client.
Book Guardian for your next audit when it has to be right the first time.
LayerZero
LayerZero is an omnichain interoperability protocol. Applications and tokens use it to send messages and value between blockchains, through standards such as OApp and OFT. An OFT debits on the source chain and credits on the destination, so a token keeps one supply across every chain it lives on.
LayerZero V2 is deployed on more than 180 mainnet chains, according to LayerZero's own deployment metadata, and some of the largest cross-chain assets, USDT0 among them, move through it.
Why Guardian?
LayerZero's roadmap demanded a security partner capable of:
- Reading DAML on Canton, where authority comes from signatories and controllers rather than
msg.sender, and few auditors work - Reviewing Anchor programs and cross-program invocation on Solana, and Soroban contracts on Stellar
- Following one design, OneSig, through each runtime's own signature, replay and authorization model
- Reviewing offchain TypeScript that reimplements LayerZero's endpoint, message library and workers, where a small divergence from the onchain original surfaces only in production
Guardian staffs each runtime with its own specialists and runs the reviews concurrently, so LayerZero's tracks moved in parallel rather than waiting in a queue.
The Engagements
Since January 2026 Guardian has reviewed LayerZero across Console, Canton, Solana and OneSig, with remediation rounds after most main reviews. Every engagement with a public report is below, newest first. Each opens the full report.
- Public reports
- 9
- Findings
- 378
- Critical or high
- 1
- Networks
- 4
- First report
- Mar 2026
Across the engagements, Guardian applied:
- Line-by-line manual review of every in-scope file, alongside static analysis
- Runtime-specific threat modeling: party authority and contract-id trust on Canton, account and signer validation on Solana, Soroban authorization and signature handling on Stellar
- Remediation rounds that re-review each fix against the finding it closes, not only the diff
- Re-reviews of new code as it shipped, such as the next-generation Console EVM tree
Canton: LayerZero on a New Ledger
Canton is the DAML-based network that banks and asset managers use for tokenized assets. Bringing LayerZero there meant rebuilding the protocol for a ledger with no EVM. DAML contracts hold tokens, requests, rate limits and governance on Canton, while the endpoint, message library, DVN, executor, price feed and treasury run as TypeScript in the validator stack.
Guardian reviewed both halves in parallel in the spring of 2026: the DAML across the OFT, request flow, rate limiter, governance, registry and executor, and the TypeScript validator stack beside it. OneSig on Canton followed in July.
Guardian's Canton reviews focused on:
- The request lifecycle, where creation, acceptance and callback finalization are separate transactions
- Party isolation in the executor, which pays fees from a funded party and acts through a disposable one
- Governance liveness: proposals, leader selection and the fees that back them
- Rate-limiter accounting across pending outflows and configuration changes
- Trust in contract ids supplied by the caller
- Places where the validator's model of a chain, such as its block numbers, departs from a real one
That work produced the account's only High-severity finding, described below, along with most of its Mediums. Most come from how Canton splits a transfer into requests and callbacks, or from DAML's model of parties and contract ids, which is why the review was staffed with DAML specialists rather than EVM auditors reading a new language.
Findings & Key Results
Guardian identified and surfaced a wide range of subtle issues across the public reports:
- Arithmetic overflow in decimal conversion
Found in: Console, Canton DAML - Lost or ambiguous message identity: compose senders, signed payload encoding and callback provenance
Found in: Console, OneSig on Canton, Canton DAML - Governance that a single member, or a dust-sized fee, can freeze
Found in: Canton DAML - Rate-limit usage miscounted across configuration changes
Found in: Canton DAML, OneSig on Canton - Account and signer validation gaps in Solana programs
Found in: Solana OApp, Solana Console, OneSig on Solana - secp256k1 signature malleability
Found in: OneSig on Stellar - Validator semantics that differ from a real chain, and endpoints usable before initialization
Found in: Canton VER
Highlighted Issues:
Stuck Inbound Transfers | Canton DAML
On Canton, an inbound transfer is created, accepted and finalized in separate transactions. The receive path checked that the amount parsed as a 64-bit integer, but not that it would still fit once scaled to the token's local decimals. A message could be accepted and its request consumed, and only then fail at finalization, leaving a pending callback that failed again on every retry and a receiver who was never credited.
Guardian recommended bounding the amount before acceptance, and as early as request creation, with the same check kept at finalization as defense in depth. The finding is resolved.
Large Transfers Burned for a Fraction | Console
Console's DecimalUtils._toSD converted local-decimal amounts to shared decimals and cast the result to uint64 without checking for overflow. For a token with a high supply, a large cross-chain transfer could burn a huge amount on the source chain and credit a very small one on the destination, a complete loss for the sender. Guardian recommended validating the conversion before the cast, and the finding is resolved.
Lost Sender Identity | Console Nexus
In Nexus, both compose identity fields resolved to the NexusOFT wrapper instead of the user who sent the transfer. Any receiving contract that authenticated or accounted by sender saw every compose as coming from the same address. Guardian recommended Nexus-specific encoding that writes the original user into composeFrom, and the finding is resolved.
Colliding Signed Payloads | OneSig on Canton
OneSig on Canton signed an encoding of each request's nested call context. Map keys were length-prefixed, but child subtrees and entry counts were not, so two different contexts could encode to the same text. A quorum could sign one request while an executor submitted another under the same signature. Guardian recommended making every nested container self-delimiting, and the finding is resolved.
One Member Can Freeze Governance | Canton DAML
Canton governance described proposals as a committee process, but accepting or rejecting one required every member, and a proposal's expiry had no upper bound. One member could open a proposal with a far-future expiry and refuse to sign either way, blocking new proposals and leader selection for as long as it stood. Guardian recommended majority finalization and bounded proposal lifetimes, and the finding is resolved.
Total issues across the nine public reports, as of November 2026:
- Critical: 0
- High: 1
- Medium: 25
- Low: 112
- Informational: 240
The one High has been resolved. The consolidated Console report in LayerZero's audit index states that no High or Critical findings were identified across the original engagement or its updates review, and six of the nine reports carry Guardian's top confidence ranking, 5 out of 5.
OneSig: One Multisig, Every Runtime
OneSig is the multisig behind LayerZero's privileged operations: signers approve one merkle root of transactions, and each chain executes its own leaves. Because it governs configuration everywhere LayerZero runs, Guardian has reviewed each implementation in its own runtime's terms.
- EVM, March 2025: commissioned by USDT0, and shipped by LayerZero in its audit index and the OneSig repository
- Stellar, May to June 2026: Rust on Soroban, seven findings, none above Low
- Solana, June to August 2026: two main reviews and three remediation rounds, twenty-seven findings, none above Low
- Canton, July to September 2026: DAML, a main review and three remediation rounds, thirty-two findings including five Mediums
- The desktop signer: a pentest of the application in which signers review and approve OneSig transactions
The same design breaks differently in each runtime. On Stellar the main risks were in how secp256k1 signatures are accepted; on Solana, in how accounts and buffers are validated; on Canton, in how call contexts are encoded and which instance a signed scope belongs to. Each port gets its own review rather than inheriting the last one's.
Impact
Guardian's work on LayerZero covers the protocol in every runtime it is built for, and the offchain systems around it. Our reviews:
- Resolved the account's one High-severity issue, which could leave inbound transfers on Canton permanently stuck
- Closed an unchecked cast that could burn a large cross-chain transfer for a fraction of its value
- Restored the original sender's identity to Nexus compose messages
- Made the payloads OneSig signers approve on Canton unambiguous
- Gave LayerZero one security team across Solidity, Rust, DAML and TypeScript, so what is learned in one runtime carries into the next
- Produced reports LayerZero publishes in its own audit index
You can access Guardian's full collection of public LayerZero reports here, and read the whole relationship in the LayerZero client story.
Building across more than one runtime? Guardian reviews each one with its own specialists, onchain and off, and runs the reviews in parallel.