From ed3673b9a2b2243c680a888a8038327cba4fbad4 Mon Sep 17 00:00:00 2001 From: Sasha Date: Fri, 2 Oct 2026 00:54:11 +0200 Subject: [PATCH 1/2] chore: add Vale docs linter for consistent writing (#174) Adds a Vale config (.vale.ini) with a Lambda style in .github/vale/ and a Lint Docs workflow that runs it on PRs and pushes to master. Rules apply to maintainer-owned markdown (prizes/, README, TERMS, PRIVACY_POLICY, the solution template); submitted solutions are skipped. - Lambda.License: "MIT and Apache-2.0", never "or" or "/" - Lambda.Amount: amounts written as $1500 (no separator, USD, or k) - Lambda.Dash: no em or en dashes; use " - " instead Fixes all existing violations, including the validator messages that said "Must be MIT or Apache-2.0". Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/ISSUE_TEMPLATE/lambda-prize-claim.yml | 4 +- .github/scripts/validate-submission.sh | 4 +- .github/vale/Lambda/Amount.yml | 13 +++ .github/vale/Lambda/Dash.yml | 7 ++ .github/vale/Lambda/License.yml | 8 ++ .github/workflows/lint-docs.yml | 44 ++++++++++ .vale.ini | 16 ++++ PRIVACY_POLICY.md | 4 +- README.md | 12 +-- TERMS.md | 2 +- prizes/LP-0000.md | 18 ++-- prizes/LP-0001.md | 4 +- prizes/LP-0002.md | 20 ++--- prizes/LP-0003.md | 16 ++-- prizes/LP-0004.md | 18 ++-- prizes/LP-0005.md | 30 +++---- prizes/LP-0008.md | 82 +++++++++---------- prizes/LP-0009.md | 12 +-- prizes/LP-0010.md | 16 ++-- prizes/LP-0011.md | 2 +- prizes/LP-0012.md | 6 +- prizes/LP-0013.md | 4 +- prizes/LP-0014.md | 2 +- prizes/LP-0015.md | 6 +- prizes/LP-0016.md | 48 +++++------ prizes/LP-0017.md | 28 +++---- prizes/LP-0018.md | 20 ++--- prizes/LP-0021.md | 10 +-- prizes/LP-0022.md | 4 +- prizes/LP-0023.md | 24 +++--- prizes/LP-0026.md | 4 +- solutions/LP-0000.md | 2 +- 32 files changed, 290 insertions(+), 200 deletions(-) create mode 100644 .github/vale/Lambda/Amount.yml create mode 100644 .github/vale/Lambda/Dash.yml create mode 100644 .github/vale/Lambda/License.yml create mode 100644 .github/workflows/lint-docs.yml create mode 100644 .vale.ini diff --git a/.github/ISSUE_TEMPLATE/lambda-prize-claim.yml b/.github/ISSUE_TEMPLATE/lambda-prize-claim.yml index e5ecf8e3..2d402213 100644 --- a/.github/ISSUE_TEMPLATE/lambda-prize-claim.yml +++ b/.github/ISSUE_TEMPLATE/lambda-prize-claim.yml @@ -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: diff --git a/.github/scripts/validate-submission.sh b/.github/scripts/validate-submission.sh index aeb128bd..461e9733 100755 --- a/.github/scripts/validate-submission.sh +++ b/.github/scripts/validate-submission.sh @@ -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 @@ -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 diff --git a/.github/vale/Lambda/Amount.yml b/.github/vale/Lambda/Amount.yml new file mode 100644 index 00000000..0508ea8e --- /dev/null +++ b/.github/vale/Lambda/Amount.yml @@ -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' diff --git a/.github/vale/Lambda/Dash.yml b/.github/vale/Lambda/Dash.yml new file mode 100644 index 00000000..f22e90c8 --- /dev/null +++ b/.github/vale/Lambda/Dash.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Don't use an em or en dash ('%s'). Use ' - ' or ':' instead." +level: error +nonword: true +tokens: + - '—' + - '–' diff --git a/.github/vale/Lambda/License.yml b/.github/vale/Lambda/License.yml new file mode 100644 index 00000000..5436b4cf --- /dev/null +++ b/.github/vale/Lambda/License.yml @@ -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' diff --git a/.github/workflows/lint-docs.yml b/.github/workflows/lint-docs.yml new file mode 100644 index 00000000..2f454aa8 --- /dev/null +++ b/.github/workflows/lint-docs.yml @@ -0,0 +1,44 @@ +name: Lint Docs + +# House-style checks for maintainer-owned docs, run with Vale. Config is +# .vale.ini; rules live in .github/vale/Lambda/. +# Plain `pull_request` with read-only perms: nothing here needs to comment, so +# the PR tree can be checked out and linted directly (fork PRs included). +on: + pull_request: + push: + branches: [master] + +permissions: + contents: read + +concurrency: + group: lint-docs-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + VALE_VERSION: 3.24.0 + +jobs: + vale: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Install Vale + run: | + curl -fsSL "https://github.com/errata-ai/vale/releases/download/v${VALE_VERSION}/vale_${VALE_VERSION}_Linux_64-bit.tar.gz" \ + | sudo tar -xz -C /usr/local/bin vale + vale --version + + - name: Lint docs + run: | + # Human-readable report in the log, then one annotation per alert so + # problems show inline on the PR diff. Exit non-zero on any error. + status=0 + vale --no-wrap . || status=$? + vale --output=JSON . | jq -r 'to_entries[] | .key as $f | .value[] + | "::error file=\($f),line=\(.Line),col=\(.Span[0]),title=\(.Check)::\(.Message)"' + exit $status diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 00000000..f132341d --- /dev/null +++ b/.vale.ini @@ -0,0 +1,16 @@ +# 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. +StylesPath = .github/vale +MinAlertLevel = error + +[*.md] +BasedOnStyles = Lambda + +# Submitted solutions are the submitter's writing, not ours; only the +# template is linted. +[solutions/*.md] +BasedOnStyles = + +[solutions/LP-0000.md] +BasedOnStyles = Lambda diff --git a/PRIVACY_POLICY.md b/PRIVACY_POLICY.md index 01f575e7..ad8dec84 100644 --- a/PRIVACY_POLICY.md +++ b/PRIVACY_POLICY.md @@ -1,4 +1,4 @@ -# Logos Lambda Prize Program – Privacy Policy +# Logos Lambda Prize Program - Privacy Policy ## (1) Introduction @@ -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. diff --git a/README.md b/README.md index 255a5195..2232294f 100644 --- a/README.md +++ b/README.md @@ -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 | @@ -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: `. +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 — `. +3. Open a pull request titled `Solution: LP-XXXX - `. 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. @@ -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? diff --git a/TERMS.md b/TERMS.md index 47e5c2d2..07b47cd9 100644 --- a/TERMS.md +++ b/TERMS.md @@ -1,4 +1,4 @@ -# λPrize Program – Terms & Conditions +# λPrize Program - Terms & Conditions *Last updated: 17 September 2026* diff --git a/prizes/LP-0000.md b/prizes/LP-0000.md index dc1ed56f..3a815a05 100644 --- a/prizes/LP-0000.md +++ b/prizes/LP-0000.md @@ -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 @@ -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. @@ -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 @@ -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). diff --git a/prizes/LP-0001.md b/prizes/LP-0001.md index b847f819..ac8f3dc2 100644 --- a/prizes/LP-0001.md +++ b/prizes/LP-0001.md @@ -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 @@ -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). diff --git a/prizes/LP-0002.md b/prizes/LP-0002.md index f42b8045..0f360790 100644 --- a/prizes/LP-0002.md +++ b/prizes/LP-0002.md @@ -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. @@ -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 @@ -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 @@ -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). diff --git a/prizes/LP-0003.md b/prizes/LP-0003.md index 9aabed35..0ec10cb5 100644 --- a/prizes/LP-0003.md +++ b/prizes/LP-0003.md @@ -13,17 +13,17 @@ This prize closed on **11 September 2026 at 23:59 CEST**. New submissions are no ## Overview -Token airdrops and allowlist distributions today require recipients to expose their wallet address — and, by extension, their full on-chain history — at the moment of claim. The distributor must either publish the full eligibility list publicly or run a centralised gating service. Neither is acceptable for a privacy-first ecosystem. +Token airdrops and allowlist distributions today require recipients to expose their wallet address - and, by extension, their full on-chain history - at the moment of claim. The distributor must either publish the full eligibility list publicly or run a centralised gating service. Neither is acceptable for a privacy-first ecosystem. This prize is for a private airdrop and allowlist primitive for LEZ: a contract where the distributor commits to a hidden set of eligible accounts, recipients can claim without revealing they were on the list, and no on-chain observer can link a claim to a specific eligible address. ## Motivation -Airdrops are a primary token distribution mechanism for new protocols. Allowlists gate access to launches, NFT mints, and governance participation. In both cases the current pattern — publish a Merkle root, let users submit inclusion proofs — reveals eligibility and links pseudonymous identities to participation. For a community built around freedom and censorship-resistance, this creates real risks: eligible addresses can be targeted, excluded, or front-run. +Airdrops are a primary token distribution mechanism for new protocols. Allowlists gate access to launches, NFT mints, and governance participation. In both cases the current pattern - publish a Merkle root, let users submit inclusion proofs - reveals eligibility and links pseudonymous identities to participation. For a community built around freedom and censorship-resistance, this creates real risks: eligible addresses can be targeted, excluded, or front-run. -Any commitment-based eligibility scheme involves trade-offs between distributor knowledge, claim-time privacy, and verifiability. Different approaches sit at different points in this space, and there is no single correct answer. The design space — commitment scheme, claim uniqueness mechanism, recipient UX, and integration with shielded token transfers — admits multiple valid approaches, which is exactly why a competitive prize is the right mechanism. +Any commitment-based eligibility scheme involves trade-offs between distributor knowledge, claim-time privacy, and verifiability. Different approaches sit at different points in this space, and there is no single correct answer. The design space - commitment scheme, claim uniqueness mechanism, recipient UX, and integration with shielded token transfers - admits multiple valid approaches, which is exactly why a competitive prize is the right mechanism. -Logos' shielded account model offers a richer design surface than standard EVM environments. Submissions are expected to take advantage of this and explain how their design improves on the public Merkle airdrop baseline — and where the remaining trade-offs lie. +Logos' shielded account model offers a richer design surface than standard EVM environments. Submissions are expected to take advantage of this and explain how their design improves on the public Merkle airdrop baseline - and where the remaining trade-offs lie. ## Success Criteria @@ -33,7 +33,7 @@ Logos' shielded account model offers a richer design surface than standard EVM e - [ ] An eligible recipient can claim their allocation without revealing which address in the set they hold. - [ ] A recipient cannot claim more than once (double-claim prevention via nullifiers or equivalent). - [ ] An on-chain observer cannot link a completed claim to any specific address in the eligibility set. -- [ ] The submission documents its full privacy model: what on-chain observers learn, what the distributor learns, at which points in the claim flow identity information is revealed or withheld, and where trade-offs or residual leakage remain. Claims of privacy must be precise — "unlinkable" must be defined relative to a stated threat model. +- [ ] The submission documents its full privacy model: what on-chain observers learn, what the distributor learns, at which points in the claim flow identity information is revealed or withheld, and where trade-offs or residual leakage remain. Claims of privacy must be precise - "unlinkable" must be defined relative to a stated threat model. - [ ] A reference integration is delivered: a working demo of a private airdrop or allowlist gate on LEZ testnet. - [ ] At least 2 distinct distributions are deployed on LEZ testnet, with a combined total of at least 20 unique claims completed across them; the distributions must be reproducible and evidence must be provided. - [ ] Full documentation and a clean public repository are delivered. @@ -114,9 +114,9 @@ The following policies apply to all prizes (see [evaluation policies](../README. - [Logos Execution Zone repo](https://github.com/logos-blockchain/logos-execution-zone/) - [Risc0 proving system](https://dev.risczero.com/) -- [Semaphore — nullifier and group membership design](https://semaphore.pse.dev/) +- [Semaphore - nullifier and group membership design](https://semaphore.pse.dev/) - [Merkle airdrop reference (public baseline)](https://github.com/Uniswap/merkle-distributor) -- [zk-kit — Merkle tree and nullifier primitives](https://github.com/privacy-scaling-explorations/zk-kit) +- [zk-kit - Merkle tree and nullifier primitives](https://github.com/privacy-scaling-explorations/zk-kit) ## Potential for Subsequent λ Prizes @@ -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). diff --git a/prizes/LP-0004.md b/prizes/LP-0004.md index a3da0556..40683373 100644 --- a/prizes/LP-0004.md +++ b/prizes/LP-0004.md @@ -12,13 +12,13 @@ dependencies: [] On-chain auctions are broken by transparency: every bid is visible to subsequent bidders, enabling last-second sniping, bid-matching, and strategic withholding. The result is that on-chain auctions fail to discover true market prices and systematically disadvantage honest participants. -Logos' shielded account model makes hidden balances a native primitive. This prize demonstrates the power of that model with a sealed-bid auction on LEZ — one where participants commit bids without revealing their amounts, no bidder can see competitors' maximum offers, and the winner is determined and assets transferred entirely on-chain without a trusted auctioneer. +Logos' shielded account model makes hidden balances a native primitive. This prize demonstrates the power of that model with a sealed-bid auction on LEZ - one where participants commit bids without revealing their amounts, no bidder can see competitors' maximum offers, and the winner is determined and assets transferred entirely on-chain without a trusted auctioneer. ## Motivation Sealed-bid auctions (Vickrey, first-price, or hybrid formats) are theoretically optimal for price discovery, but they have been impractical on transparent blockchains: bids must be hidden until reveal, which requires either trusted off-chain components or complex commit-reveal schemes vulnerable to non-reveal griefing. -Logos' shielded execution model changes this. Hidden balances mean a bid can be a real on-chain transfer — not a commitment to a future transfer — that the contract holds in escrow without any observer knowing its value. There is no reveal phase and no griefing vector. This prize demonstrates that privacy-preserving shielded state is not just a financial feature but an infrastructure primitive that enables new classes of applications. +Logos' shielded execution model changes this. Hidden balances mean a bid can be a real on-chain transfer - not a commitment to a future transfer - that the contract holds in escrow without any observer knowing its value. There is no reveal phase and no griefing vector. This prize demonstrates that privacy-preserving shielded state is not just a financial feature but an infrastructure primitive that enables new classes of applications. A competitive prize is the right mechanism because the design space is large: auction format (Vickrey vs. first-price), how the contract reads shielded escrow balances, tie-breaking, refund mechanics, and front-running resistance all have multiple valid solutions. @@ -43,7 +43,7 @@ A competitive prize is the right mechanism because the design space is large: au ### Reliability - [ ] The auction handles concurrent bids from multiple bidders without state corruption. -- [ ] Refunds are issued atomically — a refund failure does not leave a bidder unable to recover funds after timelock expiry. +- [ ] Refunds are issued atomically - a refund failure does not leave a bidder unable to recover funds after timelock expiry. - [ ] The auction state is consistent across sequencer restarts: in-progress auctions resume correctly. ### Performance @@ -73,8 +73,8 @@ A competitive prize is the right mechanism because the design space is large: au - Hiding the identity of the winner (the winning bid transfer is out of scope for privacy; focus is on hiding bid amounts during the auction). - English (ascending) or Dutch (descending) open-cry auction formats. -- Multi-asset or NFT auctions — fungible token bids only. -- A polished consumer UI — a working demo is sufficient. +- Multi-asset or NFT auctions - fungible token bids only. +- A polished consumer UI - a working demo is sufficient. - Ongoing maintenance or security audits beyond initial delivery. ## Prize Structure @@ -110,9 +110,9 @@ The following policies apply to all prizes (see [evaluation policies](../README. - [Logos Execution Zone repo](https://github.com/logos-blockchain/logos-execution-zone/) - [Risc0 proving system](https://dev.risczero.com/) -- [Vickrey auction — Wikipedia](https://en.wikipedia.org/wiki/Vickrey_auction) -- [Sealed-bid auctions on blockchains — survey](https://eprint.iacr.org/2021/1113) -- [Penumbra DEX — sealed-bid batch auction design](https://protocol.penumbra.zone/main/dex.html) +- [Vickrey auction - Wikipedia](https://en.wikipedia.org/wiki/Vickrey_auction) +- [Sealed-bid auctions on blockchains - survey](https://eprint.iacr.org/2021/1113) +- [Penumbra DEX - sealed-bid batch auction design](https://protocol.penumbra.zone/main/dex.html) ## Potential for Subsequent λ Prizes @@ -139,4 +139,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). diff --git a/prizes/LP-0005.md b/prizes/LP-0005.md index ac812fe1..92557378 100644 --- a/prizes/LP-0005.md +++ b/prizes/LP-0005.md @@ -11,20 +11,20 @@ dependencies: [] ## Overview -Many access-control mechanisms — governance participation thresholds, protocol fee tiers, allowlist eligibility, token-gated chat rooms — require a user to prove they hold at least N tokens of a given type. On a transparent chain this is trivial: anyone can inspect the balance. On Logos, balances are private by default, which breaks the naive approach but enables a much better one: a user can prove they meet a threshold without revealing their exact balance or linking the proof to their account. +Many access-control mechanisms - governance participation thresholds, protocol fee tiers, allowlist eligibility, token-gated chat rooms - require a user to prove they hold at least N tokens of a given type. On a transparent chain this is trivial: anyone can inspect the balance. On Logos, balances are private by default, which breaks the naive approach but enables a much better one: a user can prove they meet a threshold without revealing their exact balance or linking the proof to their account. This prize is for a reusable private balance attestation primitive with two verification paths: - **On-chain**: A LEZ verifier program gates on-chain actions (governance votes, access grants, etc.). -- **Off-chain**: The proof is transmitted over Logos Messaging and verified locally by any recipient — enabling privacy-preserving token-gating for applications such as chat group access, without any on-chain transaction. +- **Off-chain**: The proof is transmitted over Logos Messaging and verified locally by any recipient - enabling privacy-preserving token-gating for applications such as chat group access, without any on-chain transaction. ## Motivation Logos has a token program ([LEZ](https://github.com/logos-blockchain/logos-execution-zone/tree/main/programs/token)) that already structures private account balances as commitments of the form `SHA256(npk || program_owner || balance || nonce || SHA256(data))`, committed into an on-chain Merkle tree. The sequencer exposes `get_proof_for_commitment`, which returns a Merkle membership proof for any private account. -The missing piece is a circuit that takes a private account, its Merkle membership proof, and a public threshold N, and produces a succinct proof that the account's balance satisfies `balance >= N` — without revealing `npk`, `balance`, or any other private field. +The missing piece is a circuit that takes a private account, its Merkle membership proof, and a public threshold N, and produces a succinct proof that the account's balance satisfies `balance >= N` - without revealing `npk`, `balance`, or any other private field. -Once generated, that proof is a self-contained, verifiable credential. It can be submitted to a LEZ program for on-chain gating, or broadcast over Logos Messaging for off-chain gating — for example, to gain entry to a token-gated chat group. The verifier (on-chain program or off-chain recipient) needs only the proof and the public parameters; it learns nothing else about the prover. +Once generated, that proof is a self-contained, verifiable credential. It can be submitted to a LEZ program for on-chain gating, or broadcast over Logos Messaging for off-chain gating - for example, to gain entry to a token-gated chat group. The verifier (on-chain program or off-chain recipient) needs only the proof and the public parameters; it learns nothing else about the prover. A competitive prize is the right mechanism because the proving strategy, nullifier scheme, context-binding approach, and the integration patterns for both verification paths admit multiple valid approaches. @@ -33,9 +33,9 @@ A competitive prize is the right mechanism because the proving strategy, nullifi ### Functionality - [ ] A shielded token account holder can generate a client-side proof that their balance meets a public threshold N. -- [ ] The proof is verifiable without revealing the account's nullifier public key, exact balance, or account identity — whether verified on-chain or off-chain. +- [ ] The proof is verifiable without revealing the account's nullifier public key, exact balance, or account identity - whether verified on-chain or off-chain. - [ ] The proof is bound to a specific context (e.g., a program ID, group ID, or application identifier) to prevent replay across different gates. -- [ ] The proof is bound to the presenter's identity — a third party who obtains the proof cannot use it to pass verification without also holding the presenter's private key. +- [ ] The proof is bound to the presenter's identity - a third party who obtains the proof cannot use it to pass verification without also holding the presenter's private key. - [ ] The circuit correctly targets the existing LEZ private account commitment format: `SHA256(npk || program_owner || balance || nonce || SHA256(data))`. - [ ] **On-chain path**: A LEZ verifier program accepts and verifies the proof, gating at least one on-chain action. - [ ] **Off-chain path**: The proof can be transmitted over Logos Messaging and verified locally by a recipient, demonstrated by a token-gated access flow (e.g., admission to a chat group). @@ -81,18 +81,18 @@ A competitive prize is the right mechanism because the proving strategy, nullifi ### Known Open Problem: Proof Forwarding -A proof generated by Alice is a self-contained credential. Nothing prevents Alice from forwarding her proof to Bob, who then presents it to a verifier as if he were the one holding the tokens. Context binding (see Success Criteria) mitigates replay *across different gates*, but does not bind the proof to the identity of the presenter. Submissions must address this — for example by requiring the presenter to demonstrate knowledge of a private key corresponding to a public key committed in the proof — and must document the approach and its remaining limitations. +A proof generated by Alice is a self-contained credential. Nothing prevents Alice from forwarding her proof to Bob, who then presents it to a verifier as if he were the one holding the tokens. Context binding (see Success Criteria) mitigates replay *across different gates*, but does not bind the proof to the identity of the presenter. Submissions must address this - for example by requiring the presenter to demonstrate knowledge of a private key corresponding to a public key committed in the proof - and must document the approach and its remaining limitations. ### Out of Scope -- Changes to the existing token program or its commitment format — the circuit must work with the format as-is. +- Changes to the existing token program or its commitment format - the circuit must work with the format as-is. - Proving exact balance equality (only threshold proofs are required). -- A polished consumer UI — working demos are sufficient. +- A polished consumer UI - working demos are sufficient. - Ongoing maintenance or security audits beyond initial delivery. ## Prize Structure -- **Total Prize:** $1,200 +- **Total Prize:** $1200 - **Effort:** Large ## Eligibility @@ -122,11 +122,11 @@ The following policies apply to all prizes (see [evaluation policies](../README. ## Resources - [Logos Execution Zone repo](https://github.com/logos-blockchain/logos-execution-zone/) -- [LEZ token program](https://github.com/logos-blockchain/logos-execution-zone/) — reference for the private account commitment format and `get_proof_for_commitment` API -- Logos Messaging — P2P messaging layer for off-chain proof transmission +- [LEZ token program](https://github.com/logos-blockchain/logos-execution-zone/) - reference for the private account commitment format and `get_proof_for_commitment` API +- Logos Messaging - P2P messaging layer for off-chain proof transmission - [Risc0 proving system](https://dev.risczero.com/) -- [Range proofs in ZK circuits](https://docs.circom.io/more-circuits/more-basic-circuits/#range-proof) — background on proving `balance >= N` -- [zk-kit — Merkle tree primitives](https://github.com/privacy-scaling-explorations/zk-kit) +- [Range proofs in ZK circuits](https://docs.circom.io/more-circuits/more-basic-circuits/#range-proof) - background on proving `balance >= N` +- [zk-kit - Merkle tree primitives](https://github.com/privacy-scaling-explorations/zk-kit) ## Potential for Subsequent λ Prizes @@ -153,4 +153,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). diff --git a/prizes/LP-0008.md b/prizes/LP-0008.md index f8d35466..464f85f0 100644 --- a/prizes/LP-0008.md +++ b/prizes/LP-0008.md @@ -13,23 +13,23 @@ This prize closed on **11 September 2026 at 23:59 CEST**. New submissions are no ## Overview -This prize is for a Logos Core module that runs an autonomous AI agent with native access to the full Logos stack: a LEZ wallet, Logos Storage, and Logos Messaging. The agent has its own identity and funds, can communicate with its owner via chat, and can communicate with other agents. The owner deploys the agent on a remote node with a single CLI command and interacts with it from any Logos app instance on their laptop — no server configuration, no exposed APIs, no custodian. +This prize is for a Logos Core module that runs an autonomous AI agent with native access to the full Logos stack: a LEZ wallet, Logos Storage, and Logos Messaging. The agent has its own identity and funds, can communicate with its owner via chat, and can communicate with other agents. The owner deploys the agent on a remote node with a single CLI command and interacts with it from any Logos app instance on their laptop - no server configuration, no exposed APIs, no custodian. -The agent is not a chatbot wrapper. It is a first-class participant in the Logos ecosystem: it can hold and spend tokens, store and retrieve files, sign into token-gated groups, delegate tasks to peer agents, and take autonomous on-chain actions — all within limits set by its owner. +The agent is not a chatbot wrapper. It is a first-class participant in the Logos ecosystem: it can hold and spend tokens, store and retrieve files, sign into token-gated groups, delegate tasks to peer agents, and take autonomous on-chain actions - all within limits set by its owner. ## Motivation -AI agents need infrastructure: compute, storage, wallets, and communication channels. Today those are supplied by centralised cloud providers who control data, charge rent, and impose identity requirements. Logos provides all four natively in a privacy-preserving, censorship-resistant way — but no module yet exists to wire them together for autonomous agents. +AI agents need infrastructure: compute, storage, wallets, and communication channels. Today those are supplied by centralised cloud providers who control data, charge rent, and impose identity requirements. Logos provides all four natively in a privacy-preserving, censorship-resistant way - but no module yet exists to wire them together for autonomous agents. -A Logos-native agent module changes what an agent can do: it can receive funds from any Logos user, pay for storage privately, join token-gated communities on its owner's behalf, coordinate with other agents over encrypted messaging, and take on-chain actions without a custodian. The result is an agent that is genuinely sovereign — it owns its resources, controls its keys, and communicates over infrastructure no single party controls. +A Logos-native agent module changes what an agent can do: it can receive funds from any Logos user, pay for storage privately, join token-gated communities on its owner's behalf, coordinate with other agents over encrypted messaging, and take on-chain actions without a custodian. The result is an agent that is genuinely sovereign - it owns its resources, controls its keys, and communicates over infrastructure no single party controls. -A competitive prize is the right mechanism because the design space — agent runtime, skill interface, spending controls, agent-to-agent protocol, and deployment UX — admits many valid approaches, and the best design will be discovered through competition rather than top-down specification. +A competitive prize is the right mechanism because the design space - agent runtime, skill interface, spending controls, agent-to-agent protocol, and deployment UX - admits many valid approaches, and the best design will be discovered through competition rather than top-down specification. ### Relationship to the A2A Protocol -The [Agent2Agent (A2A) protocol](https://a2a-protocol.org/latest/specification/) — an open standard now governed by the Linux Foundation, originally contributed by Google — defines how agents discover each other (Agent Cards), negotiate tasks (Task lifecycle), and exchange messages (text, files, structured data). It is backed by over 150 organisations and is the emerging industry standard for agent interoperability. +The [Agent2Agent (A2A) protocol](https://a2a-protocol.org/latest/specification/) - an open standard now governed by the Linux Foundation, originally contributed by Google - defines how agents discover each other (Agent Cards), negotiate tasks (Task lifecycle), and exchange messages (text, files, structured data). It is backed by over 150 organisations and is the emerging industry standard for agent interoperability. -A2A deliberately omits two things: **payment** and **encrypted transport**. Both are open problems it leaves to the implementer. Logos solves both natively — LEZ provides per-task micropayment, and Logos Messaging provides end-to-end encrypted transport with no central server. +A2A deliberately omits two things: **payment** and **encrypted transport**. Both are open problems it leaves to the implementer. Logos solves both natively - LEZ provides per-task micropayment, and Logos Messaging provides end-to-end encrypted transport with no central server. This prize requires the agent-to-agent coordination layer to be **A2A-compatible**: Agent Cards must follow the A2A schema, and task interactions must follow the A2A task lifecycle. Logos Messaging replaces A2A's HTTP transport, and LEZ token transfers fill the payment gap. The result is an A2A-compatible agent network that any A2A client can discover and interact with, extended with payment and privacy primitives no other A2A implementation provides. @@ -48,38 +48,38 @@ A conforming agent must implement the following architecture: The following skills must be included in the submission: ### Storage -- `storage.upload(path, label)` — encrypts and uploads a local file to Logos Storage; returns a content address. -- `storage.download(address, path)` — retrieves and decrypts a file from Logos Storage to a local path. -- `storage.list()` — lists files the agent has stored, with labels and content addresses. -- `storage.share(address, recipient)` — shares access to a stored file with another Logos identity. +- `storage.upload(path, label)` - encrypts and uploads a local file to Logos Storage; returns a content address. +- `storage.download(address, path)` - retrieves and decrypts a file from Logos Storage to a local path. +- `storage.list()` - lists files the agent has stored, with labels and content addresses. +- `storage.share(address, recipient)` - shares access to a stored file with another Logos identity. ### Messaging -- `messaging.send(recipient, message)` — sends a message to a Logos Messaging address (user or agent). -- `messaging.join(group_id)` — joins a Logos Messaging group topic. -- `messaging.create_group(members)` — creates a new group topic and invites members. +- `messaging.send(recipient, message)` - sends a message to a Logos Messaging address (user or agent). +- `messaging.join(group_id)` - joins a Logos Messaging group topic. +- `messaging.create_group(members)` - creates a new group topic and invites members. ### Blockchain -- `wallet.balance()` — returns the agent's current shielded token balance. -- `wallet.send(recipient, amount)` — sends tokens to a Logos address; enforces the spending threshold (requests owner approval if exceeded). -- `wallet.history()` — returns a summary of recent transactions. -- `program.query(program_id, params)` — reads state from a LEZ program. -- `program.call(program_id, instruction, params)` — submits a transaction to a LEZ program; subject to spending threshold. -- `program.deploy(binary_path)` — deploys a compiled LEZ program binary to the network and returns the program ID. +- `wallet.balance()` - returns the agent's current shielded token balance. +- `wallet.send(recipient, amount)` - sends tokens to a Logos address; enforces the spending threshold (requests owner approval if exceeded). +- `wallet.history()` - returns a summary of recent transactions. +- `program.query(program_id, params)` - reads state from a LEZ program. +- `program.call(program_id, instruction, params)` - submits a transaction to a LEZ program; subject to spending threshold. +- `program.deploy(binary_path)` - deploys a compiled LEZ program binary to the network and returns the program ID. ### Agent coordination (A2A-compatible) Agent-to-agent communication follows the A2A protocol, with Logos Messaging as the transport and LEZ as the payment layer. -- `agent.card()` — returns this agent's A2A-compatible Agent Card: a signed JSON document declaring identity, skills, input/output schemas, and the LEZ price (if any) per task. Published to a Logos Messaging discovery topic. -- `agent.discover(topic)` — fetches Agent Cards published by other agents on a named Logos Messaging topic; returns a list of agents and their declared skills. -- `agent.task(agent_address, skill, params)` — sends a task request to another agent following the A2A task lifecycle (working → input-required → completed/failed); pays the declared LEZ price on task acceptance. -- `agent.subscribe(agent_address, task_id)` — subscribes to streaming status updates for a running task, delivered over Logos Messaging. -- `agent.cancel(agent_address, task_id)` — cancels an in-progress task and triggers any applicable refund. +- `agent.card()` - returns this agent's A2A-compatible Agent Card: a signed JSON document declaring identity, skills, input/output schemas, and the LEZ price (if any) per task. Published to a Logos Messaging discovery topic. +- `agent.discover(topic)` - fetches Agent Cards published by other agents on a named Logos Messaging topic; returns a list of agents and their declared skills. +- `agent.task(agent_address, skill, params)` - sends a task request to another agent following the A2A task lifecycle (working → input-required → completed/failed); pays the declared LEZ price on task acceptance. +- `agent.subscribe(agent_address, task_id)` - subscribes to streaming status updates for a running task, delivered over Logos Messaging. +- `agent.cancel(agent_address, task_id)` - cancels an in-progress task and triggers any applicable refund. ### Meta -- `meta.skills()` — lists all available skills and their parameters. -- `meta.status()` — reports the agent's current state: balance, storage usage, active tasks. -- `meta.configure(key, value)` — updates runtime configuration (e.g., spending threshold, owner address). +- `meta.skills()` - lists all available skills and their parameters. +- `meta.status()` - reports the agent's current state: balance, storage usage, active tasks. +- `meta.configure(key, value)` - updates runtime configuration (e.g., spending threshold, owner address). ## Illustrative Use Cases @@ -90,10 +90,10 @@ Submissions are not required to implement all of these, but the default skills a - **Agent services marketplace**: agents advertise skills on a shared discovery topic with a LEZ price; other agents discover, request, and pay for services autonomously. - **On-chain event alerter**: agent monitors a LEZ program or account for state changes and notifies the owner via Logos Messaging. - **Multi-agent workflow**: an orchestrator agent decomposes a task and delegates sub-tasks to specialist agents (e.g., a storage agent, a translation agent, a signing agent); results are aggregated and returned to the owner. -- **Privacy-preserving notary**: agent timestamps a document, uploads it to Logos Storage, and records the content address on LEZ — providing a verifiable, private proof of existence. -- **Paid skill marketplace**: agents publish Agent Cards with a LEZ price per task on a shared discovery topic. A client agent discovers a specialist (e.g., a translation agent, an OCR agent, a code-review agent), pays the declared price in LEZ, and receives the result — fully autonomous, no human in the loop, no payment processor. +- **Privacy-preserving notary**: agent timestamps a document, uploads it to Logos Storage, and records the content address on LEZ - providing a verifiable, private proof of existence. +- **Paid skill marketplace**: agents publish Agent Cards with a LEZ price per task on a shared discovery topic. A client agent discovers a specialist (e.g., a translation agent, an OCR agent, a code-review agent), pays the declared price in LEZ, and receives the result - fully autonomous, no human in the loop, no payment processor. - **Cross-framework agent interoperability**: because the coordination layer is A2A-compatible, agents built with other A2A-supporting frameworks (LangChain, Vertex AI, etc.) can discover and call Logos agents. Logos agents bring payment and privacy to those interactions that vanilla A2A cannot offer. -- **Privacy-preserving agent pipeline**: an orchestrator agent decomposes a sensitive task (e.g., document analysis) and routes sub-tasks to specialist agents over encrypted Logos Messaging channels — intermediate results are never exposed to a third-party server or observable on-chain. +- **Privacy-preserving agent pipeline**: an orchestrator agent decomposes a sensitive task (e.g., document analysis) and routes sub-tasks to specialist agents over encrypted Logos Messaging channels - intermediate results are never exposed to a third-party server or observable on-chain. ## Success Criteria @@ -108,18 +108,18 @@ Submissions are not required to implement all of these, but the default skills a - [ ] Agent-to-agent coordination is A2A-compatible: Agent Cards follow the A2A schema, task interactions follow the A2A task lifecycle, and the implementation is documented as an A2A transport binding over Logos Messaging. - [ ] Two or more agents can discover each other via Agent Cards, execute a task following the A2A lifecycle, and transfer LEZ payment autonomously, without owner intervention. - [ ] At least 3 of the illustrative use cases above are demonstrated end-to-end on LEZ testnet. -- [ ] Three separate agents are deployed on LEZ testnet — one per default skill category (Storage, Messaging, and Blockchain) — each with a demonstrated, reproducible deployment and evidence provided. -- [ ] Full documentation — including the skill interface spec, deployment guide, and owner interaction guide — and a clean public repository are delivered. +- [ ] Three separate agents are deployed on LEZ testnet - one per default skill category (Storage, Messaging, and Blockchain) - each with a demonstrated, reproducible deployment and evidence provided. +- [ ] Full documentation - including the skill interface spec, deployment guide, and owner interaction guide - and a clean public repository are delivered. ### Usability - [ ] Provide a documented skill interface (module/SDK) that can be used to add new skills without modifying the core agent module. -- [ ] The owner-facing interface is accessible from the Logos app (Basecamp) via the owner channel — local build instructions and loadable assets are provided. +- [ ] The owner-facing interface is accessible from the Logos app (Basecamp) via the owner channel - local build instructions and loadable assets are provided. ### Reliability - [ ] The agent module recovers from transient failures (network interruptions, node restarts) without losing pending task state. -- [ ] Above-threshold transactions that fail to reach the owner for approval are not executed — the agent retries notification before timing out and reports the failure. +- [ ] Above-threshold transactions that fail to reach the owner for approval are not executed - the agent retries notification before timing out and reports the failure. - [ ] Skill failures are isolated: a failing skill does not crash the module or affect other concurrently running skills. ### Performance @@ -148,13 +148,13 @@ Submissions are not required to implement all of these, but the default skills a ### Out of Scope -- A specific AI model or inference backend — the module must support pluggable inference (local or API-based), but the choice of model is left to the deployer. +- A specific AI model or inference backend - the module must support pluggable inference (local or API-based), but the choice of model is left to the deployer. - A consumer-facing graphical UI beyond what the existing Logos app provides. - Ongoing maintenance or security audits beyond initial delivery. ## Prize Structure -- **Total Prize:** $1,200 +- **Total Prize:** $1200 - **Effort:** Large ## Eligibility @@ -166,7 +166,7 @@ Open to any individual or team. Submissions must be original work. Teams must ho - Public repository with the Logos Core module, CLI, and all default skill implementations under MIT and Apache-2.0. - Module loadable on LEZ testnet with a documented deployment procedure. - End-to-end demo video(s) for at least 3 of the illustrative use cases, in which the builder narrates what they built and why, walks through the architecture and key implementation decisions, and demonstrates the full flow. A silent screencast is not sufficient (see [demo requirements](../README.md#evaluation-policies)). -- Reproducible deployment steps and evidence for three separate agent deployments on LEZ testnet — one agent per default skill category (Storage, Messaging, and Blockchain). +- Reproducible deployment steps and evidence for three separate agent deployments on LEZ testnet - one agent per default skill category (Storage, Messaging, and Blockchain). - Write-up covering: module architecture, skill interface design, spending threshold mechanism, agent-to-agent coordination protocol, security model (what the agent can and cannot do without owner approval), known limitations, and integration instructions. ## Evaluation Process @@ -186,8 +186,8 @@ The following policies apply to all prizes (see [evaluation policies](../README. - [Risc0 proving system](https://dev.risczero.com/) - [Agent2Agent (A2A) Protocol Specification](https://a2a-protocol.org/latest/specification/) - [A2A GitHub repository](https://github.com/a2aproject/A2A) -- [LP-0002](LP-0002.md) — Private M-of-N Multisig (relevant for above-threshold approval flows) -- [LP-0005](LP-0005.md) — Private Token Balance Attestation (relevant for token-gated group access by agents) +- [LP-0002](LP-0002.md) - Private M-of-N Multisig (relevant for above-threshold approval flows) +- [LP-0005](LP-0005.md) - Private Token Balance Attestation (relevant for token-gated group access by agents) ## Potential for Subsequent λ Prizes @@ -214,4 +214,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). diff --git a/prizes/LP-0009.md b/prizes/LP-0009.md index 5383f101..7fd9729c 100644 --- a/prizes/LP-0009.md +++ b/prizes/LP-0009.md @@ -61,11 +61,11 @@ Submissions are evaluated first-come-first-served against the success criteria. - [NIP-46: Nostr Connect](https://github.com/nostr-protocol/nips/blob/master/46.md) - [NIP-01: Basic protocol flow](https://github.com/nostr-protocol/nips/blob/master/01.md) - [Keycard open-source applet](https://github.com/status-im/status-keycard) -- [Keycard ecosystem projects](https://github.com/keycard-tech/keycard-ecosystem-projects) — curated list of SDKs and tools -- [keycard-go](https://github.com/status-im/keycard-go) — Go SDK -- [keycard-sdk](https://github.com/nicedoc/keycard-sdk) — TypeScript SDK -- [nexum-keycard](https://github.com/aspect-build/nexum-keycard) — Rust SDK and CLI -- [keycard-cli](https://github.com/status-im/keycard-cli) — Go CLI (useful as implementation reference) +- [Keycard ecosystem projects](https://github.com/keycard-tech/keycard-ecosystem-projects) - curated list of SDKs and tools +- [keycard-go](https://github.com/status-im/keycard-go) - Go SDK +- [keycard-sdk](https://github.com/nicedoc/keycard-sdk) - TypeScript SDK +- [nexum-keycard](https://github.com/aspect-build/nexum-keycard) - Rust SDK and CLI +- [keycard-cli](https://github.com/status-im/keycard-cli) - Go CLI (useful as implementation reference) ## Potential for Subsequent λ Prizes @@ -92,4 +92,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). diff --git a/prizes/LP-0010.md b/prizes/LP-0010.md index 19594bed..1441c221 100644 --- a/prizes/LP-0010.md +++ b/prizes/LP-0010.md @@ -23,7 +23,7 @@ This dApp will serve as a reference implementation showing how any dApp can inte - [ ] The dApp connects to Shell by scanning a QR code, with no browser extension or native app required. - [ ] After connection, the dApp displays the user's public keys and addresses for BIP-44 (EVM and Bitcoin legacy), BIP-84 (native SegWit), and BIP-49 (nested SegWit) derivation paths. - [ ] The dApp asks the user for a message to sign and to choose one of the above keys. The dApp then provides a QR code for Shell to sign this message. personal_sign (EIP-191) is used for EVM, and BIP-322 for Bitcoin. Shell scans the QR and returns the signature to the dApp, completing the full QR-based signing round-trip. -- [ ] The entire interaction is airgapped — no data leaves or enters Shell except via QR codes. +- [ ] The entire interaction is airgapped - no data leaves or enters Shell except via QR codes. - [ ] Documentation written as a developer integration guide, and a clean public repository under MIT and Apache-2.0. ### Reliability @@ -76,12 +76,12 @@ Evaluators will independently clone the repository and run the application from ## Resources -- [ERC-4527: QR Code Based Air-Gapped Signer Interface](https://eips.ethereum.org/EIPS/eip-4527) — the standard for QR-based communication between airgapped signers and watch-only wallets, built on UR (Uniform Resources). Keystone pioneered this standard and provides mature SDKs implementing it. -- [Keystone Developer Portal](https://dev.keyst.one/) — integration guides and documentation -- [keystone-sdk-web](https://github.com/KeystoneHQ/keystone-sdk-web) — TypeScript SDK implementing ERC-4527; handles UR encoding/decoding, animated QR codes, and supports both EVM and Bitcoin (including PSBTs and multi-account derivation paths) -- [@keystonehq/animated-qr](https://www.npmjs.com/package/@keystonehq/animated-qr) — animated QR code presenting and scanning -- [keystone-sdk-android-demo](https://github.com/KeystoneHQ/keystone-sdk-android-demo/) — Android demo app -- [keystone-sdk-ios-demo](https://github.com/KeystoneHQ/keystone-sdk-ios-demo/) — iOS demo app +- [ERC-4527: QR Code Based Air-Gapped Signer Interface](https://eips.ethereum.org/EIPS/eip-4527) - the standard for QR-based communication between airgapped signers and watch-only wallets, built on UR (Uniform Resources). Keystone pioneered this standard and provides mature SDKs implementing it. +- [Keystone Developer Portal](https://dev.keyst.one/) - integration guides and documentation +- [keystone-sdk-web](https://github.com/KeystoneHQ/keystone-sdk-web) - TypeScript SDK implementing ERC-4527; handles UR encoding/decoding, animated QR codes, and supports both EVM and Bitcoin (including PSBTs and multi-account derivation paths) +- [@keystonehq/animated-qr](https://www.npmjs.com/package/@keystonehq/animated-qr) - animated QR code presenting and scanning +- [keystone-sdk-android-demo](https://github.com/KeystoneHQ/keystone-sdk-android-demo/) - Android demo app +- [keystone-sdk-ios-demo](https://github.com/KeystoneHQ/keystone-sdk-ios-demo/) - iOS demo app - [Shell by Keystone](https://keyst.one/) - [BIP-44: Multi-Account Hierarchy for Deterministic Wallets](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) - [BIP-49: Derivation scheme for P2WPKH-nested-in-P2SH](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki) @@ -112,4 +112,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). \ No newline at end of file +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). \ No newline at end of file diff --git a/prizes/LP-0011.md b/prizes/LP-0011.md index 8ecbcc5f..25419061 100644 --- a/prizes/LP-0011.md +++ b/prizes/LP-0011.md @@ -163,4 +163,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). diff --git a/prizes/LP-0012.md b/prizes/LP-0012.md index 8fe89eae..83b65fa6 100644 --- a/prizes/LP-0012.md +++ b/prizes/LP-0012.md @@ -73,7 +73,7 @@ fn main() { ### Reliability -- [ ] Events emitted prior to a program abort are preserved and retrievable even when the transaction fails — they are never silently discarded. +- [ ] Events emitted prior to a program abort are preserved and retrievable even when the transaction fails - they are never silently discarded. - [ ] Exceeding the per-transaction event size limit produces a documented, deterministic error rather than silent truncation or a panic. ### Performance @@ -106,7 +106,7 @@ fn main() { ## Prize Structure -- **Total Prize:** $1,200 +- **Total Prize:** $1200 - **Effort:** Large @@ -165,4 +165,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). diff --git a/prizes/LP-0013.md b/prizes/LP-0013.md index ce3b1130..2cff375d 100644 --- a/prizes/LP-0013.md +++ b/prizes/LP-0013.md @@ -43,7 +43,7 @@ Adding a clean authority model enables the ecosystem to support real economic us ### Reliability -- [ ] Authority rotation and revocation are atomic — a partial failure leaves the authority in its prior state, not an undefined one. +- [ ] Authority rotation and revocation are atomic - a partial failure leaves the authority in its prior state, not an undefined one. - [ ] Minting with a revoked authority is rejected deterministically with a documented error code. ### Performance @@ -128,4 +128,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). diff --git a/prizes/LP-0014.md b/prizes/LP-0014.md index 44294898..3fd9eab0 100644 --- a/prizes/LP-0014.md +++ b/prizes/LP-0014.md @@ -105,4 +105,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). diff --git a/prizes/LP-0015.md b/prizes/LP-0015.md index 84e1252a..5034654f 100644 --- a/prizes/LP-0015.md +++ b/prizes/LP-0015.md @@ -59,7 +59,7 @@ We want a principled mechanism to distinguish *public entrypoints* from *interna ### Reliability -- [ ] An invalid or forged capability token is rejected deterministically — it does not cause undefined behaviour or a silent no-op. +- [ ] An invalid or forged capability token is rejected deterministically - it does not cause undefined behaviour or a silent no-op. - [ ] A multi-step call chain that aborts mid-execution rolls back all state changes consistently. ### Performance @@ -90,7 +90,7 @@ We want a principled mechanism to distinguish *public entrypoints* from *interna ## Prize Structure -- **Total Prize:** $1,200 +- **Total Prize:** $1200 - **Effort:** Large @@ -146,4 +146,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). diff --git a/prizes/LP-0016.md b/prizes/LP-0016.md index e26f6747..ebec5f7c 100644 --- a/prizes/LP-0016.md +++ b/prizes/LP-0016.md @@ -11,9 +11,9 @@ dependencies: [] ## Overview -This prize is for a protocol for anonymous, moderated forums. Members post without revealing their identity and their posts are unlinkable to one another — yet a coordinated group of moderators can act on individual pieces of content, and a member who accumulates too many moderation strikes loses their membership. +This prize is for a protocol for anonymous, moderated forums. Members post without revealing their identity and their posts are unlinkable to one another - yet a coordinated group of moderators can act on individual pieces of content, and a member who accumulates too many moderation strikes loses their membership. -All forum activity and moderation happens off-chain using the Logos stack — nothing goes on-chain until a member reaches the revocation threshold and a slash is submitted. This keeps the common path free of transaction costs while preserving trustless enforcement at the point of revocation. +All forum activity and moderation happens off-chain using the Logos stack - nothing goes on-chain until a member reaches the revocation threshold and a slash is submitted. This keeps the common path free of transaction costs while preserving trustless enforcement at the point of revocation. The deliverable has two required parts: a **forum-agnostic moderation library** (a standalone SDK for threshold moderation and cryptographic membership revocation, making no assumptions about forum content or structure) and an **end application** (a working Logos Basecamp app of any forum shape built on top of the library). @@ -21,27 +21,27 @@ The deliverable has two required parts: a **forum-agnostic moderation library** ### The Pseudonymity Problem -Most forums that present themselves as "anonymous" are in practice pseudonymous: users pick a persistent handle, and that handle accumulates a social history. Over time, a pseudonym becomes an identity in its own right. Other participants form impressions of the author before reading the content — they up-vote familiar handles, dismiss posts from accounts they distrust, and calibrate their interpretation of every new message through the lens of prior interactions. The same argument lands differently depending on whether it comes from a long-standing respected member or a newcomer. Bias and reputation are inseparable from the username. +Most forums that present themselves as "anonymous" are in practice pseudonymous: users pick a persistent handle, and that handle accumulates a social history. Over time, a pseudonym becomes an identity in its own right. Other participants form impressions of the author before reading the content - they up-vote familiar handles, dismiss posts from accounts they distrust, and calibrate their interpretation of every new message through the lens of prior interactions. The same argument lands differently depending on whether it comes from a long-standing respected member or a newcomer. Bias and reputation are inseparable from the username. -This social accumulation is not a bug in pseudonymous systems — it is a direct consequence of linking posts together under a persistent identifier. Participants who want to be judged purely on the content of their ideas, without carrying the weight of prior interactions, have no recourse. Minority viewpoints expressed early may suppress further participation from that account. And for anyone operating in a context where prior association is a liability — whistleblowers, dissidents, participants in contested debates — pseudonymity offers far weaker protection than it appears. +This social accumulation is not a bug in pseudonymous systems - it is a direct consequence of linking posts together under a persistent identifier. Participants who want to be judged purely on the content of their ideas, without carrying the weight of prior interactions, have no recourse. Minority viewpoints expressed early may suppress further participation from that account. And for anyone operating in a context where prior association is a liability - whistleblowers, dissidents, participants in contested debates - pseudonymity offers far weaker protection than it appears. True anonymity means each post is evaluated entirely on its own merits. Enabling a [marketplace of ideas](https://en.wikipedia.org/wiki/Marketplace_of_ideas). No post is linkable to any other post from the same person. There is no username to pre-judge, no history to hold against an author, no accumulated reputation to exploit or to be penalised for. Every contribution stands alone. This prize targets the cryptographic building blocks that make true anonymity compatible with a moderated forum. ### The Case for Moderation -A persistent pseudonym is one way to implement reputation — but not the only one. Forums that rely on reputation, by whatever mechanism, to surface good content and suppress bad behaviour form a distinct design domain. This prize does not address that domain. +A persistent pseudonym is one way to implement reputation - but not the only one. Forums that rely on reputation, by whatever mechanism, to surface good content and suppress bad behaviour form a distinct design domain. This prize does not address that domain. -This prize targets forums where content quality is maintained by a designated moderation team. Moderation is a first-class primitive. Every forum instance defines its own rules and its own moderator set. The cryptographic protocol enforces those rules consistently: a member who accumulates enough violations is revoked, regardless of who argues for leniency. Moderators cannot selectively enforce rules against members they dislike without leaving a public audit trail. No single moderator can act alone. The cryptographic machinery is not a substitute for human judgement about acceptable content — it is a substrate for enforcing that judgement fairly and without unilateral power. +This prize targets forums where content quality is maintained by a designated moderation team. Moderation is a first-class primitive. Every forum instance defines its own rules and its own moderator set. The cryptographic protocol enforces those rules consistently: a member who accumulates enough violations is revoked, regardless of who argues for leniency. Moderators cannot selectively enforce rules against members they dislike without leaving a public audit trail. No single moderator can act alone. The cryptographic machinery is not a substitute for human judgement about acceptable content - it is a substrate for enforcing that judgement fairly and without unilateral power. ### Forum Competition and Moderation Quality -Each forum instance is independently parameterised and governed. Different instances will develop different characters — shaped by their topic, community, rules, and moderation team. Users are not locked in. They can observe the moderation record of a forum — all certificates are publicly auditable off-chain — and choose instances whose moderation philosophy matches their needs. +Each forum instance is independently parameterised and governed. Different instances will develop different characters - shaped by their topic, community, rules, and moderation team. Users are not locked in. They can observe the moderation record of a forum - all certificates are publicly auditable off-chain - and choose instances whose moderation philosophy matches their needs. -Forum success depends on many factors: topic relevance, network effects, content quality, community norms. Moderation is one of them. What this protocol adds is that moderation behaviour is falsifiable: because the audit trail is public and cryptographically verifiable, a community dissatisfied with how a forum is run has the information needed to make that case — and the ability to fork the instance and try to do better. +Forum success depends on many factors: topic relevance, network effects, content quality, community norms. Moderation is one of them. What this protocol adds is that moderation behaviour is falsifiable: because the audit trail is public and cryptographically verifiable, a community dissatisfied with how a forum is run has the information needed to make that case - and the ability to fork the instance and try to do better. ### What This Prize Delivers -The deliverable is not a forum — it is a set of building blocks. The moderation library is forum-agnostic: it handles membership, proof generation, N-of-M moderation, and revocation without making assumptions about content or social structure. Any team building a forum on these primitives can make their own choices about content types, interaction models, and governance — while inheriting strong anonymity and fair moderation guarantees from the underlying protocol. +The deliverable is not a forum - it is a set of building blocks. The moderation library is forum-agnostic: it handles membership, proof generation, N-of-M moderation, and revocation without making assumptions about content or social structure. Any team building a forum on these primitives can make their own choices about content types, interaction models, and governance - while inheriting strong anonymity and fair moderation guarantees from the underlying protocol. ## Core Mechanism @@ -49,9 +49,9 @@ The deliverable is not a forum — it is a set of building blocks. The moderatio Each forum is an independent instance with its own membership registry, moderator set, and parameters: how many moderation strikes revoke membership (K) and how many moderators must agree to issue one strike (N-of-M). -**Anonymous posting**: Members register with a private identity. Each post carries a proof that the author is a registered, non-revoked member — without revealing which member. Posts from the same author are unlinkable to any observer — including moderators — until the slash threshold is reached. The anonymity set is the full set of non-revoked registered members. +**Anonymous posting**: Members register with a private identity. Each post carries a proof that the author is a registered, non-revoked member - without revealing which member. Posts from the same author are unlinkable to any observer - including moderators - until the slash threshold is reached. The anonymity set is the full set of non-revoked registered members. -**N-of-M moderation**: When N out of M designated moderators agree that a piece of content violates forum rules, they jointly issue a moderation certificate against the author. Fewer than N moderators cannot act — no single moderator has unilateral power. Certificates are recorded off-chain using the Logos stack, publicly auditable without any on-chain transaction. +**N-of-M moderation**: When N out of M designated moderators agree that a piece of content violates forum rules, they jointly issue a moderation certificate against the author. Fewer than N moderators cannot act - no single moderator has unilateral power. Certificates are recorded off-chain using the Logos stack, publicly auditable without any on-chain transaction. **Slashing**: Once a member has accumulated K moderation certificates, any moderator, or even party, can submit a single on-chain slash transaction. The membership registry verifies the accumulated evidence, revokes the membership, and claims the stake. Future posts from that identity are rejected. No gas is spent until this final step. @@ -59,7 +59,7 @@ Each forum is an independent instance with its own membership registry, moderato ### Functionality -- [ ] A member can register in a forum instance with a stake and subsequently publish posts with valid anonymous proofs of membership. Posts from the same member are unlinkable to any observer — including moderators — for as long as the member remains below the slash threshold. +- [ ] A member can register in a forum instance with a stake and subsequently publish posts with valid anonymous proofs of membership. Posts from the same member are unlinkable to any observer - including moderators - for as long as the member remains below the slash threshold. - [ ] Upon slash, the reconstructed secret enables retroactive linkability of the slashed member's prior posts. No other member's anonymity is affected. This property is explicitly documented in `docs/protocol.md`. - [ ] N-of-M moderators can jointly produce a valid moderation certificate off-chain using the Logos stack. Fewer than N moderation cannot produce a certificate. - [ ] When K moderation certificates are accumulated for the same member, any moderator, or potentially members, can submit a single slash transaction to the membership registry. The registry verifies the off-chain evidence and revokes the membership. @@ -77,7 +77,7 @@ Each forum is an independent instance with its own membership registry, moderato ### Reliability - [ ] Proof generation failures surface a clear error to the member and allow a retry without consuming the member's nullifier. -- [ ] A partial moderation certificate (fewer than N moderators) cannot be submitted on-chain — the library enforces the threshold client-side before any on-chain interaction. +- [ ] A partial moderation certificate (fewer than N moderators) cannot be submitted on-chain - the library enforces the threshold client-side before any on-chain interaction. - [ ] The application handles transient Logos stack failures (storage or messaging unavailability) gracefully: pending posts and moderation actions are queued and retried rather than silently dropped. ### Performance @@ -92,7 +92,7 @@ Each forum is an independent instance with its own membership registry, moderato - [ ] CI must be green on the default branch. - [ ] A README documents end-to-end usage: deployment steps, program addresses, and step-by-step instructions for creating a forum instance, registering, posting, moderating, and triggering a slash via the Basecamp app. - [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0`. -- [ ] A recorded video demo is included in the submission. The builder must narrate and walk through the architecture, key implementation decisions, and the full end-to-end flow — not merely screen-record a silent run. The recording must show terminal output (including proof generation) to confirm `RISC0_DEV_MODE=0` was active. +- [ ] A recorded video demo is included in the submission. The builder must narrate and walk through the architecture, key implementation decisions, and the full end-to-end flow - not merely screen-record a silent run. The recording must show terminal output (including proof generation) to confirm `RISC0_DEV_MODE=0` was active. ## Scope @@ -102,7 +102,7 @@ Each forum is an independent instance with its own membership registry, moderato - **ZK membership proof circuit**: proves commitment is in the registry and not revoked, without revealing which commitment. It takes less than 10 seconds to generate a message proof. - **Moderation library**: a standalone, forum-agnostic SDK for threshold moderation and cryptographic membership revocation. It operates on abstract content identifiers, makes no assumptions about the shape of forum content, and uses the Logos stack for all off-chain activity. It handles threshold decryption coordination, certificate construction, share aggregation, and slash transaction submission. Must be importable by any application regardless of forum type. - **Slash verifier**: verifies accumulated off-chain certificates and submits a valid on-chain slash transaction. -- **End application**: a Logos Basecamp app built using the moderation library. The app must allow users to create new forum instances. Forum content and moderation are handled off-chain via the Logos stack. The specific forum functionality — content types, interaction model, layout — is left entirely to the applicant. The application must not require changes to the library to function. +- **End application**: a Logos Basecamp app built using the moderation library. The app must allow users to create new forum instances. Forum content and moderation are handled off-chain via the Logos stack. The specific forum functionality - content types, interaction model, layout - is left entirely to the applicant. The application must not require changes to the library to function. - Documentation covering: library API reference, integration guide, unlinkability analysis (including anonymity set size and the retroactive deanonymization property upon slash), moderator trust model, and threat model. ### Out of Scope @@ -110,12 +110,12 @@ Each forum is an independent instance with its own membership registry, moderato - Discovery, search, feeds, or social graph features. - Reputation tiers or rate limits on posting frequency. - Multi-forum identity linking or cross-forum revocation. -- End-to-end encryption of forum content — applicants may implement it but it is not required. +- End-to-end encryption of forum content - applicants may implement it but it is not required. - Hosted infrastructure beyond what is required to run the Logos Basecamp app. ## Prize Structure -- **Total Prize:** $1,200 +- **Total Prize:** $1200 - **Effort:** Large ## Eligibility @@ -129,7 +129,7 @@ Open to any individual or team. Submissions must be original work. Teams must ho - ZK membership proof circuit, - **moderation library** (forum-agnostic, standalone package) with public API, documentation, and usage examples, - slash verifier, - - **Logos Basecamp app** built on the library without modifying it — forum functionality at applicant's discretion, + - **Logos Basecamp app** built on the library without modifying it - forum functionality at applicant's discretion, - tests covering: valid registration, valid post proof, moderation certificate construction and verification, strike accumulation, slash submission, post rejection after revocation. - Protocol specification (`docs/protocol.md`) covering: unlinkability argument, moderator trust assumptions, revocation mechanism, and threat model. - End-to-end demo video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates the full lifecycle: registration, posting, N-of-M moderation, strike accumulation, slash, and post rejection. A screencast without narration or explanation is not sufficient. @@ -149,11 +149,11 @@ The following policies apply to all prizes (see [evaluation policies](../README. ## Resources - [Logos Execution Zone repo](https://github.com/logos-blockchain/logos-execution-zone) -- [Semaphore — group membership and ZK proofs](https://semaphore.pse.dev/) -- [Shamir's Secret Sharing](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing) — foundational scheme for threshold reconstruction of the nullifier -- [Threshold decryption overview](https://eprint.iacr.org/2022/1368.pdf) — Boneh et al. -- [LP-0001](LP-0001.md) — Private NFT Ownership Proof (ZK membership proof patterns) -- [LP-0003](LP-0003.md) — Private Allowlist (nullifier and commitment scheme reference) +- [Semaphore - group membership and ZK proofs](https://semaphore.pse.dev/) +- [Shamir's Secret Sharing](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing) - foundational scheme for threshold reconstruction of the nullifier +- [Threshold decryption overview](https://eprint.iacr.org/2022/1368.pdf) - Boneh et al. +- [LP-0001](LP-0001.md) - Private NFT Ownership Proof (ZK membership proof patterns) +- [LP-0003](LP-0003.md) - Private Allowlist (nullifier and commitment scheme reference) --- @@ -176,4 +176,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). diff --git a/prizes/LP-0017.md b/prizes/LP-0017.md index 4cd5c4d7..369f0839 100644 --- a/prizes/LP-0017.md +++ b/prizes/LP-0017.md @@ -4,16 +4,16 @@ dependencies: [] --- -# LP-0017: Whistleblower — censorship-resistant document upload and indexing Basecamp app [CLOSED] +# LP-0017: Whistleblower - censorship-resistant document upload and indexing Basecamp app [CLOSED] **`Status: Closed`** **`Logos Circle: N/A`** ## Overview -This prize funds **Whistleblower**, a Logos Basecamp app that lets anyone upload a document and make it permanently discoverable — without relying on any centralised server, without requiring the publisher to hold tokens, and without a single point of censorship. +This prize funds **Whistleblower**, a Logos Basecamp app that lets anyone upload a document and make it permanently discoverable - without relying on any centralised server, without requiring the publisher to hold tokens, and without a single point of censorship. -A user selects a file, adds optional metadata, and submits. The app uploads the file to Logos Storage, broadcasts the resulting content identifier (CID) and metadata over Logos Delivery so the document is immediately discoverable, and optionally anchors the CID on-chain for long-term indexing. Long-term anchoring can also happen independently: a permissionless batch tool lets any altruistic actor or original uploader gather broadcasted CIDs and commit them to a LEZ program or the consensus layer in a single transaction — no coordination with the original publisher required. +A user selects a file, adds optional metadata, and submits. The app uploads the file to Logos Storage, broadcasts the resulting content identifier (CID) and metadata over Logos Delivery so the document is immediately discoverable, and optionally anchors the CID on-chain for long-term indexing. Long-term anchoring can also happen independently: a permissionless batch tool lets any altruistic actor or original uploader gather broadcasted CIDs and commit them to a LEZ program or the consensus layer in a single transaction - no coordination with the original publisher required. The submission must include a standalone **document-indexing module** extracted from the app logic, making the upload → broadcast → anchor pipeline reusable by other Logos applications. @@ -25,7 +25,7 @@ The Logos stack enables a cleaner model: - **Logos Storage** stores the bytes durably and without identifying the uploader. - **Logos Delivery** propagates the CID and metadata peer-to-peer in real time, so the document is immediately findable. -- **Batch anchoring** decouples publication from on-chain registration: the publisher may anchor their own documents at any time, or simply upload and broadcast — leaving any concerned third party (an NGO, a journalist collective, an automated guardian) to later gather accumulated CIDs and commit them in a single batch transaction, with no coordination required. +- **Batch anchoring** decouples publication from on-chain registration: the publisher may anchor their own documents at any time, or simply upload and broadcast - leaving any concerned third party (an NGO, a journalist collective, an automated guardian) to later gather accumulated CIDs and commit them in a single batch transaction, with no coordination required. No sample app in the Logos ecosystem yet demonstrates this full pipeline end-to-end. Whistleblower fills that gap and, as a side-effect, produces a reusable module for any app that needs censorship-resistant content publication. @@ -36,12 +36,12 @@ No sample app in the Logos ecosystem yet demonstrates this full pipeline end-to- - [ ] **Upload**: the app uploads a user-selected file to Logos Storage and obtains a CID. - [ ] **Broadcast**: the app publishes a metadata envelope to a well-defined Logos Delivery topic immediately after upload. The envelope must include at minimum: `cid`, `title`, `description`, `content_type`, `size_bytes`, `timestamp`, and an optional `tags` list. - [ ] **On-chain anchoring**: the app offers an optional "anchor on-chain" action (distinct from the basic upload flow) that the publisher may invoke at any time after upload. -- [ ] **Batch anchor tool**: a standalone CLI tool that any party — the original uploader or an altruistic third party — can run to gather broadcasted CIDs and commit them on-chain in bulk. The tool must: +- [ ] **Batch anchor tool**: a standalone CLI tool that any party - the original uploader or an altruistic third party - can run to gather broadcasted CIDs and commit them on-chain in bulk. The tool must: - subscribe to the Logos Delivery topic and accumulate `(CID, metadata_hash)` tuples, - submit them to the on-chain registry in a single batch transaction, - - be permissionless — no coordination with the original publisher required, - - be idempotent — re-submitting an already-registered CID does not fail. -- [ ] **On-chain registry**: the submitter chooses the anchoring approach — either (a) a LEZ program or (b) a direct submission to the consensus layer via the zone SDK — and provides a brief justification for the choice. Note that decentralised sequencers for zones are not yet shipped: the zone SDK approach requires a single designated actor to perform consensus inscription, which affects the trust model. The registry must: + - be permissionless - no coordination with the original publisher required, + - be idempotent - re-submitting an already-registered CID does not fail. +- [ ] **On-chain registry**: the submitter chooses the anchoring approach - either (a) a LEZ program or (b) a direct submission to the consensus layer via the zone SDK - and provides a brief justification for the choice. Note that decentralised sequencers for zones are not yet shipped: the zone SDK approach requires a single designated actor to perform consensus inscription, which affects the trust model. The registry must: - store `(CID, metadata_hash, anchor_timestamp)` per document, - be queryable by CID, - accept batch submissions of at least 10 CIDs per transaction. @@ -84,11 +84,11 @@ No sample app in the Logos ecosystem yet demonstrates this full pipeline end-to- ### Out of Scope -- Content moderation, access control, or blocklists — the registry and delivery topic are permissionless. +- Content moderation, access control, or blocklists - the registry and delivery topic are permissionless. - Full-text search or semantic indexing of document content. - End-user authentication or identity binding. - Cross-chain anchoring. -- A hosted relay or backend service — everything runs peer-to-peer on the Logos stack. +- A hosted relay or backend service - everything runs peer-to-peer on the Logos stack. ## Prize Structure @@ -128,11 +128,11 @@ The following policies apply to all prizes (see [evaluation policies](../README. ## Resources -- [logos-co/ecosystem#88](https://github.com/logos-co/ecosystem/issues/88) — Whistleblower sample app scope issue +- [logos-co/ecosystem#88](https://github.com/logos-co/ecosystem/issues/88) - Whistleblower sample app scope issue - [LEZ GitHub repository](https://github.com/logos-blockchain/logos-execution-zone) - [SPEL framework](https://github.com/logos-co/spel) -- [LP-0008](./LP-0008.md) — Autonomous AI Module (reference for Logos Core module architecture and storage/delivery patterns) -- [LP-0012](./LP-0012.md) — Event/Log mechanism (relevant for on-chain event emission from the registry program) +- [LP-0008](./LP-0008.md) - Autonomous AI Module (reference for Logos Core module architecture and storage/delivery patterns) +- [LP-0012](./LP-0012.md) - Event/Log mechanism (relevant for on-chain event emission from the registry program) ## Potential for Subsequent λ Prizes @@ -159,4 +159,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). diff --git a/prizes/LP-0018.md b/prizes/LP-0018.md index d94897cf..b5afb255 100644 --- a/prizes/LP-0018.md +++ b/prizes/LP-0018.md @@ -4,7 +4,7 @@ dependencies: [] --- -# LP-0018: OpenStreetMap Integration — Decentralized Map Data Distribution [OPEN] +# LP-0018: OpenStreetMap Integration - Decentralized Map Data Distribution [OPEN] **`Status: Open`** **`Logos Circle: N/A`** @@ -25,7 +25,7 @@ The **Success Criteria**, **Scope**, and **Submission Requirements** below are t ## Motivation -OpenStreetMap extracts are widely used for offline navigation, GIS tooling, and privacy-preserving map apps — but distribution today depends on central hosts such as Geofabrik. A Logos-native distribution layer lets communities mirror verified map snapshots in decentralized storage and register them on-chain, so users can discover and download authentic data without trusting a single operator. +OpenStreetMap extracts are widely used for offline navigation, GIS tooling, and privacy-preserving map apps - but distribution today depends on central hosts such as Geofabrik. A Logos-native distribution layer lets communities mirror verified map snapshots in decentralized storage and register them on-chain, so users can discover and download authentic data without trusting a single operator. This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md)) by demonstrating a full **fetch → store → register → download** pipeline for large binary assets, with content-addressed integrity anchored to Geofabrik as the canonical source. It also ships a reusable Basecamp SDK/module so other Basecamp apps and modules can discover and use those files locally. @@ -45,7 +45,7 @@ This prize complements existing Logos sample apps (notably [LP-0017](LP-0017.md) - is queryable by region, by parent, and by CID, - supports registering multiple regions in a single batch transaction when bulk hosting. - [ ] **Testnet 0.3**: the OSM registry operates end-to-end against the Logos LEZ zone on Logos testnet 0.3. -- [ ] **OSM registry SDK**: a self-contained Basecamp SDK/module with a stable, documented API and a minimal embedding example in another Basecamp module. The distribution app uses the full registry API — discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates — rather than a separate registry client. The SDK is also published as a separate Basecamp module so other Basecamp apps and modules can depend on it without the distribution app. For that consumer use (discover and use map files in another module, or hosted locally), the exposed API can be a limited subset: it does not need host, register, batch-register, or retrieval. +- [ ] **OSM registry SDK**: a self-contained Basecamp SDK/module with a stable, documented API and a minimal embedding example in another Basecamp module. The distribution app uses the full registry API - discover regions, resolve a region to its CID/metadata, host (store + register), batch-register, query by region/parent/CID, and check for updates - rather than a separate registry client. The SDK is also published as a separate Basecamp module so other Basecamp apps and modules can depend on it without the distribution app. For that consumer use (discover and use map files in another module, or hosted locally), the exposed API can be a limited subset: it does not need host, register, batch-register, or retrieval. ### Usability @@ -149,17 +149,17 @@ The following policies apply to all prizes (see [evaluation policies](../README. - [Logos Storage Module](https://logos-storage-docs.netlify.app/tutorials/storage-module/) - [LEZ GitHub repository](https://github.com/logos-blockchain/logos-execution-zone) - [SPEL framework](https://github.com/logos-co/spel) -- [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) — `mkLogosModule` -- [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base) and [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action) — module catalog publishing -- [`cycle_bench`](https://github.com/logos-blockchain/logos-execution-zone/tree/dev/tools/cycle_bench) — LEZ cycle-count benchmarking -- [LP-0017](LP-0017.md) — Whistleblower (reference implementation for storage + registry patterns) -- [LP-0008](LP-0008.md) — Autonomous AI Module (reference for Logos Core module architecture and storage patterns) +- [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) - `mkLogosModule` +- [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base) and [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action) - module catalog publishing +- [`cycle_bench`](https://github.com/logos-blockchain/logos-execution-zone/tree/dev/tools/cycle_bench) - LEZ cycle-count benchmarking +- [LP-0017](LP-0017.md) - Whistleblower (reference implementation for storage + registry patterns) +- [LP-0008](LP-0008.md) - Autonomous AI Module (reference for Logos Core module architecture and storage patterns) ## Potential for Subsequent λPrizes This prize also targets Logos testnet 0.3. Should a future testnet version (e.g., V0.4) introduce breaking changes to program IDs, PDA derivation, or the SPEL IDL format, a subsequent λPrize may be opened to cover adaptation. -Viewers and other apps that actually use the map data — an offline map viewer, search/POI discovery, routing, or similar — are out of scope of this prize and are expected to be built by the community independently. +Viewers and other apps that actually use the map data - an offline map viewer, search/POI discovery, routing, or similar - are out of scope of this prize and are expected to be built by the community independently. ### Predefined Regions (closed set) @@ -209,5 +209,5 @@ 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). diff --git a/prizes/LP-0021.md b/prizes/LP-0021.md index 2b5c6344..e5740591 100644 --- a/prizes/LP-0021.md +++ b/prizes/LP-0021.md @@ -26,7 +26,7 @@ Logos Execution Zones (LEZ) are the programmable environment where Logos dApps r ### Functionality - [ ] **LEZ assets**: own, send, and receive native and token-program assets on a LEZ zone, for both private and public accounts. -- [ ] **Token program**: own and transfer fungible token-program assets on LEZ, from both public and private accounts. Non-fungible (NFT) assets are out of scope — see [Out of Scope](#out-of-scope). +- [ ] **Token program**: own and transfer fungible token-program assets on LEZ, from both public and private accounts. Non-fungible (NFT) assets are out of scope - see [Out of Scope](#out-of-scope). - [ ] **Multiple accounts (LEZ)**: create and manage multiple accounts on the zone, including both public and private accounts, and switch between them. - [ ] **Wallet Provider SDK**: a documented SDK that lets a third-party dApp request account access, read balances/state, and propose transactions against the wallet. - [ ] **Wallet selection & approval flow**: when a dApp requests a connection or a transaction, the user is shown a selection prompt (which account to use) and an approval prompt (what is being signed/sent) before anything is signed or submitted. @@ -90,8 +90,8 @@ Logos Execution Zones (LEZ) are the programmable environment where Logos dApps r ### Out of Scope -- The Logos blockchain wallet, staking, bridging, and multi-zone/sequencer configuration — covered by [LP-0022](LP-0022.md). -- Designing or implementing the token program itself — the wallet integrates with the existing/reference implementation. +- The Logos blockchain wallet, staking, bridging, and multi-zone/sequencer configuration - covered by [LP-0022](LP-0022.md). +- Designing or implementing the token program itself - the wallet integrates with the existing/reference implementation. - **Non-fungible (NFT) assets.** The token program covers both fungible and non-fungible assets, but this prize requires fungible token support only; NFT support (owning, transferring, or displaying NFTs) is optional. - Hardware wallet integration. - Portfolio analytics, price feeds, or fiat on/off-ramps. @@ -99,7 +99,7 @@ Logos Execution Zones (LEZ) are the programmable environment where Logos dApps r ## Prize Structure -- **Total Prize:** $20,000 +- **Total Prize:** $20000 - **Effort:** X-Large ## Eligibility @@ -164,4 +164,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). diff --git a/prizes/LP-0022.md b/prizes/LP-0022.md index 10dcbb4d..32e5f28c 100644 --- a/prizes/LP-0022.md +++ b/prizes/LP-0022.md @@ -108,7 +108,7 @@ Submissions to this λPrize are welcome from the LP-0021 winning team or from a ## Prize Structure -- **Total Prize:** $10,000 +- **Total Prize:** $10000 - **Effort:** Large ## Eligibility @@ -173,4 +173,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). diff --git a/prizes/LP-0023.md b/prizes/LP-0023.md index 0e3a4eb3..bf77c5c9 100644 --- a/prizes/LP-0023.md +++ b/prizes/LP-0023.md @@ -134,27 +134,27 @@ The following policies apply to all prizes (see [evaluation policies](../README. ## Resources -- [SPEL framework](https://github.com/logos-co/spel) — Anchor-inspired developer framework for LEZ programs, used for the program and its IDL +- [SPEL framework](https://github.com/logos-co/spel) - Anchor-inspired developer framework for LEZ programs, used for the program and its IDL - [Logos Execution Zone repo](https://github.com/logos-blockchain/logos-execution-zone/) - [LEZ programs repo](https://github.com/logos-blockchain/lez-programs/) -- [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base) and [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action) — module catalog publishing -- [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) — `mkLogosModule` -- [`cycle_bench`](https://github.com/logos-blockchain/logos-execution-zone/tree/dev/tools/cycle_bench) — LEZ's cycle-count benchmarking tool, the unit to use when documenting compute cost +- [`logos-modules-release-base`](https://github.com/logos-co/logos-modules-release-base) and [`logos-modules-release-action`](https://github.com/logos-co/logos-modules-release-action) - module catalog publishing +- [`logos-module-builder`](https://github.com/logos-co/logos-module-builder) - `mkLogosModule` +- [`cycle_bench`](https://github.com/logos-blockchain/logos-execution-zone/tree/dev/tools/cycle_bench) - LEZ's cycle-count benchmarking tool, the unit to use when documenting compute cost Solana prior art: - [Solana verified builds documentation](https://solana.com/docs/programs/verified-builds) and the [verification guide](https://solana.com/developers/guides/advanced/verified-builds) -- [`solana-foundation/solana-verifiable-build`](https://github.com/solana-foundation/solana-verifiable-build) — the `solana-verify` CLI -- [`otter-sec/otter-verify`](https://github.com/otter-sec/otter-verify) — on-chain verification program, and [`otter-sec/solana-verified-programs-api`](https://github.com/otter-sec/solana-verified-programs-api) — the verification service -- [`solana-program/program-metadata`](https://github.com/solana-program/program-metadata) — canonical/non-canonical metadata PDAs -- [`solana-foundation/idl-spec`](https://github.com/solana-foundation/idl-spec) — the standard IDL format -- ["How We Hacked Solana Verified Builds"](https://accretion.xyz/blog/verified-builds) — Accretion, on the `build.rs` provenance attack +- [`solana-foundation/solana-verifiable-build`](https://github.com/solana-foundation/solana-verifiable-build) - the `solana-verify` CLI +- [`otter-sec/otter-verify`](https://github.com/otter-sec/otter-verify) - on-chain verification program, and [`otter-sec/solana-verified-programs-api`](https://github.com/otter-sec/solana-verified-programs-api) - the verification service +- [`solana-program/program-metadata`](https://github.com/solana-program/program-metadata) - canonical/non-canonical metadata PDAs +- [`solana-foundation/idl-spec`](https://github.com/solana-foundation/idl-spec) - the standard IDL format +- ["How We Hacked Solana Verified Builds"](https://accretion.xyz/blog/verified-builds) - Accretion, on the `build.rs` provenance attack - [Solana Explorer verification UI](https://deepwiki.com/solana-foundation/explorer/3.3-program-verification-system) Logos: -- [LP-0011](LP-0011.md) — Program development tooling: Rust SDK -- [LP-0021](LP-0021.md) — LEZ Zone Wallet and SDK +- [LP-0011](LP-0011.md) - Program development tooling: Rust SDK +- [LP-0021](LP-0021.md) - LEZ Zone Wallet and SDK > The Resources referred to are for informational purposes only and are intended solely as guidance regarding tools or other artefacts that may be relevant to preparing a Submission for a Prize. The Resources may include, or may refer to, earlier published Prizes or Specifications, some of which may have received Submissions. Logos does not endorse or approve, and makes no representation regarding any Submission or referenced material. Ultimately, it is the Participant's responsibility to determine whether, and how, if at all, to use any Resource. @@ -185,4 +185,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). diff --git a/prizes/LP-0026.md b/prizes/LP-0026.md index cdc419ae..5804db1e 100644 --- a/prizes/LP-0026.md +++ b/prizes/LP-0026.md @@ -65,7 +65,7 @@ The developer can choose what to include or not, beyond basic forum functionalit ## Prize Structure -- **Total Prize:** $5,500 +- **Total Prize:** $5500 - **Effort:** Large ## Eligibility @@ -126,4 +126,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). diff --git a/solutions/LP-0000.md b/solutions/LP-0000.md index c9d84117..de45d802 100644 --- a/solutions/LP-0000.md +++ b/solutions/LP-0000.md @@ -1,4 +1,4 @@ -# Solution: LP-XXXX — +# Solution: LP-XXXX - **Submitted by:** From 432cd1e6bfa0d445cabb9794562a666fe35c9924 Mon Sep 17 00:00:00 2001 From: Sasha Date: Fri, 2 Oct 2026 01:23:49 +0200 Subject: [PATCH 2/2] chore: simplify Vale setup with vale-action Use errata-ai/vale-action instead of a hand-rolled install and jq annotation step. Its default reporter annotates fork PRs without write access, and filter_mode=added means only lines a PR adds are reported. Drop the push trigger, which has no diff to filter against. Collapse .vale.ini to a single section listing the linted files instead of enabling everything and switching solutions/ back off. Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/lint-docs.yml | 34 +++++++-------------------------- .vale.ini | 11 ++--------- 2 files changed, 9 insertions(+), 36 deletions(-) diff --git a/.github/workflows/lint-docs.yml b/.github/workflows/lint-docs.yml index 2f454aa8..7ebedadc 100644 --- a/.github/workflows/lint-docs.yml +++ b/.github/workflows/lint-docs.yml @@ -1,24 +1,15 @@ name: Lint Docs # House-style checks for maintainer-owned docs, run with Vale. Config is -# .vale.ini; rules live in .github/vale/Lambda/. -# Plain `pull_request` with read-only perms: nothing here needs to comment, so -# the PR tree can be checked out and linted directly (fork PRs included). +# .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: - push: - branches: [master] permissions: contents: read -concurrency: - group: lint-docs-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - VALE_VERSION: 3.24.0 - jobs: vale: runs-on: ubuntu-latest @@ -27,18 +18,7 @@ jobs: with: persist-credentials: false - - name: Install Vale - run: | - curl -fsSL "https://github.com/errata-ai/vale/releases/download/v${VALE_VERSION}/vale_${VALE_VERSION}_Linux_64-bit.tar.gz" \ - | sudo tar -xz -C /usr/local/bin vale - vale --version - - - name: Lint docs - run: | - # Human-readable report in the log, then one annotation per alert so - # problems show inline on the PR diff. Exit non-zero on any error. - status=0 - vale --no-wrap . || status=$? - vale --output=JSON . | jq -r 'to_entries[] | .key as $f | .value[] - | "::error file=\($f),line=\(.Line),col=\(.Span[0]),title=\(.Check)::\(.Message)"' - exit $status + - uses: errata-ai/vale-action@v3 + with: + version: 3.24.0 + fail_on_error: true diff --git a/.vale.ini b/.vale.ini index f132341d..a4173dda 100644 --- a/.vale.ini +++ b/.vale.ini @@ -1,16 +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 -[*.md] -BasedOnStyles = Lambda - -# Submitted solutions are the submitter's writing, not ours; only the -# template is linted. -[solutions/*.md] -BasedOnStyles = - -[solutions/LP-0000.md] +[{prizes/*.md,README.md,TERMS.md,PRIVACY_POLICY.md,solutions/LP-0000.md}] BasedOnStyles = Lambda