Recientemente recibí una factura BOLT11 de una tienda. Por ejemplo este:
LNBC13934430N1PWJUJEZPP5K7FLC2M5CLHTWMTF3HZDN7VVRCA4RNFAFA89F2D6KGYWW4JCSDAQDZ62PSKJEPQW3HJQ4RGV5SYC6T8DP6XU6TWVUSYXMMWVEJHYETWVDJJQ2Z0WFJX2U3QF9ZR5GZ5F3PNZWFD25UY54Z39YXQZURCQP2RZJQG8ZM9WXGVHZPMUQEWY9J9KDQNRVLZHPCWM6S8CVLC2CKRDNELE42Z9U5VQQY3SQQYQQQQL8QQQQPJQQ9Q6KM84F7KTW6UV574UR2LFNKZLM7VNK8NJRZV20JD8SAW6FZ3TQGSZE6YUT0X2UXGDGYJZGTXEFSQSSEVTKFF97P3TER5K23ZPHDDXHQQ95UT4N
Afortunadamente, mi nodo pudo encontrar una ruta al destino, pero ¿no lo haría? ¿Cómo podría averiguar nodeid
para abrir y financiar un canal de pago directo con la tienda? No dijeron nada sobre su ID de nodo en su sitio web.
Las facturas Lightning están firmadas por el nodo que emite la factura para verificar la firma, necesitamos saber la identificación del nodo. Por lo tanto, está incluido en la factura. Los nodos Lightning proporcionan una API para decodificar facturas.
En c-lightning puedes hacer (¡lnd abajo!)
lightning-cli decodepay LNBC13934430N1PWJUJEZPP5K7FLC2M5CLHTWMTF3HZDN7VVRCA4RNFAFA89F2D6KGYWW4JCSDAQDZ62PSKJEPQW3HJQ4RGV5SYC6T8DP6XU6TWVUSYXMMWVEJHYETWVDJJQ2Z0WFJX2U3QF9ZR5GZ5F3PNZWFD25UY54Z39YXQZURCQP2RZJQG8ZM9WXGVHZPMUQEWY9J9KDQNRVLZHPCWM6S8CVLC2CKRDNELE42Z9U5VQQY3SQQYQQQQL8QQQQPJQQ9Q6KM84F7KTW6UV574UR2LFNKZLM7VNK8NJRZV20JD8SAW6FZ3TQGSZE6YUT0X2UXGDGYJZGTXEFSQSSEVTKFF97P3TER5K23ZPHDDXHQQ95UT4N
{
"currency": "bc",
"created_at": 1563314978,
"expiry": 899,
"payee": "024a8228d764091fce2ed67e1a7404f83e38ea3c7cb42030a2789e73cf3b341365",
"msatoshi": 1393443000,
"amount_msat": "1393443000msat",
"description": "Paid to The Lightning Conference (Order ID: TLC19-U8JTQ)",
"min_final_cltv_expiry": 10,
"routes": [
[
{
"pubkey": "020e2d95c6432e20ef80cb885916cd04c6cf8ae1c3b7a81f0cfe158b0db3cff355",
"short_channel_id": "572579x582x1",
"fee_base_msat": 999,
"fee_proportional_millionths": 200,
"cltv_expiry_delta": 40
}
]
],
"payment_hash": "b793fc2b74c7eeb76d698dc4d9f98c1e3b51cd3d4f4e54a9bab208e75658837a",
"signature": "3045022100d5b67aa7d65bb5c653d5e0d5f4cec2fefcc9d8f390c4c53e4d3c3aed245158110220016744e2de6570c86a09212166ca6008432c5d9292f8315e474b2a220ddad35c"
}
En particular, encontramos la entrada que revela el nodo de la tienda:
"payee": "024a8228d764091fce2ed67e1a7404f83e38ea3c7cb42030a2789e73cf3b341365"
Podemos consultar la tienda de chismes para obtener más información sobre el nodo con el siguiente comando:
lightning-cli listnodes | grep 024a8228d764091fce2ed67e1a7404f83e38ea3c7cb42030a2789e73cf3b341365 -B 1 -C 13
{
"nodeid": "024a8228d764091fce2ed67e1a7404f83e38ea3c7cb42030a2789e73cf3b341365",
"alias": "www.fulmo.org",
"color": "f2f3f4",
"last_timestamp": 1561973177,
"globalfeatures": "",
"global_features": "",
"addresses": [
{
"type": "ipv4",
"address": "95.211.207.81",
"port": 9735
}
]
},
Esto nos brinda toda la información que necesitamos para interactuar con la tienda y financiar un canal. (En caso de que el nodo fuera privado, podríamos usar las routes
sugerencias de la factura decodificada para conectarnos a un nodo de salida público).
usuarios de lnd
Si está usando, lnd
puede usar el comando DecodePayReq
y, en lugar de invocar listnodes
para obtener la información de la tienda de chismes, puede invocarGetNetworkInfo
marca h
payee
campo en una factura BOLT 11 es opcional. Si se omite, la clave pública del nodo de firma se puede recuperar a partir de la firma y la identificación de recuperación. No estoy seguro de si las implementaciones completarán automáticamente elpayee
campo en este caso al usardecodepay
/DecodePayReq
.René Pickhardt