functori activity https://gitlab.com/functori 2026-03-19T16:27:35Z tag:gitlab.com,2026-03-19:5223049050 Thomas Santoni approved merge request !388: Resolve "Use-jwt-for-frontend-client-and-limit-request-per-seconds" at functori / argos / Argos 2026-03-19T16:27:35Z thomas.santoni Thomas Santoni

MR 324 — Use JWT for frontend client and limit requests per second

Summary

Removes the frontend API key system and allows JWT-authenticated users to access data endpoints directly, with a per-user per-minute rate limit backed by Redis.

Changes

Remove front API key system (Database, Api)

  • Dropped is_front column from the apikeys table (migration 20260316000000_remove_is_front).
  • Removed POST /apikeys/front endpoint from the database, config, schema, models, DAO, handlers, and OpenAPI spec (migration 20260316000001_remove_front_apikey_endpoint).
  • Removed CreateFrontApikey variant from ApikeyManagementEndpoint and is_front field from the Apikey type.
  • Simplified DELETE /apikeys/all to unconditionally delete all keys and remove the user limit cache entry.

JWT Bearer auth for data endpoints (Api)

  • Data endpoints (/blockchain/ethereum/*, /blockchain/bitcoin/*, /blockchain/multichain/*) now accept a JWT Bearer token in addition to an API key.
  • The middleware probes for a JWT-shaped token (three dot-separated segments) before falling back to API key auth; a failed JWT verification silently falls through to API key auth.
  • Authorized accounts (status = authorized) are admitted; accounts pending verification receive 403 Forbidden.

Per-user per-minute rate limiting (Api)

  • Added JwtRateLimiter backed by a Redis atomic Lua script (SCRIPT_JWT_RATE_LIMIT).
  • Uses a fixed-window counter keyed on {prefix}jwt_rl:{user_id}:{minute_bucket} where minute_bucket = unix_seconds / 60.
  • Each user has an independent counter; the window resets at every UTC minute boundary.
  • Returns 429 Too Many Requests when the budget is exhausted.
  • Limit configurable via JWT_RATE_LIMIT_PER_MINUTE (default: 100 req/min).

Configuration (Config)

  • Added JWT_RATE_LIMIT_PER_MINUTE=100 to argos.env.
  • Removed POST /apikeys/front from api_setup_config/endpoints.json.

Integration test (Workspace, Makefile)

  • Added test/jwt_rate_limit crate with a 5-phase end-to-end test:
    • Authenticates two distinct users via the auth server.
    • Verifies that limit requests all succeed for user1.
    • Verifies that requests beyond the limit return 429 for user1.
    • Verifies that user2's counter is independent (user2 can still make requests while user1 is blocked).
    • Verifies that both counters reset after the UTC minute rolls over.
  • Added make test-jwt-rate-limit target with JWT_TEST_LIMIT=5 override for fast test runs.

Documentation (Doc)

  • Added doc/api.md documenting all authentication strategies, error codes, and environment variables.

Closes #324

tag:gitlab.com,2026-03-19:5222978612 adam.khayam pushed to project branch 334-paper_aribtrage at functori / argos / Argos 2026-03-19T16:11:13Z adam.khayam adam.khayam

adam.khayam (3b164c89) at 19 Mar 16:11

[paper] progress in eval

tag:gitlab.com,2026-03-19:5222971972 Germán Delbianco opened issue #281: [consensus-ops] v2 feature request: navigate back through frozen view history at functori / dev / explorus 2026-03-19T16:09:38Z germanD Germán Delbianco tag:gitlab.com,2026-03-19:5222948449 Thomas Santoni pushed to project branch 314-integrate-deposit-address-classification-api at functori / argos / Argos 2026-03-19T16:04:30Z thomas.santoni Thomas Santoni

Thomas Santoni (81e51e45) at 19 Mar 16:04

[Api] Resolve clustering addresses to KnownAddressOrAddress via OSI...

... and 13 more commits

tag:gitlab.com,2026-03-19:5222935717 Thomas Santoni pushed to project branch 314-integrate-deposit-address-classification-api at functori / argos / Argos 2026-03-19T16:01:37Z thomas.santoni Thomas Santoni

Thomas Santoni (6dd38ed0) at 19 Mar 16:01

[Api] Resolve clustering addresses to KnownAddressOrAddress via OSI...

... and 13 more commits

tag:gitlab.com,2026-03-19:5222651583 Thomas Santoni pushed to project branch 314-integrate-deposit-address-classification-api at functori / argos / Argos 2026-03-19T15:04:16Z thomas.santoni Thomas Santoni

Thomas Santoni (108d547a) at 19 Mar 15:04

[Api] Resolve clustering addresses to KnownAddressOrAddress via OSI...

... and 13 more commits

tag:gitlab.com,2026-03-19:5222638195 Hamid opened merge request !396: Draft: Resolve "Fix-decode-block-analysis-latency" at functori / argos / Argos 2026-03-19T15:02:03Z hamid.kolli Hamid

Closes #337

tag:gitlab.com,2026-03-19:5222637028 Hamid pushed new project branch 337-fix-decode-block-analysis-latency at functori / argos / Argos 2026-03-19T15:01:52Z hamid.kolli Hamid

Hamid (95944e0c) at 19 Mar 15:01

[Config] Update verbose values from low/medium/high to info/debug/t...

... and 94 more commits

tag:gitlab.com,2026-03-19:5222629355 Hamid opened issue #337: Fix-decode-block-analysis-latency at functori / argos / Argos 2026-03-19T15:00:29Z hamid.kolli Hamid
tag:gitlab.com,2026-03-19:5222560095 Hamid pushed to project branch 336-unify-ocaml-and-rust-logging-replace-homemade-ocaml-logger-with-tracing-compatible-structured at functori / argos / Argos 2026-03-19T14:42:28Z hamid.kolli Hamid

Hamid (95944e0c) at 19 Mar 14:42

[Config] Update verbose values from low/medium/high to info/debug/t...

... and 5 more commits

tag:gitlab.com,2026-03-19:5222216168 adam.khayam pushed to project branch 334-paper_aribtrage at functori / argos / Argos 2026-03-19T13:33:48Z adam.khayam adam.khayam

adam.khayam (c22187d2) at 19 Mar 13:33

[Paper] rework script evaluation

tag:gitlab.com,2026-03-19:5222131453 Thomas Santoni pushed to project branch 314-integrate-deposit-address-classification-api at functori / argos / Argos 2026-03-19T13:16:48Z thomas.santoni Thomas Santoni

Thomas Santoni (08d26515) at 19 Mar 13:16

[Api] Resolve clustering addresses to KnownAddressOrAddress via OSI...

... and 13 more commits

tag:gitlab.com,2026-03-19:5222116421 Thomas Santoni pushed to project branch 314-integrate-deposit-address-classification-api at functori / argos / Argos 2026-03-19T13:13:27Z thomas.santoni Thomas Santoni

Thomas Santoni (69f18234) at 19 Mar 13:13

[Api] Resolve clustering addresses to KnownAddressOrAddress via OSI...

... and 13 more commits

tag:gitlab.com,2026-03-19:5222048566 Thomas Santoni pushed to project branch 314-integrate-deposit-address-classification-api at functori / argos / Argos 2026-03-19T12:58:47Z thomas.santoni Thomas Santoni

Thomas Santoni (ef381a69) at 19 Mar 12:58

[Api] Resolve clustering addresses to KnownAddressOrAddress via OSI...

... and 13 more commits

tag:gitlab.com,2026-03-19:5222031997 Hamid pushed to project branch 319-use-progenitor-rust-lib-to-generate-microservices-clients at functori / argos / Argos 2026-03-19T12:55:10Z hamid.kolli Hamid

Hamid (48af0999) at 19 Mar 12:55

[Config] Use default rustup profile to include clippy in CI runner

... and 38 more commits

tag:gitlab.com,2026-03-19:5222028036 Rodi-Can Bozman deleted project branch rodi@rust-toolchain at functori / argos / Argos 2026-03-19T12:54:12Z rodibozman Rodi-Can Bozman

Rodi-Can Bozman (02d89c9e) at 19 Mar 12:54

tag:gitlab.com,2026-03-19:5222027876 Rodi-Can Bozman accepted merge request !395: rust: toolchain file to auto-fetch right version at compilation at functori / argos / Argos 2026-03-19T12:54:10Z rodibozman Rodi-Can Bozman

Context

Allows me to fetch the right version of rust at compilation without switching manually (I have different toolchain for other projects).

tag:gitlab.com,2026-03-19:5222027852 Rodi-Can Bozman pushed to project branch main at functori / argos / Argos 2026-03-19T12:54:10Z rodibozman Rodi-Can Bozman

Rodi-Can Bozman (7161477a) at 19 Mar 12:54

Merge branch 'rodi@rust-toolchain' into 'main'

... and 1 more commit

tag:gitlab.com,2026-03-19:5221998891 Hamid approved merge request !395: rust: toolchain file to auto-fetch right version at compilation at functori / argos / Argos 2026-03-19T12:47:57Z hamid.kolli Hamid

Context

Allows me to fetch the right version of rust at compilation without switching manually (I have different toolchain for other projects).

tag:gitlab.com,2026-03-19:5221995408 Rodi-Can Bozman opened merge request !395: rust: toolchain file to auto-fetch right version at compilation at functori / argos / Argos 2026-03-19T12:47:13Z rodibozman Rodi-Can Bozman

Context

Allows me to fetch the right version of rust at compilation without switching manually (I have different toolchain for other projects).