Copy
Ask AI
import { Bls12381Service, Bls12381Live } from 'voltaire-effect/crypto'
import { Effect } from 'effect'
const result = await Effect.runPromise(
Effect.gen(function* () {
const bls = yield* Bls12381Service
const signature = yield* bls.sign(message, privateKey)
const isValid = yield* bls.verify(signature, message, publicKey)
const aggregated = yield* bls.aggregate([sig1, sig2, sig3])
return { signature, isValid, aggregated }
}).pipe(Effect.provide(Bls12381Live))
)
Error Handling
Copy
Ask AI
program.pipe(
Effect.catchTag('InvalidScalarError', (e) => ...),
Effect.catchTag('SignatureError', (e) => ...)
)
Testing
Copy
Ask AI
import { Bls12381Test } from 'voltaire-effect/crypto'
myProgram.pipe(Effect.provide(Bls12381Test))
Interface
Copy
Ask AI
interface Bls12381ServiceShape {
readonly sign: (message: Uint8Array, privateKey: Uint8Array) => Effect.Effect<Uint8Array, InvalidScalarError | SignatureError>
readonly verify: (signature: Uint8Array, message: Uint8Array, publicKey: Uint8Array) => Effect.Effect<boolean, SignatureError>
readonly aggregate: (signatures: Uint8Array[]) => Effect.Effect<Uint8Array, SignatureError>
}

