* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.
상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : )
https://hyperledger-fabric.readthedocs.io/en/release-1.4/blockchain.html
Introduction
하이퍼레저 패브릭은 높은 수준의 기밀성, 탄력성, 유연성 및 탄력성을 제공하는 모듈식 아키텍쳐에 기반을 둔 분산원장솔루션을 위한 플랫폼이다. 이는 다양한 요소의 플러그 방식 구현 및 경제생태계에 존재하는 복잡함을 지원할 수 있도록 설계되었다.
처음 사용하는 사용자들에게는 아래 introduction의 나머지 부분을 통해 어떻게 블록체인이 동작하고 하이퍼레저 패브릭의 특징 및 구성요소들은 어떤 것들이 있는지에 친숙해지는 것을 추천한다.
익숙해진 다음, 혹은 이미 블록체인 및 하이퍼레저 패브릭에 익숙하다면 Getting Started 섹션으로 가서 데모 프로그램 및 기술 명세, API들을 살펴보면 된다.
What is a Blockchain?
A Distributed Ledger
블록체인 네트워크의 핵심은 네트워크에서 발생하는 모든 트랜잭션을 기록하는 분산 원장이다.
블록체인 원장은 보통 탈중앙화되어 있다고 하는데, 이는 블록체인 네트워크를 유지하는데 협력하는 각각의 다양한 네트워크 참가자들에게 복제되기 때문이다. 우리는 탈중앙화 및 협력이 현실 세계에서 상품 및 서비스를 교환하는 비즈니스 거래를 반영한 강력한 속성임을 알 수 있다.
탈중앙화 및 협력적일뿐 아니라 블록체인에 기록되는 정보는 오로지 추가만이 가능하다. 이는 트랜잭션이 한번 원장에 추가되면 수정될 수 없음을 보장하는 암호화 기술이다. 이러한 "변경할 수 없는" 속성은 정보의 출처를 쉽게 알 수 있게 해준다. 왜냐하면 참가자들은 진자 정보가 이후 수정되지 않았음을 확신할 수 있기 때문이다. 이것이 바로 블록체인이 증명시스템이라고 불리는 이유이다.
Smart Contract
정보의 업데이트에 일관성을 유지하고 전체 원장 기능 (트랜잭션, 쿼리 등) 을 가능하게 하기 위해 블록체인 네트워크는 스마트 컨트랙트를 사용한다. 이는 원장에 대한 접근을 제어하기 위한 것이다.
스마트 컨트랙트는 정보를 캡슐화하고 네트워크를 통해 이를 간단히 유지하는 핵심 메커니즘일 뿐 아니라 참가자가 트랜잭션의 특정 부분을 자동으로 실행할 수 있도록 작성될 수도 있다.
예를 들어, 스마트 컨트랙트는 물품의 도착 시간에 따라 변화하는 운송 요금을 규정하는데 사용될 수 있다. 양측 참가자가 동의하고 원장에 제출한 조항에 따라, 물품이 도착하면 적당한 요금이 자동으로 청구된다.
Consensus
네트워크 상 원장의 트랜잭션을 동기화하는 과정을 합의라고 부른다. 이는 적절한 참가자에 의해 트랜잭션이 승인되었을 때만 원장이 업데이트되도록 보증하기 위함이며, 또한 여러 원장이 업데이트될 때 동일한 트랜잭션들이 동일한 순서로 업데이트도되록 보증하기 위한 것이다.
후에는 원장, 스마트 컨트랙트, 그리고 합의에 대해 더 많은 것을 배울 것이다. 현재로서는 블록체인을 스마트 계약을 통해 업데이트되고 합의라는 협력적인 프로세스를 통해 지속적으로 동기화되는 공유 및 복제 트랜잭션 시스템으로 생각해도 충분하다.
Why is a Blockchain useful?
Today's Systems of Record
오늘날의 트랜잭션 네트워크는 비즈니스 기록이 유지된 후 존재해온 네트워크에 약간 업데이트된 버전에 지나지 않는다. 비즈니스 네트워크의 멤버들은 서로 거래를 하지만 거래에 대한 별도의 기록을 유지한다. 16세기 플랑드르 태피스트리이든 오늘날의 증권이든, 거래하는 상품에 대해서는 상품을 판매할 때마다 출처를 설정해야 하는데, 이는 상품을 판매하는 측이 상품에 대한 일련의 소유권을 보유해야만 합니다.
남은 것은 다음과 같은 비즈니스 네트워크입니다.
현대의 기술은 이 과정을 석판 및 종이 폴더에서 하드드라이브 및 클라우드 플랫폼으로 가져왔지만 기본 구조는 동일합니다. 네트워크 참가자들의 신원을 관리할 수 있는 통합시스템이 존재하지 않으며, 유가 증권 거래에 대한 출처를 명확하게 하는 데에는 몇 일이 소요됩니다 (전 세계적으로는 수조달러에 달하는 규모). 계약은 직접 서명 및 실행되어야 하며 모든 시스템의 데이터베이스는 고유한 정보를 갖고 있습니다. 그러므로 이는 단일 장애 지점을 나타냅니다.
가시성 및 신뢰의 필요성이 명확함에도 불구하고, 오늘날의 정보에 대한 접근 방식 및 공유 프로세스로는 비즈니스 네트워크에 걸친 기록 시스템을 구축하는 것이 불가능합니다.
The Blockchain Difference
"현대적인" 트랜잭션 시스템에 의해 표현되는 비효율적인 방식 대신 네트워크에서 신원을 생성하고, 트랜잭션을 실행하며, 데이터를 저장하는 방법에 대한 기준을 가지게 된다면 어떨까? 트랜잭션 리스트 조회를 통해 자산의 출처를 확인할 수 있고, 한번 기록되면 변경할 수 없기때문에 신뢰할 수 있다면 어떨까?
그러한 비즈니스는 다음과 같이 생겼을 것이다:
이는 모든 참가자들이 원장의 복사본을 갖고 있는 블록체인 네트워크이다. 원장의 정보는 공유될 분만 아니라 원장을 업데이트하는 프로세스 또한 공유된다. 개인 원장을 업데이트하기 위해 참가자들의 개인 프로그램이 사용되는 현대 시스템과 달리, 블록체인 시스템은 원장을 공유하기 위해 공유된 프로그램을 갖고 있다.
공유 원장을 통해 비즈니스 네트워크를 관리할 수 있기 때문에, 블록체인 네트워크는 시간, 비용 및 개인 정보 처리와 관련된 위험을 줄일 수 있으며 신뢰성 및 가시성은 향상시킬 수 있다.
이제 블록체인이 무엇이고 왜 유용한지를 알게 되었다. 다른 중요한 세부적인 것들도 있지만, 이들은 모두 정보 및 프로세스의 공유에 대한 기본 아이디어와 관련있는 것이다.
What is Hyperledger Fabric?
리눅스재단은 업계 전반의 블록체인 기술을 향상시키기 위해 2015년 하이퍼레저 프로젝트를 설립했다. 단일 블록체인 표준을 선언하기 보다는, 공동체 과정을 통해 블록체인 기술을 개발하는 협력적 방법을 장려했으며, 지적재산권 또한 공개 개발 및 시간이 지남에 따라 주요 표준을 선택하는 방식을 장려했다.
하이퍼레저 패브릭은 하이퍼레저 내 블록체인 프로젝트 중 하나이다. 다른 블록체인 기술들처럼, 원장을 가지고 있고, 스마트 컨트랙트를 사용하며 참가자들에 의해 트랜잭션이 관리되는 시스템이다.
하이퍼레저 패브릭이 다른 블록체인 시스템과 다른 점은 private & permissioned 시스템이라는 점이다. 알 수 없는 사용자가 네트워크에 참가하는 무허가형 공개 시스템 대신 (트랜잭션을 검증하고 네트워크를 보호하기 위해 "proof of work" 같은 프로토콜이 필요한), 하이퍼레저 패브릭 네트워크의 멤버들은 신뢰성있는 Membership Service Provider (MSP) 를 통해 멤버로 등록을 한다.
하이퍼레저 패브릭은 또한 몇몇 플러그형 옵션을 지원한다. 원장의 데이터는 다양한 형태로 저장될 수 있으며 합의 메커니즘은 교체될 수 있고, 다른 MSP들이 지원된다.
또, 참가자 그룹이 별도의 트랜잭션 원장을 만들 수 있도록 해주는 채널을 생성할 수도 있다. 이는 특히 일부 참가자들 간 경쟁자여서 모든 트랜잭션을 공유하기 원하지 않을 때 (예를 들어 일부 참가자에게 제공하는 특별 가격), 중요한 요소이다. 두 명의 참가자가 채널을 구성하면 해당 참가자와 나머지 참가자만이 원장 사본을 가진다.
Shared Ledger
하이퍼레저 패브릭은 world state와 transaction log라는 두 가지로 구성된 하위시스템 원장이 있다. 각 참가자는 그들이 속한 모든 하이퍼레저 패브릭 네트워크에 대한 원장의 사본을 가진다.
world state 요소는 특정 시점에 원장의 상태를 나타낸다. 원장의 데이터베이스인 것이다. transaction log는 world state의 현재 값을 초래한 모든 트랜잭션을 기록한다. 즉, world state의 업데이트 이력인 것이다. 그러므로 원장은 world state 데이터베이스와 transaction log 이력의 조합으로 구성된다.
원장은 world state에 대한 교체가능한 데이터저장소를 갖고 있다. 기본적으로 이는 LevelDB key-value 저장 데이터베이스이다. transaction log는 플러그형태일 필요가 없다. 단지 블록체인 네트워크에서 사용되는 원장 데이터베이스의 값의 전후를 기록하기만 한다.
Smart Contracts
하이퍼레저 패브릭의 스마트 컨트랙트는 체인코드로 작성되며 블록체인 외부 애플리케이션이 원장과 상호작용하고자 할 때 애플리케이션에 의해 호출된다. 대부분의 경우 체인코드는 원장의 데이터베이스 요소인 world state (예를 들어 쿼리) 와 상호작용하고 transaction log와는 상호작용하지 않는다.
체인코드는 여러 프로그래밍 언어로 작성될 수 있으며 현재는 Go 및 Node가 지원된다.
Privacy
네트워크의 필요성에 따라, B2B 네트워크 참가자들은 얼마나 많은 정보를 공유하는지에 대해 민감할 수 있다. 다른 네트워크의 경우 프라이버시가 상위 고려대상은 아니다.
하이퍼레저 패브릭은 (채널을 이용해) 프라이버시가 주요 운영 요구사항인 네트워크 뿐 아니라 비교적 공개적인 네트워크 또한 지원한다.
Consensus
트랜잭션은 서로 다른 참자가 집합에서 발생하더라고, 발생한 순서대로 원장에 기록되어야만 한다. 이를 위해서는 트랜잭션 순서를 설정해야 하며 오류로 (혹은 악의적으로) 원장에 들어온 잘못된 트랜잭션을 거절하는 방법 또한 필요하다.
이는 컴퓨터과학 분야에서 깊게 연구되어온 분야이며, 다른 절충안을 통해 이를 달성하는 다양한 방법들이 있다. 예를 들어 PBFT는 파일 손상이 발생해도 각 사본의 일관성을 유지하고 통신하기 위한 메커니즘을 제공할 수 있다. 비트코인에서는 채굴이라는 과정을 통해 순서가 정해지는데, 이는 모든 프로세스가 구축되는 순서를 정의하는 암호화된 퍼즐을 풀기 위해 컴퓨터들이 경쟁하는 과정이다.
하이퍼레저 패브릭은 네트워크를 시작하는 사람들이 참가자 간 존재하는 관계를 가장 잘 나타낼 수 있는 합의 메커니즘을 선택할 수 있도록 설계되었다. 앞서 언급한 프라이버시처럼 P2P 같은 구조적 관계가 고도화된 네트워크 등 다양한 요구사항들이 있다.
하이퍼레저 패브릭 합의 메커니즘에 대해 앞으로 더 많이 배울 것이며, 현재는 SOLO, Kafka, Raft를 포함하고 있다.
'● STUDY ● > Hyperledger' 카테고리의 다른 글
Publish Models or Business Network Definitions for use by applications (0) | 2019.08.14 |
---|---|
Hyperledger Composer Modeling Language (0) | 2019.08.13 |
Testing Business Networks (0) | 2019.08.12 |
Emitting events (0) | 2019.08.11 |
비즈니스 네트워크 배포하기 (0) | 2019.08.10 |