durt2 1.4.0
durt2: ^1.4.0 copied to clipboard
Dart library for interacting with Duniter v2s blockchains. Provides wallet management, transaction signing, Squid GraphQL requests, and more
1.4.0 #
- Toolchain and dependency refresh, no API change. Built and tested against
Flutter 3.44.8 (Dart 3.12.2). The declared floors now match what the package
resolves to:
objectboxandobjectbox_flutter_libs5.3.2,flutter_secure_storage10.3.1,multiformats1.4.0,logger2.7.0,graphql5.2.4,collection1.19.1,unorm_dart0.3.2. Dev dependencies follow:test1.31.0,build_runner2.15.3,lints6.1.0,graphql_codegen3.0.2,meta1.18.0. - The
analyzer: ^9.0.0override is kept and now states its reason: analyzer 13.1.0 and later requiremeta ^1.18.3, whileflutter_testfrom the Flutter 3.44.8 SDK pins meta 1.18.0, so version solving fails without it.
1.3.0 #
- Identity-name lookup over the on-chain
IdentitiesNamesmap:DuniterStorageService.getIdentityIndexByName(name)for an exact match, andgetIdentityIndexByNameMulti(names)for a batched one (singlemultiIdentitiesNamesRPC, order preserved, result padded to the request length). Both returnnullfor a free name and degrade tonullon a WebSocket drop rather than throwing. Lets a client treat the on-chain identity name as authoritative over a self-declared profile name.MockDuniterStorageServicegainssetReservedNameand anameMultiLookupCountcounter so batching can be asserted in tests. DuniterStorageService.accountSurvivesAtZero(address): whether an account keeps existing once emptied. True whensufficients > 0, which on Duniter v2s means the account backs an identity (pallet_identity::create_identitycallsinc_sufficientson the owner key). Such an account may go below the existential deposit without being reaped, so a client can offer the full balance instead of refusing the amount or burning the change.DuniterService.paytakes akeepAliveflag (defaulttrue, unchanged behaviour for Ğ1 amounts).falseselects the chain'sExpendablepreservation:transferAllowDeathinstead oftransferKeepAlive, andtransferUdinstead oftransferUdKeepAlive. This also aligns the two units: UD amounts previously always usedtransferUd(Expendable) while Ğ1 amounts usedtransferKeepAlive(Preserve), so the existential-deposit rule silently depended on the display unit.
1.2.1 #
- Fix macOS biometrics:
BiometricServicenow stores the encrypted PIN in the platform-aware secure storage (file-based on macOS, where the Keychain is not reliably available via Flutter plugins) instead of the raw Keychain plugin. Readable legacy Keychain enrollments are migrated on first use; broken ones simply require re-enrolling. New public API:CryptoUtils.secureRead/secureWrite/secureDelete/secureContainsKey/secureReadAll.
1.2.0 #
- Contacts sync foundation (Cesium+ pods): CRDT model
ContactsSyncState/ContactSyncEntry(per-field last-write-wins, commutative merge, non- destructive removal viaisContact, dead-entry GC, forward-compatible unknown fields) and encrypted-blob pod I/OgetContacts/saveContacts(cross-preserves the co-hosted certification queue).
0.6.0 #
- Bulk storage support
- Improved network scan
- Connection orchestrator improvements
0.3.0 #
- Implement all Gecko v2s requirements
0.1.0 #
- Migrate files from Ğazelle to split responsabilities