- Fix SdkSynchronizer.stop() race condition: use synchronous scope.cancel()
instead of async self-cancellation that never completed
- Fix scan loop: scan once after all downloads complete instead of per-batch
- Use fresh SQLiteDatabase connection for getLastScannedHeight() to avoid
reading stale Room-cached values
- Bump version to 1.9.1-beta01
- Update Cargo dependencies
- Add sapling-spend.params and sapling-output.params to sdk-lib assets
- Rewrite SaplingParamTool to copy params from bundled assets instead of HTTP download
- Remove OkHttp dependency from SaplingParamTool
- Initialize SaplingParamTool with app context from Initializer
- Generate 169 new checkpoint files (1,180,000 to 2,860,000 every 10k blocks)
- New wallets now start scanning from ~2,860,000 instead of ~1,170,000
- This eliminates ~1.7 million blocks of unnecessary trial decryption
- Increase SCAN_BATCH_SIZE from 500 to 2500 to reduce JNI/FFI overhead
- Expected improvement: new wallet sync from 8+ hours to under 1 hour
- Increase DOWNLOAD_BATCH_SIZE from 50 to 500 for faster sync
- Update default server endpoints to dragonx.is (mainnet and testnet)
- Add jniLibs source dir for Rust native libraries in build config