Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/lambda-prize-claim.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Lambda Prize — payment
name: Lambda Prize - payment
description: You were awarded a Lambda Prize and need to submit details so we can verify and process payment.
title: "Lambda Prize — payment"
title: "Lambda Prize - payment"
labels:
- payment
body:
Expand Down
4 changes: 2 additions & 2 deletions .github/scripts/validate-submission.sh
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ if $IS_SOLUTION; then
[[ -f "$CLONE_DIR/$lf" ]] && has_license=true && break
done
if ! $has_license; then
err "No LICENSE in linked repo. Must be MIT or Apache-2.0."
err "No LICENSE in linked repo. Must be MIT and Apache-2.0 (dual licensed)."
fi

# 4c. README
Expand Down Expand Up @@ -381,7 +381,7 @@ fi
# ---------------------------------------------------------------------------
if $IS_SOLUTION && [[ -n "$SOL_CONTENT" ]]; then
if ! echo "$SOL_CONTENT" | grep -qiE 'MIT|Apache.?2'; then
warn "No license mentioned. Must be MIT or Apache-2.0."
warn "No license mentioned. Must be MIT and Apache-2.0 (dual licensed)."
fi
fi

Expand Down
13 changes: 13 additions & 0 deletions .github/vale/Lambda/Amount.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
extends: existence
message: "Write '%s' as a plain dollar amount, e.g. $1500 (no thousands separator, no USD, no k)."
level: error
nonword: true
tokens:
# $1,200 / $1.200
- '\$\d{1,3}(?:[,.]\d{3})+\b'
# 1200 USD / 1.200 USD
- '\b\d[\d,.]*\s?USD\b'
# USD 1200
- '\bUSD\s?\d[\d,.]*'
# $1.5k / $2M
- '\$\d[\d.]*[kKmM]\b'
7 changes: 7 additions & 0 deletions .github/vale/Lambda/Dash.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extends: existence
message: "Don't use an em or en dash ('%s'). Use ' - ' or ':' instead."
level: error
nonword: true
tokens:
- '—'
- '–'
8 changes: 8 additions & 0 deletions .github/vale/Lambda/License.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
extends: existence
message: "Write '%s' as 'MIT and Apache-2.0': submissions are dual licensed, not either/or."
level: error
ignorecase: true
nonword: true
tokens:
- 'MIT\s*(?:or|/)\s*Apache[-\w.]*'
- 'Apache[-\w.]*\s*(?:or|/)\s*MIT'
24 changes: 24 additions & 0 deletions .github/workflows/lint-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lint Docs

# House-style checks for maintainer-owned docs, run with Vale. Config is
# .vale.ini; rules live in .github/vale/Lambda/. Only lines added by the PR
# are reported. Read-only token: the default reporter annotates fork PRs
# through the runner log, so no write access is needed.
on:
pull_request:

permissions:
contents: read

jobs:
vale:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false

- uses: errata-ai/vale-action@v3
with:
version: 3.24.0
fail_on_error: true
9 changes: 9 additions & 0 deletions .vale.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Vale config: house-style checks for maintainer-owned docs.
# Rules live in .github/vale/Lambda/. Run locally with `vale .`
# (https://vale.sh/docs/install). Code spans and code blocks are skipped.
# Submitted solutions are the submitter's writing, so only the template is linted.
StylesPath = .github/vale
MinAlertLevel = error

[{prizes/*.md,README.md,TERMS.md,PRIVACY_POLICY.md,solutions/LP-0000.md}]
BasedOnStyles = Lambda
4 changes: 2 additions & 2 deletions PRIVACY_POLICY.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Logos Lambda Prize Program – Privacy Policy
# Logos Lambda Prize Program - Privacy Policy

## (1) Introduction

Expand Down Expand Up @@ -29,7 +29,7 @@ The personal data we collect via this Typeform includes the following:

## (4) Purpose and legal basis of processing

We collect your personal data for the purposes of administering the Program, namely the payment of the Prize (as defined in the [Logos Lambda Prize Program – Terms & Conditions](https://github.com/logos-co/lambda-prize/blob/master/TERMS.md)), as well as to ensure Logos’ compliance with any regulatory obligations and applicable law, including sanctions compliance.
We collect your personal data for the purposes of administering the Program, namely the payment of the Prize (as defined in the [Logos Lambda Prize Program - Terms & Conditions](https://github.com/logos-co/lambda-prize/blob/master/TERMS.md)), as well as to ensure Logos’ compliance with any regulatory obligations and applicable law, including sanctions compliance.

We rely on the legal basis of “consent” in order for us to process the Personal Data, obtained via the checkbox you have ticked in the Typeform.

Expand Down
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Prizes are graded on a functionality gate **plus** adoption criteria (real third

| File | Description | Size | Status |
|------|-------------|------|--------|
| [LP-0000](prizes/LP-0000.md) | Template — use this as the starting point for new prizes | — | — |
| [LP-0000](prizes/LP-0000.md) | Template - use this as the starting point for new prizes | - | - |
| [LP-0001](prizes/LP-0001.md) | NFT Wallet Support and Private Ownership Proof | Medium | Open |
| [LP-0018](prizes/LP-0018.md) | OpenStreetMap integration: decentralized map data distribution | Medium | Open |
| [LP-0021](prizes/LP-0021.md) | LEZ Wallet and Provider SDK | X-Large | Open |
Expand Down Expand Up @@ -62,18 +62,20 @@ Prizes are graded on a functionality gate **plus** adoption criteria (real third
Prizes can currently only be proposed by Logos CCs. A separate process for sourcing ideas from the wider community is planned.

1. Copy `[prizes/LP-0000.md](prizes/LP-0000.md)` to `prizes/LP-XXXX.md`, where `XXXX` is the next available number.
2. Fill in all sections except **Prize Structure** (prize pool, revision date) — these are determined by the Logos team.
2. Fill in all sections except **Prize Structure** (prize pool, revision date) - these are determined by the Logos team.
3. Open a pull request titled `LP-XXXX: <Prize Title>`.

CI runs [Vale](https://vale.sh) on prize specs and repo docs to keep the writing consistent: licensing is "MIT and Apache-2.0" (never "or"), amounts are written `$1500`, and em/en dashes are replaced with ` - `. The rules live in [`.github/vale/Lambda/`](.github/vale/Lambda/). [Install Vale](https://vale.sh/docs/install) and run `vale .` before opening the PR.

The first **solution PR** that meets the success criteria and the prize's **Adoption** section wins. Meeting the criteria without a solution PR in this repository does not establish priority. Single winner unless otherwise specified in the prize.

### Submitting a Solution

Solutions live in the `[solutions/](solutions/)` directory. To submit a solution:

1. Create a markdown file in `solutions/` matching the prize identifier — e.g., `solutions/LP-0001.md` for prize `LP-0001`.
1. Create a markdown file in `solutions/` matching the prize identifier - e.g., `solutions/LP-0001.md` for prize `LP-0001`.
2. Fill in the solution template: describe your approach, link to the repository containing the implementation, and attach any supporting materials. The implementation must be dual licensed under the MIT License **and** Apache License 2.0.
3. Open a pull request titled `Solution: LP-XXXX — <Short Description>`.
3. Open a pull request titled `Solution: LP-XXXX - <Short Description>`.

The solution PR must include evidence and supporting data for each required adoption criterion (for example links to independent modules, on-chain entries, and anything else the prize lists). Evaluators will not take a headline number on trust.

Expand All @@ -95,7 +97,7 @@ The following policies apply to **all** prizes unless a specific prize states ot

### How is this meant to work?

Build something useful on the Logos stack, share it, and let other builders pick it up if it helps them. When that usage is real — independent modules, on-chain activity, or whatever the prize lists — open a **solution PR** with evidence. Remember that meeting a number without a solution PR in this repository does not establish priority.
Build something useful on the Logos stack, share it, and let other builders pick it up if it helps them. When that usage is real - independent modules, on-chain activity, or whatever the prize lists - open a **solution PR** with evidence. Remember that meeting a number without a solution PR in this repository does not establish priority.

### Why include an adoption criteria?

Expand Down
2 changes: 1 addition & 1 deletion TERMS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# λPrize Program – Terms & Conditions
# λPrize Program - Terms & Conditions

*Last updated: 17 September 2026*

Expand Down
18 changes: 9 additions & 9 deletions prizes/LP-0000.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This front matter is for internal reference and tooling only. It does not
# form part of the Specification and is not directed at Participants.
#
# Always declare `dependencies:` — use `[]` if there are none.
# Always declare `dependencies:` - use `[]` if there are none.
# A missing field signals the author has not considered deps yet
# (lintable); `[]` signals considered and none. Replace `[]` with
# a list of `{ id, reason }` objects for prizes with hard deps on
Expand Down Expand Up @@ -39,22 +39,22 @@ dependencies: []

## Success Criteria

> Concrete, measurable outcomes that determine a winner. Be specific — TVL thresholds, performance benchmarks, adoption metrics, etc. Each item should be a testable statement.
> Concrete, measurable outcomes that determine a winner. Be specific - TVL thresholds, performance benchmarks, adoption metrics, etc. Each item should be a testable statement.
>
> Consider including criteria from each of the following areas (remove any that don't apply):
>
> **Functionality** — what the system must do. Note: applications must not depend on any centralised server or service. Use the Logos stack for communication: **Logos Delivery** (storage/data availability) for publishing data, and **Logos Chat** (messaging) for peer-to-peer coordination.
> **Functionality** - what the system must do. Note: applications must not depend on any centralised server or service. Use the Logos stack for communication: **Logos Delivery** (storage/data availability) for publishing data, and **Logos Chat** (messaging) for peer-to-peer coordination.
>
> **Usability** — standard requirements for Logos apps (adapt as needed):
> **Usability** - standard requirements for Logos apps (adapt as needed):
> - Provide a module/SDK that can be used to build Logos modules for interacting with the program.
> - Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp).
> - Provide an IDL for the LEZ program, using the [SPEL framework](https://github.com/logos-co/spel).
>
> **Reliability** — fault tolerance, consistency, graceful degradation, error handling.
> **Reliability** - fault tolerance, consistency, graceful degradation, error handling.
>
> **Performance** — throughput, latency, resource usage. Document compute unit usage of each operation (LEZ's per-transaction compute budget may change during testnet).
> **Performance** - throughput, latency, resource usage. Document compute unit usage of each operation (LEZ's per-transaction compute budget may change during testnet).
>
> **Supportability** — standard requirements (adapt as needed):
> **Supportability** - standard requirements (adapt as needed):
> - The program is deployed and tested on LEZ devnet/testnet.
> - End-to-end integration tests run against a LEZ sequencer (standalone mode) and are included in CI.
> - CI must be green on the default branch.
Expand All @@ -80,7 +80,7 @@ dependencies: []

- **Total Prize:** $X
- **Effort:** XS / S / M / L / XL / Variable
> Leave prize pool blank — this will be determined by the Logos team. Single winner by default. Detail here if otherwise.
> Leave prize pool blank - this will be determined by the Logos team. Single winner by default. Detail here if otherwise.

## Eligibility

Expand Down Expand Up @@ -145,4 +145,4 @@ Artefacts developed by Participants in connection with the Program are published

Participants or other persons who choose to build upon, host, maintain, deploy, operate, use or publicly promote any Artefacts, do so at their own risk and as a principal and in their own name. Any such persons are further solely responsible for complying with any legal or regulatory requirements that apply to them with such use. Logos does not make any representation, provide any advice or assume any responsibility regarding the use of such Artefacts, or any determination of compliance with applicable law or regulation.

For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program – Terms & Conditions](../TERMS.md).
For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program - Terms & Conditions](../TERMS.md).
4 changes: 2 additions & 2 deletions prizes/LP-0001.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ Submissions to this λPrize are welcome from the LP-0021 winning team or from a

## Prize Structure

- **Total Prize:** $5,000
- **Total Prize:** $5000
- **Effort:** Medium

## Eligibility
Expand Down Expand Up @@ -196,4 +196,4 @@ Artefacts developed by Participants in connection with the Program are published

Participants or other persons who choose to build upon, host, maintain, deploy, operate, use or publicly promote any Artefacts, do so at their own risk and as a principal and in their own name. Any such persons are further solely responsible for complying with any legal or regulatory requirements that apply to them with such use. Logos does not make any representation, provide any advice or assume any responsibility regarding the use of such Artefacts, or any determination of compliance with applicable law or regulation.

For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program – Terms & Conditions](../TERMS.md).
For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program - Terms & Conditions](../TERMS.md).
20 changes: 10 additions & 10 deletions prizes/LP-0002.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ This prize closed on **11 September 2026 at 23:59 CEST**. New submissions are no

## Overview

A proof-of-concept public M-of-N multisig exists for LEZ ([lez-multisig](https://github.com/jimmy-claw/lez-multisig)), but it is architecturally incompatible with shielded (private) accounts. Member accounts must be fresh zero-nonce keypairs claimed by the multisig program — a constraint that private accounts, which are owned by the privacy protocol and increment nonce on every use, cannot satisfy.
A proof-of-concept public M-of-N multisig exists for LEZ ([lez-multisig](https://github.com/jimmy-claw/lez-multisig)), but it is architecturally incompatible with shielded (private) accounts. Member accounts must be fresh zero-nonce keypairs claimed by the multisig program - a constraint that private accounts, which are owned by the privacy protocol and increment nonce on every use, cannot satisfy.

This prize is for a private M-of-N multisig primitive for LEZ: one where members hold shielded accounts, proposals and approvals leave no public trace of who voted, and on-chain state reveals only that a threshold was met — not which members approved.
This prize is for a private M-of-N multisig primitive for LEZ: one where members hold shielded accounts, proposals and approvals leave no public trace of who voted, and on-chain state reveals only that a threshold was met - not which members approved.

## Motivation

Multisigs are critical infrastructure for DAOs, shared treasuries, and protocol governance. But a multisig that exposes its member list and approval history on-chain is a surveillance surface: it reveals voting patterns, enables social pressure, and links member identities to governance decisions. For a privacy-first ecosystem like Logos, a public multisig is a second-class primitive.

The lez-multisig PoC explicitly notes in its design documents that private multisig support *"would require shielded voting and ZK threshold proofs"* — a fundamentally different architecture. This prize builds that architecture.
The lez-multisig PoC explicitly notes in its design documents that private multisig support *"would require shielded voting and ZK threshold proofs"* - a fundamentally different architecture. This prize builds that architecture.

A competitive prize is the right mechanism because the design space is large: choice of threshold proof scheme, how to handle the LEZ nonce constraint, nullifier design to prevent double-voting, and the trade-off between proof size and verifier gas cost all admit multiple valid approaches.

Expand Down Expand Up @@ -75,14 +75,14 @@ A competitive prize is the right mechanism because the design space is large: ch

### Out of Scope

- Public (non-shielded) multisig — the lez-multisig PoC covers that use case.
- Public (non-shielded) multisig - the lez-multisig PoC covers that use case.
- Hiding the proposal *content* (only member identity and vote are private; the proposed action may be public).
- A polished consumer UI — a working demo is sufficient.
- A polished consumer UI - a working demo is sufficient.
- Ongoing maintenance or security audits beyond initial delivery.

## Prize Structure

- **Total Prize:** $1,200
- **Total Prize:** $1200
- **Effort:** Large

## Eligibility
Expand Down Expand Up @@ -111,11 +111,11 @@ The following policies apply to all prizes (see [evaluation policies](../README.

## Resources

- [lez-multisig](https://github.com/jimmy-claw/lez-multisig) — public multisig PoC; architecture notes describe why private accounts are incompatible
- [lez-multisig](https://github.com/jimmy-claw/lez-multisig) - public multisig PoC; architecture notes describe why private accounts are incompatible
- [Logos Execution Zone repo](https://github.com/logos-blockchain/logos-execution-zone/)
- [Risc0 proving system](https://dev.risczero.com/)
- [Semaphore — ZK anonymous signalling and nullifier design](https://semaphore.pse.dev/)
- [MACI — Minimum Anti-Collusion Infrastructure](https://privacy-scaling-explorations.github.io/maci/)
- [Semaphore - ZK anonymous signalling and nullifier design](https://semaphore.pse.dev/)
- [MACI - Minimum Anti-Collusion Infrastructure](https://privacy-scaling-explorations.github.io/maci/)
- [Threshold signature schemes (FROST)](https://eprint.iacr.org/2020/852)

## Potential for Subsequent λ Prizes
Expand Down Expand Up @@ -143,4 +143,4 @@ Artefacts developed by Participants in connection with the Program are published

Participants or other persons who choose to build upon, host, maintain, deploy, operate, use or publicly promote any Artefacts, do so at their own risk and as a principal and in their own name. Any such persons are further solely responsible for complying with any legal or regulatory requirements that apply to them with such use. Logos does not make any representation, provide any advice or assume any responsibility regarding the use of such Artefacts, or any determination of compliance with applicable law or regulation.

For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program – Terms & Conditions](../TERMS.md).
For further details of the above and what terms and conditions apply to a Participant, please refer to the [λPrize Program - Terms & Conditions](../TERMS.md).
Loading
Loading