Payments Channels
채널 파트너들은 라이트닝 네트워크로 그들의 채널을 알릴 수 있으며, 다른 사람들에게 existence, capacity, fees of the channel을 알림으로써 남들이 사용하게 할 수 있다.
routing fees: 채널 파트너들에게, channel을 사용한 댓가로 주는 금액
반대로 채널을 사람들에게 private으로 안 알릴 수도 있으며,그럼에도 이 채널의 존재를 아는 사람들에 의해서 사용될 수 있다.
새로운 노드가 들어왔을 때, 이 노드는 그의 peers들에게서 gossip protocol에 의해 발생하는 공지를 수집하여, 라이트닝 네트워크 내부 지도를 작성할 수 있다. 또한 이 내부 지도를 이용하여 특정 노드한테 가는 길을 찾고, 연결할 수 있다.
Invoices(견적서)
이 Invoices는 돈을 받을 recipient에 의하여 작성되며, 이 안에는 payment hash(= unique payment idenfier)와 recipient, 금액, 추가적인 텍스트가 포함된다.
여기서 payment hash는 지불할 때 여러 채널을 통해, 이동하게 되는데 이를 원자적으로 이동하기 위한 것. 즉 지불은 전체 경로를 따라 이동하거나, 완전히 실패(부분적 성공은 없다.)하는 둘중하나이다.
왜냐하면 중간의 경로중 한명이 꺼져서 지불을 못 받는 경우가 있을 수 있기 때문이다. 그래서 중간에 끊어져서 손해보는 일이 없도록 한다.
payment hash는 bob이 랜덤으로 선택한 임의의 r값(= preimage, payment secret)을 sha256으로 해쉬한 값.
이 payment hash 값은 두 당사자 간의 channel이 없어도, 여러 payment channel을 통해 이동할 수 있도록 도와준다.
추가적인 텍스트는 유저가 이 description을 읽고 어느 invoice인지 판별할 수 있게하는 용도이다.
또한 invoice는 routing hints도 포함할 수 있는데, 이를 통해 알려지지 않은 채널을 알려줄 수도 있다. 이로 인해 더 효율적인 경로를 선택하도록 돕는다.
또한 invoice는 expiry date를 포함할 수 있다. recipient는 반드시 r값을 보유하고 있어야하는데 이는 만료 일을 설정함으로써, 이 기간이 지나면 r값을 폐기할 수 있도록 한다.
여기서 invoice는 라이트닝 네트워크 안에서 전송되는 것이 아닌 out of band 즉 QR코드나 이메일등을 통해 전송된다.
payment 전송
채널이 개설되면 channel_announcement message를 통해 주위 peer들에게 채널을 알릴 수 있다.
이를 받은 모든 peer들은 channel_announcement message에 대해 validate하며, 이 채널에 대한 트랜잭션이 비트코인 블록체인에 포함되었는 지 확인한다.
이렇게 검증한 peer는 또 이 메세지를 주위 peers에게 전송한다.
한번 왔던 message를 피하기 위하여, 이전에 보내지 않았던 peer들에게만 전송된다.
payment channel의 metadata 전송
payment channel의 short text, expity date, routing hints 같은 메타 데이터들은 과한 communication을 방지하기 위하여 하루에 단 4번만 전송하도록 설계되어 있다.
이는 channel_update message를 통해 전송된다.
다만 이렇게 channel_announcement message를 통해 받은 정보로는 충분하지 않다 왜냐하면, 여기에는 channel capacity가 들어있지만, 실질적으로 전송가능한 비트코인 양은 각 당사자의 local balance만큼이기 때문이다.
참고로 A->B->C를 통해 payment를 하려면 A는 B와 C가 연결한 채널에서 B가 가지고 있는 balance를 알아야 한다. 하지만 channel capacity는 전체 balance만을 담고 있는데 이를 어떻게 알까? 이는 각 노드에게 물어봐서 확인한다.
채널의 잔액 정보와 정확한 네트워크 토폴로지를 공유하지 않은 이유
1.개인정보 보호: 유저를 보호하려면 채널에서 발생하는 transaction에 대한 정보를 공개할 수 없다.
2.지불양의 확장성 확보: 정확한 잔액 정보와 토폴로지를 모든 노드가 공유하는 것은 확장성을 떨어뜨린다.
3.라이트닝 네트워크의 dynamic(동적성): 라이트닝 네트워크는 다이나믹해서 계속 변한다(접속해 있는 노드는 맘대로 들어왔다 나갔다하며, balance는 변하기에 모든 정보가 communicate되어도 아주 잠깐 동안만 valid하기에 정확한 정보를 공유하는 것은 의미가 없다)
'블록체인' 카테고리의 다른 글
[블록체인] 라이트닝 네트워크와 비트코인 비교 (1) | 2023.12.17 |
---|---|
[블록체인] 라이트닝 네트워크-pathfinding과 onion routing (0) | 2023.12.17 |
[블록체인] 라이트닝네트워크 -cheating 방지 (1) | 2023.12.17 |
[블록체인] 라이트닝 네트워크란? (0) | 2023.12.17 |
[블록체인] 비트코인 메커니즘-난도조절, coinbase트랜잭션,hard fork, soft fork (0) | 2023.12.17 |