If we are a hop hint, use alternate form of estimateRouteFee (#1854)
				
					
				
			* untested draft * handle empty routes
This commit is contained in:
		
							parent
							
								
									efdcbef733
								
							
						
					
					
						commit
						074f0c0634
					
				| @ -1,7 +1,7 @@ | ||||
| import { cachedFetcher } from '@/lib/fetch' | ||||
| import { toPositiveNumber } from '@/lib/format' | ||||
| import { authenticatedLndGrpc } from '@/lib/lnd' | ||||
| import { getIdentity, getHeight, getWalletInfo, getNode, getPayment } from 'ln-service' | ||||
| import { getIdentity, getHeight, getWalletInfo, getNode, getPayment, parsePaymentRequest } from 'ln-service' | ||||
| import { datePivot } from '@/lib/time' | ||||
| import { LND_PATHFINDING_TIMEOUT_MS } from '@/lib/constants' | ||||
| 
 | ||||
| @ -23,11 +23,34 @@ getWalletInfo({ lnd }, (err, result) => { | ||||
| }) | ||||
| 
 | ||||
| export async function estimateRouteFee ({ lnd, destination, tokens, mtokens, request, timeout }) { | ||||
|   // if the payment request includes us as route hint, we needd to use the destination and amount
 | ||||
|   // otherwise, this will fail with a self-payment error
 | ||||
|   if (request) { | ||||
|     const inv = parsePaymentRequest({ request }) | ||||
|     const ourPubkey = await getOurPubkey({ lnd }) | ||||
|     if (Array.isArray(inv.routes)) { | ||||
|       for (const route of inv.routes) { | ||||
|         if (Array.isArray(route)) { | ||||
|           for (const hop of route) { | ||||
|             if (hop.public_key === ourPubkey) { | ||||
|               console.log('estimateRouteFee ignoring self-payment route') | ||||
|               request = false | ||||
|               break | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   return await new Promise((resolve, reject) => { | ||||
|     const params = {} | ||||
| 
 | ||||
|     if (request) { | ||||
|       console.log('estimateRouteFee using payment request') | ||||
|       params.payment_request = request | ||||
|     } else { | ||||
|       console.log('estimateRouteFee using destination and amount') | ||||
|       params.dest = Buffer.from(destination, 'hex') | ||||
|       params.amt_sat = tokens ? toPositiveNumber(tokens) : toPositiveNumber(BigInt(mtokens) / BigInt(1e3)) | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user