libwallet 0.3.5
libwallet: ^0.3.5 copied to clipboard
Dart client for libwallet — a multi-chain cryptocurrency wallet library with TSS (Threshold Signature Scheme) key management. Supports EVM chains, Bitcoin, and Solana via direct FFI to the Go library.
0.3.5 #
- Direct account signing: new
Account.signMessage,signTransaction,signAndSendTransactionendpoints let wallet-host apps sign directly without routing through the Web3 pending-request/approve flow. Removes ~80 lines of async listener code from the typical Dart integration. - View accounts (read-only):
accounts.createView(type:, address:, xpub:)creates accounts with no backing wallet — suitable for watching a counterparty address or an HD tree (xpub, bitcoin-family). Balance and NFT queries work; signing is rejected. NewAccount.isViewOnlygetter. - Progress redesign: progress events are now a single 0..1
fractioninstead of{count, running}. ECDSA wallet creation now emits fine- grained ticks during Paillier / NTilde safe-prime generation (one per prime found out of 4, per key) — previously the UI was blind for 20+ seconds per key share. Requires tss-lib v2.2.4+. - Typed-API cleanup: removed
dynamicreturns and rawMap<String, dynamic>param inputs across the API surface. New typed models:SignedMessage,RemoteKeySession,RemoteKeyValidation,NftListing,WalletBackupEntry,RpcTestResult,UnsignedTransaction. Methods liketransactions.signAndSend(UnsignedTransaction),wallets.backup(),remoteKeys.validate()now return proper model instances. Raw param maps oncontacts.update,networks.update,tokens.updatereplaced with named parameters. - Validation: reject wallet
Curvevalues outside{secp256k1, ed25519}; reject account type/curve mismatches (e.g.solanaon secp256k1,ethereumon ed25519). Bitcoin accounts now derive on BIP-44 coin_type 0 (m/44/0/0/i) instead of Ethereum's coin_type 60.
0.3.4 #
- Email 2FA:
RemoteKey:new(andremoteKeys.create) now accept an email address in addition to phone numbers. Pass eithernumberoremail— the EllipX backend routes SMS vs email verification based on whether the value contains@.
0.3.3 #
- Bitcoin balance fix:
modchain_assetsreturnsbalanceas a decimal-formatted number ("0.00000000"), not int64. Decode viaoutscript.BtcAmountwhich handles both forms. Previously failed with:json: cannot unmarshal number 0.00000000 into Go struct field. - Solana NFT fix:
getAssetsByOwner(Helius DAS API) requires named JSON-RPC params, not positional. NewNetwork.DoRPCNamed()helper. Previously failed with:invalid type: map, expected a string. - Bitcoin UTXO decode:
modchain_lookupTxoBIP32response uses the sameBtcAmountserialization foramtandbalancefields. Type switched from int64 to outscript.BtcAmount across wlttx/bitcoin.go. - EVM NFT lookup hardening: type assertions on the
modchain_assetsresponse in wltnet/nft.go could panic if any field was missing or the wrong type. Replaced with comma-ok form. - iOS Dart Tests CI timeout bumped 45 → 60 minutes (Xcode build slow).
0.3.2 #
- iOS simulator support: build hook now detects
iphoneosvsiphonesimulatorSDK and downloads the correct binary. Previously the simulator would try to link the device-only binary and fail. - Release now includes
liblibwallet-iossimulator-arm64.a(Apple Silicon) andliblibwallet-iossimulator-x64.a(Intel Mac simulators) alongside the existingliblibwallet-ios-arm64.adevice binary.
0.3.1 #
- Bitcoin HD address support:
bitcoin-type accounts now derive multi-address HD trees under their account xpub. Balance queries callmodchain_assets(xpub)which scans0..lastI+20child keys (BIP-44 style gap limit) server-side. - New
AccountApi.xpub(id): returns the BIP-32 extended public key. - New
AccountApi.nextAddress(id): returns the next clean receive (or change) address based on on-chain scan. - New
AccountApi.allAddresses(id): lists all HD addresses across receive and change chains with activity markers. Account.Addressnow points tom/0/0(first receive address) instead ofm/0for Bitcoin-family accounts. BTC/LTC/DOGE/BCH supported.
0.3.0 #
- EIP-1559 transactions: Auto-selected when the chain supports it. New
maxFeePerGasandmaxPriorityFeePerGasfields onTransaction. - ERC-20 transfers: New
erc20_transfertransaction type. Pass a token XUID inAsset, recipient inTo, and amount — libwallet encodes thetransfer(address,uint256)call automatically. - ENS / SNS name resolution: New
client.names.resolve('vitalik.eth')API. Auto-detects.eth(Ethereum) and.sol(Solana) suffixes. - Solana devnet: Routes to the correct Helius devnet RPC endpoint
when using a Solana network with
chainId: "devnet". - Local dev:
hook/build.dartnow prefers a localtestserver/liblibwallet.<ext>over downloading from GitHub Releases. - Fix: macOS dylibs built with
-headerpad_max_install_namesso Dart can bundle them without relinking.
0.2.0 #
- Auto-download native binaries from GitHub Releases at build time
- CI testing on macOS, Android emulator, and iOS simulator
- 43 integration tests covering all API endpoints
- Full dartdoc on all model fields (~130 fields)
- Comprehensive README with usage examples
0.1.0 #
- Initial release
- FFI transport with
NativeCallable.listenerfor Go→Dart callbacks - 17 typed API classes covering all libwallet endpoints
- 15 model classes with full dartdoc
- Socket transport as legacy fallback
- Native asset hook for pub.dev binary distribution