← Directory

Light Protocol

Seal for Light Protocol: onchain band C. Not claimed by the project.
Transparency score · worst track · not a security audit

lightprotocol.com · Other · Solana · data checked 2026-10-20 21:57 (Stockholm)

Contact route: on-chain security.txt (program) ↗

Not claimed Automated from public data

Automated score · 2026-10-20 · method v0.2.7 · How this score is made
Produced automatically from public data on 2026-10-20 (method v0.2.7). It shows how much of this project’s control structure, code and contact information could be checked from public sources. No person selected or adjusted it, and nothing a project does or pays changes it. It is not a security audit.

Beta: the method is still being calibrated, so this automated score may contain errors. Send a correction.

Transparency score, not a security audit. Scores are generated automatically from public data (Solana RPC, OtterSec build registry, GitHub, project websites). Projects are not involved unless a page is marked “Claimed”, and claiming never changes a score. Nothing here says a project is safe. How scores are made → · Corrections, right of reply & opt-out →

C
Onchain track · onchain v0.2.7
61/100 · Band C
coverage 88 % · 21 of 24 decided
3 unknown (−4.5 pts) · 0 not read (no points lost, lowers coverage) · 5 not built yet (excluded)

Something wrong on this page? Dispute a check or send a correction · opt-out. We re-run the check and correct the page.

What was checked: addresses & sources

Website lightprotocol.com · GitHub https://github.com/Lightprotocol. Addresses are used only if they appear verbatim on an official project page.

Programs taken from the project's own official address list or repository (process v1, docs/program-discovery-process.md); each exists on mainnet as an executable program.

Onchain track

Contract control weight 307.5/30
  • ◐ Partial

    Upgrade authority SySTEM…

    Upgrade authority is 7PeqkcCXeqgsp5Mi15gjJh8qvSLk7n3dgNuyfPhJJgqY: Squads v4 multisig B4K58oqx… with threshold 2 of 5 voting member(s) (5 total), time lock 0 s (established by re-deriving the vault address from the multisig; found in upgrade history tx h8Z7Y6J1…). Member independence not established. Address taken from official source: https://www.zkcompression.com/resources/addresses-and-urls
    www.zkcompression.com ↗Explorer ↗Explorer ↗Explorer ↗ checked 2026-10-20 sha256 6da2c38b1899… sha256 4187f577ccf1…
    What would show up as met
    • If the program is final, revoke the upgrade authority. It then reads as immutable.
    • Otherwise move the authority to a multisig or a DAO. For a multisig, use a threshold of at least 2, add a time lock, and do not keep a separate config authority that can change members without a vote.
    • Publish the multisig or DAO address on your own website so the page and the on-chain account can be tied together.

    How we check: We read the program’s upgrade authority on Solana (public RPC) and recognise Squads, Serum-style multisigs and SPL Governance accounts. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✕ Not met

    Build matches source (OtterSec registry) SySTEM…

    OtterSec registry: 2 build submission(s) exist (https://github.com/Lightprotocol/light-protocol/tree/1cb0f067b3d2d4e012e76507c077fc348eb88091), but none matches the current on-chain program hash (581998887c26…) — one possible reason is an upgrade after the submission. We found no registry record that the deployed code was built from the public source.
    OtterSec registry ↗OtterSec registry ↗GitHub ↗ checked 2026-10-20 sha256 56aad4d1c818… sha256 03f05d2120c7…
    What would show up as met
    • Build the program reproducibly from your public source with the Solana verifiable-build tooling (solana-verify).
    • Submit the build to the registry so that it appears in the OtterSec registry (verify.osec.io). The check reads that registry; it does not rebuild anything itself.

    How we check: We ask the OtterSec build registry (verify.osec.io, a third party) whether the deployed program matches a build from the public source. We report what the registry says; we do not rebuild or vouch for anything ourselves. Any registry entry that matches the program’s current on-chain hash counts, not only the registry’s default entry (method 0.2.5). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ◐ Partial

    Upgrade authority cToken…

    Upgrade authority is 7PeqkcCXeqgsp5Mi15gjJh8qvSLk7n3dgNuyfPhJJgqY: Squads v4 multisig B4K58oqx… with threshold 2 of 5 voting member(s) (5 total), time lock 0 s (established by re-deriving the vault address from the multisig; found in upgrade history tx 4cAaC5bw…). Member independence not established. Address taken from official source: https://www.zkcompression.com/resources/addresses-and-urls
    www.zkcompression.com ↗Explorer ↗Explorer ↗Explorer ↗ checked 2026-10-20 sha256 cf3a1c51917a… sha256 8363f2865377…
    What would show up as met
    • If the program is final, revoke the upgrade authority. It then reads as immutable.
    • Otherwise move the authority to a multisig or a DAO. For a multisig, use a threshold of at least 2, add a time lock, and do not keep a separate config authority that can change members without a vote.
    • Publish the multisig or DAO address on your own website so the page and the on-chain account can be tied together.

    How we check: We read the program’s upgrade authority on Solana (public RPC) and recognise Squads, Serum-style multisigs and SPL Governance accounts. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✕ Not met

    Build matches source (OtterSec registry) cToken…

    OtterSec registry: 1 build submission(s) exist (https://github.com/Lightprotocol/light-protocol/tree/0a42c44b0f6aaf7c9f793c970455c188f5f7f103), but none matches the current on-chain program hash (ad43a477a97c…) — one possible reason is an upgrade after the submission. We found no registry record that the deployed code was built from the public source.
    OtterSec registry ↗OtterSec registry ↗GitHub ↗ checked 2026-10-20 sha256 c857adb1913d… sha256 c399b516ca0e…
    What would show up as met
    • Build the program reproducibly from your public source with the Solana verifiable-build tooling (solana-verify).
    • Submit the build to the registry so that it appears in the OtterSec registry (verify.osec.io). The check reads that registry; it does not rebuild anything itself.

    How we check: We ask the OtterSec build registry (verify.osec.io, a third party) whether the deployed program matches a build from the public source. We report what the registry says; we do not rebuild or vouch for anything ourselves. Any registry entry that matches the program’s current on-chain hash counts, not only the registry’s default entry (method 0.2.5). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ◐ Partial

    Upgrade authority compr6…

    Upgrade authority is 7PeqkcCXeqgsp5Mi15gjJh8qvSLk7n3dgNuyfPhJJgqY: Squads v4 multisig B4K58oqx… with threshold 2 of 5 voting member(s) (5 total), time lock 0 s (established by re-deriving the vault address from the multisig; found in upgrade history tx 3evCciH6…). Member independence not established. Address taken from official source: https://www.zkcompression.com/resources/addresses-and-urls
    www.zkcompression.com ↗Explorer ↗Explorer ↗Explorer ↗ checked 2026-10-20 sha256 73a714d82fed… sha256 e2341c81a145…
    What would show up as met
    • If the program is final, revoke the upgrade authority. It then reads as immutable.
    • Otherwise move the authority to a multisig or a DAO. For a multisig, use a threshold of at least 2, add a time lock, and do not keep a separate config authority that can change members without a vote.
    • Publish the multisig or DAO address on your own website so the page and the on-chain account can be tied together.

    How we check: We read the program’s upgrade authority on Solana (public RPC) and recognise Squads, Serum-style multisigs and SPL Governance accounts. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✕ Not met

    Build matches source (OtterSec registry) compr6…

    OtterSec registry: 3 build submission(s) exist (https://github.com/Lightprotocol/light-protocol/tree/1cb0f067b3d2d4e012e76507c077fc348eb88091), but none matches the current on-chain program hash (52501f6bfa5d…) — one possible reason is an upgrade after the submission. We found no registry record that the deployed code was built from the public source.
    OtterSec registry ↗OtterSec registry ↗GitHub ↗ checked 2026-10-20 sha256 b61ae3271a93… sha256 4e9e8ae6090d…
    What would show up as met
    • Build the program reproducibly from your public source with the Solana verifiable-build tooling (solana-verify).
    • Submit the build to the registry so that it appears in the OtterSec registry (verify.osec.io). The check reads that registry; it does not rebuild anything itself.

    How we check: We ask the OtterSec build registry (verify.osec.io, a third party) whether the deployed program matches a build from the public source. We report what the registry says; we do not rebuild or vouch for anything ourselves. Any registry entry that matches the program’s current on-chain hash counts, not only the registry’s default entry (method 0.2.5). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • – N/A

    Mint/freeze authority

    No token mint submitted.
    source: calculated from the other checks checked 2026-10-20
Audits weight 1515/15
  • ✓ Met

    Audits found at official sources

    Discovered automatically (method 0.2.2): 13 document(s) in Lightprotocol/light-protocol (audits): Accretion, Certora, HashCloak, Neodyme, OtterSec, Reilabs; 1 document(s) in Lightprotocol/light-poseidon (assets): Veridise; 1 document(s) in Lightprotocol/light-protocol-v1 (Audit): HashCloak, Neodyme, Soteria. Rated met: the submitted program ID appears in the text of a discovered audit document/page. Date vs. last upgrade not checked. Quality, scope and findings not assessed. Searched: GitHub Lightprotocol: 53 of 53 non-fork repositories file-listed via GitHub API | lightprotocol.com: 18 audit/security page address(es) fetched (docs sub-domains and homepage audit links included).
    GitHub ↗GitHub ↗GitHub ↗api.github.com ↗ checked 2026-10-20 sha256 e5c78e517e7d… sha256 1a927817d013…
Code openness weight 1515/15
  • ✓ Met

    Public repository

    Lightprotocol/light-protocol public, created 2021-11-17, 30 contributor(s) (count only).
    GitHub ↗api.github.com ↗api.github.com ↗api.github.com ↗ checked 2026-10-20 sha256 a2d34e21003c… sha256 8aa7d9bb1426…
  • ✓ Met

    Licence

    SPDX: Apache-2.0.
    GitHub ↗api.github.com ↗api.github.com ↗api.github.com ↗ checked 2026-10-20 sha256 a2d34e21003c… sha256 8aa7d9bb1426…
  • ✓ Met

    Activity last 90 days

    Last push 2026-10-14 (6 d ago).
    GitHub ↗api.github.com ↗api.github.com ↗api.github.com ↗ checked 2026-10-20 sha256 a2d34e21003c… sha256 8aa7d9bb1426…
  • ✓ Met

    On-chain program source public

    3/3 own program ID(s) found in public source: SySTEM… in https://github.com/Lightprotocol/light-protocol; cToken… in https://github.com/Lightprotocol/light-protocol; compr6… in https://github.com/Lightprotocol/light-protocol. Repos searched (shallow clone, text search for the program ID): https://github.com/https://github.com/Lightprotocol (clone failed), https://github.com/Lightprotocol/light-protocol. Does not prove the deployed binary matches (see the build check).
    GitHub ↗ checked 2026-10-20 sha256 2f57f4173f25… sha256 2f57f4173f25…
Onchain history weight 108.3/10
  • ✓ Met

    Last deploy SySTEM…

    Last deploy 2026-03-12 (222 d ago).
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 6da2c38b1899… sha256 4187f577ccf1…
  • ○ Not built

    Program age / upgrade count SySTEM…

    Full history scan (first deploy, upgrades in 30 d, authority changes) needs an indexer (e.g. Helius); not available on public RPC.
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 6da2c38b1899… sha256 4187f577ccf1…
  • ✓ Met

    Last deploy cToken…

    Last deploy 2026-03-12 (222 d ago).
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 cf3a1c51917a… sha256 8363f2865377…
  • ○ Not built

    Program age / upgrade count cToken…

    Full history scan (first deploy, upgrades in 30 d, authority changes) needs an indexer (e.g. Helius); not available on public RPC.
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 cf3a1c51917a… sha256 8363f2865377…
  • ◐ Partial

    Last deploy compr6…

    Last deploy 2026-09-24 (26 d ago). Upgraded within the last 30 days.
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 73a714d82fed… sha256 e2341c81a145…
    What would show up as met
    • Nothing to configure: a deploy more than 30 days ago reads as met, a more recent deploy as partial because the code changed recently.

    How we check: We read the last deploy time on Solana. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ○ Not built

    Program age / upgrade count compr6…

    Full history scan (first deploy, upgrades in 30 d, authority changes) needs an indexer (e.g. Helius); not available on public RPC.
    Explorer ↗RPC call (getAccountInfo)RPC call (getSignaturesForAddress)RPC call (getTransaction) checked 2026-10-20 sha256 73a714d82fed… sha256 e2341c81a145…
Team & contact weight 155.6/15
  • ✕ Not met

    Security contact (security.txt)

    No valid security.txt at /.well-known/security.txt or /security.txt (200).
    lightprotocol.com ↗ checked 2026-10-20 sha256 c815f201a121…
    What would show up as met
    • Publish a text file at https://your-domain/.well-known/security.txt (or /security.txt) with a Contact: line, for example Contact: mailto:security@your-domain.
    • RFC 9116 also asks for an Expires: line. We look only for Contact:, but add Expires: too so the file stays correct.

    How we check: We fetch the two standard locations over HTTPS. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✓ Met

    Bug bounty programme linked

    Program SySTEM… embeds security.txt; its policy page (https://github.com/Lightprotocol/light-protocol/blob/main/SECURITY.md) describes a bug bounty / reward.
    GitHub ↗lightprotocol.com ↗lightprotocol.com ↗lightprotocol.com ↗ checked 2026-10-20 sha256 c815f201a121… sha256 c815f201a121…
  • ℹ Status only

    Claimed / not claimed

    Status only, not scored: claiming proves control of an authority, domain or GitHub organisation and never changes a score. The status is shown in the page header.
    source: calculated from the other checks checked 2026-10-20
  • ○ Not built

    Team declared (voluntary, with consent)

    Team declaration + consent flow not built — excluded.
    source: calculated from the other checks checked 2026-10-20
  • ℹ Status only

    Components declared complete by the project

    Status only, not scored (it used to be scored, which made pages that are not claimed systematically lower; removed 2026-10-15). Other programs/packages may exist that were not submitted.
    source: calculated from the other checks checked 2026-10-20
  • ◐ Partial

    Program embeds security.txt

    2/3 own program(s) embed a solana-security-txt block with contacts (SySTEM…, compr6…).
    Explorer ↗Explorer ↗Explorer ↗RPC call (getAccountInfo) checked 2026-10-20 sha256 7807e4a1f926…
    What would show up as met
    • Embed a security.txt block in the program with the solana-security-txt crate: name, project_url, contacts and policy. Redeploy to publish it.
    • This also tells us which programs belong to you, and which are shared programs that do not.

    How we check: We read the program account on Solana (public RPC). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ✕ Not met

    Official program address list

    SySTEM… published on third-party page (https://www.zkcompression.com/resources/addresses-and-urls); cToken… published on third-party page (https://www.zkcompression.com/resources/addresses-and-urls); compr6… published on third-party page (https://www.zkcompression.com/resources/addresses-and-urls).
    www.zkcompression.com ↗ checked 2026-10-20 sha256 78b22b73c785…
    What would show up as met
    • List your official program addresses on a page of your own domain (for example a docs page called “Addresses”). A list only on GitHub reads as partial, and one only on a third-party page as not met.

    How we check: We use the pages the project itself publishes. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

Domain weight 5 · 2 unknown3.8/5
  • ✓ Met

    HTTPS

    https://lightprotocol.com answered HTTP 200 over TLS.
    lightprotocol.com ↗lightprotocol.com ↗lightprotocol.com ↗lightprotocol.com ↗ checked 2026-10-20 sha256 c815f201a121… sha256 c815f201a121…
  • ◐ Partial

    Security headers

    Present: X-Content-Type-Options. Missing: HSTS, CSP, X-Frame-Options.
    lightprotocol.com ↗lightprotocol.com ↗lightprotocol.com ↗lightprotocol.com ↗ checked 2026-10-20 sha256 c815f201a121… sha256 c815f201a121…
    What would show up as met
    • Send these four response headers on your homepage: Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options and X-Frame-Options.
    • The check looks only at whether each header is present, not how strict it is.

    How we check: We read the headers of one homepage request. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ? Unknown

    Domain age

    Registered 2021-09-08 (~1868 d), source: RDAP (rdap.org). Registrant data ignored. Not credited: the domain is not shown to belong to the submitted components.
    RDAP ↗ checked 2026-10-20 sha256 ab058224f014…
    What would show up as met
    • Nothing to configure: a domain registered more than a year ago reads as met, 90 days to a year as partial.

    How we check: We read the registration date from the public domain registry (RDAP). This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

  • ? Unknown

    Domain ↔ components consistency

    Linked: GitHub org name matches domain (weak)
    source: calculated from the other checks checked 2026-10-20
    What would show up as met
    • Publish your official program addresses on your own domain and link your GitHub organisation from the website, so the three can be tied together.

    How we check: We compare what the project’s own pages say with the on-chain addresses and the GitHub organisation. This is what the check looks for. It makes no promise about a score or grade, and claiming or paying never changes a score.

Snapshot hash of monitored fields: bc831359ba74d45c

AI summaries

Generated with Grok 4.7 (xAI), Claude sonnet-5-5 (Anthropic) and GPT-6.1-sol (OpenAI) via their APIs. xAI, Anthropic and OpenAI have not reviewed, approved or sponsored Recheckable. AI-generated text; models see only extracted check results, never project-supplied text or personal names. They do not affect the score. Some text on this site (summaries and reports) is AI-generated and labelled where it appears. Scores and check results come from fixed code, not from AI. Scores are produced automatically from public data and are not reviewed by hand before they are shown; cases that the automatic checks flag are held for a person.

Template summary (deterministic)

Onchain track: band C (61/100, coverage 88 %, onchain v0.2.7). Strongest: Audits, Code openness, Onchain history, Legal documents. Weakest: Contract control, Team & contact. 3 check(s) unknown (each costs 1.5 points); 0 not read (no points lost, lowers coverage); 5 not built yet (excluded).

Regulatory information

The project has not declared any regulated-activity types, so no rules are listed.

Law firms (free listing, alphabetical, no ranking)

  • Delphi — Stockholm, Blockchain law (self-described)
  • Gernandt & Danielsson — Stockholm, Fintech (self-described)
  • Magnusson — Stockholm, Fintech (self-described)
  • Mannheimer Swartling — Stockholm, Fintech (own practice page to be confirmed) (self-described)
  • Setterwalls — Stockholm, Fintech (self-described)
  • Vinge — Stockholm, MiCA (own practice page to be confirmed) (self-described)

Recheckable has no financial relationship with the listed firms and receives no fee per contact. Paid placements, if ever introduced, are marked “Ad” and never shown next to low scores.

Score history

Automated score at each published review, newest on the right. The line steps at the date of a review; between reviews the score is unchanged.

Score historyTransparency score by published review for Light Protocol. offchain track: 2026-10-16 86/100 onchain track (dashed): 2026-10-16 46/100, 2026-10-17 61/100, 2026-10-19 61/100, 2026-10-20 61/100, 2026-10-20 61/10002550751002026-10-162026-10-20

Solid line: offchain track. Dashed line: onchain track. ◆ = the method changed at that review.

◆ 2026-10-17: the scoring method changed from v0.2.1 to v0.2.5. A score change at that point can come from the method and not from the project.

◆ 2026-10-19: the scoring method changed from v0.2.5 to v0.2.6. A score change at that point can come from the method and not from the project.

◆ 2026-10-20: the scoring method changed from v0.2.6 to v0.2.7. A score change at that point can come from the method and not from the project.

Data table
ReviewTrackScoreGradeCoverageMethod
2026-10-16offchain86/100no grade58 %v0.2.1
2026-10-16onchain46/100D88 %v0.2.1
2026-10-17onchain61/100C88 %v0.2.5
2026-10-19onchain61/100C88 %v0.2.6
2026-10-20onchain61/100C88 %v0.2.6
2026-10-20onchain61/100C88 %v0.2.7

Check changes between reviews

  • 2026-10-20 · onchain Last deploy SySTEM…: Partial → Met method changed Explorer ↗
  • 2026-10-20 · onchain Last deploy cToken…: Partial → Met method changed Explorer ↗
  • 2026-10-20 · onchain Last deploy SySTEM…: Partial → Met Explorer ↗
  • 2026-10-20 · onchain Last deploy cToken…: Partial → Met Explorer ↗
  • 2026-10-19 · onchain Last deploy SySTEM…: Partial → Met method changed Explorer ↗
  • 2026-10-19 · onchain Last deploy cToken…: Partial → Met method changed Explorer ↗
  • 2026-10-17 · onchain Last deploy SySTEM…: Partial → Met method changed Explorer ↗
  • 2026-10-17 · onchain Last deploy cToken…: Partial → Met method changed Explorer ↗
  • 2026-10-17 · onchain Audits found at official sources: Not met → Met method changed GitHub ↗ GitHub ↗

History

  1. 2026-10-20 21:57
    Forced fresh run (same result; fresh evidence snapshots): onchain C (61, coverage 88 %)
  2. 2026-10-20 13:21
    Forced fresh run (same result; fresh evidence snapshots): onchain C (61, coverage 88 %)
  3. 2026-10-19 13:09
    Forced fresh run (same result; fresh evidence snapshots): onchain C (61, coverage 88 %)
  4. 2026-10-17 06:09
    Nightly re-run: onchain C (61, coverage 88 %)
  5. 2026-10-16 14:22
    Nightly re-run: onchain D (46, coverage 88 %)
  6. 2026-10-16 12:58
    Initial automatic review (indexed): offchain insufficient data (86, coverage 58 %)

Project's own statements and reply

No reply published. Claimed projects can add their own statements and a reply next to any check — dispute a check or reply. These statements are shown beside the automated score and never change it.
Does your team control the upgrade authority, official domain or GitHub organisation of this project? Claim this page (free, about a minute; it never changes a score).

For project owners: badge

Recheckable: onchain band C, Active

Status: Active. The badge says “no changes since review”, never “safe”.

Badges are for claimed projects. The embed code is available after the page has been claimed (free, about a minute; claiming never changes the score). Claim this page

Re-checks are rate-limited (once per 10 minutes). Restoring a grey badge requires a full review.