<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ibe Arua</title>
    <description>The latest articles on DEV Community by Ibe Arua (@ibearua).</description>
    <link>https://dev.to/ibearua</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F68666%2F6b13bcf2-1aee-4468-a2ab-c247865fb7d8.jpeg</url>
      <title>DEV Community: Ibe Arua</title>
      <link>https://dev.to/ibearua</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ibearua"/>
    <language>en</language>
    <item>
      <title>Building Agentic Commerce on Bitcoin, Without Trusting the Agent</title>
      <dc:creator>Ibe Arua</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:23:52 +0000</pubDate>
      <link>https://dev.to/ibearua/building-agentic-commerce-on-bitcoin-without-trusting-the-agent-315j</link>
      <guid>https://dev.to/ibearua/building-agentic-commerce-on-bitcoin-without-trusting-the-agent-315j</guid>
      <description>&lt;p&gt;Luma began with a deceptively simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can an AI agent help someone buy something with Bitcoin or an RGB asset—without ever being trusted to spend their money?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We think the answer is yes. And after building, breaking, and rebuilding the system across regtest, Signet, wallets, Lightning channels, merchants, and mobile hardware, we’re more convinced than ever that this is an architecture worth pursuing.&lt;/p&gt;

&lt;p&gt;This is what we built, what we learned, and why we’re optimistic about what comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The First Question: Can an Agent Help Without Holding the Keys?
&lt;/h2&gt;

&lt;p&gt;The first experiment was RGB402: an HTTP 402-style purchase flow for Bitcoin and RGB assets.&lt;/p&gt;

&lt;p&gt;Then came Alice, Bob, and Carol—three independent wallets running on real regtest Bitcoin and RGB Lightning nodes, with channels, invoices, inventory, human approval, and settlement that both sides could verify.&lt;/p&gt;

&lt;p&gt;Alice and Bob proved the first milestone: &lt;strong&gt;wallet-to-wallet transfers worked.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Carol changed the project.&lt;/p&gt;

&lt;p&gt;Carol ran a real merchant: her own node, products, orders, and receipts. Alice bought a coffee for 5 R402USD. Bob bought a sandwich for 8. Balances moved. Carol received the asset. Every purchase crossed a human approval boundary before exactly one payment went out.&lt;/p&gt;

&lt;p&gt;That gave us the rule Luma now stands on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prepare → reserve → human approval → execute once → settle → reconcile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can understand intent, find a merchant, inspect a product, read an invoice, and prepare a transaction. But it cannot change the recipient, amount, or asset after approval. It cannot approve its own transaction. And an uncertain network response never becomes a second payment.&lt;/p&gt;

&lt;p&gt;That is the core idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Luma is not an AI with a Bitcoin wallet bolted on. It is a system where agents reason about money without ever holding authority over it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  We Put the Node Inside the Phone
&lt;/h2&gt;

&lt;p&gt;No consumer should have to run a separate RGB Lightning node. So we moved the node into the wallet.&lt;/p&gt;

&lt;p&gt;Each installation now owns its keys, RGB state, channel state, and payment journal. Shared infrastructure can provide Bitcoin and indexer access, RGB transport, liquidity, discovery, and agent services—but it cannot sign for the user.&lt;/p&gt;

&lt;p&gt;The Android build has progressed from local regtest to public Signet, with Bitcoin Core, Electrs, RGB transport, TLS endpoints, an agent gateway, and our own LSP. Phones connect directly. No USB. No &lt;code&gt;adb reverse&lt;/code&gt;. No pretending the phone is a development machine.&lt;/p&gt;

&lt;p&gt;The division of responsibility is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The phone owns authority.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The network supplies connectivity and liquidity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The merchant publishes commerce intent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The agent helps the user decide.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The wallet enforces what can actually happen.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That last line matters most. The wallet is not just an interface. It is the enforcement boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Plenty Broke—and That Was the Point
&lt;/h2&gt;

&lt;p&gt;A research prototype that never breaks is usually not testing enough. Luma broke in useful ways, and each failure sharpened the design.&lt;/p&gt;

&lt;p&gt;We learned that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A healthy container does not mean a wallet can pay.&lt;/li&gt;
&lt;li&gt;A running node does not mean an unlocked wallet.&lt;/li&gt;
&lt;li&gt;On-chain sats are not Lightning liquidity.&lt;/li&gt;
&lt;li&gt;Owning an RGB asset does not mean it is usable in a channel.&lt;/li&gt;
&lt;li&gt;A connected peer is not a usable channel.&lt;/li&gt;
&lt;li&gt;A UI saying “Opening” is not the node saying “ready.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mobile added its own lessons. Testing JavaScript configuration is not enough; what matters is what actually made it into the APK—the network, Electrs endpoint, RGB proxy, LSP identity, and expected RGB contract. Native ABI compatibility, WDK, Bare, and the RGB Lightning addon form their own failure boundary.&lt;/p&gt;

&lt;p&gt;Recovery is the hardest problem of all.&lt;/p&gt;

&lt;p&gt;Restoring keys without channel monitors, RGB state, and journals is a dangerous partial recovery. A live Lightning/RGB wallet must be recovered as one economic state machine—not merely as a twelve-word seed.&lt;/p&gt;

&lt;p&gt;We have demonstrated an isolated recovery capsule. We have not claimed that it proves production recovery. That distinction matters, and we intend to keep making it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Luma Stands Today
&lt;/h2&gt;

&lt;p&gt;The research prototype works.&lt;/p&gt;

&lt;p&gt;It has demonstrated BTC and RGB Lightning settlement, wallet-to-wallet payments, agent-assisted purchasing, merchant products and orders, human-readable recipient discovery, human-controlled approval, L402-style paid resources, and exact-once payment with reconciliation.&lt;/p&gt;

&lt;p&gt;The mobile product is behind the prototype, but it is increasingly real. The embedded node runs on physical Android hardware and public Signet, with our own LSP path, payment addresses, merchant publication, and mobile checkout.&lt;/p&gt;

&lt;p&gt;What we have not yet earned is the word &lt;strong&gt;“production.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We still need repeatable phone-to-phone BTC and RGB settlement, merchant-side receipt verification from phones, robust channel lifecycle handling, and credible loss-and-restore tests.&lt;/p&gt;

&lt;p&gt;But the bigger question has already been answered:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Is this architecture worth continuing? Yes.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What We Should Open-Source
&lt;/h2&gt;

&lt;p&gt;Our instinct is: &lt;strong&gt;not everything, and not nothing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a non-custodial wallet, verifiability is the product. People should be able to inspect what gets signed, how payments are prepared, what requires approval, how duplicate execution is blocked, how state is persisted, how invoices and RGB assets are validated, what leaves the device, and what the server can and cannot do.&lt;/p&gt;

&lt;p&gt;Those are custody claims—not implementation details.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open first
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The Alice/Bob/Carol prototype and RGB402 experiments&lt;/li&gt;
&lt;li&gt;The reproducible regtest environment&lt;/li&gt;
&lt;li&gt;Protocol interfaces and the payment state machine&lt;/li&gt;
&lt;li&gt;Safe example configs, acceptance tests, and architecture documentation&lt;/li&gt;
&lt;li&gt;Enough of the mobile wallet engine to reproduce the custody boundary&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Keep private for now
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Production mobile UX&lt;/li&gt;
&lt;li&gt;Merchant growth and ranking&lt;/li&gt;
&lt;li&gt;Catalog normalization and discovery&lt;/li&gt;
&lt;li&gt;Agent orchestration prompts and evaluations&lt;/li&gt;
&lt;li&gt;Liquidity allocation and rebalancing heuristics&lt;/li&gt;
&lt;li&gt;Fraud, risk, routing, and abuse-prevention systems&lt;/li&gt;
&lt;li&gt;Infrastructure and monitoring&lt;/li&gt;
&lt;li&gt;Unreleased recovery techniques&lt;/li&gt;
&lt;li&gt;Partner and issuer integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The principle is straightforward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Open the mechanisms that prove user sovereignty. Protect the mechanisms we compete with.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Trade Secrets, Handled Honestly
&lt;/h2&gt;

&lt;p&gt;An LSP is not a secret. Neither are RGB channels, embedded nodes, merchant discovery, or agents buying things. Guarding those would only create false confidence.&lt;/p&gt;

&lt;p&gt;The real advantage lies in how well the pieces work together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Predicting and allocating liquidity&lt;/li&gt;
&lt;li&gt;Turning vague human intent into a bounded economic proposal&lt;/li&gt;
&lt;li&gt;Ranking merchants&lt;/li&gt;
&lt;li&gt;Normalizing Shopify and WooCommerce catalogs&lt;/li&gt;
&lt;li&gt;Optimizing routing&lt;/li&gt;
&lt;li&gt;Reconciling failures without double payment&lt;/li&gt;
&lt;li&gt;Spotting risky behavior&lt;/li&gt;
&lt;li&gt;Eventually making recovery safe for ordinary users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But there is one hard line:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Key security and payment authorization must never depend on secrecy.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They should hold even if an attacker knows exactly how the system works.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Road Ahead
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Freeze and publish the prototype
&lt;/h3&gt;

&lt;p&gt;Make Alice, Bob, Carol, and RGB402 a clean, reproducible reference implementation. Keep the evidence—and the failures. Document what was actually demonstrated, not what merely sounds good.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Finish the mobile proof
&lt;/h3&gt;

&lt;p&gt;Two fresh phones. Independent seeds and node identities. Real Signet BTC. Allocation UTXOs. Luma-provided liquidity. BTC and RGB payments in both directions. A merchant purchase with buyer approval and seller receipt. Restart a phone and repeat. Interrupt a payment on purpose and prove reconciliation never pays twice.&lt;/p&gt;

&lt;p&gt;Until then, it stays experimental.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Make liquidity invisible
&lt;/h3&gt;

&lt;p&gt;Nobody should need to understand inbound capacity or channel topology to buy a coffee. The LSP should watch payment demand and arrange liquidity around users and merchants.&lt;/p&gt;

&lt;p&gt;That is a business in itself: commerce creates payment demand, payment demand creates liquidity demand, and capital providers fill it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Turn merchants into the network
&lt;/h3&gt;

&lt;p&gt;Create a store or import a Shopify/WooCommerce catalog. Normalize products and give each one a machine-readable purchase path. Humans browse. Agents discover the same inventory programmatically.&lt;/p&gt;

&lt;p&gt;Then a user can say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Find this, keep it under $40, pay in USDT if the merchant accepts it, otherwise ask me before using BTC.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent discovers and prepares. The wallet authorizes and settles.&lt;/p&gt;

&lt;p&gt;That is the part that could matter beyond &lt;strong&gt;“another Bitcoin wallet.”&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Replace demo assets with real money
&lt;/h3&gt;

&lt;p&gt;R402USD and LUSD are demos, not stablecoins. Real USDT-style assets need an issuer-approved RGB contract, a legitimate acquisition path, and real liquidity.&lt;/p&gt;

&lt;p&gt;If issuer-backed stablecoins reach RGB and Lightning, this machinery could coordinate real dollar commerce on Bitcoin rails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Luma May Not Stay Luma
&lt;/h2&gt;

&lt;p&gt;We like the name. It is light, approachable, and has served us well as a codename.&lt;/p&gt;

&lt;p&gt;But it is crowded. A quick search turns up a Luma Bank, a Luma financial OS, a Luma POS app, and a Luma non-custodial crypto product. That creates trouble with discoverability, app stores, domains, trademarks, and customer confusion.&lt;/p&gt;

&lt;p&gt;So Luma is the codename, not a commitment.&lt;/p&gt;

&lt;p&gt;What matters is the idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Agentic commerce on Bitcoin, where agents participate in economic decisions without owning the authority to spend.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If a more distinctive, ownable name appears, we will change it before distribution—not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Actually Discovered
&lt;/h2&gt;

&lt;p&gt;We thought we were building an AI-enabled RGB wallet.&lt;/p&gt;

&lt;p&gt;Then an agentic Bitcoin wallet.&lt;/p&gt;

&lt;p&gt;Then Carol made it an agentic merchant wallet.&lt;/p&gt;

&lt;p&gt;Then mobile and the LSP widened it again.&lt;/p&gt;

&lt;p&gt;The real opportunity looks like an open Bitcoin/RGB economic layer beneath a proprietary consumer and merchant commerce network.&lt;/p&gt;

&lt;p&gt;Wallets create payment demand. Merchants create commerce demand. Agents create discovery and automation. LSPs supply connectivity. Liquidity providers supply capital. Issuers supply credible assets.&lt;/p&gt;

&lt;p&gt;And Luma—or whatever it eventually becomes—coordinates all of it without becoming the custodian of anyone’s money.&lt;/p&gt;

&lt;p&gt;That is far bigger than a hackathon entry. And there is far more left to prove.&lt;/p&gt;

&lt;p&gt;So the discipline stays the same:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don’t claim it works because the UI says it works.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Prove it at the wallet. Prove it at the node. Prove it at the merchant. Record the evidence. Then build the next layer.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>ai</category>
      <category>l402</category>
      <category>rgb</category>
    </item>
    <item>
      <title>Moving Money Is Solved. Moving Certainty Is Next.</title>
      <dc:creator>Ibe Arua</dc:creator>
      <pubDate>Sat, 04 Jul 2026 13:17:57 +0000</pubDate>
      <link>https://dev.to/ibearua/moving-money-is-solved-moving-certainty-is-next-b3p</link>
      <guid>https://dev.to/ibearua/moving-money-is-solved-moving-certainty-is-next-b3p</guid>
      <description>&lt;p&gt;NIP Solved the Transfer. NPS Should Solve the Status.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcgjukw9542gbyvls8zgp.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcgjukw9542gbyvls8zgp.webp" alt="Hyperledger image" width="750" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have probably seen this happen before.&lt;/p&gt;

&lt;p&gt;A customer sends money from one Nigerian bank to another. The debit leaves the sender’s account almost immediately. The customer expects the beneficiary to receive value just as fast. In most cases, that is exactly what happens. But when the status does not update cleanly, the customer ends up staring at a bank app, refreshing the screen, calling support, or asking the beneficiary, “have you seen it?”&lt;/p&gt;

&lt;p&gt;The money may have moved. The transaction may even be fine. The information around it just hasn’t caught up yet.&lt;/p&gt;

&lt;p&gt;That gap is not evidence that anything is broken. It is the ordinary behaviour of a payment system that has carried Nigeria through a real digital transformation, but is now running in a different era from the one its original assumptions were built for.&lt;/p&gt;

&lt;p&gt;Volumes are higher than they used to be. More institutions are connected to the rails. Fintechs, banks, agents, merchants, and public-sector platforms are all pushing traffic through the same infrastructure. And customers now expect a transfer confirmation to behave the way a chat message does — instant, visible, and certain, with no room for “still processing.”&lt;/p&gt;

&lt;p&gt;NIBSS built something remarkable. The next question is whether the information layer around a payment should evolve with the same seriousness as the money-movement layer itself.&lt;/p&gt;

&lt;p&gt;How We Got Here&lt;br&gt;
It is worth remembering how far this has come, because the distance is part of the argument.&lt;/p&gt;

&lt;p&gt;In the early 2000s, Nigerian banking was still carrying a heavy cash-and-cheque burden. A cheque deposited across two banks could sit in clearing for days. Reconciliation was a manual exercise. None of it was built for the real-time expectations that define the market today.&lt;/p&gt;

&lt;p&gt;The Central Bank pushed modernisation hard. NIBSS — incorporated in 1993, operational from 1994, owned by the licensed banks including the CBN itself — was already positioned as the shared utility for interbank settlement. In 2002, the Nigeria Automated Clearing System went live in Lagos, bringing cheque truncation and electronic clearing to a system that had been almost entirely paper-based. Around the same window, the 2004 banking consolidation reduced the industry to a smaller number of better-capitalised institutions — partly so the sector could actually carry the weight of shared digital infrastructure.&lt;/p&gt;

&lt;p&gt;Then came NIP.&lt;/p&gt;

&lt;p&gt;NIBSS Instant Payment turned interbank transfer into something Nigerians could trust without thinking about it. Account-number based, online, real-time — and, from the start, it shipped with a Transaction Status Query function, because the people who built it already understood that knowing a transfer happened matters almost as much as the transfer itself. NIP made “I’ll send it now” actually mean now. It rode mobile banking, USSD, POS, internet banking, agent networks — anywhere a Nigerian could initiate a transfer, NIP was usually underneath it.&lt;/p&gt;

&lt;p&gt;It is hard to overstate the scale this reached. Volumes ran from about 5 billion transactions in 2022 to nearly 11 billion in 2024 — and CBN’s own fintech report puts that growth at 120 percent across two years, placing Nigeria among the leading real-time payment markets in the world, not just in Africa. NIP became the sixth-largest instant payment system globally, ahead of the United States.&lt;/p&gt;

&lt;p&gt;That kind of growth eventually outpaces the system that produced it. NIP was built around an in-house messaging format suited to domestic transfers. It worked, and it still works. But the ecosystem around it now wants richer transaction data, cleaner reconciliation, easier dispute handling, and a path toward interoperability with international standards.&lt;/p&gt;

&lt;p&gt;That is what NPS — the National Payment Stack — is for. NIBSS describes it as a secure, unified platform built around ISO 20022 messaging, designed to carry richer data, support faster reconciliation, and open the door to cross-border and open-banking use cases.&lt;/p&gt;

&lt;p&gt;The centrepiece of that upgrade is the messaging standard itself. NIP was built on ISO 8583 — the standard that powers card and switch networks globally, proven and functional, but designed for leaner transaction data than what modern reconciliation, compliance, and cross-border interoperability now demand. Under NPS, a transfer instruction travels as a pacs.008 — the ISO 20022 credit transfer request — and the responding bank returns a pacs.002, the standardised payment status report. The pacs.002 carries richer, more structured information than what ISO 8583 was designed to hold — granular reason codes, processing stage detail, structured party data, and remittance information built for straight-through processing without manual interpretation. A bank’s reconciliation system can read it, act on it, and align it against international message flows without translation overhead. The same pattern applies across every transaction type on the scheme.&lt;/p&gt;

&lt;p&gt;That is the real upgrade NPS brings to status handling. Not a different delivery model, but a fundamentally more useful, more structured message when it arrives — one that speaks the same language as the payment systems Nigeria increasingly needs to interoperate with.&lt;/p&gt;

&lt;p&gt;This matters beyond the plumbing. ISO 20022 is the format the rest of the world’s serious payment infrastructure — SWIFT, SEPA, the UK’s Faster Payments — has been converging on. Moving NPS onto it puts Nigeria’s domestic rails in the same language as the systems that handle cross-border flow.&lt;/p&gt;

&lt;p&gt;So the trajectory is clear: manual clearing, to automated clearing, to instant payment, to richer standards-based infrastructure. The next step in that line isn’t just moving money faster. It’s making verified status available wherever it’s needed, without everyone having to keep asking the same place for the same answer.&lt;/p&gt;

&lt;p&gt;The Organisation Holding It Together&lt;br&gt;
NIBSS is not a bank. Most people sending money have never heard the name. But if you have moved money between two Nigerian bank accounts, NIBSS infrastructure carried it.&lt;/p&gt;

&lt;p&gt;It sits in the middle of the interbank architecture — the entity every bank connects to instead of connecting to every other bank directly. When a GTBank customer sends money to an Access Bank account, GTBank doesn’t hand funds to Access Bank. It sends an instruction through NIBSS. NIBSS validates it, routes it, and the receiving institution acts. Status then has to travel back the same way it came — through the centre — before anyone involved actually knows what happened.&lt;/p&gt;

&lt;p&gt;That return trip is the part customers never see, and it’s the part this piece is about.&lt;/p&gt;

&lt;p&gt;This isn’t an unusual design. Every serious financial system has depended on a trusted central operator — a clearing house, a settlement utility, a counterparty everyone agrees to trust instead of building a thousand separate bilateral trust relationships. NIBSS has carried that role through a genuinely difficult two decades of growth, and the NPS transition shows it isn’t standing still.&lt;/p&gt;

&lt;p&gt;But every architecture has a pressure point. The one I want to look at closely isn’t the transfer of money itself. It’s the question that comes right after: what is the true status of this transaction, right now? That is where Transaction Status Query lives — and it’s where the strain is starting to show.&lt;/p&gt;

&lt;p&gt;The Trouble With Asking&lt;br&gt;
TSQ is not new, and it is not the problem on its own. A bank sends a transfer, the status is unclear later, the bank queries NIBSS, NIBSS answers, the bank updates its record. At the level of one transaction, this works exactly as designed.&lt;/p&gt;

&lt;p&gt;The trouble shows up when you multiply that pattern across a system processing eleven billion transactions a year.&lt;/p&gt;

&lt;p&gt;A single transfer can generate several status checks from several directions — the sending bank’s reconciliation job, the receiving bank’s confirmation, the customer’s support call, a fintech’s automated dispute process, a back-office investigation, all of them asking, in their own way, the same question about the same transaction. The system isn’t only moving money anymore. It’s also carrying the weight of everyone’s demand for certainty about that money.&lt;/p&gt;

&lt;p&gt;Most of the time this is fine. The strain shows during the predictable peaks — salary weeks, the days right after a public holiday, big merchant campaigns, fintech batch reconciliation windows — when status-query traffic converges hard on the same central infrastructure that’s also busy processing the underlying transactions.&lt;/p&gt;

&lt;p&gt;This isn’t a complaint about NIBSS’s capability. It’s an observation about the shape of the architecture. When the source of truth lives in one place, every participant who needs certainty eventually has to come back to that one place — and that gets more expensive, not less, as the ecosystem grows around it.&lt;/p&gt;

&lt;p&gt;Four things follow from this. Status-query load doesn’t scale the same way transaction volume does — one transfer can spawn many checks. A temporary slowdown in the central query or notification path affects visibility everywhere at once, even though the underlying transaction record is perfectly intact. A bank’s own sense of “what happened” is usually a reconstruction — built from messages received and queries answered — which is normally correct, but the fact that reconciliation exists at all tells you institutions aren’t holding identical, simultaneous views of the truth. And dispute resolution still runs back through the centre every time — a bank can show a customer what NIBSS told it, but it doesn’t independently hold the same cryptographic proof from the start.&lt;/p&gt;

&lt;p&gt;None of this means anything is failing today. NIP works. NPS is moving the right direction. NIBSS has absorbed transaction growth that would strain most national payment systems. The point is narrower than “this is broken.” The point is: as volume keeps climbing, the status layer shouldn’t be the next thing under pressure.&lt;/p&gt;

&lt;p&gt;A Better Question Than “How Do We Ask Faster”&lt;br&gt;
A lot of good engineering effort has gone into making status delivery faster, notifications more reliable, retries smarter, disputes easier to resolve. NPS already moves in this direction — richer data, ISO 20022 structure, better reconciliation support.&lt;/p&gt;

&lt;p&gt;But there’s a question sitting underneath all of that work: why does a bank have to ask for a status it could already hold?&lt;/p&gt;

&lt;p&gt;Why doesn’t the sending bank already carry a verified copy of the transaction’s lifecycle? Why doesn’t the receiving bank have the same record, automatically? Why does a regulator reviewing a disputed transaction have to wait for everyone to send in their logs, instead of checking one already-verified source? Why does certainty have to be pulled from the centre, again and again, instead of being handed out once and carried at the edges?&lt;/p&gt;

&lt;p&gt;This is where a permissioned shared ledger earns its place in the conversation — not as blockchain hype, not as decentralisation for its own sake, not cryptocurrency in a trench coat. Just this: NIBSS stays the authority, but the records it signs and commits get replicated to the institutions entitled to see them, in a form that’s tamper-evident and locally readable. That’s the entire shift.&lt;/p&gt;

&lt;p&gt;The Ledger Every Bank Would Carry&lt;br&gt;
Hyperledger Fabric gets buried in jargon more often than it needs to be. The actual idea is straightforward: it’s a permissioned ledger framework for environments where participants are known, identity matters, and organisations need a shared record without blindly trusting each other.&lt;/p&gt;

&lt;p&gt;Become a Medium member&lt;br&gt;
Fabric uses certificates, membership service providers, peer nodes, an ordering service, channels, and endorsement policies to define exactly who can write, who can sign off, who can read, and how updates get sequenced. Applied to NIBSS and NPS, the model is not complicated: NIBSS stays the authority for transaction lifecycle events. When a payment hits a meaningful stage — received, validated, routed, acknowledged, returned, disputed, finalised — that event gets signed and committed to a shared ledger.&lt;/p&gt;

&lt;p&gt;The ordering service sequences these events into blocks and distributes them to every peer on the channel. Each participating bank runs its own peer, holding its own copy. That means a bank doesn’t need to ask NIBSS every time it wants to know where a transaction stands. Its own peer already has the verified record.&lt;/p&gt;

&lt;p&gt;The query stops being “ask the centre” and becomes “read the certified local copy.” And that local copy isn’t less authoritative for being local — its authority comes from NIBSS’s signature, the endorsement rule that required it, and the ordering process that committed it under agreed governance.&lt;/p&gt;

&lt;p&gt;NIBSS doesn’t hand over control of the truth here. It makes the truth available everywhere it’s needed.&lt;/p&gt;

&lt;p&gt;What That Actually Buys You&lt;br&gt;
Speed. A local read skips the round trip to a central API. How much faster depends on implementation and infrastructure discipline, but architecturally, removing that round trip removes pressure from the central query path, full stop.&lt;/p&gt;

&lt;p&gt;Independence from central downtime. If the central API layer is briefly unavailable, a bank doesn’t lose access to records already on its own peer. New events pause; the existing record stays queryable. For reconciliation, audit, and customer support at 2am during a maintenance window, that difference is the whole point.&lt;/p&gt;

&lt;p&gt;Reconciliation that verifies instead of reconstructs. Today, reconciliation means comparing internal logs against received messages and query responses. With a shared, signed ledger, the bank checks its record against the same committed lifecycle event NIBSS itself holds. The work shifts from “let’s figure out what happened” to “let’s confirm what was committed.”&lt;/p&gt;

&lt;p&gt;Disputes backed by something more than a phone call. When a customer insists a transfer never landed, the bank shouldn’t just be able to say “NIBSS told us it went through.” It should be able to produce a signed, timestamped, tamper-evident record proving exactly what happened and when.&lt;/p&gt;

&lt;p&gt;Regulatory visibility without the scavenger hunt. When a regulator needs to examine a disputed or high-value transaction, the evidence shouldn’t depend on assembling logs from three different institutions. It should come from one independently verifiable lifecycle history.&lt;/p&gt;

&lt;p&gt;Privacy that’s enforced, not just promised. Not every institution should see every transaction. Fabric’s channels and private data collections control exactly which organisations can see which data — access control sitting at the protocol layer, not something an application could misconfigure.&lt;/p&gt;

&lt;p&gt;Query load that doesn’t keep piling onto the centre. If banks handle their own authorised TSQ reads locally, NIBSS isn’t serving every status lookup from a central endpoint. It can spend its effort on publishing authoritative events, enforcing governance, and keeping the core infrastructure solid.&lt;/p&gt;

&lt;p&gt;This is the real difference: a system where everyone keeps asking the centre for the answer, versus a system where the centre signs the answer once and every authorised participant carries it from there.&lt;/p&gt;

&lt;p&gt;Why Fabric and Not the Blockchain People Usually Picture&lt;br&gt;
Mention blockchain in a banking context and most people think Bitcoin, Ethereum, anonymous wallets, speculative tokens, and finality you have to wait around for. None of that applies here.&lt;/p&gt;

&lt;p&gt;Public blockchains solve a different problem — how strangers who don’t know or trust each other can still agree on a shared record. They solve it through open participation and consensus built for adversarial, anonymous networks. That’s a real engineering achievement, but it’s the wrong tool for Nigerian interbank payments, because the problem here isn’t anonymity. NIBSS, the banks, the licensed fintechs — none of them are strangers. They’re regulated, onboarded, contracted, known.&lt;/p&gt;

&lt;p&gt;The actual question is: how do known institutions share a verified record without each one having to query the centre for every operational answer? Fabric was built for exactly that. Identity sits at the centre of the design — certificate authorities issue it, membership service providers enforce it, and every signature on the ledger is traceable to a specific, accountable institution. GTBank acts as GTBank. NIBSS acts as NIBSS. Nobody writes outside the rules, and nobody can fabricate or back-date a lifecycle event, because the endorsement policy won’t let an unsigned or wrongly-signed entry through.&lt;/p&gt;

&lt;p&gt;This should never be framed as blockchain replacing NIBSS. That framing is simply wrong. The right framing is NIBSS’s authority, cryptographically extended to every institution entitled to hold it.&lt;/p&gt;

&lt;p&gt;NIBSS Doesn’t Lose Authority Here. It Extends It.&lt;br&gt;
This is the question that comes up first, every time: if every bank has a copy of the ledger, what’s left of NIBSS’s authority?&lt;/p&gt;

&lt;p&gt;The honest answer is that it doesn’t shrink. It becomes more visible and more provable at every edge of the network.&lt;/p&gt;

&lt;p&gt;Right now, NIBSS is the trusted central operator, and banks work from what they receive and reconstruct from it. That trust has carried real weight and real growth. But a bank’s local record is still its own interpretation of what came through.&lt;/p&gt;

&lt;p&gt;In a shared-ledger model, NIBSS’s authority travels with the record itself. If NIBSS signs and commits a lifecycle event, any authorised participant holding that event can verify it came from NIBSS, untouched, without needing to ask NIBSS again. The record isn’t authoritative because it sits at the centre. It’s authoritative because NIBSS’s identity is cryptographically attached to it and the network’s rules confirm that attachment.&lt;/p&gt;

&lt;p&gt;Write authority can stay exactly as tight as it needs to be — endorsement policy can require NIBSS sign-off on every authoritative event, banks read what concerns them and write nothing outside the agreed rules, regulators get audit access shaped by governance policy rather than informal log requests. This isn’t decentralisation in the loose, public-blockchain sense. It’s controlled distribution of a verified truth that used to live in one place.&lt;/p&gt;

&lt;p&gt;What a Different Morning Looks Like&lt;br&gt;
Picture the first working day after a long public holiday — historically one of the heaviest days on the Nigerian payment calendar.&lt;/p&gt;

&lt;p&gt;Right now, this is when the seams show. Status responses queue. Reconciliation systems strain to match what went out against what came back. A customer calls saying their transfer hasn’t landed, and the agent’s honest answer is “let me check” — followed by an actual wait, because checking means querying the centre and hoping it isn’t also under load.&lt;/p&gt;

&lt;p&gt;With a shared ledger already in place, that morning runs differently. The bank’s operations team isn’t starting from zero — its own peer already holds the lifecycle events that concern it. The agent pulls up the transaction and says something specific: validated and routed at this time, acknowledged by the receiving institution at this time, currently sitting at this stage. Not “let me check.” An answer.&lt;/p&gt;

&lt;p&gt;Reconciliation changes shape too. Instead of treating every mismatch as a fresh investigation, the question sharpens to: does our internal record match the committed lifecycle record? If yes, close it. If no, the divergence point is visible immediately, not buried in a day of cross-checking logs.&lt;/p&gt;

&lt;p&gt;For a CBN examiner looking at a disputed high-value transaction, the same logic applies. The verified chain of events — submission, validation, routing, confirmation — sits in the ledger, each step tied to the identity that committed it. That’s not a futuristic scenario. That’s what permissioned, cryptographically verifiable infrastructure is built to give you.&lt;/p&gt;

&lt;p&gt;Being Honest About the Distance&lt;br&gt;
None of this should sound easier than it is. Getting from a working proof of concept to production-grade national payment infrastructure is serious, unglamorous work.&lt;/p&gt;

&lt;p&gt;Every participating institution would need clear onboarding terms and infrastructure standards for running a peer node — security requirements, monitoring, disaster recovery, support procedures. NIBSS would need to define precisely which lifecycle events get published from NPS and how they map onto the chaincode’s data model, aligned with the ISO 20022 message flows already in motion. Access control needs real design work — channel strategy, private data collections, retention rules, regulator visibility — none of which is automatic just because Fabric supports the pattern.&lt;/p&gt;

&lt;p&gt;Key management matters just as much. Software keys are fine for a proof of concept; production financial infrastructure needs proper certificate lifecycle management, HSM-backed signing, and clear procedures for what happens when a credential is compromised. And none of it works without genuine high availability across ordering nodes, peer nodes, certificate services, and backup infrastructure.&lt;/p&gt;

&lt;p&gt;None of these are research problems. They’re implementation, governance, and operational problems — which is a better category of problem to have, because it means the architecture can be piloted, hardened, and rolled out in stages rather than attempted all at once.&lt;/p&gt;

&lt;p&gt;A sensible rollout wouldn’t start with every institution and every transaction type. It would start narrow — a TSQ-focused ledger covering selected lifecycle events — and expand from there: dispute evidence next, then reconciliation, then regulatory audit views, then broader lifecycle traceability across NPS as confidence builds.&lt;/p&gt;

&lt;p&gt;The Bigger Picture&lt;br&gt;
Nigeria built one of Africa’s most consequential payment systems in under two decades. That didn’t happen by accident — the CBN pushed for it, NIBSS built and operated the shared rails, banks invested in connecting to them, and fintechs turned that infrastructure into products tens of millions of people now use without a second thought.&lt;/p&gt;

&lt;p&gt;The next chapter isn’t about replacing what works. It’s about strengthening it. NIBSS doesn’t have to give up authority for the ecosystem to get better visibility. Banks don’t need to become independent payment authorities to hold a verified copy of status. Fintechs don’t need to keep hammering the central TSQ path just to reconcile at scale. Regulators don’t need to depend on manually assembled logs when a cryptographically verifiable record could exist instead.&lt;/p&gt;

&lt;p&gt;The right model isn’t “remove the centre.” It’s: let the centre sign the truth once, and let every authorised participant carry that truth with them.&lt;/p&gt;

&lt;p&gt;That’s the opportunity in front of NIBSS right now. Not blockchain for blockchain’s sake. Not decentralisation as a slogan. A specific, narrow infrastructure improvement — NIBSS’s authority encoded into every authorised record, status visibility that doesn’t depend on repeated central queries, reconciliation that becomes verification instead of investigation, disputes backed by evidence instead of assurance.&lt;/p&gt;

&lt;p&gt;The money already moves fast in Nigeria. It’s time the status layer moved with the same certainty.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Using SSH to connect local project to github</title>
      <dc:creator>Ibe Arua</dc:creator>
      <pubDate>Tue, 16 Jan 2024 07:35:56 +0000</pubDate>
      <link>https://dev.to/ibearua/using-ssh-to-connect-local-project-to-github-19pe</link>
      <guid>https://dev.to/ibearua/using-ssh-to-connect-local-project-to-github-19pe</guid>
      <description>&lt;h3&gt;
  
  
  Github
&lt;/h3&gt;

&lt;p&gt;Up until now, connecting your local project to your remote github repository required only using your github using username/password, but now to sync your project with remote github repo, you would need to connect using ssh.&lt;/p&gt;

&lt;p&gt;Git allows you to manage and track changes to your source files. Git is often used in group projects, where a remote git repository such as one hosted on Github, acts as the central point for each team member to submit changes to the source code and view other team members contributions.&lt;/p&gt;

&lt;p&gt;The SSH protocol adds a secure layer when using remote git repositories through the use of git SSH keys. It’s important to have security measures in place when managing access to source code stored on a remote git repository.&lt;/p&gt;

&lt;p&gt;When you create a github repository, you are given a local url with which to connect the repo to your local machine for the purpose of syncing the project with your development machine hence allow continuous integrations and delivery. you either clone the repo to your local machine, or using https, ssh or github cli to connect and pull/push to the repo. Up until August, 2021 github GitHub is no longer accepting account passwords when authenticating Git operations. You need to add a ssh public key instead.&lt;/p&gt;

&lt;p&gt;My assumption is that you already know how to create a github repository, if you don't, it is matter of creating a &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;github account&lt;/a&gt; and locating the &lt;a href="https://github.com/new" rel="noopener noreferrer"&gt;new repository button&lt;/a&gt; then you are good to go, next will be to clone the repo to your local machine:&lt;/p&gt;

&lt;h4&gt;
  
  
  Using HTTPS to connect local github repo to remote repo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin https://github.com/username/repo-name.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Using SSH to connect local github repo to remote repo
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin git@github.com:username/repo-name.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  SSH
&lt;/h3&gt;

&lt;p&gt;SSH allows you to use SSH key to connect your local github repository to github remote repository. SSH which stands for Secure Shell, is a protocol used to open up a secure communication channel between computers.&lt;/p&gt;

&lt;h4&gt;
  
  
  SSH Key
&lt;/h4&gt;

&lt;p&gt;SSH keys are used for secure communication between your local machine and GitHub. You generate an SSH key pair, consisting of a private key (stored on your machine) and a public key (uploaded to your GitHub account).&lt;br&gt;
To generate a ssh key on your linux machine or any unix based operating system, you can use this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above command is also used on windows but you may need to enable the openSSH client and starting the service using this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start-Service ssh-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this command will create a cd ~/.ssh directory in the user home directory on your local machine, in it, you would find your private key id_rsa and public key id_rsa.pub. with the keys in your .ssh directory of your home directory, you can use the ssh-add command to add the private key to your ssh-client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-add ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ssh-add is a command-line utility that manages SSH keys by adding them to the authentication agent, which is a program that holds private keys used for public key authentication. This allows you to use your private key to authenticate without entering the passphrase every time.&lt;/p&gt;

&lt;h4&gt;
  
  
  Connect local Github Repo to remote
&lt;/h4&gt;

&lt;p&gt;Having gotten your public key, you would need to add it to your github repository, follow this &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" rel="noopener noreferrer"&gt;link&lt;/a&gt; to add the key your repo.&lt;/p&gt;

&lt;p&gt;Once the key is added, test the connection with this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -T git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything goes well, you should be good to go&lt;/p&gt;

&lt;p&gt;Happy Coding&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
