EIP-5564 stealth addresses for transaction privacy
import * as StealthAddress from 'voltaire-effect/primitives/StealthAddress'
import * as S from 'effect/Schema'
// Schema validation (66-byte meta-address)
const metaAddress = S.decodeSync(StealthAddress.MetaAddress)(new Uint8Array(66))
// Parse to extract keys
const { spendingPubKey, viewingPubKey } = S.decodeSync(StealthAddress.ParsedMetaAddress)(metaAddress)
const metaAddress = S.decodeSync(StealthAddress.MetaAddress)(bytes)
const parsed = S.decodeSync(StealthAddress.ParsedMetaAddress)(metaAddress)
// { spendingPubKey: Uint8Array, viewingPubKey: Uint8Array }
import * as Effect from 'effect/Effect'
const result = S.decodeEither(StealthAddress.MetaAddress)(new Uint8Array(10)) // wrong length
// Either.left(ParseError)