본문 바로가기

발표 자료

이더리움 확장성 문제 솔루션_트루빗(TrueBit)

이더리움 확장성 문제 솔루션_트루빗(TrueBit)


TES 20주차 발표자료 (2018.08.25)



※ TES 우상원님께서 발표 내용을 정리해주셨습니다.


Sharding이나 Plasma나 Riden은 TPS 개선에 초점. 근데 TrueBit은 연산 능력 개선에 초점. 복잡한 연산을 어떻게 효율적으로 할 수 있는가. 이더리움 같은 경우 가스 이슈가 있어서 연산하는데 제약이 있음. 가스는 코드가 복잡할수록 비싸짐. 그리고 가스 limit이 있어서 특정 난이도 이상을 계산할 수 없음. 


Solidity로 코드 작성, 컴파일하면 EVM에서 실행되는 이더리움 바이트코드가 생성됨. 특정한 연산을 수행하기 위한 코드. 이것을 이더리움 채굴자들이 특정 연산을 수행할 때 바이트코드를 불러와서 연산 수행. 채굴자의 경우 코드의 연산을 실행하고 하나의 결과로 합의. 그래서 얼마나 연산 능력이 필요한지 측정하고 사용자는 Transaction을 실행하는 데 필요한 비용을 지불. 


가스 limit을 올리면 채굴자들이 딜레마에 빠짐. 채굴자들이 과거 블록 유효 증명 과정을 거쳐야 하는데 이 과정이 복잡하고 어렵게 되면 채굴자의 경우 앞으로의 블록만 연산하고 싶은 유혹이 생김. 그렇다면 문제가 유효하지 않은 블록에 연산할 수 있는 헛수고 가능성 있음. 그렇다고 하나하나 증명하자니 다른 놈에게 경쟁에서 밀릴 수 있기 때문에 딜레마에 빠짐. 


이것을 해결하기 위한 솔루션이 TrueBit. TrueBit의 경우 블록체인 위에서 처리하기 곤란한 연산을 체인 밖에서 처리하는 방식. 가스 limit보다 높은 연산을 수행하고자 할 때 TrueBit을 사용하고 싶은 동기가 생김. TrueBit 프로토콜로 넘겨서 TrueBit 네트워크 참여자들이 복잡한 연산을 대신 처리하도록 하고 TrueBit 네트워크 참여자들은 결과값을 전달하여 Dapp이 결과값만 체인에 반영하도록 함. 


TrueBit Contract라고 해서 Dapp과 TrueBit 프로토콜이 상호작용하기 위한 API 개념이 있음. 이것의 경우 createTask라는 함수가 있는데 Dapp에서 이 함수를 호출할 때 프로그램/인풋/리워드 변수를 전달. 프로그램은 실행하고 싶은 코드. TrueBit은 웹어셈블리 VM을 사용. Dapp은 바이트코드를 전달 가능. 인풋의 경우 실행할 프로그램의 입력값이고 리워드의 경우 보상임


예시는 아라곤이라는 프로젝트. 아라곤의 경우 투표를 처리할 경우 이더리움 네트워크에서 해결하기 어려우니 TrueBit으로 넘김. createTask function을 호출하면 프로그램은 투표 기록을 집계하는 프로그램 코드. 


TrueBit 네트워크의 경우 TrueBit 클라이언트를 설치하면 누구나 채굴자가 될 수 있음. 채굴자들이 Task Giver의 과제를 기다림. 이들이 과제를 주면 Solver가 되어서 문제를 풀게 됨. 


Solver가 되어서 태스크를 받게 되면 관련 코드를 다운받고 결과값을 제출하게 됨. Solver가 결과값을 제출할 때 보증금을 제출해야함. 내가 맞았다는 것을 보증해야 함. 


만약 Challenge가 없을 경우 타이머 시작. 일정 시간이 지나도 Challenge가 없으면 Solver가 올바른 결과값을 제출했다고 간주. 이후 Solver는 보상을 받음. 


가끔 Solver가 답을 틀릴 수 있는데 그렇다면 Challenger가 Challenge를 걸게 됨. 둘이 경쟁하게 됨. Challenger도 보증금을 예치. Challenge 상황에 접어들게 되면 Task Giver가 내세운 보상금이랑 Solver가 내세운 보증금, Challenger가 내세운 보증금이 묶이게 됨. 


Challenge에 접어들면 검증게임이라는 연산이 맞는지 틀린지 대조해보는 시간을 갖게 됨. 가령 명령어가 0번부터 14번까지 존재. Solver와 Challenger가 어디서 다른 답을 찾았고 누가 틀렸는지를 찾게 되는 것. 0번의 경우 시작 값이니 둘의 결과가 일치하지만 14번의 경우 다름. 명령어가 많아질수록 Solver/Challenger가 각각 문제를 번호 순서대로 대조하는 데 오래 걸릴 수 있음. 그래서 중간에서 검색하고 차례차례 줄여나가는 방식을 취하게 됨. Solver랑 Challenger가 7번까지 맞으면 그 이후의 중간값으로 검색. 그래서 10번째 명령어, 다음엔 12번째 명령어를 검색. 이런 식으로 불일치 지점을 찾는 것. 누가 맞았는지 혹은 틀렸는지는 이더리움 네트워크가 판단. 


TrueBit 토큰 이코노미 인센티브 구조로는 Task에 대한 보상, Solver Challenger 보증금, 검증 게임의 결과값 중 적절한 답변 선택 등이 존재. 하지만 Solver가 항상 옳은 답을 내놓으면 Challenger 입장이 애매해짐. Solver가 잘못된 결과값을 제시해야 Challenger가 Challenge를 할 수 있기 때문. Challenger가 자리를 빠지고 그러면 Solver 세상이 됨. Solver세상이 되면 Solver가 옳은 답을 제시할 이유가 없어짐. 그렇다면 네트워크 불신이 생겨서 네트워크가 붕괴가 될 수도 있음. 


이를 해결하기 위해 여기서는 강제오류와 잭팟이라는 것을 제시. 일정한 주기로 Solver가 틀린 답을 제출하도록 함으로써 Challenger에게 검증 동기 부여. Challenger가 답을 맞추면 Solver의 답과는 상관없이 보상을 받게 해놓음. TrueBit 측에서는 잭팟 보상은 Challenger가 한 명만 있어도 유지될 수 있다고 설명. 그렇다고 기대수익이 너무 높아지면 연산과정보다 기대수익을 높이기 위한 어뷰징이 일어날 수 있다고 해서 밸런스를 맞추려고 노력 중. 


잭팟 자금은 어디서 나오나? 잭팟 저장소. TrueBit 프로젝트 자체 자금이 저장소에 예치. 기부하는 것. 유지비로 Task Giver에게 세금을 징수. Task Giver는 Solver의 연산 비용 뿐 아니라 Challenger의 검증 비용 + 세금까지 부담해야 함. TrueBit에서는 적절히 실험을 하면서 조절하겠다고 함. 


이더리움 확장성 솔루션을 공부하면서 느낀 점. Plasma랑 종합적으로 느낀점은 블록체인 경우 데이터를 기록하고 관리하는 규칙. 높은 보안은 위변조가 불가능하다는 특성. 탈중앙화는 정보의 비대칭을 제거하는 것. 토큰 이코노미는 데이터의 관리방식에서 비롯. 데이터에 가치를 부여한다는 것. 


Plasma는 사이드 체인으로 내려서 데이터를 처리하는데 사실은 중앙화된 단체에서 하면 굉장히 쉽게 할 수 있는 것. 이런 것을 개선하기 위해서 Plasma가 나오고 TrueBit이 나오게 되는데 이런 것을 한다는 것 자체가 불신을 바탕으로 한다는 생각. Solver에 대해서도 불신하니 Challenger가 있는 것. Task Giver는 Solver를 신뢰하지 못해 Challenger에게도 비용을 지출. 현재 우리는 신용사회를 살고 있는데 신용자체가 필요 없는 시스템을 만들려고 하니 비용이 많이 드는 것 같음. 


‘블록체인도 사업이다’라는 관점에서 바라보면 블록체인 비즈니스의 가치는 어디에서 오는가. 탈중앙화 비용의 경우 없어도 되는 비용을 지출하다 보니 Plasma나 TrueBit 등의 퍼포먼스 향상 프로젝트가 제대로 구현된다고 해도 블록체인 네트워크에 새로운 가치가 생기는 것보다 기존상태와 동등한 상태. 이거에 대한 상쇄를 어디서 해야하나. 그 중 하나가 중개인 제거를 내세움. 중개인 제거 이익이 탈중앙화 비용보다 크게 되면 블록체인 사업으로서의 가치가 존재. 이게 운영 관점. 두 번째는 마약 관련해서도 비슷한데 기존의 방식에 정면 승부해서 어려울 것 같기 때문에 기존 방식에서 완전 룰을 바꿀 수 있는 그런 사업이어야 하지 않을까. 블록체인이랑 궁합이 잘 맞아서 새로운 가치를 창출할 수 있는 그런 사업이 되어야 하지 않을까 생각. 


PDF파일  :  DY_Truebit_TES.pptx