<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Maciej Lewandowski - Custody Engineering Notes</title>
  <link>https://maciejlewandowski.dev/</link>
  <description>Field notes from custody and wallet infrastructure: Bitcoin, EVM, Solana, and the backend systems that hold real money.</description>
  <language>en</language>
  <atom:link href="https://maciejlewandowski.dev/feed.xml" rel="self" type="application/rss+xml"/>
  <item>
    <title>Balance at 14:00 UTC Does Not Exist</title>
    <link>https://maciejlewandowski.dev/blog/point-in-time-balances/</link>
    <guid>https://maciejlewandowski.dev/blog/point-in-time-balances/</guid>
    <pubDate>Wed, 12 Aug 2026 12:00:00 GMT</pubDate>
    <description>Chains never close, so a point-in-time balance has to be derived, not queried. The anchor problem, the per-chain traps, and why reproducibility is the real requirement.</description>
  </item>
  <item>
    <title>Money in Rust: Making Illegal States Unrepresentable</title>
    <link>https://maciejlewandowski.dev/blog/rust-money-types/</link>
    <guid>https://maciejlewandowski.dev/blog/rust-money-types/</guid>
    <pubDate>Sat, 25 Jul 2026 12:00:00 GMT</pubDate>
    <description>Newtypes, phantom-typed currencies, checked arithmetic and typestate - how much of a financial bug class the compiler can take off your hands, for zero bytes.</description>
  </item>
  <item>
    <title>Your Backtest Is Lying to You</title>
    <link>https://maciejlewandowski.dev/blog/backtest-lies/</link>
    <guid>https://maciejlewandowski.dev/blog/backtest-lies/</guid>
    <pubDate>Sat, 25 Jul 2026 12:00:00 GMT</pubDate>
    <description>Look-ahead bias, survivorship, point-in-time data and overfitting - why a backtest is a replay engine, and what that demands of it.</description>
  </item>
  <item>
    <title>Why Your Deposit Detection Misses Money</title>
    <link>https://maciejlewandowski.dev/blog/deposit-detection/</link>
    <guid>https://maciejlewandowski.dev/blog/deposit-detection/</guid>
    <pubDate>Wed, 22 Jul 2026 12:00:00 GMT</pubDate>
    <description>Proxy contracts, fee-on-transfer tokens, reorgs, UTXO edge cases and Solana token accounts - and why continuous reconciliation is the only real fix.</description>
  </item>
  <item>
    <title>Transaction State Machines for Multi-Chain Custody</title>
    <link>https://maciejlewandowski.dev/blog/transaction-state-machines/</link>
    <guid>https://maciejlewandowski.dev/blog/transaction-state-machines/</guid>
    <pubDate>Wed, 22 Jul 2026 12:00:00 GMT</pubDate>
    <description>Broadcast is not done, confirmed is not final, and retries are where money gets lost. What breaks, chain by chain.</description>
  </item>
  <item>
    <title>UTXO Coin Selection in Production</title>
    <link>https://maciejlewandowski.dev/blog/utxo-coin-selection/</link>
    <guid>https://maciejlewandowski.dev/blog/utxo-coin-selection/</guid>
    <pubDate>Wed, 22 Jul 2026 12:00:00 GMT</pubDate>
    <description>Your Bitcoin balance is not a number, it is a set. Fees, dust, privacy and the concurrency problem the tutorials skip.</description>
  </item>
  <item>
    <title>Stuck Transactions at Scale</title>
    <link>https://maciejlewandowski.dev/blog/stuck-transactions/</link>
    <guid>https://maciejlewandowski.dev/blog/stuck-transactions/</guid>
    <pubDate>Wed, 22 Jul 2026 12:00:00 GMT</pubDate>
    <description>RBF, CPFP, nonce queues, expiring blockhashes and the pinning problem - a remediation playbook for transactions that will not confirm.</description>
  </item>
</channel>
</rss>
