Copy
Ask AI
import { KZGService, KZGLive } from 'voltaire-effect/crypto'
import { Effect } from 'effect'
const result = await Effect.runPromise(
Effect.gen(function* () {
const kzg = yield* KZGService
yield* kzg.loadTrustedSetup()
const commitment = yield* kzg.blobToKzgCommitment(blob)
const proof = yield* kzg.computeBlobKzgProof(blob, commitment)
const isValid = yield* kzg.verifyBlobKzgProof(blob, commitment, proof)
return { commitment, proof, isValid }
}).pipe(Effect.provide(KZGLive))
)
Trusted Setup
CallloadTrustedSetup() before use. Check with isInitialized().
Testing
Copy
Ask AI
import { KZGTest } from 'voltaire-effect/crypto'
myProgram.pipe(Effect.provide(KZGTest))
// Mock 48-byte commitment/proof, always verifies true
Interface
Copy
Ask AI
interface KZGServiceShape {
readonly loadTrustedSetup: () => Effect.Effect<void>
readonly isInitialized: () => Effect.Effect<boolean>
readonly blobToKzgCommitment: (blob: KzgBlobType) => Effect.Effect<KzgCommitmentType>
readonly computeBlobKzgProof: (blob: KzgBlobType, commitment: KzgCommitmentType) => Effect.Effect<KzgProofType>
readonly verifyBlobKzgProof: (blob: KzgBlobType, commitment: KzgCommitmentType, proof: KzgProofType) => Effect.Effect<boolean>
}

