"마스트"의 두 판 사이의 차이
잔글 |
|||
6번째 줄: | 6번째 줄: | ||
==데이터 구조== | ==데이터 구조== | ||
마스트는 [[머클트리]](Merkle Trees) 와 [[AST]](Abstract Syntax Trees)의 특성을 결합하여 프로그램을 간결하고 안전하게 표현한다. 머클 트리는 데이터의 무결성을 효율적으로 검증하는 데 사용 저장, 데이터 블록은 리프 노드에 저장되며 비 리프 노드는 하위 노드의 레이블 해시이다. 비트코인 블록체인에서 머클 트리는 현재 거래 내역을 효율적으로 저장하는 데 사용된다. AST, 반면에, 프로그램의 구문 구조를 나타낸다. 프리미티브는 AST의 리프 노드에 있으며 비 리프 노드는 프로그래밍 작업을 나타내고 제어 흐름 메커니즘 MAST에서 트리의 루트는 다른 모든 노드는 서브 프로그램을 나타낸다. 트리의 각 경로는 다른 실행 분기이다.<ref name="제레미 루빈"></ref> | 마스트는 [[머클트리]](Merkle Trees) 와 [[AST]](Abstract Syntax Trees)의 특성을 결합하여 프로그램을 간결하고 안전하게 표현한다. 머클 트리는 데이터의 무결성을 효율적으로 검증하는 데 사용 저장, 데이터 블록은 리프 노드에 저장되며 비 리프 노드는 하위 노드의 레이블 해시이다. 비트코인 블록체인에서 머클 트리는 현재 거래 내역을 효율적으로 저장하는 데 사용된다. AST, 반면에, 프로그램의 구문 구조를 나타낸다. 프리미티브는 AST의 리프 노드에 있으며 비 리프 노드는 프로그래밍 작업을 나타내고 제어 흐름 메커니즘 MAST에서 트리의 루트는 다른 모든 노드는 서브 프로그램을 나타낸다. 트리의 각 경로는 다른 실행 분기이다.<ref name="제레미 루빈"></ref> | ||
+ | |||
+ | ==거래 지출== | ||
+ | 비트코인의 지출은 P2SH에서와 많이 비슷하지만, 마스트에서는 비트코인이 머클루트에 잠겨 있는데, 이는 개별적인 조건을 해치고 머클트리에 쌓음으로써 파생된 것이다. 그래서 Merklized address에서 이 비트코인 출력을 사용하려면 스크립트, 스크립트 해시(머클루트), 그리고 동전의 잠금을 풀기 위한 서명과 같은 다른 요구사항들을 생산해야 한다. 하지만, 마스트에서는 전체 스크립트 집합을 포함할 필요가 없고 대신에 실제로 사용되고 있는 스크립트만 만들 수 있다. 비트코인 고객은 머클 증명 기술을 사용하여, 실제 사용중인 스크립트의 해시를 실행하고 생산할 수 있으며, 이는 머클 루트에 대해 검증할 수 있다. 이제 사용중인 조건의 해시와 메르켈 루트가 그 조건이 원래 조건 집합의 일부였는지를 확인하기에 충분하기 때문에, 당신은 이제 작은 거래를 하게 되었다. 그리고 이것이 확인되면 블록체인은 동전이 이 스크립트에만 잠겨 있따는 것을 알게 되고 거래가 성사된다. 이 예상치 못한 스크립트 가지를 숨기는 구조는 각각의 조건이 머클트리의 잎인 복잡한 상황 조건을 가질 수 있게 해준다. 돈을 쓸 때, 다른 정보나 가지를 보여주지 않고 단지 그 가지에 머클트리의 일부였따는 증거를 더하면 된다. 이러한 것을 마스트가 가능하게 만들어 준다. | ||
==구현== | ==구현== |
2019년 9월 11일 (수) 13:46 판
마스트(MAST; Merklized Abstract Syntax Trees)는 비트코인에 제안된 추가 기능으로, 더 작은 거래 규모, 더 많은 개인 정보 보호 및 더 큰 스마트 계약을 허용한다. 마스트의 기본 사항을 살펴보고 잠재적 이점을 설명하고 비트코인 프로토콜(Bitcoin Protocol)에 추가하기 위한 현재 제안 중 일부를 요약한다.
소개
현대 암호 시스템의 맥락에서 공통 주제 분산 트러스트 네트워크를 만드는 것이다. 이들 대부분 설계, 계약의 영구 저장이 필요하다. 그러나 영구 스토리지는 주요 성능이 될 수 있다. 비용 병목 현상. 결과적으로 좋은 코드 압축체계는 이러한 계약 기반 암호화 시스템을 확장하는 데 중요한 요소이다. 이 프로젝트를 위해 우리는 공식화하고 Merkelized Abstract Syntax Tree라는 데이터 구조(MAST)는 데이터 무결성과 압축을 모두 해결한다. MAST를 사용하면 원격으로 실행될 계약 프로그램을 간결하게 표현할 수 있다.[1]
데이터 구조
마스트는 머클트리(Merkle Trees) 와 AST(Abstract Syntax Trees)의 특성을 결합하여 프로그램을 간결하고 안전하게 표현한다. 머클 트리는 데이터의 무결성을 효율적으로 검증하는 데 사용 저장, 데이터 블록은 리프 노드에 저장되며 비 리프 노드는 하위 노드의 레이블 해시이다. 비트코인 블록체인에서 머클 트리는 현재 거래 내역을 효율적으로 저장하는 데 사용된다. AST, 반면에, 프로그램의 구문 구조를 나타낸다. 프리미티브는 AST의 리프 노드에 있으며 비 리프 노드는 프로그래밍 작업을 나타내고 제어 흐름 메커니즘 MAST에서 트리의 루트는 다른 모든 노드는 서브 프로그램을 나타낸다. 트리의 각 경로는 다른 실행 분기이다.[1]
거래 지출
비트코인의 지출은 P2SH에서와 많이 비슷하지만, 마스트에서는 비트코인이 머클루트에 잠겨 있는데, 이는 개별적인 조건을 해치고 머클트리에 쌓음으로써 파생된 것이다. 그래서 Merklized address에서 이 비트코인 출력을 사용하려면 스크립트, 스크립트 해시(머클루트), 그리고 동전의 잠금을 풀기 위한 서명과 같은 다른 요구사항들을 생산해야 한다. 하지만, 마스트에서는 전체 스크립트 집합을 포함할 필요가 없고 대신에 실제로 사용되고 있는 스크립트만 만들 수 있다. 비트코인 고객은 머클 증명 기술을 사용하여, 실제 사용중인 스크립트의 해시를 실행하고 생산할 수 있으며, 이는 머클 루트에 대해 검증할 수 있다. 이제 사용중인 조건의 해시와 메르켈 루트가 그 조건이 원래 조건 집합의 일부였는지를 확인하기에 충분하기 때문에, 당신은 이제 작은 거래를 하게 되었다. 그리고 이것이 확인되면 블록체인은 동전이 이 스크립트에만 잠겨 있따는 것을 알게 되고 거래가 성사된다. 이 예상치 못한 스크립트 가지를 숨기는 구조는 각각의 조건이 머클트리의 잎인 복잡한 상황 조건을 가질 수 있게 해준다. 돈을 쓸 때, 다른 정보나 가지를 보여주지 않고 단지 그 가지에 머클트리의 일부였따는 증거를 더하면 된다. 이러한 것을 마스트가 가능하게 만들어 준다.
구현
마스트노드
- 마스트노드는 문자열 내용과 부모 포인터로 구성된다.
- 문자열 내용은 실행할 수있는 코드이며 마스터 노드는 여러 개의 자식을 가질 수 있다.
- 각각은 서로 다른 프로그램 실행 분기를 나타내며 addBr 메소드를 통해 새 분기를 추가 할 수 있다.
- 경로를 따라 각 노드의 모든 문자열 내용 결합 따라서 마스트 에서 하나의 가능한 경로에 대한 코드를 생성한다.[1]
평가와 전망
이 프로젝트의 주요 영향은 응용 프로그램에 있다. 계약을 활용 한 기존 환경, 마스트 도입은 기존에 큰 영향을 줄 수 있다. 비트코인 계약에서 네트워크의 분산 노드 사이의 코드 전송에 이르는 문제, 이 마스트 구현에 대한 잠재적 개선 사항은 다음과 같다.
- 분산 구조 및 실행에 대한 더 큰 지원
- 또는 더 큰 확장 성을 허용하는 프레임 워크 추가
- 이 데이터 구조의 사용자에 의해 완벽한 통합
- 비트코인은 저장된 데이터의 양을 줄임
- 블록체인을 통해 더 많은 성과를 거둘 수 있게 될 것
- 우리가 모델링 한 의지와 같은 복잡한 거래[1]
각주
참고자료
- 제레미 루빈,〈마스트〉,《GitHub》
같이 보기