라이트닝 네트워크, 벌써 새로운 구조변경 논의 시작
이 기사를 공유합니다
Alyssa Hertig
Alyssa Hertig 2018년 6월4일 16:29
gettyimages


 

비트코인의 라이트닝 네트워크가 곧 블록체인을 통해 거래를 시작할 것으로 보이는 가운데 개발자들은 벌써 라이트닝 기술의 구조를 근본적으로 변경하려 하고 있다.

라이트닝은 그동안 비트코인 블록체인의 용량을 크게 증가시키는 방안으로 주목을 받았다. 그런데 이렇게 되면 사용자들은 라이트닝 네트워크를 사용할 때마다 상당량의 데이터를 저장해야 하므로 결국 비트코인 네트워크를 실행하고 사용하기가 버거워진다. 라이트닝 랩의 공동설립자인 '라올루' 오순토쿤과 블록스트림의 크리스천 데커, 그리고 러스티 러셀을 비롯한 몇몇 라이트닝 네트워크 개발자들이 블록체인 밖에서(off-chain) 거래를 처리하는 "더 간단한" 방안을 새로 제안한 이유도 여기에 있다. 이들이 제안한 기술의 이름은 엘투(eltoo)다.

엘투는 사용자들이 저장해야 하는 데이터의 양을 줄여줄 뿐만 아니라 사용자의 암호화폐를 안전하게 보관하는 데도 유용하다.

예를 들면 라이트닝 네트워크에서 저장해야 하는 많은 양의 데이터가 또 다른 문제를 일으킬 수 있는데, 사용자가 실수로 예전 데이터를 전체 노드에 전파(broadcast)했다가 돈을 잃어버리게 될 수도 있다. 그래서 이런 데이터는 "유독한 정보(toxic information)"라고 불려왔다.

반면 엘투는 블록체인 밖에서 처리한 거래 가운데 가장 최근 데이터만 저장함으로써 잘 알려진 "정보 비대칭" 문제를 해결한다. "정보 비대칭" 문제란 만일 누군가 라이트닝 앱을 실행하고 있는 스마트폰과 같은 기기에 어떤 문제가 생겼을 경우 데이터의 전체 이력에 접근하지 못하게 될 수 있다는 문제다.

"엘투를 이용하면 자금을 잃을 위험을 줄일 수 있다. 유독한 정보를 제거하기 때문이다." 크리스천 데커의 말이다. 데커는 또 제안에 붙인 엘투라는 이름은 그저 "L2"를 소리 나는대로 표기한 것에 지나지 않는다고 덧붙였다. 여기서 "L2"는 두 번째 레이어 혹은 단계(layer-two)를 의미하며 많은 사람이 라이트닝기술과 같이 거래를 블록체인상에서가 아니라 블록체인 밖에서 처리하는 기술을 다른 단계에서 처리한다는 뜻으로 이렇게 부른다.

데커는 개인적으로 이 문제를 직접 겪어봤기 때문에 관심이 더 많다.
"실제로 내게 일어났던 일이기도 하다. 오래된 라이트닝 노드가 랩톱 컴퓨터에 있었다. 랩톱을 복원하고 나서는 내 노드가 최신 상태가 아니라는 것을 알아차리지 못했다. 노드에 연결된 상대방은 내 노드의 상태가 오래되었다는 것을 알고는 곧 연결을 끊어버렸다! 내가 거래하는 암호화폐를 훔칠 수 있다는 것을 알았기 때문이다. 실제로 그 사람은 그렇게 했다."

취소에 대한 문제


개발자들은 사용자들이 불필요한 데이터로 블록체인을 포화시키지 않으면서 비트코인을 이용하여 가능한 한 많은 거래를 수행할 수 있는 방법을 만들어 내기 위해 오랫동안 노력해 왔다. 실제로 대부분 확장성 논쟁의 주제도 바로 이것이었다.

이 목표를 달성하려고 했던 최초의 시도는 어떤 오프체인 거래가 가장 최근의 것인지 추적하기 위해 소위 "일련번호"를 매겨 오프체인 트랜잭션 처리 용량을 실험했다. 비트코인 초창기 때의 일이다.

아이디어는 간단했다. 만일 앨리스가 10달러를 가지고 있고 1달러를 밥에게 보내는 거래를 진행하면, 앨리스의 잔액은 9달러로 떨어진다. 이 거래에는 일련번호(1)를 붙인다. 이어 나중에 앨리스가 밥에게 4달러를 보내면 잔액은 5달러가 되고, 이제는 이 거래가 가장 최근의 것이 되므로, 여기에도 일련번호(2)를 붙인다.

하지만 데커는 이 방법이 제대로 작동하지 않았다고 말한다. 채굴자가 예전 거래를 최근의 거래로 바꾸어 일련번호를 매기게 강제할 유인이 부족했기 때문이다.

채굴자는 (앨리스가 또다른 거래를 수행하여 잔액이 5달러가 되었다고 하더라도) 그냥 앨리스의 잔액이 9달러로 떨어진 거래 내용을 전파할 수도 있다. 채굴자가 왜 새로운 거래를 기록하고 싶지 않을지 이유는 명확하지 않지만, 어쨌든 이를 강제할 수 없다는 것은 채굴자가 일련번호를 원칙대로 매기지 않아도 처벌할 수 없다는 뜻이다.

오래된 거래 내용을 취소하고 새로 업데이트하는 것은 그래서 중요하다. 만일 취소가 되지 않는다면 밥은 두 번째 거래를 전달받지 못할 수도 있고, 앨리스는 돈을 들고 달아나버릴 수도 있다.

"강제성의 부재" 문제는 2015년까지 풀리지 않았다.

그리고 이 문제를 지금까지 그나마 가장 잘 풀어낸 해결책이자 기술이 바로 라이트닝 네트워크다. 라이트닝 네트워크에서 쓰이는 이른바 "L2 처벌 모델"은 라이트닝 지갑이나 노드가 모든 중단 단계의 거래 내역을 저장해뒀다가 누군가 이제는 유효하지 않은 예전 상태를 전체 노드에 전파하려고 하면 이를 감지해 속임수를 쓰려 했던 사용자를 처벌하는 모델이다. "L2 처벌 모델"이 작동하면 오래된 거래 내역을 효과적으로 취소하고 새 거래로 대체할 수 있게 된다.

엘투와 L2


하지만 3년이 지난 지금, 연구자들은 오래된 거래를 취소하고 새 거래로 대체하는 데 일련번호를 붙이는 방법을 다시 살펴보고 있다.

일련번호를 강제로 매기게 하는 메커니즘이 없던 오래전 비트코인 코드와 달리 엘투에는 각 거래와 노드 상태를 기록하는 절차를 거치도록 해두었다. 예를 들어 앨리스가 밥에게 돈을 보낼 때도 보내는 쪽과 받는 쪽의 거래가 각각 기록되는데, 거래 당사자가 각각의 거래를 저장하면 이것이 이전의 거래 내역을 완전히 대체하는 식이다.

엘투를 소개하는 블로그는 그 결과 "마지막으로 이뤄진 거래만이 블록체인에 기록으로 남는다."라고 설명한다.

라이트닝의 확장성이 증가한다는 점은 이 시스템의 부수적인 이점이다. 엘투를 사용하면 각 라이트닝 노드가 모든 중간 상태를 저장할 필요가 없어지고, 가장 최근 버전과 해당 거래에 대한 약간의 정보, 즉 거래와 관련된 해시 타임-락 계약(HTLC, hash time-locked contract)과 수수료, 그리고 거래가 완료된 뒤 남긴 확인 기록 정도만 남기면 된다.

lightning, stack

엘투가 이른바 "승자독식" 모델을 기반으로 만들어지지 않았다는 점은 어쩌면 이 제안에서 가장 유용한 부분일지도 모른다. 엘투와 기존의 "L2 처벌 모델"은 나란히 쓰일 수 있기 때문이다.

데커는 비트코인 개발자들이 메일을 통해 주고받은 의견을 보면 거래가 완료될 때까지 기다리는 시간이 늘어나는 등 몇 가지 문제가 지적되기도 했다며 코인데스크에 이렇게 말했다.

"엘투는 다른 의미에서 장단점이 뚜렷하다. 모든 면에서 엘투가 낫다고 말하기는 어렵다."

하지만 전반적으로 데커는 엘투와 엘투가 가져올 단순함에 대한 기대감으로 상당히 들떠 있었다.
어느 쪽이 더 나은지는 알 수 없지만 나는 엘투가 더 좋은 선택이라고 생각하고 싶다. 엘투는 설명하기 쉽고 나중에 확장하기도 쉽다고 생각한다.

코드라는 장애물


개발자들이 여전히 이 제안의 장점에 관해서만 토론하고 있는 것은 아니다. 특히 "시그해시 노인풋(sighash_noinput)"이라는 함수에서 비롯되는 문제를 해결하지 못하면 기술을 적용하기는 어렵다.

시그해시 노인풋 함수는 엘투를 (최소한 효율적인 형태로) 지원하기 위해 비트코인의 코드베이스에 꼭 추가되어야 하는 기능으로 사람들이 오랫동안 이 기능이 구현되기를 고대해왔다.

먼저 기초적인 시그해시(sighash) 함수가 무엇인지부터 알아보자. 거래가 일어나면 데이터를 다른 사람에게 전송하는데, 시그해시 함수는 데이터 가운데 어떤 부분을 확인하고 서명해야 하는지 지정해준다. (계약서에 특히 중요한 사항에 밑줄을 그어놓고 서명란에는 포스트잇 같은 표식을 붙여놓는 기능이라고 생각해도 된다) 사용자에겐 몇 가지 선택지가 있는데, 예를 들어 기본 설정값인 sighash_all을 선택하면 거래에 관한 모든 부분에 서명해야 한다는 뜻으로, 이는 거래를 처리하는 과정 중 어느 부분도 변경되어서는 안 된다는 뜻이다.

엘투에도 포함된 sighash_noinput 함수는 거래에 포함된 "입력(input)" 데이터에 서명이 필요 없다는 명령어가 된다. 그 결과 입력 데이터는 거래가 생성된 시점부터 그 거래가 블록체인에 기록되기 전까지는 변경할 수 있다. 엘투의 핵심 개념은 최초와 최후에 일어난 거래 사이의 모든 상태를 삭제하고 새로 쓰는 것으로, 시작할 때와 끝날 때 입력하는 데이터도 달라질 수밖에 없다. 그래서 바로 sighash_noinput 함수가 엘투에 정확히 필요한 기능인 셈이다.

sighash_noinput 함수를 포함한 제안이 비트코인 코드베이스에 포함될 것으로 보는지 묻자 데커는 웃으며 "세그윗(SegWit) 이후로는 어떤 것도 함부로 예측하지 않기로 했다"고 말했다.

세그윗(Segregated Witness)은 적극적인 비트코인 개발자들로부터 널리 지지를 받았지만, 정작 커뮤니티 안에서는 논쟁이 끊이지 않은 가운데 1년이나 계속됐던 사실을 언급한 것이다. 지난해 8월 세그윗은 마침내 비트코인 코드에 포함됐다. 처음 제안된 지 2년이 더 지난 뒤였다.

아직 초기이긴 하지만 sighash_noinput 함수는 상대적으로 비트코인의 코드베이스에 추가하기 쉽다고 데커는 말한다.

또한, 이번 제안이 실현되면 여러 개발자에게 긍정적인 영향을 미칠 만한 요인이 꽤 많다는 점도 잘 알려졌다고 데커는 말했다. 이런 장점들을 기반으로 코드 변경을 지지하는 사람들은 자신의 트위터 프로필에 코드 변경을 지지한다는 문구를 추가하기 시작했다. 앞서 확장성 논쟁이 한창일 때 세그윗2x에 반대했던 사람들이 #No2X라는 해시태그를 달았던 데서 착안한 움직임으로 보인다.

데커는 희망을 담아 다음과 같이 결론 내렸다.
sighash_noinput을 지지하는 이들이 매일같이 새로 등장해 힘을 보태고 있다.

번역: 뉴스페퍼민트
· This story originally appeared on CoinDesk, the global leader in blockchain news and publisher of the Bitcoin Price Index. view BPI.
· Translated by NewsPeppermint.

제보, 보도자료는 contact@coindeskkorea.com



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.