Kilowallet
com.kilombino.pyblockwatch
ꓘɨℓσꬺƄɨP110ꓘɳσ[Ŧƨ] 𓅦丰 _@kilombino.com Bitcoin BLAKE2b wallet: hot + watch-only, coinjoin, Ark and Lightning, full backup
Kilowallet: Bitcoin BLAKE2b wallet for Android. Hot wallet and watch-only (SeedSigner by animated QR), Kilojoin coinjoin pools over Nostr, Ark and Lightning, seeds made on the device from dice, full encrypted backup. Reproducible builds. Video tutorial: https://kilombino.com/kilowallet/
First release: Sep 5, 2026, 114 total releases.
Most recent release: Nov 11, 2026.
Appears in 1 app stack.
0 sats / 0 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Nov 11, 2026 1.5.6### Fixed - **Coin control tells you at once when a coin you picked was taken by a coinjoin round.** If a pool reaches its closing or signing step after you opened coin control, PREPARE now says so before the fee and the review ("A coin you picked is now being signed in a coinjoin round. Pick other coins."). Before, it was only refused when you signed. The check at signing stays. - **Transaction details follow the live state.** The details of a movement now show its current confirmations instead of the ones it had when you tapped it, so a confirmation (or a replacement) shows while the dialog is open, and SPEED UP / CANCEL disappear once it confirms. - **A relay error no longer hides a join error.** The automatic reload of the pool list keeps its own "Could not reach the relay" line, so it never replaces an unread message about a failed join or round. The message panel is also drawn once instead of twice. These came from comparing Kilowallet with a review of RedWallet's pull requests. Nothing else changes: same pools, same server, same messages.
- Nov 9, 2026 1.5.5### Fixed - **The default server works again on the phone without a "certificate changed" warning.** 1.5.4 meant to accept the new Let's Encrypt certificate of fulcrum.kilombino.com, but on Android its check with the phone's trusted authorities always failed, so the warning stayed. Now the check is done the way Android requires (with the server's name), and it was tested on a phone emulator against the real server. As in 1.5.4: the pin of the old certificate keeps working, the new one is accepted only when an authority the phone trusts signed it for that name, and every other server keeps the pin rule. - Nothing else changes: same messages and pools as 1.5.4.
- Nov 9, 2026 1.5.4### Fixed - **The default server works again without a "certificate changed" warning.** fulcrum.kilombino.com moved to a Let's Encrypt certificate on 2026-11-08. The wallet still holds the pin of its old certificate, and now also accepts the new one, but only when an authority the phone trusts really signed it for that name. Every other server keeps the pin rule as before. - **Bitcoin RPC (your own node): the balance of a mining address shows at once.** 1.5.3 counted mined rewards still maturing, but a balance the wallet had kept from before (0) stayed on screen until the next payment arrived. Now it is read again as soon as you update. - **When the node or server can't be reached** (away from home without your VPN, the node off), the balance is shown as the last known one ("Last known balance, not checked yet: pull down to try again", yellow dot) instead of a green "complete" over old figures. - Nothing else changes: same messages and pools as 1.5.3.
- Nov 7, 2026 1.5.3### Fixed - **Mining to a wallet read from your own node (Bitcoin RPC).** Mined rewards still maturing now count in the balance and show as locked ("… sats are mined rewards still locked, until block …"), as they already did with an Electrum server. Before, the node's list of coins left them out: the balance read 0, the coins showed as received but the "left" figures went negative, and the wallet took the mining address for spent and stopped looking at it, so new rewards only showed after a full rescan. - Nothing else changes: same messages and pools as 1.5.2.
- Nov 4, 2026 1.5.2### Fixed - A member of an asynchronous (v6) pool no longer leaves with "the pool expired" while the pool can still reopen a vote before its final time. After a vote that timed out, the creator's new vote can come a moment after the pool's open time ends; the wallet now waits for it until the pool's final time, as the protocol says. - Same messages as 1.5.1: works with Kilowallet 1.5.x, Kilojoin 0.10.x and any other v6 wallet.
- Nov 4, 2026 1.5.1### Changed - **Coinjoin rounds are safer after you sign.** The coins of a coinjoin you signed stay reserved until the round's transaction confirms, or until a coin of the round is spent elsewhere and that spend is 6 blocks deep. A spend still in the mempool, or only a block or two deep, can still be replaced or undone, so it no longer frees your coins. - A round shows **confirmed only after 6 blocks** ("Sent · confirmed 2/6" meanwhile). If a block reorganisation drops the transaction, the wallet sees it and sends it again. - A transaction that fails to send (a server out of reach, a full mempool) no longer cancels the round: it shows "Signed · not sent yet, it goes again" and is sent again until a node takes it. A transaction not seen for 12 hours is no longer given up for time alone. - All of this applies to every pool, not only asynchronous (v6) ones. Same protocol: works with Kilowallet 1.5.0, Kilojoin 0.10.0 and any other v6 wallet. - In asynchronous (v6) pools, a wallet that signed posts its signatures again every day, so a relay that keeps events for a week never loses them; and the creator opens a new vote by itself only when a whole round still fits before the pool ends. Translated to es, ca, fr, it, de, pt, zh.
- Nov 3, 2026 1.5.0### Added - **Kilojoin v6: pools with asynchronous rounds**, for people who answer at different times. COINJOIN → OPEN A POOL → "Asynchronous rounds (Kilojoin v6)": up to an hour to answer a vote, 30 minutes to hand in the outputs and two hours to sign, with an end time no round goes past. You can answer, close the app and come back only when the wallet has to act again; the first to sign never has to come back, because whoever holds every signature sends the transaction. - Nobody is left out of a v6 round without being asked again: if someone says not yet, leaves or doesn't answer, the pool says why and the rest are asked again. - The pool card says whether the creator has recorded your yes, and whether the relay has your signature (then you can close the app). A signed round past its time keeps your coins held until it confirms, or until a coin of it is spent elsewhere. - As a v6 pool's creator, the phone runs the pool: keep it online until the round is done (a Kilojoin node is better at it). Only wallets that know Kilojoin v6 (this one, Kilojoin 0.10.0) see these pools; v1–v5 pools work as before. ### Changed - Lightning engine with neutrino from upstream (paulscode/neutrino-blake2b v0.17.1-blake2b.2), which now advertises NODE_BLAKE2B itself; it also drops a sync peer that is ahead but sends no headers, and cleans the header store on a rollback. Same LND (v0.21.4-beta-blake2b.21.1). The engine is now built with `-trimpath` and a pinned gomobile, so it reproduces: ENGINE sha256-arm64 `07de89c42dd79231cdb05a5b448120bbd13f48027ed52b1657affc2ac5ceed71`. Translated to es, ca, fr, it, de, pt, zh.
- Oct 30, 2026 1.4.4### Added - **A reusable BOLT 12 offer to receive over Lightning.** Lightning → INVOICE → SHOW MY OFFER shows one fixed offer (`lno1…`) to share: you can be paid on it many times, each payer choosing the amount, and each payment arrives with the "⚡ Lightning: received" notification. Like any payment to this phone over Lightning, it is paid only while the app has Lightning running, and only up to what your channels can receive. ### Fixed - The offer is never shown without a blinded path. If Lightning isn't ready yet, the app says to wait until it shows Synced with a peer. - Blinded paths to this phone may start at the phone itself, so the node it has its channel with can pay its offers too. ### Changed - Payments received show the amount the payer sent; the small fee a blinded path adds on top (which you keep) is shown apart and smaller under it, like the routing fee of payments you make.
More…
Translated to es, ca, fr, it, de, pt, zh. - Oct 30, 2026 1.4.3### Added - **Pay BOLT 12 offers over Lightning.** PAY reads offers (`lno1…`) as well as invoices: paste one, scan its QR, or scan a `bitcoin:` QR that carries `lno=`. The wallet asks the offer's node for an invoice over onion messages and pays it; offers without an amount ask how much to pay. XBTPay checkouts that offer BOLT 12 can be paid this way. - **Lightning notifications:** paid, not paid (with the reason) and received, including payments to your own offers. Tapping one opens the Lightning tab. ### Fixed - **A payment that couldn't end left the screen stuck on "PAYING…"** with no way to cancel, and trying again later gave "AlreadyExists: payment is in transition". Payments now go on in the background: HIDE closes the dialog, the card shows "⏳ Paying N sats: on its way" and the result still arrives, also as a notification. A payment still on its way from before the app was closed is followed to its end, and paying an invoice that is already on its way says so plainly. Such a payment never loses the sats: if it fails, they come back to your channel. - A failed offer payment says why in one line instead of printing the whole fetched invoice, and one that finds no route right after the phone reconnects is retried once. ### Changed - Payments you made show the amount paid, with the routing fee apart and smaller under it.
More…
- Lightning engine rebuilt with BOLT 12 offers (same LND, `offersrpc` added); its pinned hash is in `lnd-engine/ENGINE`. Translated to es, ca, fr, it, de, pt, zh. - Oct 29, 2026 1.4.2### Fixed - **Lightning stopped syncing** ("Syncing · block … · 0 peers") since the nodes moved to Bitcoin Knots 29.4.3 on 28 October. Knots 29.4.3 only shares the chain past the BLAKE2b fork with peers that say they follow its rules, and the Lightning engine's light client didn't say so. It does now, and Lightning catches up on its own. Your channels and funds were never at risk. - **Renaming the Lightning node** now takes effect at once (Settings of Lightning → Node name). Before, it waited for the app's process to end, which Android rarely does. ### Changed - **Ark: cheaper payments.** The Ark engine follows Paperclip's wallet 0.9.1: on servers that offer it (Paperclip does), an ordinary Ark payment pre-pays much smaller recovery reserves, about 1,056 sats for a coin spent whole and 1,584 for one with change (before: about 2,700 and 4,000). Receiving through Lightning, paying Lightning invoices and leaving to an on-chain address cost the same as before. - **Update notice:** "There is a new update", with READ (opens the release on GitHub), CANCEL and UPDATE.
- Oct 28, 2026 1.4.1### Fixed - **Coinjoin: a perfect coin's round said "Hot wallet" when its outputs went to the watch-only wallet.** A perfect coin joins (or opens) its pool on its own once it confirms, and that path never kept where its mixed outputs go: the round's card, HISTORY and its notifications ("Coinjoin received in …") named the hot wallet, and showed the addresses as raw scripts. The coins always went where you chose; only the label was wrong. Now the coin keeps its destination, and rounds from before are recognised by finding their addresses in the watch-only wallet (or Jam's). ### Changed - **IN PROGRESS shows where each round's outputs will go** (wallet and addresses), from joining on, and a perfect coin waiting for its confirmation shows it too.
- Oct 28, 2026 1.4.0### Changed - **Coinjoin notifications: one for the round, not one per wallet.** A round used to bring a "Coinjoin sent", an outgoing payment from the hot wallet, an incoming one in the wallet the mixed coins went to, a "Coinjoin confirmed" and two first confirmations. Now it is one notification that follows the round: **Coinjoin sent to Hot wallet** (or Watch-only · its name), with the amount, 0 conf and the fee you paid; then, at its first block, **Coinjoin received in Hot wallet ✅** (1 conf) in its place. The wallets count the round's transaction in silence. A payment pool says "Coinjoin payment sent / confirmed". - The other steps of a round (you are in, someone joined, closing, signed…) update that same notification instead of piling up, and the ones that ask nothing of you do it without a sound. "Close now?" and "sign now" still ring. - Payments: the mempool notification and its first confirmation are one notification too ("Received" 0 conf → "Received ✅" 1 conf). - **COINJOIN · HISTORY** shows when each round went out and when it was confirmed or cancelled (date and time), and the wallet and address its outputs went to. Also for the hot wallet ("show the addresses" in the open card). - **Knots 29.4.3 (long coinbase maturity, knots#468):** mined rewards from block 979 919 count as locked for 25 920 blocks (about 180 days) from their own block; rewards from 973 440 to 979 918 keep their 6 480. Locked rewards, their unlock block and SEND follow it. ### Fixed - After joining a pool, opening one, or confirming an exact coin with the fingerprint, the app could come back on BTC: the main screen forgot its tab when it was built again. It stays on COINJOIN · IN PROGRESS now, and notification taps (perfect coin, you are in) open IN PROGRESS.
- Oct 27, 2026 1.3.9### Fixed - **Coinjoin: rounds that timed out after everyone agreed.** When a vote ended by its deadline (someone didn't answer) or a last yes came in just then, the pool's creator could send its "closing" twice or more before its own came back from the relay (slow over Tor), each time with a new round id. The others kept the first one, the creator went on with the last, nobody's request for a blind signature matched, and the round was cancelled after five minutes. No coin moved, but the pool was lost. A vote now closes once. And a member still waiting for its blind signature takes a later closing from the same creator, so rounds also go through with creators on older versions. - **Perpetual coin in HISTORY: "remove" was off the screen.** With TURN ON AGAIN and the fee link on the same line, it fell past the edge of the card. The buttons now wrap to a second line. - Tapping an Ark, Lightning or Spamchain notification could open another of those tabs: they shared one internal code. Each kind of notification has its own now. ### Changed - Payment notifications of the hot wallet say "Hot wallet ·" in their title, as the watch-only ones say "Watch-only ·". - Tapping a notification opens what it is about: a payment opens BTC on its own wallet (asking for the fingerprint when you were on the other one); a new pool opens POOLS; a round going on opens IN PROGRESS; a round confirmed or cancelled opens HISTORY. - Watch-only: the PSBT's animated QR for SeedSigner has a FULL SCREEN button: the whole screen, white, at full brightness and kept on, which a signer's camera reads much more easily. A tap closes it. - After preparing the exact coin for a pool, CLOSE takes you to IN PROGRESS, where the coin waits for its pool, instead of to BTC.
- Oct 24, 2026 1.2.6## Kilowallet 1.2.6 See where a coinjoin's outputs go before joining, a clearer address list for the watch-only wallet, and no more repeated "Sent" notifications from it. ### Added - **Check a coinjoin's addresses:** when the mixed outputs go to the watch-only wallet or to JoinMarket's Apricot jar, "SHOW THE ADDRESSES" lists the unused receive addresses they would go to now, one per output (1 to 5), in full and copyable, with their path (…/0/N; m/84'/0'/0'/0/N for Apricot). Compare them with that wallet (Sparrow, Shrike: Addresses › Receive) before joining. - A round going to another wallet shows the real addresses of that round, with their paths ("show the addresses" on its card). ### Changed - **Watch-only addresses:** the list starts just past the last used address and shows every one up to the next free ones. Addresses held for the outputs of coinjoin rounds going to this wallet show as "reserved for a coinjoin"; the free ones as "unused". A tap shows its full path.
More…
### Fixed - **Watch-only "Sent" for old coins, again and again:** the background watcher only re-checks addresses already found, and since 1.2.4 the Taproot count started at 0 for a watch-only set up before. It missed the higher addresses and saw their coins as gone. The watcher now uses the highest count it has and moves it on by itself when it sees a payment further out. - A balance refresh with the app open is filed under the wallet it started for: switching wallets in the middle made the other wallet's watcher see a change that never happened. - "used / unused" and a sentence of the coin picker were left in English. Translated to es, ca, fr, it, de, pt, zh. Signed APK SHA-256: `2eaa5d8ad0e5793fc861559d4de12cf4a3ef1abac87a2f933886af217bf5ef94` Unsigned (reproducible) SHA-256: `25e34fadb55ef4866ef545b072ca2f595f242695e80d7df32e21aa6c41f4f0a0` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 24, 2026 1.2.5## Kilowallet 1.2.5 Cancel a payment sent by mistake, the COINJOIN tab without notifications, settings on top, and coinjoin notifications that no longer repeat. ### Added - **Cancel an unconfirmed send (RBF):** "✕ cancel" next to "⚡ speed up" on a send of yours that is still in the mempool (in the movements list and in its details). It replaces the payment with one that sends the same coins back to a fresh address of this wallet, paying a little more fee, so the recipients get nothing. If the original confirms first, the cancellation is refused: the earlier, the better. Cancelling a payment that makes a perfect coin drops the coin and the pool it was for. ### Changed - **Settings open on top:** ⚙ shows the settings in place of the screen, from the top, instead of after everything else. ✕ or back closes them. In simple and advanced mode, on the LIGHTNING tab (its own settings) and in the JoinMarket wallet.
More…
### Fixed - **COINJOIN tab without notifications:** the coinjoin explainer only offered "notify me" or "not now", and "not now" turned the tab off and sent you back to BTC, so pools and rounds could not be seen without accepting notifications. It now also has "OPEN WITHOUT NOTIFICATIONS". - **Round cards repeating:** in several rounds at once, every round's card was posted again every minute, even with nothing new. A card is now redrawn only when something it shows changes, and the cards never sound or pop up by themselves: the steps that need you (close now, sign, sent, confirmed) still notify, once. - **Open pools notified again:** a pool is published again by its creator on every change (someone joins, a vote), and each of those was notified as a new pool. Each pool is now notified once. - **Perfect coin change:** the change of the payment that makes a perfect coin goes to the pool's address type, like the coin itself, not to the wallet's current type. - The status and buttons of a pending movement no longer squeeze its amount. Translated to es, ca, fr, it, de, pt, zh. Signed APK SHA-256: `f929c959f3ffeb1a209a693a911ab47898fe4e9e1be8d47f3da678bc4a922cc0` Unsigned (reproducible) SHA-256: `bd742e2300152712db9ab34edcd724a4b5a6a234da06d9604cff646e4d7cde90` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 23, 2026 1.2.4## Kilowallet 1.2.4 A Lightning engine built with Go's certificate fix, and fixes for watch-only wallets used as coinjoin destinations, especially Taproot ones. ### Changed - **Lightning engine:** LND 0.21.4-beta-blake2b.21.1 (Lightning Fork), built with Go 1.27.3. Go now rejects certificate chains through a set of compromised intermediate authorities (CVE-2026-111943). Same features, same channels and the same database: nothing to do. - **Coinjoin pools:** the pool key is always sent as 64 hex characters, so other Kilojoin implementations read it as is. ### Fixed - **Watch-only switched to Taproot:** how far addresses were used was remembered per key only, not per address type. A watch-only key used as bc1q and then switched to Taproot offered its Taproot addresses from where the bc1q ones ended, although none of them was used. Each address type now keeps its own count, and coinjoin outputs sent to that wallet stay within its gap limit, where its own scan finds them.
More…
- **Coinjoin to a watch-only wallet:** the round card and the destination choice say which watch-only wallet the mixed outputs go to (its name or the start of its key), so a round started before you changed it shows where it really goes. - **Watch-only with a plain xpub:** on import it asks for the address type (bc1q or Taproot) and warns when the key doesn't look like an account key. Coinjoin outputs only go to it once its type is known. - **Own node by RPC:** the node keeps one wallet per key and address type, so a watch-only key switched to Taproot is no longer read with the bc1q descriptors. Translated to es, ca, fr, it, de, pt, zh. Signed APK SHA-256: `1b003af08bd578fd07de2fb36d46b91a119cbd1c6f994046c599e4fdf31b6fef` Unsigned (reproducible) SHA-256: `5450ab1c2085f9db25f90a5ecc692ab3f9f4f58b565af50d2f474992c8b04f04` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 22, 2026 1.2.3## Kilowallet 1.2.3 Coinjoin outputs to your other wallets, 36 fiat currencies, amounts in your currency when you send and receive, and spending an unlocked fidelity bond with SeedSigner. ### Added - **Coinjoin: where the mixed outputs go.** When you open or join a pool, choose between the hot wallet (the default), the **watch-only wallet** or **JoinMarket · Apricot** (the first jar of the Jam wallet you watch). It only shows when that wallet is set up and its addresses are of the pool's type (a bc1q pool: a bc1q watch-only wallet or Apricot; a Taproot pool: a Taproot watch-only wallet). It works for the perfect coin too. - The outputs go to the first unused receive addresses of that wallet, never past its gap limit of 20, so its own scan finds them. Any change comes back to the hot wallet. Nothing changes in the Kilojoin protocol: the others in the round only see an address of the pool's type, and neither the pool announcements nor the Telegram alerts carry addresses. - **36 fiat currencies:** USD, EUR and GBP, JPY, CHF, CNY, RON, PLN, CZK, HUF, SEK, NOK, DKK, ISK, TRY, CAD, AUD, NZD, BRL, MXN, ARS, CLP, COP, PEN, UYU, VES, INR, KRW, HKD, SGD, ZAR, ILS, THB, IDR, PHP, MYR. The ▾ chip next to USD and EUR opens the list. One choice for the whole app, the converter and the widget, and it is remembered. Rates from mempool.kilombino.com (the ECB's daily reference; open.er-api.com for the rest). - **Amounts in your currency:** Send (XBT, Ark, Lightning on-chain) and Receive (XBT, Lightning, Ark) have a box in the chosen currency next to the sats one; type in either and the other follows. XBT receive can ask for an amount: the QR and COPY then carry a BIP-21 request. - **Lightning:** invoices without an amount can be paid; you say how much.
More…
- **Spend an unlocked fidelity bond with SeedSigner** from the read-only JoinMarket wallet: Kilowallet makes the PSBT and shows it as an animated QR; a SeedSigner that signs bonds with the BLAKE2b unified sighash (0x21) signs it, and Kilowallet checks it and sends it. Such a spend is valid only on XBT and cannot be replayed on the SHA-256 chain. It needs SeedSigner XBT (BLAKE2b) (Kilombino/seedsigner 0.8.7-xbt1, unofficial, not affiliated with the SeedSigner project; try it at https://seed.kilombino.com). ### Fixed - A perfect coin whose payment was sped up with RBF waited forever for a confirmation that never came. It now follows the new transaction and still opens or joins its pool; the speed-up dialog says so beforehand. - After a speed-up, the transaction dialog asked for the block explorer again even when one was already chosen. Translated to es, ca, fr, it, de, pt, zh. Signed APK SHA-256: `0eb9092c8b138e4be4d32a7dc3f13ccbdb75df04b537711349eee8f07158fc67` Unsigned (reproducible) SHA-256: `e12b4835054d2b8e9c33321d54455913351537e97f7be1ca60b3c09ec8b8ec2f` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 20, 2026 1.2.1## Kilowallet 1.2.1 A third wallet: follow your JoinMarket (Jam) wallet from your phone, read-only, with its fidelity bonds. ### Added - **JoinMarket wallet (🫙 JM)**, next to HOT and WATCH. In Jam, open *Settings › View in Kilowallet (read-only)* and scan its QR code, or paste its text. It needs JoinMarket XBT (Jam) 0.41.0-xbt2 or later: on StartOS 0.41.0:2, or the Umbrel app. - **The five jars** (Apricot, Blueberry, Cherry, Date, Elderberry), each with its balance and movements. - **Fidelity bonds**: amount, unlock date, current value and state. It shows "locked until …", "unlocked: spend or renew it from Jam", or "its value is now zero: renew it to keep being picked as a maker". - **Bond alerts**, once per bond: 7 days before it unlocks, when it unlocks, and when it stops counting. They also come from the background watcher. - Created a new bond? Scan Jam's QR again: the new import replaces the old one.
More…
### Read-only - The JM wallet has no SEND and no private key. Coins and bonds are spent from Jam. - Its balances and notifications are kept apart from your other two wallets. Tested on a BLAKE2b regtest node: a bond created in Jam, watched in Kilowallet, and spent from Jam (*Unlock Funds*) after its date with sighash 0x21. Before its date the network rejected it. Translated to es, ca, fr, it, de, pt, zh. Signed APK SHA-256: `529f6a26b788200fe91ef251e42e91ab53edbbb78773e84e6e5bdb0a37030610` Unsigned (reproducible) SHA-256: `fb26f550038527b01e5984dd8392b2e4f24c0f71c50d8c978cd95d6c0b517bae` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 20, 2026 1.2.0## Kilowallet 1.2.0 Kilojoin v4: a coinjoin pool can now give each person several mixed outputs. ### Added - **Mixed outputs per person (1 to 5)** when opening a pool. With 2 or more, the amount is that of each output: a pool of 4 × 1 000 000 gives every person four outputs of 1 000 000 sats, each to an unused address of their own. - **The perfect coin counts every output**: for 4 × 1 000 000 at 1 sat/vB it is 4 000 198 sats, and it joins with no change. - **Each output is signed blindly and handed in on its own**, with its own fresh key, its own connection and its own random wait. Not even the pool's creator can tell which outputs belong to the same person. ### Compatibility
More…
- A pool of **one output each** is announced as v3, exactly as before: every v3 wallet (Kilowallet 1.1.5+, Kilojoin 0.7+, PyBLOCK app, Redwallet, Paperclip wallet) can join it. One output is the default. - Pools of 2 to 5 outputs each are **v4**: only Kilowallet 1.2.0 and Kilojoin 0.8 or newer list them. - The protocol is in [Kilojoin's PROTOCOL.md, section 12](https://github.com/Kilombino/kilojoin/blob/master/docs/PROTOCOL.md), with test vectors. Tested on a BLAKE2b regtest node over relay.kilombino.com (3 people × 4 outputs, one with its perfect coin, one with two coins), and on mainnet: a 2 × 10 000 pool opened from a phone and joined from Kilojoin 0.8.0, transaction `32538ef2b5b6c252660ab4a6c18acc04cfd21067606b1531ad5428b41aafc5e7`. Signed APK SHA-256: `099dfd4156d1c72001b92d2118d3e9eb52033bd684fe97d4d5adb81820918a99` Unsigned (reproducible) SHA-256: `c19260ae979cdaf121303efaabdb3469e1fec0e28f3e8cbc04442a37799294aa` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 19, 2026 1.1.7## Kilowallet 1.1.7 Tor is now Arti, the Tor Project's Tor in Rust. The app opens faster, does less while it's in the background, and is a little smaller. ### Changed - **Tor is Arti 2.7.0** instead of the C Tor from tor-android. It is built reproducibly from the pinned tag, and the release build checks its hash, as for the Ark and Lightning engines. It runs only when a connection needs it (Lightning, a node reached by .onion) and stops with the app. Its log goes into crash reports. - **Faster start**: the wallet's caches, verified headers and last balances are read from disk off the screen's thread, the language is loaded in the background as the app starts, and the check for a coinjoin round left running no longer holds up the first frame. - **Less work in the background**: - Opening the app no longer restarts the background watcher. A changed check interval is picked up within a minute. - The Lightning tab's checks, the coinjoin tab's refresh and pool list, and the update check pause while the app is not on screen.
More…
- The watcher reuses the addresses it already worked out. - **Fewer round trips**: the coins of all your addresses are asked for in one batch. - **Smoother scans**: the scan's progress is drawn at most every 300 ms. The Lightning tab only follows the chain height. - **Smaller**: the Tor engine has its symbols stripped and the images are WebP. The APK is 42.4 MB. ### Fixed - **RECEIVE follows the wallet**: switching between HOT and WATCH with RECEIVE open now shows an unused address of the wallet you switched to, instead of keeping the other one's. Signed APK SHA-256: `dd7a197e877c0981be0207e9ace57af0a474768ce2a94b321ee3de80d03c5a6b` Unsigned (reproducible) SHA-256: `928b1c3d4d3d325fb8e4a23be9b66e55ce9f55b272e99a313ba63fa50b3af60e` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Tor engine: Arti 2.7.0, libarti.so SHA-256 `593badad3adc2825153546757fd92e120916bd02c5c012cd6c1bcf319ba09d05` - Oct 19, 2026 1.1.6## Kilowallet 1.1.6 ### Changed - **Tor 0.4.9.14** (tor-android, from 0.4.9.5): eight months of Tor fixes, security ones included. Tor's own log still goes into crash reports. - Built with Android Gradle Plugin 9.4.1, Gradle 9.8.1 and compileSdk 37.1 (needed by the new Tor). The app still targets Android 15 (targetSdk 35) and runs from Android 8. README-REPRODUCIBLE lists the new toolchain. Tested on a phone (Lightning over the new Tor) and on the emulator; all 137 unit tests pass. Everything in 1.1.5 (Kilojoin v3, splicing, SPEED UP).
More…
Signed APK SHA-256: `20387e01aab32438d5b5f78888f973bee7488a6239f608ba0ee50a1c6f31c18b` Unsigned (reproducible) SHA-256: `3d17d99b69ba6479a9460c6386284e6c27ed9052513ec19296add7b3fca11a6a` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 18, 2026 1.1.5## Kilowallet 1.1.5 ### Added - **Kilojoin v3: blind outputs.** Every pool this version opens is v3. When a round closes, each member's mixed output is signed blindly by the pool's creator (RSA blind signatures, RFC 9474) and handed in from a fresh key over a connection of its own; the creator lists all outputs at once. Neither the relay, nor the other members, nor the creator can tell whose output is whose. Only the creator's own key runs the pool, votes and leaving are proven with a code tied to each seat, and every member checks every seat's coins against the chain. Protocol: https://github.com/Kilombino/kilojoin/blob/master/docs/PROTOCOL.md#11-kilojoin-v3-kilowallet-115-kilojoin-07 - **Splicing: RESIZE a Lightning channel** without closing it. Add sats from the node's on-chain coins, or take part of your side out to any address. The node prices it exactly first, and the channel keeps working while the resize confirms. - **SPEED UP (CPFP)** for a channel opening, an on-chain payment from the node and a resize, not only a cooperative close; and in Ark, for a deposit transaction still in the mempool. ### Changed - Lightning engine on Lightning Fork 0.21.4-blake2b.21 (neutrino upstream, splicing on). - A default peer that answered header requests with nothing (and stalled the first sync) is out of the list.
More…
- v1 and v2 coinjoin pools still join as before. Wallets on 1.1.4 or older don't list v3 pools until they update. Tested on mainnet: a channel opened, resized +20,000 and −15,000, then closed cooperatively. Kilojoin v3 tested end to end with three wallets on a BLAKE2b regtest node over the live relay. Signed APK SHA-256: `be3f3b348835bbe5bf0bda405a9abdcee19824497d9a60abd9d8e4279e8f770c` Unsigned (reproducible) SHA-256: `a631ff601b512d57742415d8bb5eaff9f08bb69c373f5aec9d23abe740d7de48` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 18, 2026 1.1.4## Kilowallet 1.1.4 Lightning and Ark now belong clearly to your wallet's words, coin control for moving into Ark, fixed colours per part of the wallet, recovery words in two columns, a widget that asks before opening anything, and the fixes from an external review. ### Added - **Coin control when moving into Ark**: tick the deposit coins that fund MOVE INTO ARK; the network fee is worked out exactly by the Ark engine. - **Choose the network fee** (slow / normal / fast, or any sat/vB from 0.1) when sending from the Ark on-chain deposit, with or without chosen coins. - **Lightning: SPEED UP a cooperative close** stuck on a low fee (a child transaction from the node's own output, CPFP). - **Lightning warns when the node is not made from this wallet's words** (moved in from a phone with another wallet, or a wallet changed after Lightning was turned on): its coins come back only with its own words. - **Widget**: each figure opens where it can be checked (the exchange for prices, the explorer for the chain and YSH, MiningRigRentals for rental prices), and every tap first says what it is about to open.
More…
### Changed - **Ark gets its own words**, derived one-way from your wallet's words: your written words still restore both, but what Ark keeps without the fingerprint opens Ark only. Restoring Ark from your words asks whether it was made before 1.1.4. Ark wallets made before keep working. - **Forgetting or replacing the wallet also removes its Lightning node and Ark wallet**, and is refused while a channel is open, opening or closing, or while a node of other words still holds coins. - **An Ark wallet restored from a backup file waits** until you tap TURN ON ARK, then tells you once what it found. - **The backup file** is saved from right above switching and forgetting the wallet. - **Fixed colours**: BTC orange, Lightning gold, coinjoin blue, Ark red, Spamcoin grey. The colour setting is gone. - **Recovery words in two columns read top to bottom** (1–6 | 7–12, 1–12 | 13–24) when shown, created and restored. - **Coinjoin**: a pool whose perfect coin is being prepared leaves POOLS at once. - Lightning shows "– sats" while the node is still checking its coins. - Lightning on-chain fees above 100 sat/vB, and moving into Ark above 100 sat/vB, need a second "yes". The routing-fee minimum can't be set above 1,000 sats. - The crash report is shown before sharing, with server names blanked out, and carries Tor's own log. - Restoring a backup no longer sets servers, pinned certificates, explorers or RPC connections. ### Fixed - **Recovery words are never translated** ("receive", "change", "save"… are seed words, not buttons). - **Lightning**: the inbound-channel fee is checked on your node before paying; hold invoices that could keep a payment for more than 2016 blocks are refused; "Delete this node" stays off while a channel is still closing. - **Bridge**: a payment the bridge already has is no longer reported as "Nothing was charged". - **Coinjoin**: a conflicting broadcast is no longer taken for success; a round whose transaction never appears is let go after 12 hours; Telegram alerts never go over the clear net on a phone with Tor; perfect-coin keys are removed when a waiting coin ages out. - **Ark**: costs are checked again right before sending; old movements no longer alert again after a restart; a long note no longer squeezes the balance; the activity's running balance skips the deposit's on-chain transactions. - **Your node by RPC**: a transaction must hash to the id asked for; plain http only on your own network or a .onion. - **Speed up (CPFP)**: the parent's size is bounded by its inputs, and a parent spending unconfirmed coins is refused. - **Fees**: Taproot inputs are counted at 57.75 vB, and each output type has its own dust limit. - The dice screen is protected from screenshots and screen recording. Signed APK SHA-256: `06f5735c709d223eaafaf5d18bdb9210355911a13f6846666fbd0587144c480f` Unsigned (reproducible) SHA-256: `c6bac16cfb25d2f7e8c5e297cc257d014ae152f5bb43ddb568cc51e2108f3ca3` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine: `b792644`, libkilombino_ark.so SHA-256 `be602eac5b93ecea7d7013a6e8ddc4e393b8d49371bf61442eb43549250d985f` - Oct 18, 2026 1.1.3## Kilowallet 1.1.3 Fixes from an external review of the desktop app, in the code it shares with the phone, and a quicker, spam-proof way to pay SHA-256 invoices through Kilombino's bridge. ### Fixed - **Perfect coin**: joining a pool on its own now refuses a pool whose terms changed after you chose it (its key, amount, fee, kind or size), or that is no longer open. It tells you, and the coin waits for you in COINJOIN. - **Payment proofs below the checkpoint**: a block's header must carry exactly the difficulty of its 2016-block period (a table from Kilombino's node), not just any work above a floor, and a BLAKE2b header its own height. Proofs made under the old rule are made again once. - **A payment that first turns up in an old block** (below the checkpoint) after the wallet's first look is shown as not proven: that is what a lying server faking a payment would show. - **A network failure** no longer marks every payment as not proven; proofs already made stay proven. - **Chain reorganisations** are checked on a copy and kept only if they verify and carry more work.
More…
- **Sending**: the coinjoin lock is checked again right before signing, so a coin a pool started signing meanwhile is not spent. - **Native ECDH and key tweaks**: a stronger self-test (random full-size keys), and secret buffers are wiped. - **Paying through the bridge is quick**: the app asks the bridge over https, like its web page, so the price comes back at once (over Tor to its onion only when Tor is already running, with https as the fallback). ### Changed - **Your node's RPC passwords** are stored encrypted with a key of the app's own in the system keystore. Backups still carry them, inside the backup's encryption. - **The crash report** is kept apart and never goes into a backup. - **The bridge's proof of work**: each quote carries a small anti-spam check (a few seconds at most), which keeps one person from taking every quote the bridge can hold. The final-price step says so. Signed APK SHA-256: `8016674119ec522e0912e41b2151186762080b3d86131f6efe9f97948662c2ea` Unsigned (reproducible) SHA-256: `efbc5ac7a8ed68dab1e91958763e80ae70cf5c2fb097dc2b9edf1137ef49b7ee` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine: `8dfba1b`, libkilombino_ark.so SHA-256 `2712fb3486bc010725d6800ad652f23fd3ad0a05c139d0ddbb63293921592020` - Oct 17, 2026 1.1.2## Kilowallet 1.1.2 ### Added - **Network difficulty in the widget.** The current difficulty with the change at the last retarget, the previous period's value (large widget), and the difficulty expected at the next retarget with its estimated change and the blocks left. Large widget: `5.09 G ▲10.0% prev 4.63 G`, then the estimate; medium widget, in one row: `5.09 G ▲10.0% → ~5.93 G ▲16.6%`. Changes are colored like the price changes. The values come from new fields of the mempool.kilombino.com widget endpoint; with a server that doesn't send them yet, the rows stay hidden. Signed APK SHA-256: `6c377c9fd2d026ce88af599e47b2af0765eede79a42fe87329762f263df3a663` Unsigned (reproducible) SHA-256: `0de618edbf18b765a32a3d1d06aac102ae155b0286b2396e056343c417939e18` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
Ark engine: `8dfba1b`, libkilombino_ark.so SHA-256 `2712fb3486bc010725d6800ad652f23fd3ad0a05c139d0ddbb63293921592020` - Oct 16, 2026 1.1.1## Kilowallet 1.1.1 ### Fixed - **"not proven" on every movement with some servers.** The app spoke Electrum protocol 1.4, and Shulcrum 2.1 sends BLAKE2b's 164-byte headers in batches only on protocol 1.6 or higher, so the header chain could not be checked and every movement was marked "not proven" (the transactions were fine). The app now agrees on 1.4 to 1.6 with each server, which picks the highest it knows. Checked against Shulcrum 2.1.2, Frigate 1.6.1, ElectrumX and electrs. Signed APK SHA-256: `0ef41eb518c0e79807f4253c8dca48bede2479cabb138a81df4b0151d2c188b9` Unsigned (reproducible) SHA-256: `16d659d1f7351d930f0c473fbbf735b9d0fa6b3d114bb9575312bf6f6acb6eb8` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine: `8dfba1b`, libkilombino_ark.so SHA-256 `2712fb3486bc010725d6800ad652f23fd3ad0a05c139d0ddbb63293921592020`
- Oct 15, 2026 1.1.0## Kilowallet 1.1.0 ### Added - **The app in eight languages:** Español, English, 中文, Français, Italiano, Deutsch, Català and Português. By default it follows the phone's language (English when it is one the app doesn't have); Settings → Language fixes one. Every screen, notification and message is translated. - **BTC → addresses with balance:** coins that came out of a coinjoin are marked 🌀 mixed, and coins seated in a pool still waiting for people say so (sending one leaves that pool). Also in an address's details. ### Changed - **A top bar that fits every language:** 🔥 HOT | 👁 WATCH and ⚙ for settings; ⏻ and the logo always stay on screen. - The node RPC buttons wrap onto a second line when the words are longer.
More…
Signed APK SHA-256: `ef37dd8607abbf704e6aabe80389ca3824d2b2f6b62d0bd84a310363662cd676` Unsigned (reproducible) SHA-256: `25ea701986a26609092ee0c4827a211ecde421e7f0fff25b24ca033d5bbe784e` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine: `8dfba1b`, libkilombino_ark.so SHA-256 `2712fb3486bc010725d6800ad652f23fd3ad0a05c139d0ddbb63293921592020` - Oct 15, 2026 1.0.9## Kilowallet 1.0.9 Two fixes. ### Fixed - **Coinjoin:** a coin already seated in a pool that is still waiting for people was offered when joining another pool, and as a source for a perfect coin. Picking it spent it and dropped the first seat. It is no longer offered there; a normal send can still use it (and leaves that pool), as in 1.0.8. - **BTC SPV:** transactions in blocks 961 640 to 967 679 showed "not proven: the server's proof failed" although they were valid. Those first BLAKE2b blocks have less work than the floor asked of blocks before the checkpoint, because the activation cut the difficulty. From the activation on, the header must now be a BLAKE2b one at no less than 0x1a00ffff (the easiest real block is 0x1a00f0b5). Signed APK SHA-256: `b8d04642ff19d6ea5932b686f52bbd23cd6ae51c33f7a1fc8b1504238e2b6735` Unsigned (reproducible) SHA-256: `57c53b1851f7f9c2167af80f9669c878c2d5849002c0336a66600af0138033a9`
More…
Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine: `8dfba1b`, libkilombino_ark.so SHA-256 `2712fb3486bc010725d6800ad652f23fd3ad0a05c139d0ddbb63293921592020` - Oct 15, 2026 1.0.8## Kilowallet 1.0.8 The open points of an external security review, full SPV on BTC, and fixes found in testing. ### Added - **SPV on BTC.** The app verifies the chain of block headers itself from a checkpoint built in: every header must link to the one before, carry its height, have exactly the difficulty the retarget rules give it, and meet it. Every confirmed transaction, received or sent, is proven against it, and so is every coin before it is signed; a server whose headers don't verify gets nothing signed. A transaction that fails its proof is marked. - **Ark cross-check.** The engine's chain source is held against your BTC server: its tip, and every on-chain transaction it calls confirmed, proven into its verified block. A disagreement shows on the Ark screen and in a notification. - **Spamchain → send:** *SPLIT THEM ON BTC FIRST* for coins from before the fork still unmoved on BTC: a send to yourself on BTC, so a spamchain spend can't be replayed onto your BTC. - **Receive:** ◀ PREVIOUS / NEXT ▶ among every unused address, the ones left behind your used ones included. - **Settings:** Colour (purple or blue); whether the crypto runs native (libsecp256k1) and how far the BTC headers are verified; the last crash report to copy.
More…
- **Crash reports** that say why, also for crashes inside native code (Android's own record, read field by field, plus native stderr). ### Changed - **Coins seated in a coinjoin pool still waiting for people can be spent:** they are marked, and the send gives up that seat once it is out. Only a round being built holds its coins. Coin control marks mixed coins. - **BTC, advanced and simple:** the coins by address first, the movements below. The scan status sits between the tabs and the balance. - **Coinjoin:** the JOIN tab is POOLS; each round in progress shows how long its current step has left (h:mm:ss). - **Backup files always have a password** (8 characters at least); older files still restore. - **Opening the watch-only wallet asks for your fingerprint.** Its coins and addresses (in derivation order) open with a tap: derivation, copy, explorer. - **LND rescue:** the SHA-256 lookup is unticked until you tick it. - ECDH and secret-key addition run in libsecp256k1 (engine 8dfba1b), checked against the Kotlin code at first use. ### Fixed - **GrapheneOS:** Lightning (LND) stopped the app with SIGABRT on Pixels where GrapheneOS tags app memory (MTE). Kilowallet opts out of memory tagging. - **Android 15:** the watcher and coinjoin services were cut after about 6 hours a day; they run as specialUse from Android 14. - **Sweep:** each coin's amount and script come from the transaction that made it (a legacy input doesn't commit to its amount); unconfirmed and immature coins are left out. - **Updater:** a release without its published hash is never installed from inside the app. - The coinjoin cards on the lock screen follow what the app shows (street mode, the eye). Signed APK SHA-256: `6369c8472be077d337270fa1114fc9bbc112fd360c07eb111a0fdd644f76e895` Unsigned (reproducible) SHA-256: `ed277b3ac55d89866cb2b3c43135e75a811c972c1ed835767100274b2f1e89fc` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine: `8dfba1b`, libkilombino_ark.so SHA-256 `2712fb3486bc010725d6800ad652f23fd3ad0a05c139d0ddbb63293921592020` - Oct 14, 2026 1.0.7## Kilowallet 1.0.7 ### Added - **Lightning → PAY: SHA-256 invoices, paid with BTC through Kilombino's bridge.** A Lightning invoice of the SHA-256 chain is no longer just refused: Kilowallet asks Kilombino's bridge (its onion over Tor when Tor is there, else bridge.kilombino.com) what paying it costs, and a dialog explains it: the invoice, about how many sats BTC you pay, the bridge's fee, the most it may come to if the price moves a little before paying (2 % above; more and nothing is paid) and the routing fee. Nothing is reserved until you press PAY. - Nobody holds your money: you pay a hold invoice with the same payment hash, which the bridge can only collect by paying the SHA-256 invoice; if it can't, your BTC comes back by itself. - Before a sat leaves, the bridge's invoice is checked on your own node: the same payment hash, Kilombino's node as destination, option_blake2b, no more than you accepted, and time enough left. The preimage that comes back is checked against the invoice's hash: it is the proof of payment. - Every refusal of the bridge (daily limit, liquidity, no reliable price, too small or large, already paid…) and every way a payment can end (price moved, invoice not payable, expired: your BTC back) is said in words. - **Lightning → open a channel with another node:** Nodex's logo, which opens nodex.kilombino.com to find one. Signed APK SHA-256: `80a981a2038eb84c20dff513cb28e13bbc96391848a08a3789ec59a27a8dfc1b`
More…
Unsigned (reproducible) SHA-256: `3f86aa471417d9595bcb97378b8cce1101e53981f99de561815cebc82067e1f4` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 14, 2026 1.0.6## Kilowallet 1.0.6 ### Fixed - **Settings → CHECK NOW** always answers. Pressed during a coinjoin round it did nothing: the newer release it found was held back until the round was over, and no message said so. It also said "you have the latest" when GitHub did not answer. Now it: - says it is checking; - offers a newer release even during a coinjoin round, saying that updating leaves the round (your coin stays where it is), or NOT NOW to update once it is over; - tells "you have the latest" apart from "could not reach GitHub"; - works with the periodic check switched off. ### Changed
More…
- **CHECK NOW** sits right under *Check for new versions*, the switch it belongs to. Signed APK SHA-256: `a669953e24210c53dccc134c3cc505ecaf1751c3813fd5d0f32ef720a7e2ec89` Unsigned (reproducible) SHA-256: `5f18fba62ff73d25d0dac72227427e4b6af9b8831d0129dece293df8db1084bb` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 14, 2026 1.0.5## Kilowallet 1.0.5 ### Fixed - **Coinjoin → IN PROGRESS**: a round whose pool's creator had gone (its app closed) could stay on screen for good, stuck at "Closing vote" even after the pool had expired. A vote is ended by its creator, and the pool's expiry was only checked while it was open. Now: - a vote also ends with the pool's expiry; - the others give up three minutes past the vote's deadline if the creator neither closed nor reopened it; - every member follows the pool's public listing, as the pool bot does: a creator that has not re-announced the pool for 35 minutes (it does every 10 while alive) is gone, and the round is let go, waiting for people, voting or joining. Such a round goes to HISTORY as "the pool expired" or "the pool's creator stopped answering". Your coin never left: nothing had been signed. Only the listing's age is used, never what it says, since the other members hold the pool key too.
More…
Signed APK SHA-256: `2452cf6612e0caa63b8eef7cecf291b0b8ff09ef8ac5f015981b338f7d41f935` Unsigned (reproducible) SHA-256: `f88bb1ffbc1d28fdd350f286977226da6f8ab6f7f751fc51f81f39e47f5ddf55` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 14, 2026 1.0.4## Kilowallet 1.0.4 ### Changed - **Lightning → PAY**: an invoice for Lightning on the SHA-256 chain (one without option_blake2b, feature 512/513) is said for what it is as soon as it is read: Kilowallet pays XBT Lightning invoices only, ask the recipient for an XBT one, and nothing was sent. The node's raw refusal ("invoice does not set option_blake2b") is put in the same words. Signed APK SHA-256: `39fecf57cefb416a63ac66d677cbbc7983854f1026426b12db7e118a7350133f` Unsigned (reproducible) SHA-256: `2a427e6fcb9659222a35e80a71afdcdfda15a15c99138eb809aca8bf8b9bf339` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
- Oct 14, 2026 1.0.3## Kilowallet 1.0.3: mixed coins you can tell apart ### Changed - **Coinjoin, mixed coins**: coins that came out of a round are marked "mixed" when you pick coins to join or open a pool and when you pay for the perfect coin. Putting a mixed coin in a seat with other coins, or paying for the perfect coin with it together with others, warns that it ties them back together. The automatic pick for the perfect coin still uses only coins that were never mixed. - **Lock screen**: the folded coinjoin card shows the amount and the people with the round's phase ("2/12 people", "3 people · signing", "confirmed") instead of "step 4 of 5", which the dots already show. ### Fixed - **Coinjoin**: a mixed coin stays marked for good. Rounds are dropped after a week or removed by hand, and with them the wallet forgot which coins came out of them. Each round's mixed output is now kept, and a coin the wallet does not remember (an old round, or a wallet restored from its words) is recognised from the transaction that made it: a Kilojoin round's shape, with every input signed with the unified sighash 0x21. - **Coinjoin, perfect coin**: it can be paid with any confirmed coin not in a round; the mixed ones were hidden.
More…
Signed APK SHA-256: `0f00f0160a5833c60cdaf9243cf28863e5d7ae775f95a0c60bd3f0c4786e464a` Unsigned (reproducible) SHA-256: `d488ea1cb66b2c24d1550d31e134792a4385a5be253600e0a4da7a71824f91d2` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 13, 2026 1.0.2## Kilowallet 1.0.2: the perfect coin goes on by itself ### Changed - **Coinjoin, perfect coin**: once sent, a window shows what went out (amount, txid to copy, explorer) and CLOSE takes you to the BTC tab. The pool no longer needs that screen open: the unlock that signed the payment to yourself also keeps the coin's key (encrypted with a Keystore key) and reserves the seat's addresses, so at its first confirmation the coinjoin service joins the pool, or opens the one you were setting up, by itself and the round runs on its own, with no second fingerprint. Meanwhile IN PROGRESS shows it waiting, with "don't join, keep the coin". ### Fixed - **Lock screen**: the coinjoin cards lead with the people ("2/5 people · waiting for more"; folded: "N sats each · 2/5 people"). "Step 1 of 5" read as one person of five when the line was cut short; the dots show the step. The app's card says "step 1/5". Signed APK SHA-256: `ab7dafedd888400a3c827366ac354b770096670d8873cfea112f58053ee14c5e` Unsigned (reproducible) SHA-256: `cc9ead991b2fc3c776006d7cc207e2337bce2446b5835780f5c87844f626533d`
More…
Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 13, 2026 1.0.1## Kilowallet 1.0.1: coinjoin you can follow ### Added - **Coinjoin on the lock screen**: one silent card per round with "N sats each", its step ("Step 1 of 5 · Waiting for people"), the bar of its five steps, where your coin is and the countdown to its close. A round going stays on the lock screen; the last card of one that ended ("Done · Confirmed", or cancelled) can be swiped away. Amounts show as ••• while street mode is the default. - **RECEIVE** (BTC, FUND, INVOICE, Ark): a tap on the address or its QR copies it; COPY says COPIED ✓. ### Changed - **COINJOIN** has three tabs, JOIN · IN PROGRESS (n) · HISTORY; a round going opens on IN PROGRESS. Each round is a compact card with the bar of its five steps (people, closing vote, signatures, sent, confirmed), what is happening and where your coin is ("still in your wallet", "left in the group transaction"). Tap it for the whole card and its buttons; it opens by itself when the round waits on you. Signed APK SHA-256: `757e30be0f982aa0a0e92db84e42a151b27ad347bf49c4da1bd2e665168843c2`
More…
Unsigned (reproducible) SHA-256: `482748a119c8ccc02b25237c72d96967c20de2eb330c4a05c1f0d301672b8f61` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Lightning engine (libgojni.so, arm64) SHA-256: `19be4b51e02adf523c79158446b892a2f20a3d80d6fa8a708e5fb9d5da848ced` Ark engine (libkilombino_ark.so) SHA-256: `d8729841040699efbbbfb8cf29da9ac6d2dfceb30ab11523642514174d3387e8` - Oct 13, 2026 1.0.0## Kilowallet 1.0.0: Lightning ### Added - **LIGHTNING tab** (advanced mode, hot wallet): your own Lightning node on the phone, LND with neutrino. It follows the chain itself from compact block filters, checks the proof of work and keeps channels and keys on this phone. Self-custodial; the keys come from your recovery words. - ⛓ **FUND**: the node's address, its coins and on-chain movements with what was left after each; incoming payments show at 0 confirmations with a push alert. - 🤝 **CHANNEL**: private channels with any node. **Coin control**: every ticked coin is spent, the rest comes back as one coin, so opening a channel consolidates your coins. - ⚡ **INVOICE**: QR, a "Paid!" animation, the invoices paid to you. - 📤 **PAY**: camera for invoices and addresses, pay through a chosen channel, routing fee limit, and pay on-chain from the node with coin control. - **Channels**: funding and closing transactions with the explorer; close one or several (to your BTC wallet with a fresh address each, the node or an address); force close for a peer that is gone. - **Inbound liquidity on request** from Kilombino's node (lsp.kilombino.com): private channels of 1–50 million sats, 5,000 sats per million, kept open at least 90 days. The fee is a hold invoice, taken only once the channel is out.
More…
- **Settings** (the settings button on this tab): node name, routing fee limit, connect to a node, node log, export SCB, restore channels from an SCB, **move the node to another phone with its channels open**, delete an empty node. - Kilombino's watchtower over Tor; the backup file carries the channel backup. - **Coinjoin**: one fingerprint per pool. With "Run the round on its own" (on by default) the round accepts closing and signs by itself, also after the app is closed and opened again (its coin keys are kept encrypted until the round ends). After making the exact coin, the pool goes on by itself at its first confirmation. - **Widget**: refreshes every 5 minutes, with a countdown. ### Changed - Tabs in the order ⛓ BTC · ⚡ LIGHTNING · 🌀 COINJOIN · ⛵ ARK. - Switches show on and off clearly. ### Fixed - Coinjoin: a round closed with fewer people than the pool's minimum is left, not signed. - The Lightning node starts again after the app or the phone was killed mid-write. Signed APK SHA-256: `2dd6eed4982014c346f138ad7897c768cd6f7c597f037de51581e2a1ccf5e72b` Unsigned (reproducible) SHA-256: `d8e8f1f1d3f28d859c39ec96955adad45ae5fdacdb9926a86447300bcc35b939` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Lightning engine (libgojni.so, arm64) SHA-256: `19be4b51e02adf523c79158446b892a2f20a3d80d6fa8a708e5fb9d5da848ced` (Kilombino/lnd neutrino-blake2b 7a8ca829e) Ark engine (libkilombino_ark.so) SHA-256: `d8729841040699efbbbfb8cf29da9ac6d2dfceb30ab11523642514174d3387e8` - Oct 12, 2026 0.27.3### Added - Ark: LOOK FOR MISSING COINS. The wallet reads the server's recovery records of every coin these words were given, brings in the coins this phone never recorded (a renewal round that finished on the server after the app lost track of it) and marks as spent the ones the server says are gone. It also runs by itself when a renewal finds every chosen coin already spent. ### Changed - Coinjoin: finished pools fold away at the bottom of the list, with remove and remove all. - Ark: a pending withdrawal shows its confirmations ("sent, in the mempool · 0/2 conf") instead of only "pending". - Ark: coins the server refuses explain why and what to do. ### Fixed - Ark: an emergency exit whose coin the server had already swept no longer retries every minute forever; it ends (engine fix in the chain source scan).
More…
- Ark: every RENEW retries coins set aside by an earlier failed round; the chain check no longer raises a false alarm from a stale height. - BTC tab: in "addresses with balance", confirmations update as soon as a coin confirms and on each block, like in movements. Signed APK SHA-256: `1e3012b51b8a1c16be0d7d1caa2f61255e2d3885dd60ffd333273cce05177708` Unsigned (reproducible) SHA-256: `daacd0336fbad99765201b65f9d9cb07da87e676cbf5f0f2d43b71f8d14cb1a8` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d8729841040699efbbbfb8cf29da9ac6d2dfceb30ab11523642514174d3387e8` (Kilombino/paperclip-wallet-app d26bd96) - Oct 11, 2026 0.27.2### Added - Coinjoin on its own: "Run the round on its own" (on by default, on the COINJOIN tab and in settings) needs your fingerprint once, when you join or open a pool. After that the wallet accepts a request to close, asks to close by itself when the pool has enough people and less than an hour left, and signs once it has checked that the transaction pays your exact output and your change at your share of the fee. If anything is off it does not sign and tells you. The keys of those coins stay in memory only until the round ends. A pool you are already in can be switched with "let it run on its own". - ALLOW for background running: where Android could pause the wallet, one tap opens Android's own window to let it run, so a coinjoin round keeps going with the phone put away. - Settings → Refresh: how often to look while the app is open (30 s, 1 min, 5 min or by hand; 5 min by default) and with the app closed (off, 5, 10, 15, 30 or 60 min; 15 by default). Off means no background service, no persistent notification and no battery used while closed. - Settings → Full rescan: asks about every address again, in case someone pays to an old one. It also runs by itself once a day. - The power button next to the logo closes Kilowallet for real: services, notification and process stop until you open it again. ### Changed - The app opens on the last known balance, addresses and movements, marked as last known while it checks behind them (or "not checked yet" without a connection). - Much faster refreshes: addresses that are spent and settled (nothing left, everything 6+ blocks deep) are left out of quick looks, the rest are asked about in batches, addresses already worked out are remembered, and the key math goes through libsecp256k1. Wallet transactions are kept on the phone once downloaded.
More…
- The backup file also carries the last balances, movements and address statuses, so a restored phone opens on them and its first check goes faster. Every address is still checked. - Pull down to refresh; the separate refresh button is gone. ### Fixed - Coinjoin, exact coin: every ticked coin goes into the payment (it used to stop at the first one that covered the amount). - The public pool listing and the @coinjoinpool group now show "closing" and "done" even when a member, not the pool's creator, sends the transaction. - The keyboard no longer covers text fields such as a custom fee. Signed APK SHA-256: `be201c27552d0564a00c150bb5f7e3622ad39212e3ffef04eb88f63656fda5e3` Unsigned (reproducible) SHA-256: `9161af2e5db1859ae19a85b02fc33d19bbc9c2481f75df208845adb79ea3862c` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 11, 2026 0.27.1### Added - Dice check, as on Coldcard: rolls that look made up by hand (some numbers far more often than others, hardly any repeats, the same key again and again, walking up and down the keypad, a short pattern over and over) get a warning before they become a seed, with ROLL AGAIN or I ROLLED REAL DICE. Real dice trip it about once in a thousand seeds. ### Changed - A new seed is made from dice only (or your Ark words): the shortcut to the phone's randomness is gone, as dice are the safer source. - SWITCH / NEW WALLET now asks first, like "forget this wallet": another spending wallet replaces this one's seed on the phone, so you confirm that your recovery words are written down. - Both warnings say how to keep your wallet safe. Recovery words on paper are always the best backup. If you use Ark, also save a backup file (settings → Backup file): it keeps your Ark wallet, its on-chain coins and emergency exits, nodes, contacts and coinjoin rounds. The file is a help, not a replacement for the words on paper. ### Fixed - New wallet with dice: each die lights up with a small haptic tick when tapped, and a line shows your last rolls. Undo and clear sit well below the dice, and "clear all" asks first.
More…
Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `f423c8304dbad5bf23f42d64df52de7d2cf241664d0324096299367848b0d3ab` Unsigned (reproducible) SHA-256: `4847ee8850d1c9c9f68342631cc3892721c07c54f400df62abc27245cc65dc39` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 11, 2026 0.27.0### Added - Taproot in the hot wallet. Settings → "Address type for new addresses": Native SegWit (bc1q, BIP84) or Taproot (bc1p, BIP86). - Both accounts are always scanned and spent from, so switching never hides a coin, and one send can mix bc1q and bc1p coins. - On BTC, Taproot coins are signed with the unified sighash (0x21): the spend can't be replayed on the spamchain. - A wallet made before this version needs your fingerprint once to work out its Taproot account; silent payments work from Taproot coins too. - Coinjoin, Kilojoin v2: - Taproot pools: when opening a pool, choose Native SegWit (bc1q) or Taproot (bc1p). A pool takes coins of its own type only, and every mixed output and change in it is of that type too. - Several coins per person: the creator sets "most coins per person" (1 to 10), and you tick the coins you need. Each person pays the fee for their own inputs. - Before joining with a coin that would leave change, a window offers to make the perfect coin first (exact amount, no change). - The perfect coin is paid with the coins you tick in its coin control (bc1q and bc1p together if you like), at the fee you choose, and is always of the pool's type.
More…
- The send review shows the change address (start…end). - After a send: COPY TXID, and tapping the txid opens the transaction window (copy, or open it on the explorer). ### Changed - Coins and coin control show each coin's address instead of txid:vout. Tapping a coin opens its address, to copy it or look it up on the explorer. - Fees count a Taproot coin as 57.75 vB (bc1q: 68 vB). - A native SegWit pool of one coin each is still a v1 pool, so older Kilowallet versions and Kilojoin on StartOS can join it. Taproot pools and pools with several coins each are v2. ### Fixed - When a pool's creator checks a joiner's coins through its own node (RPC), it now checks each coin's script too, not just its value. Tested on mainnet (a Taproot coin received and spent with the unified sighash, 168b5780…895f43) and, for coinjoin, on a BLAKE2b regtest node over relay.kilombino.com: a Taproot pool with several coins per person and a native SegWit coin passed off as Taproot refused, and a v1 pool. Both rounds were signed and mined. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `9eefb777d8708636cb1a93380589b3a67a7e482e55196e93c506db7703f6a888` Unsigned (reproducible) SHA-256: `e8bf16732771f55ba1f7a256faeb74e69efc6eb63ec21e4f1c1961c570f18872` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 11, 2026 0.26.3### Fixed - The app could freeze ("isn't responding: wait or close") with coinjoin pools running, and when joining or opening a pool. Since 0.26.1 the screens worked out the addresses held by pools over and over on the main thread; they are now looked up once and cached. The seed and keys for a seat are worked out in the background. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `3326ffba8807b44b2792e8a9423355924cdc5b48f38023bc60a7adc003f849b1` Unsigned (reproducible) SHA-256: `604c00113048a921609a08b56e71b9b8b81c1e39d7b338c12f48d49d08f6bcfc` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 10, 2026 0.26.2### Fixed - Android 17: opening the app showed a crash report ("startForegroundService() not allowed") although nothing had closed. The background watcher now starts once the screen is open, and a refusal from Android no longer raises an error; it is tried again the next time. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `12f613b969541416daaa05cd7e769a3d6cd8b1d8a108b20af60a6c05b01fec0d` Unsigned (reproducible) SHA-256: `103928fb832c9e7d5d7f51cf2f732399b7151e13cb60ecc6a4fbba64b41686f6` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 10, 2026 0.26.1### Added - Coinjoin: ASK TO CLOSE NOW asks first, saying what comes next: the others have 10 minutes to accept, whoever does not answer is left out of the round, then you sign, so keep the app open until it is sent. - Telegram alerts: the bot also tells you when you are the one who asks to close. ### Changed - Coinjoin: END POOL is now CANCEL POOL, and its confirmation says "Cancel this pool?". - Coinjoin: a pool's two addresses (mixed output and change) are held by the pool while it runs, not marked used. A pool cancelled before your output was posted gives them back, so cancelled pools leave no gaps in your addresses. A coin of exactly the pool's amount holds no change address at all. Video tutorial: https://kilombino.com/kilowallet/
More…
Signed APK SHA-256: `d24c081a3b68d053679e9ec0cc19e9c3e4d8c95f2b3e1602cf5d8d40893817fe` Unsigned (reproducible) SHA-256: `972d82f00476b67fced1e40a062ee9f1af1c55f09f069aeb4c4af421cd550408` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 10, 2026 0.26.0### Added - Coinjoin: a notification when a pool you are in (yours or one you joined) has under an hour left and already enough people to close: ask to close before it expires. If you are alone in it, nothing. - BTC tab (advanced and simple): pulling down, and the refresh every 30 seconds, now show what they are checking ("refreshing · receive m/84'/0'/0'/0/25 · 26 checked"), and the spinner waits for it to finish. - Telegram alerts: CANCEL while waiting for you to press Start in the bot. ### Changed - OPEN A POOL starts at 1 sat/vB. - The open pools reload every minute while the Coinjoin tab is open, and a failed look keeps the list instead of emptying it. - Only one refresh per chain at a time (on a slow server they could pile up).
More…
### Fixed - Coinjoin: once a round is called, the pool's announcement counts only the people in the round (someone who stayed silent in the vote showed as one more). - Telegram alerts stayed on "waiting" after pressing Start in the bot, when the app talked to it over Tor. - Ark: the expiry warning said "0 days" when there were hours left. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `b4088306e845feb0750d224a3fce0bdd37bd99b9597da1c1a0944e8c4640c8c7` Unsigned (reproducible) SHA-256: `0df03459b7e6bf9177df2c706074c30aa4d88e6834dc4432a33ab99a6886f785` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 9, 2026 0.25.0### Added - Coinjoin: optional Telegram alerts for your own pools through @Coinjoinpoolbot. Turn it on in the Coinjoin tab, press Start in the bot, and every pool you create or join is followed step by step until it ends: someone joined or left (and how many of how many), someone asks to close, someone refused, round closed, your turn to sign, sent, confirmed, cancelled or expired. Each message says which pool it is (amount, fee rate, when it expires). - It is off by default and says what it costs before you turn it on: the bot's server learns that your Telegram account is in those pools (never which mixed output is yours). The app talks to it over Tor, and it forgets each pool when the pool ends. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `d62421ff556011ab1fbb6a4cbab4576068940e5be1b3cb0a4a4dcc2587824bb0` Unsigned (reproducible) SHA-256: `e8124eef4295a1959e0039236eed1367f60f40ec6ce6c3c3893744607d728492` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 8, 2026 0.24.3### Fixed - Coinjoin: a pool created from a wallet connected to its own node by RPC turned down everyone who tried to join ("that coin is not unspent on the chain"). It now checks other people's coins with the node's `gettxout`. - Coinjoin: a coin that covers a pool's amount but not its fee (an exact coin made for a pool at a lower rate) is now listed, greyed out, with how many sats it is short, instead of disappearing. ### Changed - BTC tab: the address list shows only the addresses that hold coins, with each one's confirmations. Tap an address to copy it or open it on the explorer. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `61d8d472b25329334f7bba61493c8ece45641a9fb00b30ad1c420efbd4485ea5`
More…
Unsigned (reproducible) SHA-256: `b56d79c5556b3acbe285c62dae39226f97c3ae55d1efc8e68002004f1633728b` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 8, 2026 0.24.2### Fixed - After a send, the app could freeze ("Kilowallet isn't responding") while offering to save the address as a contact, with the name dialog stuck on screen. On wallets with many used addresses, the check for whether the destination is one of your own addresses ran on the screen's thread at every redraw. It now runs once, in the background. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `e8df529d841da63189904e98c492e86abcb3f48de39ee5ac35644fc8a23f24df` Unsigned (reproducible) SHA-256: `0b3fb2226eeed46f15193624fe48ed1fe27e72c87c5d0159658c099d866d713f` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 8, 2026 0.24.1### Fixed - RPC to a node on StartOS: its https address (with StartOS's own certificate) now works. TEST shows the certificate's fingerprint and ADD trusts that certificate, and only that one: if it ever changes, nothing is sent. - A .onion reached on the wrong port now says so (copy the full address, port included, from the node's RPC interface). Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `080ea74d4c1f2916b6b9e04142cd484cb2378bbbf3922f13ac58fd65f7c4a2bc` Unsigned (reproducible) SHA-256: `b47217884e8de1c045acf620ed1ba8079b42bef085c5cc0fa563f7091a2afc2d` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 8, 2026 0.24.0### Added - Connect to your own Bitcoin node (Knots with BLAKE2b) by RPC, no Electrum server needed: Settings → BTC node & explorer → "Or your own node by RPC", or from the One person, one node reminder. Add one or more ways to reach it (home, a .onion from outside), tried in order; fill them in or scan a QR (http://user:pass@host:port), and TEST shows the node version, height and whether it is on BLAKE2b. The node gets a watch-only wallet for the account (public key only); your keys stay on the phone. - Tor built into the app (tor-android): a .onion connection works without Orbot. ### Changed - The release build now fails on any call that does not exist on older Android versions. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `fb3192b5a16791128b1442acb16f66c0aba768e645348d3545b9a663c63d17ff`
More…
Unsigned (reproducible) SHA-256: `e483043932719c9884c0547985037d51d62e28c82d31f1968ea8a98547a859b7` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 8, 2026 0.23.2### Fixed - The app closed right after creating or opening a wallet on Android 8 to 12: it used a Java constant that only exists from Android 13. ### Added - If the app ever closes on an error, the next time it opens it offers to share a crash report (where the code failed, app version, phone model; no words, keys or addresses). Nothing is sent unless you choose to. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `9884d8f031d29b6225d1d971256c65a750fa52503f9d964d7a69ab2ad463f46f` Unsigned (reproducible) SHA-256: `e2727af63a3f1182d1d24df7b58c534372682d8b11cb459d4862f129796580b2`
More…
Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 8, 2026 0.23.1### Added - When creating a wallet, CHECK MY WORDS FIRST (optional) asks three of the words back before it is created. ### Fixed - Forgetting a wallet asks first. For a hot wallet it explains that the seed is deleted from the phone, asks you to confirm you have the recovery words and then your fingerprint. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `0def8c41cb0be8d6ee958221922fc5657cee3a18a68cfc63e8aa267899b8caf6` Unsigned (reproducible) SHA-256: `cd9d9ad2e35d5bcb8ebcc03f061adb38dc7c4c8ab0667216dafc974e17540680`
More…
Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 8, 2026 0.23.0### Added - Speed up a stuck payment someone sent you (CPFP): on an unconfirmed incoming movement, SPEED UP spends what it brought you back to yourself with a fee sized so both together pay the rate you choose. - Street mode setting: on by default (amounts hidden each time the app opens); turning it off asks for your fingerprint. - CHECK NOW in settings asks for a new version, even one you answered NOT NOW. ### Changed - A fee above 100 sat/vB, above 100 000 sats or above 5% of the amount needs a second, explicit confirmation before signing. - Before a send, each coin is checked against the transaction that created it (amount and address). - The update prompt waits until no send, speed-up, Ark send or coinjoin round is open. After an update a notification says the new version is in. - Lightning invoice cost shown as a share of the total.
More…
### Fixed - If Android deleted the wallet key (screen lock changed), signing now says so instead of doing nothing. - Your own Ark deposit address is no longer offered as a new contact. - "1 confirmation" (singular); on x86 devices the Ark tab explains it needs an ARM phone. Video tutorial: https://kilombino.com/kilowallet/ Signed APK SHA-256: `adda7c55b13581facc114971090d365db8cf2340d63e9db04a43ef0ab83db54e` Unsigned (reproducible) SHA-256: `c897fe9eb0806be07b1bba7917ce9fb308ceac80e944fbda24f0f365a3d44dbc` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077` - Oct 7, 2026 0.22.1### Fixed - Coinjoin: a pool whose creator has closed the app no longer shows as open. The creator re-announces an open pool every 10 minutes, and pools silent for 35 minutes are not listed. Signed APK SHA-256: `dd64e2ad81828e9d0343b80f29dbca16f1baf3a738856eb4319bb12b9ca46868` Unsigned (reproducible) SHA-256: `f2affc8efc52d7bb38e64256683e5fffde2cc65dcbb053862bc0ff5b58a64b90` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 7, 2026 0.22.0### Added - Watch-only wallets can send BTC: review the payment, export a PSBT (QR, copy or file), sign it on a separate signer such as Bitcoin Knots, and bring it back (paste, QR or file). Only the same transaction is accepted, every signature is checked on the phone, and it must use the BLAKE2b unified sighash (0x21), so it cannot be replayed on the spamchain. SegWit (bc1q), nested SegWit and Taproot (bc1p) accounts. Signed APK SHA-256: `c53fb985fda5214c1d0d03d6717c6c5bca8137d336cea0e2cdc8e22f2bcd74a0` Unsigned (reproducible) SHA-256: `50cc73db9fdc255770b7d30f35dac4133f402df8d7a90a81d668a05098de1dd0` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 7, 2026 0.21.1### Fixed - Coinjoin: a request to join a pool can be cancelled, and gives up by itself if the pool does not answer in 5 minutes. Signed APK SHA-256: `34c7353e5bee04787e9b7daf4472cb1a29ac1ac00c702a06d610c6da4101961d` Unsigned (reproducible) SHA-256: `fba18971d24771a33d57d2c428f6ca8d418eeda7d762d98ea73ef262f04f601e` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 7, 2026 0.21.0### Fixed - Security updates. Updating is recommended. Signed APK SHA-256: `aa9f9592623c8e6609d70d197fae9d577a69b4fb69ef825b2b036e9e383dc8f4` Unsigned (reproducible) SHA-256: `1ef199d2a885073913a0fbc9d8cf4c2c25096bfcbd1f9d043bad3797486ff69d` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `d3e768190e4741d116c5719a6402b3a4ab3fab7e5759e9feebec81d256a6f077`
- Oct 7, 2026 0.20.7### Fixed - Security updates. Updating is recommended. Signed APK SHA-256: `6880fe3733f4d9e9866b1002f1fad51f24c6248ea302e2890adef0668fcdb23d` Unsigned (reproducible) SHA-256: `09e183c4b87fcb4bc51c32ae3e2fd232ae3629b9f977d7aaa9d9d42abe01cac3` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `078a4ecbcb5b097d5f30561f3a57cf056c954b59db8d14b638e62a9c410bac57`
- Oct 7, 2026 0.20.6### Fixed - Security updates. Updating is recommended. Signed APK SHA-256: `db85edfa15dc85c6acfb14424dce1077367fad1b1c97a4da9e1596e9d566d081` Unsigned (reproducible) SHA-256: `22bf716855fa65c8941ab1a6a6c667a7070f2ed3b4a8b8d30f73ff18baef3d0a` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` Ark engine (libkilombino_ark.so) SHA-256: `44776c04e270e5a00d960940bb63c2dc1db7f8d617dfa5ba6b9282118bd9c5ef`
- Oct 7, 2026 0.20.5### Fixed - Security updates. Updating is recommended. Signed APK SHA-256: `b5daf5c5fa9b96a6a1c7fb6209cc18bed38c11c1bcd8ddcdd5eb865bc7e58f82` Unsigned (reproducible) SHA-256: `6f7f762dca196dc1d1c7d7aca78df2b7612ed980e62cd84e7fd99e9ff78e99a7` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
- Oct 7, 2026 0.20.4### Changed - Ark RENEW waits for the round. If the server refuses some coins as already spent (left over from an older wallet state, such as an old backup), those are set aside and the rest are renewed. - Coins the server says were already spent no longer count in the Ark balance; a note shows how much is left out, and the renew list marks them. - Under 3 days to an Ark coin's expiry, the warning repeats every 6 hours. ### Fixed - An emergency exit whose coin expired and was swept by the server shows as lost instead of pending forever. Signed APK SHA-256: `89edf708f897b993a76fa23f0236e2295b4944eac47e45b69d426dc5d301af6e` Unsigned (reproducible) SHA-256: `59ad5fa55c0690bffd993e63421f2416fae993b6a702762f5ef9a4e3a852cd36`
More…
Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 7, 2026 0.20.3### Added - Updates install from inside the app: the new release downloads with a progress bar, is checked against the SHA-256 published here and against the app's own signing certificate, and goes to Android's installer. Android asks to allow it once; from Android 12 on, later updates may install without asking. - The app looks for a new release every 5 minutes while open, and the background watcher notifies once per version. Signed APK SHA-256: `ff5c2defa60031ce91b734ee87522734500480199ea4aa7388faa503648b7f2a` Unsigned (reproducible) SHA-256: `207ed9a1163d3e1d186c4e82ce1a404b604ecc55c5fc350c197c51f2c17b2623` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
- Oct 7, 2026 0.20.2### Added - Under each movement, what was left afterwards: "(left: X sats)" in BTC, Spamcoin and Ark. A failed Ark movement says it changed nothing. - Ark: SHARE ENGINE LOG sends the end of the Ark engine's log, which says why a renewal or payment failed. Lines mentioning words, seed or passphrase are left out. ### Fixed - Ark: the "next coin expires" warning counted a coin already in an emergency exit (showing negative blocks); it now counts only spendable coins. Signed APK SHA-256: `8ce45cdae2633b40bfc8a6346a2f18ee8d6f17ff917bbf5e06c4fa4505b57624` Unsigned (reproducible) SHA-256: `75fd08668be14d9288bc7460e7501cf9e7798ed219a8e653af689713e2de0960` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
- Oct 7, 2026 0.20.1### Added - Coinjoin: END POOL / LEAVE also while a vote is open, and the card says until when you can answer. - Exact coin: your node suggests the fee for the payment to yourself, and you can change it before PREPARE. - Explorer prompt: a button to use Kilombino's explorer. ### Changed - Coinjoin: when the 10-minute vote runs out with too few yes, whoever did not answer is left out of the pool, so a silent wallet cannot hold it hostage. - Explorer prompt: the field starts empty, so you put your own. ### Fixed
More…
- The exact coin no longer pays the pool's fee rate for its own transaction. - Switching wallets during a refresh no longer files balances and notifications under the other wallet. Signed APK SHA-256: `1662093a5ab1ebd39ee8207ec1cdcefd99bca8fad03c3a5bc8d33a9179b5d999` Unsigned (reproducible) SHA-256: `60d57ed717fd7fb348ec60afed3b0d50fb32f50cb569212b8a5d6308caa3bd93` Certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Oct 7, 2026 0.20.0## Kilowallet 0.20.0 ### Added - Two wallets side by side: a hot wallet and a separate watch-only wallet (its own xpub, watched with its own notifications). Switch at the top; back to hot with the fingerprint. - Onboarding: HOT WALLET, WATCH-ONLY or the WIDGET. - Full backup file (.kab): words, settings, contacts, coinjoin rounds and Ark. "Restore from a backup file" brings everything back. - Ark and Coinjoin are opt-in, with an explainer; coinjoin pool notifications can be switched on and off. - Restore with 12/24 word boxes and BIP-39 suggestions. - Simple mode: settings, coins with confirmations, then movements; refresh countdown. - Show the xpub/zpub as a QR (fingerprint).
More…
- Update check against GitHub releases (can be switched off). - About screen (tap the logo). ### Changed - Recovery words moved to the end of settings. - Tapping a coin or movement asks once which external explorer to use, then remembers it. - Node & explorer folded in settings. ### Fixed - Spamcoin price used a stale pair (fixed on the server; Poolsats from Kraken and Neoxa USD prices). **SHA-256** `kilowallet-0.20.0.apk`: `60cbe1c3d5af50d7d1461f54b1ceb1dac978e43ca214c11b2753b219d94e92fa` Reproducible unsigned build: `8be24cdbff6f54436c34861c58a7206e2369b9207fd4efe3d55c4f7bb1983cd7` · signer certificate `b8d7ad67…c92ef135` - Oct 6, 2026 0.19.0## Added - **COINJOIN tab** (advanced): open or join coinjoin pools over relay.kilombino.com (10 000 sats to 1 BTC). Equal outputs, each person pays their own fee. Unified-sighash signatures, no replay onto the spamchain. Vote to close (min/max people, a "not yet" reopens the pool), private pools with a password, PREPARE AN EXACT COIN (no change), notifications for new pools, joins, votes, signing, sent and confirmed. - Send to several recipients in one BTC transaction (+ ADD RECIPIENT). - One person, one node: a reminder on opening and on manual refresh while using fulcrum.kilombino.com. The wallet does not connect until you choose. Own node for the spamchain too, and plain TCP for nodes on your local network. ## Changed - Tapping a notification opens its tab (BTC, Spamcoin, Ark, Coinjoin), refreshed. ## Fixed - "Received … confirmed" for a payment still in the mempool.
More…
- The background watcher missed addresses past the first 20. - No "save as contact" prompt when paying yourself. --- Signed APK SHA-256: `c82d49b32e0b3ca6fa5fdf72e43821c23ec766dbb919edc73187ffb9008aab77` Reproducible unsigned build SHA-256: `77989e2ec201c6b24ac306e41e7c9456d6fdaedf8b64cc1a46dfe4b80090feca` Signing certificate SHA-256: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` How to verify: [README-REPRODUCIBLE.md](https://github.com/Kilombino/kilowallet/blob/master/README-REPRODUCIBLE.md) - Oct 6, 2026 0.18.1### Changed - Home-screen widget: shows BTC instead of XBT. - Widget: the Poolsats price and its 24h change sit next to the price. - Widget: the first row is the network hashrate. - Widget: bigger refresh button, which spins while loading. ### Fixed - The widget's refresh button did nothing after a network failure: it waited out the failure back-off. It now refreshes (at most once a minute, and never through a server rate limit). ### Reproducible
More…
- Unsigned APK SHA-256 `acb3af82fa3f684f2d18b86650200f48eef6506a78d9c59688261a3a3fab1a08` (two independent clean clones identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 6, 2026 0.18.0### Added - Spamcoin privacy warning ☣️: every time the spamchain tab is opened, before anything connects, the wallet explains that it reads that chain from public third-party servers (listed: Blockstream, ACINQ, Bitaroo, Emzy) that see the addresses it asks about and your IP. Until you accept once, the app never contacts them, not at start-up and not in the background. - Advanced mode: the BTC and Spamcoin balances show their value in dollars or euros, with the USD/EUR switch. - The app's logo at the top right, instead of the KILOWALLET title. ### Changed - Much lighter: 14 MB instead of 24.7 MB. An icon library the app never used is gone, and R8 now drops unused code (the app's code went from 45 MB to 3.4 MB), which also makes it start faster. The release is still reproducible byte for byte. - The app always opens on BTC. ### Reproducible
More…
- Unsigned APK SHA-256 `ebe7eb17338e431d55e41efa0663e561ca53e8feaa5a3a1d20c23dabd1fc5b38` (clean clone and working tree identical, now with R8); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 6, 2026 0.17.2### Added - Scan a QR code (📷) in Ark → SEND: an Ark address, a Lightning invoice or offer, or an XBT address, also inside `lightning:` and `bitcoin:` links (a BIP-21 link with an Ark address or a Lightning code pays that first). PASTE understands the same links. ### Changed - Ark: "Save as a contact?" now appears as soon as the payment is confirmed with the fingerprint, instead of after a Lightning or BOLT 12 payment reports its outcome, which can take a minute. ### Fixed - Advanced mode always opens on BTC | ARK; the spamchain tab only shows when opened from settings. ### Reproducible
More…
- Unsigned APK SHA-256 `ec6c96a573db860b8a9659556c49e0c439b617eab206fed0a349a13f358c9e7e` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 6, 2026 0.17.1### Added - Movements in simple mode, on the BTC and Spamcoin tabs. - Every movement shows what it did to the wallet: + received, − sent (fee included). Amounts read STREET MODE until street mode is unlocked, and hide again when the app leaves the screen. ### Changed - Battery: the loops meant for someone looking at the wallet (the 30 s refresh, the Ark tab's reload, an invoice's status) pause while the app is in the background; coming back refreshes at once. Background notifications are unaffected. - Battery: refreshes first ask each address's Electrum status and only fetch history and balance for addresses that changed; transactions are fetched once and kept. - The refresh countdown only redraws its own card, not the whole screen every second. ### Fixed
More…
- A scan still in progress is no longer restarted by the 30 s refresh: a wallet with many addresses on a slow server could never finish its scan. ### Reproducible - Unsigned APK SHA-256 `f8cb6fa36c05fbafb0797c203cb806acf07dc8cd0bddddc935a5de2abb4818ef` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 6, 2026 0.17.0### Added - Street mode: every balance and Ark movement amount reads STREET MODE. Tap "👁 show" and unlock with the fingerprint (or screen lock) to see the figures; they hide again as soon as the app leaves the screen or the phone locks. ### Changed - Simple mode: tabs BTC and SPAMCOIN. The Spamcoin tab shows its balance in poolsats, its value in dollars or euros, and sends and receives on the spamchain. - Advanced mode: tabs BTC and ARK. The spamchain opens from settings ("Spamcoin (SHA-256 chain)") as a third tab. ### Fixed - No address reuse across chains: the same key gives the same addresses on BTC and on the spamchain, so a new receive or change address now skips every address already used on either chain, and the app remembers how far each has been used even before the other chain is checked.
More…
### Reproducible - Unsigned APK SHA-256 `6efc7a407670225e628ced115d72f11af7ea25282a3e5e9fce7c5762509af253` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 6, 2026 0.16.1### Changed - The SHA-256 chain is now read from well-known public Electrum servers: Blockstream, then ACINQ, Bitaroo and Emzy if one doesn't answer, starting with the last one that worked. The previous default server is gone. - Those servers' certificates are checked like a browser does (trusted authority, right hostname) instead of pinned, so routine renewals don't raise a "certificate changed" alarm. Your own BLAKE2b server keeps the pinning as before. - A server whose tip header isn't 80 bytes (i.e. one following Bitcoin (BLAKE2b)) is refused as a SHA-256 source. ### Added - RECOVERY WORDS for the XBT spending wallet, in simple and advanced mode: a warning, then the fingerprint or screen lock, then the words and passphrase. HIDE WORDS hides them again. ### Reproducible - Unsigned APK SHA-256 `2b7f5ad4a45906c8f55183ee657b203b75edfeed98fcfcc3203694571aa895e0` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature.
More…
- Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 5, 2026 0.16.0### Added - Contacts. After a payment the wallet asks whether to save the destination with a name; next time pick it with CONTACTS next to PASTE, and the name shows under the destination field. - Works for Ark addresses, XBT addresses, reusable Lightning offers (BOLT12) and user@domain handles. One-off Lightning invoices are never saved: they can only be paid once. - Each send only lists the contacts it can pay: from Ark, Ark addresses, offers and XBT addresses; from the on-chain deposit, XBT addresses; from the XBT wallet, XBT addresses and user@domain. - Contacts are kept in the Ark backup file and come back when you restore from it (the recovery words alone don't bring them). Adding or deleting one marks the backup file as out of date. Older backup files still restore as before. ### Reproducible - Unsigned APK SHA-256 `42e10088d7765f56b5c1410876804eebaf9b9414b620e079ed65f0e1e1661d18` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 5, 2026 0.15.3### Fixed - Ark Lightning invoices: every press of ⚡ INVOICE now makes a new invoice and removes the previous one at once. Before, while the wallet was busy (for example claiming an earlier payment) the old invoice stayed on screen and looked like the new one, and any error appeared at the foot of the screen, out of sight. - Progress and errors for the invoice now show right under the button; an empty amount is pointed out instead of doing nothing. ### Added - The invoice on screen follows its payment: "Waiting for payment", "Payment arriving…" and "✅ Paid". A paid invoice hides its QR so nobody pays it a second time (a paid invoice can't be paid again; the payer only sees a failure). Thanks to the tester who reported it. ### Reproducible
More…
- Unsigned APK SHA-256 `3fee1ef211cc4b44b22ebb3871e790f980a8c77b6db896b970c1595c1e8d947a` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged: `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 4, 2026 0.15.2### Changed - Cheaper Ark payments: when the Ark server offers smaller transfer anchors (Paperclip does now), spending a coin whole costs about 2,660 sats of recovery reserve instead of 4,000, and about 3,990 with change instead of 6,000. - Lightning payments from Ark are checked before they start (invoice not expired, a public route exists), and the server refunds the recovery costs of eligible payments that fail before being sent out. ### Fixed - Ark alert titles read "Ark: payment sent" and "Ark: Lightning payment sent". Ark engine 6027909 merges ConnorsLab's wallet 0.8.3 (failed-payment refunds and smaller anchors) into the Kilombino engine, keeping coin control, the BIP-39 passphrase and the move-into-Ark fee. Tested with real coins: four Ark payments, each spending a coin whole for 2,660 sats. ### Reproducible
More…
- Unsigned APK SHA-256 `a997c6555fb4d1db97bdec97ce4523260f603d62703c5722276d779e5ba4405c` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine `d7220c3647195b7b8ef7d32ba5157c3bcb67872e647eb522c0ba5d9b7a95e181` (Kilombino/paperclip-wallet-app commit 6027909), identical from two clean clones. Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 4, 2026 0.15.1### Fixed - Lightning payments from Ark no longer say "Payment sent successfully" when they have only started. The wallet now follows the payment and tells you whether it completed, failed or is still in progress. - When a Lightning payment fails, it says so plainly: the amount comes back to Ark, but the recovery reserve it pre-paid is not refunded. ### Changed - The cost shown before a Lightning payment warns that a failed attempt still costs the recovery reserve. ### Reproducible - Unsigned APK SHA-256 `cba7e43e0680256ca2ef6675775bac4b084e2c91aa3ddc7ec13a9f87792ed9e8` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged (`5f0e55e089b652b6d29833fc92a2ea6100846ad02f43ca85a183e4b974474c03`). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 4, 2026 0.15.0### Added - Ark alerts for every movement, in the background and while the app is open: Ark and Lightning payments sent (or failed), renewals, moves into Ark when they start and when they become spendable, withdrawals, and the deposit's on-chain transactions in the mempool and at their first confirmation. - Fingerprint or screen lock before every Ark operation that moves funds: send, move into Ark, renew, emergency exit and claim. - Move into Ark at a network fee of your choice: slow, normal, fast or any rate from 0.1 sat/vB, with an estimate of the network fee and a warning below 1 sat/vB. - A move into Ark waiting on-chain shows its confirmations (1/3, 2/3…). ### Changed - Passphrase: clearer warnings before you type it, a visible check that both entries match (the wallet is not created until they do), and warnings when it is short or starts or ends with a space. It stays optional. - Simple mode no longer shows a bare 0 while it updates: it shows which address it is checking, like advanced mode. - Ark warnings: 4,000 sats of recovery reserve for a coin spent whole, 6,000 with change.
More…
### Reproducible - Unsigned APK SHA-256 `e667930845ed0089d1118cb44e30e46120d1c4b1055e75a996204863f25b62cd` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine `5f0e55e089b652b6d29833fc92a2ea6100846ad02f43ca85a183e4b974474c03` (Kilombino/paperclip-wallet-app commit 72de502), identical from two clean clones. Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 3, 2026 0.14.3### Changed - Cheaper Ark payments in automatic mode: the wallet now compares every single coin and pays from the one with the smallest recovery reserve, spending a coin whole (2 reserves, 4,000 sats) when that is cheapest, before combining coins. Example: sending 10,000 with coins of 14,000 and 30,000 now uses the 14,000 coin whole (4,000) instead of the 30,000 with change (6,000). From ConnorsLab's wallet change, merged into the Kilombino engine. Manual coin control is unchanged. ### Reproducible - Unsigned APK SHA-256 `5e161cc4765e33e51a2f30c499db1be5ecdd0f10ab58dad95f7be6edbee122ce` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine `ff1009e99da20516ce11ab195f421a5c9b08dbe4e967c2cf474a860b435a662f` (Kilombino/paperclip-wallet-app commit fbc0d05), identical from two clean clones. Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 3, 2026 0.14.2### Added - Pull down to refresh in advanced mode, as in simple mode. - Transaction details: tap a movement to copy its txid with one tap, open it on the block explorer (after a warning: the site sees which transaction you look up), or speed it up if it is a pending send. The same details appear for the replacement after a speed-up. ### Reproducible - Unsigned APK SHA-256 `35be33c7c1d4c5d1f4494fb4316a5462dfb646ecac12e78b7648a22a4cf7e556` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged. Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 3, 2026 0.14.1### Fixed - **Fee below the requested rate when paying a Taproot (bc1p) address.** Every output was sized as a bc1q (31 vbytes), but a bc1p output is 43, so a 1 sat/vB send to a Taproot address went out at 0.92 sat/vB — under most nodes' relay minimum, so it never propagated or confirmed. Outputs are now sized by their real script. ### Added - **Speed up a stuck send (RBF).** Unconfirmed sends in the movements list have "⚡ speed up": the same inputs and payment with a higher fee taken from the change, reviewed and signed like a normal send. Sends now signal replace-by-fee; full RBF (Knots, Bitcoin Core 28+) also lets earlier sends be replaced. The replacement must pay at least the old fee plus 1 sat/vB of its own size, and more if another transaction already spends it. ### Reproducible - Unsigned APK SHA-256 `eaba27715c4a8900467578d0e0b26f593c15861aa420f6907020560222b04a61` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged. Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 3, 2026 0.14.0### Added - **channel.backup in the LND rescue** (Advanced → settings → "Rescue XBT from a pre-fork Lightning (LND) seed" → "+ channel.backup"). Decrypted on the phone with the seed. Every channel is listed with its state on both chains: 🔒 open on both (locked on BLAKE2b), ✅ closed on SHA-256 (replayable), ⚠️ force-closed on SHA-256 (replayable), ✔️ closed on BLAKE2b. - **Force closes**: replayable like cooperative closes. The anchor output a peer's force close pays you is found from the seed alone. Your delayed to_local output of a force close you made is rebuilt from the seed, the backup and the state number hidden in the close (shachain secret, tweaked delayed key, revocation key); the app shows when it becomes spendable and sweeps it with the unified sighash on a later run. - Backup decoding and every force-close derivation match vectors made with LND's own code. A real to_local (CSV 2) and anchor spend made by this code was accepted by a BLAKE2b node. ### Reproducible - Unsigned APK SHA-256 `915d09aea727c90ec635de05ac127862646624fe5a8e6eb8b0810718ca9507be` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged (`c3e4856f…`). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 3, 2026 0.13.0### Added - **Rescue XBT from a pre-fork LND seed** (Advanced → settings → "Rescue XBT from a pre-fork Lightning (LND) seed"). Type the 24 aezeed words, and the passphrase if it has one, of a Lightning node created before the fork. The app deciphers the seed on the phone, scans LND's BIP-84, BIP-49 and BIP-86 wallet keys (receive and change) and the channel payment keys on both chains, and sweeps the BLAKE2b coins to an address you choose with the unified sighash. The SHA-256 chain rejects that signature, so the same node there is not touched: no channel closes there. - Cooperative channel closes the same wallet made on SHA-256 after the fork can be replayed on BLAKE2b, where the channel is still open, to free your share; the app lists them and what each returns before anything is sent. Only transactions spending a 2-of-2 channel funding output ever qualify: an ordinary send is never replayed. Force closes are listed but not replayed. - aezeed deciphering (scrypt + AEZ + BLAKE2b) pinned by LND's own test vectors and by seeds made with LND's code and production parameters; channel-close recognition tested on real mainnet closes. A real rescue (native SegWit and Taproot coins, seed with passphrase) was accepted by a BLAKE2b node. ### Reproducible - Unsigned APK SHA-256 `2962ffbb0af9d47ce2bbff5b6679d8e3699e9897ee656d6a22a7ef1c33a56af9` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged (`c3e4856f…`, commit a7d0f82). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 3, 2026 0.12.0### Added - **Sweep a private key** (Receive → "sweep a private key into this wallet"): paste or scan a WIF key from a paper wallet or another wallet, see its coins and the fee, and move them all into this wallet in one transaction. Legacy (1…), nested SegWit (3…), native SegWit (bc1q…) and Taproot (bc1p…), compressed or uncompressed keys. The key is not stored. - Signing for those address types: legacy P2PKH, P2SH-P2WPKH and Taproot key path (BIP-340 Schnorr, BIP-341, BIP-86), with the unified sighash on BLAKE2b. Checked byte for byte against Bitcoin Knots `signrawtransactionwithkey`, the BIP-340 and BIP-341 test vectors and the taproot unified-sighash vectors; real sweeps of all four types accepted by a BLAKE2b node. ### Fixed - MAX sends failed with "Not enough funds for the amount plus fee": sending everything has no change output, so the fee is now sized for one output. ### Reproducible - Unsigned APK SHA-256 `53edfa11ea86c33b6a3fc49fa86c660d6b4304a8605fd531fbafc9ea0d5b5f15` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine unchanged from 0.11.0 (`c3e4856f…`, commit a7d0f82). Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`.
- Oct 3, 2026 0.11.0**Kilowallet** — the wallet is renamed (it was "Kilombino Bitcoin-Blake2b wallet") and has a new icon. It installs over the previous version and keeps your wallet. ### Added - Optional BIP-39 passphrase when creating (asked twice) or restoring a wallet, for the XBT wallet and Ark alike. Leave it empty for none: the same wallet as before. The app shows the wallet fingerprint, the same one Sparrow and SeedSigner show, so you can check you typed it right. - Coin control for Ark payments: tick the coins to spend and the payment uses exactly those. ### Fixed - Ark payments refused as "dust" when the automatic coin choice added a second coin for a few sats: the engine now pays from one coin when one is enough. ### Reproducible
More…
- Unsigned APK SHA-256 `c31ca2f42b56b9fa842b52c69c54cfe0e978e1bf4c4b856366c6cbb8ce3fd06d` (clean clone and working tree identical); `apksigcopier` confirms the signed APK is that build plus the signature. - Ark engine `c3e4856f3a3879071edb125a300efe853dae5c701cbc75216f8887f55ccc206e`, Kilombino/paperclip-wallet-app commit a7d0f82, identical from two clean clones. - Signer certificate unchanged: `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`. - Oct 2, 2026 0.10.9Lightning invoices into Ark that can actually be paid. ### Fixed - **No more Lightning invoices too small to claim**: receiving Lightning into Ark costs about 4,100 sats (recovery reserve plus the server's fee). An invoice for less, say 1,000 sats, could never be claimed: the payer's payment was refused and failed after retries. The wallet now refuses such an invoice and explains why, warns under the estimate, and the BOLT12 offer says payments under about 5,500 sats fail. **Verify before installing** ``` signed APK SHA-256 a7aa8b15953b872049dfe88f51e3cdb01210790022d2b4fc6026ee8574cf92b2 unsigned SHA-256 3034901567dfc0147e8cbdcbc7ebbd023f56642ebeda68f0321007e5fd31f9bf
More…
Ark engine SHA-256 1e6cb4466b2fe4b9c1796a82e6a6dc2eb0a7cb6a8e2d591e116f9a7d1cb1a445 (unchanged) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 2, 2026 0.10.8Coin control for the Ark wallet. ### Added - **Choose coins** in SEND. From the deposit: spend exactly the on-chain coins you tick, either an amount (with change back) or all of them; the fee is shown before you confirm. From Ark: withdraw the Ark coins you tick, whole, to an XBT address. - **RENEW by coin**: the renewal lists your Ark coins, all ticked; untick some to renew only the others, and the cost is recalculated. ### Changed - **MOVE INTO ARK** says what leaves your deposit, what is added to Ark, and your Ark balance after. - The Ark engine is rebuilt from fork commit bd446d9, which adds the coin-control endpoints (tested on XBT mainnet); its pinned hash changes.
More…
**Verify before installing** ``` signed APK SHA-256 9851f15b8d36e368889aaa88b0a11fa2d8a59bec78b872f8c673b166e6c5b8a9 unsigned SHA-256 d338ca0d443e97ca69574240954b1add58928f31d628e3d78201899e1093a6e8 Ark engine SHA-256 1e6cb4466b2fe4b9c1796a82e6a6dc2eb0a7cb6a8e2d591e116f9a7d1cb1a445 (lib/arm64-v8a/libkilombino_ark.so) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 2, 2026 0.10.7Your Ark wallet by pocket, deposit activity and sends, and the emergency exit. ### Added - **Pockets**: the Ark tab shows the whole Ark wallet and where it is: in Ark (spendable), the on-chain deposit (not in Ark yet) and Lightning still settling. - **Deposit activity**: Ark activity now lists the deposit's on-chain transactions (received, sent), with the explorer link. Deposits that funded a move into Ark are not repeated. - **Send from the deposit**: SEND → From: ARK | DEPOSIT. From the deposit you send plain on-chain XBT to an XBT address, paying only the network fee, with no Ark reserves. - **Emergency exit** (folded away, in red): takes every Ark coin on-chain WITHOUT the Ark server, for when it disappears or stops renewing. It shows the cost first, asks you to type EXIT, follows each exit (about 144 blocks), and claims the XBT to your address. Tested end to end on XBT mainnet. **Verify before installing**
More…
``` signed APK SHA-256 9f1dca3e8ccebe1addeb426c8e4b7a2621cf70b6ebd56f991d9364a08d5f218c unsigned SHA-256 194f7711fcd2b35dbe6afaa015da1e1948fa7f28d73b28cccae14c2c01ffcc03 Ark engine SHA-256 7fd3728da779e1cdd84550e9db8f03ab206c20701b53115be705c43ec4d70381 (unchanged) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 2, 2026 0.10.6An XBT converter from the widget, and USD/EUR on the Ark tab. ### Added - **XBT converter**: the large home-screen widget has a ⇄ Convert button. It opens a small converter over the home screen: type in XBT, sats, Poolcoins (the SHA-256 Spamchain), EUR or USD and the others follow, at the price the widget shows (mempool.kilombino.com). A widget cannot hold a text field, which is why it opens a dialog. - **USD / EUR on the Ark tab**, next to the Ark balance. The choice is shared with the XBT tab and the widget. **Verify before installing** ``` signed APK SHA-256 2147560e8cf7e4eefb5db62f4b945a1fa6828dc7aec84d78e63fff65a6223582
More…
unsigned SHA-256 54377162521af7a4785383186f0fe2f1526dd07e112eccac6621b4e3d1cd0d9f Ark engine SHA-256 7fd3728da779e1cdd84550e9db8f03ab206c20701b53115be705c43ec4d70381 (unchanged) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.10.5Lightning payments on a fragmented Ark balance. ### Fixed - **Lightning payments no longer fail when your Ark balance is split across several coins** while a suitable coin is available. The Ark engine now merges Paperclip 0.8.1: it checks that the payment and change pieces stay valid after the recovery reserves before locking any coin, prefers a single usable coin, and tries other combinations when needed. ### Changed - The Ark engine is rebuilt from fork commit 8d6be19; its pinned hash changes. **Verify before installing**
More…
``` signed APK SHA-256 83ddf8657583403476426abbd8f69629c5b19263143673df96fb87ec5eba1e35 unsigned SHA-256 c1573940a0a7da5f58f373cd6bcb6806220d14f7e1b4bd7ff549cb977cdeee1a Ark engine SHA-256 7fd3728da779e1cdd84550e9db8f03ab206c20701b53115be705c43ec4d70381 (lib/arm64-v8a/libkilombino_ark.so) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.10.4Reusable BOLT12 offers to receive into Ark, and pull to refresh. ### Added - **Reusable Lightning offer (BOLT12)**: RECEIVE → ⚡ OFFER shows your wallet's offer (any amount, or the amount you type), with QR, COPY and DISABLE. Share one code and be paid many times; each payment lands in Ark. It answers payers only while the wallet is running (keep notifications on so it stays up). Tested end to end on XBT mainnet. Save a backup file after creating it: the file brings the same offer back on a new phone, the words alone give a new one. - **Pay BOLT12 offers**: an offer without an amount asks for one. - **Pull down to refresh** in Simple mode: the XBT balance and price, or the Ark tab with an on-chain sync. ### Changed - The Ark engine is rebuilt from fork commit 7b33f3c, which merges Paperclip 0.8.0; its pinned hash changes.
More…
**Verify before installing** ``` signed APK SHA-256 ebb984bd3c73dbd77b22a6d84456218b71e178671c02f4602e051f8939a88022 unsigned SHA-256 a6c9f26f2e1fd1cfad652e6499edae7468e22ae0e670d54156833575b712279e Ark engine SHA-256 6378b4e6bcf20502db958cd73c6fe4bfff5fe5c0c5eacaf3304191bacefd1780 (lib/arm64-v8a/libkilombino_ark.so) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.10.3Renewals ask first, Ark notifications, and deposits that show up sooner. ### Added - **Ark notifications** (with notifications on): an Ark or Lightning payment received, a move into Ark that becomes spendable, a completed withdrawal, an on-chain deposit waiting to be moved in, and a coin about to expire (under about a week), so you can tap RENEW. ### Changed - **RENEW asks first**: what a renewal does (new ~30-day expiry, coins joined into one) and what it costs now, from the Ark engine; confirm or cancel. - **Deposits appear sooner**: the Ark tab syncs the on-chain wallet when it opens and every two minutes, instead of waiting for the next block. - The Ark engine is rebuilt from fork commit 0769c94, which adds the renewal cost estimate; its pinned hash changes.
More…
**Verify before installing** ``` signed APK SHA-256 cb677eea8192fd1711d03404e6a947fa1c553ce12a5aabc585dcd1ab1a793b7d unsigned SHA-256 764cb47e3d162702623b0b96980f8a10b6829a12e1c02bec87339e0b6e20b6dd Ark engine SHA-256 a3b019ef6b782084f6b59797dee7ea5167b61bd1cb5ec8a13242bb0342202a44 (lib/arm64-v8a/libkilombino_ark.so) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.10.2Withdraw from Ark to an XBT address. ### Fixed - **Sending from the Ark tab to an XBT address** now leaves Ark on-chain as it should (it was refused before). ### Added - **Leave the amount empty to withdraw everything** to an XBT address: the wallet shows what arrives on-chain and the fee before you confirm. **Verify before installing**
More…
``` signed APK SHA-256 b1326c56bcd6474e56dad71e022e4eb4fdbf6a7364f4a0d3162e39abc28085d6 unsigned SHA-256 f18b8145276a4d0f608787aaccf70b51f364abe4f4d90897b2a916b3b9b40ea1 Ark engine SHA-256 29eb7ec38aef01563c581f94204c3bd5020f0a52245f679320b58a537d7692d9 (unchanged) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.10.1Ark movement details, and the Ark tab in your currency. ### Added - **Tap an Ark movement** for its amount, cost, date, destination and Ark coin; Lightning payments also show the payment hash and the preimage (proof of payment). Moves into Ark, renewals, withdrawals and emergency exits have a blockchain transaction and open on your explorer (Settings). Ark and Lightning payments are off-chain, and the details say so. - **Fiat values in the Ark tab**: the Ark balance and the cost review show their value in USD or EUR, as chosen in Settings. **Verify before installing** ``` signed APK SHA-256 e6f80de1bebc6937251488f54dd87a2b1c514eaedfea7f36b331a194bd867402
More…
unsigned SHA-256 9c230e10de56a73b1f0e92d488d2773c95f5765addab3bf3d02f33a858a9a0cf Ark engine SHA-256 29eb7ec38aef01563c581f94204c3bd5020f0a52245f679320b58a537d7692d9 (unchanged) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.10.0Ark inside the wallet: instant payments and Lightning on XBT, through the Paperclip Ark server. ### Added - **Ark tab** (Simple mode): receive by Ark address, Lightning invoice or on-chain deposit; send to Ark addresses, Lightning invoices or XBT addresses; move deposits into Ark; renew coins before they expire. The Ark engine (Paperclip/bark, Rust, MIT) runs inside the app, on 127.0.0.1 behind a random token, with chain data from mempool.kilombino.com. - **Cost before you confirm**: every Ark send, move into Ark and Lightning receive shows what arrives, the cost and the total. Ark sends use the engine's own quote (Paperclip 0.7.7) and are capped at the approved total: if the cost rises, nothing is signed. - **One set of words**: Ark uses the same words as your XBT spending wallet; a new spending wallet can take your Ark words. - **RECOVERY WORDS** behind a warning and your fingerprint/PIN, and **backup file** (optional password, AES-256-GCM) that also works if the Ark server disappears. Restore Ark from words or from the file; the wallet says when the file is out of date. ### Changed - The APK now carries one native library of ours, the Ark engine, **arm64-v8a only** (other phones run without Ark). It is rebuilt reproducibly from a pinned commit and the release build checks its hash.
More…
- RFC 6979 signing is pinned to the published secp256k1 vectors in the tests. **Read before using Ark**: beta software; coins expire after ~30 days unless the wallet renews them; each Ark payment pre-pays recovery reserves (about 6,000 sats for one coin), so small amounts are expensive; keep amounts small. **Verify before installing** ``` signed APK SHA-256 c9977229ec09f4a09e8aa7338b35f36c4007a77b4cc740e141dab7be1c6563db unsigned SHA-256 bbdc36441683d21201181223c3e4d6d5e134f3ff3baebfb67dd1520addead5dc Ark engine SHA-256 29eb7ec38aef01563c581f94204c3bd5020f0a52245f679320b58a537d7692d9 (lib/arm64-v8a/libkilombino_ark.so) certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps, including rebuilding the Ark engine: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.9.1Open a movement in the block explorer, and choose the explorer per chain. - **Tap a movement** (Advanced mode) and the wallet asks whether to open it on the block explorer — mempool.kilombino.com for BLAKE2b, nobip110mempool.kilombino.com for SHA-256 — and warns that the site will see which transaction you look up. - **Explorer per chain in Settings**, like the Electrum server: https only (or http for .onion), with a button back to the default. The 26 cryptography tests are unchanged and pass. **Verify before installing** ```
More…
signed APK SHA-256 9de53c496b6432b4c93b78424bd02284db54be75dafb535c0cdec3b226f858ef unsigned SHA-256 6b5b038f5158ab86661e5fce743cd4eca1cd0b37c65c2099bf7c30bdbe3e22d9 certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps and the verification of this APK: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Oct 1, 2026 0.9.0Simple and Advanced modes, the XBT price widget, and USD/EUR values. - **Simple or Advanced.** On first open the wallet asks how you want to use it. *Simple* is one screen: your XBT balance with its value in USD or EUR, and Send / Receive, plus an Ark tab with the real limits of the Paperclip Ark server (Ark itself is not in this version yet). *Advanced* is the wallet as before. Switch from the top of either screen. - **XBT price widget.** The home-screen widget from the separate XBT Widget app now lives in the wallet: price in your chosen currency, 24h change and range, ratio in Poolsats, block height; at four rows tall it adds what 1 TH/s earns and costs to rent, kWh per XBT, YSH and chain size. No new dependencies — it refreshes from Android's widget updates and the existing balance watcher. - **Prices** come from `mempool.kilombino.com/api/v1/blake2b/widget` (public sources only). The phone asks at most every 15 minutes, obeys the server's `pollMinutes` and `Retry-After`, and backs off on errors. Without it the wallet works exactly the same, just without fiat values. The 26 cryptography tests are unchanged and pass. **Verify before installing**
More…
``` signed APK SHA-256 84dea5c1c9ffb0fb8a747a936a279f4683ef2221d79eefee7c866e309e312e72 unsigned SHA-256 f5a7b6f6cd91add06d018614015dccfa39ecb0af3172f606db8858c6d6820deb certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build steps and the verification of this APK: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 20, 2026 0.8.3Binds the signing chain to the send draft — a follow-up to 0.8.2 hardening the send flow. The chain a spend signs under is now fixed on the draft at prepare time, so switching chains between review and confirmation can no longer change which sighash the reviewed spend is signed with (unified on BLAKE2b, legacy on SHA-256). The coin picker tracks which chain its UTXOs came from and refuses coins from another chain. `TxBuilder` now takes the P2WPKH scriptPubKey and implied-P2PKH scriptCode from `Address.scriptPubKey`, so those byte layouts have one definition — byte-identical, the 142 unified vectors and the BIP-143 anchor are unchanged. Adopts the improvements from #2 (thanks @gsampathkumar). **Verify before installing** ``` signed APK SHA-256 a04afa6eb2b5a69671c2cc14f4209eded1e1f2ec326828d8d1d511be5ff500f6 unsigned SHA-256 1be0aaeab71c775f76d2461017b92003fe31525af14e40c8b00c15d05c84f273 certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0)
More…
``` Reproducible-build steps and the verification of this APK: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 20, 2026 0.8.2Opt-in **unified sighash** on BLAKE2b spends — replay protection. A hot-wallet spend signed with `SIGHASH_ALL` produced the same message on both sides of the fork, so spending a pre-fork coin (one that existed before block 961,640, with a twin at the same address on the SHA-256 chain) let anyone rebroadcast the raw transaction on the SHA-256 chain and move the twin coin to the same destination. Spends to the BLAKE2b chain now opt into the unified sighash (`SIGHASH_UNIFIED`, hash-type byte `0x21`), whose message a node without the fork cannot reconstruct — so the signature does not verify there and cannot be replayed. A SHA-256 spend has no fork to validate the new message and stays legacy `SIGHASH_ALL`. The unified message also commits to every input's amount and scriptPubKey, closing CVE-2020-14199. The signing message follows `doc/unified-sighash.md` (Knots v29.4.1) and is checked byte-for-byte against all 142 script-type-0 and script-type-1 vectors from `unified_sighash.json`. Reported by @melvincarvalho in #1. **Verify before installing** ``` signed APK SHA-256 41d63876e1dcec6126a4d5819999bdafcddb580a0a89af2894400b1f807a9438
More…
unsigned SHA-256 c2cb689bfa3e2f5cdde1cdb0b5c99a5031572ce94ff64ccc53e074dd80e77ab1 certificate SHA-256 b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 (AppVerifier; unchanged since 0.1.0) ``` Reproducible-build instructions and the verification of this APK: see [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 10, 2026 0.8.1**v0.8.1 — `user@domain` (BIP-353) now resolves.** The DNS label has an extra `user` component: `kilombino@kilombino.com` lives at `kilombino.user._bitcoin-payment.kilombino.com`, which the previous build wasn't querying — so it reported "no payment record" even when the record (a silent payment) was there. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `2b49d1b48c2a166cfc8e0f79f99106e147d79b7198815e4e6bf921fa2a8db7ea` - Signed APK SHA-256: `a1d4cf9f475f73104617b802171b6806df71d8db92146c7778ae6d94c2ca6502` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` `apksigcopier` reproduces the signed APK from the unsigned one.
- Sep 10, 2026 0.8.0**v0.8.0 — Silent Payments and human-readable addresses.** - **Send to a Silent Payment address (`sp1…`, BIP-352).** The Taproot output is derived from the ECDH of your input keys with the recipient's scan key and built at signing time; pinned to the BIP-352 'Simple send' vector. - **Send to `user@domain` (BIP-353).** The handle is resolved over DNS-over-HTTPS to its payment address — which may itself be a silent payment. - The recipient field takes a normal address, an `sp1…` address, or a `user@domain` handle; the review flags a silent payment. - **App icon** is now full-bleed (adaptive), no white border. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `840057da65ae636fdf7ee017e78b5e0521671e10c38234060c825cb496e6354b` - Signed APK SHA-256: `5d15b6f2c66c2709b38da3b2cab9d8ef8b49afec0192db6ceee31438e0bb678f`
More…
- Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` `apksigcopier` reproduces the signed APK from the unsigned one. ⚠️ A spending wallet — test with small amounts. - Sep 10, 2026 0.7.7**v0.7.7 — the QR scanner finally reads and hands the address back.** Two fixes: the frame is now decoded via `ImageProxy.toBitmap()` + an RGB luminance source (the platform's own YUV→RGB, made upright by the reported rotation, three binarizers incl. inverted); and the unbind + result callback now run on the MAIN thread. Touching CameraX off the main thread was swallowing a successful decode, which is why the scanner would sit on a clear QR without ever closing or filling the field. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `018998f16488f744324f50fb8e76fb0b76ee7246d36be04828ce96e7541d1d4d` - Signed APK SHA-256: `b9f87e75b56a1da3cb392ddbf89bafa660138eef238f4d64184f020c42c6a8d2` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` `apksigcopier` reproduces the signed APK from the unsigned one.
- Sep 10, 2026 0.7.6**v0.7.6 — the QR scanner actually reads now.** The scanner would sit on a clear QR and never decode it — on send and on xpub import alike. The analyzer's rotation fallback relied on `PlanarYUVLuminanceSource.rotateCounterClockwise()`, which ZXing does not support and throws; a portrait phone feeds a landscape sensor buffer, so the first (unrotated) orientation almost always missed and the throw killed the frame. Now the luminance is packed and rotated in-tree through all four 90° orientations, with two binarizers tried. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `99735a5626ded277638672ae92d39b8e5fdb2bbab9e6a9605064c9c690c40325` - Signed APK SHA-256: `0d0f39e7ed1d41ff58ef45e94fffd76f4951ff5472de15df80de7778cf37cf37` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` `apksigcopier` reproduces the signed APK from the unsigned one.
- Sep 10, 2026 0.7.5**v0.7.5 — easier, more forgiving recipient entry on send.** - The QR scanner now accepts a BIP-21 URI (`bitcoin:ADDR?amount=…`) or a bare address in any case. - A **PASTE** button reads the address from the clipboard — a reliable alternative to the camera. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `7c30055f7f658f8856e668d080cce9a39a62e1ffc27dc389a70fea979cc20544` - Signed APK SHA-256: `f013aa9c7c91d2982bc9e388789e94c507d4b1ac4ae410e6c86e929982be8fb6` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
`apksigcopier` reproduces the signed APK from the unsigned one. - Sep 10, 2026 0.7.4**v0.7.4 — the app keeps up without a restart, plus QR and MAX on send.** - **Discovers movement while open:** the in-app refresh now does a silent gap-walk, so a payment to a freshly handed-out receive address, and the change a spend creates, show up (and confirmations advance) without restarting the app. - **Send:** scan a recipient's QR with the camera, and a **MAX** button to sweep (everything minus fee). - Notifications and the background service are now in English like the rest of the app. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `941662c367b3e1cd107a7162b97b33c5dc2d5a3cca019f9f8a2a25009bff5c6d` - Signed APK SHA-256: `2439c516d65131a1e32d22e8c95920d8029d4c7d82d9319a92686cec95df4a2f` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
`apksigcopier` reproduces the signed APK from the unsigned one. - Sep 10, 2026 0.7.3**v0.7.3 — receive, coin control, and fine-grained fees.** - **Receive:** shows a fresh unused address with its exact derivation path and a QR. Derived publicly from the xpub, so it works for watch-only wallets too. Copy, or step to the next address. - **Coin control:** an optional per-UTXO picker on the send screen — tick exactly which coins to spend instead of the automatic largest-first selection. - **Fees:** any rate from 0.1 to 1000 sat/vB, fractional included. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `a994513b7f1f46812d1c4475128f562accb8e550dddb9bc09a1c4099a2087f27` - Signed APK SHA-256: `b3d8ece83dbc8b70479199b63f757e3449b2cf982754af40b6c2706ec75453e2` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
`apksigcopier` reproduces the signed APK from the unsigned one. - Sep 9, 2026 0.7.2**v0.7.2 — Kilombino icon, and the spending option is now on the main screen.** - The app icon is the Kilombino logo. - A watch-only wallet shows a **Create a spending wallet** button right on the wallet screen (no longer only inside settings). **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `c0ebcfe958227069797c4d530ceab54fd92e6321c58b9a541c454a5aaba8bf00` - Signed APK SHA-256: `ae1c061760f2122059dcd8aaa8a462f1f305620def721bbb2e1184e32a0d7660` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
`apksigcopier` reproduces the signed APK from the unsigned one. - Sep 9, 2026 0.7.1**v0.7.1 — setup is reachable again.** Fixes being unable to create a spending wallet once a watch-only xpub was already loaded. - Settings now has **Create a spending wallet / Switch**, which reopens the chooser (dice · restore · watch-only) even with a wallet present — with a back-to-wallet escape and a "this replaces the current wallet" warning. - Everything from v0.7.0 (dice seed, biometric-gated signing, native-SegWit send) unchanged. **Reproducible build** — `./gradlew assembleRelease` at this tag: - Unsigned APK SHA-256: `416179406557aa482c95abf6e646bc63f27445741423afdb409649b7f72b5103` - Signed APK SHA-256: `df7d5ec8a22f18a01e4cb8a0bac32a8d4cf8d3133497420b9ef06c9f52548b71` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
`apksigcopier` reproduces the signed APK from the unsigned one. ⚠️ A spending wallet — back up your seed and test with small amounts. - Sep 9, 2026 0.7.0**v0.7.0 — Spending (hot) wallet.** The wallet can now SEND, not just watch. - **Create on-device:** roll physical dice, SeedSigner-style (50 rolls → 12 words, 99 → 24), or use the phone's secure RNG. The seed is shown once to back up, then encrypted with an Android Keystore key created with `setUserAuthenticationRequired(true)` — your fingerprint or device PIN is bound to the decryption cipher, not a screen the app could skip. - **Send native SegWit (bc1q):** choose recipient, amount and fee; review the coins, fee and change; unlock with biometrics to sign and broadcast. Signing is RFC-6979 ECDSA over the BIP-143 sighash, all pure Kotlin, pinned by the BIP-143 worked example (sighash and witness signature reproduced byte-for-byte) plus BIP-32/BIP-39/BIP-84 vectors. - **Restore** from a BIP-39 seed. Watch-only (xpub) still works. **Reproducible build** — clone at this tag and run `./gradlew assembleRelease`: - Unsigned APK SHA-256: `f4651247543d54680210daeae9a8b1f4be7dc57c0b1b49bbb5aae64d376e45a3` - Signed APK SHA-256: `a270bf5a4014f20e3699e8fc5ecd86e8c1cc665f9268f675e5e22967f97a2c99` - Signing certificate SHA-256 (unchanged since v0.1.0): `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135`
More…
`apksigcopier` reproduces the signed APK from the unsigned one, so the signature adds nothing but itself. ⚠️ This is now a wallet that holds a private key and can spend. Back up your seed on paper, and test with small amounts first. - Sep 6, 2026 0.6.0Watch-only wallet para la cadena BLAKE2b/BIP110 y Bitcoin mainnet. Sin claves, sin servidor de push: el teléfono consulta el Electrum directamente. ## Novedades en 0.6.0 - **Saldo en sats.** El número grande es ahora un recuento exacto de sats (agrupado 12 345 678), con el BTC como línea secundaria — en la cabecera, las pestañas y la lista de direcciones. Se acabó redondear un saldo de menos de un bitcoin a "0 ₿". - **Notificaciones por transacción.** En vez de por saldo agregado: "Nuevo envío/ingreso en la mempool: N sats" en cuanto aparece la tx, y "Primera confirmación del envío/ingreso de N sats" cuando esa misma tx recibe su primera confirmación. El importe se recuerda desde que entró en la mempool (una confirmación no cambia el saldo). Un cambio que solo se vio ya confirmado también avisa. - **Cuenta atrás de refresco.** Con la app abierta, la cadena seleccionada se refresca cada 30 s con una cuenta atrás visible, y ese refresco también dispara las notificaciones si nota cambios. - La lógica de diferencias vive ahora en un motor compartido (BalanceWatch + Notifier), así que las mismas alertas salen del vigilante en segundo plano (cada 5 min) y del refresco en primer plano. ## Verificar
More…
Compilación reproducible: el APK sin firmar se reconstruye byte a byte desde este tag. ``` app-release-unsigned.apk SHA-256 06725332267d8feb1413054d50057ad4337258ca8b3213fade88f4498f716d6f ``` APK firmado (v2+v3, `--alignment-preserved`): ``` pyblock-watch-0.6.0.apk SHA-256 0f06f65bc6907f1544695133a140f4fe86da5819fe71801d60efb7b017c9c50c ``` Certificado del firmante (sin cambios desde 0.1.0): ``` b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 ``` `apksigcopier` confirma que el APK firmado es exactamente esa compilación sin firmar más la firma. Pasos completos en [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 6, 2026 0.5.0Watch-only wallet for the BLAKE2b/BIP110 chain and Bitcoin mainnet. No keys, no server, no push: the phone asks the Electrum server directly. ## Novedades en 0.5.0 - **Notificaciones de saldo que sí llegan.** El vigilante en segundo plano lleva ahora su propia marca de lo ya notificado, separada de las cifras que registra la app abierta. Antes, abrir la app reiniciaba la referencia y la notificación no saltaba nunca. Ahora avisa de verdad al recibir, enviar, ver algo en la mempool y al confirmarse. - **Primer saldo detectado.** La primera vez que el vigilante ve saldo en una cadena manda un aviso "saldo detectado", para que sepas que está funcionando. - **Canal de alertas de alta prioridad** y comprobación **cada 5 minutos** (antes 15). - **Lectura de QR de xpub densos.** La cámara captura a ~1280×720 con TRY_HARDER y un reintento rotado, así que un QR de clave extendida (versión 8–11, módulos diminutos) se lee bien. ## Verificar
More…
Compilación reproducible: el APK sin firmar se reconstruye byte a byte desde este tag. ``` app-release-unsigned.apk SHA-256 5237b543ecd605f7884abb415b811c2753e01a1cf6c101c0b85b8fe172835eac ``` APK firmado (v2+v3, `--alignment-preserved`): ``` pyblock-watch-0.5.0.apk SHA-256 b83899656568094a22d45c4b90f8bdab11e6f4a11305784dc49317555f752823 ``` Certificado del firmante (sin cambios desde 0.1.0): ``` b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135 ``` `apksigcopier` confirma que el APK firmado es exactamente esa compilación sin firmar más la firma. Pasos completos en [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 5, 2026 0.4.0**PyBLØCK Watch 0.4.0** - **Live balances**: while the app is open, the selected chain's balance now refreshes every 30 s and the moment you switch chains — no more stale figures. It reuses the addresses already found, so there's no scan flicker. - **Re-centered app icon** so the black border no longer shows. - Mempool/confirmation notifications (from 0.3.0) unchanged: a receive is flagged pending, then confirmed. Verify before installing: - **Signed APK SHA-256:** `6e1aad68366f35cf3c66814977e0f8bbc0d0d4b416b784b79540787bc2a15ca3` - **Certificate SHA-256 (AppVerifier):** `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` (unchanged)
More…
- Unsigned (reproducible) APK SHA-256: `4a10be008fbce652bb7a9f596fae48b8b201a5aa3e4182a794454a2f007c53f3` Rebuild it yourself: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 5, 2026 0.3.0**PyBLØCK Watch 0.3.0** New: - **Configurable gap limit** in settings (5–100) — how deep the scan looks. The background watcher uses it too. - **Richer notifications**: distinguishes *received* / *sent* / *pending in the mempool* / *just confirmed*, on either chain. Fires on any movement. - **Confirmations per transaction**: a movements list shows how many confirmations each tx has — a mempool receive is now clearly marked "0 conf", not silently counted as final. Verify before installing: - **Signed APK SHA-256:** `9346b00fe2bc13d33aafb0ecc32b681ab7773319bc7b960ae0ded89258608974`
More…
- **Certificate SHA-256 (AppVerifier):** `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` (unchanged) - Unsigned (reproducible) APK SHA-256: `1459eee0e7b61c7161a37d682310b5c766fef2b45cc9084e957654e28fa1d8b4` Rebuild it yourself: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 5, 2026 0.2.0**PyBLØCK Watch 0.2.0** New: - **Taproot (BIP-86)** support — pick `bc1p` in the address-type selector. Verified against the BIP-86 test vectors. - **Address-type selector** in settings: Native SegWit (BIP-84, default) / Nested (BIP-49) / Legacy (BIP-44) / Taproot (BIP-86). Switching re-scans both chains. - **Balance notifications on by default** — you're told when coins arrive on either chain without opening the app. - **Scan an xpub with the camera** (QR). - App icon. Verify before installing:
More…
- **Signed APK SHA-256:** `2947ca0e1a5bccb5fc31be9e8c772b9e36bd199b157502ed288298645861fbd9` - **Certificate SHA-256 (AppVerifier):** `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` (unchanged from 0.1.0) - Unsigned (reproducible) APK SHA-256: `e668221b0eb97ffb38d039580427f63b10d01dc187f69b573d48bbda5247af8c` Rebuild it yourself: [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). - Sep 5, 2026 0.1.0**PyBLØCK Watch 0.1.0** — watch-only, reproducible build. Verify before installing: - **Signed APK SHA-256:** `99a85cf1fd974a88626e2f5a21db5fb14babf6e3c31b13e288cd90c14d095151` - **Certificate SHA-256 (AppVerifier):** `b8d7ad679fbfbe39f5640bce01d675347f52b27b7ae6f3731d2ad982c92ef135` - Unsigned (reproducible) APK SHA-256: `9c97676adc3625399c222e5958074a4303e12420e79fe01316ec5ff9b3a86b0f` Anyone can rebuild this APK from source and confirm it matches, byte for byte — see [README-REPRODUCIBLE.md](https://github.com/Kilombino/pyblock-watch/blob/master/README-REPRODUCIBLE.md). Pure Kotlin crypto (no prebuilt native key libraries), 613 dependencies pinned by SHA-256.