All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
browser.jsCJS shim at package root for browserify compatibility (require('@ocash/sdk/browser')now resolves correctly withoutexportsmap support).browserfield inpackage.json: remapsdist/index.cjs→dist/browser.cjsfor browserify, and stubsbetter-sqlite3,node:sqlite,node:fs/promises,node:pathto prevent Node-only modules from entering browser bundles.
prepareWithdraw: send net recipient amount (requestedAmount) asburn_amountin relayer request, not the total UTXO deduction (burnAmount). Previously the contract receivedinp.amount = burnAmountand computedamountWithFee = burnAmount + protocolFee + relayerFee, which mismatched the circuit's public input, causing ZKP verification failure.SqliteStoreexport moved from universal entry (@ocash/sdk) to Node-only entry (@ocash/sdk/node) to prevent Vite 7+ static analysis errors fromimport("sqlite")appearing in browser bundles.
- Initial release of
@ocash/sdk - Factory pattern:
createSdk(config)with event-driven architecture - Three entry points: universal, browser (
IndexedDbStore), Node.js (FileStore) - Core module: WASM bridge, circuit loading, resource management
- Wallet module: seed-based key derivation, UTXO queries, balance calculation
- Sync module: memo/nullifier sync via Entry Service, Merkle tree sync
- Planner module: coin selection, fee calculation, merge planning
- Ops module: end-to-end deposit/transfer/withdraw orchestration
- Storage adapters:
MemoryStore,FileStore,IndexedDbStore,KeyValueStore,RedisStore,SqliteStore - Cryptography: BabyJubjub curve, Poseidon2 hash, ECDH + NaCl memo encryption
- zk-SNARK proof generation via Go WASM worker
- Multi-chain support with per-chain configuration
- Runtime asset loading with chunk support and local caching
- Operation history with filtering, pagination, and pruning
- Bilingual documentation (English/Chinese)