* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger-fabric.readthedocs.io/en/latest/whatis.html#performance-and-scalability

 

Introduction — hyperledger-fabricdocs master documentation

Docs » Introduction Edit on GitHub Introduction In general terms, a blockchain is an immutable transaction ledger, maintained within a distributed network of peer nodes. These nodes each maintain a copy of the ledger by applying transactions that have been

hyperledger-fabric.readthedocs.io

Performance and Scalability

블록체인 플랫폼의 성능은 트랜잭션 크기, 블록 크기, 네트워크 크기, 하드웨어 성능 등 다양한 변수의 영향을 받습니다. Hyperledger 커뮤니티는 현재 성능 및 스케일 작업 그룹 내에서 시험용 세트를 개발중이며, Hyperledger Caliper라고하는 벤치마킹 프레임워크를 구현했습니다.

 

IBM Research 팀은 Hyperledger Fabric의 아키텍처와 성능을 평가한 동료 검토 논문을 발간했으며, 그 작업은 개속 개발되고 블록체인 플랫폼 성능 및 스케일 특성의 결정적인 기준으로 여겨져야 합니다. 이 논문은 Fabric 아키텍처에 대한 심층적인 토론을 제시하고 Hyperledger Fabric v1.1의 예비 릴리즈를 사용해 플랫폼의 팀 내 성능 평가에 대해 보고하고 있습니다.

 

연구팀이 수행한 벤치마킹 작업은 Fabric v.1.1.0 릴리즈에서 상당한 성능 향상을 가져와 v1.0.0 릴리즈 레벨에서 플랫폼의 전체 성능을 두 배 이상 향상시켰습니다.

 

Conclusion

블록체인 플랫폼에 대한 심도깊은 평가는 Hyperledger Fabric을 포함시켜야 합니다.

 

패브릭의 차별화된 기능은 유연한 신뢰가정을 지원하는 허가형 블록체인의 확장성을 증가시켰으며, 이는 플랫폼이 정부, 금융, 공급망, 불류, 의료 등 보다 더 광범위한 기업 유즈케이스를 지원할 수 있도록 해줍니다. 

 

더 중요한 것은 하이퍼레저 패브릭이 (현재) 10개의 하이퍼레저 프로젝트 중 가장 활발하다는 것입니다. 플랫폼을 중심으로한 커뮤니티 구축이 꾸준히 진해오디고 있으며, 이후 출시될 때마다 제공되는 혁신은 다른 기업용 블록체인 플랫폼과 비교할 때 훨씬 앞서고 있습니다.

 

 

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Hyperledger Caliper 시작하기  (0) 2019.07.16
Composer Developer Tutorial  (0) 2019.07.15
Fabric Pluggable Consensus  (0) 2019.07.13
Fabric Privacy and Confidentiality  (0) 2019.07.12
Composer Playground Tutorial  (0) 2019.07.11

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger-fabric.readthedocs.io/en/latest/whatis.html#pluggable-consensus

 

Introduction — hyperledger-fabricdocs master documentation

Docs » Introduction Edit on GitHub Introduction In general terms, a blockchain is an immutable transaction ledger, maintained within a distributed network of peer nodes. These nodes each maintain a copy of the ledger by applying transactions that have been

hyperledger-fabric.readthedocs.io

트랜잭션 주문은 합의를 위한 모듈식 구성요소로 위임되며 이는 트랜잭션을 실행하고 원장을 유지하는 피어들과 논리적으로 분리됩니다. 특히, 주문 서비스가 그러합니다. 합의가 모듈화되어있기 때문에, 구현할 때 특정 배포 또는 솔루션의 신뢰 가정에 따라 조정할 수 있습니다. 이 모듈식 아키텍처를 통해 플랫폼은 CFT(crash fault-tolerant) 또는 BFT(byzantine fault-tolerant) 주문을 위해 잘 정립된 툴킷에 의존할 수 있습니다.

 

패브릿은 현재 두 가지 CFT 오더링 서비스에 대한 구현을 제공합니다. 첫 번째는 Raft 프로토콜의 etcd 라이브러리를 기반으로 하고, 다른 하나는 카프카 (내부적으로 주키퍼를 사용) 입니다. 현재 사용 가능한 오더링 서비스에 대한 정보는 아래 링크를 참고하세요.

https://hyperledger-fabric.readthedocs.io/en/latest/orderer/ordering_service.html

 

The Ordering Service — hyperledger-fabricdocs master documentation

Docs » Key Concepts » The Ordering Service Edit on GitHub The Ordering Service Audience: Architects, ordering service admins, channel creators This topic serves as a conceptual introduction to the concept of ordering, how orderers interact with peers, the

hyperledger-fabric.readthedocs.io

이들은 상호배타적이지 않다는 점에 유의하세요. 패브릭 네트워크는 여러 애플리케이션 혹은 애플리케이션의 요구사항을 지원하는 다양한 오더링 서비스를 가질 수 있습니다. 

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Composer Developer Tutorial  (0) 2019.07.15
Fabric Performance and Scalability & Conclusion  (0) 2019.07.14
Fabric Privacy and Confidentiality  (0) 2019.07.12
Composer Playground Tutorial  (0) 2019.07.11
Composer Installing  (0) 2019.07.10

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger-fabric.readthedocs.io/en/latest/whatis.html#privacy-and-confidentiality

 

Introduction — hyperledger-fabricdocs master documentation

Docs » Introduction Edit on GitHub Introduction In general terms, a blockchain is an immutable transaction ledger, maintained within a distributed network of peer nodes. These nodes each maintain a copy of the ledger by applying transactions that have been

hyperledger-fabric.readthedocs.io

앞서 논한 것 처럼 PoW를 합의 모델로 사용하는 무허가형 퍼블릭 블록체인 네트워크에서는 모든 노드에서 트랜잭션이 실행된다. 이는 즉, 계약 자체나 거래 데이터에 기밀성이 존재할 수 없음을 의미한다. 모든 트랜잭션과 이를 구현하는 코드는 네트워크의 모든 노드에서 볼 수 있다. 이 경우 우리는 PoW가 제공하는 byzantine fault tolerant와 데이터 및 계약에 대한 기밀성을 교환했다.

 

이러한 기밀성의 부족은 많은 사업/기업 유즈케이스에서 문제가 될 수 있다. 예를 들어 공급망 파트너 네트워크에서 일부 소비자는 관계를 강화하거나 추가 판매를 촉진하는 수단으로 선호하는 가격을 제공받을 수 있다. 모든 참여자가 모든 계약 및 거래를 볼 수 있다면 완전히 투명한 네트워크에서 그러한 비즈니스 관계를 유지하는 것이 불가능해진다. - 누구나 보다 더 좋은 가격을 원할 것이다.

 

두 번째 예로, 증권업계를 고려해보자. 중개인이이 자리를 잡거나 혹은 처분하는 경우 중개인은 경쟁사에 이를 알리고 싶지 않을 수도 있고, 상대방의 시작을 약화시키기 위한 방법을 찾으려고 할 수도 있다.

 

기업 유즈케이스 요구사항 의도에 대한 개인정보보호 및 기밀유지에 대한 문제를 해결하기 위해 블록체인 플랫폼은 다양한 접근법을 채택했다. 이들 모두는 절충점이 있다.

 

데이터 암호화는 기밀성을 제공하는 한 가지 방법이다. 그러나 PoW를 합의방식으로 사용하는 무허가형 네트워크에서 암호화된 데이터는 모든 노드에 있다. 충분한 시간 및 자원이 주어지면 암호화가 깨질 수 있다. 많은 기업 유즈케이스에서 정보가 손상될 수 있는 위험은 용납될 수 없다.

 

ZKP(Zero Knowledge proofs)는 이 문제를 해결하기 위해 연구중인 또 다른 영역이며, 현재 ZKP를 계산하는 데는 상당한 시간 및 자원이 필요하다. 따라서 이 경우의 절충은 기밀성을 위한 성능이다.

 

대안 형태의 합의방식을 활용할 수 있는 허가형 환경에서는 기밀 정보의 배포를 인증된 노드로만 제한하는 접근법을 모색할 수 있다.

 

허가형 플랫폼인 Hyperledger Fabric은 채널 아키텍처를 통해 기밀성을 보장한다. 기본적으로 패브릭 네트워크는 "채널"을 설립할 수 있다. 이 채널은 특정 트랜잭션 집합에 가시성을 부여해야 하는 참가자들 간 생성된다. 이 것을 네트워크 오버레이라고 생각해보자. 즉, 채널에 참여하는 노드만 스마트 컨트랙트(체인코드)에 접근하여 데이터를 처리하므로 개인정보보호 및 기밀성 모두 유지된다.

 

개인정보보호와 기밀성을 모두 향상시키기 위해, 패브릭은 private data를 지원하도록 추가했고, 이는 향후 ZKP위에서 동작할 것이다. 이와 관련해서는 향후 더 많은 것들이 가능해질 것이다.

 

 

 

 

 

 

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Fabric Performance and Scalability & Conclusion  (0) 2019.07.14
Fabric Pluggable Consensus  (0) 2019.07.13
Composer Playground Tutorial  (0) 2019.07.11
Composer Installing  (0) 2019.07.10
Composer Key Concepts  (0) 2019.07.09

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger.github.io/composer/latest/tutorials/playground-tutorial

 

Playground Tutorial | Hyperledger Composer

Playground Tutorial In this step by step tutorial we'll walk through setting up a business network, defining our assets, participants and transactions, and testing our network by creating some participants and an asset, and submitting transactions to chang

hyperledger.github.io

이번 단계별 튜토리얼에서는 비즈니스 네트워크 설정, 자산정의, 참가자 및 트랜잭션 정의, 참여자 및 자산 생성을 통한 네트워크 테스트, 그리고 트랜잭션 제출을 통해 자산 소유권을 변경하는 방법에 대해 설명합니다. 이 튜토리얼은 Playground 환경을 사용하여 Hyperledger Composer 개념을 소개하기 위한 것입니다.

 

Step One: Open the Hyperledger Composer Playground

Composer Playground를 켭니다. (https://composer-playground.mybluemix.net/)

 

사용자의 비즈니스 네트워크 화면이 나타날 것입니다. 비즈니스 네트워크 페이지에는 연결할 수 있는 비즈니스 네트워크 및 연결에 사용할 수 있는 ID에 대한 요약 정보가 표시됩니다. 우리는 우리 네트워크를 생성할 예정이므로 이 부분에 대해 너무 신경쓰지 않아도 됩니다.

 

Step Two: Creating a new business network

다음으로 우리는 새로운 비즈니스 네트워크를 만들 것입니다. 비즈니스 네트워크에는 이름이나 옵션 등 몇 가지 정의된 속성이 있습니다. 우리는 새 비즈니스 네트워크를 생성할 때 기존 템플릿을 기반으로 하거나, 혹은 자신의 템플릿을 가져올 수도 있습니다.

 

  1. 웹 브라우저 제목 아래에 Deploy a new business network를 클릭하세요.
  2. 새 비즈니스 네트워크에는 이름이 필요합니다. tutorial-network라고 합시다.
  3. 원하는 경우, 비즈니스 네트워크에 대한 설명을 입력할 수 있습니다.
  4. 다음으로 우리는 비즈니스 네트워크 기반을 선택해야 합니다. 우리는 처음부터 네트워크를 구축하므로 empty-business network를 클릭하세요.
  5. 이제 네트워크가 정의되었습니다. Deploy를 클릭하세요.
참고 : Playground를 로컬에서 사용하고 실제 Fabric에 연결하는 경우에는 하단 추가 참고사항을 참고하십시오. 

 

Step Three: Connecting to the business network

이제 비즈니스 네트워크를 만들고 배포했으므로 지갑에서 tutorial-network용 admin이라는 비즈니스 네트워크 카드를 볼 수 있습니다. 지갑에는 여러 개의 배포된 비즈니스 네트워크에 연결할 수 있는 비즈니스 네트워크 카드가 포함될 수 있습니다.

 

외부 블록체인에 연결할 때 비즈니스 네트워크 카드는 비즈니스 네트워크에 연결하는데 필요한 모든 것을 나타냅니다. 여기에는 연결에 대한 세부정보, 인증방식 및 메타데이터가 포합됩니다.

 

비즈니스 네트워크에 연결하려면 비즈니스 네트워크 카드 아래의 Connect now를 클릭하세요.

 

Step Four: Adding a model file

우리는 지금 Define 탭에 있습니다. 이 탭은 Test 탭을 사용해 비즈니스 네트워크를 배포하고 테스트하기 전에 비즈니스 네트워크 정의를 구성하는 파일을 생성하고 편집하는 탭입니다. 

 

우리는 empty business network 템플릿을 선택했기 때문에 제공된 템플릿 파일을 수정해야 합니다. 첫 번째 단계는 모델 파일을 업데이트하는 것입니다. 모델파일은 비즈니스 네트워크의 자산, 참가자, 트랜잭션 그리고 이벤트를 정의합니다.

 

모델링 언어에 대한 더 상세한 정보는 아래 링크를 참고하세요.

https://hyperledger.github.io/composer/latest/reference/cto_language.html

 

Modeling Language | Hyperledger Composer

Hyperledger Composer Modeling Language Hyperledger Composer includes an object-oriented modeling language that is used to define the domain model for a business network definition. A Hyperledger Composer CTO file is composed of the following elements: A si

hyperledger.github.io

  1. 먼저 모델 파일을 선택하세요.
  2. 모델 파일에 있는 내용을 지우고 아래 내용을 입력하세요.
/**
  * My commodity trading network
  */ 
namespace org.example.mynetwork
asset Commodity identified by tradingSymbol {
    o String tradingSymbol
    o String description
    o String mainExchange
    o Double quantity 
    --> Trader owner
}
participant Trader identified by tradeId {
    o String tradeId
    o String firstName
    o String lastName
}
transaction Trade {
    --> Commodity commodity 
    --> Trader newOwner
}

이 도메인 모델은 단일 유형의 자산인 Commodity와 단일 참가자 유형인 Trader그리고 단일 트랜잭션유형인 Trade를 정의하며, 이것들은 commodity의 소유자를 변경할 때 사용됩니다.

 

Step Five: Adding a transaction processor script file

도메인 모델이 정의되었으므로, 이제 비즈니스 네트워크용 트랜잭션 로직을 정의할 수 있습니다. Composer는 JavaScript 함수를 사용해 비즈니스 네트워크용 로직을 표현합니다. 이 함수들은 트랜잭션이 처리를 위해 제출되면 자동으로 실행됩니다.

 

트랜잭션 처리 함수에 관련된 상세한 내용은 하단 링크를 참고하세요.

https://hyperledger.github.io/composer/latest/reference/js_scripts.html

 

Transaction Processor Functions | Hyperledger Composer

Transaction Processor Functions A Hyperledger Composer Business Network Definition is composed of a set of model files and a set of scripts. The scripts may contain transaction processor functions that implement the transactions defined in the Business Net

hyperledger.github.io

  1. Add a file 버튼을 클릭하세요.
  2. Script file을 클릭한 후 Add를 누르세요.
  3. 스크립트 파일에 있는 코드를 지우고 아래 코드를 입력하세요.
/**
  * Track the trade of a commodity from one trader to another
  * @param {org.example.mynetwork.Trade} trade - the trade to be processed 
  * @transaction 
*/
async function tradeCommodity(trade) {
    trade.commodity.owner = trade.newOwner; 
    let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity'); 
    await assetRegistry.update(trade.commodity);
}

이 함수는 단순히 들어오는 Trade 트랜잭션의 newOwner 속성을 기반으로 commodity의 owner 속성을 변경합니다. 그리고 나서 변경된 Commodity는 asset registry로 다시 들어오고 Commodity 인스턴스를 저장하는데 사용됩니다.

 

Step Six: Access control

Access control 파일은 비즈니스 네트워크의 접근 제어 규칙을 정의합니다. 우리 네트워크는 단순하기 때문에 default access control 파일을 수정할 필요가 없습니다. 기본 파일은 현재 참가자인 networkAdmin에게 비즈니스 네트워크와 시스템 레벨에서의 동작에 대한 전체 접근 권한을 부여합니다.

 

여러 개의 모델이나 스크립트 파일을 갖고 있어도, access control 파일은 한 개만 가질 수 있습니다.

 

access control 파일에 대한 상세한 정보는 하단 링크를 참고하세요.

https://hyperledger.github.io/composer/latest/reference/acl_language.html

 

Access Control Language | Hyperledger Composer

Hyperledger Composer Access Control Language Hyperledger Composer includes an access control language (ACL) that provides declarative access control over the elements of the domain model. By defining ACL rules you can determine which users/roles are permit

hyperledger.github.io

Step Seven: Deploying the updated business network

이제 모델, 스크립트, access control file을 생성했으므로 비즈니스 네트워크를 배포하고 테스트해야 합니다.

 

비즈니스 네트워크를 업그레이드 하기 위해 Deploy changes를 클릭하세요.

참고 : Playground를 로컬에서 사용하고 실제 Fabric에 연결하는 경우에는 하단 추가 참고사항을 참고하십시오. 

 

Step Eight: Testing the business network definition

이제 우리는 참가자(Traders)와 자산(Commodity)를 생성하고 Trade 트랜잭션을 사용해 Commodity의 소유자를 변경하는 테스트를 진행할 것입니다.

 

Test탭을 클릭하세요.

 

Step Nine: Creating participants

1. 먼저 비즈니스 네트워크에 두 명의 참가자를 추가해야 합니다.

2. 왼쪽의 Trader 탭을 클릭하고, 오른쪽 상단의 Create New Participants를 선택하세요.

3. Trader 참가자의 자료구조를 볼 수 있습니다. 우리는 쉽게 인식가능한 데이터를 원하므로 작성된 코드를 지우고 아래 내용을 입력하세요.

{ 
    "$class": "org.example.mynetwork.Trader",
    "tradeId": "TRADER1", 
    "firstName": "Jenny", 
    "lastName": "Jones" 
}

참가자를 생성하기 위해 Create New를 클릭하세요.

방금 생성한 새로운 Trader 참가자를 볼 수 있을 것입니다. 우리는 Trade 트랜잭션을 테스트 하기 위해 또 한 명의 참가자가 필요하므로 또 다른 Trader를 생성합니다. 이번에는 아래 내용을 입력하세요.

{ 
    "$class": "org.example.mynetwork.Trader", 
    "tradeId": "TRADER2", 
    "firstName": "Amy", 
    "lastName": "Williams" 
}

옮기기 전에 두 참가자 모두 Trader 화면에 있는지 확인하세요.

 

Step Ten: Creating an asset

이제 우리는 두 명의 참가자를 가지고 있습니다. 이제 두 참가자 간 거래할 무언가가 필요합니다. 자산을 생성하는 것은 참가자를 생성하는 것과 매우 유사합니다. 우리가 생성할 Commodity는 owner 속성을 가지고 있으며 이는 TRADE!이라는 tradeId를 가진 Trader가 소유하고 있음을 의미합니다.

 

1. 먼저 Assets 아래 Commodity 탭을 클릭한 후 Create New Asset을 클릭하세요.

2. asset data 내용을 지우고 아래 내용을 입력하세요.

{ 
    "$class": "org.example.mynetwork.Commodity", 
    "tradingSymbol": "ABC", 
    "description": "Test commodity", 
    "mainExchange": "Euronext", 
    "quantity": 72.297, 
    "owner": "resource:org.example.mynetwork.Trader#TRADER1" 
}

3. 이 자산이 생성되고 나면 Commodity 탭에서 이를 확인할 수 있어야 합니다.

 

Step Eleven: Transferring the commodity between the participants

우리는 두 명의 참가자와 그들 간 거래할 수 있는 Commodity를 갖고 있습니다. 이제 Trade 트랜잭션을 테스트 해보겠습니다.

 

트랜잭션은 Hyperledger Composer의 비즈니스 네트워크에서 일어나는 모든 변화의 기본이 되는 것입니다. 이 튜토리얼 후에 스스로 연습해보고 싶다면 My Business Network화면에서 다른 비즈니스 네트워크를 생성하고 좀 더 고급 비즈니스 네트워크 템플릿을 사용해 보세요.

 

Trade 트랜잭션 테스트를 위해

1. 왼쪽의 Submit Transaction 버튼을 클릭하세요.

2. 트랜잭션 타입이 Trade인지 확인하세요.

3. 트랜잭션 데이터 내용을 아래와 같이 변경하세요.

{
  "$class": "org.example.mynetwork.Trade",
  "commodity": "resource:org.example.mynetwork.Commodity#ABC",
  "newOwner": "resource:org.example.mynetwork.Trader#TRADER2"
}

4. Submit을 클릭하세요.

5. 자산의 data 섹션으로 넘어가 우리가 보유한 자산의 소유자가 TRADER1에서 TRADER2로 변경되었는지 확인하세요. 아마 resource:org.example.mynetwork.Trader#TRADER2와 같은 문구를 확인할 수 있을 것입니다.

6. 비즈니스 네트워크 내 모든 트랜잭션 기록을 보기 위해 왼쪽의 All Transactions를 클릭하세요. 여기에는 제출된 모든 트랜잭션의 리스트가 있습니다. UI를 사용해 Trader같은 참가자를 생성하거나, Commodity같은 자산을 생성하거나 한 행동은 우리 비즈니스 네트워크 모델에서 트랜잭션으로 정의되어있지 않더라도 모두 트랜잭션으로 기록됩니다. 이런 트랜잭션을 '시스템 트랜잭션'이라고 부르며 모든 비즈니스 네트워크에 공통으로 적용됩니다. 이는 Hyperledger Composer Runtime에 정의되어 있습니다.

 

 

Logging out of the business network

이제 트랜잭션이 성공적으로 동작했으므로 비즈니스 네트워크 접속을 종료해야 합니다. 우리가 처음 시작했던 My Business Network 화면에서 끝나야 합니다.

우측 상단의 admin이라는 버튼을 클릭하세요. 이 버튼은 로그아웃할 사용자의 현재 신원 리스트를 보여줍니다. 드롭다운 메뉴를 펼치기 위해 admin을 클릭하고 My Business Network를 클릭하세요.

 

Deploying a Business Network to a real Fabric

Playground를 로컬에서 사용하면 로컬 저장소에서 동작하는 "웹 브라우저"에 연결할 수 있습니다. 혹은 일반적으로 "hlfv1"이라 불리는 그룹에서 실제 Fabric에 연결할 수 있습니다.

 

실제 Fabric에 연결하는 경우 PeerAdmin 및 ChannelAdmin 역할을 가진 카드를 생성했을 가능성이 싰습니다. 이 카드는 보통 PeerAdmin이라고 합니다. 이는 Composer로 네트워크를 배포 및 업데이트 하는 데 사용됩니다.

 

네트워크를 실제 패브릭에 배포할 때 배포 버튼을 클릭하기 전에 완료해야할 추가 필드가 있습니다. 바로 네트워크 관리자의 세부 정보를 제공하는 것입니다.

 

배포 화면의 맨 아래로 스크롤하면 CREDENTIALS FOR NETWORK ADMINISTRATOR를 찾을 수 있습니다. 간단한 패브릭 개발 및 테스트 네트워크의 경우 ID와 비밀번호를 제공할 수 있습니다. (ID : admin / Secret : adminpw)

 

ID와 Secret이 지정되면 배포 버튼을 클릭하고 Step Three에서 튜토리얼을 시작할 수 있습니다.

 

사용자 정의 혹은 패브릭 제품을 사용하는 경우 패브릭 관리자에게 네트워크 관리자에 대한 자세한 내용을 문의하십시오. 

 

 

Updating a Business Network when connected to a real Fabric

실제 Fabric을 사용하고 변경사항 배포를 클릭하면 드롭다운 목록에서 Installation 카드 및 Upgrade 카드를 지정하라는 팝업창이 나타납니다. 일반적으로 초기 네트워크 배포에 사용된 것과 동일한 PeerAdmin 카드를 지정합니다. 확실치 않은 경우 패브릭 관리자에게 문의하십시오.

 

카드를 선택하고 업그레이드 버튼을 클릭하세요. 실제 패브릭에서는 완료하는 데 몇 분이 걸리 수 있습니다.

이제 Step Eight을 다시 시작하십시오.

 

 

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Fabric Pluggable Consensus  (0) 2019.07.13
Fabric Privacy and Confidentiality  (0) 2019.07.12
Composer Installing  (0) 2019.07.10
Composer Key Concepts  (0) 2019.07.09
Composer Introduction  (0) 2019.07.08

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger.github.io/composer/latest/installing/installing-index

 

Installing | Hyperledger Composer

Installing Hyperledger Composer Installing pre-requisites Make sure you have the required pre-requisites by following Installing pre-requisites. Installing the development environment To install the full development environment click Installing the develop

hyperledger.github.io

[Installing pre-requisites] - Ubuntu

Hyperledger Composer 및 Hyperledger Fabric을 실행하려면 최소 4GB의 메모리가 필요합니다.

 

다음은 필수 개발도구를 설치하기 위한 조건입니다:

  • Operating Systems: Ubuntu Linux 14.04 / 16.04 LTS (both 64-bit), or Mac OS 10.12
  • Docker Engine: Version 17.03 or higher
  • Docker-Compose: Version 1.8 or higher
  • Node: 8.9 or higher (note version 9 and higher is not supported)
  • npm: v5.x
  • git: 2.9.x or higher
  • Python: 2.7.x
  • A code editor of your choice, we recommend VSCode.

** Linux를 사용하여 Hyperledger Composer를 설치하는 경우, 다음 조언을 따르십시오:

  • Login as a normal user, rather than root.
  • Do not su to root.
  • When installing prerequisites, use curl, then unzip using sudo.
  • Run prereqs-ubuntu.sh as a normal user. It may prompt for root password as some of it's actions are required to be run as root.
  • Do not use npm with sudo or su to root to use it.
  • Avoid installing node globally as root.

Ubuntu를 사용할 경우, 다음 command를 통해 다운로드 받을 수 있습니다.

curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh chmod u+x prereqs-ubuntu.sh

다음으로 스크립트를 실행하십시오. 실행 중에 sudo를 잠시 사용하기 때문에 암호를 입력하라는 메시지가 나타납니다.

./prereqs-ubuntu.sh

[Installing the development environment]

다음 지침에 따라 Hyperledger Composer 개발 도구 (주로 비즈니스 네트워크를 만드는데 사용됨)를 설치하고 Hyperledger Fabric (주로 비즈니스 네트워크를 로컬로 실행/배포하는데 사용됨)을 설치하십시오. 제작한 비즈니스 네트워크는 다른 환경에서 Hyperledger Fabric 런타임에도, 예를 들어 클라우드 플랫폼 같은 곳에도 배포할 수 있습니다.

 

Before you begin

pre-requisites 설치 지침에 따라 필수 사전 요구사항을 설치했는지 확인하십시오.

 

이 가이드에서는 이전에 도구를 설치한 적이 없다고 가정합니다. 그렇지 않은 경우, 이 가이드를 따라하기 전에 이전 설정이 완전히 지워졌는지 확인할 수 있습니다. 이를 수행하는 방법을 배우려면 부록으로 이동합니다.

 

Composer는 유연성을 제공하고 개발자, 테스트 및 배포 시나리오의 수를 최대화하기 위해 npm으로 설치할 수 있는 구성요소 세트가 제공되며 CLI에서 제어할 수 있습니다. 이 가이드는 모든 것을 먼저 설치한 다음 개발환경을 제어하는 방법을 알려줍니다.

Installing components

Step1 : Install the CLI tools

Composer 개발자를 위한 몇 가지 유용한 CLI 도구가 있습니다. 가장 중요한 것은 모든 필수 작업을 포함하고 있는 composer-cli입니다. 이것을 먼저 설치한 다음 우리는 generator-hyperledger-composer, composer-rest-server, Yeoman을 설치합니다. 마지막 3가지는 개발환경의 핵심파트는 아니지만 비즈니스 네트워크와 상호작용하는 애플리케이션을 개발할 때나 튜토리얼을 따라할 때 유용할 것입니다.

 

다음 npm 명령에는 su 또는 sudo를 사용하지 마십시오.

1. 필수 CLI 도구:

npm install -g composer-cli@0.20

2. RESTful API로 비즈니스 네트워크를 노출하기 위해 컴퓨터에서 REST 서버를 실행하는 유틸리티:

npm install -g composer-rest-server@0.20

3. application 자산을 생성하는데 유용한 유틸리티:

npm install -g generator-hyperledger-composer@0.20

4. Yeoman은 generator-hyperledger-composer를 사용하는 애플리케이션 생성 도구입니다.

npm install -g yo

Step2 : Install Playground

이미 Composer를 온라인으로 사용해본 적 있다면, "Playground"라는 브라우저 앱을 본 적 있을 것입니다. 개발 컴퓨터에서 로컬로도 실행할 수 있으며, 비즈니스 네트워크를 보여주는 UI가 제공됩니다.

 

1. 간단한 비즈니스 네트워크 편집 및 테스트를 위한 브라우저 애플리케이션 :

npm install -g composer-playground@0.20

Step 3 : Set up your IDE

브라우저 앱을 사용하여 비즈니스 네트워크 코드에서 작업할 수 있지만 대부분 사용자는 IDE로 작업하는 것을 선호합니다. Composer extension이 가능한 VSCode가 가장 좋습니다.

 

1. 다음 URL에서 VSCode를 설치하십시오. 

https://code.visualstudio.com/download

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

2. VSCode를 열고 Extensions로 이동한 다음 마켓플레이스에서 Hyperledger Composer extension을 검색하여 설치하십시오.


Step 4 : Install Hyperledger Fabric

이 단계는 비즈니스 네트워크를 배포할 로컬 Hyperledger Fabric 런타임을 제공합니다.

 

1. 원하는 디렉토리 (~/fabric-dev-servers로 가정) 에서 Hyperledger Fabric을 설치할 수 있는 도구가 들어있는 .tar.gz 파일을 획득하세요.

mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz tar -xvf fabric-dev-servers.tar.gz

원하는 경우 zip도 사용할 수 있습니다. .tar.gz파일을 fabric-dev-servers.zip으로 바꾸고 tar -xvf 명령을 unzip 명령으로 바꿉니다.

cd ~/fabric-dev-servers export FABRIC_VERSION=hlfv12 ./downloadFabric.sh

2. 다운로드하여 추출한 스크립트를 사용해 Hyperledger Fabric v1.2 런타임을 다운로드하십시오:

 

축하합니다. 이제 일반적인 개발환경에 필요한 모든 것을 설치했습니다. 이 환경에서 블록체인 비즈니스 네트워크를 개발하고 테스트하기 위해 할 수 있는 가장 일반적인 것들에 대해 알아보세요.

[Controlling your dev environment]

Starting and stopping Hyperledger Fabric

기본 설정을 따르면 ~/fabric-dev-servers에서 찾을 수 있는 스크립트들을 사용해 런타임을 제어합니다.

 

처음으로 새 런타임을 시작할 때는 시작 스크립트를 실행한 다음 PeerAdmin 카드를 생성해야 합니다:

cd ~/fabric-dev-servers export FABRIC_VERSION=hlfv12 ./startFabric.sh ./createPeerAdminCard.sh

~/fabric-dev-servers/stopFabric.sh를 사용하여 런타임을 시작 및 중지하고, ~/fabric-dev-servers/startFabric.sh를 사용하여 다시 시작할 수 있습니다.

 

개발 세션이 끝나면 ~/fabric-dev-servers/stopFabric.sh를 싱행한 다음 ~/fabric-dev-servers/teardownFabric.sh를 실행합니다. teardown 스크립트를 실행한 경우 다음에 런타임을 시작할 때 처음 시작할 때와 마찬가지로 새로운 PeerAdmin 카드를 만들어야 합니다.

 

로컬 런타임은 개발 용도로 자주 시작, 중지 및 해제하기 위한 것입니다. 좀 더 영구적인 상태의 런타임을 원한다면 dev 환경 외부에서 하나를 실행하고 비즈니스 네트워크를 배포할 수 있습니다. 예를 들어 Kubernets를 통해 실행하거나 IBM Cloud 같은 관리 플랫폼에서 실행할 수 있습니다.

[Start the web app ("Playground")]

웹앱을 시작하기 위해 다음 명령어를 실행하세요:

composer-playground

보통 다음 주소에서 브라우저를 자동으로 엽니다.

http://localhost:8080/login

웹 애플리케이션의 "My Business Network" 화면에서 createPeerAdminCard 스크립트로 만든 PeerAdmin@hlfv1 카드를 볼 수 있습니다. 이 카드가 보이지 않으면 런타임이 제대로 시작된 것이 아닙니다.

 

축하합니다. 모든 구성요소가 실행중입니다. 또한 dev 세션을 끝내면 중지하고 해제하는 방법을 알 수 있습니다.

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Fabric Privacy and Confidentiality  (0) 2019.07.12
Composer Playground Tutorial  (0) 2019.07.11
Composer Key Concepts  (0) 2019.07.09
Composer Introduction  (0) 2019.07.08
Fabric New Approach  (0) 2019.07.07

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger.github.io/composer/latest/introduction/key-concepts

 

Key Concepts | Hyperledger Composer

Key Concepts in Hyperledger Composer Hyperledger Composer is a programming model containing a modeling language, and a set of APIs to quickly define and deploy business networks and applications that allow participants to send transactions that exchange as

hyperledger.github.io

Hyperledger Composer는 모델링 언어와 API 집합을 포함하는 프로그래밍 모델로, 참가자가 자산을 교환하는 트랜잭션을 보낼 수 있도록 비즈니스 네트워크 및 애플리케이션을 빠르게 정의하고 배포합니다.

 

Hyperledger Composer Playground라는 브라우저 기반 UI를 사용하여 Hyperledger Composer를 사용해볼 수 있습니다. Playground는 hosted version (설치 불필요) 또는 local install (비즈니스 네트워크 편집 및 테스트에 적합) 버전으로 사용할 수 있습니다. 

 

Hyperledger composer의 전체 개발 애플리케이션 기능을 사용하고자 하는 개발자는 개발자 도구를 설치해야 합니다.

[Blockchain State Storage]

비즈니스 네트워크를 통해 제출된 모든 트랜잭션은 블록체인 원장에 저장되며, 현재 자산 및 참가자의 상태는 블록체인 상태 데이터베이스에 저장됩니다. 블록체인은 원장과 상태 데이터베이스를 피어 집합에 분산시키고, 합의 알고리즘을 사용하여 모든 피어 간 원장 및 상태 데이터베이스에 대한 업데이트가 일관성있게 유지되도록 합니다.

 

[Connection Profiles]

Hyperledger Composer는 연결 프로파일을 사용하여 연결할 시스템을 정의합니다. 연결 프로파일은 비즈니스 네트워크 카드의 일부인 JSON 문서입니다. 이러한 프로파일은 일반적으로 해당 시스템을 만든 사람에 의해 작성되며, 해당 시스템에 연결하기위해 비즈니스 네트워크 카드를 생성하는데 사용되어야 합니다. 

 

[Assets]

자산은 유형 또는 무형의 상품, 서비스, 보유자산이며 레지스트리에 저장됩니다. 자산은 비즈니스 네트워크의 거의 모든 것을 나타낼 수 있습니다. 예를 들어, 판매를 위한 주택, 판매 목록, 해당 주택의 토지에 대한 레지스트리 인증서, 보험 서류는 모두 하나 이상의 비즈니스 네트워크 자산일 수 있습니다.

 

자산에는 고유한 식별자가 있어야 하지만 그 외에는 정의한 모든 속성을 포함할 수 있습니다. 자산은 다른 자산 혹은 참가자와 연결되어 있을 수 있습니다.

 

[Participants]

참가자는 비즈니스 네트워크의 구성원입니다. 그들은 자산을 소유하고 거래를 제출할 수 있습니다. 참가자 유형은 모델화되며 자산과 마찬가지로 식별자가 있어야 하며, 필요에 따라 다른 속성을 가질 수 있습니다. 참가자는 하나 이상의 ID에 매핑될 수 있습니다.

 

[Identities]

Identity는 디지털 인증서 및 개인키입니다. Id는 비즈니스 네트워크에서 거래하는데 사용되며 비즈니스 네트워크의 참가자에게 매핑되어야 합니다. 단일 Id는 비즈니스 네트워크 카드에 저장되며 해당 Id가 참가자에게 매핑된 경우 해당 비즈니스 네트워크 카드의 사용자는 참가자로서 비즈니스 네트워크에서 거래할 수 있습니다.

 

[Business Network Cards]

비즈니스 네트워크 카드는 신원확인, 연결 프로파일, 메타데이터 (연결할 비즈니스 네트워크의 이름을 포함하기도 함)의 조합입니다. 비즈니스 네트워크 카드는 비즈니스 네트워크에 연결하는 프로세스를 단순화하고 비즈니스 네트워크 외부의 Id 개념을 특정 비즈니스 네트워크 및 연결 프로파일과 연관된 id의 '지갑'으로 확장합니다.

 

[Transactions]

트랜잭션은 참가자가 자산과 상호작용하는 매커니즘입니다. 이것은 참가자가 경매에 있는 자산에 입찰을 하거나 경매인이 경매를 종결로 표시하고 자산의 소유권을 최고 입찰자에게 자동으로 이전하는 것처럼 간단히 이뤄질 수 있습니다.

 

[Queries]

쿼리는 블록체인 world-state에 대한 데이터를 반환하는 데 사용됩니다. 쿼리는 비즈니스 네트워크에서 정의되며 간단히 사용자가 정의할 수 있는 파라미터 변수를 포함하 ㄹ수도 있습니다. 쿼리를 사용하면 블록체인 네트워크에서 데이터를 쉽게 추출할 수 있습니다. 쿼리는 Hyperledger Composer API를 사용하여 전송됩니다.

 

[Events]

이벤트는 자산 또는 참가자와 동일한 방식으로 비즈니스 네트워크 정의에 정의됩니다. 이벤트가 정의되면 트랜잭션 처리 함수에 의해 이벤트가 발생되어 외부 시스템에게 원장에 중요한 일이 발생했음을 알립니다. 애플리케이션은 발생한 이벤트를 "composer-client" API를 통해 확인할 수 있습니다.

 

[Access Control]

비즈니스 네트워크에는 일련의 엑세스 제어 규칙이 포함될 수 있습니다. 엑세스 제어 규칙을 사용하면 참가자가 비즈니스 네트워크의 자산 및 어떤 조건에 액세스할 수 있는지에 대한 세밀한 제어가 가능합니다. 엑세스 제어 언어는 예를 들어 "차량 소유주만 차량의 소유권을 이전할 수 있습니다."와 같이 정교한 조건을 명시적으로 파악하기에 충분할 정도로 풍부합니다. 트랜잭션 처리 함수 로직에서 엑세스 제어를 외부화하면 검사, 디버그, 개발 및 유지관리가 더 쉬워집니다.

 

[Historian registry]

Historian은 제출된 참가자 및 신원을 포함하여 성공적인 거래를 기록하는 특수한 레지스트리입니다. Historian은 Hyperledger Composer 시스템 네임 스페이스에 정의된 HistorianRecord자산으로 트랜잭션을 저장합니다.

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Composer Playground Tutorial  (0) 2019.07.11
Composer Installing  (0) 2019.07.10
Composer Introduction  (0) 2019.07.08
Fabric New Approach  (0) 2019.07.07
Fabric Smart Contracts  (0) 2019.07.06

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger.github.io/composer/latest/introduction/introduction

 

Introduction | Hyperledger Composer

Welcome to Hyperledger Composer Hyperledger Composer is an extensive, open development toolset and framework to make developing blockchain applications easier. Our primary goal is to accelerate time to value, and make it easier to integrate your blockchain

hyperledger.github.io

Hyperledger Composer는 보다 쉽게 블록체인 애플리케이션을 개발할 수 있는 광범위한 open development toolset 및 프레임워크입니다. Hyperledger Composer의 주 목표는 가치를 창출해내는 시간을 단축하고 블록체인 애플리케이션을 기존 비즈니스 시스템과 보다 쉽게 통합하는 것입니다. Composer를 사용하여 유즈케이스를 신속하게 개발하고 수 개월이 아닌 몇 주 내에 블록체인 솔루션을 배포할 수 있습니다. Composer를 통해 비즈니스 네트워크를 모델링하고 기존 시스템 및 데이터를 블록체인 애플리케이션과 통합할 수 있습니다.

 

Hyperledger Composer는 기존 Hyperledger Fabric 블록체인 infrastructure와 runtime을 지원하며, pluggable 블록체인 합의 프로토콜을 지원함으로써 네트워크 참가자가 지정한 정책에 따라 트랜잭션의 유효성을 검증할 수 있습니다.

 

애플리케이션은 비즈니스 네트워크에서 데이터를 소비하고 end user에게 간단하고 제어된 액세스 포인트를 제공합니다.

 

Hyperledger Composer를 사용하여 기존 자산 및 이와 관련된 트랜잭션을 포함하는 현재 비즈니스 네트워크를 신속하게 모델링할 수 있습니다. 자산은 유무형 또는 무형의 상품, 서비스, 보유자산 등이 될 수 있습니다. 비즈니스 네트워크 모델의 일부로 자산과 상호작용할 수 있는 트랜잭션을 정의합니다. 비즈니스 네트워크에는 상호작용하는 참여자가 포함되며, 각 참여자는 여러 비즈니스 네트워크에서 고유한 ID로 표현됩니다. 

실제 비즈니스 네트워크의 예를 들면, 부동산 중개업자는 다음과 같이 비즈니스 네트워크를 신속하게 모델링할 수 있습니다.

  • Assets: 주택 및 거래목록
  • Participants: 구매자 및 주택 소유자
  • Transactions: 주택 구매 및 판매, 거래내역 생성 및 종료

참가자들은 구매자, 판매자 혹은 부동산 중개업자로서 역할에 따라 거래에 대해 제한적인 액세스 권한을 가질 수 있습니다. 부동산 중개업자는 거래목록확인 및 중개를 위해 구매자와 판매자를 위한 간단한 사용자 인터페이스를 제공하기 위한 애플리케이션을 만들 수 있습니다. 또한, 이 비즈니스 네트워크는 기존 재고 시스템과 통합되어 새로운 주택을 자산으로 추가하고 판매된 부동산을 제거할 수도 있습니다. 토지등록기관이 구매자와 상호작용하여 토지의 소유권을 이전하는 경우에는 관련 당사자를 참가자로 등록할 수도 있습니다.

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Composer Installing  (0) 2019.07.10
Composer Key Concepts  (0) 2019.07.09
Fabric New Approach  (0) 2019.07.07
Fabric Smart Contracts  (0) 2019.07.06
Fabric Permissioned vs Permissionless Blockchains  (0) 2019.07.05

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger-fabric.readthedocs.io/en/latest/index.html

 

A Blockchain Platform for the Enterprise — hyperledger-fabricdocs master documentation

Docs » A Blockchain Platform for the Enterprise Edit on GitHub Built with Sphinx using a theme provided by Read the Docs.

hyperledger-fabric.readthedocs.io

Fabric은 execute-order-validate라고 하는 트랜잭션을 위한 새로운 아키텍쳐를 소개합니다. 트랜잭션 흐름을 세 단계로 분리하여 order-execute 모델이 직면한 탄력성, 유연성, 확장성, 성능 및 기밀성 문제를 해결합니다.

  • 거래를 실행하고 그 정확성을 확인함으로써 그것을 보증하고
  • (pluggable) 합의 프로토콜을 통한 트랜잭션 order
  • 원장에 커밋하기 전 애플리케이션 별 보증 정책에 대한 트랜잭션의 유효성을 검사

이러한 설계는 Fabric이 order에 대한 최종 합의에 도달하기 전에 트랜잭션을 실행한다는 점에서 order-execute 패러다임과 근본적으로 다릅니다.

 

Fabric에서 애플리케이션 별 보증 정책은 특정 스마트 컨트랙트의 올바른 실행을 보증해야 하는 피어 노드 또는 피어 노즈 중 몇 개를 지정합니다. 따라서, 각 트랜잭션은 트랜잭션의 보증 정책을 만족시키는데 필요한 피어 노드의 서브셋에 의해서만 실행(보증)될 필요가 있습니다. 이를 통해 병렬 실행이 시스템의 전반적인 성능과 규모를 증가시킵니다. 이 첫 번째 단계에서는 주문 전에 일관성없는 결과를 필터링할 수 있기 때문에 비결정성을 제거합니다.

 

비결정성을 제거했기 때문에 Fabric은 표준 프로그래밍 언어를 사용할 수 있는 최초의 블록체인 기술입니다. 1.1.0 릴리즈에서 스마트 컨트랙트는 Go 또는 Node.js로 작성될 수 있지만, 이후 릴리즈에서는 Java를 포함한 다른 대중적인 언어를 지원할 계획입니다.

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Composer Key Concepts  (0) 2019.07.09
Composer Introduction  (0) 2019.07.08
Fabric Smart Contracts  (0) 2019.07.06
Fabric Permissioned vs Permissionless Blockchains  (0) 2019.07.05
Fabric Modularity  (0) 2019.07.04

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger-fabric.readthedocs.io/en/latest/index.html

 

A Blockchain Platform for the Enterprise — hyperledger-fabricdocs master documentation

Docs » A Blockchain Platform for the Enterprise Edit on GitHub Built with Sphinx using a theme provided by Read the Docs.

hyperledger-fabric.readthedocs.io

스마트 컨트랙트 혹은 Fabric에서 "체인코드"라고 부르는 것은 신뢰할 수 있는 분산 애플리케이션으로 기능하여 동료 간 블록체인 및 기본 합의로부터 보안성/신뢰성을 획득합니다. 이는 블록체인 애플리케이션의 비즈니스 로직입니다.

 

특히 플랫폼에 적용할 때 스마트 컨트랙트에 적용되는 세 가지 주요 사항은 다음과 같습니다.

  • 많은 스마트 컨트랙트는 네트워크에서 동시에 실행됩니다.
  • 이들은 동적으로 배포될 수 있습니다. (많은 경우에 누구든지)
  • 응용 프로그램의 코드는 신뢰할 수 없고, 잠재적 악성일 가능성을 가지고 있습니다.

대부분 현존하는 스마트 컨트랙트가 가능한 블록체인 플랫폼은 합의 프로토콜인 order-execute 구조를 따릅니다.

  • 유효성을 검사하고 주문하는 트랜잭션은 모든 피어 노드에 트랜잭션을 전달합니다.
  • 각 피어는 트랜잭션을 순차적으로 실행합니다.

order-execute 구조는 Ethereum (PoW 기반 합의 방식) 과 같은 public/무허가형 플랫폼에서부터 Tendermint, Chain, Quorum과 같은 허가형 플랫폼에 이르기까지 사실상 모든 기존 블록체인 시스템에서 찾을 수 있습니다. 

 

블록체인 내에서 order-execute 구조로 동작하는 스마트 컨트랙트는 결정적이어야 합니다. 그렇지 않으면 합의에 도달하지 못할 수도 있습니다. 비결정적인 문제를 해결하기 위해 많은 플랫폼에서는 스마트 컨트랙트를 비표준 또는 도메인 특정 언어 (예, Solidity)로 작성하여 비결정적 작업을 제거할 것을 요구합니다. 이는 개발자가 새로운 계약을 통해 새로운 언어를 배우고 프로그래밍 오류를 유발할 수 있기 때문에 널리 채택될 수 없습니다.

 

또한, 모든 트랜잭션은 모든 노드에 의해 순차적으로 실행되므로 성능 및 규모가 제한됩니다. 시스템의 모든 노드에서 스마트 컨트랙트 코드가 실행된다는 사실은 전체 시스템의 탄력성을 보장하기 위해 잠재적인 악의적 계약으로부터 전체 시스템을 보호하기 위해 복잡한 조치가 취해지도록 요구합니다.

 

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Composer Introduction  (0) 2019.07.08
Fabric New Approach  (0) 2019.07.07
Fabric Permissioned vs Permissionless Blockchains  (0) 2019.07.05
Fabric Modularity  (0) 2019.07.04
Hyperledger Fabric이란  (0) 2019.07.03

* 본 포스팅은 하이퍼레저 패브릭 docs를 번역한 내용으로, 번역 과정에서 잘못된 부분이 있을 수 있습니다.

상세 내용은 하단 링크를 참조 부탁드리며, 잘못된 내용에 대한 피드백은 언제든 환영합니다 : ) 

https://hyperledger-fabric.readthedocs.io/en/latest/index.html

 

A Blockchain Platform for the Enterprise — hyperledger-fabricdocs master documentation

Docs » A Blockchain Platform for the Enterprise Edit on GitHub Built with Sphinx using a theme provided by Read the Docs.

hyperledger-fabric.readthedocs.io

무허가형 블록 체인에서는 거의 모든 사람이 참여할 수 있으며 모든 참가자는 익명입니다. 그런 맥락에서 블록체인의 상태가 불변이라는 것 외에 다른 어떤 신뢰도 존재할 수 없다. 이러한 신뢰의 부재를 완화하기 위해 무허가형 블록체인은 일반적으로 "작업 증명"(PoW)을 기반으로 한 비잔틴 fault tolerance 합의의 형태로 참여하는 특별한 비용을 상쇄하기위한 경제적 인센티브를 제공하기 위해 "채굴된" 원시 암호화폐 또는 트랜잭션 수수료를 사용합니다.

 

반면에 허가형 블록체인은 일정 수준의 신뢰를 보장하는 거버넌스 모델 하에서 운영되는 알려진, 확인된, 그리고 종종 심사를 받는 참가자들 사이에서 블록체인을 운영합니다. 허가형 블록체인은 공통의 목표를 갖고 있지만 서로를 완전히 신뢰하지는 못 할 수도 있는 엔티티 그룹 간의 상호작용을 보호하는 방법을 제공합니다. 허가형 블록체인은 참여자의 ID를 사용하여 보다 전통적인 CFT (crash fault telerant) 또는 BFT (byzantine fault tolerant) 합의 프로토콜을 사용할 수 있으며 이는 값비싼 마이닝을 필요로 하지 않습니다.

 

또한, 이러한 허가형 문맥에서 참가자가 의도적으로 스마트 계약을 통해 악성코드를 도입할 위험이 줄어듭니다. 첫째, 참가자는 서로를 알고 있으며 애플리케이션 트랜잭션 제출, 네트워크 구성 수정 또는 스마트 계약 배포와 같은 모든 작업이 네트워크 및 관련 트랜잭션 유형에 대해 설정된 보증 정책에 따라 블록체인에 기록됩니다. 완전히 익명으로 처리되기 보다는 유죄가 입증된 당사자는 쉽게 파악할 수 있으며 사건은 거버넌스 모델의 조건에 따라 처리됩니다.

'● STUDY ● > Hyperledger' 카테고리의 다른 글

Fabric New Approach  (0) 2019.07.07
Fabric Smart Contracts  (0) 2019.07.06
Fabric Modularity  (0) 2019.07.04
Hyperledger Fabric이란  (0) 2019.07.03
Fabric Introduction  (0) 2019.07.02

+ Recent posts