Skip to content

[On-Chain] Optimize PlonK on-chain verifier (PlonkBLS12381Lib) CPU budget on Plutus V3 #43

Description

@satran004

Background & Finding (SEC-10)

In zeroj-onchain-julc, the deployable PlonK verifier (PlonkBLS12381Lib.java) performs a full linearized polynomial commitment evaluation and batched KZG pairing check on-chain.

Currently, PlonK verification on Plutus V3 consumes ~4.8–4.95e9 CPU units (~49% of the transaction block budget limit), compared to ~2.14e9 CPU units (~21%) for Groth16. Reducing PlonK verification costs improves transaction composability on Cardano.

Scope & Tasks

  • Profile Plutus Core step-by-step evaluation inside PlonkBLS12381Lib.
  • Optimize linearized polynomial evaluation, scalar multiplications, and Fiat-Shamir hash invocations in Plutus Core.
  • Target reducing CPU budget from ~4.9e9 down toward ~2.5e9.
  • Validate on-chain execution against Yaci DevKit.

Risk Classification

  • R2: Cardano on-chain verifier performance & feasibility.
  • Reference: docs/zeroj-comprehensive-review-and-readiness-gemini.md (SEC-10, Section 5.4).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions