Download presentation
Presentation is loading. Please wait.
1
Ethereum TrueBit 01 김도윤 (doyunism@gmail.com) TES 20주차 (2018.08.25.)
토큰 이코노미 분석 모임 (TES: Token Economy Study Group)
2
TPS(Transaction Per Second) 개선
Ethereum scalability solutions 01 Transaction issue Computation issue TPS(Transaction Per Second) 개선 연산 능력 개선 Image: Image:
3
Ethereum computation issue
01 GAS issue - 이더리움의 가스 수수료는 코드의 복잡도에 비례 - block gas limit이 있어 복잡한 코드 실행 불가 평균 Gas Limit:약 800만 Source:
4
Ethereum computation issue
01 GAS issue solidity로 코드를 작성, 컴파일하면 EVM(Ethereum Virtual Machine)에서 실행되는 Ethereum Bytecode가 생성됨 컴파일: 고급언어(COBOL, FORTRAN 등)로 작성된 프로그램을 기계가 이해할 수 있는 언어로 번역하는 것 EVM: 이더리움에서 블록체인을 기록하고 스마트 컨트랙트를 작동하기 위한 환경(Ethereum Bytecode 실행) Ethereum bytecode가 저장된 주소로 트랜잭션이 전송될 때마다 코드 실행 이더리움 채굴자들은 해당 코드의 연산을 실행하고, 하나의 결과로 합의하는 과정을 가짐 채굴자 : 이전 블록을 증명하기 위해 얼마나 많은 연산 능력이 필요한지 측정 사용자 : 트랜잭션을 실행하는데 필요한 비용 지불 코드가 복잡도가 높아질수록 GAS 수수료 증가, GAS LIMIT이 있어 연산 능력 한계 존재 Source:
5
Ethereum computation issue
01 GAS LIMIT을 올리면? Verifier의 딜레마 발생 Verifier의 딜레마 : 보상을 받지 못하는 이전 블록의 증명 과정을 할지 말지 고민하게 되는 상황 채굴자는 다음 블록을 채굴하기 전에 이전의 블록이 검증된 블록인지 확인할 필요가 있음 이 과정에 대해서는 보상을 받지 못함 확인 과정이 어렵고 오래 걸릴 경우, 건너 뛰고 싶은 유인 발생 그렇다고 확인 과정을 생략해버리면 유효하지 않은 블록 위에 작업할 우려가 있음 채굴 경쟁에서 유리하지만… 유효하지 않은 블록 위에 채굴하면 어떡하지? 검증된 블록 위에 채굴할 수 있지만… 검증하느라 채굴 경쟁에서 뒤쳐지면 어떡하지? Source: Image:
6
Ethereum computation issue
01 이러한 문제를 해결하기 위해 나온 솔루션 …
7
Ethereum TrueBit (offchain verifiable computation)
01 TrueBit 개요 : 블록체인 위에서 처리하기 곤란한 연산을 체인 밖에서 처리하는 방식 DApp이 block gas limit보다 많은 가스가 소모되는 연산을 수행하고 싶을 때 트루빗 프로토콜로 넘겨서 트루빗 네트워크 참여자들이 복잡한 연산을 대신 처리하도록 하고, 트루빗 네트워크 참여자들은 결과값을 전달하여 DApp이 결과값만 체인에 반영하도록 함 Solver(문제를 푸는 채굴자) 스마트 컨트랙트에 보증금(토큰)을 예치하고 연산 처리 연산을 올바르게 처리하면 예치해 두었던 보증금과 보상을 받음 Solver의 답이 틀렸다고 판단될 경우 Challenger가 보증금을 예치하고 Solver의 답에 이의 제기 검증 게임 (Solver와 Challenger의 결과가 다르게 나타나는 부분만 검증) Solver의 연산이 틀리면 Solver의 보증금에서 삭감 Solver의 연산이 맞으면 검증 게임을 하면서 발생한 비용을 Challenger의 보증금에서 삭감 Source:
8
Ethereum TrueBit (offchain verifiable computation)
01 트루빗 컨트랙트(Truebit Contract) DApp과 트루빗 프로토콜이 상호 작용하기위한 API 트루빗 스마트 컨트랙트 안에는 createTask라는 함수가 있음 DApp은 createTask 함수를 호출할 때 아래의 변수를 전달 Program : 실행하고 싶은 코드. 트루빗은 WebAssembly VM 사용함. DApp은 bytecode를 전달 가능, IPFS 해시값이나 코드가 저장된 다른 콘텐츠 주소로 전달할 수 있음 Input : 실행할 프로그램의 입력 값 DApp은 input값을 직접 제공하거나, input값이 저장된 다른 콘텐츠 주소로 전달할 수 있음 Reward : 프로그램을 실행한 사람에게 지급할 보상 Source:
9
Ethereum TrueBit (offchain verifiable computation)
01 트루빗 컨트랙트(Truebit Contract) - 아라곤(Aragon) 예시 on-chain에서 투표 결과를 집계하는 연산 처리는 비싸고, block gas limit을 초과하므로 트루빗 프로토콜로 넘김 createTask function 호출 Program : 투표 기록을 집계하는 프로그램 코드 Inputs : 투표 기록을 담은 배열 Reward : Task Giver가 내건 보상 a DApp creates a Truebit task. Source:
10
Ethereum TrueBit (offchain verifiable computation)
01 트루빗 네트워크(Truebit Network) 누구든 트루빗 클라이언트를 설치한 사람은 트루빗 네트워크의 채굴자가 될 수 있음 채굴자는 트루빗 컨트랙트의 이벤트를 주시함 Truebit miners listening for tasks. Source:
11
Ethereum TrueBit (offchain verifiable computation)
01 트루빗 네트워크(Truebit Network) 트루빗 채굴자는 새로운 Task가 생기면 코드를 다운로드하고, 제공된 input과 함께 Truebit WebAssembly VM을 로컬로 실행하여 결과값을 컨트랙트에 제출 ※ 결과값을 제출할 때 보증금도 함께 제출해야 함 Solver submits a solution. Source:
12
Ethereum TrueBit (offchain verifiable computation)
01 트루빗 네트워크(Truebit Network) Challenge가 없을 경우 타이머 시작, 타임아웃까지 challenge가 없다면 Solver가 올바른 결과값을 제출했다고 간주 트루빗 컨트랙트가 DApp 으로 결과값 콜백 The Task Giver receives a callback with the result. Source:
13
Ethereum TrueBit (offchain verifiable computation)
01 트루빗 네트워크(Truebit Network) challenge가 있을 경우 Challenger가 보증금을 걸고 challenge 제출 시 트루빗 컨트랙트에는 ①Task Giver가 내건 보상, ②Solver의 보증금, ③Challenger의 보증금 예치 A Verifier submits a challenge. Source:
14
Ethereum TrueBit (offchain verifiable computation)
01 검증 게임(The verification game) *트루빗의 task는 WebAssembly 프로그램으로 진행(명령어들을 하나씩 실행) Challenger가 게임 시작 시작 일치(0번) : Solver, Challenger 모두 초기화된 VM을 부팅하고 같은 program, inputs을 가짐 마지막 불일치(14번) : 14개의 명령어로 구성되어 있다면 마지막인 14번째는 서로 다른 결과를 가질 것 Challenger는 중간 지점인 7번째 명령어 실행 결과를 질문 (여러 번 시도하면 중간지점부터 묻는 것이 가장 효율적) Solver는 Truebit WebAssembly VM을 사용하여 7번째 해시값을 계산하여 응답 7번째 해시값: 7번 째 명령어 실행 시 스택, 메모리, Solver의 WebAssembly VM의 전체 상태에서 파생된 머클 루트 Source:
15
Ethereum TrueBit (offchain verifiable computation)
01 검증 게임(The verification game) Challenger는 자신의 머클 루트를 계산하여 Solver의 값과 비교 두 값이 같으면 8~14번째에서 불일치 발생 (7번째까지의 결과는 일치하므로) 두 값이 다르면 1~7번째에서 불일치 발생 (중간값인 3 or 4번째부터 질문) The Solver and Challenger play a verification game. Source:
16
Ethereum TrueBit (offchain verifiable computation)
01 검증 게임(The verification game) Solver, Challenger값 일치할 경우 중간값인 10번째 명령어 실행 결과 질문 10번째도 같으면 다시 남은 구간의 중간값(12번째)을 찾아 질문 프로그램의 총 명령어 수가 n개일 경우, Challenger가 불일치 지점을 찾기 위해서는 O(log (n)) 단계를 필요로 함 불일치 지점을 찾아내면, 해당(13번째) 명령어 실행 결과를 질문하여 비교 Source:
17
Ethereum TrueBit (offchain verifiable computation)
01 검증 게임(The verification game) 트루빗 컨트랙트 안에 있는 WebAssembly interpreter 실행 VM을 12번째 연산을 마친 이후로 세팅, 13번째 명령어 수행 Solver의 머클 루트와 비교 값이 서로 다르다면 solver의 보증금 삭감 (Solver의 연산이 틀렸다는 뜻이므로) 값이 서로 같다면 검증 게임 비용을 challenger의 보증금에서 삭감 트루빗은 전체 연산을 오프 체인에서 하고, 분쟁 발생 시 단일 명령에 대한 연산만 Ethereum을 사용 <트루빗 프로젝트 측 주장> 나카모토 컨센서스(과반수가 정직해야)나 BFT(2/3가 정직해야)보다 강력 1명만 정직해도 안전이 보장되기 때문 Source:
18
TrueBit Token Economy 01 Truebit Token Economy 인센티브 구조 Task 수행에 대한 보상
Solver, Challenger 보증금 Solver와 Challenger의 결과값 중 적절한 답변 선택 연산 시장의 토큰 이코노미 설계 등 Challenger가 항상 Solver의 결과값을 검증할 동기 필요… Solver가 잘못된 결과값을 제출했다는 것을 증명할 때만 보상을 받는다면 그 횟수가 매우 적을 수 있음 Solver가 옳은 결과값만 내놓는다면 Challenger는 수지가 맞지 않아 결국 사라지게 될 것 Challenger가 사라지면 Solver도 옳은 결과값을 제출할 동기가 사라짐 트루빗 네트워크 붕괴 해결책 : 강제 오류와 잭팟 Source: Source: Jason Teutsch, Christian Reitwießner, A scalable verification solution for blockchains
19
기대수익 >= 검증 시 적절한 보상 * 강제 오류 확률
forced error and a jackpot 01 강제 오류와 잭팟 트루빗 컨트랙트에서 의도적으로 Solver가 틀린 답을 제출하도록 함으로써 Challenger에게 검증 동기 부여 강제 오류를 발견한 Challenger는 잭팟 보상을 받을 수 있음 Challenger는 언제 강제 오류가 발생할지 모르므로, 모든 task를 주의 깊게 확인할 동기를 가짐 기대수익 >= 검증 시 적절한 보상 * 강제 오류 확률 Solver는 문제를 올바르게 해결할 때마다 보상을 받지만, Challenger는 간헐적으로 보상을 받기 때문에 기대수익은 우변(보상*강제 오류 확률)보다 더 높아야 한다. 잭팟 보상은 각각의 연산 작업 당 1명 이상의 Challenger를 확보할 수 있을 만큼 충분히 높아야 하지만, 그렇다고 기대수익이 너무 높으면 잭팟을 위한 조작 행위가 일어날 우려가 있으므로 적정선 유지가 중요 Source: Jason Teutsch, Christian Reitwießner, A scalable verification solution for blockchains
20
forced error and a jackpot
01 잭팟 자금은 어디서 나오나? 잭팟 저장소 초기 : generous philanthropist(트루빗 프로젝트 자체 자금)가 저장소에 예치(기부) 유지 : Task Giver에게 세금 징수 Task Giver는 Solver의 연산 비용뿐만 아니라, Challenger의 검증 비용 + 세금까지 부담해야 함 단, Challenger가 옳은 연산에 challenge를 걸면 Challenger 부담(Challenger의 보증금에서 공제) 세율 : 검증 비용의 500% ~ 5,000% 강제 오류 확률(잭팟 확률) : 1/1,000 잭팟 시 지급 금액 : 저장소 예치 금액의 1/3 미만 비율은 각 당사자의 행동에 따라 조정할 수 있음 Source: Jason Teutsch, Christian Reitwießner, A scalable verification solution for blockchains
21
Conclusion 01 이더리움 확장성 솔루션을 공부하면서 느낀 점
- 블록체인은 결국 데이터를 기록하고 관리하는 규칙에 관한 것이다. 높은 보안(위변조 불가), 탈중앙화(비대칭 완화/제거), 토큰 이코노미(데이터에 가치 부여)는 데이터 관리 방식에서 비롯 - 탈중앙화는 상당히 도전적인 과제다. 중앙화된 주체가 운영하면 쉽게 할 수 있는 일, 하지만 신뢰할 필요가 없는 체계를 만들려고 하다 보니 기존에는 내지 않던 비용이 많이 듦 Truebit: Task Giver는 Solver를 신뢰하지 못해 Challenger에게도 지출 (cf. 신용사회) - “네가 기술을 몰라서 그래.”라는 말에 아직 자유롭지 못하지만… ‘블록체인도 사업이다.’ 관점에서 바라보면, 블록체인 비즈니스의 가치는 어디에서 오는가? 1. 운영 관점 : 중개인 제거 profit > 탈중앙화 cost 2. 혁신 관점 : 새로운 가치 창출(기존의 방식으로는 불가능했으나 블록체인 기술 덕분에 가능해진 서비스)
22
Thank You Kim Doyun 블로그 : http://www.xblock.kr
얼굴책 :
Similar presentations