비트코인 확장 솔루션(Bitvm)
비트코인과 zk-SNARK을 좋아하시는 분이라면 흥미롭게 보실 수 있는 내용을 나눠보고 싶습니다.
비트코인은 기본적으로 전송 기능 위주의 제한된 동작만을 지원하며, Bitcoin Script를 활용하더라도 다중 서명 검증이나 시간 기반 락처럼 단순한 로직만 구현 가능하고 복잡한 프로그램은 작성하기 어렵습니다. 게다가 복잡한 로직일수록 더 많은 데이터를 차지하고, 그만큼 높은 수수료가 발생하죠. 그래서 비트코인 확장성 솔루션은 대부분의 연산을 오프체인에서 수행하고, 그 결과만 온체인에 커밋하는 방식을 택합니다.
최근에 주목받는 BitVM은 이 문제를 해결하려는 시도입니다. 일반적인 프로그램을 비트코인에서 검증 가능한 형태로 변환해서, 검증까지 가능하게 만드는 기술인데요. 처음 들으면 말도 안 되는 이야기처럼 들리지만, 실제로 가능한 구조입니다.
아주 간단히 설명하면 이렇습니다:
검증하고 싶은 논리 프로그램 A를 전부 NAND 게이트 조합으로 변환합니다. (모든 로직은 NAND로 표현할 수 있기 때문이죠)
이 게이트들을 트리 형태로 구성하고, 각 노드(게이트)의 입력과 출력을 변환된 형태로 감춥니다.
검증자는 이 중 일부 게이트의 원본 값을 공개하라고 요청하고,
증명자는 그에 따라 원본 데이터를 보여주고,
검증자는 그 값이 NAND 연산을 만족하는지, 그리고 사전에 받은 변환 값과 일치하는지를 확인합니다.
즉, 전체 프로그램을 아주 작은 단위(NAND 게이트)로 나누고, 그 중 일부를 무작위로 샘플링해서 검증하는 구조입니다. 충분히 많은 검사를 통과한다면, 프로그램이 정직하게 수행되었을 가능성이 매우 높다고 볼 수 있죠. 이처럼 BitVM은 복잡한 연산은 오프체인에서 수행하고, 온체인에서는 단순한 비교만 수행하게 설계되어 있습니다. 비트코인에서 '일반적인 프로그램'을 실행하고 검증하는 새로운 가능성을 열어주는 기술입니다.
저도 공부하는데 너무 어려워서 직접 간단하게 구현해봤습니다. https://github.com/shard-lab/protocol-camp/tree/main/scaling/bitvm 개발자 분들은 들어가서 한번 체크해보시면 더 쉽게 이해하실 수 있을 거에요.
일반적인 모든 프로그램에 대한 검증이 비트코인안에서 가능해진다면, 비트코인은 단순한 가치 저장의 수단을 넘어서 분산 플랫폼 처럼 동작하게 할 수 있게 됩니다. 엄청난 일이죠.. 그 많은 돈들이 유틸리티가 생긴다는 얘기니까요. 그래서 다들 관심을 가지고 지켜보는 기술 중 하나입니다.