Managed → Soberano (0% fee, full custody)
आपने ManagedProvider से शुरुआत की क्योंकि यह सबसे तेज़ तरीका है। जब आप full custody और 0% fee के लिए तैयार हों, तो migration सिर्फ एक line का काम है।
अपना Lightning provider सेट करें
एक soberano provider चुनें। Blink मुफ़्त है, कोई KYC नहीं, तुरंत setup। # Blink: account बनाएं → API Keys → key + wallet ID कॉपी करें
BLINK_API_KEY = blink_xxxxxxxxxxxxxxxxxxxxxxxx
BLINK_WALLET_ID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Provider बदलें — एक line
// Before
import { ManagedProvider } from 'l402-kit' ;
const lightning = ManagedProvider . fromAddress ( 'you@yourdomain.com' );
// After
import { BlinkProvider } from 'l402-kit' ;
const lightning = new BlinkProvider (
process . env . BLINK_API_KEY ! ,
process . env . BLINK_WALLET_ID ! ,
);
# Before
from l402kit import ManagedProvider
lightning = ManagedProvider.from_address( "you@yourdomain.com" )
# After
from l402kit.providers.blink import BlinkProvider
lightning = BlinkProvider(
api_key = os.environ[ "BLINK_API_KEY" ],
wallet_id = os.environ[ "BLINK_WALLET_ID" ],
)
बाकी सब कुछ — middleware setup, token verification, endpoint code — बिल्कुल वैसा ही रहता है।
Deploy करें
Managed provider द्वारा जारी किए गए Tokens migration के बाद काम करते रहते हैं । Verification पूरी तरह crypto पर आधारित है (SHA256(preimage) == paymentHash) — इसका कोई dependency नहीं है कि किस provider ने invoice बनाया। कोई migration window नहीं, कोई downtime नहीं, कोई database update नहीं।
ManagedProvider के तहत जारी किए गए already-paid tokens, providers बदलने के बाद भी valid रहते हैं। macaroon में केवल एक hash और एक expiry होती है — कोई provider-specific data नहीं।
Soberano providers के बीच बदलाव करें
Same pattern — provider instance बदलें, बाकी कुछ नहीं बदलता।
// Blink → LNbits
import { LNbitsProvider } from 'l402-kit' ;
const lightning = new LNbitsProvider (
process . env . LNBITS_KEY ! ,
process . env . LNBITS_URL ?? 'https://legend.lnbits.com' ,
);
// Blink → OpenNode
import { OpenNodeProvider } from 'l402-kit' ;
const lightning = new OpenNodeProvider ( process . env . OPENNODE_KEY ! , false );
v1.x → v1.8 (current)
कोई breaking changes नहीं। SDK additive है — नए providers, नए agent utilities, नए replay adapters। इससे upgrade करें:
npm install l402-kit@latest
pip install --upgrade l402kit
cargo update l402kit
go get github.com/shinydapps/l402-kit/go@latest
यदि आपने कोई specific version pin की है, तो changelog देखें कि क्या नया है।
Framework migration
Express → Fastify
// Express
app . get ( '/api' , l402 ({ priceSats: 10 , lightning }), handler );
// Fastify
import { l402Fastify } from 'l402-kit/fastify' ;
fastify . get ( '/api' , {
preHandler: l402Fastify ({ priceSats: 10 , lightning }),
}, handler );
Express → Hono (Cloudflare Workers)
import { Hono } from 'hono' ;
import { l402Hono } from 'l402-kit/hono' ;
const app = new Hono ();
app . use ( '/api/*' , l402Hono ({ priceSats: 10 , lightning }));
app . get ( '/api/data' , ( c ) => c . json ({ data: 'paid' }));
Flask → FastAPI
# Flask
from l402kit.flask import l402_required
@app.route ( '/api' )
@l402_required ( price_sats = 10 , lightning = provider)
def handler ():
return jsonify({ 'data' : 'paid' })
# FastAPI
from l402kit import l402_required
@app.get ( '/api' )
@l402_required ( price_sats = 10 , lightning = provider)
async def handler ():
return { 'data' : 'paid' }
Replay store migration
In-memory → Supabase
Environment variables सेट करें — middleware खुद ही detect करके switch कर लेता है:
SUPABASE_URL = https://xxx.supabase.co
SUPABASE_ANON_KEY = your_anon_key
मौजूदा in-flight tokens काम करते रहते हैं। Supabase store उस क्षण से recording शुरू करता है जब वह active होता है — migrate करने के लिए कोई historical data नहीं है।
In-memory → Redis
import { Redis } from 'ioredis' ;
import { RedisReplayAdapter } from 'l402-kit' ;
const redis = new Redis ( process . env . REDIS_URL ! );
app . get ( '/api' , l402 ({
priceSats: 10 ,
lightning ,
replayAdapter: new RedisReplayAdapter ( redis ),
}), handler );
Providers सभी provider options और setup
Production Guide Deployment checklist