테조스 백서(한글)
Tezos — a self-amending crypto-ledger White paper
자가 수정형 암호화 원장 백서
L.M. Goodman
2014년 9월2일
번역
기획
“Our argument is not flatly circular, but something like it.”
윌리엄 반 오르먼 퀸
요약
우리는 테조스, 일반적이고 자가 수정을 진행하는 암호화 원장을 대표합니다. 테조스는 어떠한 블록체인 기반 원장이든 대표하는 것이 가능합니다. 정상적인 블록체인 상에서의 작업은 네트워크를 담당하는 shell로 추상화된 순전히 기능적인 모듈로 구현되게 됩니다. 비트코인, 이더리움, 크립토 노트 등은 모두 네트워크 레이어에 대한 적절한 인터페이스를 구현함으로써 Tezos 내에서 표현을 하는 것이 가능합니다. 가장 중요하게, 테조스는 메타 업그레이드를 지원함으로써, 프로토콜은 자신들의 코드를 수정함으로써 진화하게 됩니다. 이를 위해 테조스는 씨드 프로토콜을 시작하여서 스테이크 홀더들이 수정안들에 대해 승인하는 과정을 거치게 되며, 이는 투표 과정 또한 포함하게 됩니다. 이것은 철학자인 피터 서버의 Nomic이라는 게임과는 다르지 않습니다. (완전히 내성적인 규칙 세트를 중심으로 구축된 게임입니다.) 또한, 테조스의 씨드 프로토콜은 순수한 POS 시스템을 기반으로 해서 완벽한 스마트 컨트랙트를 지원하게 됩니다. 테조스는 Ocaml 상에서 구현되어 있습니다. Ocaml은 강력한 함수프로그래밍 언어로써, 속도, 명확한 구문과 의미, 그리고 생태계 생성 기능을 제공합니다. 테조스는 정식증명에 대한 좋은 후보자 입니다. 비트코인 프로토콜과 유사한 점과 암호화 화폐의 기본적인 원리는 이 논문의 나머지 부분에서 다루고 있습니다.
목차
- 도입부
- 자가 수정형 암호화 원장
2.1. 수학적인 표현
2.2. 네트워크 쉘
2.2.1. 시계
2.2.2. 체인 선정 알고리즘
2.2.3. 네트워크 레벨의 방어
2.3. 기능적인 표현
2.3.1. 체인의 유효성 검사
2.3.2. 프로토콜 개정
2.3.3. RPC - 씨드 프로토콜
3.1. 경제학
3.1.1. 코인들
3.1.2. 채굴과 서명 보상
3.1.3. 잃어버린 코인들
3.1.4. 수정 규칙
3.2. POS 메커니즘
3.2.1. 전반적인 오버뷰
3.2.2. 시계
3.2.3. 랜덤 시드 생성
3.2.4. 코인을 따라가는 절차
3.2.5. 블록 채굴
3.2.6. 서명 블록
3.2.7. 체인의 무게
3.2.8. 폐기
3.3. 스마트 컨트랙트
3.3.1. 컨트랙트 종류
3.3.2. 생성
3.3.3. 트랜잭션들
3.3.4. 저장비
3.3.5. 코드
3.3.6. 사용료 - 결론
1. 도입부
이 논문의 첫번째 부분에서는 추상적인 블록체인들의 컨셉과 자가 수정형 암호화 원장의 구현에 대해 다룰 것이며, 두번째 부분에서는 우리들의 제안된 씨드 프로토콜에 대해서 설명할 예정입니다.
2. 자가 수정형 암호화 원장
블록체인 프로토콜은 3가지 종류의 특정적인 부분으로 분해 될 수 있습니다.
- 블록을 발견하고 트랜잭션을 중계하는 네트워크 프로토콜
- 트랜잭션을 유효하게 만드는 것을 지정하는 트랜잭션 프로토콜
- 특정한 체인에서 컨센서스를 형성하는 컨센서스 프로토콜
테조스는 일반적인 네트워크 쉘을 구현합니다. 이 쉘은 트랜잭션 프로토콜 및 합의 프로토콜에 적용됩니다. 우리는 합의 프로토콜과 트랜잭션 프로토콜을 함께 블록체인 프로토콜이라고 부르게 됩니다. 우리는 우선 블록체인 프로토콜을 수학적으로 표현한 다음에 테조스의 여러한 부분들을 구현해냅니다.
2.1. 수학적인 표현
블록체인 프로토콜은 근본적으로 글로벌 상태의 병행 돌연변이의 모나드 구현입니다. 이것은 “블록”을 글로벌한 상태에서 활동하는 연산자로 정의하면서 이루어지게 됩니다. 제네시스 상태에서 작용하는 블록의 자유로운 단조는 나무 구조를 형성합니다. 전역, 표준 상태는 지정된 순서에 대한 최소 잎사귀로 정의됩니다.
이것은 다음과 같은 추상적인 표현을 제안하게 됩니다:
- (S, ≤)를 가능한 순서대로 나열하고, 셀 수 있는 상태 집합이라 하자.
- ⊘ ∈ / S는 특수한 무효 상태를 나타낸다.
- B⊂SSU{⊘}가 블록의 집합이다. 유효한 블록들은 B ∩ SS일 것이다.
S에 대한 전체 순서는 ∀s ∈ S, ⊘ <s가되도록 확장됩니다. 이 순서는 블록 트리에서 어떤 잎사귀(리프)가 표준 잎사귀로 간주되는지 결정합니다. B의 블록은 활동하는 운영자의 상태로 간주됩니다.
모든 블록체인 프로토콜(비트코인. 이더리움, 피어코인등)은 튜플에 의해 완전히 결정될 수 있습니다.
(S, ≤, ⊘, B ⊂ SS∪{⊘})
네트워킹 프로토콜은 기본적으로 이러한 블록체인들과 동일합니다. 하지만, 블록생성으로 인해 인센티브를 받는 채굴 알고리즘은 매우 중요한 부분으로 작용하게 됩니다.
테조스는 이러한 블록들이 스스로 프로토콜 속에서 움직이게 함으로써, 블록체인 프로토콜을 조금 더 내성적으로 만들었습니다. 그러면 우리는 다음과 같이 재귀적으로 일련의 프로토콜을 표현하는 것이 가능해집니다.
P ={(S, ≤, ⊘, B ⊂ S(S×P)∪{⊘})}
2.2. 네트워크 쉘
이 수학적인 설명은 어떻게 블록 트리를 만들 수 있는지 우리에게 설명해주지 않습니다. 이것은 gossip네트워크와 프로토콜 사이의 인터페이스 역할을 하는 네트워크 쉘의 역할입니다.
네트워크 쉘은 최선의 체인이라고 여겨진 클라이언트를 유지시킴으로써 작동됩니다. 이것은 3가지 종류의 객체를 인식합니다. 첫번째와 두번째는 트랜잭션과 블록들로, 유효한 것으로 간주될 경우에만 네트워크를 통해 전송됩니다. 세번째는 프로토콜로, ocaml 모듈은 기존의 프로토콜을 수정하는데 사용되게 됩니다. 이 부분에 대해선 이후에 설명할 예정이며, 지금은 트랜잭션과 블록 부분에 대해서 집중할 예정입니다.
네트워크 쉘에서 가장 중요하자 힘든 부분은 DOS 공격으로부터 노드를 보호하는 것입니다.
2.2.1. 시계(clock)
모든 블록은 네트워크 쉘에 보이는 타임 스탬프를 들고 있습니다. 미래의 블록은 타임스탬프가 시스템 시간의 몇 분 내에 있으면 버퍼링되고 그렇지 않은 경우 거부됩니다. 프로토콜 설계는 클라이언트에서 합리적인 clock 드리프트를 허용해야 하며 타임 스탬프가 위조될 수 있다고 가정해야 합니다.
2.2.2. 체인 선정 알고리즘
쉘은 전체 블록 트리가 아닌 단일 체인을 유지합니다. 이 체인은 클라이언트가 훨씬 더 나은 체인을 인식할 때에만 덮어 쓰게 됩니다.
트리를 유지 관리하는 것은 네트워크 통신 측면에서는 다소 간소화됩니다. 하지만, 공격자들이 낮은 스코어를 가지면서 하는 유효한 포크를 생산하는DOS 공격에는 취약하게 됩니다.
그러나 한 노드가 주어진 체인에 대해서 거짓말을 하는 것은 가능합니다. 이 거짓말은 클라이언트가 많은 수의 블록을 처리해야만 발견하는 것이 가능합니다. 그러나 그런 노드들은 이후에 무시될 수 있습니다.
다행히도, 낮은 점수를 받게 되는 프로토콜은 블록의 생성 시간이 매우 더뎌 집니다. 따라서 클라이언트는 발표된 점수가 거짓말이라고 결론 짓기전에 몇 블록의 “약한” 포크들만 고려해도 되게 됩니다.
2.2.3. 네트워크 레벨의 방어
추가적으로 쉘은 “방어적”입니다. 이것은 다양한 IP 범위에서 많은 피어에 연결을 시도합니다. 또한, 연결이 끊긴 피어를 탐지하고 악성 노드를 차단합니다.
특정 서비스 거부 공격으로부터 보호하기 위해서 이 프로토콜은 쉘에 블록 및 트랜잭션 크기에 대한 종속 범위를 제공하게 됩니다.
백서 원문
번역 후기 - 테조스 한글 백서 번역을 무사히 끝마쳤습니다.
Steemit Token LAB 백서 번역 #1. 테조스
- Steemit KR에서 암호화폐 백서를 번역합니다. 첫번째 프로젝트로 테조스 백서를 한글로 번역하였습니다.
- 테조스에 관심이 많으신
@areyoucrazy 님께 번역을 의뢰하였으며, 빠르게 번역을 해주셨습니다. 앞으로 3번에 걸쳐 업로드할 계획입니다.
- 앞으로도 지속적으로 관심있는 암호화폐 백서의 번역 작업을 이어갈 계획입니다.
- 선 지급한 번역료 외에 본 글 저자보상 SBD의 30%는 번역가에게 전달되며, 50%는 다음 백서 번역을 위하여 적립합니다.
번역 저작권
- 이용시 출처 표시
- 비상업적 이용만 가능
- 변형 등 2차적 저작물 작성 가능