OpenCBDC 프로젝트와 디지탈화폐

1.
나라별 중앙은행이 CDBC를 발행할 날이 점점더 가까이 오는 듯 합니다. BIS도 그렇고 한국은행도 관련한 보고서들이 점점 많아지고 있습니다. 지난 1월에 나온 한국은행의 중앙은행 디지털화폐(CBDC) 주요 이슈별 글로벌 논의 동향도 이런 흐름을 정리하고 있습니다.

위 보고서중 도입배경을 설명하는 부분입니다. “빅테크의 시장지배력 및 데이터 집중”을 다루는 부분이 흥미롭습니다. 국내에서도 빅테크규제를 본격화하는 것과 유사한 흐름입니다.

중앙은행은 CBDC를 통해 개방적 공공화폐 인프라를 확충함으로써 빅테크의 시장지배력 강화와 개인정보 집중 심화에 대응하고 지급결제 및 통화제도에 대한 사회적 신뢰를 유지할 책무가 있음

또다른 부분은 “설계 및 운영 방식 관련 글로벌 논의”입니다. CBDC 설계 접근방식 (CBDC 피라미드),CBDC 시스템 운영 구조(BIS),원장관리 방식: 분산원장 적용 여부를 주제로 한 국제논의를 정리한 부분입니다. Rise of the central bank digital currencies: drivers, approaches and technologies을 인용한 그림입니다.



Download (PDF, 5.62MB)

2.
중국을 제외하면 모의실험이나 개념검증 수준인 현재 CDBC와 관련한 재미있는 프로젝트를 발표하였습니다. MIT가 운용중인 Digital Currency Initiative가 발표한 Project Hamilton – Building a Hypothetical Central Bank Digital Currency입니다.

프로젝트 소개를 보면 현재 미국 보스톤연방준비은행와 협력하여 추진하는 중입니다.

OepnCBDC
OpenCBDC is an open source project to engage in collaborative technical research to understand the space of designs for potential central bank digital currencies (CBDC). The first contribution is OpenCBDC-tx, an experimental transaction processor that emerged from joint research with the Federal Reserve of Boston as part of Project Hamilton.

Project Hamilton

Project Hamilton is a multi-year, collaborative research project between the MIT Digital Currency Initiative and the Federal Reserve Bank of Boston. The goal of Project Hamilton is to investigate the technical feasibility of a general purpose CBDC that could support a payment economy at the scale of the United States, as well as to gain a hands-on understanding of a hypothetical CBDC’s technical challenges, opportunities, risks, and tradeoffs.

또한 hypothetical CDBC라는 표현을 사용하고 있습니다. 현실적인 근거를 가지고 구축가능한 모델을 만들고자 하네요. 프로젝트의 핵심적인 성과는 OpenCBDC입니다.

우선 Hamilton Project의 현황은 Project Hamilton Phase 1 Executive Summary에서 소개하고 있습니다. 현재 Phase1을 마친 상태로 아래와 같은 성과를 얻었다고 합니다.

Phase 1 has surfaced several key learnings on the potential design of a CBDC: Select ideas from cryptography, distributed systems, and blockchain technology can provide unique functionality and robust performance.

Download (PDF, 323KB)

Phase 1의 성과를 자세히 소개하는 것이 OpenCDBC입니다. 몇 가지 기능을 생략하였지만 초당 17만건을 처리하였다고 합니다.

Technical Specifications

OpenCBDC-tx is a modular, extensible transaction processor for a hypothetical CBDC that implements two architectures. The first, the atomizer, can process 170,000 transactions per second. The second, using two-phase commit, can process up to 1.7M transactions per second.

Core Features

A central transaction processor run by a trusted operator (such as a Central Bank)
Digital signatures to authorize payments using UTXOs (unspent funds are stored as cryptographic hashes)
A modular design supporting experimentation with models where intermediaries could take on a variety of different roles and serve different purposes, including non-custodial or self-custody
Currently, the design does not directly support intermediaries, fees, or identities outside of public keys, however, we are interested in exploring and benchmarking new features.

Key Concepts

Decoupling transaction validation and execution
Secure and flexible transaction formats
Efficiency of transaction execution

Two Different Architectures: Atomizer and 2 Phase Commit

이와 관련한 자세한 논문은 A High Performance Payment Processing System Designed for Central Bank Digital Currencies입니다.

Download (PDF, 1.25MB)

OpenCDBC-tx와 관련한 시스템설계와 데이타흐름입니다. 먼저 atomizer입니다.

1. User wallet submits a valid transaction to the sentinel for execution by the system.
2. Sentinel validates the transaction and responds to the user that the transaction is valid and is now pending execution.
3. Sentinel converts the transaction to a compact transaction and forwards it to the shards.
4. Shards check the input UHS IDs are unspent and forward the compact transaction to the atomizer. The shards attach their current block height and the list of input indexes the shard is attesting are unspent to the notification.
5. Atomizer collects notifications from shards and appends the compact transaction to its current block once a full set of attestations for all transaction input UHS IDs have been received. Once the make block timer has expired, the atomizer seals the current block and broadcasts it to listeners. Shards update their current block height and their set of unspent UHS IDs by deleting UHS IDs spent by transactions in the block and creating newly created UHSIDs. The watchtower updates its cache of UHS IDs to indicate which have been spent and created recently.
6. User wallet queries the watchtower to determine whether their transaction has been successfully executed.
7. Watchtower responds to the user wallet to confirm the transaction has succeeded.

다음은 2PC(Two Phase Commiter)와 관련한 부분입니다.

1. User wallet submits a valid transaction to sentinel.
2. Sentinel converts the transaction to a compact trans-action and forwards it to the coordinator.
3. Coordinator splits input and output UHS IDs to be relevant for each shard and issues a prepare with each UHS ID subset.
4. Each shard locks the relevant input IDs and reserves output IDs, records data about the transaction locally, and responds to coordinator indicating it was successful.
5. Coordinator issues a commit to each shard.
6. Each shard finalizes the transaction by atomically deleting the input IDs, creating the output IDs, and updating local transaction state about the status of the transaction. The shard then responds to coordi-nator to indicate that the commit was successful.
7. Coordinator issues a discard to each shard informing them that the transaction is now complete and it can forget the relevant transaction state.
8. Coordinator responds to sentinel indicating that the transaction was successfully executed.
9. Sentinel responds to user wallet, forwarding success response from coordinator

관련한 소스는 Opencbdc-tx이며 드물게 C++로 개발되어 있습니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.