Skip to content

Run paid orchestrator without redemption key and hand off winning tickets #24

Open

Description

@j0sh

Problem

The sandbox allocator will deploy and upgrade the orchestrator as a k3s pod. A separate redemption service is assumed to own redemption transactions and their signing key. Clients already submit signed tickets; the orchestrator needs to verify and account for them, but must not require a redemption private key in its pod.

Today paid startup requires a keystore password, opens a redemption account, and starts recovery and redemption workers in the orchestrator process. NewPaymentEngine also requires the local RedeemerDB used to persist winning tickets. See orchestrator/app.go, payment_engine.go, and naap-ops #99.

Work

  • Support paid admission with an explicitly configured ticket recipient and chain verification, without opening a redemption keystore or starting a local redemption worker. Keep existing embedded redemption mode compatible where needed.
  • Define a durable, authenticated handoff of validated winning tickets and required metadata to the external redemption service. Specify acknowledgement, retry, idempotency, recovery after pod restart, and service-outage/backpressure behavior. Do not acknowledge paid work if the required durable record cannot be made.
  • Keep payment accounting and replay protection correct across the handoff. Document which state stays process-local and which persistent data/volume must survive orchestrator upgrades.
  • Keep the redemption key and transaction-signing authority entirely outside the allocator-managed orchestrator pod. The external service implementation itself is outside this issue.

Done when

A paid orchestrator starts and serves a representative client without a recipient private key mounted. Winning tickets survive orchestrator restart and are handed to the external redemption service without loss or duplicate redemption under retries and outages. Existing payment and recovery behavior remains covered. Integration tracking: naap-ops #83 and #94.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions