티스토리 뷰
카르다노가 나오게 된 동기는 위 포스팅에서 확인할 수 있다.
백서에서 소개된 카르다노만의 메커니즘을 이 포스팅에서 다뤄본다.
백서에서 소개하는 목차는 아래와 같고 순서대로 정리해본다.
1. PoS (지분 증명)
2. Social Elements of Money (돈의 사회적인 요소)
3. Designing in Layers - Cardano Settlement Layer (계층 설계 - 카르다노 세틀먼트 레이어)
4. Scripting (스크립팅)
5. Side Chain (사이드 체인)
6. Signitures (서명)
7. User Issued Assets (UIAs) (사용자 발행 자산)
8. Scalability (확장성)
9. Cardano Computation Layer (카르다노 연산 레이어)
10. Regulation (규제)
Proof of Stake
카르다노는 지분 증명 (PoS)를 사용하며 우로보로스라고 불리는 프로토콜을 사용한다고 한다.
※ 포스팅 참고 : https://godd.tistory.com/97
이 방식을 채택함으로써 미래에 대비할 수 있는 충분한 유연성을 확보했다고 한다.
Social Elements of Money
비트코인 vs 라이트코인 / 이더리움 vs 이더리움 클래식
기술적으로는 차이가 없다..라이트코인, 이더리움 클래식은 강력하고 역동적인 커뮤니티, 사회적 의무를 유지하고 있다
암호화폐의 다양성을 보이는건 사회적 요소에 대한 근거를 둔다.
철학, 통화 정책, 개발자 사이의 의견 충돌 등이 Fork로 이어지게 됨.
현금으로 보면 정치적 변화나 지역적인 충돌에도 통화 위기나 대규모 이탈 없이 살아남는다.
여기서 레거시 시스템의 요소들을 차용할 필요가 있다는 것이다.
카르다노 사용자들에게는 사회적 계약을 이해하기 위한 인센티브가 필요하고,
생산적인 방법으로 변화를 제안함에 있어서 자유를 가진다.
이 자유는 어떻게 시장이 규제되어야 하는지부터 어떤 프로젝트가 지원을 받아야 하는지 이르기까지 가치 교환 시스템의 모든 측면으로 확장된다.
중앙 집중화된 참여자에 의해 중개될 순 없고 rich한 소수에 의해 채택되어서도 안된다.
즉, 공평한 규제와 업데이트를 위해서 CSL 위에 구축되는 오버레이 프로토콜 시스템을 구현한다고 한다.
첫째, 탈 중앙화 된 신탁 시스템의 도입
-> 어느 사용자나 투표를 통해 자금을 지원 받을 수 있고 그에 대한 논의는 중앙화 된 기관이 아닌 CSL의 이해 관계자.
둘째, 소프트/하드 포크에 대해 제안하고 투표하기 위한 공식 시스템을 포함
-> 공식적인 규칙과 절차에 트랙잭션, 합의, 네트워크라는 부문을 가진 헌법처럼 검사할 수 있는 모델을 제공해야 함.
Designing in Layers - Cardano Settlement Layer
카르다노는 프로토콜이나 언어를 설계할 때 미래를 예상하는게 아니라 과거를 참조해서 만든다는데 아래는 그냥 참고
역사적 관점으로부터 아래와 같은 원칙을 따라 설계했다.
1. 미래를 예측하지 못하므로 변화할 수 있는 여지를 만든다.
2. 단순한게 좋다.
3. 사공이 많으면 배가 산으로 간다.
4. 표준이 설정되면 차선책인지 여부에 관계 없이 지속될 것이다.
5. 나쁜 아이디어라도 좋은 아이디어로 진화시킬 수 있다.
블록체인은 타임스탬프와 불변성에 대한 보장을 해주는 기술이고, 돈의 맥락에서는 자산의 소유권을 제공해준다.
크게 블록체인 플랫폼 위에서는 아래와 같이 두가지 개념이 공존한다.
- 자산의 이동
- 프로그램 저장 및 실행과 같은 연산
이 형태는 몇가지 문제점을 제기하며 Layer 구분을 강조한다.
1. 설계 원칙(관심 사항의 분리)에 위배된다.
이더리움의 경우 거래는 스마트 컨트랙트를 통해 하게 되고 자산의 이동도 같은 맥락으로 처리 된다.
이는 임의의 거래를 스크립트로 만들고 사기를 칠 경우 임의로 허가하여 트랜잭션을 롤백할 수도 있다는 걸 의미한다.
2. 메타데이터 저장에 대한 문제가 있다.
어떤 메타 데이터를 저장할 것인지 결정 문제.
언제까지 메타 데이터를 저장할 것인지 문제. (국가 별 개인정보 보관 기관과 같은 법 관련)
3. 유출하고 싶지 않은 프로그램 연산을 공개해야 한다.
예를들어, 회사 직원의 평균 연봉 측정 관련 연산 시 모든 연산을 공개적으로 알려야 한다면 각 개인의 연봉을 유출하게 될 수도 있다.
그래서 카르다노는 자산 관련 CSL과 연산 관련 CCL 레이어를 분리함으로써 스마트 컨트랙트의 설계, 사용, 개인정보 보호 등을 더 융통성 있게 허용한다고 한다.
기존의 분리되지 않은 체인의 경우 Block #13 에 다른데서 만든 스크립트로 인해 문제가 있거나 금융 규제로 인해 메타데이터를 삭제해야 한다면 합의를 통해 Hard Fork 할 수 밖에 없다.
그러나 자산 관리와 연산 로직에 대한 Layer를 분리하게 되면,
위 그림과 같이 CSL은 자산 관련된 정보를 처리하고, CCL은 다른 메타데이터를 저장하게 되므로 금융 규제나 스크립트 문제가 발생해도 CCL에서만 fork를 하므로 내 돈과는 관련이 없어진다.
레이어 분리에 대한 로드맵의 목표는 아래와 같다.
1. 두가지 스크립트 언어 set에 대한 지원.
- 자산의 이동 (실제 돈의 이동)
- 오버레이 프로토콜에 대한 지원을 강화 (스마트 컨트랙트)
2. 다른 Ledger와의 KMZ 사이드 체인 지원
3. 양자 저항 시그니처를 포함한 여러 유형의 시그니처 지원
4. 다중 사용자가 발행한 자산 지원
5. 확장성 달성, 더 많은 사용자가 가입할수록 시스템 기능이 향상됨
Scripting
카르다노에서 Simon이라는 신규 언어를 선택했는데
이 언어의 주요 개념은 금융 트랜잭션이 보통 기본적인 요소들의 집합으로 구성되어 있으므로 일반적인 프로그래밍 없이 대부분의 트랜잭션 유형들을 지원할 수 있다는 점이다.
이걸 사용한 장점은
1. 보안이나 프로그램 실행 이벤트를 철저하게 다룸
-> 새로운 돈을 생성하는 등의 문제가 있는 거래 이벤트 실행을 철저하게 다루도록 작성이 가능
2. 새로운 기능이 필요한 경우 소프트 포크를 통해 확장이 가능함
-> CSL과 특수 목적 서버나 기존 금융 시스템, 오버레이 프로토콜 등과 연결이 필요한 경우 소프트 포크로 업데이트
또한, 스마트 컨트랙트 언어로는 상호운용성을 위한 DSL로 하스켈 기반의 함수형 언어인 Plutus를 사용한단다.
Sidechains
카르다노는 작업 증명의 증명 (Proofs of proofs of works) 을 기반으로 한 KMZ Sidechains 를 지원한다.
(이거 논문 정리 -> http://fc16.ifca.ai/bitcoin/papers/KLS16.pdf)
Sidechain을 통해 CSL에서 CCL, 프로토콜이 지원되는 다른 블록체인으로 안전하게 이동할 수 있다.
KMZ Sidechain은 캡슐화가 잘 되어 있어 CSL에서는 실질적으로 블랙박스이지만 계산이 완료된 자산에 대한 정보는 알 수 있도록 보장할 수 있다.
Sidechain을 통해 다른 블록체인 (CCL 포함) 과의 이동이 가능하다.
Signitures
기본적으로 그림과 같이 Alice가 Bob에게 자산을 보낼 때는 공개키 기반의 전자서명을 포함해서 보낸다.
암호화폐가 이 서명 체계를 선택할 때 직면하는 조건은
1. 구조 자체에 장기적인 보안 내구성이 있는가
2. 사용하는 기관에서 사용하는 특정 서명 체계를 따를 수 있는가
결국 서명을 사용함에 있어서 확장성을 제공해야 한다는 말인데, 카르다노는 타원 곡선 암호화 기술인 Ed25519 curve를 사용하면서 HD Wallet에 대한 지원을 추가함으로써 기존의 라이브러리를 향상시켰다.
여러 서명 체계로 확장한 사례는 많은 의미가 있다.
- 추후 양자 컴퓨팅으로 인한 서명 알고리즘 무효화를 방어할 수 있는 알고리즘으로 향상 가능
- 타 암호화폐와의 상호 운용성을 향상 시키기 위한 서명 체계 추가 가능
User Issued Assets (UIAs)
UIA는 한마디로 토큰이다.
Cardano는 토큰을 위해서는 다음과 같은 것들이 필요하다고 한다.
- 매우 큰 UTXO 상태를 추적 할 수 있도록 특수 목적으로 인증된 데이터 구조
- 대기중인 트랜잭션 집합을 보유 할 수있는 분산형 mempool 기능
- 거대한 글로벌 블록 체인을 허용하는 블록 체인 파티셔닝 및 체크 포인트
- 서로 다른 체계의 거래를 포함하는 합의 노드를 보상하기 위한 인센티브 제도
- 사용자가 추적하려는 통화를 결정할 수있게 하는 구독 메커니즘
- UIAs가 기본 자산과 유사한 보안을 누릴 수 있는 강력한 보안 보장
- UIA와 기본 토큰 간의 유동성 개선을 위한 탈중앙화 된 시장 지원
Scalability
현재 암호화폐의 블록체인은 Append-Only Linked List 이다.
합의 알고리즘의 경우 노드들이 항상 같은 일을 하므로 처리 및 스토리지 성능을 향상시키기 어렵다.
카르다노는 탈중앙화 된 Ouroboros 협의체 선출 방식을 이용하여 확장성을 제공한다.
예를 들면, 특정 기간동안 Ledger를 유지하는 협의체로 선출하여 신뢰할 수 있는 특정 노드 집합을 통해서 트랜잭션들을 처리하고 다른 곳으로 분할하는 방식을 사용한다.
Cardano Computation Layer
CCL 에서의 기능은 두가지가 있을 수 있음
1. Private 한 단발성 프로그램
-> 이 경우 기존 블록체인 패러다임을 피하는게 좋음.
신뢰해야 하는 게시판이나 메세지 패싱의 채널로만 CSL을 레퍼런스 하면 됨
2. 이더리움과 비슷한 Ledger
-> 블록체인 필요
-> Plutus 라는 Solidity와 비슷한 스마트 컨트랙트 언어 지원
Regulation
금융에 있어서 규제는 필요하다. 하지만, 암호화폐 도입을 위해서는 문제점이 많다
카르다노는 개인이 자산을 관리하는 권리와 정부기관과 같은 시장들의 권리를 나눠서 생각해야 한다고 한다.
1. 개인적으로 항상 자신의 자산을 독자적으로 접근해야 한다.
어떤 기관의 접근은 허용하지 않고 최소한의 공통 분모만 가지도록 설계 한다.
2. 블록체인을 기반으로 History에 대한 불변성을 제공한다. 특정 그룹에 변경에 대한 권한을 가지면 악용을 하기 때문.
3. 자산의 이동은 누구나 할 수 있다.
'Architecture > Financial' 카테고리의 다른 글
[해외송금] SWIFT 거래와 리플 (4) | 2021.07.23 |
---|---|
[블록체인] 카르다노 (ADA) 백서 정리 #1 - 동기 (0) | 2021.06.22 |
[블록체인] Bitcoin 백서 정리 #3 - 정리 (1) | 2021.06.04 |
[블록체인] Bitcoin 백서 정리 #2 - 메커니즘 (0) | 2021.06.04 |
[블록체인] Bitcoin 백서 정리 #1 - 도입부 (0) | 2021.05.30 |
- Total
- Today
- Yesterday
- CARDANO
- 암호화폐
- 아키텍처
- leetcode
- vuejs
- SpringBoot
- 알고리즘
- Spring
- gRPC
- Blockchain
- excel parsing
- architecture
- white paper
- 비트코인
- 동적계획법
- 백준
- 카르다노
- Bruteforce
- 사토시 나가모토
- kubernetes
- k8s
- 블록체인
- Nealford
- Java
- Redis
- 스프링 시큐리티
- Vue.js
- 스프링
- Bitcoin
- DP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |