Pool yield is not computed anywhere
メンテナーはふだん 3 日以内に返信
@deslawson がすでに取り組んでいます。
2026年10月16日 から。
評価
この issue はまだ評価されていません。
説明
Background
An AMM pool earns its providers fees proportional to volume against reserves. Lens already stores both. Nothing multiplies them, so "what does providing liquidity on Stellar pay" has no public answer.
What to build
- Fee APR per pool from realised volume over a window and the pool's own fee rate, annualised, with the window stated.
GET /yieldlisting pools by APR, with volume, reserves and fee rate shown so the figure can be checked.- An APR from a window with gaps is marked as covering an incomplete period.
Acceptance criteria
- Fee APR per pool, with the inputs visible in the response
- Windows of 24h, 7d and 30d
- An incomplete window is marked, never silently annualised
- A test pins the annualisation arithmetic
Drips Wave · Complexity: Intermediate · 150 points
Repo: Divinity-Labs/Lens. Node + Fastify + Prisma + Postgres. Tests are vitest (npm test), not jest — jest against this repo fails every file and tells you nothing.
?network= is not optional on a new route. Every row carries a network and the indexes lead with it. Read req.network ?? activeNetwork, filter on it, echo it in the response, and declare the parameter in openapi.yaml. tests/openapi.test.ts boots the server and fails if a registered route is missing from the spec.
A number without provenance is not an answer. Every figure this batch adds must carry what it was computed from: which venues, how many samples, how fresh. The point of Lens is that its numbers can be checked.
Never elide a contract id or an issuer. Take addresses from the protocol's own documentation and write them whole. A sibling repo's issue wrote CD2W5LUR…XZ4L and five contributors invented plausible contract ids to fill the gap.
Say when you cannot answer. An asset with no liquidity, a pair with one venue, a window with a gap — each has an honest answer that is not zero and not a 500. Zero is a number people act on.
Required: Before submitting, join the contributor Telegram so your work can be tracked and counted toward the Stellar Wave: https://t.me/+fxHXq8f1SwlkZDBk
- 主要言語
- TypeScript
- スター
- 4
- フォーク
- 71
- 平均マージ
- 3日 6時間
- マージ済み PR(30日)
- 144
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Divinity-Labs/Lens のほかの issue
-
Webhook retries have no jitter, so failures synchronise対応中かも @Richard-tobi が 9 日前に担当しました。 オープンarea:reliability difficulty:easy help wanted points:100 Stellar Wave
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
Divinity-Labs/Lens#341 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 3 日以内に返信
-
upsertPricePoints can synthesize an event id from the wall clock, breaking dedupe対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
Divinity-Labs/Lens#620 ·
メンテナーはふだん 3 日以内に返信
-
GraphQL queries bypass the per-route scope their REST equivalents require対応中かも @sparkysolutions10-pixel が 1 日前に担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
Divinity-Labs/Lens#618 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
area:tests automated live-spec-report
難易度 4/5 3〜5日 初心者へのやさしさ 28/100
Divinity-Labs/Lens#606 · コメント 2 件 ·
メンテナーはふだん 3 日以内に返信
-
The key is accepted only as a bearer token, and nothing says so対応中かも @krsnak が 7 日前に担当しました。 オープンarea:docs difficulty:easy help wanted points:100 Stellar Wave
Divinity-Labs/Lens#512 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 3 日以内に返信
Divinity-Labs/Lens の issue をすべて見る
似ている issue
-
freshness freshness:observed-only
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
thoroc/context-radar#282 ·
-
bug P2 rust
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
area: web
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
gabe-santana/arkdraw#25 ·
-
bug require-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
expressjs/expressjs.com#2549 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue hacktoberfest
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
codercops/discord-bot#101 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信