Skip to content
CAI
Software that uses CAICheck a score

Tactical-Advantage-Trading/wallet

34.8

Weak · 20 September 2026

16k

lines of production code

Scala

with Java

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a non-custodial Android wallet application supporting Bitcoin and eCash networks, built using Scala and Android technologies. It provides core cryptographic and protocol utilities for key derivation, transaction signing, and Lightning Network communication, alongside a local SQLite persistence layer for wallet state. The application features a custom UI for wallet setup, QR code handling, and transaction management, including a specific module for a 'Tactical Advantage' trading protocol.

How it got here

2015 — Project initialization and scaffolding

7 changes.

The repository was initialized with a Gradle build system, Apache 2.0 licensing, and modern Android and Scala dependencies. Legacy UI components and test files were removed to establish a clean foundation for the eWallet application.

2024 — Bitcoin and Lightning protocol foundations

7 changes.

This period focused on establishing the core infrastructure for Bitcoin and Lightning Network support by implementing foundational libraries for cryptography, address handling, and wire protocol serialization. Concurrently, the project introduced essential UI components, including carousel and flow layouts, to support the application's interface requirements.

2025–2026 — Tactical Advantage module development

4 changes.

This period focused on introducing the Tactical Advantage trading module, establishing its core UI, backend infrastructure, and state management. It also implemented a local SQLite persistence layer for wallet data and added supporting utility classes for formatting, serialization, and UI effects. Additionally, a native Bitassets Lite integration was added to support specific calculation requirements.

Features

Add FlowLayout and FlowLayoutManager for wrapping UI elements

This change introduces a new FlowLayout ViewGroup and a corresponding FlowLayoutManager for RecyclerViews, enabling child views to wrap automatically onto new lines or columns based on available space. The implementation supports horizontal and vertical orientations, configurable gravity, margins, and weight-based sizing, allowing users to create flexible, flow-based layouts that adapt to content size and container dimensions.

app/src/main/scala/org · high confidence

Add core Bitcoin protocol and cryptography libraries

The application now includes a comprehensive set of low-level Bitcoin libraries in the \fr.acinq.bitcoin\ package, enabling native handling of Bitcoin data structures and security. This adds support for Bech32 and Bech32m address encoding/decoding, deterministic wallet key derivation (BIP-32), and standard cryptographic operations including SHA-256, RIPEMD-160, and ECDSA signing via secp256k1. It also introduces full serialization and validation for Bitcoin blocks, transactions, and scripts, including SegWit witness program verification and standard script execution flags.

repository · high confidence

Add wire protocol codec definitions for Lightning Network data structures

Introduces CommonCodecs.scala, providing serialization and deserialization logic for core Lightning Network types including variable-length integers (varint), binary data, private/public keys, key paths, extended keys, outpoints, and transactions. These codecs enable the application to correctly encode and decode wire-format messages for these fundamental data structures.

app/src/main/scala/fr/acinq/eclair/wire · high confidence

The app now includes a new carousel layout manager for RecyclerViews, allowing items to be displayed in a centered, scrollable carousel with optional zoom effects and automatic centering. Additionally, a chip-based text input view (NachoTextView) has been added, enabling users to enter text that is automatically converted into selectable, removable chips with customizable styling and validation.

app/src/main/scala/com · high confidence

Initial Bitcoin protocol library implementation

This change introduces the core \fr.acinq.bitcoin\ library, providing foundational utilities for Bitcoin data handling. It includes Base58Check encoding/decoding for addresses and keys, BIP39 mnemonic seed generation and validation, lexicographical sorting of transaction inputs and outputs (BIP-69), and Merkle tree root computation. The package also defines essential constants, signature hash flags, and helper methods for deriving P2PKH, P2SH-of-P2WPKH, and native SegWit (P2WPKH) addresses across mainnet, testnet, and regtest networks.

app/src/main/scala/fr/acinq/bitcoin · high confidence

Initial project scaffolding and build configuration

The app module is initialized with standard build infrastructure, including a new ProGuard rules file for code shrinking and obfuscation, and the removal of legacy IntelliJ IDEA module files (app.iml) and local SDK configuration files (local.properties) to support a clean Gradle-based build environment.

app · high confidence

Introduce SQLite-based local storage for the Tactical Advantage wallet

This change adds a new local persistence layer using SQLite to store wallet state, transactions, and blockchain headers. Users will now have their wallet data (including secret keys, transaction history, and fee/fiat rates) stored locally on the device, enabling the wallet to function without relying solely on remote state. The implementation includes specific tables for wallets, transactions (with full-text search support), generic data storage, and Electrum block headers, along with stream notifications for updates.

app/src/main/scala/trading/tacticaladvantage/sqlite · high confidence

Introduce Tactical Advantage (TA) trading module

Adds a new 'Tactical Advantage' trading module to the wallet, providing a complete UI and backend infrastructure for interacting with a specific trading protocol. This includes a new \BaseActivity\ for shared UI logic, a \ConnectionProvider\ for network handling, and a \StateMachine\ for managing trading states. The module supports wallet setup via mnemonic recovery, QR code generation for receiving funds, and barcode scanning for input. It also introduces specific network groups for BTC and ECash, handling their respective Electrum connections, fee rates, and fiat conversions, along with an emergency activity for crash reporting.

app/src/main/scala/trading/tacticaladvantage · high confidence

Introduction of BIP32, BIP44, and BIP84 wallet type abstractions

The Electrum wallet module now supports distinct wallet implementations for BIP32, BIP44, and BIP84 derivation paths. This change introduces an \ElectrumWalletType\ abstraction that routes private key derivation and transaction signing logic based on the selected standard, enabling users to interact with legacy (BIP32/BIP44 P2PKH) and native SegWit (BIP84 P2WPKH) address formats within the same Electrum-based infrastructure.

app/src/main/scala/fr/acinq/eclair/blockchain · high confidence

Introduction of Bitassets Lite native integration

A new Bitassets Lite component has been added to the application, providing a Scala interface to a native library named 'bitassets\_lite\_client\_lib'. This class exposes a native 'add' method for integer addition, allowing the application to leverage native code for this specific calculation within the bitassets.lite package.

app/src/main/scala/bitassets · high confidence

Introduction of core Eclair utility package

The application now includes a new \fr.acinq.eclair\ package that provides foundational utilities for the Lightning Network implementation. This includes helper functions for generating random bytes, converting Bitcoin addresses (Base58 and Bech32) to public key scripts with chain validation, and implicit conversions for handling MilliSatoshi values, such as extending Long and Satoshi types for easier arithmetic and conversion.

app/src/main/scala/fr/acinq/eclair · high confidence

New UI assets and layout fragments for wallet setup, QR scanning, and transaction display

The app introduces a suite of new Android resource files to support the user interface for wallet creation, QR code handling, and transaction management. This includes vector drawables for the app launcher icon, network logos (Bitcoin and eCash), and action icons (add, copy, edit, share, lock, settings, scan, flashlight, expand, and directional arrows). Layout resources define the structure for the wallet setup activity, an emergency error-reporting activity, and a QR code display activity. Additionally, reusable fragments are added for network selection, fee configuration with a slider, mnemonic phrase input, chain transaction input (including CPFP and RBF sections), and a detailed payment line item that displays amounts, status icons, and network-specific badges.

app/src/main/res · high confidence

New utility classes for formatting, JSON serialization, and UI animations

This change introduces a suite of new utility components in the \trading.tacticaladvantage.utils\ package. It adds \Denomination.scala\ to handle formatting of Bitcoin (BTC) and fiat amounts with specific color coding for incoming/outgoing transactions. \ImplicitJsonFormats.scala\ provides new serialization rules for Eclair types (like \MilliSatoshi\, \PublicKey\) and internal domain objects (like \SigningWallet\, \CoinDescription\). A new \StripeBackground.scala\ view class implements an animated striped background effect, likely for pending payment states. Additionally, helper classes \Rx.scala\ (for reactive stream utilities), \ThrottledWork.scala\ (for background task throttling), \Statistics.scala\ (for mean/median/stddev calculations), \OnListItemClickListener.java\ (for list item clicks), and \Uri.java\/\UriCodec.java\ (for URI handling) are added to support these features.

app/src/main/scala/trading/tacticaladvantage/utils · high confidence

Project initialization with Apache 2.0 license and Gradle build setup

The repository has been initialized with an Apache License 2.0 (LICENSE.md) and a new README.md describing the eWallet as a non-custodial ECX and BTC wallet for Android. The project now uses Gradle for building, evidenced by the addition of the gradlew wrapper scripts (gradlew, gradlew.bat) and the removal of the legacy Wallet.iml module file. The .gitignore has been updated to exclude standard Gradle and Android build artifacts.

(repo-wide) · high confidence

Removals

Removal of legacy wallet UI and QR scanning components

The app has removed the legacy wallet interface and QR scanning functionality, specifically deleting the \WalletActivity\ (which featured a physics-based coin animation), \TxsActivity\ (transaction history), \RequestActivity\ (QR generation), \ScanActivity\ (QR scanning), and their supporting classes like \AbstractCoin\ and \Informer\. This cleanup eliminates the old visual wallet representation and manual QR input methods, indicating a shift toward a different UI paradigm or reliance on external scanning tools.

app/src/main/java · high confidence

Test coverage

Removed legacy ApplicationTest

The legacy \ApplicationTest\ class in the Android instrumentation test suite has been removed. This cleanup eliminates an outdated test file that is no longer part of the active testing strategy.

app/src/androidTest · high confidence

Dependencies

Gradle wrapper upgraded to version 9.6.0

The Gradle wrapper has been updated to use Gradle 9.6.0 (previously 2.2.1). This ensures that builds are executed with the newer Gradle distribution, which may bring changes to build performance, plugin compatibility, and build script syntax requirements.

gradle · high confidence

Initial project setup with modern Android and Scala dependencies

The project has been initialized with a new build configuration, replacing the legacy Gradle setup with a modern Kotlin DSL and Version Catalog. This introduces a comprehensive set of dependencies including AndroidX libraries (Core KTX, AppCompat, Material, RecyclerView), QR scanning via zxing-android-embedded, and a Scala ecosystem stack (Akka, Scala Parser Combinators, Scodec, Spray JSON, Json4s, Quicklens, RxScala). Cryptographic capabilities are provided by secp256k1-kmp-jni-android and web3j, while networking relies on OkHttp and nv-websocket-client. The build targets Android SDK 36 with a minimum SDK of 28, compiled with Java 17.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 35.

Lenses

  • Code Health 86
  • Architecture 98
  • Maturity 32
  • Readiness 17
  • Security 50

Changes since last survey

  • 300 commits — 265 feature/other, 35 fixes

By area

  • app/src — 244 commits
  • (root) — 19 commits
  • (repo) — 13 commits
  • app/build.gradle.kts — 12 commits
  • app/libnode — 4 commits
  • app/BIP322Share.md — 3 commits
  • app/build.gradle — 3 commits
  • biconomy/src — 1 commit
  • build/intermediates — 1 commit

Notable commits

  • fix: Bugfix
  • fix: Fix HW card coloring
  • fix: Fix HW signing issue bug Disable for now, add HW signing later
  • fix: Fix Play Protect warning
  • fix: Fix Play Protect warning
  • fix: Fix README
  • fix: Fix TA address
  • fix: Fix TA link
  • fix: Fix a degradation
  • fix: Fix fiat loading glitch
  • fix: Fix invalid signature exception
  • fix: Fix invalid signature exception
  • fix: Fix ordering for incoming USDt txs We order them by ID when seelcting from local DB, but server sends them in reverse order (newest first), so to make local ID order coincide with chronological order we always sort txs by "seen" (oldest first) before inserting into local DB.
  • fix: Fix visibility bug
  • fix: Minor UI bugfix
  • fix: Minor UI fix
  • fix: Minor UI fix
  • fix: Minor bugfix
  • fix: Minor bugfix
  • fix: Minor fix
  • …and 280 more

Architecture

  • 0 containers · 2 bounded contexts · 0 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Tactical-Advantage-Trading/wallet was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 35094896622a969d54a30f23297d6fa801f7c6bd — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.