트루빗 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:트루빗 로고.png|썸네일|200픽셀|'''트루빗'''(Truebit)]]
+
[[파일:트루빗로고.png|썸네일|150픽셀|'''트루빗''']]
[[파일:트루빗 글자.png|썸네일|300픽셀|'''트루빗'''(Truebit)]]
+
[[파일:트루빗 .png|썸네일|250픽셀|'''블록체인'''(Truebit)]]
  
'''트루빗'''<!--트루비트-->(Truebit)<!--True bit-->은 [[이더리움]]의 연산 성능을 올리기 위한 [[오프체인]] 솔루션이다.<ref>도예리 기자, 〈[https://decenter.sedaily.com/NewsView/1VJ8NP79S8  서울대 연구원이 말하는 이더리움 연산력 한계 극복하기]〉, 《디센터》, 2019-05-22</ref>
+
'''트루빗'''<!--트루비트-->(truebit)<!--truebit-->은 [[이더리움]]의 연산 성능을 올리기 위한 [[오프체인 솔루션]]이다.<ref>도예리 기자, 〈[https://decenter.sedaily.com/NewsView/1VJ8NP79S8  서울대 연구원이 말하는 이더리움 연산력 한계 극복하기]〉, 《디센터》, 2019-05-22</ref>
  
 
==개요==
 
==개요==
30번째 줄: 30번째 줄:
 
[[파일:트루빗1.png|450픽셀|오른쪽|'''트루빗 컨트랙트'''(Truebit Contracts)]]
 
[[파일:트루빗1.png|450픽셀|오른쪽|'''트루빗 컨트랙트'''(Truebit Contracts)]]
  
;[[아라곤]](Aragon) 예시
+
▶아라곤(Aragon)예시
 
+
온체인에서 투표 결과를 집계하는 연산처리는 비싸고, 블록 가스 제한도 초과하므로 트루빗 프로토콜로 넘긴다.
[[온체인]]에서 투표 결과를 집계하는 연산처리는 비싸고 블록 가스 제한도 초과하므로 트루빗 프로토콜로 넘긴다.
 
 
DApp과 트루빗 프로토콜이 상호작용하기 위한 API이다. 트루빗 스마트 컨트랙트 안에는 createTask라는 함수가 있다. DApp은 createTask함수를 호출할 때 아래의 3가지 변수를 전달한다.  
 
DApp과 트루빗 프로토콜이 상호작용하기 위한 API이다. 트루빗 스마트 컨트랙트 안에는 createTask라는 함수가 있다. DApp은 createTask함수를 호출할 때 아래의 3가지 변수를 전달한다.  
  
76번째 줄: 75번째 줄:
 
문제 해결자와 챌린저 모두 같은 프로그램 코드와 입력값을 다운로드 했으며
 
문제 해결자와 챌린저 모두 같은 프로그램 코드와 입력값을 다운로드 했으며
  
[[파일:검증1.png||600픽셀|]]<br>
+
[[파일:검증1.png||600픽셀|]]
시작 일치(0번) : 해결자(Solver), 챌린저(Challenger) 모두 초기화된 VM을 부팅하고 같은 프로그램 입력값을 가진다.<br>
+
시작 일치(0번) : 해결자(Solver), 챌린저(Challenger) 모두 초기화된 VM을 부팅하고 같은 프로그램 입력값을 가진다.
마지막 불일치(14번) : 14개의 명령어로 구성되어 있다면 마지막인 14번째는 서로 다른 결과를 가질 것이다.<br>  
+
마지막 불일치(14번) : 14개의 명령어로 구성되어 있다면 마지막인 14번째는 서로 다른 결과를 가질 것이다.   
  
[[파일:검증1.png||600픽셀|]]<br>
+
[[파일:검증1.png||600픽셀|]]
챌린저는 중간지점인 7번째 명령어 실행 결과를 질문 (여러 번 시도하면 중간 지점부터 묻는 것이 가장 효율적) 해결자(Solver)는 트루빗 WebAssembly VM을 사용하여 7번째 해시값을 계산하여 응답한다. (7번째 해시값: 7번 째 명령어 실행 시 스택, 메모리, 해결자(Solver)의 WebAssembly VM의 전체 상태에서 파생된 머클 루트)<br>
+
챌린저는 중간지점인 7번째 명령어 실행 결과를 질문 (여러 번 시도하면 중간 지점부터 묻는 것이 가장 효율적)
 +
해결자(Solver)는 트루빗 WebAssembly VM을 사용하여 7번째 해시값을 계산하여 응답한다.
 +
(7번째 해시값: 7번 째 명령어 실행 시 스택, 메모리, 해결자(Solver)의 WebAssembly VM의 전체 상태에서 파생된 머클 루트)
  
챌린저(Challenger)는 자신의 머클 루트를 계산하여 Solver(해결자)의 값과 비교한다.<br>
 
두 값이 같으면 8~14번째에서 불일치가 발생한다. (7번째까지의 결과는 일치하므로)<br>
 
두 값이 다르면 1~7번째에서 불일치가 발생한다.  (중간값인 3 or 4번째부터 질문)<br>
 
  
[[파일:검증1.png||600픽셀|]]<br>
+
챌린저(Challenger)는 자신의 머클 루트를 계산하여 Solver(해결자)의 값과 비교한다.
 +
두 값이 같으면 8~14번째에서 불일치가 발생한다. (7번째까지의 결과는 일치하므로)
 +
두 값이 다르면 1~7번째에서 불일치가 발생한다.  (중간값인 3 or 4번째부터 질문)
 +
[[파일:검증1.png||600픽셀|]]
  
 
Solver(해결자)값 일치할 경우, 중간값인 10번째 명령어 실행 결과 질문 10번째도 같으면 다시 남은 구간의 중간값(12번째)을 찾아 질문한다.
 
Solver(해결자)값 일치할 경우, 중간값인 10번째 명령어 실행 결과 질문 10번째도 같으면 다시 남은 구간의 중간값(12번째)을 찾아 질문한다.
93번째 줄: 94번째 줄:
 
결국 챌린저는 문제 해결자와의 불일치가 시작되는 지점을 찾아내기 위하여 이진 탐색(binary search)하므로 전체 프로그램이 n개의 명령어로 이루어져 있다면 총 O(log(n))만큼의 단계가 필요하다. 문제 해결자와 챌린저 사이의 불일치가 시작되는 지점인 상태다.
 
결국 챌린저는 문제 해결자와의 불일치가 시작되는 지점을 찾아내기 위하여 이진 탐색(binary search)하므로 전체 프로그램이 n개의 명령어로 이루어져 있다면 총 O(log(n))만큼의 단계가 필요하다. 문제 해결자와 챌린저 사이의 불일치가 시작되는 지점인 상태다.
  
그러면 온체인에서 해당 연산을 어떻게 수행하고 검증할까?  트루빗 스마트 컨트랙트에는 웸어셈블리 인터프리터가 내장되어 있다. 해당 가상머신을 13번째 명령어를 시작하기 직전 상태로 초기화한 후에 13번째 명령어에 해당하는 연산을 수행한다. 그 다음 스택, 메모리, 가상머신 상태에 대해 똑같이 머클 루트를 계산하고 이를 Solver(문제 해결자)의 머클 루트와 비교한다. 만약, 그 값이 서로 다르다면 문제 해결자의 연산이 틀렸다는 뜻으로 연산 보유자의 뜻으로 Solver(문제 해결자)의 보증금을 삭감함으로써 검증 게임을 마무리한다.
 
  
트루빗은 전체 연산을 오프체으로 수행하고, 연산 결과에 대해 논쟁이 발생했을 때, 단일 지점에 대한 연산만을 이더리움 온체인에서 수행하도록 설계하였다. 트루빗 재단은 이러한 트루빗 프로토콜의 합의 메카니즘이 과반수가 정직해야 하는 나카모토 컨센서스나 3분의 2이상이 정직해야 하는 BFT 합의 알고리즘보다 강력하다고 주장한다. 그 이유는 1명의 정직한 검증자만 존재한다면 적어도 틀린 연산 결과가 제출될 일은 없기 때문이다. 하지만 이러한 설계 의도대로 네트워크가 움직이기 위해서는 여러 경제적인 요인에 대한 고민이 필요하다. 검증자가 항상 문제 해결자의 답안 제출을 검증해야 할 요인, 위험을 감수하도 검증자가 아닌 문제 해결자로 활동할 요인, 검증자와 문제 해결자 사이의 역할 분배 등의 설계가 필요하다.
 
  
==인센티브 구조==
+
==한계==
먼저, 검증자들이 항상 문제 해결자들이 제출한 답안을 검증할 요인이 필요하다. 검증자들이 잘못된 답안을 찾아낼 때만 보상을 받는다고 가정하면 네트워크의 균형을 유지하기가 힘들다. 문제 해결자가 틀린 답을 내면 검증자들의 기대 수익이 높아지기 때문에 검증자들이 유입될 것이다. 검증자들이 많아질수록 문제해결자들은 잘못된 답안을 제출하지 않으려 할 것이며, 이는 다시 검증자들이 이탈한다면, 다시 문제 해결자들은 잘못된 답안을 제출할 수 있다. 간단히 말해 네트워크가 균형을 유지하지 않을 가능성이 높다. 이를 해결하기 위해 트루빗은 [[강제 오류와 잭팟]](forced error and jackpot)이라는 개념을 도입하였다.
 
  
== 평가 ==
+
==결론==
[[이더리움]] 창시자이자 개발자들은 "트루빗 100$ 이상의 가치 충분하다"는 평가를 내리기도 한다.
 
  
 
{{각주}}
 
{{각주}}
 +
 +
==참고자료==
  
 
==같이 보기==
 
==같이 보기==
* [[블록체인]]
 
* [[트랜잭션]]
 
* [[이더리움]]
 
 
* [[확장성]]
 
* [[확장성]]
* [[오프체인]]
+
* [[인터체인]]
* [[DApp]]
+
* [[브릿지]]
* [[스마트 컨트랙트]]
 
  
{{블록체인 기술|검토 필요}}
+
{{로고 필요}}
 +
{{블록체인 기술|토막글}}

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)