<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Btrust Blog]]></title><description><![CDATA[Latest news and developments from Btrust]]></description><link>https://blog.btrust.tech/</link><image><url>https://blog.btrust.tech/favicon.png</url><title>Btrust Blog</title><link>https://blog.btrust.tech/</link></image><generator>Ghost 5.88</generator><lastBuildDate>Sat, 08 Aug 2026 05:30:21 GMT</lastBuildDate><atom:link href="https://blog.btrust.tech/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Quantum Computing and Bitcoin: Understanding the Risks, the Trade-offs, and the Path Forward]]></title><description><![CDATA[<p><em>Written by&#xA0;</em><a href="https://github.com/SulaimanAminuBarkindo?ref=blog.btrust.tech" rel="noreferrer"><em>Sulaiman Aminu Barkindo</em></a></p><p>For the past few weeks, I&#x2019;ve been trying to understand the quantum computer risk and the options Bitcoin has at a technical level. I&#x2019;ve gone through various sources, from reading post-quantum cryptography articles to following the bitcoin-dev mailing list and</p>]]></description><link>https://blog.btrust.tech/quantum-computing-and-bitcoin-understanding-the-risks-the-trade-offs-and-the-path-forward/</link><guid isPermaLink="false">6a629875a45d04b407ba40d1</guid><category><![CDATA[Btrust]]></category><category><![CDATA[Technical]]></category><category><![CDATA[Bitcoin]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Mon, 03 Aug 2026 09:51:01 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/08/photo_6017342425895997086_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/08/photo_6017342425895997086_y.jpg" alt="Quantum Computing and Bitcoin: Understanding the Risks, the Trade-offs, and the Path Forward"><p><em>Written by&#xA0;</em><a href="https://github.com/SulaimanAminuBarkindo?ref=blog.btrust.tech" rel="noreferrer"><em>Sulaiman Aminu Barkindo</em></a></p><p>For the past few weeks, I&#x2019;ve been trying to understand the quantum computer risk and the options Bitcoin has at a technical level. I&#x2019;ve gone through various sources, from reading post-quantum cryptography articles to following the bitcoin-dev mailing list and Delving Bitcoin.</p><p>This article is my way of stating what I&#x2019;ve learned, where we are right now, what options exist, and why finding the right path forward isn&#x2019;t as simple as it might first appear.</p><h2 id="how-bitcoins-cryptography-works-and-where-it-breaks">How Bitcoin&apos;s Cryptography Works and Where It Breaks</h2><p>To understand the struggle for a solution, understanding the problem is very important. Bitcoin&apos;s cryptographic foundation has held for over 17 years. The Elliptic Curve Discrete Logarithm Problem (ECDLP) which is the security base for Elliptic Curve Digital Signature Algorithm (ECDSA) that Bitcoin originally uses, and the Schnorr signatures introduced in Taproot, are computationally infeasible to break with classical hardware &#x2014; the best known attack, called square-root attack, would require computational effort on the order of 2<sup>n/2</sup> operations, which in the case of Bitcoin is 2<sup>256/2</sup> lying far beyond the reach of any general or special (not quantum) purpose computer that could realistically be built. Math is not the problem.</p><p>The problem is what happens when the math stops being the hard part.</p><p>Bitcoin uses ECDSA, which, unlike RSA that depends on Integer factorisation, ECDSA depends on ECDLP. Even more devastating, quantum computers were estimated to be able to break ECDSA with the same level of security as RSA faster, as it requires fewer qubits.</p><p>To mathematically represent the problem, say we have a public key <strong><em>P</em> </strong>and a known generator point <strong><em>G</em> </strong>on the curve:</p>
<!--kg-card-begin: html-->
<div style="text-align: center;"><b><i>P = k &#xB7; G</i></b></div>
<!--kg-card-end: html-->
<p>With <strong><em>k</em></strong> being the private key scalar, recovering&#xA0;<strong><em>k</em></strong> from <strong>P</strong> and <strong>G </strong>is computationally infeasible. Because, for elliptic curve points, there is no division like there is in normal arithmetic.&#xA0;</p><p>The best known attack on ECDLP known as square-root attack, with algorithms such as <strong>Pollard&apos;s rho</strong> and <strong>Baby-step Giant-step (BSGS)</strong> algorithms that both run in <strong>O(&#x221A;n)</strong> complexity, which for Bitcoin&apos;s secp256k1 curve means roughly 2<strong>&#x221A;256</strong> which is 2<sup>256/2</sup>&#xA0;operations. Practically infeasible on any current hardware.</p><p>However, with Shor&apos;s algorithm, ECDLP can be solved in polynomial time. Given a public key <strong>P</strong>, a quantum computer recovers a private key k directly.</p><p>The threat does not target both symmetric and asymmetric crypto algorithms equally. In terms of symmetric algorithms like AES, the quantum threat halves the difficulty of breaking the algorithm, so what needs to be done as a countermeasure is to just increase the key size. For example, AES key size &gt;= 256 should be what is used going forward.&#xA0;</p><p>Looking at asymmetric algorithms, which fall broadly into three categories: integer factorization as used in RSA, the discrete logarithm problem (DLP) over finite fields, and the elliptic curve discrete logarithm problem (ECDLP) which is itself a special case of DLP over elliptic curve groups. Quantum computers&apos; effect is devastating on these, and we need completely different algorithms that are resistant to quantum computing threats, which are called post-quantum cryptography algorithms.</p><p>The threat is not unique to ECDLP, For example, RSA, which secures most banking systems and the internet at large, relies on the integer factorization problem. Say n is a large public modulus, computed by multiplying two large primes&#xA0;<strong><em>p</em></strong> and <strong><em>q</em></strong>.&#xA0;</p>
<!--kg-card-begin: html-->
<div style="text-align: center;"><b><i>n = p &#xB7; q</i></b></div>
<!--kg-card-end: html-->
<p>It is easy to compute but computationally infeasible to reverse. In other words, recovering&#xA0;<strong><em>p</em></strong> and <strong><em>q</em></strong> from <strong><em>n</em></strong> is the hard problem. That is, <strong><em>n</em></strong> is publicly available for all to see, but factoring it to get the two primes that were multiplied to get n is computationally infeasible. The best classical algorithm, the <a href="https://en.wikipedia.org/wiki/General_number_field_sieve?ref=blog.btrust.tech"><u>General Number Field Sieve</u></a>, runs in sub-exponential time but is practically infeasible for very large&#xA0;<strong><em>n</em></strong>.</p><p>What if factoring is no longer hard? Once an attacker recovers <strong><em>p</em></strong> and <strong><em>q</em></strong>, Euler&apos;s totient <strong><em>(&#x3D5;)</em></strong> can be calculated using the formula:</p>
<!--kg-card-begin: html-->
<div style="text-align: center;"><b><i>&#x3D5;(n) = (p-1)(q-1)</i></b></div>
<!--kg-card-end: html-->
<p>And from the parameters <strong><em>&#x3D5;(n)</em></strong> and the public exponent <strong><em>e</em></strong>, the decryption key <strong><em>d</em></strong> is easily recovered using modular inverse with the help of <a href="https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm?ref=blog.btrust.tech"><u>Extended Euclidean Algorithm (EEA)</u></a>:</p>
<!--kg-card-begin: html-->
<div style="text-align: center;"><b><i>d &#xB7; e &#x2261; 1 (mod &#x3D5;(n))</i></b></div>
<!--kg-card-end: html-->
<p>This means, once the integer factorization is solved, the security of RSA collapses.</p><p>Interesting to note throughout this discussion is that the method for proving the security of cryptographic schemes is by making them public and having enough smart researchers, cryptanalysts, and organizations to try and fail at breaking them many times and for a long time. Because the assumptions are made public and well-defined, it can be monitored. The moment a meaningful break is discovered and disclosed, what has broken will be known immediately and what needs replacing. So making it public is both a feature and foundation.</p><h2 id="what-quantum-computers-do-differently">What Quantum Computers Do Differently</h2><p>Unlike classical computers that work with bits (0 or 1), Quantum computers work with quantum bits (qubits), which are capable of representing information in 0, 1, or both at the same time through <a href="https://www.spinquanta.com/news-detail/what-is-quantum-superposition-and-how-it-powers-quantum-computing?ref=blog.btrust.tech"><u>superposition</u></a>. It uses <a href="https://www.spinquanta.com/news-detail/what-is-interference-in-quantum-computing-and-how-it-powers-quantum-computing?ref=blog.btrust.tech"><u>interference</u></a> that manipulates the probability amplitudes of quantum states (superpositions) to amplify correct solutions and cancel out incorrect ones.</p><p>This does not mean quantum computers are universally faster. It only means quantum computers are exceptionally faster at solving specific mathematical structures. But for most tasks you will want to use normal classical hardware, as quantum computers are like special-purpose computers that are really good, particularly at breaking mathematical functions underlying integer factorization and discrete logarithm problems.</p><h2 id="why-the-threat-is-real-before-the-machine-exists">Why the Threat is Real Before the Machine Exists</h2><p>A Cryptographically Relevant Quantum Computer (CRQC) that can execute Shor&apos;s algorithm at scale does not exist today. Opinions as to the timeline for its existence are divided; some believe it may be available within a decade, others two decades. The point of agreement is that we are traveling at a pace towards its existence.</p><p>Bitcoin transactions are public, and a large amount of bitcoin is secured using P2PK with visible public keys on-chain. Also, even with other kinds of outputs that are behind a hash, p2pkh address reuse can make them vulnerable. Because when Bitcoin is spent, the public key is revealed, and if the same address is reused to receive Bitcoin, either through change or external output, the public key for that was known from the first spend, and the Bitcoin in those addresses will be vulnerable to attack. This means the public keys can be collected, stored, and broken once quantum capability arrives. This is also called <a href="https://en.wikipedia.org/wiki/Harvest_now,_decrypt_later?ref=blog.btrust.tech"><u>harvest now, decrypt later</u></a>.</p><p>Major work has been ongoing in regard to standardization and discussions around migration and choice of signature scheme. As most cryptography students know, most of the current cryptographic schemes were standardized by NIST and this threat of quantum computing is no different, as NIST has been working on standardizing post-quantum cryptographic schemes since 2016, and after almost a decade, in 2024, it finalized two signature schemes. One lattice-based published as <a href="https://csrc.nist.gov/pubs/fips/204/final?ref=blog.btrust.tech"><u>FIPS 204</u></a> and the other hash-based published as <a href="https://csrc.nist.gov/pubs/fips/205/final?ref=blog.btrust.tech"><u>FIPS 205</u></a>.&#xA0;</p><p>The Bitcoin development community is also now more alert about the quantum computing risk and what it will take to perform migration. It is rare to receive an alert from engagements and discussions among developers and cryptographers in Bitcoin forums such as the bitcoin-dev mailing list and <a href="https://delvingbitcoin.org/?ref=blog.btrust.tech"><u>devlingbitcoin</u></a> that does not involve quantum. The engagements have moved from theoretical to active engineering. See <a href="https://github.com/bitcoin/bips/blob/master/bip-0360.mediawiki?ref=blog.btrust.tech"><u>bip360</u></a> and <a href="https://github.com/bitcoin/bips/blob/master/bip-0361.mediawiki?ref=blog.btrust.tech"><u>bip361</u></a>.</p><p>However, Bitcoin has some specific needs, which makes the answer to which scheme Bitcoin should adopt more complicated than it first appears.</p><h2 id="what-bitcoin-actually-needs-from-a-signature-scheme">What Bitcoin Actually Needs From a Signature Scheme</h2><p>For us to evaluate any post-quantum scheme, we need to list out the needs of Bitcoin from a signature scheme so that we can evaluate each against these needs. Apart from being mathematically sound, any post-quantum candidate to be adopted by Bitcoin should satisfy the following:</p><h3 id="signature-size">Signature Size</h3><p>The size of a signature is very important in Bitcoin, as every signature lives on-chain. This means a significant increase in the size of signatures will affect the number of transactions that can be fit in a block; affecting the number of transactions in a block will affect the efficiency of transactions. Since you can only fit in a small number of transactions, then more transactions will have to wait for the block to be confirmed before they are picked next. Currently, this is, on average, after 10 minutes, which is already a bit slow.</p><p>With the block only fitting a smaller number of transactions than it currently does, block space will become more expensive as demand for it will be higher. which will affect usage of the blockchain by ordinary users.</p><p>Lastly, full nodes will also be affected by demanding more node storage, making it more difficult for ordinary users to run full nodes and be independent.</p><h3 id="signing-and-verification-speed">Signing and Verification Speed</h3><p>Verification of every transaction in every block is being done by each full node. A significant decrease in speed will affect node performance and create centralization where only highly resourced nodes can do well. This will go against Bitcoin&apos;s security model.</p><p>In regard to signing speed, it matters a lot, especially for payment channels like in the Lightning Network, which require quick state updates. If the speed decreases, we will experience higher latency in a flow that was built to be almost real-time.</p><h2 id="security-assumptions-and-cryptanalytic-maturity">Security Assumptions and Cryptanalytic Maturity</h2><p>Bitcoin has over a trillion-dollar market cap. Therefore, it makes absolute sense to be conservative in changing anything that, if done wrong, can affect the savings of people that believe in it. This is how changes have been happening in Bitcoin with careful review, well-understood demands, and clear constructions.</p><p>Therefore, it is of high importance to ensure the signature scheme being adopted is battle-hardened and has gone through rigorous public scrutiny, and cryptanalysts have had as much time as they need to try and break the scheme, as trust in cryptographic schemes is built through failed attacks over time.</p><p>NIST has selected two signature scheme finalists, which means they are credible. The process ran from 2016 to 2024 and went through rigorous public attacks. A lot of early submissions were broken during that process. But we should still be conservative, as Bitcoin, holding over a trillion dollars in value, should be handled carefully.</p><h2 id="constant-time-implementation">Constant-Time Implementation</h2><p>Constant time implementation is a security measure to prevent timing attacks, which are one of the side channel attacks where a system is exploited by measuring how long it takes to perform operations on different inputs.</p><p>A constant-time implementation of a post-quantum signature scheme is important, as Bitcoin&apos;s signing infrastructure may operate in an adversarial environment, and if the duration of a signing operation leaks information about the private key or even a few bits of the private key, hence the full private key can be recovered through statistical analysis, then the signature scheme being mathematically sound may not be as useful as it should have been. Also nowadays compilers are very smart and silently undo constant-time codes.</p><h2 id="the-evaluation-criteria">The Evaluation Criteria</h2>
<!--kg-card-begin: html-->
<!DOCTYPE html><html><head><meta charset="UTF-8"><style>table{border-collapse:collapse;background:#fff}td,th{border:1pt solid #000;background:#fff;padding:5pt;font-family:Arial}p{margin:0}</style></head><body><table><tr><th>Criterion</th><th>Bitcoin&apos;s Requirement</th></tr><tr><td>Signature size</td><td>64 bytes (Schnorr, BIP-340)</td></tr><tr><td>Verification speed</td><td>Fast enough for full node throughput</td></tr><tr><td>Signing speed</td><td>Fast enough for payment channel state updates</td></tr><tr><td>Security assumption</td><td>Well-studied, conservative, quantum-resistant</td></tr><tr><td>Cryptanalytic maturity</td><td>Decades of failed public attacks</td></tr><tr><td>Constant-time implementation</td><td>Reliably achievable in practice</td></tr></table></body></html>
<!--kg-card-end: html-->
<p>As we will see, none of the two NIST finalist signature schemes satisfies all six cleanly.</p><h2 id="the-candidates-ml-dsa-and-slh-dsa">The Candidates: ML-DSA and SLH-DSA</h2>
<!--kg-card-begin: html-->
<!DOCTYPE html><html><head><meta charset="UTF-8"><style>table{border-collapse:collapse;background:#fff}td,th{border:1pt solid #000;background:#fff;padding:5pt;font-family:Arial}p{margin:0}</style></head><body><table><tr><th>Criterion</th><th>ML-DSA (FIPS 204)</th><th>SLH-DSA (FIPS 205)</th></tr><tr><td>Original Algorithm</td><td>CRYSTALS-Dilithium</td><td>SPHINCS+</td></tr><tr><td>Hardness Assumption</td><td>Module Lattice (MLWE/MSIS)</td><td>Hash function security (Stateless)</td></tr><tr><td>NIST Status</td><td>Finalized (August 2024)</td><td>Finalized (August 2024)</td></tr><tr><td>Signature Size</td><td>~2,420 bytes (ML-DSA-65)</td><td>~8,080&#x2013;17,088 bytes</td></tr><tr><td>Public Key Size</td><td>~1,312 bytes (ML-DSA-65)</td><td>32 bytes</td></tr><tr><td>Signing Speed</td><td>Very Fast</td><td>Very Slow (high CPU cost)</td></tr><tr><td>Verification Speed</td><td>Very Fast</td><td>Moderate</td></tr><tr><td>Constant-Time</td><td>Moderate (lattice-based)</td><td>High (very clean)</td></tr><tr><td>Security Confidence</td><td>High (Lattice maturity)</td><td>Highest (Minimal assumptions)</td></tr></table></body></html>
<!--kg-card-end: html-->
<p>With Bitcoin currently having signature sizes between 64 and 73 bytes and 32 bytes public keys, both NIST signature scheme finalists have some drawbacks compared to Bitcoin&apos;s current scheme. The question is which tradeoffs Bitcoin is willing to accept.</p><h3 id="ml-dsa-dilithium">ML-DSA (Dilithium)</h3><p>This is built based on Module Learning With Errors (MLWE) which is a lattice-based assumption considered to be more conservative than <a href="https://en.wikipedia.org/wiki/NTRUEncrypt?ref=blog.btrust.tech"><u>NTRU</u></a> style lattices. It also has a nice feature (rejection sampling over integers), which makes it easier to write constant-time code that protects against side-channel attacks. But the rejection sampling over integers does not mean developers should not be careful in implementation, because the rejection process itself may end up leaking information.</p><p>While ML-DSA has nice implementation security, it has a significant drawback in terms of signature size. With approximately 2,420 bytes, it&apos;s roughly 38 times larger than a Schnorr signature. Therefore, integrating it as it is on Bitcoin would affect the network&apos;s throughput; transaction fees would go up, and hardware requirements for running a full node would increase significantly. This means it may require rethinking Bitcoin&apos;s scaling roadmap entirely.&#xA0;</p><h3 id="slh-dsa-sphincs">SLH-DSA (SPHINCS+)</h3><p>This was standardized by NIST in case of an emergency where some mathematician suddenly identifies a weakness with a lattice-based signature scheme. In that scenario, SLH-DSA will serve as a fallback. It carries the highest cryptanalytic maturity because its security relies entirely on hash functions like SHA-256 or SHAKE, which are some of the oldest primitives in cryptography. Furthermore, due to it being essentially just a massive tree of hashes, achieving constant-time execution is straightforward as there are well-vetted libraries.</p><p>With all the nice features and being an old primitive, it&apos;s still catastrophic when it comes to signature size, as the SLH-DSA signatures are massive, ranging from approximately 8,000 bytes to over 49,000 bytes. This means a single signature at the small end may be 126 times larger than Schnorr, which shows this is practically incompatible to be used as it is with Bitcoin&apos;s current architecture.</p><h2 id="why-neither-candidate-fits-bitcoin-as-it-stands">Why Neither Candidate Fits Bitcoin as It Stands</h2><p>When we look at the two finalists together, a clear (maybe fortunate in a way that will make us innovate some more better ways for Bitcoin) pattern shows for Bitcoin: one scheme offers reliable implementation security, and the other offers a very strong mathematical foundation, but they are both destructive to the block size of Bitcoin and other resource constraints we have mentioned.</p><p>This is not a failure in research by the cryptography community. It shows the cost that comes with quantum resistance. The mathematical structures used by these schemes produce more massive signatures than classical signature schemes. Bitcoin will need to engineer around that and not expect a direct replace-in scheme.</p><h2 id="where-the-research-is-pointing">Where the Research Is Pointing</h2><p>Hope is not lost as the Bitcoin developer community has been discussing how to use those signature schemes with small to no devastating effect on the Bitcoin network itself. Currently the most promising path seems to be the Zero-Knowledge Proofs (STARKs) to compress the data. A block&apos;s worth of post-quantum signatures could be aggregated by miners into a single compact proof. This way, full nodes will not experience a lot of impact, as they will not need to download thousands of multi-kilobyte signatures. Combining this approach with output types like P2MR and the hash-based accumulator Utreexo would enable verifying post-quantum signatures without significantly affecting the block space.</p><p>This means also the weight of these signatures might eventually be moved off-chain or into some cryptographic summaries and still preserve Bitcoin&apos;s decentralization.</p><h2 id="conclusion">Conclusion</h2><p>Cryptographically Relevant Quantum Computers do not exist yet. However, there has been a lot of progress in research towards ensuring its existence, and with the harvest now a decrypt-later attack, it becomes important to start working towards approaches and proposals for migrating existing systems that depend on asymmetric cryptographic assumptions of ECDLP and integer factorization. Bitcoin&apos;s security depends on the ECDLP which makes it vulnerable to quantum computer attack. Therefore, the question is no longer whether the Bitcoin community should think about post-quantum migration but when and how the migration can happen.&#xA0;</p><p>However, migration of Bitcoin to a post-quantum signature scheme is not straightforward due to Bitcoin&apos;s strict limitations on signature size and computation resources. While the two NIST finalists, ML-DSA and SLH-DSA offer resistance to quantum threats, their large size would significantly affect the network under current architecture.&#xA0;</p><p>Current discussions show there is light at the end of the tunnel. With STARK-based aggregation, P2MR and careful protocol upgrades can help reduce the overhead of the post-quantum signature schemes without sacrificing decentralization. The conservative approach to upgrading Bitcoin that kept the network secure for over 17 years should still be observed in updating its cryptographic foundation deliberately, publicly, and before the threat arrives.</p><h2 id="references">References</h2><p>Shor, P.W. (1994). Algorithms for Quantum Computation: Discrete Logarithms and Factoring. 35th Annual Symposium on Foundations of Computer Science, IEEE. <a href="https://arxiv.org/abs/quant-ph/9508027?ref=blog.btrust.tech"><u>https://arxiv.org/abs/quant-ph/9508027</u></a></p><p>Brumley, D. &amp; Boneh, D. (2005). Remote Timing Attacks are Practical. Computer Networks, 48(5). <a href="https://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf?ref=blog.btrust.tech"><u>https://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf</u></a></p><p>Jancar, J. et al. (2020). Minerva: The Curse of ECDSA Nonces. IACR Transactions on Cryptographic Hardware and Embedded Systems. <a href="https://eprint.iacr.org/2020/728?ref=blog.btrust.tech"><u>https://eprint.iacr.org/2020/728</u></a></p><p>Moghimi, D. et al. (2020). TPM-FAIL: TPM Meets Timing and Lattice Attacks. USENIX Security 2020. <a href="https://eprint.iacr.org/2019/1275?ref=blog.btrust.tech"><u>https://eprint.iacr.org/2019/1275</u></a></p><p>NIST (2024). FIPS 204 &#x2014; ML-DSA, FIPS 205 &#x2014; SLH-DSA, FIPS 206 Draft &#x2014; FN-DSA. <a href="https://csrc.nist.gov/projects/post-quantum-cryptography?ref=blog.btrust.tech"><u>https://csrc.nist.gov/projects/post-quantum-cryptography</u></a></p><p>Wuille, P. et al. (2020). BIP-340: Schnorr Signatures, BIP-341: Taproot. <a href="https://github.com/bitcoin/bips?ref=blog.btrust.tech"><u>https://github.com/bitcoin/bips</u></a></p><p>BIP-360: Pay to Quantum Resistant Hash (2024), BIP-361: Quantum-Resistant Migration Plan (2025). <a href="https://github.com/bitcoin/bips?ref=blog.btrust.tech"><u>https://github.com/bitcoin/bips</u></a></p><p>Osuntokun, O. (2026). Post-Quantum BIP-86 Recovery via zk-STARK Proof of BIP-32 Seed Knowledge. Bitcoin-Dev Mailing List, April 2026. <a href="https://groups.google.com/g/bitcoindev/c/Q06piCEJhkI/m/Ly9J23FlAwAJ?ref=blog.btrust.tech"><u>https://groups.google.com/g/bitcoindev/c/Q06piCEJhkI/m/Ly9J23FlAwAJ</u></a></p><p>Chaincode Labs (2024). Bitcoin and Quantum Computing: Current Status and Future Directions. <a href="https://chaincode.com/bitcoin-post-quantum.pdf?ref=blog.btrust.tech"><u>https://chaincode.com/bitcoin-post-quantum.pdf</u></a></p>]]></content:encoded></item><item><title><![CDATA[Celebrating 11 African Builders Beyond the 2026 BOSS Challenge]]></title><description><![CDATA[<p>The BOSS Challenge may be over, but for this year&#x2019;s finalists, the work has not stopped.</p><p>They are still opening pull requests, responding to reviews and building tools for Bitcoin and the Lightning Network. Some are improving the projects they started during the challenge. Others have moved into</p>]]></description><link>https://blog.btrust.tech/celebrating-11-african-builders-beyond-the-2026-boss-challenge/</link><guid isPermaLink="false">6a6c4be5a45d04b407ba4465</guid><category><![CDATA[Btrust Builders]]></category><dc:creator><![CDATA[Btrust Builders]]></dc:creator><pubDate>Fri, 31 Jul 2026 09:23:13 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_6008025967521107335_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_6008025967521107335_y.jpg" alt="Celebrating 11 African Builders Beyond the 2026 BOSS Challenge"><p>The BOSS Challenge may be over, but for this year&#x2019;s finalists, the work has not stopped.</p><p>They are still opening pull requests, responding to reviews and building tools for Bitcoin and the Lightning Network. Some are improving the projects they started during the challenge. Others have moved into new repositories, found new problems to work on or started helping the next group of developers find their way into the ecosystem.</p><p>Together, their stories show that the most valuable part of a program like BOSS is not simply finishing a project, but leaving with the confidence, skills and community to keep going.</p><h2 id="first-what-is-the-boss-challenge"><strong>First, What is the BOSS Challenge?</strong></h2><p>Created by <a href="https://chaincode.com/?ref=blog.btrust.tech"><u>Chaincode Labs</u></a>, the <a href="https://bosschallenge.xyz/?ref=blog.btrust.tech"><u>&#x20BF;OSS Challenge</u></a> is a global program for developers who want to begin a career in Bitcoin open-source software. It is also one of the most technical and demanding programs of its kind.</p><p>Participants do not just watch lectures or follow tutorials. They write code, read Bitcoin specifications, debug failed implementations and work through exercises that require a real understanding of how Bitcoin works. They are expected to explore unfamiliar codebases, ask good questions and learn how to find answers on their own.</p><p>The program begins with a fully guided month of coding exercises and technical learning, with support from active Bitcoin contributors. After that first month, top performers are invited to continue for two more months of advanced mentorship with Chaincode Labs. During this stage, they work on proof-of-concept and <a href="https://bosschallenge.xyz/portfolioprojects?ref=blog.btrust.tech"><u>portfolio projects</u></a> and begin collaborating with established Bitcoin and Lightning projects.</p><p>The rest of the cohort moves into partner-supported activities, including <a href="https://pathways.btrust.tech/?ref=blog.btrust.tech"><u>Btrust Builders pathways</u></a>, where they can continue developing their skills and engaging with the wider open-source community.</p><p>This year, we partnered with Chaincode Labs again to support developers from our talent pipeline and learning pathways who wanted to take part in BOSS.</p><p>Of the 623 developers who applied to the program through our pipeline, this feature follows eleven participants whose journeys stood out across the challenge, from portfolio builders and technical performers to developers who continued contributing after the program.</p><p>We had already seen what could happen after BOSS. Last year, alumni from the program went on to receive open-source funding from <a href="https://www.btrust.tech/grants/developer?ref=blog.btrust.tech"><u>Btrust</u></a> and the <a href="https://hrf.org/program/financial-freedom/bitcoin-development-fund?ref=blog.btrust.tech"><u>Human Rights Foundation</u></a>. So we partnered with Chaincode Labs again, hoping to help another group of developers move from learning about Bitcoin to actively contributing to it. That is already happening.</p><h2 id="their-journeys-started-long-before-boss"><strong>Their Journeys Started Long Before BOSS</strong></h2><p>Although BOSS was a major step for these developers, it was rarely their first one.</p><p>Many arrived after taking part in programs such as Btrust Builders, <a href="https://www.hack4freedom.com/?ref=blog.btrust.tech"><u>Hack4Freedom</u></a>, Chaincode seminars, <a href="https://dadadevs.com/?ref=blog.btrust.tech"><u>Dada Devs</u></a>, <a href="https://freerouting.africa/bootcamps/?ref=blog.btrust.tech"><u>Africa Free Routing bootcamps</u></a>, and GitHub&#x2019;s All In Africa program. Some had studied Mastering Bitcoin. Others had learned to work with Bitcoin Core through the command line or developed their Python and Rust skills through structured language pathways.</p><p>Sharon Nkatha, for example, completed the 2025 Mastering Bitcoin Cohort by Dada Devs. She later went through the Btrust Builders Language Clubs cohort, where she focused on Python, before joining BOSS.</p><p>These programs did not make BOSS easy. What they did was give the developers a foundation to build on. They became more comfortable using GitHub, reading technical material, writing code and discussing difficult Bitcoin concepts with other people.</p><p>Just as importantly, they found communities that helped them stay on course.</p><p>Participants spoke about support from <a href="https://x.com/BitDevsLagos?ref=blog.btrust.tech"><u>BitDevs Lagos</u></a>, <a href="https://x.com/BitDevsNBO?ref=blog.btrust.tech"><u>BitDevs Nairobi</u></a> and <a href="https://x.com/BitDevsKaduna?ref=blog.btrust.tech"><u>BitDevs Kaduna</u></a>. They mentioned mentors who pointed them towards the right materials, friends who helped them debug and peers who kept checking in when the workload became difficult.</p><p>That support mattered. Many of them were balancing BOSS with school, full-time work, exams, mentoring responsibilities and everyday life. The program required more than technical skill. It required discipline, patience and a willingness to keep going when the code did not work.</p><h2 id="learning-that-you-do-not-need-to-know-everything"><strong>Learning That You Do Not Need to Know Everything</strong></h2><p>Before joining BOSS, several finalists thought they needed to understand every part of Bitcoin before they could contribute.</p><p>Abdullateef Mubarak was one of them.</p><blockquote><em>Initially, I thought I had to understand absolutely everything about Bitcoin before I could even think about contributing. The BOSS Challenge completely changed that mindset.</em></blockquote><p>He came to understand that Bitcoin is simply too broad for one person to master every part of it. Instead, a developer can choose an area, such as transaction formats, opcodes, wallets or the Lightning Network, and build useful knowledge there.</p><p>Abraham Ujah experienced a similar change.</p><blockquote><em>The BOSS Challenge helped me realise there wasn&#x2019;t even a facade at all. It helped me understand that Bitcoin open source is accessible to anyone willing to contribute and do meaningful work.</em></blockquote><p>For Sharon, the change became real when she learned how to navigate repositories, open pull requests and respond to reviewers.</p><blockquote><em>It transformed how I see it, from something intimidating and distant to something I can actively contribute to. I now know how to open PRs, respond to reviewers, and identify issues. Bitcoin open-source development feels like my space too.</em></blockquote><p>That shift in confidence appears across the group, and is also visible in what they have done since the programme ended.</p><h2 id="where-they-are-building-now"><strong>Where They Are Building Now</strong></h2><h3 id="abraham-ujah"><strong>Abraham Ujah</strong></h3><p><a href="https://github.com/Abeeujah?ref=blog.btrust.tech"><u>Abraham</u></a> came into BOSS with experience from Chaincode&#x2019;s Bitcoin and Lightning seminars, the Africa Free Routing Lightning Developer Bootcamp, Rust for Bitcoiners and Bitcoin Core Principles. He had also contributed to Apache SedonaDB, where he learned how to turn written technical specifications into working code.</p><p>During the challenge, he built two Rust projects. <a href="https://github.com/Abeeujah/sef?ref=blog.btrust.tech"><u>Secure Fountain</u></a> explores how Luby Transform fountain codes could reduce the storage demands of running a Bitcoin node. <a href="https://github.com/Abeeujah/memq?ref=blog.btrust.tech"><u>Memq</u></a> is a high-performance bitcoin mempool query engine designed to support real-time fee estimation through gRPC and shared memory.</p><p>Abraham is now contributing to rust-bitcoin and rust-lightning. He is also on a path towards getting a grant. His goal is to make Bitcoin open source development his career.</p><h3 id="jolade-okunlade"><strong>Jolade Okunlade</strong></h3><p><a href="https://github.com/Jolah1?ref=blog.btrust.tech"><u>Jolade</u></a> stood out not only because of what she built, but because she kept showing up. She remained closely involved with her portfolio project, responded quickly to feedback and stayed active in the community throughout the programme.</p><p>Her BOSS project, <a href="https://github.com/Jolah1/dust-cleaner?ref=blog.btrust.tech"><u>dust-cleaner</u></a>, is a Rust command-line tool that connects directly to Bitcoin Core and helps wallet users identify suspicious dust UTXOs. Dust attacks can weaken a user&#x2019;s privacy if tiny outputs are later spent alongside other funds, allowing blockchain observers to connect addresses that may belong to the same person.</p><p>Dust-cleaner scans a wallet, identifies suspicious outputs and creates PSBTs that users can review, sign and broadcast themselves. The tool does not handle private keys or automatically broadcast transactions.</p><p>After BOSS, Jolade built GhostKey, which won first place at the <a href="https://blog.evento.so/hack4freedom-lagos-building-the-next-generation-of-freedom-tech-developers/?ref=blog.btrust.tech"><u>2026 Hack4Freedom hackathon</u></a> in Lagos.</p><p>GhostKey is a non-custodial bitcoin inheritance tool built around a dead man&#x2019;s switch. A holder can name an heir and set a check-in period while keeping control of the funds during their lifetime. If the holder stops checking in, the heir receives a way to claim the bitcoin directly.</p><p>Jolade is also building BitPilot, an interactive Bitcoin education platform, and contributing to the Lightning Dev Kit ecosystem.</p><h3 id="winterrdog"><strong>Winterrdog</strong></h3><p><a href="https://github.com/winterrdog?ref=blog.btrust.tech"><u>Winterrdog</u></a> entered BOSS with general open-source experience but no earlier Bitcoin training program. He described the challenge as &#x201C;DIY with no training wheels&#x201D;, which suited the way he likes to learn; by entering difficult problems and creating structure for himself.</p><p>During the program, he often worked at night, setting aside several quiet hours to read, plan, implement and debug his solutions. Although he did not complete every exercise before time ran out, the experience gave him enough confidence to take on work that had previously seemed beyond him.</p><p>He contributed a backend stability fix to Saving Satoshi, helping the service handle periods of heavy demand more reliably. The patch was later merged.</p><p>He then began participating in the Bitcoin Core review process. In one review, his feedback helped improve the decision logic for a fix related to low file-descriptor limits on Unix systems, and he was credited as a co-author on the resulting change. He has since taken part in reviews across several Bitcoin Core pull requests and opened a pull request of his own.</p><p>Btrust also supported his travel and accommodation for Bitcoin++ Nairobi, helping him connect more closely with contributors in the wider ecosystem.</p><h3 id="abdullateef-mubarak"><strong>Abdullateef Mubarak</strong></h3><p><a href="https://github.com/techLateef/?ref=blog.btrust.tech"><u>Abdullateef</u></a> is completing his final year of university in Abuja while building a deeper understanding of Bitcoin infrastructure in Go.</p><p><a href="https://github.com/TechLateef/psbt?ref=blog.btrust.tech"><u>His project</u></a> focuses on PSBT v2 support for btcd. Partially Signed Bitcoin Transactions allow wallets, hardware signers and multisig coordinators to exchange the information needed to build and sign a transaction without sharing private keys. Abdullateef&#x2019;s work supports both BIP 174&#x2019;s PSBT v0 format and the newer PSBT v2 format described in BIP 370.</p><p>He designed the core parser, compact-size integer utilities and multi-version validation logic. He then brought the work into the btcd ecosystem through a pull request that is awaiting review.</p><p>Abdullateef has also been studying LND and reviewing pull requests to understand how the codebase fits together. He is expected to graduate in June 2026 and is preparing himself for deeper mentorship and a possible future open-source grant opportunity.</p><p>He has also been thoughtful about how he uses AI while learning. Rather than allowing tools to replace his understanding, he has focused on reading specifications, tracing the code and making sure he can explain the systems he is working on.</p><h3 id="aaliyah-junaid"><strong>Aaliyah Junaid</strong></h3><p><a href="https://github.com/Leeyah-123?ref=blog.btrust.tech"><u>Aaliyah</u></a> came into BOSS after winning the 2025 Hack4Freedom hackathon. During the challenge, she began contributing to the Bitcoin Dev Kit ecosystem through work related to BIP 329 wallet labels.</p><p>BIP 329 proposes a shared format for importing and exporting labels for Bitcoin addresses, transactions and UTXOs. Without a common standard, users can lose useful wallet information when moving between applications.</p><p>Aaliyah researched the specification and worked on an example showing how developers could use bdk_wallet with the bip329 crate. The contribution changed direction during review and did not move as quickly as she hoped, but that became part of her introduction to real open-source work. Contributions can stall, scopes can change and review can require several rounds of learning and revision.</p><p>She has continued contributing to Polar and exploring Payjoin, Bitcoin privacy and Python-based projects. Her BDK work also remains part of her ongoing learning process.</p><p>Aaliyah has since returned to Hack4Freedom as a mentor. As an alumna and first-place winner from the Kaduna edition, she joined the Lagos edition to share practical advice with participating teams.</p><h3 id="usman-umar-garba"><strong>Usman Umar Garba</strong></h3><p><a href="https://github.com/Ugarba202?ref=blog.btrust.tech"><u>Usman</u></a> first participated in BOSS in 2025 and returned in 2026 determined to go further. Before joining the program again, he had taken part in the Africa Free Routing Lightning developer bootcamp and worked as a frontend developer on BitTicket. He is also a member of BitDevs Kaduna, where he has continued learning alongside people interested in Bitcoin and Lightning development.</p><p>For his portfolio work, Usman chose Rust partly because he wanted to strengthen his skills in the language. He built the <a href="https://github.com/Ugarba202/Lightning-UTXO-Anchor-Manager?ref=blog.btrust.tech"><u>Lightning UTXO &amp; Anchor Manager</u></a>, a library and command-line tool for analysing the UTXOs held by Lightning nodes that use anchor channels.</p><p>Poor UTXO management can leave a node operator with fragmented funds or without suitable outputs for emergency fee bumping. Usman&#x2019;s project explored how better wallet policies could help node operators prepare for high-fee periods and keep their Lightning infrastructure reliable.</p><p>He is now continuing to learn and has explored contributions to LND, Polar and other Lightning projects. He is also developing SatsFor, a Lightning-powered mobile application for instant, borderless creator tipping.</p><h3 id="ikechukwu-obunadike"><strong>Ikechukwu Obunadike</strong></h3><p><a href="https://github.com/psychemist?ref=blog.btrust.tech"><u>Chukwu</u></a> was one of the strongest technical performers during the first month of the challenge.</p><p>Before BOSS, he completed the Btrust Rust for Bitcoiners pathway and studied Mastering Bitcoin independently. He also became involved with BitDevs Lagos and helped organize a cryptography study group.</p><p>One of the habits that shaped his approach was learning without over-relying on AI. He focused instead on reading BIPs, following source code and building clear mental models of Bitcoin&#x2019;s basic parts.</p><p>During the broader program period, he worked on the Bitcoin Dev Kit&#x2019;s Android reference wallet. His pull request added the ability to sweep funds from an external WIF private key into a user&#x2019;s wallet by scanning a QR code or pasting the key.</p><p>The work required him to enter an unfamiliar repository and learn Kotlin and Android tooling. Completing the pull request showed him that he could understand a new codebase well enough to make a useful change.</p><p>He has also been exploring automatically generated Rust RPC bindings for Bitcoin Core, which could make it easier for Rust developers to build applications that communicate with a Bitcoin Core node.</p><p>Chukwu&#x2019;s recent direction is less publicly visible than that of some of the other developers, but his technical depth and interest in areas such as Taproot, cryptography and coin selection make him someone worth continuing to watch.</p><h3 id="susan-githaiga"><strong>Susan Githaiga</strong></h3><p><a href="https://github.com/SusanGithaigaN?ref=blog.btrust.tech"><u>Susan</u></a>&#x2019;s BOSS project was a <a href="https://github.com/SusanGithaigaN/lightning-anchor-fee-outputs?ref=blog.btrust.tech"><u>Lightning anchor fee-bumping</u></a> service. When a Lightning channel closes unexpectedly, its commitment transaction can become stuck if network fees rise. Susan&#x2019;s project uses anchor outputs and Child-Pays-for-Parent, or CPFP, to help move those transactions towards confirmation.</p><p>Building the project required her to work across React, Node.js, Docker, Bitcoin transaction libraries, the mempool.space API and lnd&#x2019;s gRPC interface.</p><p>What stood out about Susan was that she did not limit herself to her portfolio project. She also looked for other places where she could contribute, including the Bitcoin Dev Project website and the BTCPay Server Plugin Builder. Her merged work has included interface improvements, plugin-version features, navigation changes and search-engine optimisation.</p><p>Through her work with BTCPay Server, she also noticed a gap relevant to her home market in Kenya: there is no BTCPay Server plugin designed around M-Pesa. She hopes to explore that idea as she continues to understand the ecosystem and the needs of local merchants.</p><p>Susan also joined Sharon Nkatha, Rose Jane and Nelly Nakhero to build <a href="https://github.com/nkatha23/siriscore?ref=blog.btrust.tech"><u>SiriScore</u></a>, a pre-broadcast bitcoin transaction privacy analyser. SiriScore helps users identify possible privacy leaks before they sign and broadcast a transaction and offers practical ways to improve their on-chain privacy.</p><p>The project received an honourable mention at the 2026 Bitcoin++ Open Source Edition.</p><p>Susan&#x2019;s journey has involved exploration. Rather than staying inside one project, she has tried different repositories, built across Bitcoin and Lightning and looked for problems that connect open-source software with the needs of everyday users.</p><h3 id="sharon-nkatha"><strong>Sharon Nkatha</strong></h3><p><a href="https://github.com/nkatha23?ref=blog.btrust.tech"><u>Nkatha</u></a>&#x2019;s path into Bitcoin development included Dada Devs, and Btrust Builders and BitDevs Nairobi.</p><p>During BOSS, she contributed to Warnet, fixing a problem that prevented its bitcoin message inspection command from handling Tor onion addresses and other external peers. She found the cause, changed the peer-resolution logic and added test coverage. Her pull request was reviewed and merged.</p><p>She also built <a href="https://github.com/nkatha23/knowyourcoinhistory?ref=blog.btrust.tech"><u>Know Your Coin History</u></a>, a self-hosted bitcoin privacy tool. It allows users to trace their transaction history, label UTXOs and identify wallet-fingerprinting patterns without sending their transaction data to third-party services.</p><p>The project uses a Flask API, a React interface, Bitcoin Core and Electrum adapters, BIP 329 labels and an interactive transaction graph. Nkatha also implemented eight wallet-fingerprinting checks.</p><p>After BOSS, she began contributing tests to SeedSigner, covering PSBT parsing cases involving multisig transactions and wallet consolidation. Not every contribution landed, but she kept exploring, responding to feedback and learning how different projects approach review.</p><p>She has since started contributing to Braidpool and is progressing through the pipeline for possible open-source grant support.</p><p>Nkatha was also one of the four developers behind SiriScore, alongside Susan Githaiga, Rose Jane and Nelly Nakhero. Their honourable mention at Bitcoin++ 2026 marked another step in her growing focus on Bitcoin privacy.</p><p>Her journey has included mistakes, redirections and difficult feedback, but that is part of what makes it valuable. She has continued experimenting and showing up, even when the path was not straightforward.</p><p>As she put it:</p><blockquote><em>Go for it! It will be hard, you will doubt yourself, but you will come out on the other side having done things you once thought were out of reach.</em></blockquote><h3 id="irene-ufia"><strong>Irene Ufia</strong></h3><p><a href="https://github.com/UfiairENE?ref=blog.btrust.tech"><u>Irene</u></a> built <a href="https://github.com/btc-go/bip353?ref=blog.btrust.tech"><u>bip353-go</u></a>, a Go implementation of BIP 353 DNS Payment Instructions.</p><p>Bitcoin payments still often involve copying long addresses that are easy to get wrong. BIP 353 allows a human-readable identifier such as &#x20BF;alice@example.com to resolve to bitcoin payment instructions stored in DNS.</p><p>Irene discovered that there was no Go implementation while working on another project. Instead of waiting for someone else to build one, she decided to do it herself.</p><p>The library includes payment-resolution logic, BOLT 12 TLV decoding, BIP 352 Silent Payment address parsing, DNS-over-HTTPS, Tor support, a command-line tool and a BIP 21 URI builder.</p><p>After BOSS, Irene has contributed to <a href="https://github.com/fystack/mpcium?ref=blog.btrust.tech"><u>mpcium</u></a>, an open-source multiparty computation wallet infrastructure project. Her contribution improved the project&#x2019;s security by replacing static AWS credentials with the AWS Default Credential Chain. This allows the project to use keyless OIDC and IAM role authentication.</p><p>She is also exploring <a href="https://github.com/lightninglabs/neutrino?ref=blog.btrust.tech"><u>Neutrino</u></a>, Lightning Labs&#x2019; privacy-preserving Bitcoin light client written in Go.</p><p>Irene&#x2019;s story is a good example of how open-source projects often begin. She ran into a real problem, confirmed that the tool she needed did not exist and built it.</p><h3 id="cecilia-orji"><strong>Cecilia Orji</strong></h3><p><a href="https://github.com/vivcis?ref=blog.btrust.tech"><u>Cecilia</u></a> worked with Irene on the <a href="https://github.com/UfiairENE/bitcoin-utxo-observatory?ref=blog.btrust.tech"><u>Bitcoin UTXO Observatory</u></a>, a command-line tool that helps users identify suspicious dust UTXOs and decide what to do with them.</p><p>The tool can scan UTXOs through mempool.space or directly from Bitcoin Core&#x2019;s local data. It checks them against known dust campaigns and suggests different actions, such as freezing, donating, consolidating or using CoinJoin. It can also create BIP 174 PSBTs for hardware wallets.</p><p>Cecilia focused on testing and reliability. She wrote tests for the audit engine, privacy strategy logic, PSBT creation and verification. While doing that, she found and fixed problems in the recommendation system. One example involved the tool suggesting CoinJoin for a UTXO that was worth less than the fee required to spend it. Cecilia changed the logic so the recommendation made more sense.</p><p>She also improved support for legacy P2PKH inputs, making sure hardware wallets could receive the full previous-transaction data they needed.</p><p>Cecilia is now exploring lndhub.go, a Lightning account backend written in Go. She is also interested in contributing to btcd and Lightning Labs&#x2019; Loop project.</p><p>One of her biggest breakthroughs during the program was learning to use bitcoin-cli directly. It helped her understand what Bitcoin Core was doing without relying entirely on third-party libraries or high-level abstractions.</p><p>For Cecilia, BOSS changed Bitcoin open source from something intimidating into something she could take part in directly:</p><blockquote><em>It&#x2019;s not rocket science. It might look intimidating from the outside, but once you start, you realize it&#x2019;s very doable.</em></blockquote><h2 id="the-biggest-change-was-not-technical"><strong>The Biggest Change Was Not Technical</strong></h2><p>The finalists learned about PSBTs, UTXOs, Taproot, onion routing, wallet labels, fee bumping, coin selection, Lightning infrastructure and more. But when they spoke about what BOSS changed for them, most did not begin with the technology.</p><p>They talked about confidence. They became more comfortable reading difficult specifications, working without step-by-step instructions, asking maintainers questions and receiving feedback on their code. They stopped seeing failed tests as proof that they were not ready and started treating them as part of the process.</p><p>Aaliyah put it simply:</p><blockquote><em>It showed me that contributing is less about already knowing everything and more about being willing to learn consistently, ask questions, and stay curious.</em></blockquote><p>Jolade had a similar realization when she successfully built and broadcast a bitcoin transaction from raw bytes. Before it worked, the network rejected several attempts because of mistakes in the serialization, scripts and signature hash.</p><p>When the transaction was finally accepted, nobody needed to approve her as a developer first.</p><blockquote><em>Nobody vouched for the transaction. The system accepted it purely because the math and serialization were correct.</em></blockquote><p>Susan felt that shift when her first BTCPay Server pull request was merged. Sharon felt it when a reviewer responded to her first contribution. Cecilia felt it when all the GitHub Actions for her final capstone turned green.</p><p>Those moments may look small from the outside, but they often mark the point where someone stops asking, &#x201C;Do I belong here?&#x201D; and starts asking, &#x201C;What can I work on next?&#x201D;</p><h2 id="community-made-the-difference"><strong>Community Made The Difference</strong></h2><p>None of these developers got here alone. Mentors helped them understand where to look without doing the work for them. Friends answered messages when they were stuck. Peers reviewed ideas, shared resources and reminded one another that struggling with difficult material was normal.</p><p>BitDevs communities in Lagos, Nairobi and Kaduna played an important role. So did Dada Devs, Africa Free Routing, Hack4Freedom and the Btrust Builders community.</p><p>These communities helped bridge the gap between learning and contributing. They gave developers somewhere to ask questions, meet contributors and become familiar with open-source work before entering larger projects.</p><p>They also created a cycle of support. Aaliyah returned to Hack4Freedom as a mentor after once participating herself. Cecilia and Irene supported each other through their learning programmes and then built a privacy tool together.</p><p>Susan and Sharon have also gone on to serve as mentors and facilitators for Dada Devs, helping more women develop the skills and confidence to explore Bitcoin open source. Having once benefited from learning communities themselves, they are now sharing what they know, helping participants work through technical challenges and showing the next generation of female developers that there is a place for them in Bitcoin.</p><p>Their involvement matters because representation is practical. It is easier for a new developer to imagine herself contributing when she can learn directly from women who are already opening pull requests, building Bitcoin projects and participating in technical communities.</p><p>Several other finalists are also reviewing pull requests, sharing resources and helping newer developers understand how to begin. Their journeys show that contribution is not limited to writing code. Teaching, mentoring, reviewing and creating welcoming spaces for new contributors are also part of building a healthy open-source ecosystem.</p><p>This is why community is not separate from technical development, but part of what makes long-term contribution possible.</p><p>People are more likely to keep going when they know who to ask, where to find support and that other developers have faced the same doubts. The strongest communities do more than help people enter the ecosystem. They give those people a reason to return, contribute and help someone else take the next step.</p><h2 id="to-african-developers-thinking-about-contributing-start"><strong>To African Developers Thinking About Contributing, Start</strong></h2><p>Bitcoin needs contributors in many areas. It needs people working on wallets, Lightning infrastructure, privacy, testing, security, developer tools, documentation, design, research and education.</p><p>You do not need to understand every part of Bitcoin before you begin. No one does.</p><p>Start with one programming language. Join a local BitDevs community. Complete an introductory pathway. Read a BIP. Reproduce a bug. Improve a test. Review a pull request. Fix unclear documentation. Build a small tool around a problem you understand, then keep going.</p><p>The eleven developers in this feature did not all start from the same place. Some already had years of software experience. Others began with a single introductory program. Some worked in Rust, while others used Go, Python, Kotlin or JavaScript. Many had to learn new tools because their projects demanded it.</p><p>What they shared was the willingness to learn, ask for help and attempt work that initially felt beyond them.</p><p>BOSS gave them a demanding place to practise those habits. Btrust Builders pathways and local communities helped many of them prepare for that opportunity. What they have done since the program ended shows why those learning and community networks matter.</p><p>Their journeys are still unfolding, but they already make one thing clear: African developers are not standing at the edge of Bitcoin&#x2019;s open-source ecosystem. They are writing code, reviewing contributions, improving infrastructure and helping other developers find their way in.</p><p>That is what the BOSS Challenge is ultimately meant to support, not just the completion of a program, but the beginning of a long-term contribution to Bitcoin open source.</p>]]></content:encoded></item><item><title><![CDATA[BitDevs Explained: What to Expect and How to Get Involved]]></title><description><![CDATA[<p>Walk into a BitDevs meetup for the first time and you may feel as though the conversation started before you arrived.</p><p>Someone might be discussing a recent change proposed for Bitcoin Core. A few minutes later, the group moved on to a Bitcoin Improvement Proposal, better known as a BIP,</p>]]></description><link>https://blog.btrust.tech/bitdevs-explained-what-to-expect-and-how-to-get-involved/</link><guid isPermaLink="false">6a69aa41a45d04b407ba4254</guid><category><![CDATA[Btrust]]></category><category><![CDATA[BitDevs]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Wed, 29 Jul 2026 07:27:38 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/HOYJmnXWgAI2pFD.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/HOYJmnXWgAI2pFD.jpg" alt="BitDevs Explained: What to Expect and How to Get Involved"><p>Walk into a BitDevs meetup for the first time and you may feel as though the conversation started before you arrived.</p><p>Someone might be discussing a recent change proposed for Bitcoin Core. A few minutes later, the group moved on to a Bitcoin Improvement Proposal, better known as a BIP, or a new idea for the Lightning Network. People ask questions, challenge assumptions, and debate the trade-offs.</p><p>There are usually no long presentations and no expectation that everyone will reach the same conclusion. Instead, the meetup is built around open discussion.</p><p>At first, it can be hard to understand what you are walking into. Is BitDevs a technical meetup, a study group, or simply a place to keep up with what is happening in Bitcoin?</p><p>In many ways, it is all three. But BitDevs is also something more: a place to learn with others, exchange ideas, meet potential collaborators, and become part of the wider Bitcoin open-source community.</p><p>And despite the name, you do not need to be a developer to attend.</p><h2 id="how-bitdevs-started"><strong>How BitDevs Started</strong></h2><p>BitDevs began in <a href="https://bitdevs.org/?ref=blog.btrust.tech"><u>New York City</u></a> as a space for people interested in the technical side of Bitcoin to discuss new developments and learn from one another.</p><p>Since then, the idea has spread around the world. Independent BitDevs chapters now organize regular meetups in cities across different countries. Each community is locally run, but they share a similar goal of helping people understand and participate in the conversations shaping Bitcoin.</p><p>In Africa, BitDevs communities are now active in more than 15 cities across several countries. Btrust supports the largest network of BitDevs meetups on the continent, helping local communities create consistent spaces for learning, discussion, and collaboration.</p><p>Most chapters meet once a month, giving members a regular opportunity to reconnect, explore new topics, and keep up with developments across the Bitcoin ecosystem.</p><h2 id="what-happens-at-a-bitdevs-meetup"><strong>What Happens at a BitDevs Meetup?</strong></h2><p>BitDevs meetups usually follow a Socratic format. This simply means they are led by discussion rather than presentations or lectures.</p><p>The exact format may differ from one chapter to another. Some chapters focus entirely on a Socratic discussion, while others may include workshops, project demos, or beginner sessions. Each chapter adapts its meetup to the needs of its local community.</p><p>What remains the same is the core idea of BitDevs: creating an open, discussion-led space where people can explore developments in Bitcoin, ask questions, challenge ideas, and learn from one another.</p><p>Before each meetup, organizers often share an agenda containing recent topics from across the Bitcoin ecosystem. During the meetup, a facilitator introduces each topic and invites people to share what they know, ask questions, and examine the idea from different angles.</p><p>The goal is not for one person to stand at the front of the room and provide all the answers. It is for the group to think through the topic together.</p><p>That approach reflects how Bitcoin itself is developed. Open-source development rarely moves forward because one person has a perfect idea. Proposals are shared, questioned, tested, reviewed, and improved. Healthy disagreement is part of the process. BitDevs brings that process into the room.</p><h2 id="you-don%E2%80%99t-have-to-be-technical-to-join"><strong>You Don&#x2019;t Have to Be Technical to Join</strong></h2><p>It is easy to assume that BitDevs is only for experienced programmers. After all, many discussions involve code, protocols, security, and other technical subjects.</p><p>But you do not need to write code, or understand every topic, to benefit from attending.</p><p>Designers, writers, researchers, educators, product managers, community organizers, students, and people who are simply curious about Bitcoin can all take part. Open-source projects need more than code. They also need clear documentation, thoughtful design, useful research, strong communities, and people who can explain complex ideas in simple ways.</p><p>A designer might learn about a usability problem in a bitcoin wallet. A writer may discover a technical idea that needs better documentation. A researcher might find an unanswered question worth exploring. A founder may meet someone interested in building a new project.</p><p>You are also allowed to attend simply to listen. Many regular BitDevs members began by sitting quietly, following the conversation, and looking up unfamiliar terms afterwards. Understanding develops over time. No one is expected to know everything before walking through the door.</p><h2 id="building-context-before-contributing"><strong>Building Context Before Contributing</strong></h2><p>One of the biggest benefits of BitDevs is context. Before contributing to an open-source project, it helps to understand the problems people are trying to solve. You also need to know what has already been tried, why certain decisions were made, and what trade-offs contributors are considering.</p><p>Those details are not always easy to pick up from reading code or social media posts alone.</p><p>At BitDevs, you can hear people explain not only what is happening but also why it matters. You begin to understand how experienced contributors approach problems, evaluate proposals, and respond to disagreement.</p><p>That context is useful whether you eventually contribute to Bitcoin Core, Lightning, wallets, developer tools, research, education, design, or another part of the ecosystem.</p><p>BitDevs will not turn someone into an open-source contributor in one evening. What it can do is help build the habits that make long-term contribution possible: curiosity, careful thinking, consistent learning, and the confidence to ask better questions.</p><h2 id="more-than-technical-learning"><strong>More Than Technical Learning</strong></h2><p>The conversations are important, but they are not the only reason people keep coming back. BitDevs also helps people build relationships.</p><p>At a meetup, you might:</p><ul><li>Debate an idea with people who see it differently</li><li>Find someone who can help you understand a difficult topic</li><li>Meet a partner or collaborator for a project</li><li>Discover an open-source issue you can work on</li><li>Get feedback on an idea you are exploring</li><li>Learn about programs, grants, jobs, and hackathons</li><li>Find a mentor, or eventually become one</li><li>Become part of a community that supports your growth</li></ul><p>Across Africa, members of BitDevs communities have gone on to join programs such as the <a href="https://bosschallenge.xyz/?ref=blog.btrust.tech"><u>BOSS Challenge</u></a> and <a href="https://www.btrust.tech/builders/apply?ref=blog.btrust.tech"><u>Btrust Builders</u></a>. Some have won hackathons or started their own projects. Others have become full-time Bitcoin open-source contributors with support from organizations such as the <a href="https://hrf.org/program/financial-freedom/bitcoin-development-fund?ref=blog.btrust.tech"><u>Human Rights Foundation</u></a> and <a href="https://www.btrust.tech/grants?ref=blog.btrust.tech"><u>Btrust</u></a>.</p><p>Not everyone will follow the same path, and that is the point. A meetup can be the beginning of many different journeys.</p><h2 id="how-to-get-the-most-from-a-meetup"><strong>How to Get the Most From a Meetup</strong></h2><p>Getting value from BitDevs has less to do with how much you already know and more to do with how you approach the experience.</p><h3 id="come-prepared-not-perfect"><strong>Come Prepared, Not Perfect</strong></h3><p>Most BitDevs communities publish the agenda before each meetup. Spend a little time looking through it before you attend.</p><p>You do not need to understand every pull request, proposal, or research paper. Even reading a short summary can make the discussion easier to follow. Write down any terms or questions you want to explore.</p><p>The aim is not to arrive as an expert. It is to arrive curious.</p><h3 id="ask-questions"><strong>Ask Questions</strong></h3><p>If something is unclear, there is a good chance someone else is wondering about it too.</p><p>Questions such as &#x201C;What problem is this trying to solve?&#x201D; or &#x201C;Why is this approach controversial?&#x201D; can help open up the discussion. Simple questions often bring the conversation back to the ideas that matter most.</p><p>If you are not comfortable speaking during your first meetup, that is fine too. Listen, take notes, and speak with someone afterwards.</p><h3 id="follow-the-topics-that-interest-you"><strong>Follow the Topics That Interest You</strong></h3><p>You probably will not understand or enjoy every discussion. Pay attention to the topics that stay with you after the meetup.</p><p>Go back to the proposal that caught your attention. Read more about the project someone mentioned. Look up the unfamiliar term you wrote down. Ask a member of the community where you can learn more. Those small moments of curiosity build knowledge over time.</p><h3 id="talk-to-people"><strong>Talk to People</strong></h3><p>Do not leave as soon as the final topic ends. Introduce yourself and tell people what you are interested in, even if you are still figuring that out.</p><p>You may meet someone working on a similar problem, looking for a designer, starting a study group, or preparing for a hackathon. Many useful collaborations begin with a simple conversation after a meetup.</p><h3 id="keep-showing-up"><strong>Keep Showing Up</strong></h3><p>BitDevs makes more sense with time. The first meetup may introduce you to unfamiliar ideas. By the third or fourth, you may begin to recognize recurring debates, projects, and contributors. Eventually, you may find yourself asking questions, sharing what you have learned, helping newcomers, or working on a project of your own. You do not need to understand everything immediately. Consistency matters more.</p><h2 id="find-a-bitdevs-community-near-you"><strong>Find a BitDevs Community Near You</strong></h2><p>BitDevs meetups take place monthly in communities around the world. Across Africa, there are chapters in more than 15 cities across several countries. Visit our <a href="https://www.btrust.tech/bitdevs?ref=blog.btrust.tech"><u>website</u></a> to find a community near you.</p><p>Follow your local chapter on social media and join its community channels to receive updates about upcoming meetups, discussion topics, and other opportunities.</p><p>Remember, you do not have to wait until you feel &#x201C;technical enough&#x201D;. Find a meetup, show up with an open mind, and start from where you are. One conversation may lead to a question, a collaborator, a project, or an entirely new direction.</p>]]></content:encoded></item><item><title><![CDATA[Announcing the First Round of 2026 Bitcoin Developer Education Grant Recipients]]></title><description><![CDATA[Over $900k awarded across five education initiatives supporting Bitcoin open-source development in Africa and the Global Majority.]]></description><link>https://blog.btrust.tech/announcing-the-first-round-of-2026-bitcoin-developer-education-grant-recipients/</link><guid isPermaLink="false">6a62fed4a45d04b407ba40e4</guid><category><![CDATA[Btrust]]></category><category><![CDATA[Grants]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Fri, 24 Jul 2026 06:18:10 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_5987761689048321619_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_5987761689048321619_y.jpg" alt="Announcing the First Round of 2026 Bitcoin Developer Education Grant Recipients"><p>At Btrust, we believe Bitcoin education is essential for a thriving open-source ecosystem.</p><p>Bitcoin open-source development grows when curious developers are given access to good learning materials, strong mentorship, projects, and the time and support to keep improving.</p><p>Btrust <a href="https://www.btrust.tech/grants/education?ref=blog.btrust.tech"><u>education grants</u></a> exist to support programs that train developers, make Bitcoin knowledge more accessible, and create clear pathways into Bitcoin free and open-source software.</p><p>Through these grants, we continue to support initiatives that reduce barriers to learning and help more people in Africa, Latin America, India, and the broader Global Majority engage with Bitcoin development.</p><p>For this round, Btrust awarded $904,000 across five education programs:</p><ul><li>Hack4Freedom</li><li>Summer of Bitcoin</li><li>Bitshala</li><li>Vinteum</li><li>Librer&#xED;a de Satoshi &amp; B4OS</li></ul><p>These programs are different in structure, region, and audience, but they share one goal: helping more developers move from learning about Bitcoin to contributing to Bitcoin open-source projects.</p><h2 id="importance-of-developer-education-programs"><strong>Importance of Developer Education Programs</strong></h2><p>Bitcoin needs more contributors from more places. Many talented developers in the Global Majority want to work on Bitcoin but face barriers: limited local technical communities, fewer mentors, fewer opportunities to work on real open-source projects, and less access to funding that allows them to go deep.</p><p>Education programs help solve this. They create the first steps into the ecosystem. They teach technical foundations, expose developers to tools and repositories, connect them with mentors, and help them build proof of work.</p><p>The strongest programs do not stop at teaching. They create pipelines. They help learners become contributors. They help contributors become grantees, maintainers, educators, and full-time open-source developers.</p><p>That is the kind of long-term ecosystem we want to support.</p><h2 id="education-grant-recipients"><strong>Education Grant Recipients</strong></h2><h3 id="hack4freedom-2026"><strong>Hack4Freedom 2026</strong></h3><p><a href="https://www.hack4freedom.com/?ref=blog.btrust.tech"><u>Hack4Freedom</u></a> is a female-focused Bitcoin hackathon and developer education program designed for software developers and aspiring engineers in the Global Majority.</p><p>The program started in Kaduna, Nigeria, last year, where it created a dedicated space for women developers to learn, build, and contribute to open-source Bitcoin and freedom tech projects. That first cohort showed what becomes possible when women are given the tools, mentorship, and confidence to move from learning into building.</p><p>The 2026 expansion will bring Hack4Freedom to different Global Majority cities, starting with Lagos. The edition brought together 38 women and produced 13 repo-backed open-source projects. Read more about the Lagos edition <a href="https://blog.evento.so/hack4freedom-lagos-building-the-next-generation-of-freedom-tech-developers?ref=blog.btrust.tech"><u>here</u></a>.</p><p>Each two-week hackathon will combine expert-led workshops, mentorship, and project-based learning focused on Bitcoin, Lightning, Nostr, and eCash.</p><p>Hack4Freedom is important because it directly addresses one of the biggest gaps in the Bitcoin ecosystem: the underrepresentation of women builders, especially from regions where financial exclusion is most deeply felt. The program does not only teach participants about bitcoin. It helps them build real tools for real local problems, publish their work in the open, and begin seeing themselves as contributors to the broader Bitcoin FOSS ecosystem.</p><h3 id="summer-of-bitcoin"><strong>Summer of Bitcoin</strong></h3><p><a href="https://www.summerofbitcoin.org/?ref=blog.btrust.tech"><u>Summer of Bitcoin</u></a> is a global online education program that introduces university students to Bitcoin open-source development and design.</p><p>Since 2021, the program has received more than 40,000 applications from 74 countries. It has onboarded 280+ developers, with alumni now contributing to or working at bitcoin organizations and projects such as Alby, Fedi, Galoy, Vinteum, Blockstream, Zeus, BDK, and others.</p><p>The 2025 edition received 5,036 applications from 71 countries in just 15 days. From this pool, 68 interns from 9 countries were selected to work with 32 Bitcoin organizations. During the project period, interns contributed to more than 86 GitHub and GitLab repositories and submitted 413 pull requests.</p><p>The program begins with a structured Bitcoin learning bootcamp, followed by a mentored internship where students work directly on real Bitcoin open-source projects. Participants learn Bitcoin fundamentals, developer tooling, open-source workflows, and practical software engineering through direct contribution.</p><p>Summer of Bitcoin continues to be one of the largest and most consistent pipelines bringing young, globally distributed talent into Bitcoin FOSS. Its reach across India, Nigeria, Brazil, Egypt, and other Global Majority regions makes it a strong fit for Btrust&#x2019;s mission of decentralizing Bitcoin development.</p><h3 id="bitshala"><strong>Bitshala</strong></h3><p><a href="https://bitshala.org/?ref=blog.btrust.tech"><u>Bitshala</u></a> is a Bitcoin developer education community in India focused on helping developers learn, collaborate, and contribute to Bitcoin open-source projects.</p><p>In 2025, Bitshala continued to grow as one of the most active Bitcoin technical education initiatives in India and Southeast Asia. Its work included study cohorts, weekly clubs, fellowships, starter grants, meetups, builder retreats, public conferences, and community support through Bitspace Bangalore.</p><p>Bitshala continues scaling its cohorts, fellowships, grants, meetups, and community support. Its goals include awarding more developer, design, and education fellowships; supporting starter and full-time grants; organizing more meetups; and expanding Bitspace as a hub for Bitcoin builders.</p><p>This year, Btrust approved Bitshala for long-term support. This is important because strong developer education programs need stability. Instead of spending energy every year on fundraising and reapplying, Bitshala can plan longer-term, support contributors more consistently, and focus on building India&#x2019;s Bitcoin open-source developer pipeline.</p><h3 id="vinteum"><strong>Vinteum</strong></h3><p><a href="https://www.vinteum.org/?ref=blog.btrust.tech"><u>Vinteum</u></a> is a Bitcoin research and development center focused on growing open-source developer talent in Brazil and Latin America.</p><p>Its work combines education, mentorship, grants, research, and community infrastructure. Vinteum supports developers through programs such as the Bitcoin Dev Launchpad, fellowships, long-term grants, Mastering Bitcoin and Mastering Lightning seminars, technical workshops, BitDevs meetups, and Casa21, its physical Bitcoin developer hub.</p><p>Vinteum alumni are now contributing to or working with projects and organizations such as BTCPay Server, Floresta, BDK, Bitcoinfuzz, Boltz, Stratum V2, and others. The program also supports Brazil-originated open-source Bitcoin projects, including Floresta, bitcoinfuzz, and Krux.</p><p>Vinteum&#x2019;s model is especially valuable because it does not rely on a single program. It creates a full ecosystem around developers: structured onboarding, technical community, physical collaboration space, fellowships, and long-term grants. This helps turn early interest into sustained contribution.</p><h3 id="librer%C3%ADa-de-satoshi-b4os"><strong>Librer&#xED;a de Satoshi &amp; B4OS</strong></h3><p><a href="https://libreriadesatoshi.com/?ref=blog.btrust.tech"><u>Librer&#xED;a de Satoshi</u></a> and Bitcoin for Open Source, also known as <a href="https://b4os.dev/?ref=blog.btrust.tech"><u>B4OS</u></a>, form an integrated Spanish-speaking Bitcoin education ecosystem.</p><p>Librer&#xED;a de Satoshi provides foundational Bitcoin technical education, while B4OS supports more advanced developers as they move toward open-source contribution, mentorship, portfolio building, and full-time Bitcoin work.</p><p>Together, they have built one of the strongest Spanish-speaking Bitcoin developer pipelines in Latin America.</p><p>B4OS has also produced strong individual outcomes. Alumni and participants have gone on to contribute to Bitcoin Core, Mostro, BDK, SimLN, LNDK, SeedSigner, Silent Payments, and other Bitcoin-related projects. Some have received grants from organizations such as Spiral, HRF, BDK Foundation, and others, while others have moved into full-time Bitcoin roles.</p><p>The program&#x2019;s model is to introduce learners to Bitcoin, help them build technical depth, move top participants into advanced open-source training, and support the strongest contributors as they transition into grants, jobs, or long-term FOSS work.</p><p>Btrust also approved Librer&#xED;a de Satoshi &amp; B4OS for long-term support because the program has already shown that it can produce real contributors. With more stable funding, the team can focus less on yearly fundraising and more on scaling the pipeline, improving the platform, supporting contributors, and strengthening Spanish-speaking Bitcoin education across Latin America.</p><h2 id="education-grant-applications"><strong>Education Grant Applications</strong></h2><p>Education grant applications are open all year round to programs that train developers and make Bitcoin technical education more accessible, especially across Africa and the Global Majority.</p><p>We support initiatives focused on Bitcoin open-source development, developer education, mentorship, and pathways that help software developers move from learning into meaningful contribution.</p><p>Programs interested in applying can find the full eligibility criteria, qualification requirements, application guidance, and submission details on the <a href="https://www.btrust.tech/grants/education?ref=blog.btrust.tech"><u>website</u></a>.</p><p>Learn more and apply <a href="https://btrust.homerun.co/education-grant-application/en?ref=blog.btrust.tech"><u>here</u></a>.</p><h2 id="about-btrust"><strong>About Btrust</strong></h2><p><a href="https://www.btrust.tech/?ref=blog.btrust.tech"><u>Btrust</u></a> is a non-profit organization with a mission to decentralize the development of Bitcoin open-source software. We focus on supporting developer talent from the Global Majority and strengthening the free and open-source Bitcoin ecosystem.</p><p>Through grants, education, mentorship, and community support, Btrust helps developers contribute to the tools, infrastructure, and applications that make bitcoin more resilient, accessible, and decentralized.</p>]]></content:encoded></item><item><title><![CDATA[Introducing the First Batch of 2026 Btrust Event Grants]]></title><description><![CDATA[<p>For many developers, the first step into Bitcoin is not a grant, a fellowship, or a full-time open-source role. It is a local meetup, workshop, hackathon, conference talk, or technical session where they see that Bitcoin is not only something to use, but something they can build on and contribute</p>]]></description><link>https://blog.btrust.tech/introducing-the-first-batch-of-2026-btrust-event-grants/</link><guid isPermaLink="false">6a60c7a0a45d04b407ba3f7e</guid><category><![CDATA[Btrust]]></category><category><![CDATA[Grants]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Wed, 22 Jul 2026 14:17:11 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_5981001771301670252_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_5981001771301670252_y.jpg" alt="Introducing the First Batch of 2026 Btrust Event Grants"><p>For many developers, the first step into Bitcoin is not a grant, a fellowship, or a full-time open-source role. It is a local meetup, workshop, hackathon, conference talk, or technical session where they see that Bitcoin is not only something to use, but something they can build on and contribute to.</p><p>Events help attract developer talent. They create entry points for people who are curious about Bitcoin. They give new builders access to mentors, peers, tools, and real technical conversations. They also give existing contributors a platform to share their work, find collaborators, and connect with people from different regions and communities.</p><p>Under our <a href="https://www.btrust.tech/grants/event?ref=blog.btrust.tech"><u>event grants</u></a>, we support a broad spectrum of initiatives, from technical bootcamps and hands-on workshops to large-scale convenings. These gatherings help introduce new developers to Bitcoin and expand opportunities for deeper collaboration across ecosystems throughout the year and into the future.</p><p>For this first batch of 2026 event grants, we are supporting eight events:</p><ul><li>Adopting Bitcoin Cape Town 2026</li><li>Africa Free Routing Lightning Developer Bootcamps</li><li>Bitcoin++ Nairobi 2026</li><li>Code &amp; Chain Senegal</li><li>The Genesis Workshop</li><li>Dakar Bitcoin Days IV</li><li>DevFest Kaduna 2026</li><li>Bitcoin++ Seoul 2026</li></ul><h2 id="event-grant-recipients"><strong>Event Grant Recipients</strong></h2><h3 id="adopting-bitcoin-cape-town-2026"><strong>Adopting Bitcoin Cape Town 2026</strong></h3><p><a href="https://x.com/abcptza?ref=blog.btrust.tech"><u>Adopting Bitcoin Cape Town</u></a> is South Africa&#x2019;s leading bitcoin-only event focused on real-world adoption, circular economies, self-sovereignty, and grassroots bitcoin use in Southern Africa.</p><p>We&#x2019;ve supported Adopting Bitcoin Cape Town since its inception, and in 2026 supported the event as the Honey Badger sponsor. The 2026 edition took place on January 30&#x2013;31 in Cape Town. It brought together bitcoin builders, educators, developers, circular economy organizers, and adoption-focused communities from South Africa, the wider African continent, and abroad.</p><p>The event continued to serve as a regional meeting point for practical bitcoin adoption. It also created space for workshops, technical conversations, and community-led discussions around how bitcoin is being used in real life across Southern Africa.</p><p>The 2026 event also helped connect broader ecosystem activity, including bitcoin circular economy conversations, Lightning developer education, and satellite events focused on adoption.</p><p>For us, Adopting Bitcoin Cape Town remains important because it brings together the people building, teaching, using, and experimenting with bitcoin on the ground. It gives African builders a stage and helps connect local adoption work to the wider bitcoin ecosystem.</p><h3 id="africa-free-routing-lightning-developer-bootcamps"><strong>Africa Free Routing Lightning Developer Bootcamps</strong></h3><p>Africa Free Routing runs hands-on <a href="https://freerouting.africa/bootcamps?ref=blog.btrust.tech"><u>Bitcoin Lightning Developer Bootcamps</u></a> across Africa. Each bootcamp is a five-day technical program where developers learn Bitcoin and Lightning fundamentals, understand channels and routing, work with Lightning infrastructure, and build Lightning-enabled applications.</p><p>We supported Africa Free Routing&#x2019;s previous bootcamp series, which trained over 250 developers across eight bootcamps, seven cities, and six countries. More than 30 projects were built during the hackathon sessions, with some continuing beyond the program as active tools and businesses.</p><p>In 2026, Africa Free Routing expanded the program to reach more developers across the continent, with a goal of training over 300 new developers.</p><p>This program is important because it is deeply practical. Developers do not only learn what Lightning is. They build with it, test it, and leave with the confidence to continue working on Bitcoin and Lightning projects.</p><h3 id="bitcoin-nairobi-seoul-2026"><strong>Bitcoin++ Nairobi &amp; Seoul 2026</strong></h3><p><a href="https://btcpp.dev/?ref=blog.btrust.tech"><u>Bitcoin++</u></a> is the world&#x2019;s leading Bitcoin developer conference series. It brings together developers, researchers, protocol engineers, educators, and open-source contributors for deeply technical events focused on specific areas of Bitcoin development.</p><p>In 2026, we are supporting <a href="https://btcpp.dev/nairobi?ref=blog.btrust.tech"><u>bitcoin++ Nairobi</u></a> and <a href="https://btcpp.dev/seoul?ref=blog.btrust.tech"><u>bitcoin++ Seoul</u></a>.</p><p><a href="https://x.com/btrustteam/status/2070407545097785416?s=20&amp;ref=blog.btrust.tech"><u>Bitcoin++ Nairobi</u></a> took place from June 17&#x2013;19. It was the first bitcoin++ conference in Africa and the first-ever open source edition. For three days, developers, researchers, educators, and builders explored Bitcoin, Lightning, privacy, mining, open-source development, developer tooling, financial infrastructure, and the future of building on Bitcoin.</p><p>The event also hosted a <a href="https://x.com/btrustteam/status/2069802092055650435?s=20&amp;ref=blog.btrust.tech"><u>hackathon</u></a>, bringing together builders from Africa and around the world to work in public on practical Bitcoin software. The hackathon had 90 participants, 37 submitted projects, and nearly 10 million sats in prizes across the main competition and sponsor tracks.</p><p>Bitcoin++ Nairobi was especially important because it gave African developers an international stage. They were able to present their work, meet contributors from around the world, and connect with the broader Bitcoin developer ecosystem.</p><p>We are also supporting <a href="https://btcpp.dev/seoul?ref=blog.btrust.tech"><u>bitcoin++ Seoul</u></a>, which will focus on privacy, one of bitcoin&#x2019;s most important technical and social challenges. Privacy touches wallet design, transaction construction, surveillance resistance, self-custody, network behavior, and user safety.</p><p>Together, the Nairobi and Seoul editions create focused technical spaces where developers can go deep, share work, meet collaborators, and find pathways into long-term open-source contributions.</p><p>For us, supporting bitcoin++ helps connect developers from Africa and the Global Majority to global technical conversations, while also giving builders from these regions more visibility within the wider Bitcoin open-source ecosystem.</p><h3 id="the-genesis-workshop"><strong>The Genesis Workshop</strong></h3><p><a href="https://workshop.osguild.dev/?ref=blog.btrust.tech"><u>The Genesis Workshop</u></a> is a hands-on technical workshop organized by <a href="https://x.com/osguildHQ?ref=blog.btrust.tech"><u>OSGuild</u></a> in collaboration with <a href="https://x.com/BitDevsMRU?ref=blog.btrust.tech"><u>BitDevs Mauritius</u></a>.</p><p>The workshop will take place in Mauritius, on July 25th and 26th, with Bitcoin open-source developers as guest facilitators.</p><p>The goal of the workshop is to help them make their first meaningful steps toward Bitcoin open-source contribution.</p><p>Participants will learn about Bitcoin development pathways, open-source contribution standards, project workflows, and how to engage with real projects. They will also be introduced to OSGuild&#x2019;s contributor onboarding system, which supports mentorship, project coordination, and contribution tracking after the workshop.</p><p>The Genesis Workshop builds on the existing work of BitDevs Mauritius, which has organized recurring Bitcoin-focused technical meetups. This workshop turns that community momentum into a more structured contributor pipeline.</p><h3 id="code-chain-senegal"><strong>Code &amp; Chain Senegal</strong></h3><p>Code &amp; Chain is a developer-focused event series led by the Bitnob Developers Network. Its goal is to equip African developers with the skills and tools to build on Bitcoin infrastructure.</p><p>Over the past three years, the Bitnob Developers Network has hosted events across Africa, training developers through hands-on workshops, live coding sessions, hackathons, and technical talks. The network reports having trained 5,026 developers across seven African countries: Nigeria, Ghana, Uganda, Kenya, Benin Republic, Burundi, and Togo.</p><p>Btrust previously supported the <a href="https://x.com/Bitnob_official/status/1980987381785526456?s=20&amp;ref=blog.btrust.tech"><u>Lagos edition</u></a>, and we are excited to support the Senegal edition as the program continues expanding developer access to Bitcoin infrastructure across Africa.</p><p>Code &amp; Chain helps developers move from learning to building by introducing them to practical tools for remittances, merchant payments, cross-border financial applications, developer SDKs, and open-source utilities.</p><h3 id="devfest-kaduna-2026"><strong>DevFest Kaduna 2026</strong></h3><p><a href="https://www.devfestkaduna.com/?ref=blog.btrust.tech"><u>DevFest Kaduna</u></a> is one of Northern Nigeria&#x2019;s leading developer gatherings. For the 2026 edition, the organizers are introducing a bitcoin-only developer track focused on open-source Bitcoin development.</p><p>This track will take place ahead of DevFest Kaduna and will introduce developers to Bitcoin protocol fundamentals, Lightning development, running Bitcoin nodes, and contributing to open-source Bitcoin repositories.</p><p>By adding a bitcoin-only track to an established developer conference, the organizers can reach engineers who may not yet be part of the bitcoin ecosystem but already have the technical skills to contribute.</p><h3 id="dakar-bitcoin-days-iv"><strong>Dakar Bitcoin Days IV</strong></h3><p><a href="https://dakarbitcoindays.com/?ref=blog.btrust.tech"><u>Dakar Bitcoin Days</u></a> is Senegal&#x2019;s first bitcoin-only forum and one of the gatherings in French-speaking Africa.</p><p>Btrust supported Dakar Bitcoin Days last year and is returning to support the fourth edition, planned for November 6 &amp; 7, in Dakar, Senegal.</p><p>The event brings together developers, students, entrepreneurs, educators, and bitcoin advocates for talks, technical demos, discussions, and hackathon activity. The upcoming edition will focus on building a roadmap toward a new decentralized payment system in Africa.</p><p>Dakar Bitcoin Days plays a key role in expanding bitcoin education and technical engagement in French-speaking Africa. It helps shift the conversation away from scams and speculation toward education, practical use-cases, and open-source contribution.</p><h2 id="connecting-events-to-developer-pathways"><strong>Connecting Events to Developer Pathways</strong></h2><p>Our work focuses on decentralizing Bitcoin development, especially across Africa and the Global Majority. To do this well, the ecosystem needs more than one pathway. Some developers need long-term education programs. Some need fellowships or grants. Some need direct mentorship. But before all of that, many developers need a first point of contact.</p><p>Events create that first contact. They help developers discover that Bitcoin is an active technical ecosystem with real open-source projects, real engineering problems, and real opportunities to contribute. They also create the social layer that open-source needs: trust, relationships, peer learning, and community memory. Each event in this batch plays a different role.</p><p>Events can help a developer:</p><ul><li>Understand bitcoin beyond price and speculation</li><li>Meet active contributors and maintainers</li><li>Learn how to run nodes, build with Lightning, or use Bitcoin developer tools</li><li>Make a first open-source contribution</li><li>Join a local technical community</li><li>Find a mentor, project, grant, or fellowship pathway</li><li>Present their own work to a wider audience</li></ul><p>This is especially important in regions where Bitcoin talent exists but access to global networks is limited.</p><h2 id="event-grant-applications"><strong>Event Grant Applications</strong></h2><p>Btrust event grants are open to events, conferences, bootcamps, workshops, hackathons, and technical gatherings that help grow the Bitcoin open-source ecosystem, especially across Africa and the Global Majority.</p><p>We support events that are developer-focused, bitcoin-aligned, and designed to create meaningful pathways into Bitcoin education, open-source contribution, technical collaboration, or community building.</p><p>Programs interested in applying can find the full eligibility criteria, qualification requirements, application guidance, and submission details on the <a href="https://www.btrust.tech/grants/event?ref=blog.btrust.tech"><u>website</u></a>.</p><p>Learn more and apply <a href="https://btrust.homerun.co/event-grant-application/en?ref=blog.btrust.tech"><u>here</u></a>.</p><h2 id="about-us"><strong>About Us</strong></h2><p><a href="https://www.btrust.tech/?ref=blog.btrust.tech"><u>Btrust</u></a> is a non-profit organization with a mission to decentralize the development of Bitcoin open-source software. We focus on supporting developer talent from the Global Majority and strengthening the free and open-source Bitcoin ecosystem.</p><p>Through grants, education, mentorship, and community support, Btrust helps developers contribute to the tools, infrastructure, and applications that make bitcoin more resilient, accessible, and decentralized.</p>]]></content:encoded></item><item><title><![CDATA[Getting Started with LDK Node: Building a Lightning Node in Rust]]></title><description><![CDATA[<p><em>Written by&#xA0;</em><a href="https://github.com/Camillarhi?ref=blog.btrust.tech" rel="noreferrer"><em>Rita Anene</em></a></p><p>If you&apos;ve spent time in the Bitcoin developer space, you&apos;ve probably heard of&#xA0;<a href="https://lightningdevkit.org/?ref=blog.btrust.tech" rel="nofollow">LDK, (the Lightning Development Kit)</a>.</p><p>LDK gives a great deal of control. You can decide how peers connect, how channels are configured, how keys are handled, and</p>]]></description><link>https://blog.btrust.tech/getting-started-with-ldk-node-building-a-lightning-node-in-rust/</link><guid isPermaLink="false">6a4e3222a45d04b407ba3909</guid><category><![CDATA[Btrust]]></category><category><![CDATA[Lightning]]></category><category><![CDATA[Technical]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Mon, 20 Jul 2026 13:25:36 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_5976585801892040343_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_5976585801892040343_y.jpg" alt="Getting Started with LDK Node: Building a Lightning Node in Rust"><p><em>Written by&#xA0;</em><a href="https://github.com/Camillarhi?ref=blog.btrust.tech" rel="noreferrer"><em>Rita Anene</em></a></p><p>If you&apos;ve spent time in the Bitcoin developer space, you&apos;ve probably heard of&#xA0;<a href="https://lightningdevkit.org/?ref=blog.btrust.tech" rel="nofollow">LDK, (the Lightning Development Kit)</a>.</p><p>LDK gives a great deal of control. You can decide how peers connect, how channels are configured, how keys are handled, and how data is stored. That flexibility is valuable when you are building something highly specialized.</p><p>But it can also be a lot. If your goal is simply to add Lightning payments to an app, you should not need to understand every layer of the Lightning protocol before you can receive your first payment.</p><p>That is where the project I contribute to,&#xA0;<a href="https://github.com/lightningdevkit/ldk-node?ref=blog.btrust.tech"><code>ldk-node</code></a>, comes in. LDK Node is built on top of LDK, but it makes many of the difficult decisions for you. It has a smaller API, sensible defaults, and enough structure to be useful in a real application. You still get a Lightning node, but you spend less time assembling the infrastructure around it.</p><p>This article walks you through building a working Lightning node from scratch. By the end, you&apos;ll have a node that connects to a peer, opens a channel, handles the channel-ready event, receives a&#xA0;<a href="https://github.com/lightning/bolts/blob/master/11-payment-encoding.md?ref=blog.btrust.tech">BOLT11</a>&#xA0;payment, sends one, creates a&#xA0;<a href="https://github.com/lightning/bolts/blob/master/12-offer-encoding.md?ref=blog.btrust.tech">BOLT12</a>&#xA0;offer and pays one, and sends a spontaneous payment without an invoice. At each step, as you run the code, you&apos;ll see exactly what the node returns, building a real mental model of what&apos;s happening under the hood.</p><p>No prior Lightning implementation experience required. Rust familiarity and a working knowledge of Bitcoin and Lightning are enough to follow along.</p><h2 id="what-ldk-node-is-and-what-it-is-not"><strong>What LDK Node Is, and What It Is Not</strong></h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#what-ldk-node-is-and-what-its-not"></a></p><p>LDK (the underlying library) exposes a vast array of methods. This level of control is ideal for building systems that require custom peer management, exotic channel configurations, or strict key handling. However, it&#x2019;s not the right tool when you simply need to embed a node in an app.</p><p>LDK Node reduces the API surface by making concrete choices on your behalf.&#xA0;<a href="https://bitcoindevkit.org/?ref=blog.btrust.tech" rel="nofollow">BDK (the Bitcoin Dev Kit)</a>&#xA0;handles the on-chain wallet, while chain data comes from Esplora, Electrum, or Bitcoin Core RPC. The state is persisted to SQLite, Postgres or the filesystem. Gossip is sourced from Lightning&apos;s P2P network or Rapid Gossip Sync, and entropy is derived from raw bytes or a&#xA0;<a href="https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki?ref=blog.btrust.tech">BIP39</a>&#xA0;mnemonic.</p><p>You trade some configurability for speed of iteration. Those defaults cover most real use cases, and if you eventually need more control, the underlying LDK is still accessible.</p><p>It&#x2019;s written in Rust and ships with&#xA0;<a href="https://mozilla.github.io/uniffi-rs/latest/?ref=blog.btrust.tech" rel="nofollow">UniFFI</a>-based bindings for Swift, Kotlin, and Python if you are targeting mobile.</p><h2 id="prerequisites">Prerequisites</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#prerequisites"></a></p><p>Before writing any code, you need Rust installed. If you don&apos;t have it yet, install it with&#xA0;<a href="https://rustup.rs/?ref=blog.btrust.tech" rel="nofollow"><code>rustup</code></a>:</p><pre><code>curl --proto &apos;=https&apos; --tlsv1.2 -sSf https://sh.rustup.rs | sh</code></pre><p>Follow the on-screen instructions, then reload your shell environment:</p><pre><code>source ~/.cargo/env</code></pre><p>Verify the installation worked:</p><pre><code>rustc --version
cargo --version</code></pre><p>For a fully interactive experience with real payments between two nodes, you&apos;ll also need Polar. Polar is a desktop app that lets you spin up a local Lightning network with one click. If you don&apos;t have it installed, grab it from the&#xA0;<a href="https://lightningpolar.com/?ref=blog.btrust.tech" rel="nofollow">Polar website</a>&#xA0;to get two nodes running. The article uses Node A (the&#xA0;<code>ldk-node</code>&#xA0;we build) and Node B (a Polar-managed node) to demonstrate every payment direction.</p><p>Note:&#xA0;<a href="https://github.com/lightningdevkit/ldk-server?ref=blog.btrust.tech">LDK Server</a>&#xA0;is being added to Polar (<a href="https://github.com/jamaljsr/polar/pull/1374?ref=blog.btrust.tech">PR #1374</a>). Once merged, you will be able to use it directly as your local node backend, since LDK Server is essentially ldk-node with an RPC interface. It will also work as an onion-message-capable peer for BOLT12 offer creation.</p><p>Note: To create BOLT12 offers, your ldk-node needs to connect to an onion-message-capable peer. In Polar, this means adding a CLN node to your network. LND does not currently support onion messages, so offer creation will fail if CLN is not present.</p><p>With that in place, create a new binary project:</p><pre><code>cargo new ldk_node_example
cd ldk_node_example</code></pre><p>Cargo generates this structure:</p><pre><code>ldk_node_example/
&#x251C;&#x2500;&#x2500; Cargo.toml
&#x2514;&#x2500;&#x2500; src/
    &#x2514;&#x2500;&#x2500; main.rs
</code></pre><p>Open&#xA0;<code>src/main.rs</code>&#xA0;and you&apos;ll find a default &quot;Hello, world!&quot; program. Everything that follows replaces it.</p><h2 id="project-setup">Project Setup</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#project-setup"></a></p><p>Add&#xA0;<code>ldk-node</code>&#xA0;and&#xA0;<code>tokio</code>&#xA0;to your&#xA0;<code>Cargo.toml</code>:</p><pre><code>[dependencies]
ldk-node = &quot;0.7&quot;
tokio = { version = &quot;1&quot;, features = [&quot;full&quot;] }</code></pre><p>The full&#xA0;<code>src/main.rs</code>&#xA0;will be built up function by function throughout the article. Each section adds one function and&#xA0;<code>main()</code>&#xA0;calls them in order. By the end, you&apos;ll have a single file that compiles and runs as a complete working node.</p><h2 id="helper-functions-printing-node-state">Helper Functions: Printing Node State</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#helper-functions-printing-node-state"></a></p><p>Before writing any node logic, add two helper functions at the top of&#xA0;<code>src/main.rs</code>. These get called after each meaningful action so you can see exactly what the node knows at that point: channels, payment directions, statuses, and amounts all printed in one place.</p><pre><code>use ldk_node::payment::{PaymentDirection, PaymentStatus};

fn print_channels(node: &amp;ldk_node::Node) {
    let channels = node.list_channels();
    if channels.is_empty() {
        println!(&quot;[channels] none&quot;);
        return;
    }
    for c in channels {
        println!(
            &quot;[channel] id: {} | peer: {} | capacity: {} sats | ready: {}&quot;,
            c.channel_id,
            c.counterparty_node_id,
            c.channel_value_sats,
            c.is_channel_ready,
        );
    }
}

fn print_payments(node: &amp;ldk_node::Node) {
    let payments = node.list_payments();
    if payments.is_empty() {
        println!(&quot;[payments] none&quot;);
        return;
    }
    for p in payments {
        let direction = match p.direction {
            PaymentDirection::Inbound  =&gt; &quot;INBOUND &quot;,
            PaymentDirection::Outbound =&gt; &quot;OUTBOUND&quot;,
        };
        let status = match p.status {
            PaymentStatus::Pending   =&gt; &quot;pending&quot;,
            PaymentStatus::Succeeded =&gt; &quot;succeeded&quot;,
            PaymentStatus::Failed    =&gt; &quot;failed&quot;,
        };
        println!(
            &quot;[payment] {} | {:?} | {} | {} msats | id: {:?}&quot;,
            direction,
            p.kind,
            status,
            p.amount_msat.unwrap_or(0),
            p.id,
        );
    }
}</code></pre><p><code>print_channels</code>&#xA0;shows every open or pending channel with its capacity and whether it&apos;s ready to route payments.&#xA0;<code>print_payments</code>&#xA0;shows every payment the node has seen, with direction, kind (bolt11, spontaneous, or onchain), status, and amount. You&apos;ll see both grow as the article progresses.</p><h2 id="building-the-node">Building the Node</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#building-the-node"></a></p><p>The entry point into&#xA0;<code>ldk-node</code>&#xA0;is&#xA0;<code>Builder</code>. You configure it, call&#xA0;<code>build()</code>, and get back a&#xA0;<code>Node</code>&#xA0;that manages everything from that point forward.</p><p>This article uses Bitcoin Core RPC as the chain source, which is what Polar runs under the hood. Open Polar, click on the Bitcoin Core node, and find the RPC credentials in the node settings panel. You&apos;ll need the host, port, username, and password.</p><p>Add this function to&#xA0;<code>src/main.rs</code>:</p><pre><code>use ldk_node::Builder;
use ldk_node::bitcoin::Network;

fn build_node() -&gt; ldk_node::Node {
    let mut builder = Builder::new();

    builder.set_network(Network::Regtest);

    builder.set_chain_source_bitcoind_rpc(
        &quot;127.0.0.1&quot;.to_string(),  // RPC host from Polar
        18443,                     // RPC port from Polar
        &quot;polaruser&quot;.to_string(),   // RPC username from Polar
        &quot;polarpass&quot;.to_string(),   // RPC password from Polar
    );

    builder.set_gossip_source_p2p();

    builder.build_with_fs_store().unwrap()
}</code></pre><p>On the network: Polar runs a local Regtest network by default, so&#xA0;<code>Network::Regtest</code>&#xA0;is the right choice. Working against Mutinynet or another Signet instead? Swap this to&#xA0;<code>Network::Signet</code>&#xA0;and use an Esplora endpoint with&#xA0;<code>set_chain_source_esplora()</code>. The full list of chain sources and store options is in the&#xA0;<a href="https://docs.rs/ldk-node/latest/ldk_node/struct.Builder.html?ref=blog.btrust.tech" rel="nofollow"><code>ldk-node</code><u>&#xA0;</u>docs</a>.</p><p>On gossip: On a local Regtest network with Polar, P2P gossip is the natural choice. Rapid Gossip Sync is better suited for connecting to the public Lightning network, where bootstrapping from a snapshot is faster than crawling peers.</p><p>On entropy: This example uses filesystem-derived entropy for brevity. In a real application, you would generate a BIP39 mnemonic once, persist it, and reload it on every subsequent start. Generating fresh entropy each run gives you a different node identity and wallet every time, which is not what you want outside of throwaway tests.</p><p>On persistence:&#xA0;<code>build_with_fs_store()</code>&#xA0;persists node state to the filesystem. For production, you would likely prefer&#xA0;<code>build_with_sqlite_store()</code>,&#xA0;<code>build_with_postgres_store()</code>, or&#xA0;<code>build_with_vss_store()</code>&#xA0;depending on your storage requirements.</p><h2 id="starting-the-node">Starting the Node</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#starting-the-node"></a></p><p>Add a&#xA0;<code>start_node</code>&#xA0;function:</p><pre><code>use std::sync::Arc;

fn start_node(node: Arc&lt;ldk_node::Node&gt;) {
    node.start().unwrap();

    let node_id = node.node_id();
    let funding_address = node.onchain_payment().new_address().unwrap();

    println!(&quot;Node ID:         {}&quot;, node_id);
    println!(&quot;Funding address: {}&quot;, funding_address);

    println!(&quot;\n[channels at startup]&quot;);
    print_channels(&amp;node);

    println!(&quot;\n[payments at startup]&quot;);
    print_payments(&amp;node);
}</code></pre><p><code>node.start()</code>&#xA0;launches the background threads that handle chain sync, peer connections, and event delivery. After that call returns, the node is live.</p><p><code>node_id()</code>&#xA0;is your node&apos;s public key, the identity other peers use to find and connect to you.</p><p><code>onchain_payment().new_address()</code>&#xA0;derives a fresh address from the BDK wallet. In Polar, send some Regtest BTC to this address using the Bitcoin Core node before moving on.</p><p>Now add&#xA0;<code>main()</code>&#xA0;and run it:</p><pre><code>#[tokio::main]
async fn main() {
    let node = Arc::new(build_node());
    start_node(Arc::clone(&amp;node));

    println!(&quot;\nFund the address above in Polar, then press Enter...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();
}</code></pre><p>Run with&#xA0;<code>cargo run</code>. You should see your node ID, a Regtest address, and empty channel and payment lists.</p><p><a href="https://private-user-images.githubusercontent.com/92169163/604497737-66d88c26-3219-45d1-b862-bae9b75fdbd5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM1MDk4MzAsIm5iZiI6MTc4MzUwOTUzMCwicGF0aCI6Ii85MjE2OTE2My82MDQ0OTc3MzctNjZkODhjMjYtMzIxOS00NWQxLWI4NjItYmFlOWI3NWZkYmQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzA4VDExMTg1MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVkNDhkYTUzN2YyNTJiNzk4NTkyNTc0ZjEwM2Y0YzNkMjE3MzI4NWI5MzE5OTlkM2Q4MDA0MDhlYTFlNzI5NTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.ut9TLCTPWWadjIi_QYflzMtOKvDiECd1FZPXeHPNKoE&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><h2 id="opening-a-channel">Opening a Channel</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#opening-a-channel"></a></p><p>With funds on-chain, add an&#xA0;<code>open_channel</code>&#xA0;function. You&apos;ll need Node B&apos;s pubkey and listening address from Polar. Click on Node B in the Polar interface and find them in the node info panel.</p><pre><code>use ldk_node::lightning::ln::msgs::SocketAddress;
use ldk_node::bitcoin::secp256k1::PublicKey;
use std::str::FromStr;

fn open_channel(node: Arc&lt;ldk_node::Node&gt;) {
    let peer_pubkey = PublicKey::from_str(&quot;NODE_B_PUBKEY_FROM_POLAR&quot;).unwrap();
    let peer_addr = SocketAddress::from_str(&quot;127.0.0.1:NODE_B_PORT&quot;).unwrap();

    node.open_channel(
        peer_pubkey,
        peer_addr,
        100_000,          // channel capacity in satoshis
        Some(50_000_000), // push amount in millisatoshis (50,000 sats to Node B)
        None,             // channel config: None uses defaults
    ).unwrap();

    println!(&quot;Channel open request sent.&quot;);

    println!(&quot;\n[channels after open request]&quot;);
    print_channels(&amp;node);
}</code></pre><p>The push amount is worth pausing on. It&#x2019;s the balance you hand to the peer the moment the channel opens. This gives Node B inbound capacity toward Node A from the start, meaning Node B can pay Node A immediately. Without it, all the liquidity sits on Node A&apos;s side, and Node B can&apos;t route anything back until Node A has spent some first. This trips up a lot of developers building their first integrations.</p><p>After&#xA0;<code>open_channel()</code>&#xA0;returns, the funding transaction has been broadcast but not yet confirmed.&#xA0;<code>print_channels</code>&#xA0;will show the channel with&#xA0;<code>ready: false</code>. That is expected. The channel becomes usable once the funding transaction confirms, which the event loop will signal.</p><h2 id="the-event-loop">The Event Loop</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#the-event-loop"></a></p><p>In a real application, the event loop is purely reactive. It handles what the node surfaces and nothing else. Payment initiation, invoice generation, user interaction, all of that happens elsewhere, driven by API calls or user input. The event loop just responds.</p><p>This is exactly how the code is structured here. The event loop runs on its own spawned task, always free to process events.&#xA0;<code>main()</code>&#xA0;drives the interactive flow separately, prompting you at each step.</p><p>Add the event loop function:</p><pre><code>use ldk_node::Event;

async fn run_event_loop(node: Arc&lt;ldk_node::Node&gt;) {
    loop {
        let event = node.next_event_async().await;

        match event {
            Event::ChannelReady { channel_id, counterparty_node_id, .. } =&gt; {
                println!(
                    &quot;\nChannel ready: {} with peer {:?}&quot;,
                    channel_id, counterparty_node_id
                );
                println!(&quot;\n[channels after ChannelReady]&quot;);
                print_channels(&amp;node);
                node.event_handled().unwrap();
            }

            Event::PaymentReceived { payment_id, amount_msat, .. } =&gt; {
                println!(
                    &quot;\nPayment received: {} msats (id: {:?})&quot;,
                    amount_msat, payment_id
                );
                // Persist the payment to your database before calling
                // event_handled(). Once acknowledged, the node moves on
                // and the event will not be re-delivered after a restart.
                println!(&quot;\n[payments after receive]&quot;);
                print_payments(&amp;node);
                node.event_handled().unwrap();
            }

            Event::PaymentSuccessful { payment_id, fee_paid_msat, .. } =&gt; {
                println!(
                    &quot;\nPayment succeeded (id: {:?}, fee: {:?} msats)&quot;,
                    payment_id, fee_paid_msat
                );
                println!(&quot;\n[payments after success]&quot;);
                print_payments(&amp;node);
                node.event_handled().unwrap();
            }

            Event::PaymentFailed { payment_id, reason, .. } =&gt; {
                println!(
                    &quot;\nPayment failed (id: {:?}, reason: {:?})&quot;,
                    payment_id, reason
                );
                // reason is a PaymentFailureReason that tells you whether
                // the failure was a routing problem, invoice expiry, and so on.
                // Useful for surfacing meaningful error messages to users.
                println!(&quot;\n[payments after failure]&quot;);
                print_payments(&amp;node);
                node.event_handled().unwrap();
            }

            Event::ChannelClosed { channel_id, reason, .. } =&gt; {
                println!(&quot;\nChannel closed: {} ({:?})&quot;, channel_id, reason);
                print_channels(&amp;node);
                node.event_handled().unwrap();
            }

            _ =&gt; { node.event_handled().unwrap(); }
        }
    }
}</code></pre><p>Always call&#xA0;<code>node.event_handled().unwrap()</code>&#xA0;after every branch, including the wildcard. The node blocks on delivering the next event until you acknowledge the current one. Missing it in any branch means the event loop silently stalls the moment that event type arrives.</p><h2 id="receiving-a-bolt11-payment">Receiving a BOLT11 Payment</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#receiving-a-bolt11-payment"></a></p><p>Add a&#xA0;<code>create_invoice</code>&#xA0;function:</p><pre><code>use ldk_node::lightning_invoice::{Bolt11InvoiceDescription, Description};

fn create_invoice(node: Arc&lt;ldk_node::Node&gt;) {
    let invoice_description =
        Bolt11InvoiceDescription::Direct(Description::new(String::from(&quot;coffee&quot;)).unwrap()).into();

    let invoice = node
        .bolt11_payment()
        .receive(
            10_000,               // amount in millisatoshis (10 sats)
            &amp;invoice_description,
            3600,                 // expiry in seconds
        )
        .unwrap();

    println!(&quot;\nNode A invoice generated. Take this to Polar and pay it from Node B:&quot;);
    println!(&quot;{}&quot;, invoice);
}</code></pre><p>The amount is in millisatoshis throughout.&#xA0;<code>ldk-node</code>&#xA0;works at millisat precision for everything payment-related.</p><p><code>bolt11_payment()</code>&#xA0;has more methods than just&#xA0;<code>receive()</code>. You can create variable-amount invoices with&#xA0;<code>receive_variable_amount()</code>, hold invoices pending manual release with&#xA0;<code>receive_for_hash()</code>, and more. The full API is at&#xA0;<a href="https://docs.rs/ldk-node/latest/ldk_node/payment/struct.Bolt11Payment.html?ref=blog.btrust.tech" rel="nofollow">docs.rs/ldk-node</a>.</p><h2 id="sending-a-bolt11-payment">Sending a BOLT11 Payment</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#sending-a-bolt11-payment"></a></p><p>Add a&#xA0;<code>send_payment</code>&#xA0;function:</p><pre><code>use ldk_node::lightning_invoice::Bolt11Invoice;

fn send_payment(node: Arc&lt;ldk_node::Node&gt;, invoice_str: &amp;str) {
    let invoice = match Bolt11Invoice::from_str(invoice_str) {
        Ok(i) =&gt; i,
        Err(e) =&gt; {
            eprintln!(&quot;\nInvalid invoice string ({e:?}). Skipping payment.&quot;);
            return;
        }
    };
    match node.bolt11_payment().send(&amp;invoice, None) {
        Ok(payment_id) =&gt; {
            println!(&quot;\nPayment sent to Node B (id: {})&quot;, payment_id);
            println!(&quot;Waiting for result in event loop...&quot;);
        }
        Err(e) =&gt; eprintln!(&quot;\nFailed to send payment ({e:?}).&quot;),
    }
}</code></pre><p><code>ldk-node</code>&#xA0;handles pathfinding, fee estimation, and retry logic internally. The&#xA0;<code>payment_id</code>&#xA0;returned here matches what you&apos;ll see in the&#xA0;<code>PaymentSuccessful</code>&#xA0;or&#xA0;<code>PaymentFailed</code>&#xA0;event, so store it if you need to correlate the outcome back to this call.</p><h2 id="bolt12-payments-offers">BOLT12 Payments (Offers)</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#bolt12-payments-offers"></a></p><p>BOLT12 introduces a different payment primitive called an offer. Unlike a BOLT11 invoice, an offer is reusable and does not expire by default. The payer fetches a fresh invoice from the offer each time they want to pay, so you share it once and it keeps working.</p><p>Add a&#xA0;<code>create_offer</code>&#xA0;function:</p><pre><code>use ldk_node::lightning::offers::offer::Offer;

fn create_offer(node: Arc&lt;ldk_node::Node&gt;) {
    match node.bolt12_payment().receive(10_000, &quot;coffee&quot;, None, None) {
        Ok(offer) =&gt; {
            println!(&quot;\nOffer created. Share this with the payer:&quot;);
            println!(&quot;{}&quot;, offer);
        }
        Err(e) =&gt; eprintln!(
            &quot;\nCould not create BOLT12 offer ({e:?}). Make sure your node is connected to an onion-message-capable peer.&quot;
        ),
    }
}</code></pre><p>To pay an offer, add a&#xA0;<code>send_bolt12_payment</code>&#xA0;function:</p><pre><code>fn send_bolt12_payment(node: Arc&lt;ldk_node::Node&gt;, offer_str: &amp;str) {
    let offer = match Offer::from_str(offer_str) {
        Ok(o) =&gt; o,
        Err(e) =&gt; {
            eprintln!(&quot;\nInvalid offer string ({e:?}). Skipping BOLT12 payment.&quot;);
            return;
        }
    };
    match node.bolt12_payment().send(&amp;offer, None, None, None) {
        Ok(payment_id) =&gt; {
            println!(&quot;\nBOLT12 payment sent (id: {})&quot;, payment_id);
            println!(&quot;Waiting for result in event loop...&quot;);
        }
        Err(e) =&gt; eprintln!(&quot;\nFailed to send BOLT12 payment ({e:?}).&quot;),
    }
}</code></pre><p>The outcome arrives the same way as BOLT11, as a&#xA0;<code>PaymentSuccessful</code>&#xA0;or&#xA0;<code>PaymentFailed</code>&#xA0;event in the event loop. The full BOLT12 API including variable amount offers and offers with descriptions is at&#xA0;<a href="https://docs.rs/ldk-node/latest/ldk_node/payment/struct.Bolt12Payment.html?ref=blog.btrust.tech" rel="nofollow">docs.rs/ldk-node</a>.</p><p>Note: Paying a BOLT12 offer end to end through Polar&apos;s UI is not currently supported. The&#xA0;<code>send_bolt12_payment</code>&#xA0;function is correct and will work against any compatible BOLT12 payer outside of this regtest setup.</p><h2 id="spontaneous-payments-keysend">Spontaneous Payments (Keysend)</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#spontaneous-payments-keysend"></a></p><p>Not every payment needs an invoice. Keysend lets you push sats directly to a node&apos;s public key without the recipient generating anything first. It&#x2019;s useful for tipping, streaming payments, or any flow where waiting for an invoice adds unnecessary friction.</p><p>Add a&#xA0;<code>send_spontaneous_payment</code>&#xA0;function:</p><pre><code>fn send_spontaneous_payment(node: Arc&lt;ldk_node::Node&gt;, recipient_pubkey: PublicKey) {
    let payment_id = node
        .spontaneous_payment()
        .send(5_000, recipient_pubkey, None)
        .unwrap();
    println!(
        &quot;\nSpontaneous payment sent to Node B (id: {})&quot;,
        payment_id
    );
    println!(&quot;Waiting for result in event loop...&quot;);
}</code></pre><p>One thing to keep in mind: keysend payments are not protected by a payment hash the recipient generates, which changes the trust model slightly compared to BOLT11. The recipient can&apos;t prove they were expecting the payment, and you can&apos;t prove they agreed to receive it. For most spontaneous use cases, this does not matter, but it&apos;s worth knowing before building a product on top of it.</p><h2 id="putting-it-all-together-in-main">Putting it all Together in Main()</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#putting-it-all-together-in-main"></a></p><p>Now update&#xA0;<code>main()</code>&#xA0;to wire everything together. The event loop runs on its own spawned task, so it&apos;s always free to process events. The interactive flow runs sequentially in&#xA0;<code>main()</code>, prompting you at each step. This mirrors how a real application works: the event loop reacts, the application layer initiates.</p><pre><code>#[tokio::main]
async fn main() {
    let node = Arc::new(build_node());
    start_node(Arc::clone(&amp;node));

    println!(&quot;\nFund the address above in Polar, then press Enter...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    let node_b_pubkey = PublicKey::from_str(&quot;NODE_B_PUBKEY_FROM_POLAR&quot;).unwrap();

    open_channel(Arc::clone(&amp;node));

    // Spawn the event loop on its own task so it runs independently.
    // It will print events as they arrive without blocking main().
    tokio::spawn(run_event_loop(Arc::clone(&amp;node)));

    println!(&quot;\nMine blocks in Polar to confirm the channel.&quot;);
    println!(&quot;Press Enter once you see ChannelReady printed above...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    // Step 1: Generate an invoice for Node B to pay (inbound payment)
    create_invoice(Arc::clone(&amp;node));
    println!(&quot;\nPay the invoice from Node B in Polar, then press Enter when done...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();
    // PaymentReceived will have already fired and printed on the event loop task.

    // Step 2: Send an outbound BOLT11 payment to Node B
    println!(&quot;\nGenerate an invoice on Node B in Polar.&quot;);
    println!(&quot;Paste it here, then press Enter:&quot;);
    let mut invoice_input = String::new();
    std::io::stdin().read_line(&amp;mut invoice_input).unwrap();
    send_payment(Arc::clone(&amp;node), invoice_input.trim());
    
    // Step 3: Create a BOLT12 offer for Node B to pay
    println!(&quot;Press enter to create a BOLT12 offer for Node B to pay (inbound payment)...&quot;);
    std::io::stdin().read_line(&amp;mut String::new()).unwrap();
    create_offer(Arc::clone(&amp;node));
    println!(&quot;\nPay the offer from Node B in Polar, then press Enter when done...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    // Step 4: Send a BOLT12 payment to Node B
    println!(&quot;Press enter to send a BOLT12 payment to Node B...&quot;);
    std::io::stdin().read_line(&amp;mut String::new()).unwrap();
    println!(&quot;\nGenerate an offer on Node B in Polar.&quot;);
    println!(&quot;Paste it here, then press Enter:&quot;);
    let mut offer_input = String::new();
    std::io::stdin().read_line(&amp;mut offer_input).unwrap();
    send_bolt12_payment(Arc::clone(&amp;node), offer_input.trim()); 

    // Step 5: Send a spontaneous payment to Node B, no invoice needed
    println!(&quot;Press Enter to send a spontaneous payment to Node B (no invoice needed)...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();
    send_spontaneous_payment(Arc::clone(&amp;node), node_b_pubkey);

    // Keep main alive so the event loop task can finish processing.
    println!(&quot;\nWaiting for remaining events...&quot;);
    tokio::time::sleep(tokio::time::Duration::from_secs(10)).await;
}</code></pre><p>Run with&#xA0;<code>cargo run</code>. After funding and opening the channel, mine blocks in Polar to confirm it. You&apos;ll see&#xA0;<code>ChannelReady</code>&#xA0;print from the event loop task. From that point, each payment step is driven by your input, and the event loop prints the result as soon as the node delivers it.</p><p><a href="https://private-user-images.githubusercontent.com/92169163/604499415-77ea81c4-99fc-4d97-b909-22f2f38f7f30.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDQ0OTk0MTUtNzdlYTgxYzQtOTlmYy00ZDk3LWI5MDktMjJmMmYzOGY3ZjMwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWExZWJmZmI1MDkzZWRhY2ZmZDBiMWY2MWQ1NzdkOThkOTBjZjBmYmZhMzYyZGFjOWE2YmJhNmY3NTBiNDJlODkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.PGkIBx_UqiDvYguZtLy_kJy9cPA_LB7gaMA8XcV4HOM&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><p><a href="https://private-user-images.githubusercontent.com/92169163/604499687-403dd521-16c3-4fce-81c2-2eac1f3d47df.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDQ0OTk2ODctNDAzZGQ1MjEtMTZjMy00ZmNlLTgxYzItMmVhYzFmM2Q0N2RmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNmZjcxZmY0NDg3YTMzMWU2NmY5MjkwNzU2ZjM1NzM5OTg1NThlNzEwODAyMjA2N2NkMTAyNTYzY2M1ZjhlMWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.f47AhX81U_h_x2eu_BUfj2fm_mUDQbf6fJlfqaE6cGM&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><p><a href="https://private-user-images.githubusercontent.com/92169163/604500017-2f960d65-ff8b-40dc-8b55-1f88e799ce09.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDQ1MDAwMTctMmY5NjBkNjUtZmY4Yi00MGRjLThiNTUtMWY4OGU3OTljZTA5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwNjc0YjdmNzk5Nzk3ZGU0ZjZiYjk0ZGMwZjYwMDZjZTIyYzhmMTg0NGJkZDFjODg1MGVmYWJlZTBkY2I3MWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.ZAwTlKBc-puwvlNTC-AmUmofpon8OecSCTZbgpDUPUA&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><p><a href="https://private-user-images.githubusercontent.com/92169163/604500328-b33dea6d-55ff-471e-85b8-9c6bd2ef8f37.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDQ1MDAzMjgtYjMzZGVhNmQtNTVmZi00NzFlLTg1YjgtOWM2YmQyZWY4ZjM3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5YzdmMWM3ZDFhNmJhOGIzMzgwYmU1NTJjYzk5Y2M5NzM0ZTI5NDRlMDI5ZjRkNDFhNjc0MWNjNTRkOGU0MmEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.LMbTURKtMsgcWA4c0UB9JE1A9YHXZ0lImNjznz4yb0A&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><p><a href="https://private-user-images.githubusercontent.com/92169163/604500509-f2fce734-db9d-4947-8c9b-9152b8824ef7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDQ1MDA1MDktZjJmY2U3MzQtZGI5ZC00OTQ3LThjOWItOTE1MmI4ODI0ZWY3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwYTYzMWMxZTJjYjAwYzM5NzkwOGRhZTNmYjQ4NmIwOTA5YTEyYjczZmExMDdiOTM1YjdmZDlmM2ZhYzQ2NjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.8FsQBkVxQHZxOUhtvIDjn8NCHpDLYJMepB2lE6fpSWU&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><p><a href="https://private-user-images.githubusercontent.com/92169163/606082348-119eed95-9136-49af-9afa-c1117778e2ec.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDYwODIzNDgtMTE5ZWVkOTUtOTEzNi00OWFmLTlhZmEtYzExMTc3NzhlMmVjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNjZjg4OWMxMjIwMWE5ZmJmOTZhODEyNjk1ODZjZjk0ZWE1YTA2OWZjZmMwY2Y3Yzg3NjMwMDk5ODcwZGU4NmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.OP2kplpJ-sdZfOJySXWTwgTms6iHuLs-Blwdv88W40Q&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><p><a href="https://private-user-images.githubusercontent.com/92169163/604500635-7504f045-38ac-4c72-b029-5f41c0da22fb.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODQ1NTA4MTEsIm5iZiI6MTc4NDU1MDUxMSwicGF0aCI6Ii85MjE2OTE2My82MDQ1MDA2MzUtNzUwNGYwNDUtMzhhYy00YzcyLWIwMjktNWY0MWMwZGEyMmZiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNzIwVDEyMjgzMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwNzA2ZWRiNGE4OGY4NGFhYWVmMGVjZTJjNmMzN2Q5ZTE3NGIzODdkMzU0N2EyMDk2MGNiNjM4YTIwOGQ1NjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.bMBriqUZ5fb1Tp0MM1iu0At9mK4mTsJrSzRO9qd16EA&amp;ref=blog.btrust.tech" rel="noopener noreferrer"></a></p><h2 id="the-complete-mainrs">The Complete Main.rs</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#the-complete-mainrs"></a></p><p>Here is the full file for reference. Every function is in place,&#xA0;<code>main()</code>&#xA0;drives the interactive flow, and the event loop handles everything the node surfaces on its own task.</p><pre><code>use ldk_node::Builder;
use ldk_node::Event;
use ldk_node::bitcoin::Network;
use ldk_node::bitcoin::secp256k1::PublicKey;
use ldk_node::lightning::ln::msgs::SocketAddress;
use ldk_node::lightning::offers::offer::Offer;
use ldk_node::lightning_invoice::Bolt11Invoice;
use ldk_node::lightning_invoice::{Bolt11InvoiceDescription, Description};
use ldk_node::payment::{PaymentDirection, PaymentStatus};
use std::str::FromStr;
use std::sync::Arc;

// --- Helpers ---

fn print_channels(node: &amp;ldk_node::Node) {
    let channels = node.list_channels();
    if channels.is_empty() {
        println!(&quot;[channels] none&quot;);
        return;
    }
    for c in channels {
        println!(
            &quot;[channel] id: {} | peer: {} | capacity: {} sats | ready: {}&quot;,
            c.channel_id,
            c.counterparty_node_id,
            c.channel_value_sats,
            c.is_channel_ready,
        );
    }
}

fn print_payments(node: &amp;ldk_node::Node) {
    let payments = node.list_payments();
    if payments.is_empty() {
        println!(&quot;[payments] none&quot;);
        return;
    }
    for p in payments {
        let direction = match p.direction {
            PaymentDirection::Inbound  =&gt; &quot;INBOUND &quot;,
            PaymentDirection::Outbound =&gt; &quot;OUTBOUND&quot;,
        };
        let status = match p.status {
            PaymentStatus::Pending   =&gt; &quot;pending&quot;,
            PaymentStatus::Succeeded =&gt; &quot;succeeded&quot;,
            PaymentStatus::Failed    =&gt; &quot;failed&quot;,
        };
        println!(
            &quot;[payment] {} | {:?} | {} | {} msats | id: {:?}&quot;,
            direction,
            p.kind,
            status,
            p.amount_msat.unwrap_or(0),
            p.id,
        );
    }
}

// --- Node setup ---

fn build_node() -&gt; ldk_node::Node {
    let mut builder = Builder::new();
    builder.set_network(Network::Regtest);
    builder.set_chain_source_bitcoind_rpc(
        &quot;127.0.0.1&quot;.to_string(),
        18443,
        &quot;polaruser&quot;.to_string(),
        &quot;polarpass&quot;.to_string(),
    );
    builder.set_gossip_source_p2p();
    builder.build_with_fs_store().unwrap()
}

fn start_node(node: Arc&lt;ldk_node::Node&gt;) {
    node.start().unwrap();
    println!(&quot;Node ID:         {}&quot;, node.node_id());
    println!(&quot;Funding address: {}&quot;, node.onchain_payment().new_address().unwrap());
    println!(&quot;\n[channels at startup]&quot;);
    print_channels(&amp;node);
    println!(&quot;\n[payments at startup]&quot;);
    print_payments(&amp;node);
}

// --- Channel ---

fn open_channel(node: Arc&lt;ldk_node::Node&gt;) {
    let peer_pubkey = PublicKey::from_str(&quot;NODE_B_PUBKEY_FROM_POLAR&quot;).unwrap();
    let peer_addr = SocketAddress::from_str(&quot;127.0.0.1:NODE_B_PORT&quot;).unwrap();
    node.open_channel(peer_pubkey, peer_addr, 100_000, Some(50_000_000), None).unwrap();
    println!(&quot;Channel open request sent.&quot;);
    println!(&quot;\n[channels after open request]&quot;);
    print_channels(&amp;node);
}

// --- Payments ---

fn create_invoice(node: Arc&lt;ldk_node::Node&gt;) {
    let invoice_description =
        Bolt11InvoiceDescription::Direct(Description::new(String::from(&quot;coffee&quot;)).unwrap()).into();
    let invoice = node
        .bolt11_payment()
        .receive(10_000, &amp;invoice_description, 3600)
        .unwrap();
    println!(&quot;\nNode A invoice generated. Pay this from Node B in Polar:&quot;);
    println!(&quot;{}&quot;, invoice);
}

fn send_payment(node: Arc&lt;ldk_node::Node&gt;, invoice_str: &amp;str) {
    let invoice = match Bolt11Invoice::from_str(invoice_str) {
        Ok(i) =&gt; i,
        Err(e) =&gt; {
            eprintln!(&quot;\nInvalid invoice string ({e:?}). Skipping payment.&quot;);
            return;
        }
    };
    match node.bolt11_payment().send(&amp;invoice, None) {
        Ok(payment_id) =&gt; {
            println!(&quot;\nPayment sent to Node B (id: {})&quot;, payment_id);
            println!(&quot;Waiting for result in event loop...&quot;);
        }
        Err(e) =&gt; eprintln!(&quot;\nFailed to send payment ({e:?}).&quot;),
    }
}

fn create_offer(node: Arc&lt;ldk_node::Node&gt;) {
    match node.bolt12_payment().receive(10_000, &quot;coffee&quot;, None, None) {
        Ok(offer) =&gt; {
            println!(&quot;\nOffer created. Share this with the payer:&quot;);
            println!(&quot;{}&quot;, offer);
        }
        Err(e) =&gt; eprintln!(
            &quot;\nCould not create BOLT12 offer ({e:?}). Make sure your node is connected to an onion-message-capable peer.&quot;
        ),
    }
}

fn send_bolt12_payment(node: Arc&lt;ldk_node::Node&gt;, offer_str: &amp;str) {
    let offer = match Offer::from_str(offer_str) {
        Ok(o) =&gt; o,
        Err(e) =&gt; {
            eprintln!(&quot;\nInvalid offer string ({e:?}). Skipping BOLT12 payment.&quot;);
            return;
        }
    };
    match node.bolt12_payment().send(&amp;offer, None, None, None) {
        Ok(payment_id) =&gt; {
            println!(&quot;\nBOLT12 payment sent (id: {})&quot;, payment_id);
            println!(&quot;Waiting for result in event loop...&quot;);
        }
        Err(e) =&gt; eprintln!(&quot;\nFailed to send BOLT12 payment ({e:?}).&quot;),
    }
}

fn send_spontaneous_payment(node: Arc&lt;ldk_node::Node&gt;, recipient_pubkey: PublicKey) {
    let payment_id = node
        .spontaneous_payment()
        .send(5_000, recipient_pubkey, None)
        .unwrap();
    println!(&quot;\nSpontaneous payment sent to Node B (id: {})&quot;, payment_id);
    println!(&quot;Waiting for result in event loop...&quot;);
}

// --- Event loop ---

async fn run_event_loop(node: Arc&lt;ldk_node::Node&gt;) {
    loop {
        let event = node.next_event_async().await;

        match event {
            Event::ChannelReady { channel_id, counterparty_node_id, .. } =&gt; {
                println!(
                    &quot;\nChannel ready: {} with peer {:?}&quot;,
                    channel_id, counterparty_node_id
                );
                println!(&quot;\n[channels after ChannelReady]&quot;);
                print_channels(&amp;node);
                node.event_handled().unwrap();
            }

            Event::PaymentReceived { payment_id, amount_msat, .. } =&gt; {
                println!(
                    &quot;\nPayment received: {} msats (id: {:?})&quot;,
                    amount_msat, payment_id
                );
                println!(&quot;\n[payments after receive]&quot;);
                print_payments(&amp;node);
                node.event_handled().unwrap();
            }

            Event::PaymentSuccessful { payment_id, fee_paid_msat, .. } =&gt; {
                println!(
                    &quot;\nPayment succeeded (id: {:?}, fee: {:?} msats)&quot;,
                    payment_id, fee_paid_msat
                );
                println!(&quot;\n[payments after success]&quot;);
                print_payments(&amp;node);
                node.event_handled().unwrap();
            }

            Event::PaymentFailed { payment_id, reason, .. } =&gt; {
                println!(
                    &quot;\nPayment failed (id: {:?}, reason: {:?})&quot;,
                    payment_id, reason
                );
                println!(&quot;\n[payments after failure]&quot;);
                print_payments(&amp;node);
                node.event_handled().unwrap();
            }

            Event::ChannelClosed { channel_id, reason, .. } =&gt; {
                println!(&quot;\nChannel closed: {} ({:?})&quot;, channel_id, reason);
                print_channels(&amp;node);
                node.event_handled().unwrap();
            }

            _ =&gt; { node.event_handled().unwrap(); }
        }
    }
}

// --- Entry point ---

#[tokio::main]
async fn main() {
    let node = Arc::new(build_node());

    start_node(Arc::clone(&amp;node));

    println!(&quot;\nFund the address above in Polar, then press Enter...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    let node_b_pubkey = PublicKey::from_str(&quot;NODE_B_PUBKEY_FROM_POLAR&quot;).unwrap();

    open_channel(Arc::clone(&amp;node));

    tokio::spawn(run_event_loop(Arc::clone(&amp;node)));

    println!(&quot;\nMine blocks in Polar to confirm the channel.&quot;);
    println!(&quot;Press Enter once you see ChannelReady printed above...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    create_invoice(Arc::clone(&amp;node));
    println!(&quot;\nPay the invoice from Node B in Polar, then press Enter when done...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    println!(&quot;\nGenerate an invoice on Node B in Polar.&quot;);
    println!(&quot;Paste it here, then press Enter:&quot;);
    let mut invoice_input = String::new();
    std::io::stdin().read_line(&amp;mut invoice_input).unwrap();
    send_payment(Arc::clone(&amp;node), invoice_input.trim());
    
    println!(&quot;Press enter to create a BOLT12 offer for Node B to pay (inbound payment)...&quot;);
    std::io::stdin().read_line(&amp;mut String::new()).unwrap();
    create_offer(Arc::clone(&amp;node));
    println!(&quot;\nPay the offer from Node B in Polar, then press Enter when done...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();

    println!(&quot;Press enter to send a BOLT12 payment to Node B...&quot;);
    std::io::stdin().read_line(&amp;mut String::new()).unwrap();
    println!(&quot;\nGenerate an offer on Node B in Polar.&quot;);
    println!(&quot;Paste it here, then press Enter:&quot;);
    let mut offer_input = String::new();
    std::io::stdin().read_line(&amp;mut offer_input).unwrap();
    send_bolt12_payment(Arc::clone(&amp;node), offer_input.trim());

    println!(&quot;Press Enter to send a spontaneous payment to Node B (no invoice needed)...&quot;);
    let mut input = String::new();
    std::io::stdin().read_line(&amp;mut input).unwrap();
    send_spontaneous_payment(Arc::clone(&amp;node), node_b_pubkey);

    println!(&quot;\nWaiting for remaining events...&quot;);
    tokio::time::sleep(tokio::time::Duration::from_secs(10)).await;
}</code></pre><h2 id="what-you-can-build-from-here">What You Can Build From Here</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#what-you-can-build-from-here"></a></p><p>Once the basics are working, there are a few directions worth exploring.</p><p>Embedding a node in a backend service gives you Lightning payments without routing through a third-party provider. The node runs as a long-lived process alongside your application, and payments arrive through the event loop rather than webhooks.</p><p>LDK Node has first-class support for the LSPS protocols:&#xA0;<a href="https://github.com/lightning/blips/blob/master/blip-0050.md?ref=blog.btrust.tech">LSPS0</a>,&#xA0;<a href="https://github.com/lightning/blips/blob/master/blip-0051.md?ref=blog.btrust.tech">LSPS1</a>, and&#xA0;<a href="https://github.com/lightning/blips/blob/master/blip-0052.md?ref=blog.btrust.tech">LSPS2</a>, the open standards for Lightning Service Providers. Building a service that opens channels on demand for users goes through those protocols.&#xA0;<a href="https://github.com/lightningdevkit/ldk-node/pull/792?ref=blog.btrust.tech">Work in<u>&#xA0;</u><code>ldk-node</code><u>&#xA0;</u>on multi-LSP configurations</a>&#xA0;makes it possible to connect to more than one LSP and discover their capabilities automatically via LSPS0 protocol negotiation.</p><p>The Swift and Kotlin bindings wrap the same Rust core, so the event loop, the Builder pattern, and the payment APIs behave identically on mobile. The mental model transfers directly.</p><h2 id="where-to-go-next">Where To Go Next</h2><p><a href="https://gist.github.com/Camillarhi/f27d89dd2d02d5f20786f91a632ea358?ref=blog.btrust.tech#where-to-go-next"></a></p><p>The&#xA0;<a href="https://github.com/lightningdevkit/ldk-node?ref=blog.btrust.tech"><code>ldk-node</code><u>&#xA0;</u>GitHub repository</a>&#xA0;has the source, the CHANGELOG, and the issue tracker. The PR history is genuinely useful for understanding why design decisions were made.</p><p>The&#xA0;<a href="https://docs.rs/ldk-node/latest/ldk_node/?ref=blog.btrust.tech" rel="nofollow">API docs on docs.rs</a>&#xA0;cover the full surface, including things this article did not get into: on-chain sends, channel configuration, and other chain source options.</p><p>The&#xA0;<a href="https://discord.gg/5AcknnMfBw?ref=blog.btrust.tech" rel="nofollow">LDK Discord</a>&#xA0;is active. The&#xA0;<code>#ldk-dev</code>&#xA0;channel is where contributors and users discuss implementation questions, and the maintainers are responsive. If you run into issues following this article,&#xA0;<code>#ldk-help</code>&#xA0;is the right place to ask.</p><p>LDK Node makes Lightning approachable without hiding what&#x2019;s actually happening. The API is small enough to hold in your head, the event model maps cleanly to how the protocol works under the hood, and the escape hatch to raw LDK is there when you need it. If the protocol has felt too complex to build on before, this is the right starting point.</p>]]></content:encoded></item><item><title><![CDATA[What Happens After Your First Merged PR?]]></title><description><![CDATA[<p>There are few moments in open source that feel as rewarding as seeing your first pull request merged.</p><p>For many contributors, it marks the end of days, weeks, or even months spent navigating an unfamiliar codebase, responding to review comments, revising changes, and wondering if their contribution will eventually be</p>]]></description><link>https://blog.btrust.tech/what-happens-after-your-first-merged-pr/</link><guid isPermaLink="false">6a59e03da45d04b407ba3c97</guid><category><![CDATA[Btrust]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Fri, 17 Jul 2026 08:03:05 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_5967491590894849774_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_5967491590894849774_y.jpg" alt="What Happens After Your First Merged PR?"><p>There are few moments in open source that feel as rewarding as seeing your first pull request merged.</p><p>For many contributors, it marks the end of days, weeks, or even months spent navigating an unfamiliar codebase, responding to review comments, revising changes, and wondering if their contribution will eventually be accepted. When the merge notification finally appears, it brings a sense of accomplishment. The effort has paid off, the contribution has been accepted, and your work has become part of a project that thousands of people rely on.</p><p>It is a milestone almost every contributor remembers. What happens afterwards, however, receives far less attention.</p><p>Some contributors submit another pull request almost immediately. Others become active members of the communities surrounding the projects they contribute to. Some eventually become reviewers, maintainers, and mentors. Others quietly stop contributing after their first merge.</p><p>What separates those paths?</p><p>To explore that question, we spoke with <a href="https://x.com/kelvinator05?ref=blog.btrust.tech"><u>Kelvin Isievwore</u></a>, Head of Engineering at Btrust, alongside Btrust Developer Grantees <a href="https://x.com/sadeeq_ismaela?ref=blog.btrust.tech"><u>Abubakar Sadiq</u></a><strong> </strong>and <a href="https://x.com/engb_os?ref=blog.btrust.tech"><u>Enigbe Ochekliye</u></a>. Their experiences suggest that while your first merged PR is worth celebrating, it is rarely the moment that defines your journey. What matters most is what you do afterwards.</p><h2 id="the-first-merge-changes-the-work"><strong>The First Merge Changes the Work</strong></h2><p>Kelvin still remembers his first merged pull request. In 2023, he found a bug that had been unresolved for more than a year. It had gradually become a bottleneck for new contributors. Before writing code, Kelvin spoke with the project maintainer to understand what others had tried and why those attempts had failed.</p><p>Those conversations shaped nearly two months of investigation before he eventually found a solution.</p><p>Looking back, the experience meant much more than fixing one bug.</p><blockquote><em>That was the moment I realized this would become my routine, solving hard problems. It was also the moment I knew I wasn&apos;t going to stop contributing anytime soon.</em></blockquote><p>Today, Kelvin reviews contributions and mentors developers across the Bitcoin ecosystem. He has noticed that many new contributors misunderstand what their first merge really means.</p><blockquote><em>Many people think it gets easier after the first merged PR, but it&apos;s actually the opposite. Now you&apos;re expected to keep learning, improve your technical skills, communicate more effectively, help other contributors, and become better at receiving and acting on feedback. In many ways, the real work begins after that first merge.</em></blockquote><p>A merged pull request does more than add code to a repository. It begins to build trust. Maintainers have seen you respond to feedback, collaborate during review, and carry an idea through to completion. That trust can lead to more opportunities and responsibility. But it also comes with an expectation: keep learning.</p><h2 id="the-work-continues"><strong>The Work Continues</strong></h2><p>Abubakar Sadiq experienced this almost immediately. His first contribution improved a functional test he found while reading through a project&#x2019;s codebase. Once it was merged, reviewers suggested a follow-up fix that would apply the same improvement in other places.</p><blockquote><em>After the PR was merged, reviewers suggested a follow-up fix to use the new improvement in other places.</em></blockquote><p>For Abubakar, the merge was not the end of the task. It opened the door to the next contribution.</p><p>Sometimes, that next step can come even earlier. While the first PR is still under review, you may notice a related issue, find another small improvement, or receive feedback that points to a separate piece of work. Starting a second PR before the first one merges is completely normal, as long as the changes are independent and you can manage the review process.</p><p>The review process itself also challenged Abubakar&#x2019;s expectations.</p><blockquote><em>I was surprised by how thorough and lengthy the review process was, even for a test PR.</em></blockquote><p>For someone contributing to a mature open-source project for the first time, that level of scrutiny can feel intimidating. But it reflects the care these projects require. Reviews are not just about finding mistakes; they are part of the collaborative process that helps contributors improve.</p><p>Abubakar&#x2019;s advice to new contributors is simple:</p><blockquote><em>If there are suggested follow-up review comments, see them through by opening a new PR that addresses them.</em></blockquote><p>It is straightforward advice, but it reflects an important mindset. Open-source progress is rarely about one contribution. It is about returning, improving, and building on what you have already learned.</p><h2 id="curiosity-is-what-keeps-contributors-growing"><strong>Curiosity Is What Keeps Contributors Growing</strong></h2><p>For Enigbe, the biggest lesson from her first merged pull request was discovering how much more she had to learn.</p><p>Her contribution involved Rust, a language she already felt comfortable using. The challenge came after she made her changes: the full build refused to compile because she had gaps in her understanding of the Foreign Function Interface, or FFI.</p><p>The experience was frustrating, but it became one of the most valuable lessons of her early open-source journey.</p><blockquote><em>It was a deeply humbling experience. It showed me the importance of understanding the broader system rather than focusing only on the part you&apos;re directly modifying.</em></blockquote><p>That lesson continues to shape the way she approaches open source today.</p><p>Rather than viewing a merged pull request as proof that she had mastered a project, she left with a deeper appreciation for the context required to contribute meaningfully to mature codebases. High-quality contributions, she says, demand patience, attention to detail, and an understanding of how different parts of a system fit together.</p><p>Those expectations have only strengthened her curiosity.</p><blockquote><em>Every contribution answered one question, uncovering several more, and that curiosity has kept me engaged.</em></blockquote><p>That curiosity has taken her beyond writing code alone. Wanting to better understand Bitcoin and distributed systems, Enigbe started a small book club with fellow Bitcoin enthusiasts and software developers. Together, they study Bitcoin and computer science fundamentals to build a stronger understanding of the systems they contribute to.</p><p>Her experience reflects something that came up throughout these conversations: contributors who stay engaged are rarely motivated only by a growing list of merged PRs. They stay because every contribution teaches them something new, raises new questions, and gives them another reason to learn.</p><h2 id="the-contributors-who-keep-showing-up"><strong>The Contributors Who Keep Showing Up</strong></h2><p>After years of reviewing contributions and mentoring developers, Kelvin has noticed that a first merged PR is not always a good predictor of who will become a long-term contributor.</p><p>The difference, he says, is rarely technical skill alone.</p><blockquote><em>Consistency, the ability to learn quickly from mistakes, and persistence make all the difference.</em></blockquote><p>He has seen contributors whose PRs were closed because the work was no longer a project priority. Others waited weeks for a review or had to rethink their approach after extensive feedback.</p><p>The people who kept going were often the ones who learned to ask better questions, understand what the project actually needed, and focus their energy there.</p><p>Contributing consistently is also about more than writing code. Kelvin encourages people to become active in the communities around the projects they care about. Join Slack or Discord conversations, attend project meetings, read open pull requests, review code when you can, and engage with maintainers.</p><p>These small actions help you understand the project better while building trust within its community.</p><p>Enigbe shares a similar view. She believes one of the best ways to keep growing is by reviewing pull requests.</p><p>Code review lets contributors explore unfamiliar parts of a codebase, see different engineering choices, and offer thoughtful feedback that helps move the project forward. It is a reminder that meaningful contribution is not only about the PRs you merge yourself.</p><h2 id="more-than-a-milestone"><strong>More Than a Milestone</strong></h2><p>Your first merged pull request is easy to celebrate because it is visible. It appears on GitHub, earns congratulations from peers, and gives you proof that your work has become part of a real project.</p><p>But the more important changes often happen quietly. They show up in the confidence to ask better questions, the patience to work through several rounds of review, the curiosity to understand parts of a codebase beyond the task in front of you, and the willingness to keep showing up after the excitement of that first merge fades.</p><p>These qualities cannot be measured by a GitHub profile or a list of merged PRs. They grow over time through consistent participation, thoughtful feedback, and a genuine desire to keep learning.</p><p>That was the strongest thread running through every conversation for this article.</p><p>Kelvin found himself returning to harder problems after his first merge. Abubakar learned that one contribution can naturally lead to another, sometimes even before the first one is fully merged. Enigbe gained a deeper appreciation for the systems she was working in and developed a curiosity that still shapes how she learns today.</p><p>None of them described their first merged PR as the moment they had finally &#x201C;made it&#x201D;. They described it as the moment they realised there was still so much more to learn. Perhaps that is what really happens after your first merged PR.</p><p>Quien busque <a href="https://www.camisetatienda.com/?ref=blog.btrust.tech">qu&#xE9; medidas comprobar en una camiseta de portero</a> puede reducir dudas comprobando el corte de las mangas y la libertad de movimiento. Una revisi&#xF3;n final deber&#xED;a incluir las instrucciones de cuidado del tejido y los estampados.</p><p>You stop thinking only about making your first contribution and start thinking about how you can make the next one.</p><p>As Kelvin puts it:</p><blockquote><strong>Congratulations! Your Bitcoin open-source journey officially begins.</strong></blockquote>]]></content:encoded></item><item><title><![CDATA[Announcing Q2, 2026 Btrust Developer Grant Recipients]]></title><description><![CDATA[<p><strong>Africa, July 13, 2026</strong> - We&#x2019;re excited to announce the Q2 2026 Btrust developer grant recipients. Last quarter, seven Bitcoin open-source developers were awarded grants, including three starter grant recipients and four long-term open-source cohort members.</p><p>This cohort continues our mission to decentralize Bitcoin open-source development by supporting</p>]]></description><link>https://blog.btrust.tech/announcing-q2-2026-btrust-developer-grant-recipients/</link><guid isPermaLink="false">6a54e069a45d04b407ba3aeb</guid><category><![CDATA[Btrust]]></category><category><![CDATA[Grants]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Mon, 13 Jul 2026 12:59:57 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/Q2--2026-announcement.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/Q2--2026-announcement.jpg" alt="Announcing Q2, 2026 Btrust Developer Grant Recipients"><p><strong>Africa, July 13, 2026</strong> - We&#x2019;re excited to announce the Q2 2026 Btrust developer grant recipients. Last quarter, seven Bitcoin open-source developers were awarded grants, including three starter grant recipients and four long-term open-source cohort members.</p><p>This cohort continues our mission to decentralize Bitcoin open-source development by supporting talented contributors from the Global Majority. Their work spans wallet infrastructure, Bitcoin Core testing, developer tools, privacy-preserving payments, peer-to-peer exchange infrastructure, cryptography, and user-facing bitcoin applications.</p><p>The quarter also marked an important first for us: for the first time, we supported a grantee working on peer-to-peer exchange infrastructure. This expands the scope of our grant program into tools that can help people access Bitcoin in places where traditional onramps are limited or unavailable.</p><p>Another defining theme of this cohort is community. All but one of the recipients have been through the <a href="https://www.btrust.tech/builders/apply?ref=blog.btrust.tech"><u>Btrust Builders</u></a> program, showing how structured learning, mentorship, and hands-on open-source experience can help developers grow into long-term Bitcoin contributors. Many of the recipients also help organize or participate in local BitDevs communities across Africa, including in Lagos, Kampala, Kaduna, Malawi, and Nairobi.</p><h2 id="starter-grants"><strong>Starter Grants</strong></h2><p>The <a href="https://btrust.homerun.co/starter-grants/en?ref=blog.btrust.tech"><u>Btrust starter grant</u></a> supports software engineers who are ready to contribute full-time to open-source Bitcoin development. It gives recipients the time, mentorship, and financial support they need to explore a focused area of Bitcoin open source, make meaningful contributions, and grow into long-term contributors.</p><h2 id="starter-grant-recipients"><strong>Starter Grant Recipients</strong></h2><h3 id="jemimah-nagasha"><strong>Jemimah Nagasha</strong></h3><p><a href="https://github.com/Jem256?ref=blog.btrust.tech"><u>Nagasha</u></a> is a software engineer based in Kampala, Uganda. She has experience building web and mobile applications and brings a strong systems-oriented approach from her background in civil engineering and software development.</p><p>Her Bitcoin development journey began through the Btrust Builders Fellowship, where she gained hands-on experience with Bitcoin internals, Lightning Network tooling, and open-source collaboration.</p><p>Since then, Nagasha has been contributing to <a href="https://github.com/jamaljsr/polar?ref=blog.btrust.tech"><u>Polar</u></a>, an open-source desktop application used by Bitcoin and Lightning developers to create local testing environments. It helps developers safely test Bitcoin and Lightning applications on their own computers before building for real users.</p><p>Her work so far has focused on making Polar easier and more reliable to use. She has helped add the ability to rename nodes, improved the manual block-mining workflow, contributed to Tor support for nodes, and participated in pull request reviews and issue discussions.</p><p>With the starter grant, Nagasha will work full-time on improving Polar&#x2019;s usability, reliability, and developer experience. Her planned work includes adding better support for Core Lightning on Windows, improving wallet locking and unlocking workflows, adding seed phrase and backup management tools, and fixing bugs that affect developer testing.</p><p>She also helps grow the local Bitcoin developer community by organizing <a href="https://x.com/BitDevsKLA?ref=blog.btrust.tech"><u>BitDevs Kampala</u></a>, creating a space for developers in Uganda to learn, discuss, and contribute to Bitcoin.</p><h3 id="oyindamola-oladapo"><strong>Oyindamola Oladapo</strong></h3><p><a href="https://github.com/0xzaddyy?ref=blog.btrust.tech"><u>Oyindamola</u></a> is a software engineer based in Kaduna, Nigeria, with experience building and maintaining reliable software systems. He was part of the inaugural Btrust Builders&#x2019; <a href="https://pathways.btrust.tech/03/rust-for-bitcoiners?ref=blog.btrust.tech"><u>Rust for Bitcoiners pathway</u></a>, where he deepened his understanding of Rust and Bitcoin development and graduated as the top student.</p><p>He has since become an active contributor to privacy-focused Bitcoin tools, especially <a href="https://github.com/payjoin/rust-payjoin?ref=blog.btrust.tech"><u>Rust-Payjoin</u></a> and related Payjoin projects.</p><p>Payjoin is a privacy technique that helps make bitcoin transactions harder to analyze from the outside. Instead of a transaction clearly looking like it came from one person paying another, Payjoin allows both sides to collaborate in a way that makes ownership patterns less obvious. This helps protect user privacy without changing Bitcoin&#x2019;s base protocol.</p><p>Oyindamola&#x2019;s contributions have included privacy-safe logging, code audits, spendable coin checks, documentation improvements, and work on simulations for multiparty Payjoin. Multiparty Payjoin is an extension of this idea, allowing more than two participants to collaborate in a transaction and strengthen privacy further.</p><p>With the starter grant, Oyindamola will focus on advancing multiparty Payjoin research and implementation. His work will include helping refine the protocol design, improving simulations, contributing to the Payjoin Development Kit, writing tests, improving documentation, and working closely with maintainers to make the system safer and easier for wallet developers to use.</p><p>Beyond code, Oyindamola co-hosts <a href="https://x.com/BitDevsKaduna?ref=blog.btrust.tech"><u>BitDevs Kaduna</u></a> and has supported local bitcoin education efforts, including mentoring and judging at the <a href="https://www.hack4freedom.com/?ref=blog.btrust.tech"><u>Hack4Freedom</u></a> Hackathon in Kaduna.</p><h3 id="yankho-ngolleka"><strong>Yankho Ngolleka</strong></h3><p><a href="https://github.com/codaMW?ref=blog.btrust.tech"><u>Yankho</u></a> is a Bitcoin developer and community builder based in Lilongwe, Malawi. His technical journey began at Btrust Builders, where he received the Top Student Award among an international cohort of Bitcoin developers.</p><p>He has experience with Bitcoin Core tools, the Nostr protocol, and Lightning Network concepts such as hold invoices and payment retries.</p><p>Yankho contributes to <a href="https://github.com/MostroP2P?ref=blog.btrust.tech"><u>MostroP2P</u></a>, a peer-to-peer bitcoin exchange system built on Nostr and the Lightning Network. Mostro helps people buy and sell bitcoin directly with each other, without relying on a centralized exchange. This kind of infrastructure can be especially important in countries and communities where formal bitcoin onramps are limited, unreliable, or unavailable.</p><p>This makes Yankho&#x2019;s grant especially notable as he is Btrust&#x2019;s first grantee focused on peer-to-peer exchange infrastructure.</p><p>His contributions to the Mostro ecosystem include test coverage, error handling improvements, user experience improvements in the command-line tool, website fixes, code reviews, and work related to the reliability of the Mostro daemon.</p><p>With the starter grant, Yankho will work full-time on improving MostroP2P&#x2019;s reliability and usability. His planned work includes strengthening error handling, expanding mutation testing, investigating bugs that could affect real trades, improving the Mostro command-line experience, and running a live Mostro node in Malawi.</p><p>He also plans to grow the Malawian Bitcoin developer community through <a href="https://x.com/Bitdevs_Malawi?ref=blog.btrust.tech"><u>BitDevs Malawi</u></a>, using the live Mostro node as a practical example of how open-source Bitcoin infrastructure can serve local needs.</p><h2 id="long-term-grants"><strong>Long-Term Grants</strong></h2><p>The <a href="https://btrust.homerun.co/open-source-cohort/en?ref=blog.btrust.tech"><u>Btrust Open-Source Cohort</u></a> provides long-term support to established Bitcoin open-source contributors. Members receive funding, mentorship, and peer support so they can continue working on important Bitcoin projects over a longer period.</p><p>These grants are designed to help contributors build deep expertise, maintain critical open-source software, and make lasting contributions to the Bitcoin ecosystem.</p><h2 id="long-term-grant-recipients"><strong>Long-Term Grant Recipients</strong></h2><h3 id="abiodun-awoyemi"><strong>Abiodun Awoyemi</strong></h3><p><a href="https://github.com/aagbotemi?ref=blog.btrust.tech"><u>Abiodun</u></a> is a software engineer and Bitcoin open-source contributor based in Lagos, Nigeria. His work focuses on wallet infrastructure in the Bitcoin Dev Kit ecosystem.</p><p><a href="https://github.com/bitcoindevkit?ref=blog.btrust.tech"><u>Bitcoin Dev Kit (BDK)</u></a> is a set of tools that helps developers build bitcoin wallets. Instead of every wallet developer having to solve the same difficult problems from scratch, BDK provides reusable building blocks for transaction construction, wallet state, signing, and other core wallet features.</p><p>Abiodun is a secondary maintainer of <a href="https://github.com/bitcoindevkit/bdk-tx?ref=blog.btrust.tech"><u>bdk-tx</u></a>, a transaction-building library in the BDK ecosystem. His role includes reviewing pull requests, guiding technical discussions, and helping maintain code quality.</p><p>His contributions have covered many areas that directly affect wallet safety and reliability, including fee calculation fixes, anti-fee-sniping support, Payjoin examples, CPFP fee-bumping support, locktime handling, BIP353 payment support reviews, PSBT creation, BIP322 message signing, and continuous integration improvements.</p><p>With the long-term grant, Abiodun will continue strengthening BDK and BDK-TX. His work will focus on making Bitcoin transaction construction safer, more predictable, and easier for developers to use. Planned areas include better fee handling, clearer errors, improved transaction ordering, policy-aware transaction building, timelock correctness, and foreign function interface support so that BDK-TX can be used more easily outside the Rust ecosystem.</p><p>Abiodun also contributes to local developer education as a co-organizer of <a href="https://x.com/BitDevsLagos?ref=blog.btrust.tech"><u>BitDevs Lagos</u></a>, helping create space for technical Bitcoin discussion and contributor growth in Nigeria.</p><h3 id="emmanuel-ojok"><strong>Emmanuel Ojok</strong></h3><p><a href="https://github.com/ojokne?ref=blog.btrust.tech"><u>Ojok</u></a> is a software engineer based in Kampala, Uganda. He has experience building web and mobile applications using JavaScript, TypeScript, React, React Native, and Node.js. He is also&#xA0;</p><p>His Bitcoin development journey began through Btrust Builders programs, including the BOSS cohort, Learn Bitcoin from the Command Line, and the Open Source Bootcamp. Over the past grant period, he has worked full-time on <a href="https://github.com/BlueWallet/BlueWallet?ref=blog.btrust.tech"><u>BlueWallet</u></a>, a self-custodial bitcoin and lightning wallet for iOS and Android.</p><p>BlueWallet is used by people around the world to hold and manage their own bitcoin. Work on a wallet like BlueWallet directly affects user safety, privacy, reliability, and ease of use.</p><p>During his previous grant period, Ojok contributed to several important improvements. He helped migrate parts of the codebase from Buffer to Uint8Array, worked on converting JavaScript code to TypeScript, contributed to Silent Payments-related code, improved user interface screens, reviewed wallet features, and worked on removing or replacing dependencies that are not ideal for an open-source wallet.</p><p>He has also been working on reproducible builds. Reproducible builds help users and developers verify that the app they install matches the open-source code. This strengthens trust and aligns with bitcoin&#x2019;s culture of verification.</p><p>With the long-term grant, Ojok will continue improving BlueWallet. His planned work includes Android 16KB page size compliance, finalizing reproducible builds, modernizing Gradle, improving interoperability with hardware and external wallets, expanding end-to-end test coverage, and exploring a Taproot CLTV savings wallet feature.</p><p>His work will help make BlueWallet more reliable, easier to maintain, and more trustworthy for users who depend on self-custodial bitcoin tools.</p><p>Ojok also contributes to local Bitcoin developer education as a co-organizer of <a href="https://x.com/BitDevsKLA?ref=blog.btrust.tech"><u>BitDevs Kampala</u></a>, helping create a space for developers in Uganda to learn, discuss Bitcoin technical topics, and connect with open-source contribution opportunities.</p><h3 id="jamal-errakibi"><strong>Jamal ERRAKIBI</strong></h3><p><a href="https://github.com/jrakibi?ref=blog.btrust.tech"><u>Jamal</u></a> is a software engineer from Morocco with several years of professional engineering experience and more than two years of active Bitcoin open-source contribution. He is also active in bitcoin education and has built learning resources such as <a href="https://x.com/BTCillustrated?ref=blog.btrust.tech"><u>BTCillustrated</u></a> and an interactive SHA-256 explainer.</p><p>Jamal&#x2019;s work focuses on the lower-level libraries that many Bitcoin projects depend on. These libraries are not always visible to everyday users, but they are part of the foundation that makes Bitcoin software secure, fast, and reliable.</p><p>During his previous grant period, Jamal made significant contributions across the rust-bitcoin ecosystem. He opened and reviewed many pull requests and issues, worked on the hashes crate, added SHA256 ARM hardware acceleration, improved benchmarking, added test vectors, helped fix hashing-related issues, and contributed to the consensus encoding crate.</p><p>Some of this work improves performance. Some improve safety. Some reduce the risk of bugs in code that many bitcoin applications rely on.</p><p>With the long-term grant, Jamal will continue working on performance and cryptographic foundations in the <a href="https://github.com/rust-bitcoin/rust-bitcoin?ref=blog.btrust.tech"><u>Rust Bitcoin</u></a> ecosystem. His planned work includes optimizing double-SHA256, adding SIMD implementations for different processor architectures, benchmarking Bitcoin-related Rust crates, deepening work on rust-secp256k1, reviewing Silent Payments support, and writing educational material for the Btrust blog.</p><p>He also plans to explore quantum-computing-related topics relevant to Bitcoin and continue mentoring Btrust Builders students and starter grantees.</p><h3 id="brandon-odiwuor"><strong>Brandon Odiwuor</strong></h3><p><a href="https://github.com/BrandonOdiwuor?ref=blog.btrust.tech"><u>Brandon</u></a> is a Bitcoin Core contributor based in Kenya whose work focuses on build systems, testing, continuous integration, functional tests, documentation, RPC improvements, GUI work, and code review.</p><p>During his previous grant period, he contributed across many parts of <a href="https://github.com/bitcoin/bitcoin?ref=blog.btrust.tech"><u>Bitcoin Core</u></a>. His work included build-system improvements, functional test enhancements, Signet configuration support, RPC coverage fixes, offline signing documentation, GUI improvements, and extensive review of CI and build-related pull requests.</p><p>Bitcoin Core is the reference implementation of the Bitcoin protocol. Because of this, its testing and build systems are extremely important. When developers make changes to Bitcoin Core, continuous integration systems help check that those changes do not break important functionality.</p><p>Brandon&#x2019;s long-term project focuses on improving Bitcoin Core&#x2019;s CI pipeline using CTest and CDash. In simple terms, CTest can help standardize how tests are run, while CDash can provide clearer dashboards for tracking test results, failures, and trends over time.</p><p>This work aims to make Bitcoin Core testing easier to understand, easier to debug, and more consistent across different operating systems and environments.</p><p>With the long-term grant, Brandon will prototype CTest integration for Bitcoin Core tests, help set up and improve a CDash dashboard, update CI workflows, support sanitizer and coverage reporting, review CI and build-related changes, and continue mentoring new contributors.</p><p>He also helps grow the Bitcoin developer community through <a href="https://x.com/BitDevsNBO?ref=blog.btrust.tech"><u>BitDevs Nairobi</u></a>, where he leads Socratic seminars and supports technical discussions around Bitcoin Core development.</p><h2 id="btrust-builders-alumni"><strong>Btrust Builders Alumni</strong></h2><p>A major theme of the quarter&#x2019;s cohort is the role of Btrust Builders in helping developers move from learning to meaningful open-source contribution.</p><p>All but one of the recipients in this cohort have participated in Btrust Builders or related Btrust learning pathways. These programs provide structured education, technical mentorship, and practical open-source experience. They help developers understand Bitcoin deeply, build confidence, and begin contributing to real projects used by the wider ecosystem.</p><p>This progression from Builders participants to funded grantees reflects Btrust&#x2019;s long-term approach to identify talented developers, support their learning, provide mentorship, and help them build sustainable careers in Bitcoin open source.</p><p><a href="https://www.btrust.tech/builders/apply?ref=blog.btrust.tech"><u>Btrust Builders pathway applications</u></a> are open all year round. If you are interested in learning Bitcoin development and joining a future cohort, we encourage you to apply.</p><p>You can also check the <a href="https://pathways.btrust.tech/?ref=blog.btrust.tech#program-calendar"><u>program calendar</u></a> to see when the 2026 Btrust Builders pathways are scheduled next.</p><h2 id="strengthening-bitdevs-communities-across-africa"><strong>Strengthening BitDevs Communities Across Africa</strong></h2><p>This cohort also shows the importance of local developer communities. Several recipients organize or support BitDevs meetups in their cities, including Lagos, Kampala, Kaduna, Malawi, and Nairobi. These communities create spaces where developers can discuss Bitcoin technical topics, review new developments, learn from each other, and find pathways into open-source contributions.</p><p>Btrust supports the largest network of BitDevs communities in Africa, helping strengthen local Bitcoin developer ecosystems across the continent.</p><p>The work of these grantees is not limited to code. By organizing meetups, mentoring newer contributors, and creating learning opportunities, they are helping build the next generation of Bitcoin open-source developers.</p><p>If there is a BitDevs community near you, we encourage you to participate, attend a meetup, and connect with other developers learning and contributing to Bitcoin open source. If there isn&#x2019;t one in your city, you can check out the <a href="https://github.com/btrustteam/the-bitdevs-playbook?ref=blog.btrust.tech"><u>BitDevs Playbook</u></a> to learn how to build a sustainable community, and <a href="https://btrust.homerun.co/bitdevs-application-sponsorship/en?ref=blog.btrust.tech"><u>apply</u></a> for Btrust support to help get it started.</p><h2 id="applications-for-btrust-developer-grants"><strong>Applications for Btrust Developer Grants</strong></h2><p><a href="https://www.btrust.tech/grants/developer?ref=blog.btrust.tech"><u>Btrust developer grant</u></a> applications are open all year round, with new recipients announced quarterly.</p><p>If you are already contributing to Bitcoin open-source software, or you are ready to begin contributing full-time, we encourage you to learn more and apply.</p><p>You can learn more about Btrust developer grants and explore other Btrust grant opportunities on our <a href="https://www.btrust.tech/grants?ref=blog.btrust.tech"><u>website</u></a>.</p><h2 id="about-btrust"><strong>About Btrust</strong></h2><p><a href="https://www.btrust.tech/?ref=blog.btrust.tech"><u>Btrust</u></a> is a non-profit organization with a mission to decentralize the development of Bitcoin open-source software. We focus on supporting developer talent from the Global Majority and strengthening the free and open-source Bitcoin ecosystem.</p><p>Through grants, education, mentorship, and community support, Btrust helps developers contribute to the tools, infrastructure, and applications that make bitcoin more resilient, accessible, and decentralized.</p>]]></content:encoded></item><item><title><![CDATA[In Their Own Words: Reflections from the Q1 2026 Self-Paced Tracks]]></title><description><![CDATA[<p>In Q1 2026, Btrust Builders ran two learning pathways in parallel: Mastering Bitcoin and Learn Bitcoin from the Command Line. Each pathway had two tracks: a live cohort with weekly sessions, chaperones, structured assignments, and formal graduation requirements; and a self-paced track for developers who wanted to study the same</p>]]></description><link>https://blog.btrust.tech/in-their-own-words-reflections-from-the-q1-2026-self-paced-tracks/</link><guid isPermaLink="false">6a4f5033a45d04b407ba3956</guid><category><![CDATA[Btrust Builders]]></category><dc:creator><![CDATA[Btrust Builders]]></dc:creator><pubDate>Thu, 09 Jul 2026 08:01:44 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_5943003937935920584_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_5943003937935920584_y.jpg" alt="In Their Own Words: Reflections from the Q1 2026 Self-Paced Tracks"><p>In Q1 2026, Btrust Builders ran two learning pathways in parallel: Mastering Bitcoin and Learn Bitcoin from the Command Line. Each pathway had two tracks: a live cohort with weekly sessions, chaperones, structured assignments, and formal graduation requirements; and a self-paced track for developers who wanted to study the same material independently.</p><p>We recently <a href="https://blog.btrust.tech/celebrating-the-q1-2026-pathway-cohort-graduation/"><u>celebrated the live cohort graduations</u></a>. This post focuses on the other side of that same quarter: the self-paced learners.</p><p>The self-paced tracks were designed for developers balancing learning with work, school, exams, family, and other responsibilities. They received the same core materials as the live cohorts, along with learner guides, weekly prompts, Discord check-ins, moderator support, and open office hour sessions. What they did not have was the fixed structure of weekly attendance or live cohort grading.</p><p>Instead, completion was recognised through a written self-assessment: a published article or reflection documenting what the learner studied, where they struggled, what changed in their understanding, and what they plan to build next.</p><p>By the end of Q1, 13 developers submitted written reflections: 10 from Mastering Bitcoin and 3 from Learn Bitcoin from the Command Line. Together, these submissions represent the first self-paced completion pool for potential recognition, grant shortlisting, and deeper program engagement.</p><p>Below is what they wrote.</p><h2 id="mastering-bitcoin-track"><strong>Mastering Bitcoin Track</strong></h2><p>The Mastering Bitcoin self-paced track gave learners the opportunity to study Mastering Bitcoin: Programming the Open Blockchain independently. The track focused on Bitcoin fundamentals: transactions, wallets, keys, mining, consensus, fees, scripts, Taproot, privacy, and the design choices that make bitcoin work.</p><p>For many learners, the pathway revealed a gap between being able to talk about Bitcoin and truly understanding it at the protocol level.</p><h3 id="hussein"><strong>Hussein&#xA0;</strong></h3><p>Hussein came into the pathway confident. He had explained bitcoin to people and knew the talking points. However, the seven weeks of close reading revealed the gap between being able to talk about something and actually understanding it.</p><p>The fees chapter was where it got embarrassing. &quot;I thought about how many times I had explained fees as a small charge. That framing completely hides the truth. It&apos;s not a charge. It&apos;s a bid. Every transaction is competing with thousands of others for space in the next block. I rewrote my mental model of fees from scratch that week.&quot;</p><p>Mining hit harder. &quot;I used to explain mining like this: miners solve a puzzle and new bitcoin gets created. Bitcoin isn&apos;t issued because miners solve puzzles. Miners solve puzzles because that&apos;s the only known way to get thousands of strangers, with no reason to trust each other, to agree on one shared version of history. The new bitcoin is just an incentive. The real product is consensus.&quot;</p><p>Hussein is now building Bitcoin Lasgidi, a Bitcoin developer community at his campus in Lagos.&#xA0;</p><p>Read more here - <a href="https://dev.to/hussein_c40aced584b43573b/i-thought-i-understood-bitcoin-i-was-wrong-1b8j?ref=blog.btrust.tech"><em><u>I Thought I Understood Bitcoin. I Was Wrong</u></em></a></p><h3 id="ebube-miracle-ukpai"><strong>Ebube Miracle Ukpai</strong></h3><p>Ebube had developer experience and enough bitcoin familiarity to feel comfortable in most conversations. He knew about Taproot, had heard of Lightning, understood HD wallets at a surface level. What he was missing was the connective tissue behind the design decisions, the tradeoffs that shaped the protocol, the mental models that make everything else make sense.</p><p>The UTXO model was the concept that changed the most for him. In his words, &quot;That reframe changes everything. It changes how you think about privacy; address reuse links your UTXOs together publicly. It changes how you think about fees , they&apos;re the implied difference between inputs and outputs, never explicitly stated. It changes how you think about wallet design, transaction construction, and even the economics of small payments.&quot;</p><p>The hardest part was not cryptography, as he expected, but Schnorr multisig and the key cancellation attack. Working through it required sitting with the discomfort of not immediately understanding something. He is now planning to build a Bitcoin wallet from scratch and contribute to Bitcoin Core, rust-bitcoin, and BDK.</p><p>Read more here - <a href="https://dev.to/miracle656/from-bitcoin-user-to-bitcoin-developer-what-six-weeks-of-mastering-bitcoin-actually-taught-me-25dg?ref=blog.btrust.tech"><em><u>From Bitcoin User to Bitcoin Developer: What Six Weeks of Mastering Bitcoin Actually Taught Me</u></em></a></p><h3 id="kamogelo-aphane"><strong>Kamogelo Aphane&#xA0;</strong></h3><p>Kamogelo describes completing the pathway as gaining a new set of eyes. What began as curiosity about digital gold became, over eight weeks, a rigorous study of distributed systems, cryptography, and game theory.</p><p>What surprised her most were the incentives. &quot;The difficulty adjustment algorithm is perhaps the most underrated piece of engineering in the 21st century, the heartbeat of the network, ensuring that no matter how much hash power enters or leaves, the block interval remains constant.&quot;</p><p>By the end, she had three projects mapped out: A non-custodial Lightning wallet that prioritizes user sovereignty, an exploration of Onion Messages for metadata-free peer-to-peer coordination, and a DLC-based weather insurance product for small-scale farmers. She wants to build a decentralised, oracle-based weather insurance tool, and a trustless safety net without a centralised middleman.&quot;</p><p>Read more here -&#xA0; <a href="https://medium.com/@kamogeloaphane823/a-deep-dive-into-the-protocol-8cf6f0553628?ref=blog.btrust.tech"><em><u>A Deep Dive Into the Protocol: Reflecting on the Btrust Mastering Bitcoin Journey</u></em></a></p><h3 id="timothy-chimbiv"><strong>Timothy Chimbiv&#xA0;</strong></h3><p>Timothy came in as a Stacks developer writing smart contracts in Clarity, and the pathway rebuilt the foundation he had been building on. In his words, &quot;A bitcoin wallet doesn&apos;t hold bitcoin. It holds your keys. The bitcoin lives on the blockchain, your keys just prove you can spend it. That reframing changed how I think about custody and security entirely.&quot; This was an insight that landed the most for him.&#xA0;</p><p>He is now going deeper into Lightning and building on Stacks with more intentionality about staying within bitcoin&apos;s decentralized security model.</p><p>Read more here - <a href="https://dev.to/timothy_chimbiv/my-journey-through-mastering-bitcoin-what-i-learned-what-challenged-me-and-whats-next-4k1c?ref=blog.btrust.tech"><em><u>My Journey Through Mastering Bitcoin: What I Learned, What Challenged Me, and What&apos;s Next</u></em></a></p><h3 id="collins-mwanga"><strong>Collins Mwanga</strong></h3><p>Collins came in thinking of bitcoin as magic internet money. Bitcoin Script was his hardest chapter. In his words,&#xA0;&quot;Reading scripts felt like learning a tiny programming language. I had to go through examples multiple times before understanding how transaction conditions are verified. What helped most was slowing down, drawing diagrams, and experimenting with small code snippets.&quot;&#xA0;</p><p>He plans to focus on Bitcoin infrastructure, privacy tools, and making technical bitcoin education more accessible across Africa.</p><p>Read more here &#x2014; <a href="https://dev.to/colmwanga/my-journey-through-mastering-bitcoin-59h3?ref=blog.btrust.tech"><em><u>My Journey Through Mastering Bitcoin</u></em></a></p><h3 id="goodness-bakinde"><strong>Goodness Bakinde&#xA0;</strong></h3><p>Goodness worked through all 14 chapters and describes Taproot as his standout: &quot;Schnorr&apos;s linearity enables powerful features like scriptless multisignatures, making complex multi-party setups indistinguishable from simple single-signature transactions on-chain. This leap in privacy and efficiency was eye-opening.&quot;&#xA0;</p><p>He is now moved into the Bitcoin CLI pathway.</p><p>Read more here - <a href="https://dev.to/gbakinde/my-mastering-bitcoin-journey-4bie?ref=blog.btrust.tech"><em><u>My Mastering Bitcoin Journey</u></em></a></p><h3 id="jonjay"><strong>Jonjay&#xA0;</strong></h3><p>&#xA0;Jonjay came to the pathway with no technical background in Bitcoin.</p><p>&#xA0;&quot;I used to think bitcoin was just &apos;that coin&apos; for rich people on X. I never really understood what was happening underneath.&quot; By the end, his frame had shifted entirely: &quot;It is economics. It is game theory. It is freedom. It is coordination at a global scale without trust.&quot;&#xA0;</p><p>He made his first open-source contribution, to BTCPay Server, during the pathway.</p><p>Read more here -&#xA0; <a href="https://medium.com/@adebayodeolu90/how-the-mastering-bitcoin-pathway-changed-the-way-i-see-bitcoin-9e867e3a646b?ref=blog.btrust.tech"><em><u>How the Mastering Bitcoin Pathway Changed the Way I See Bitcoin</u></em></a></p><h3 id="khalid-yusuf"><strong>Khalid Yusuf&#xA0;</strong></h3><p>Khalid went in expecting a technical overview and found, he writes, &quot;a blend of computer science, economics, and philosophy that challenged my assumptions about money and trust in digital systems.&quot;&#xA0;</p><p>His view of bitcoin shifted from investment to infrastructure. He is now experimenting with testnet transactions and plans to go deeper into Lightning.</p><p>Read more here -&#xA0; <a href="https://dev.to/0xkhaled/the-bitcoin-journey-at-btrust-17dp?ref=blog.btrust.tech"><em><u>The Bitcoin Journey at Btrust</u></em></a></p><h3 id="clerence"><strong>Clerence&#xA0;</strong></h3><p>Clerence&apos;s starting point was familiar: he thought a wallet stores coins. Learning about hierarchical deterministic wallets and derivation paths dismantled that entirely.&#xA0;</p><p>&quot;Understanding HD wallets and derivation paths changed my mental model completely. A single seed phrase can generate many addresses, all controlled by the same cryptographic root. This forced me to move away from thinking in terms of accounts and toward thinking in terms of key ownership.&quot;</p><p>The Byzantine Generals Problem was the concept that gave him the deepest appreciation for bitcoin&apos;s design. Understanding why reaching agreement in a decentralised system with untrusting participants is so hard, and how proof-of-work solves it, made the protocol feel less like a technology and more like a carefully reasoned argument.</p><p>He is now exploring node infrastructure, scalability constraints, and building systems that can operate in resource-limited environments.</p><p>Read more here - <a href="https://dev.to/maker101/from-bitcoin-user-to-bitcoin-student-my-journey-through-mastering-bitcoin-39k4?ref=blog.btrust.tech"><em><u>From Bitcoin User to Bitcoin Student: My Journey Through Mastering Bitcoin</u></em></a></p><h3 id="abdulmajid-yunus"><strong>Abdulmajid Yunus&#xA0;</strong></h3><p>Abdulmajid came in with a goal to understand bitcoin well enough to explain it in non-technical terms. What he ended up doing was considerably more.</p><p>He ran a node on his machine, performed a testnet transaction in Sparrow Wallet, created SegWit, Taproot, and multisig wallets, and connected Sparrow to his local node. When CompactSize encoding in transaction hex stumped him, he built a <a href="https://github.com/Yunusabdul38/tx-decoder?ref=blog.btrust.tech"><u>tx-decoder</u></a>, an educational tool for parsing the binary structure of Bitcoin transactions, to work through it properly.</p><p>He has already made contributions to <a href="https://github.com/rust-bitcoin/rust-bitcoin/pulls?q=is%3Apr+author%3AYunusabdul38+is%3Aclosed&amp;ref=blog.btrust.tech"><u>rust-bitcoin</u></a> and <a href="https://github.com/payjoin/rust-payjoin/pull/1520?ref=blog.btrust.tech"><u>rust-payjoin</u></a>, and is actively looking to go deeper into both projects. &quot;When I come back to this in a year, I should be able to see my name, in multiple Bitcoin open-source projects.&quot;</p><p>Read more here - <a href="https://medium.com/@yunusabdulmajidyunus38/bitrust-mastering-bitcoin-d73b72ef66ee?ref=blog.btrust.tech"><em><u>Btrust Mastering Bitcoin</u></em></a></p><h2 id="learn-bitcoin-from-the-command-line-track"><strong>Learn Bitcoin from the Command Line Track</strong></h2><p>The Learn Bitcoin from the Command Line self-paced track focused on practical, hands-on interaction with Bitcoin Core. Learners worked through command-line usage, node configuration, raw transactions, scripts, multisig, PSBTs, RBF, CPFP, and other low-level Bitcoin operations.</p><p>While Mastering Bitcoin helped learners strengthen their conceptual foundation, the CLI pathway pushed them to interact directly with the protocol.</p><h3 id="muhammad-ademola"><strong>Muhammad Ademola&#xA0;</strong></h3><p>Muhammad&apos;s submission walks through configuring Bitcoin Core, building raw transactions, testing RBF and CPFP hands-on, and working through multisig and PSBT. The most significant work happened alongside the curriculum.</p><p>He investigated a security vulnerability in BDK Wallet, traced it across multiple dependency layers, and found the real blocker upstream in two libraries without stable releases. The lead maintainer reviewed his issue and added it to the official Wallet 4.0.0 milestone. He contributed PRs to Cove and Floresta in parallel and is monitoring upstream libraries for the next fix.</p><p>His contributions this quarter span five PRs and issues across BDK Wallet, Cove, and Floresta.</p><p>Read more here - <a href="https://dev.to/muhammad_ademola/from-zero-to-scripts-my-bitcoin-cli-learning-journey-btrust-builders-program-2i27?ref=blog.btrust.tech"><em><u>From Zero to Scripts: My Bitcoin CLI Learning Journey</u></em></a></p><h3 id="usman-umar-garba"><strong>Usman Umar Garba&#xA0;</strong></h3><p>Usman came in with a longer Bitcoin arc behind him. In 2025, his team built BitTicket, a decentralised ticketing platform using Bitcoin transactions, through the African FreeRouting Lightning Bootcamp. The CLI pathway shifted how he engaged with the protocol at its base layer. &quot;Before this pathway, I mostly interacted with bitcoin through wallets and high-level explanations. Using bitcoin-cli forced me to work directly with the protocol itself.&quot;</p><p>His BOSS Challenge project, a Rust-based Lightning UTXO and Anchor Manager for Lightning node operators, was featured on the BOSS Challenge portfolio. He is now building SatsFor, a Lightning-based mobile tipping application in Flutter and Rust.&#xA0;</p><p>In his words, &quot;A creator in Lagos should be able to receive sats instantly from someone anywhere in the world without depending on traditional payment systems, delays, or high fees.&quot;</p><p>Read more here - <a href="https://medium.com/@code_warrior/from-learning-bitcoin-to-building-on-it-my-journey-through-btrust-lightning-and-open-source-029cab72fd54?ref=blog.btrust.tech"><em><u>From Learning Bitcoin to Building on It: My Journey Through Btrust, Lightning, and Open Source</u></em></a></p><h3 id="ogunseye-oluwajuwon-michael"><strong>Ogunseye Oluwajuwon Michael&#xA0;</strong></h3><p>Ogunseye completed the CLI pathway for the second time, this time alongside AI engineering final exams. The self-paced format made that possible.&#xA0;</p><p>He built a multisig wallet in Python, worked through PSBT and RPC commands, and describes where he landed: &quot;I still consider myself early in the journey, but I now feel much closer to the direction I want to grow in.&quot;</p><p>Read more here - &#xA0; <a href="https://medium.com/@ogunseyemicheal/my-second-journey-through-bitcoin-via-command-line-balancing-ai-exams-building-and-deepening-my-ef54c04ab375?ref=blog.btrust.tech"><em><u>My Second Journey Through Bitcoin via Command Line</u></em></a></p><h2 id="what-the-self-paced-reflections-show"><strong>What the Self-Paced Reflections Show</strong></h2><p>Across both pathways, the reflections reveal a few clear patterns.</p><p>First, the self-paced format did not reduce the depth of learning. Learners were not simply consuming material passively. They were revising mental models, building tools, running nodes, creating wallets, testing transactions, contributing to open-source projects, and forming clearer technical goals.</p><p>Second, written reflection proved to be a useful completion signal. It gave learners a way to demonstrate understanding in their own words while also documenting their growth publicly. For some, the article itself became a bridge into the next phase of their Bitcoin development journey.</p><p>Third, self-paced learning widened access. Several learners were studying around exams, jobs, or other responsibilities. The ability to move at their own pace made it possible for them to continue without being excluded by the structure of a live cohort.</p><p>Finally, the reflections point toward the next stage of the self-paced framework. Written self-assessments are a strong first signal, but the program is now working toward adding more outcome-based indicators, including pull requests, code contributions, technical projects, and open-source participation.</p><p>If you are working through the Btrust Builders pathways, or considering starting, these are the people ahead of you on that path. The material is the same and the pathway is open. If you are ready to begin, you can <a href="https://btrust.homerun.co/btrust-builders-application/en?ref=blog.btrust.tech"><u>apply to the Btrust Builders program here</u></a>.</p>]]></content:encoded></item><item><title><![CDATA[From Builders to Leaders: Meet the African Women Shaping Bitcoin’s Future]]></title><description><![CDATA[<p>Bitcoin has always carried a powerful promise: that money can be open, neutral, and fair. Regardless of where you are from, what you look like, who you know, or the kind of background you have should not decide whether you can access the global financial system.</p><p>That promise is one</p>]]></description><link>https://blog.btrust.tech/from-builders-to-leaders-meet-the-african-women-shaping-bitcoins-future/</link><guid isPermaLink="false">6a476fbaa45d04b407ba357b</guid><category><![CDATA[Btrust]]></category><category><![CDATA[Btrust Grantee Spotlight]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Fri, 03 Jul 2026 08:38:08 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/07/photo_5926831290122440404_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/07/photo_5926831290122440404_y.jpg" alt="From Builders to Leaders: Meet the African Women Shaping Bitcoin&#x2019;s Future"><p>Bitcoin has always carried a powerful promise: that money can be open, neutral, and fair. Regardless of where you are from, what you look like, who you know, or the kind of background you have should not decide whether you can access the global financial system.</p><p>That promise is one of the reasons many people are drawn to Bitcoin. But Bitcoin is not only shaped by code. It is shaped by the people who write the code, review it, maintain it, teach it, and make it easier for others to understand.</p><p>And across Africa and the Global Majority, more women are becoming part of that work. They are not just learning about Bitcoin from a distance. They are contributing to real open-source projects, leading communities, mentoring others, and helping build the tools that make the network stronger.</p><p>For a long time, open-source Bitcoin development has not reflected the full range of people Bitcoin is meant to serve. In a <a href="https://decrypt.co/7392/fewer-than-five-percent-of-github-crypto-contributors-are-female-says-study?ref=blog.btrust.tech"><u>2019 report by Decrypt</u></a>, fewer than 5% of open-source crypto developers were recorded as women. That gap was never about ability. It was about access: access to learning paths, technical communities, mentors, funding, and people who make the journey feel possible.</p><p>Since 2021, Btrust has been working to help close that gap. Through grants, mentorship, and education programs for developers from Africa and the Global Majority, Btrust is creating clearer paths into serious Bitcoin open-source work. In our just-concluded Q1 2026 Mastering Bitcoin cohort, 34% of participants were women, one of the highest levels of female participation in any Btrust Builders cohort so far, and a striking contrast to an ecosystem where women make up less than 5% of open-source contributors overall.</p><p>That number matters because it shows what can happen when people get the right support. More women are finding their way into Bitcoin development, and many are staying, contributing, and helping others come in after them. Across the African Bitcoin open-source ecosystem, Btrust has become an important touchpoint for many women contributors, whether through Builders resources, cohorts, mentorship, or community programs. It is one sign that access, when made intentional, can change who gets to build and who gets to lead.</p><p>In this article, we are spotlighting three Btrust grantees whose work shows what that future can look like. Rita Anene is building Lightning infrastructure full-time. Jemimah Nagasha moved from public infrastructure into Bitcoin infrastructure. Enigbe Ochekliye is contributing to the Lightning Dev Kit ecosystem through engineering and research.</p><p>Three women. Three different paths. One shared commitment to building.</p><h2 id="rita-anene-building-lightning-infrastructure-full-time"><strong>Rita Anene: Building Lightning Infrastructure Full-Time</strong></h2><p><a href="https://x.com/Camilla_rhi?ref=blog.btrust.tech" rel="noreferrer">Rita</a> had spent over three years working as a software developer when she began to feel that she wanted something deeper. She was good at her job, but she wanted to work on technology that felt more foundational. She wanted to build something that could change how people relate to money, not just how a product works.</p><p>She first heard about Bitcoin in 2018. At the time, she understood it the way many people do at first: as internet money. She did not think too much about it and moved on. But in 2024, she discovered the development ecosystem behind Bitcoin. She found people maintaining the infrastructure, debating design choices, reviewing code, and building tools that support real-world use. That discovery changed everything.</p><p>It led her to Btrust, and then to the <a href="https://bosschallenge.xyz/?ref=blog.btrust.tech"><u>BOSS program</u></a>, run in partnership with Chaincode Labs. The program was demanding, and Rita was still working a full-time job while taking part in it. But she stayed committed. She read Bitcoin chapters on her commute, used her weekends to study, and coded late into the night after work.</p><p>She later joked that she became a &#x201C;vampire coder&#x201D;, but what really stood out was her focus. She kept showing up because the work had become meaningful to her.</p><p>By Week 4 of the program, the Lightning Network clicked. Its design captured her attention, and the Lightning challenges quickly became the ones she solved fastest.</p><p>Her first contribution was integrating Circuit Breaker into Warnet, a Bitcoin and Lightning network simulator. She still remembers how nervous she felt when she forked the repositories. Her hands were shaking. But she opened the pull request, went through several rounds of review, and eventually, it was merged.</p><p>From there, Rita found her technical home in LDK Node, a Lightning implementation in Rust.</p><p>By January 2025, she started attending <a href="https://x.com/BitDevsLagos?ref=blog.btrust.tech"><u>BitDevs Lagos</u></a>, and by June, she was hosting sessions. In Q3 2025, she received the Btrust Starter Grant and moved into full-time open-source Bitcoin development.</p><p>Today, Rita works on LDK Node full-time. One of her recent contributions rebuilt payment store synchronization into an event-driven architecture. She then used that foundation to implement fee-bumping for unconfirmed transactions. It is careful, important work that helps shape how Lightning nodes behave for the people and applications that depend on them.</p><p>Read more about her <a href="https://blog.btrust.tech/from-night-time-coder-to-full-time-bitcoin-builder-my-journey-through-btrust-and-the-boss-program/"><u>here</u></a>.</p><h2 id="jemimah-nagasha-from-public-infrastructure-to-bitcoin-infrastructure"><strong>Jemimah Nagasha: From Public Infrastructure to Bitcoin Infrastructure</strong></h2><p><a href="https://x.com/nagasha_?ref=blog.btrust.tech" rel="noreferrer">Nagasha</a> was managing public infrastructure projects in Uganda when she started learning frontend development on the side. She wanted more flexibility, but she also enjoyed building things people could actually use.</p><p>As she learned more, her curiosity grew. She wanted to understand systems more deeply. How do they scale? How do they fail? How can they give people more control over their lives?</p><p>That curiosity led her to the first <a href="https://x.com/BitDevsKLA?ref=blog.btrust.tech"><u>BitDevs Kampala</u></a> event. There, Bitcoin began to feel different. It was no longer just something she had heard about. It became a serious technical system she wanted to understand.</p><p>At that same event, she heard about the Btrust Builders Program from an alumnus. She applied, and that decision opened a new path for her.</p><p>The program took her from Bitcoin fundamentals into the Btrust Builders Fellowship. She began decoding transactions, creating Lightning channels, and studying open-source projects to understand the problems they were trying to solve. She also started contributing to Polar, a tool that helps developers run Bitcoin and Lightning nodes locally. Her work helped improve the experience for other developers who need a simpler way to build and test.</p><p>And she was doing all of this while still working full-time as a civil engineer.</p><p>What started with attending BitDevs Kampala soon became organising it. By 2025, Jemimah was leading the community. She also joined the Btrust Builders faculty, where she began mentoring the next cohort and sharing the same kind of support that had helped her grow.</p><p>In April 2026, she received the Btrust Starter Grant and made the full transition into Bitcoin open-source development. She no longer had to split her time between construction drawings and Bitcoin code.</p><p>&#x201C;This journey has given me more than technical skills,&#x201D; she wrote. &#x201C;It has given me a community, a sense of purpose, and the chance to build tools that make Bitcoin more accessible.&#x201D;</p><p>Learn more about her story <a href="https://blog.btrust.tech/how-curiosity-led-me-from-civil-engineering-to-bitcoin-open-source-contribution/"><u>here</u></a>.</p><h2 id="enigbe-ochekliye-strengthening-bitcoin-through-research-and-engineering"><strong>Enigbe Ochekliye: Strengthening Bitcoin Through Research and Engineering</strong></h2><p><a href="https://x.com/engb_os?ref=blog.btrust.tech" rel="noreferrer">Enigbe</a> is a Lightning developer based in Nigeria. Her work focuses on Lightning Network infrastructure and research, especially within the Lightning Dev Kit ecosystem.</p><p>Her path into this work is grounded in both engineering and systems thinking. She holds a Master&#x2019;s in Energy from the University of Auckland, where she completed graduate-level coursework in multivariable control systems. She also holds a Bachelor&#x2019;s in Mechanical Engineering from Ahmadu Bello University.</p><p>That background gives her a unique lens for thinking about Lightning. The network is not just software. It is a live system, with many moving parts, many actors, and constant changes in liquidity, routing, and reliability. Enigbe&#x2019;s work sits at the place where practical engineering and deeper research meet.</p><p>Over the past couple of years, she has contributed to the LDK ecosystem through code development, reviews, and technical research. Her work includes improvements to logging infrastructure, chain synchronization features, and infrastructure reliability across LDK components. These are the kinds of contributions that help developers and node operators run more dependable systems.</p><p>Enigbe is currently pursuing research into distributed control systems for Lightning Network liquidity management. In simple terms, she is studying how Lightning can be understood as a network of independent actors that still need to coordinate with one another. Her work models Lightning as a multi-agent dynamical system and explores how decentralized controllers can help coordinate liquidity distribution across the network.</p><p>This research will combine theory with practice. Part of the work will happen through academic exploration, and part of it will be implemented inside ldk-node and simulation environments. The goal is to contribute not only new ideas, but also open-source engineering improvements that can be tested, reviewed, and built on by others.</p><p>Enigbe is also the first member of the Btrust Open Source Cohort to focus on research. That matters because it expands what contribution can look like within the program. Open-source work is not only about writing code. It is also about asking hard questions, testing ideas, studying systems, and turning research into tools that make the ecosystem stronger.</p><h2 id="building-the-future-together"><strong>Building the Future, Together</strong></h2><p>Rita, Jemimah, and Enigbe are part of the future Btrust is investing in: a future where more women across Africa and the Global Majority have the support, funding, mentorship, and community they need to become serious contributors to the Bitcoin open-source ecosystem.</p><p>Their stories are not about waiting for permission. They are about choosing to learn, staying with difficult problems, contributing to important tools, leading communities, and making the path clearer for others.</p><p>That last part matters more than it might seem. For many developers, the journey into Bitcoin does not begin with a grant or a formal program. It begins in a room, at a local BitDevs meetup, where people are asking questions, discussing technical ideas, and slowly making Bitcoin feel less abstract. Btrust supports the largest network of BitDevs chapters in Africa, with more than 13 communities across the continent. Several of these chapters are led by women, which makes them even more powerful as entry points. When women lead technical spaces, other women can walk in and see that they belong not only as learners, but as contributors and leaders too.</p><p>And Btrust is not the only organisation building this pipeline. Initiatives like <a href="https://www.hack4freedom.com/?ref=blog.btrust.tech"><u>Hack4Freedom</u></a>, <a href="https://dadadevs.com/?ref=blog.btrust.tech"><u>Dada Devs</u></a> and <a href="https://freerouting.africa/bootcamps/?ref=blog.btrust.tech"><u>Africa Free Routing&#x2019;s Lightning Bootcamps</u></a> are also creating pathways for women in the Bitcoin ecosystem. They are training developers, building communities, and helping expand who gets to take part in this work.</p><p>And that matters because the movement is bigger than one organisation. It is a growing network of people making Bitcoin development more open, more accessible, and more representative of the world it hopes to serve.</p><p>If you are a developer watching from the outside, or someone who is simply curious but unsure where to begin, there is room for you here. You do not need to already know Rust. You do not need a computer science degree. You do not need to have everything figured out before you start.</p><p>Una comparaci&#xF3;n &#xFA;til de <a href="https://www.camisetatienda.com/?ref=blog.btrust.tech">camisetas de f&#xFA;tbol para regalo</a> comienza por las medidas reales y el tipo de ajuste preferido. El pedido puede cerrarse despu&#xE9;s de confirmar las condiciones de cambio antes de personalizar la prenda.</p><p>Curiosity is enough for the first step. Consistency will carry you further. And with the right community around you, the things that feel difficult now can begin to make sense.</p><p>Bitcoin&#x2019;s future will be stronger when more people can help build it. Rita, Jemimah, Enigbe, and many others are already showing what that future can look like.</p>]]></content:encoded></item><item><title><![CDATA[Celebrating the Builders of the Bitcoin++ Open Source Edition Hackathon]]></title><description><![CDATA[<p>The bitcoin++ <a href="https://foss.devpost.com/?ref=blog.btrust.tech"><u>Open Source Edition Hackathon</u></a> brought together 90 builders from across Africa and beyond for two intense days of hacking, collaboration, learning, and open-source innovation.</p><p>From June 17th, participants built projects spanning Bitcoin, Lightning, Nostr, developer tooling, financial inclusion, open-source infrastructure, and real-world applications. The result was an impressive</p>]]></description><link>https://blog.btrust.tech/celebrating-the-builders-of-the-bitcoin-open-source-edition-hackathon/</link><guid isPermaLink="false">6a3b98b9a45d04b407ba310c</guid><category><![CDATA[Btrust]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Wed, 24 Jun 2026 08:45:56 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/06/photo_5897931206806933047_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/06/photo_5897931206806933047_y.jpg" alt="Celebrating the Builders of the Bitcoin++ Open Source Edition Hackathon"><p>The bitcoin++ <a href="https://foss.devpost.com/?ref=blog.btrust.tech"><u>Open Source Edition Hackathon</u></a> brought together 90 builders from across Africa and beyond for two intense days of hacking, collaboration, learning, and open-source innovation.</p><p>From June 17th, participants built projects spanning Bitcoin, Lightning, Nostr, developer tooling, financial inclusion, open-source infrastructure, and real-world applications. The result was an impressive showcase of what can happen when talented builders are given the space, community, and challenge to create.</p><p>As proud sponsors of two challenge tracks, Best Contribution to Open Source and Solve Open Source Contribution Spam, we were excited to support projects addressing some of the most pressing challenges facing open-source development today.</p><h2 id="btrust-challenge-winners"><strong>Btrust Challenge Winners</strong></h2><h3 id="best-contribution-to-open-source"><strong>Best Contribution to Open Source</strong></h3><p><a href="https://github.com/fort-nix/nix-bitcoin/pull/842?ref=blog.btrust.tech"><u>UTXOracle BTC Calculator</u></a> by Parrish: A bitcoin price calculator powered entirely by a self-hosted bitcoin node using UTXOracle, demonstrating how useful services can be built without relying on centralized exchanges or third-party APIs. The project also included a meaningful contribution back to the ecosystem through a pull request to integrate UTXOracle into nix-bitcoin.</p><h3 id="solve-open-source-contribution-spam-joint-winners"><strong>Solve Open Source Contribution Spam (Joint Winners)</strong></h3><p><a href="https://github.com/Johnosezele/filter?ref=blog.btrust.tech"><u>Filter</u></a> by John Osezele: A GitHub app that helps maintainers identify low-quality and AI-generated pull request spam through transparent, configurable, and explainable rules.</p><p><a href="https://github.com/Zeegaths/core-gate?ref=blog.btrust.tech"><u>Core-Gate</u></a> by Aisha Omar Farah and Mary Wangui: A GitHub Actions workflow designed to automatically triage Bitcoin Core pull requests before maintainers spend valuable time reviewing them, helping reduce contributor noise while improving review efficiency.</p><p>Congratulations to all three teams for building tools that strengthen the open-source ecosystem and support the maintainers who make it possible.</p><h2 id="overall-winners"><strong>Overall Winners</strong></h2><h3 id="1st-overallwesttoeast"><strong>1st Overall - WestToEast</strong></h3><p>Built by Mamadou Diop, <a href="https://youtu.be/tkVFoGlvb5s?ref=blog.btrust.tech"><u>WestToEast</u></a> enables cross-border payments between West African currencies (XOF, XAF, and GNF) and Kenyan Shillings through Bitcoin, Lightning, LNURL, and Tando. The project demonstrates how Bitcoin infrastructure can help bridge fragmented mobile money ecosystems across Africa.</p><h3 id="2nd-overallrobin"><strong>2nd Overall - Robin</strong></h3><p>Built by Fidel Otieno and Chris Oketch, <a href="https://github.com/itschrisoketch/Robin?ref=blog.btrust.tech"><u>Robin</u></a> is an AI-powered guide for aspiring Bitcoin open-source contributors. Rather than encouraging low-context contributions, it helps builders understand where they can contribute meaningfully and directs them toward projects that best match their skills and experience.</p><h3 id="3rd-overallnairobi2"><strong>3rd Overall - nairobi2</strong></h3><p><a href="https://github.com/f321x/nairobi2?ref=blog.btrust.tech"><u>nairobi2</u></a> is a permissionless ride-sharing platform that combines market-based price discovery with Bitcoin-based Sybil resistance, exploring new models for decentralized coordination.</p><h2 id="category-winners"><strong>Category Winners</strong></h2><h3 id="best-beginner-hack"><strong>Best Beginner Hack</strong></h3><p><a href="https://nostrhub.io/naddr1qvzqqqrhnypzpl3m3v0v36mkpf55dckr0020na33xhej640y94hhs3e38vn7rseeqyd8wumn8ghj7emfwsh8x6rpddjhxur9v9ex2tnyd9uj7qqt2pex7mmxfan9qct4dstmx305?ref=blog.btrust.tech"><u>Hodlr</u></a> by Paul Eke: A bitcoin savings application that leverages timelocks to help users commit to long-term saving strategies by removing the temptation of early withdrawals.</p><h3 id="best-use-of-soapbox"><strong>Best Use of Soapbox</strong></h3><p><a href="https://dishifresh.shakespeare.wtf/?ref=blog.btrust.tech"><u>Dishi Fresh</u></a> by Thomas Cadra and Colly Sindani: A platform that connects users to local recipes, ingredient vendors, and delivery services, simplifying meal planning while supporting local businesses.</p><h3 id="best-tool-for-mobile-money-brokersagents-using-bitcoin"><strong>Best Tool for Mobile Money Brokers/Agents Using Bitcoin</strong></h3><p><a href="https://github.com/Denver-1st/lnpesa?ref=blog.btrust.tech"><u>LNpesa</u></a> by Denver Mtange, Kelly Gakii, and Kendi Litala: A USSD-powered bitcoin agent platform that allows feature phone users to participate in bitcoin-enabled mobile money services without requiring smartphones or internet access.</p><h3 id="best-use-of-pontmore"><strong>Best Use of Pontmore</strong></h3><p><a href="https://github.com/MrNyamu/Pontswap?ref=blog.btrust.tech"><u>Pontswap</u></a> by Wesley Nyamu and Cynthia Muemi: A Nostr-native coordination layer for bitcoin-to-fiat swaps that combines transparency, privacy, and verifiable state transitions using open protocols.</p><h2 id="honorable-mentions"><strong>Honorable Mentions</strong></h2><p>Several projects also stood out for their creativity, technical execution, and potential impact.</p><h3 id="powr"><strong>PoWR</strong></h3><p>Built by Shannon Kioko, Lucy Kamau, Anne Mahonga, and Salma Adam, <a href="https://www.loom.com/share/951aa3644e22495f85cec96caadc94fd?ref=blog.btrust.tech"><u>PoWR</u></a> creates verifiable proof-of-work profiles for developers by analyzing meaningful open-source contributions and anchoring reputation data on-chain.</p><h3 id="zaptip"><strong>Zaptip</strong></h3><p>Built by Rita Anene, <a href="https://github.com/Camillarhi/zaptip?ref=blog.btrust.tech"><u>Zaptip</u></a> is a Chrome extension that enables bitcoin tipping directly on GitHub profiles and repositories using Lightning addresses.</p><h3 id="siriscore"><strong>SiriScore</strong></h3><p>Built by Susan Githaiga, Nkatha Kaburu, Rose Jane, and Nelly Nakhero, <a href="https://github.com/nkatha23/siriscore?ref=blog.btrust.tech"><u>SiriScore</u></a> is a pre-broadcast bitcoin transaction privacy analyzer that helps users identify privacy leaks before signing and broadcasting transactions, giving them actionable insights to improve on-chain privacy.</p><h3 id="mindfulsats"><strong>MindfulSats</strong></h3><p>Built by Tony Nakamoto, <a href="https://tonynakamoto.github.io/MindfulSats/?ref=blog.btrust.tech"><u>MindfulSats</u></a> combines accountability, goal-setting, and financial commitment to encourage positive habits and long-term personal growth.</p><h3 id="tandos-ark"><strong>Tando&apos;s Ark</strong></h3><p>Built by Shamsudeen Adedokun and Matthew Vuk, <a href="https://devpost.com/software/tando-s-ark?ref=blog.btrust.tech"><u>Tando&apos;s Ark</u></a> integrates Ark technology into Tando, creating a pathway toward more efficient and potentially fee-free bitcoin-to-M-PESA payments.</p><h2 id="recognizing-the-people-behind-the-event"><strong>Recognizing the People Behind the Event</strong></h2><p>A special thank you goes to <a href="https://x.com/ALewin?ref=blog.btrust.tech"><u>Alex Lewin</u></a>, and the bitcoin++ team for creating an environment where builders could learn, collaborate, experiment, and ship. From organizing the hackathon and coordinating logistics to supporting participants throughout the event, their efforts helped create an experience that will continue to impact builders long after the final presentations concluded.</p><p>We would also like to thank the judges who dedicated their time, expertise, and attention to evaluating submissions across a wide range of categories:</p><ul><li>Nifty, Base58</li><li>Jodom, Minmo</li><li>Alex Gleason, Soapbox</li><li>Fabian Jahr, Brink</li><li>Sy, Stratum V2</li><li>Judy Imasuen, Human Rights Foundation</li><li>Kelvin Isievwore, Btrust</li><li>Mikey, Cashu</li><li>Mark Kamau, Designing Africa</li><li>Hadi Alamdar, Block</li><li>Marvin Charles, Block</li></ul><p>Judging a hackathon involves far more than selecting winners. It requires reviewing technical implementations, understanding project impact, evaluating creativity and feasibility, providing constructive feedback, and recognizing excellence across very different categories. We are grateful for the time and thoughtfulness they brought to the process.</p><h2 id="the-future-is-being-built-in-the-open"><strong>The Future Is Being Built in the Open</strong></h2><p>What stood out most throughout the hackathon was not just the quality of the projects, but the creativity, collaboration, and willingness to build in public.</p><p>The projects ranged from developer tooling and contribution workflows to financial infrastructure, cross-border payments, decentralized coordination systems, and mobile-money integrations. Together, they showcased the breadth of innovation emerging from African builders and the global Bitcoin open-source community.</p><p>The quality of submissions was a reminder that builders are not waiting for permission. They are solving real problems, contributing to open source, experimenting with new ideas, and building the future of Bitcoin.</p><p>Congratulations to all category winners, honorable mentions, finalists, and every team that shipped a project during the hackathon. Building something meaningful in less than 48 hours is no small feat.</p><p>La elecci&#xF3;n de <a href="https://www.camisetatienda.com/?ref=blog.btrust.tech">camisetas de f&#xFA;tbol para entrenar</a> mejora al comparar la comodidad, el tejido y la frecuencia de uso. Las fotograf&#xED;as y la ficha del producto deber&#xED;an confirmar el precio total, el plazo de entrega y las condiciones de devoluci&#xF3;n.</p><p>To everyone who participated, submitted a project, mentored, volunteered, judged, or simply showed up and learned something new: thank you. Keep building. Keep contributing. Keep shipping.</p>]]></content:encoded></item><item><title><![CDATA[How Curiosity Led Me from Civil Engineering to Bitcoin Open Source Contribution]]></title><description><![CDATA[<p><em>Written by&#xA0;</em><a href="https://github.com/Jem256?ref=blog.btrust.tech" rel="noreferrer"><em>Jemimah Nagasha</em></a></p><p>If you had told me a few years ago that I would leave my civil engineering job to work full-time in Bitcoin open source, I probably would have smiled politely and gone back to reviewing construction drawings.</p><p>At the time, my life followed a fairly</p>]]></description><link>https://blog.btrust.tech/how-curiosity-led-me-from-civil-engineering-to-bitcoin-open-source-contribution/</link><guid isPermaLink="false">6a01fd5aa45d04b407ba14ac</guid><category><![CDATA[Btrust Grantee Spotlight]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Fri, 22 May 2026 14:48:01 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/05/BTrust-Gathering-Day-2--17.JPG" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/05/BTrust-Gathering-Day-2--17.JPG" alt="How Curiosity Led Me from Civil Engineering to Bitcoin Open Source Contribution"><p><em>Written by&#xA0;</em><a href="https://github.com/Jem256?ref=blog.btrust.tech" rel="noreferrer"><em>Jemimah Nagasha</em></a></p><p>If you had told me a few years ago that I would leave my civil engineering job to work full-time in Bitcoin open source, I probably would have smiled politely and gone back to reviewing construction drawings.</p><p>At the time, my life followed a fairly structured path. I was a civil engineer managing public infrastructure and maintenance projects. But on the side, I had started exploring technology.</p><p>I picked up frontend development as a side hustle, partly because I wanted more flexibility, and partly because I enjoyed building things that people could actually use and interact with.</p><p>But even then, something felt incomplete. I wasn&#x2019;t just interested in writing code. I wanted to understand systems, how they work, how they scale, how they fail, and most importantly, how they can give people more freedom and control. That curiosity is what eventually led me to Bitcoin.</p><h2 id="the-first-spark"><strong>The First Spark</strong></h2><p>My real entry point into Bitcoin was a conversation. A friend invited me to the very first BitDevs Kampala event. I didn&#x2019;t fully know what to expect, but I decided to show up anyway.</p><p>That room changed everything for me. For the first time, I saw Bitcoin not as speculation, hype, or headlines, but as a technical system. A system that people were actively building, questioning, improving, and defending.</p><p>Even more importantly, I met people who deeply cared about the idea of freedom money and permissionless systems. There was something powerful about being in a room with people who were not just talking about Bitcoin, but working to understand it and contribute to it.</p><p>At that same event, I heard about the <a href="https://www.btrust.tech/builders/apply?ref=blog.btrust.tech" rel="noreferrer">Btrust Builders Program</a> from an alumnus, <a href="https://www.btrust.tech/builders/profile/2?ref=blog.btrust.tech" rel="noreferrer">Rukundo</a>. He described it as a structured, rigorous, and community-driven pathway into Bitcoin open-source development.</p><p>It sounded exactly like the kind of opportunity I had been looking for so I applied.</p><h2 id="the-btrust-builders-program"><strong>The Btrust Builders Program</strong></h2><p>When I got accepted into Btrust Builders, I was so excited. The first six weeks focused on <a href="https://pathways.btrust.tech/01/mastering-bitcoin?ref=blog.btrust.tech" rel="noreferrer">understanding the foundations of Bitcoin</a>: how it works, why it exists, and the principles behind it. We learned about Bitcoin as a monetary system, a technical system, and a tool for individual freedom.</p><p>This phase was highly engaging, especially because of the weekly collaborative calls with other participants. We shared what we were learning, asked questions, and worked through difficult concepts together.</p><p>During that time, I began to understand Bitcoin&#x2019;s broader mission more clearly. It is not just about technology for technology&#x2019;s sake. It is about addressing real problems in traditional money systems and giving people more control over their financial lives. Coming from a context where financial systems do not always work in people&#x2019;s favour, that idea felt very real to me.</p><p>After the initial phase, I was accepted into the <a href="https://www.mariblock.com/stories/btrust-builders-kicks-off-inaugural-fellowship-for-bitcoin-developers-in-africa?ref=blog.btrust.tech" rel="noreferrer">Btrust Builders Fellowship</a>, where we went much deeper into the technical side of Bitcoin.</p><p>We wrote programs to decode transactions, created Lightning channels, worked on group projects to build Bitcoin applications, and also explored existing Bitcoin open-source projects and the problems they were trying to solve. It was intense, demanding, and exactly the kind of structure my curiosity had been missing.</p><p>The fellowship also changed the way I approached learning. I became more comfortable with not knowing everything right away. I learned how to read code I didn&#x2019;t fully understand yet. I learned how to ask better questions. And slowly, I gained both the technical foundation and the confidence to start contributing to open source.</p><h2 id="from-learning-to-contributing"><strong>From Learning to Contributing</strong></h2><p>Because of the fellowship, I started contributing to <a href="https://github.com/jamaljsr/polar?ref=blog.btrust.tech" rel="noreferrer">Polar</a>, a tool that makes it easier for developers to run Bitcoin and Lightning nodes locally. It was the perfect entry point for me because it&apos;s practical, useful, and directly connected to improving the developer experience.</p><p>My first pull request was a huge learning experience. It was exciting, but also humbling. I had to read the codebase, understand the contribution process, ask questions, make changes, and respond to feedback. But each contribution made the next one a little easier.</p><p>Over time, the codebase started to feel less foreign. It became something I could understand, work with, and eventually help shape.</p><p>Around the same time, I became more involved in the local Bitcoin community. What started as attending <a href="https://x.com/BitDevsKLA?ref=blog.btrust.tech" rel="noreferrer">BitDevs Kampala</a> slowly turned into helping organise it, and eventually leading it in 2025.</p><p>I also joined the Btrust Builders faculty, where I got the chance to share what I had learned with future cohorts. That experience meant a lot to me because it felt like I was passing the knowledge forward and helping create the same kind of supportive path that had helped me.</p><p>Through all of this, I met like-minded people, learned from their experiences, and realised that I was not alone in this journey.</p><p>Building a space where developers could learn together, whether they were completely new or already experienced, reinforced something I now believe deeply: Education and open source are closely connected. In many ways, they are part of the same work.</p><h2 id="the-btrust-starter-grant"><strong>The Btrust Starter Grant</strong></h2><p>All of this was happening while I was still working full-time as a civil engineer. Balancing both worlds was one of the hardest things I have done. There were lots of late nights, early mornings, and weekends spent writing code after long workdays. I loved what I was learning and building, but it was not easy to keep both paths going at the same time.</p><p>Then I applied for the <a href="https://www.btrust.tech/grants/developer?ref=blog.btrust.tech" rel="noreferrer">Btrust Starter Grant</a> to work on Polar, and in April 2026, I was awarded the grant. That moment meant a lot to me because it gave me the opportunity to transition into full-time Bitcoin open-source development. I no longer had to squeeze contributions into evenings and weekends, nor wait until after work hours to focus on the thing I cared about deeply. I could finally give it my full attention.</p><h2 id="building-the-future-i-care-about"><strong>Building the Future I Care About</strong></h2><p>Today, I work full-time on Bitcoin open source, focusing on improving the developer experience, making it easier for others to build, test, and experiment with Bitcoin and the Lightning Network.</p><p>This journey wasn&apos;t linear, nor was it planned. It was a series of small decisions: showing up to one event, applying to one program, making one contribution, and saying yes to one opportunity. Each step built on the last, but none of them felt obvious or inevitable at the time.</p><p>This journey has given me more than technical skills. It has given me a community, a sense of purpose, and the chance to build tools that make Bitcoin more accessible.</p><p>I hope sharing my story motivates more people, especially those who, like me, didn&apos;t start in traditional computer science paths. You don&apos;t need to have it all figured out. What you need is curiosity, consistency, and a willingness to learn.</p><p>Bitcoin has room for people from many backgrounds, each bringing their own skills and perspective. That is part of what makes it stronger and more resilient.</p>]]></content:encoded></item><item><title><![CDATA[Btrust Announces New Board to Lead Next Phase of Growth]]></title><description><![CDATA[<p><strong>Global, May 19, 2026</strong> - Btrust today announced the appointment of its new Board of Directors, marking the completion of a planned governance transition and the beginning of its next chapter.</p><p>Following a global, open call and a rigorous selection process, <a href="https://x.com/nduku_jay?ref=blog.btrust.tech"><strong><u>Janet Maingi</u></strong></a><strong>, </strong><a href="https://x.com/brrrunog?ref=blog.btrust.tech"><strong><u>Bruno Garcia</u></strong></a><strong>,</strong> and <a href="https://x.com/laurenceaderemi?ref=blog.btrust.tech"><strong><u>Laurence Aderemi</u></strong></a><strong> </strong>have assumed</p>]]></description><link>https://blog.btrust.tech/btrust-announces-new-board-to-lead-next-phase-of-growth/</link><guid isPermaLink="false">6a0ca3eaa45d04b407ba1dbd</guid><category><![CDATA[Btrust]]></category><category><![CDATA[News]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Tue, 19 May 2026 18:31:11 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/05/Board-Announcement.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/05/Board-Announcement.jpg" alt="Btrust Announces New Board to Lead Next Phase of Growth"><p><strong>Global, May 19, 2026</strong> - Btrust today announced the appointment of its new Board of Directors, marking the completion of a planned governance transition and the beginning of its next chapter.</p><p>Following a global, open call and a rigorous selection process, <a href="https://x.com/nduku_jay?ref=blog.btrust.tech"><strong><u>Janet Maingi</u></strong></a><strong>, </strong><a href="https://x.com/brrrunog?ref=blog.btrust.tech"><strong><u>Bruno Garcia</u></strong></a><strong>,</strong> and <a href="https://x.com/laurenceaderemi?ref=blog.btrust.tech"><strong><u>Laurence Aderemi</u></strong></a><strong> </strong>have assumed full governance responsibilities. The process was guided by Btrust&#x2019;s Genesis Principles, with a focus on transparency, fairness, and mission alignment.</p><p>This transition fulfills the mandate set in 2021, when Btrust was established with a 500 BTC endowment from Jack Dorsey and Jay-Z. The inaugural board, <a href="https://x.com/obi?ref=blog.btrust.tech"><u>Obi Nwosu</u></a>, <a href="https://x.com/ojomaochai?ref=blog.btrust.tech"><u>Ojoma Ochai</u></a>, <a href="https://x.com/actuallyCarlaKC?ref=blog.btrust.tech"><u>Carla Kirk-Cohen</u></a>, and <a href="https://x.com/ihate1999?ref=blog.btrust.tech"><u>Abubakar Nur Khalil</u></a>, was tasked with building the organisation&#x2019;s foundation and enabling a structured handover to a successor board.</p><p>Over a multi-week transition period concluding April 30, 2026, incoming and outgoing boards worked closely to ensure continuity across governance, financial oversight, and operations. This included budget reviews, documentation consolidation, and the initiation of an independent audit to strengthen accountability.</p><p>The new board brings deep expertise across Bitcoin infrastructure, energy systems, and open-source development. Together, they will guide Btrust&#x2019;s mission to decentralise Bitcoin development and expand access to opportunities across the Global South.</p><p>&#x201C;Today marks an important milestone for Btrust,&#x201D; said CEO Abubakar Nur Khalil. &#x201C;We are confident the new board will strengthen our impact and safeguard our long-term mission.&#x201D;</p><p>Btrust moves forward with strong governance, operational continuity, and renewed stewardship.</p><h2 id="about-btrust"><strong>About Btrust</strong></h2><p>Btrust is a non-profit organisation focused on decentralising the development of Bitcoin open-source software. It supports developer talent across the Global South and works to ensure the Bitcoin ecosystem remains open, inclusive, and resilient.</p><p>Learn more: <a href="https://btrust.tech/?ref=blog.btrust.tech"><u>https://btrust.tech</u></a></p>]]></content:encoded></item><item><title><![CDATA[Celebrating the Q1, 2026 Pathway Cohort Graduation]]></title><description><![CDATA[<p>The first pathways of 2026 at Btrust Builders officially concluded recently. Between March and April 2026, developers from across Africa and beyond participated in two learning pathways: <a href="https://pathways.btrust.tech/01/mastering-bitcoin?ref=blog.btrust.tech"><u>Mastering Bitcoin</u></a> and <a href="https://pathways.btrust.tech/02/learn-bitcoin-from-the-command-line?ref=blog.btrust.tech"><u>Learn Bitcoin from the Command Line</u></a>.</p><p>Each pathway ran in two formats: a structured live cohort and an open self&</p>]]></description><link>https://blog.btrust.tech/celebrating-the-q1-2026-pathway-cohort-graduation/</link><guid isPermaLink="false">6a035502a45d04b407ba14c4</guid><category><![CDATA[Btrust Builders]]></category><dc:creator><![CDATA[Btrust Builders]]></dc:creator><pubDate>Thu, 14 May 2026 15:38:23 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/05/photo_5778626356877922333_y.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/05/photo_5778626356877922333_y.jpg" alt="Celebrating the Q1, 2026 Pathway Cohort Graduation"><p>The first pathways of 2026 at Btrust Builders officially concluded recently. Between March and April 2026, developers from across Africa and beyond participated in two learning pathways: <a href="https://pathways.btrust.tech/01/mastering-bitcoin?ref=blog.btrust.tech"><u>Mastering Bitcoin</u></a> and <a href="https://pathways.btrust.tech/02/learn-bitcoin-from-the-command-line?ref=blog.btrust.tech"><u>Learn Bitcoin from the Command Line</u></a>.</p><p>Each pathway ran in two formats: a structured live cohort and an open self&#x2011;paced track, allowing developers to participate either through scheduled weekly discussions or by progressing independently while engaging with moderators and the wider community.</p><p>Across both pathways, 265 developers from 24 countries took part in the program. By the end of the cohorts, 37 developers successfully graduated from the live tracks after meeting the technical and participation requirements.</p><p>The live cohorts were also among the most geographically and gender&#x2011;diverse groups in the Builders pathways to date, bringing together developers from across Africa as well as participants from outside the continent.</p><p>These pathways are part of Btrust Builders&#x2019; broader developer education strategy: a structured progression that helps developers move from learning Bitcoin fundamentals to contributing meaningfully to open-source projects.</p><h2 id="mastering-bitcoin"><strong>Mastering Bitcoin</strong></h2><p>The Mastering Bitcoin pathway is an 8&#x2011;week foundational program designed to help developers understand how Bitcoin works from the ground up.</p><p>Participants study <a href="https://github.com/bitcoinbook/bitcoinbook?ref=blog.btrust.tech"><u>Mastering Bitcoin: Programming the Open Blockchain (3rd Edition)</u></a> by Andreas Antonopoulos, exploring topics ranging from transactions and wallets to mining, consensus, and the deeper mechanics of the protocol. The pathway emphasizes technical reading, critical thinking, and collaborative discussion, preparing developers to engage seriously with Bitcoin development and open&#x2011;source work.</p><h3 id="live-cohort"><strong>Live Cohort</strong></h3><p>The first live cohort brought together 74 developers from 18 countries, supported by 13 chaperones and teaching assistants who facilitated weekly study sessions.</p><p>One of the cohort&#x2019;s highlights was its strong diversity: 34% of participants were women, one of the highest levels of female participation across any Btrust Builders cohort to date. The group also included developers from countries appearing in the program for the first time, including Burundi, Namibia, and Mozambique.</p><p>Over eight weeks, participants worked through the book chapter by chapter, preparing answers to Socratic questions, discussing concepts with partners, and joining weekly 90&#x2011;minute group study sessions where learners unpacked complex ideas together.</p><p>By the end of the program, 18 developers from nine countries <a href="https://pathways.btrust.tech/graduates?ref=blog.btrust.tech"><u>graduated</u></a>, meeting the pathway&#x2019;s requirements for participation, preparation, and understanding.</p><p>Learners consistently highlighted the community and collaborative environment as one of the most valuable aspects of the experience.</p><blockquote><em>&quot;I wanted to get in&#x2011;depth knowledge about Bitcoin. The Mastering Bitcoin cohort didn&apos;t just provide that, it provided a community too,&quot; said</em> <a href="https://github.com/Caritajoe18?ref=blog.btrust.tech"><u>Carita Ndibe</u></a> from Nigeria.</blockquote><h3 id="self%E2%80%91paced-track"><strong>Self&#x2011;Paced Track</strong></h3><p>Alongside the live cohort, 100 developers joined the self&#x2011;paced Mastering Bitcoin track, studying the same material independently while engaging with moderators and the community on Discord.</p><p>The track provides structure without fixed schedules, offering learners suggested weekly pacing, engagement prompts, progress milestones, and community discussions to support independent learning.</p><p>Moderators supported learners throughout the program and hosted an open office hour session where they explored different topics.</p><p>Learners were encouraged to progress at their own pace. Those who completed the program have been invited to share their takeaways, provide feedback on the pathway, and explore next steps such as upcoming Builders pathways.</p><p>The Discord space remains active so participants can continue discussing ideas, asking questions, and supporting others working through the material.</p><h2 id="learn-bitcoin-from-the-command-line"><strong>Learn Bitcoin from the Command Line</strong></h2><p>While Mastering Bitcoin focuses on conceptual foundations, Learn Bitcoin from the Command Line focuses on hands&#x2011;on interaction with Bitcoin software.</p><p>This 7&#x2011;week pathway teaches developers how to work directly with Bitcoin Core using the command&#x2011;line interface, following the book <a href="https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line?ref=blog.btrust.tech"><u>Learning Bitcoin from the Command Line</u></a> by Christopher Allen and Shannon Appelcline.</p><p>Instead of just reading about Bitcoin&#x2019;s mechanics, learners run commands, spin up nodes, construct transactions, inspect scripts, and explore the protocol by interacting with it directly.</p><h3 id="live-cohort-1"><strong>Live Cohort</strong></h3><p>The first CLI cohort brought together 61 developers from 16 countries, supported by 14 chaperones and teaching assistants.</p><p>The group included participants from across Africa as well as developers from India and the United States, expanding the global reach of the program.</p><p>Throughout the seven weeks, learners worked through progressively challenging exercises, experimenting with Bitcoin Core commands, analyzing blockchain data, and building practical understanding of how the system works under the hood.</p><p>The pathway concluded with a capstone project, where participants applied what they had learned in a practical scenario.</p><p>By the end of the program, 19 developers <a href="https://pathways.btrust.tech/graduates?ref=blog.btrust.tech"><u>graduated</u></a>, representing seven countries.</p><blockquote>&quot;This cohort changed what I think is possible for me in Bitcoin development. I leave with the confidence to keep going, to contribute, to build, and to understand Bitcoin at a level I couldn&apos;t have imagined a few months ago,&quot; said <a href="https://github.com/nkatha23?ref=blog.btrust.tech"><u>Nkatha Sharon</u></a> from Kenya.</blockquote><p>Another participant reflected on how the pathway deepened their technical understanding:</p><blockquote><em>&quot;I already understood Bitcoin at a high level, but the bitcoin-cli pathway helped me understand it much better. If you want to really learn how Bitcoin works, this kind of training is a great way to get your hands dirty with the low-level details,&quot;</em>  added <a href="https://github.com/0tuedon?ref=blog.btrust.tech"><u>Tuedon Tuoyo</u></a> from Nigeria.</blockquote><h3 id="self%E2%80%91paced-track-1"><strong>Self&#x2011;Paced Track</strong></h3><p>Alongside the live cohort, 30 developers joined the self&#x2011;paced CLI track, progressing through the same material independently while engaging with moderators on Discord.</p><p>Moderators supported learners and hosted an open office hour session where participants shared projects they had built during the pathway, including a multi&#x2011;signature wallet in Python and a dust cleaner application.</p><h2 id="what-we-learned"><strong>What We Learned</strong></h2><p>Across the pathways, peer discussion emerged as one of the most powerful drivers of learning.</p><p>Learners consistently rated the weekly discussions, breakout rooms, and collaborative problem solving as the most valuable parts of the experience. The pathways also brought together developers from a wide range of backgrounds and countries, helping build a growing community of Bitcoin developers connected through shared learning.</p><p>Participants also shared thoughtful suggestions which will help shape the next iteration of the pathways.</p><h2 id="what%E2%80%99s-next"><strong>What&#x2019;s Next?</strong></h2><p>Many graduates are continuing their journey through the Btrust Builders ecosystem. Several participants plan to move on to upcoming Q2 pathways; Rust for Bitcoiners or the Language Clubs. Those who prefer to join future cohorts can also <a href="https://btrust.homerun.co/btrust-builders-application/en?ref=blog.btrust.tech" rel="noreferrer">join the waitlist</a> for upcoming pathway cohorts, as listed in the Pathway Calendar.</p><p>A number of learners have begun publishing technical write&#x2011;ups, sharing their knowledge in local developer communities, and exploring opportunities to contribute to Bitcoin open&#x2011;source Bitcoin projects.</p><p>Beyond structured learning, graduates are also encouraged to immerse themselves in the broader Bitcoin developer ecosystem by participating in developer communities such as <a href="https://www.btrust.tech/bitdevs?ref=blog.btrust.tech"><u>BitDevs</u></a>, as well as meetups, hackathons, and other Bitcoin-focused events. Staying connected to the community is one of the most effective ways to keep learning, find collaborators, and gradually move toward meaningful open&#x2011;source contributions.</p><h2 id="thank-you-to-the-builders-community"><strong>Thank You to the Builders Community</strong></h2><p>These cohorts were made possible by the dedication of our faculty and the broader Builders community who supported learners throughout the journey.</p><p>To everyone who showed up each week, asked questions, helped their peers, and pushed themselves to understand Bitcoin more deeply, thank you for being part of this learning community.</p><h2 id="about-us"><strong>About Us</strong></h2><p><a href="https://www.btrust.tech/builders?ref=blog.btrust.tech"><u>Btrust Builders</u></a> is <a href="https://www.btrust.tech/?ref=blog.btrust.tech"><u>Btrust</u></a>&#x2019;s comprehensive engineering program dedicated to training and funding African software developers to contribute to Bitcoin and Lightning open-source projects. The Builders program provides technical mentorship, community support, and structured pathways to sustainable Bitcoin development careers.</p>]]></content:encoded></item><item><title><![CDATA[Onion Messages: Lightning’s Private Messaging Layer]]></title><description><![CDATA[<p><em>Written by&#xA0;</em><a href="https://www.btrust.tech/builders/profile/37?ref=blog.btrust.tech" rel="noreferrer"><em>Abdullahi Yunus</em></a></p><p>Most people know the Lightning Network as a fast way to send Bitcoin payments. It&#x2019;s a network of computers (called nodes) connected by payment channels. When someone sends a payment, it travels through several nodes, and each step of the journey is protected</p>]]></description><link>https://blog.btrust.tech/onion-messages-lightnings-private-messaging-layer/</link><guid isPermaLink="false">69f1fa7da45d04b407ba120f</guid><category><![CDATA[Technical]]></category><category><![CDATA[Btrust]]></category><category><![CDATA[Lightning]]></category><dc:creator><![CDATA[Btrust]]></dc:creator><pubDate>Mon, 04 May 2026 14:17:57 GMT</pubDate><media:content url="https://blog.btrust.tech/content/images/2026/04/data-src-image-8ec1218b-65f0-4a21-8f48-4462841b543a-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.btrust.tech/content/images/2026/04/data-src-image-8ec1218b-65f0-4a21-8f48-4462841b543a-2.png" alt="Onion Messages: Lightning&#x2019;s Private Messaging Layer"><p><em>Written by&#xA0;</em><a href="https://www.btrust.tech/builders/profile/37?ref=blog.btrust.tech" rel="noreferrer"><em>Abdullahi Yunus</em></a></p><p>Most people know the Lightning Network as a fast way to send Bitcoin payments. It&#x2019;s a network of computers (called nodes) connected by payment channels. When someone sends a payment, it travels through several nodes, and each step of the journey is protected using something called onion encryption.</p><p>But the technology that makes Lightning payments possible can do more than move money.</p><p>Think of Lightning like a network of roads connecting many cities. Right now, those roads are mainly used to deliver packages of money (bitcoin payments). But the roads could also carry letters, instructions, or other kinds of information.</p><p>Right now, Lightning nodes can only communicate directly with their immediate peers. If a node wants to communicate with another node it isn&#x2019;t directly connected to, it usually has to use something outside the Lightning Network.</p><p>For example, fetching a payment invoice often requires making an HTTP request to a web server. That works, but it introduces several problems.</p><p>First, it can leak information. The server might learn your IP address, when you&#x2019;re making the request, and that you&#x2019;re about to make a payment.</p><p>Second, it introduces extra infrastructure outside Lightning. If the server goes down, the process breaks.</p><p>Third, it weakens Lightning&#x2019;s privacy model, which was carefully designed around onion routing.</p><p>And that leads to the question, if Lightning already has a network that can privately route payments between nodes, why not use that same network to route messages too?</p><p>That&#x2019;s exactly what onion messages are.</p><p>Onion messages are defined in the BOLT 4 specification. They allow nodes to send arbitrary data through the Lightning Network, using the same onion&#x2011;routing system used for payments, but without the extra payment machinery like channels, HTLCs, or liquidity locks.</p><p>In other words, onion messages turn Lightning from a payment-only network into a private communication layer.</p><p>This isn&#x2019;t just a theoretical idea. Onion messages are already being used as a foundation for new Lightning features and protocols.</p><p>In this post, we&#x2019;ll explore:</p><ul><li>How onion messages work</li><li>How they differ from payment routing</li><li>How they&#x2019;re implemented in LND</li></ul><h2 id="how-onion-routing-works-for-payments"><strong>How Onion Routing Works for Payments</strong></h2><figure class="kg-card kg-image-card"><img src="https://blog.btrust.tech/content/images/2026/04/data-src-image-f25350ec-de54-4c26-88ed-68402d085b06.png" class="kg-image" alt="Onion Messages: Lightning&#x2019;s Private Messaging Layer" loading="lazy" width="800" height="447" srcset="https://blog.btrust.tech/content/images/size/w600/2026/04/data-src-image-f25350ec-de54-4c26-88ed-68402d085b06.png 600w, https://blog.btrust.tech/content/images/2026/04/data-src-image-f25350ec-de54-4c26-88ed-68402d085b06.png 800w" sizes="(min-width: 720px) 720px"></figure><p>Before we look at onion messages, it helps to understand how Lightning routes payments, since onion messages build on the same idea.</p><p>Imagine you want to send a package to someone across the country. You don&#x2019;t deliver it directly yourself. Instead, it travels through several post offices, each forwarding it to the next one until it reaches the destination.</p><p>Lightning payments work in a similar way.</p><p>When a node wants to send a payment, it first finds a route through the network. That route is a sequence of nodes where each pair shares a payment channel.</p><p>Once the route is found, the sender creates something called a Sphinx packet, named after the cryptographic system it uses.</p><p>The important idea here is layered encryption.</p><p>Think of the packet like a package wrapped in multiple envelopes.</p><p>Each envelope contains instructions for one stop along the route. The first node opens the outer envelope. It reads instructions telling it where to send the package next. It forwards the remaining package. The next node does the same thing, removing the next layer and forwarding the packet again.</p><p>Eventually the packet reaches the final recipient, who opens the last layer and sees the payment details.</p><p>Another way to imagine this is like a relay race. Each runner only knows who handed them the baton and who they should pass it to next. No runner knows the entire route of the race.</p><p>This design provides strong privacy.</p><p>Each intermediate node only learns three things: who sent it the packet, where to forward it next and the forwarding instructions. It cannot see the full route, the sender, or the final destination.</p><p>Alongside this routing mechanism is something called an HTLC (Hash Time&#x2011;Locked Contract). A simple way to think about HTLCs is like a secure escrow lock. Funds are temporarily locked along the route, and they are only released when the recipient reveals a secret called the payment preimage.</p><p>When the recipient reveals this secret, it travels back along the same path and unlocks the payment at each step.</p><p>This ensures that the payment either succeeds everywhere or fails everywhere.</p><p>But there&#x2019;s a downside. All of this machinery exists because we&#x2019;re moving money. It requires payment channels, available liquidity, HTLC contracts and updates to channel balances. That&#x2019;s a lot of work if all you want to do is send a message.</p><p>So developers asked a simple question. What if we kept the private routing, but removed everything related to payments?</p><p>That&#x2019;s the idea behind onion messages.</p><h2 id="onion-messages-what-they-are-and-how-they-differ"><strong>Onion Messages: What They Are and How They Differ</strong></h2><p>Traditional Lightning routing is tightly connected to payments. Every hop in a payment route requires a channel with enough liquidity and an HTLC setup.</p><p>That&#x2019;s like using a full armored money truck just to deliver a simple letter.</p><p>Onion messages strip all of that away.</p><p>They keep the encrypted routing, but remove the payment parts.</p><p>An onion message is defined in BOLT 4 as a standalone message type (msg type 513). It&#x2019;s essentially a packet of encrypted data that can travel across the network using the same onion&#x2011;routing design.</p><p>But there are a few key differences:</p><p><strong>No channel and HTLC required:</strong> A payment hop requires an active payment channel between nodes. An onion message only requires a network connection. For example, Alice can forward a message to Bob as long as they are connected peers, even if they don&#x2019;t have a payment channel. This means the message network can be larger than the payment network, since any peer connection can act as a relay.</p><p><strong>One-way by default:</strong> Payments involve a round trip because the recipient must reveal a secret to complete the transaction. Onion messages are much simpler. They are one&#x2011;way packets. The sender builds the packet and sends it into the network. After that, it simply travels hop by hop until it reaches its destination. You can think of this like dropping a letter into a mailbox. Once it&#x2019;s sent, you don&#x2019;t necessarily know the exact path it takes to reach the recipient.</p><p><strong>Reply paths solve the response problem:</strong> If messages are one&#x2011;way, how can the recipient respond? The sender can include something called a <em>ReplyPath</em>. This is like including a self&#x2011;addressed return envelope inside the message. The recipient can place their reply inside this envelope and send it back through the network. The clever part is that the reply path is also hidden using route blinding, so the recipient doesn&#x2019;t learn who the original sender is.</p><p><strong>Blinded paths add recipient privacy:</strong> Normally, when a sender builds a route, they know who the final recipient is. But onion messages introduce blinded paths. With blinded paths, the final portion of the route is hidden from the sender. Imagine sending a letter to a reception desk in a large office building. The receptionist receives it and forwards it internally to the correct office. You never see the internal routing. That&#x2019;s similar to how blinded paths work. The recipient creates a hidden route starting from an introduction node. The sender only knows how to reach that introduction point. From there, the message continues along the hidden path to the final destination. This provides powerful privacy guarantees. It allows situations where the sender doesn&#x2019;t know the recipient&#x2019;s node ID, intermediate nodes only know the next hop, and the recipient doesn&#x2019;t know the sender.</p><figure class="kg-card kg-image-card"><img src="https://blog.btrust.tech/content/images/2026/04/data-src-image-e74989c5-129c-4b1d-90af-12c9f76c9cb1.png" class="kg-image" alt="Onion Messages: Lightning&#x2019;s Private Messaging Layer" loading="lazy" width="800" height="447" srcset="https://blog.btrust.tech/content/images/size/w600/2026/04/data-src-image-e74989c5-129c-4b1d-90af-12c9f76c9cb1.png 600w, https://blog.btrust.tech/content/images/2026/04/data-src-image-e74989c5-129c-4b1d-90af-12c9f76c9cb1.png 800w" sizes="(min-width: 720px) 720px"></figure><p>This combination of reply paths and blinded paths is what gives onion messages their privacy properties. A full exchange can happen where neither side knows the other&#x2019;s node identity, with each party hiding behind blinded routes.</p><p><strong>The Denial-of-Service (DoS) question:</strong> One concern with onion messages is spam. Payment forwarding naturally limits traffic because it requires liquidity and HTLCs. But forwarding onion messages is basically free. That means someone could try to flood the network with messages. The current approach is rate limiting. Each node limits how many onion messages it will forward per peer per second. It&#x2019;s a simple solution, but it helps prevent abuse while keeping the system lightweight.</p><h2 id="protocol-walkthrough-inside-lnd"><strong>Protocol Walkthrough: Inside LND</strong></h2><p>Let&#x2019;s trace what happens when a node sends an onion message through the network in <a href="https://github.com/lightningnetwork/lnd?ref=blog.btrust.tech" rel="noreferrer">LND</a>. The implementation is split across two main PRs: <a href="https://github.com/lightningnetwork/lnd/pull/9868?ref=blog.btrust.tech"><u>#9868</u></a> introduced the wire message and basic structures, with the forwarding logic following in <a href="https://github.com/lightningnetwork/lnd/pull/10089?ref=blog.btrust.tech"><u>#10089</u></a>. The architecture that emerged reveals some interesting design choices.</p><figure class="kg-card kg-image-card"><img src="https://blog.btrust.tech/content/images/2026/04/data-src-image-6874782b-aa85-43df-ac8e-86872dc7aa33.png" class="kg-image" alt="Onion Messages: Lightning&#x2019;s Private Messaging Layer" loading="lazy" width="800" height="1433" srcset="https://blog.btrust.tech/content/images/size/w600/2026/04/data-src-image-6874782b-aa85-43df-ac8e-86872dc7aa33.png 600w, https://blog.btrust.tech/content/images/2026/04/data-src-image-6874782b-aa85-43df-ac8e-86872dc7aa33.png 800w" sizes="(min-width: 720px) 720px"></figure><h3 id="the-wire-message"><strong>The Wire Message</strong></h3><p>At the lowest level, an onion message on the wire is surprisingly simple. The OnionMessage type in the lnwire package (message type 513) is just two fields:</p><pre><code class="language-go">// lnwire/onion_message.go
type OnionMessage struct {
  PathKey *btcec.PublicKey // route blinding ephemeral pubkey
  OnionBlob []byte // Sphinx onion packet (BOLT 4), blinded by default
}</code></pre><p>The <em>PathKey</em> is used to derive the blinded node identity at each hop, while the <em>OnionBlob</em> carries the layered encrypted payloads, constructed the same way as payment, but using route blinding by default. Feature bits 38/39 (OnionMessagesRequired/OnionMessagesOptional) signal support during the init handshake.</p><h3 id="per-peer-actors"><strong>Per-peer Actors</strong></h3><p>Rather than processing onion messages inline in the peer&#x2019;s read loop, LND uses an actor-based architecture. During peer connection, after the init handshake, the LND node checks whether the remote side peer advertises feature bit 38/39 and, if so, spawns a dedicated OnionPeerActor:</p><pre><code class="language-go">// peer/brontide.go &#x2014; Start()
if p.remoteFeatures.HasFeature(lnwire.OnionMessagesOptional) {
&#xA0;  // Start an actor primitive specifically for handling onion messages
&#xA0;  // for this peer.
&#xA0;  ref, spawnErr := p.cfg.SpawnOnionActor(p.cfg.ActorSystem, ...)
   // ...
}</code></pre><p>When a type <em>513</em> message arrives, the read handler for the local node dispatches it directly to the actor with a fire-and-forget <em>Tell</em>:</p><pre><code class="language-go">// peer/brontide.go - readHandler
case *lnwire.OnionMessage:
&#xA0;    p.onionActorRef.WhenSome(func(ref onionmessage.OnionPeerActorRef) {
&#xA0;&#xA0;&#xA0;     ref.Tell(ctx, onionmessage.NewRequest(*msg))
    })</code></pre><h3 id="decoding-and-routing"><strong>Decoding and Routing</strong></h3><p>The actor delegates the heavy lifting to <em>processOnionMessage</em> in hop.go. Onion messages use a separate Sphinx router initialized without replay protection since no funds are at stake:</p><pre><code class="language-go">// server.go - the onion message router uses a no-op replay log
sphinxOnionMsg := sphinx.NewRouter(nodeKeyECDH, sphinx.NewNoOpReplayLog())
</code></pre><p>The snippet below shows how LND determines action to take after it decodes the Sphinx packet and decrypts the blinded hop data using the path key. LND uses a sum type pattern to represent the result, either a <em>forwardAction</em> or a <em>deliverAction</em>, depending on whether we&#x2019;re a relay or the final destination:</p><pre><code class="language-go">// onionmessage/hop.go - the routing decision
if isForwarding(packet) {&#xA0;&#xA0;&#xA0; 
    // For forwarding action, resolve nextNodeId either directly
    // or using a short channel Id (SCID)
    if routeData.NextNodeID.IsSome() {&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;
        nextNodeID = routeData.NextNodeID.UnwrapOrErr(&#x2026;)&#xA0;&#xA0;&#xA0;
    } else {&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;
        nextNodeID = resolver.RemotePubFromSCID(ctx, routeData.ShortChannelID&#x2026;)&#xA0;&#xA0;&#xA0;
    }
    return fn.NewLeft(forwardAction {&#x2026;})
}
return fn.NewRight(deliverAction{payload: payload})</code></pre><p>For forwards, a new OnionMessage with the updated path key and remaining onion blob is sent to the next peer via the <em>PeerMessageSender</em> interface. You can think of this like a postal sorting center. Each center checks the address and decides whether to forward the letter or deliver it.  For deliveries, we&#x2019;re the final destination, and the payload (including any <em>ReplyPath</em> and other TLV records) is handled.</p><h3 id="the-opt-out-flag"><strong>The Opt-out Flag</strong></h3><p>LND also gives node operators the choice to opt out. It supports a `<em>&#x2014; protocol.no-onion-messages</em>` flag. When set, the node doesn&#x2019;t advertise feature bits 38/39, the actor factory is never created, and no per-peer actors are spawned; incoming onion messages are simply ignored. This lets node operators control their participation in message routing.</p><h2 id="what-onion-messages-unlock"><strong>What Onion Messages Unlock</strong></h2><p>Onion messages, on their own, are a low-level building block, a way to get encrypted data from one node to another over the network. Their value becomes clear when you look at what can be built on top of them.</p><p>The most significant protocol development based on onion messages is <a href="https://github.com/lightning/bolts/blob/master/12-offer-encoding.md?ref=blog.btrust.tech"><u>BOLT 12</u></a>, which introduces a native way for nodes to request and receive invoices directly over the Lightning Network, replacing the out-of-band invoice fetching we discussed earlier.</p><p>Today, if you want to pay a merchant, you usually have to fetch an invoice from a web server. That means leaving the Lightning Network and making a request over the internet. With BOLT 12, things work differently. A merchant can publish a small piece of information called an offer, which acts like a permanent payment endpoint. When a customer wants to pay, their node sends an onion message requesting an invoice. The merchant replies with the invoice using a reply path.</p><p>You can imagine this like ordering food at a restaurant using a private internal messaging system instead of calling an external phone line.</p><p>Everything happens&#xA0;<strong>inside the Lightning Network</strong>, improving privacy and reliability. Blinded paths and reply paths make this exchange possible while preserving privacy on both sides. </p><p>BOLT 12 is already supported in other implementations like <a href="https://corelightning.org/?ref=blog.btrust.tech" rel="noreferrer">CLN</a> and <a href="https://github.com/acinq/eclair?ref=blog.btrust.tech" rel="noreferrer">Eclair</a>, and its arrival in LND will be a meaningful step toward cross-implementation interoperability.</p><p>And offers are just the beginning. Onion messages provide a general-purpose transport layer that any application-level protocol can use. Node-to-node communication, custom application data, coordinated channel management, anything that currently relies on external infrastructure could potentially move onto the network itself, inheriting its privacy properties in the process.</p><p>What&apos;s most exciting about contributing to this in LND is how foundational the work is. Onion routing isn&#x2019;t a feature end users interact with directly; it&#x2019;s plumbing. But it&#x2019;s the kind of plumbing that removes constraints. Today, building anything on Lightning that goes beyond a simple payment means reaching outside the network. Onion messages close that gap. The protocol surface area they open up is large, and we&#x2019;re still early in exploring what&#x2019;s possible.</p><h2 id="conclusion"><strong>Conclusion</strong></h2><p>Onion routing has always been a core part of Lightning&#x2019;s privacy. Originally, it was designed specifically for payments. But onion messages extend the same idea to general communication.</p><p>By removing the payment&#x2011;specific requirements while keeping the privacy guarantees, onion messages allow nodes to exchange encrypted information across the network.</p><p>You can think of this as adding a private messaging system to Lightning&#x2019;s infrastructure. Most users will never interact with it directly. But it quietly expands what the network can do.</p><p>And as developers continue experimenting with this new capability, we&#x2019;re likely to see many new protocols built on top of it. In other words, Lightning may turn out to be not just a payment network, but also a private communication layer for the internet.</p><p>If you&#x2019;re interested in following the progress in LND or contributing yourself, check the<a href="https://github.com/lightningnetwork/lnd?ref=blog.btrust.tech"> <u>LND repo</u></a>. The specification itself lives in <a href="https://github.com/lightning/bolts/blob/master/04-onion-routing.md?ref=blog.btrust.tech#onion-messages"><u>BOLT 4</u></a>. And if this post piqued your curiosity about how the pieces fit together, the best way to learn is to read the code.</p><h2 id="references"><strong>References</strong></h2><ul><li><a href="https://github.com/lightning/bolts/blob/master/04-onion-routing.md?ref=blog.btrust.tech#onion-messages"><u>https://github.com/lightning/bolts/blob/master/04-onion-routing.md#onion-messages</u></a></li><li><a href="https://github.com/lightningnetwork/lnd/pull/10089?ref=blog.btrust.tech"><u>https://github.com/lightningnetwork/lnd/pull/10089</u></a></li><li><a href="https://github.com/lightningnetwork/lnd/pull/9868?ref=blog.btrust.tech"><u>https://github.com/lightningnetwork/lnd/pull/9868</u></a></li><li><a href="https://www.cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf?ref=blog.btrust.tech"><u>https://www.cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf</u></a></li></ul>]]></content:encoded></item></channel></rss>