블록체인/HYPERLEDGER FABRIC

HYPERLEDGER FABRIC - Developing Applications - Analysis

펭귀니 :) 2020. 8. 20. 13:28

HYPERLEDGER FABRIC

  ㄴ Developing Applications

    ㄴ Analysis

 

독자 : Architects, Application and smart contract developers, Business professionals

 

기업 어음을 좀 더 자세히 분석해봅시다.

 

MagenetoCorp나 DigiBank 같은 PaperNet 참가자는 그들의 비즈니스 목적을 성취하기 위해 기업 어음 트랜잭션을 사용합니다.

기업 어음의 구조와 시간이 지남에 따라 영향을 미치는 트랜잭션을 조사해봅시다.

PaperNet의 어떤 조직이 그 네트워크 안의 조직 중 신뢰 관계를 바탕으로 트랜잭션을 승인해야하는지도 고려해야 할 것입니다.

후에 우리는 어떻게 돈이 buyer와 seller사이에서 흘러가는지 집중해야 할 것입니다.

 

지금은 MagnetoCorp에 의해 발행된 first paper에 집중해보겠습니다.

Commercial paper lifecycle

아래 paper 00001은 5월 31일 MagnetoCorp에 의해 발행되었습니다. 이 paper의 첫번째 상태(다른 속성, 값)를 살펴보겠습니다.

Issuer = MagnetoCorp
Paper = 00001
Owner = MagnetoCorp
Issue date = 31 May 2020
Maturity = 30 November 2020
Face value = 5M USD
Current state = issued

이 paper의 상태는 issue(발행) 트랜잭션의 결과이고, MagnetoCorp의 첫번째 기업 어음입니다.

어떻게 이 paper가 연말에 상환할 액면가 5만달러를 가지고 있는지 확인하세요.

paper 00001이 발행됐을 때, IssuerOwner이 동일한지 확인해보세요.

이 paper의 식별 방법은 독특한 방법인 Issuer과 Paper 속성의 구성요소인 MagnetoCorp00001로 식별됩니다.

마지막으로, Current state = issued 속성으로 MagnetoCorp paper 00001의 생명주기의 단계를 빠르게 알 수 있다는 것을 확인하세요.

 

발행 직후 paper는 DigiBank가 구매합니다. buy(구매) 트랜잭션의 결과로서 같은 기업 어음이 어떻게 변했는지 확인해보자.

Issuer = MagnetoCorp
Paper = 00001
Owner = DigiBank
Issue date = 31 May 2020
Maturity date = 30 November 2020
Face value = 5M USD
Current state = trading

가장 중요한 변화는 Owner입니다.

처음 paper은 MagnetoCorp 소유였는데, 지금은 DigiBank의 소유입니다.

우리는 나중에 어떻게 paper가 BrokerHouse 또는 HedgeMatic에게 판매될 수 있는지, 그리고 이에 해당하는 Owner가 변하는 것을 상상해볼 수 있습니다.

Current state는 paper가 지금 trading state인 것을 쉽게 식별할 수 있는지에 주목하세요.

 

6달 이후에 DigiBank가 기업 어음을 여전히 가지고 있다면, MagnetoCorp가 상환할 수 있습니다.

Issuer = MagnetoCorp
Paper = 00001
Owner = MagnetoCorp
Issue date = 31 May 2020
Maturity date = 30 November 2020
Face value = 5M USD
Current state = redeemed

이 최종 상환 트랜잭션은 기업 어음의 생명주기가 끝났습니다. (끝낸 것으로 간주될 수 있습니다.)

상환된 기업 어음을 기록해야하는 것은 종종 의무적이며, redeemed(상환) 상태 값으로 확인할 수 있습니다.

paper의 Owner 값은 트랜잭션 생성자의 신원과 비교하여 redeem 트랜잭션에 대한 접근 제어를 수행하는데 사용됩니다.

Fabric은 getCreator() chaincode API를 통해 이를 제공합니다. 만약 golang(고랭)이 chaincode의 language라면, client identity chaincode library는 트랜잭션 생성자의 추가 속성을 검색하기위해 사용될 수 있습니다.

 

Transactions

우리가 보기에 paper 00001의 생명주기가 비교적 간단하게 보입니다.

issue, buy, or redeem 트랜잭션의 결과로서 issued, trading 그리고 redeemed 사이에서 달라지기 때문입니다.

 

MagnetoCorp와 DigiBank는 이 세가지 트랜잭션을 시작했고, paper 00001의 상태 변화를 주도했습니다.

paper에 영향을 미치는 트랜잭션을 더 자세히 살펴봅시다.

 

- Issue

MagnetoCorp에 의해 시작된 첫번째 트랜잭션을 검토해봅시다.

Txn = issue
Issuer = MagnetoCorp
Paper = 00001
Issue time = 31 May 2020 09:00:00 EST
Maturity date = 30 November 2020
Face value = 5M USD

어떻게 issue 트랜잭션이 속성과 값이 있는 구조를 갖는지 확인해보세요.

이 트랜잭션 구조는 paper 00001의 구조와 다르지만 밀접하게 일치하기도 합니다.

그들이 다른 이유는 paper 00001은 issue 트랜잭션의 결과인 PaperNet의 상태를 반영하기 때문입니다.

그것은 이러한 속성을 취하고 이 paper를 만드는 issue 트랜잭션 뒤의 로직(우리가 볼 수 없는)입니다.

트랜잭션이 paper를 만들기 때문에, 이러한 구조는 매우 밀접한 관계를 의미합니다.

 

issue 트랜잭션에 관여하는 유일한 조직은 MagnetoCorp입니다.

당연히 MagnetoCorp는 트랜잭션을 승인해야합니다.

일반적으로 paper의 issuer는 새로운 paper를 발행하는 트랜잭션에 승인해야합니다.

 

- Buy

다음으로, MagnetoCorp에서 DigiBank로 paper 00001의 소유권을 이전하는 buy 트랜잭션에 대해 조사해봅시다.

Txn = buy
Issuer = MagnetoCorp
Paper = 00001
Current owner = MagnetoCorp
New owner = DigiBank
Purchase time = 31 May 2020 10:00:00 EST
Price = 4.94M USD

이 paper에서 어떻게 buy 트랜잭션의 속성이 더 적은지 알아봅시다.

그 이유는 해당 트랜잭션이 오직 이 paper만 수정하기 때문입니다.

해당 트랜잭션으로인해 변한 것은 오직 New owner = DigiBank 입니다.

buy 트랜잭션에서 가장 중요한 것은 소유권이 바뀌었다는 것과 이 paper의 current 소유주인 MagnetoCorp의 승인이 있었다는 것입니다.

 

Purchase timePrice 속성은 paper 00001에 포함되지 않았냐고 물어볼 수 있습니다.

트랜잭션과 paper의 차이로 돌아가봅시다.

494만달러 가격표는 paper의 속성보다는 사실 트랜잭션의 속성입니다.

이 차이점은 보기에 분명하지 않습니다.

우리는 원장이 최신 상태 뿐만 아니라 이 paper에 영향을 미치는 모든 트랜잭션의 히스토리를 정보의 조각으로 기록해야한다는 것을 알 수 있습니다.

이러한 정보 분리를 명확히하는 것은 정말 중요합니다.

 

paper 00001이 여러번 사고 팔릴 수 있다는 것은 기억할 만합니다.

비록 우리는 시나리오를 조금 앞서나가고 있지만, paper 00001이 소유권을 변경할 경우 어떤 트랜잭션을 볼 수 있는지 조사해봅시다.

 

BigFund에서 구매했다면 :

Txn = buy
Issuer = MagnetoCorp
Paper = 00001
Current owner = DigiBank
New owner = BigFund
Purchase time = 2 June 2020 12:20:00 EST
Price = 4.93M USD

그 다음, 나중에 HedgeMatic에 의해 구매했다면 :

Txn = buy
Issuer = MagnetoCorp
Paper = 00001
Current owner = BigFund
New owner = HedgeMatic
Purchase time = 3 June 2020 15:59:00 EST
Price = 4.90M USD

paper의 소유자가 어떻게 변하는지 그리고 가격이 어떻게 변하는지 확인해봅시다.

MagnetoCorp의 기업 어음의 가격이 하락하는 이유를 생각해볼 수 있나요?

 

직관적으로 buy 트랜잭션은 거래하는 두 당사자간의 상호 합의에 대한 증거가 있도록 팔고 사는 조직 모두가 트랜잭션에 승인해야한다고 요구합니다.

 

- Redeem

paper 00001에 대한 redeem 트랜잭션은 생명주기의 끝을 나타냅니다.

비교적 간단한 예로 HedgeMatic이 MagnetoCorp에 기업 어음을 다시 전송하는 트랜잭션을 시작합니다.

Txn = redeem
Issuer = MagnetoCorp
Paper = 00001
Current owner = HedgeMatic
Redeem time = 30 Nov 2020 12:00:00 EST

다시 말하지만, 어떻게 redeem 트랜잭션이 매우 적은 속성을 가질 수 있는지 알아보세요.

paper 00001에 모든 변화는 redeem 트랜잭션에 의해 계획된 data일 수 있습니다.

Issuer는 new owner이 될 것이고, Current stateredeemed로 바뀔 것입니다.

Current owner 속성은 우리 예제에서 명시되어있으므로, paper의 현재 보유자(current holder)와 대조하여 확인해볼 수 있습니다.

 

신뢰 관점에서 buy 트랜잭션의 '트랜잭션에 관련된 두 조직은 모두 승인을 받아야한다.'는 동일한 추론은 redeem 에도 적용됩니다.

 

The Ledger

이 주제에서 PaperNet에서 가장 중요한 두가지 컨셉인 트랜잭션과 그 결과로 생긴 paper 상태를 살펴보았습니다.

실제로 분산 원장인 Hyperledger Fabric에서 두가지 기본 요소인 모든 객체들의 현재 value를 포함하는 a world state와 현재 world state를 초래한 모든 트랜잭션의 히스토리를 기록하는 블록체인을 볼 수 있습니다. 

 

트랜잭션에 요구되는 승인은 원장에 트랜잭션을 추가하기 전에 평가되는 규칙을 통해 시행됩니다.

오직 요구된 서명이 있는 경우에만, Fabric은 유효한 트랜잭션으로 받아들일 수 있습니다.

 

이제 이러한 아이디어를 smart contract로 바꿀 수 있습니다.

당신의 프로그래밍이 약간 녹슬었다고 해도 걱정하지 마세요.

프로그램 코드를 이해할 수 있는 tip과 포인터를 제공할 것입니다.

기업 어음 smart contract를 마스터하는 것은 당신의 application을 설계하기 위한 첫번째 큰 단계입니다.

당신이 프로그래밍을 조금할 줄 아는 business analyst라면, 더 깊이 파고 드는 것을 두려워하지 마십시오!

 

출처 ]
https://hyperledger-fabric.readthedocs.io/en/release-1.4/developapps/analysis.html