clink req clogging

This commit is contained in:
shocknet-justin 2025-09-09 17:33:01 -04:00
parent 516443ed9e
commit 1cbeb951bb
3 changed files with 49 additions and 3 deletions

View file

@ -49,6 +49,12 @@ export default (serverMethods: Types.ServerMethods, mainHandler: Main, nostrSett
}
if (event.kind === 21001) {
const offerReq = j as NofferData
log("🎯 [NOSTR EVENT] Received offer request (kind 21001)", {
fromPub: event.pub,
appId: event.appId,
eventId: event.id,
offer: offerReq.offer
})
mainHandler.offerManager.handleNip69Noffer(offerReq, event)
return
} else if (event.kind === 21002) {

View file

@ -39,7 +39,7 @@ export class OfferManager {
storage: Storage
lnd: LND
liquidityManager: LiquidityManager
logger = getLogger({ component: 'DebitManager' })
logger = getLogger({ component: 'OfferManager' })
constructor(storage: Storage, settings: MainSettings, lnd: LND, applicationManager: ApplicationManager, productManager: ProductManager, liquidityManager: LiquidityManager) {
this.storage = storage
this.settings = settings
@ -152,15 +152,46 @@ export class OfferManager {
}
async handleNip69Noffer(offerReq: NofferData, event: NostrEvent) {
this.logger("📥 [OFFER REQUEST] Received offer request", {
fromPub: event.pub,
appId: event.appId,
eventId: event.id,
offer: offerReq.offer,
amount: offerReq.amount_sats,
payerData: offerReq.payer_data
})
const offerInvoice = await this.getNofferInvoice(offerReq, event.appId)
if (!offerInvoice.success) {
const code = offerInvoice.code
this.logger("❌ [OFFER REJECTED] Offer request failed", {
fromPub: event.pub,
eventId: event.id,
code,
error: codeToMessage(code),
max: offerInvoice.max
})
const e = newNofferResponse(JSON.stringify({ code, error: codeToMessage(code), range: { min: 10, max: offerInvoice.max } }), event)
this.nostrSend({ type: 'app', appId: event.appId }, { type: 'event', event: e, encrypt: { toPub: event.pub } })
return
}
this.logger("✅ [OFFER SUCCESS] Generated invoice for offer request", {
fromPub: event.pub,
eventId: event.id,
invoice: offerInvoice.invoice.substring(0, 50) + "...",
offer: offerReq.offer
})
const e = newNofferResponse(JSON.stringify({ bolt11: offerInvoice.invoice }), event)
this.nostrSend({ type: 'app', appId: event.appId }, { type: 'event', event: e, encrypt: { toPub: event.pub } })
this.logger("📤 [OFFER RESPONSE] Sent offer response", {
toPub: event.pub,
eventId: event.id,
responseEventId: "generated"
})
return
}
@ -200,7 +231,7 @@ export class OfferManager {
}
const { passed, validated } = this.ValidateExpectedData(userOffer, offerReq.payer_data)
if (!passed) {
console.log("Invalid expected data", validated)
this.logger("Invalid expected data", validated || {})
return { success: false, code: 1, max: remote }
}
const res = await this.applicationManager.AddAppUserInvoice(appId, {

View file

@ -188,11 +188,20 @@ export default class Handler {
relay.close()
this.Connect()
})
const appIds = Object.keys(this.apps)
log("🔍 [NOSTR SUBSCRIPTION] Setting up subscription", {
since: Math.ceil(Date.now() / 1000),
kinds: supportedKinds,
appIds: appIds,
listeningForPubkeys: appIds
})
const sub = relay.subscribe([
{
since: Math.ceil(Date.now() / 1000),
kinds: supportedKinds,
'#p': Object.keys(this.apps),
'#p': appIds,
}
], {
oneose: () => {