# BTC HTLC Cross-Chain PoC
## Metadata
**Status**:: #x
**Zettel**:: #zettel/fleeting
**Created**:: [[2024-03-18]]
**Parent**:: [[Fiber Cross-Chain Protocol Design]]
**Topic**:: [[♯ CKB Fiber]]
## Objective
角色: Bob, Charlie, Ingrid
目标: Charlie 通过 Ingrid 向 Bob 收款
注意在两边都是 Bitcoin Payment Network 的情况下,“Charlie 通过 Ingrid 向 Bob 收款” 和 “Charlie 通过 Ingrid 和 Bob 付款” 对于 Ingrid 来说没有区别,只是方向相反。
## User Story
1. Charlie 生成 Invoice 1
2. 通过 Ingrid 的 REST API 提交 Invoice 1 生成代理收款的 Invoice 2
3. Bob 向 Invoice 2 付款
4. 检查最终完成了 Bob -> Ingrid -> Charlie 的支付
## Solution
基于 lnd 实现 Ingrid 的功能。测试使用 [Polar](https://lightningpolar.com/)。Bob 和 Charlie 使用官方的 lnd,Ingrid 使用修改过的 lnd。
[[Setup Lnd Development Environment]]
Ingrid 需要实现的功能:
1. 新增 REST API 生成代理收款的 Invoice。需要绕过 preimage 的检查,因为 Ingrid 在创建 Invoice 的时候并不知道 preimage。
2. 新增收款的处理逻辑,如果收款方是自己并且有关联的 Invoice,需要通过向关联的 Invoice 完成支付获得 preimage 。