트루빗 편집하기
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | [[파일: | + | [[파일:트루빗로고.png|썸네일|150픽셀|'''트루빗''']] |
− | [[파일:트루빗 | + | [[파일:트루빗 .png|썸네일|250픽셀|'''블록체인'''(Truebit)]] |
− | '''트루빗'''<!--트루비트-->( | + | '''트루빗'''<!--트루비트-->(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)예시 | |
− | + | 온체인에서 투표 결과를 집계하는 연산처리는 비싸고, 블록 가스 제한도 초과하므로 트루빗 프로토콜로 넘긴다. | |
− | |||
DApp과 트루빗 프로토콜이 상호작용하기 위한 API이다. 트루빗 스마트 컨트랙트 안에는 createTask라는 함수가 있다. DApp은 createTask함수를 호출할 때 아래의 3가지 변수를 전달한다. | DApp과 트루빗 프로토콜이 상호작용하기 위한 API이다. 트루빗 스마트 컨트랙트 안에는 createTask라는 함수가 있다. DApp은 createTask함수를 호출할 때 아래의 3가지 변수를 전달한다. | ||
76번째 줄: | 75번째 줄: | ||
문제 해결자와 챌린저 모두 같은 프로그램 코드와 입력값을 다운로드 했으며 | 문제 해결자와 챌린저 모두 같은 프로그램 코드와 입력값을 다운로드 했으며 | ||
− | [[파일:검증1.png||600픽셀|]] | + | [[파일:검증1.png||600픽셀|]] |
− | 시작 일치(0번) : 해결자(Solver), 챌린저(Challenger) 모두 초기화된 VM을 부팅하고 같은 프로그램 입력값을 가진다. | + | 시작 일치(0번) : 해결자(Solver), 챌린저(Challenger) 모두 초기화된 VM을 부팅하고 같은 프로그램 입력값을 가진다. |
− | 마지막 불일치(14번) : 14개의 명령어로 구성되어 있다면 마지막인 14번째는 서로 다른 결과를 가질 것이다. | + | 마지막 불일치(14번) : 14개의 명령어로 구성되어 있다면 마지막인 14번째는 서로 다른 결과를 가질 것이다. |
− | [[파일:검증1.png||600픽셀|]] | + | [[파일:검증1.png||600픽셀|]] |
− | 챌린저는 중간지점인 7번째 명령어 실행 결과를 질문 (여러 번 시도하면 중간 지점부터 묻는 것이 가장 효율적) 해결자(Solver)는 트루빗 WebAssembly VM을 사용하여 7번째 해시값을 계산하여 응답한다. (7번째 해시값: 7번 째 명령어 실행 시 스택, 메모리, 해결자(Solver)의 WebAssembly VM의 전체 상태에서 파생된 머클 루트) | + | 챌린저는 중간지점인 7번째 명령어 실행 결과를 질문 (여러 번 시도하면 중간 지점부터 묻는 것이 가장 효율적) |
+ | 해결자(Solver)는 트루빗 WebAssembly VM을 사용하여 7번째 해시값을 계산하여 응답한다. | ||
+ | (7번째 해시값: 7번 째 명령어 실행 시 스택, 메모리, 해결자(Solver)의 WebAssembly VM의 전체 상태에서 파생된 머클 루트) | ||
− | |||
− | |||
− | |||
− | [[파일:검증1.png||600픽셀|]] | + | 챌린저(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))만큼의 단계가 필요하다. 문제 해결자와 챌린저 사이의 불일치가 시작되는 지점인 상태다. | ||
− | |||
− | |||
− | == | + | ==한계== |
− | |||
− | == | + | ==결론== |
− | |||
{{각주}} | {{각주}} | ||
+ | |||
+ | ==참고자료== | ||
==같이 보기== | ==같이 보기== | ||
− | |||
− | |||
− | |||
* [[확장성]] | * [[확장성]] | ||
− | * [[ | + | * [[인터체인]] |
− | * [[ | + | * [[브릿지]] |
− | |||
− | {{블록체인 기술| | + | {{로고 필요}} |
+ | {{블록체인 기술|토막글}} |