블록체인

[블록체인] 라이트닝네트워크 -cheating 방지

윤밥밥 2023. 12. 17. 15:45

이전 상태로의 cheating에 대하여

비트코인은 검열이 없기에 누구도 이전 트랜잭션을 publishing하는 것을 막을 수 없다.
이러한 치팅을 막으려면 commitment transaction을 이용해야 한다.
막는 방법은 상대방이 치팅을 하려한다면, 이에 대한 고발을 할 기회를 주는 것
이렇게 치팅을 고발하게 된 피해본 사람은 채널의 모든 balance를 가져오게 된다.

참고로 commitment transaction이란 두 채널 당사자가 각자 보유하고 있는 balance에 대해, 아직 블록체인에 올리지 않은 transaction을 의미한다.

그럼 어떻게 치팅을 막아낼까?

commitment transaction은 각 파트너에게 지급되는 timelock delay와 revocation secret라는 두 개의 outputs을 가지고 있다.

  • timelock은 상대방이 기만하여 자신의 예전 commitment transaction을 블록에 포함시켜도 당장 사용할 수 없게 막는다.
  • revocation secret은 각 당사자가 timelock을 우회하여 바로 payement를 사용할 수있도록 허락한다. 즉 상대방이 이전의 commitment transaction을 블록에 포함시켰을 때, 이 output을 이용하여 돈을 바로 가져 올 수 있다. 이 output을 내가 갖고 있는 두 개의 revocation secret을 통해 unlocking한다.
    각 새로운 commitment transaction마다 두 당사자는 서로에게 자신의 revocation secret을 제공하여, 한 쪽이 이전 transaction으로 블록체인에 포함하려한다면, 내 리보케이션 시크릿과, 받은 상대방 리보케이션 시크릿으로 철회 가능하며 바로 돈을 가져온다.
    즉 매 commitment transaction마다 두 개의 revocation secret이 생성되며 각 당사자에게 하나씩 주어진다. 이 반쪽으로는 아무것도 할 수 없고, 만약 다음 commitment transaction이 발생하지 않았는데, 이 반쪽을 상대에게 건네게 되면, 상대방은 그걸 이용해 transaction을 revoke 시킬 수 있다. 즉 최신 transaction임에도 불구하고 블록에 실린 transaction이 기만으로 간주되어 돈이 두 열쇠를 가진 쪽으로 모두 가게 된다.

즉 새로운 commitment transaction은 상대방이 내게 revocation secret을 준 상태에서만 sign해야한다.

commitment tranaction에서 timelock은 2016까지만 가능하다(대략 2주)

채널이 열려있는 한 모든 commitment transaction에 대한 revocation secret을 가지고 있어야 한다. (필요할 수도 있기에)