Analysis

対象読者: アーキテクト、アプリケーションおよびスマートコントラクト開発者、ビジネス専門家

コマーシャルペーパーについてもう少し詳細に分析してみましょう。 MagnetoCorpやDigiBankといったPaperNetの参加者は、コマーシャルペーパーのトランザクションを利用して、それぞれのビジネス上の目的を達成しようとしています。 あるコマーシャルペーパーの構造と、それに変更を与えるトランザクションについて見ていきましょう。 また、ネットワークの組織間の信頼関係に基づいて、PaperNetのどの組織の署名が、トランザクションに対して必要かについても考えていきます。 後で、購入する組織と売却する組織間での資金の流れについても着目しますが、まずは、MagnetoCorpによって発行された最初のコマーシャルペーパーに注目しましょう。

Commercial paper lifecycle

コマーシャルペーパー00001は、MagnetoCorpによって5月31日に発行されています。 このコマーシャルペーパーの最初のステートと、そのプロパティと値について、見てみましょう。

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

このコマーシャルペーパーのステートは、発行(issue)トランザクションの結果で、MagnetoCorpの最初のコマーシャルペーパーを誕生させています。 このステートが以下のことを表していることに注意してください。 このコマーシャルペーパーの額面は5M USDで、この年の後半に現金化できること、 コマーシャルペーパー00001が発行された時点では、発行者(Issuer)と所有者(Owner)は同じであること、 このコマーシャルペーパーは、MagnetoCorp00001(IssuerPaperプロパティの組み合わせ)として一意に識別できること、 そして最後に、Current state = issued(現在の状態 = 発行済み)によって、MagnetoCorpのコマーシャルペーパー0001が、そのライフサイクルにおいてどのステージにあるかが簡単にわかることです。

発行後まもなく、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)の変化で、最初にMagnetoCorpが所有していたコマーシャルペーパーが、今はDigiBankに所有されています。 このコマーシャルペーパーが、こののちBrokeHouseやHedgeMaticに売却されたなら、Ownerに対応する変化が起きることは想像できるでしょう。 現在の状態(Current state)によって、このコマーシャルペーパーが取引中(trading)の状態にあることが容易にわかります。

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

最後の現金化(redeem)トランザクションによって、コマーシャルペーパーのライフサイクルは終了し、コマーシャルペーパーは役目を終えたものと考えることができます。 現金化されたコマーシャルペーパーの記録を保存することはしばしば必須とされ、現金化済み(redeemed)という状態によって、すぐにそういったコマーシャルペーパーを識別することができます。 コマーシャルペーパーの所有者(Owner)の値は、現金化(redeem)トランザクションに対するアクセスコントロールを行うのに使うことができ、所有者(Owner)の値をトランザクション作成者のアイデンティティと比較することで実現できます。 Fabricでは、これをgetCreator() チェーンコードAPIによってサポートしています。 チェーンコードの開発言語としてGoを使う場合は、クライアントアイデンティティ・チェーンコード・ライブラリを使うことで、トランザクションの作成者の追加属性を取得することができます。

Transactions

コマーシャルペーパー00001のライフサイクルが比較的単純明快であり、 発行購入現金化トランザクションの結果として、発行済み(issued)、取引中(trading)、現金化済み(redeemed)と、移っていくことがわかりました。

この3つのトランザクションは、MagnetoCorpとDigiBank(2回)によって開始されており、コマーシャルペーパー00001のステート変化を引き起こしています。 コマーシャルペーパーに変更を与えるこれらのトランザクションについてもう少し詳細に見ていきましょう。

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)トランザクションがどのようなプロパティと値の構造をもっているかを見てください。 このトランザクションは、コマーシャルペーパー00001の構造とかなり近いですが、異なるものです。 これは、2つのものは別のものだからで、コマーシャルペーパー00001は、この発行(issue)トランザクションの結果を反映したものだからです。 このプロパティを受け取りコマーシャルペーパーを作るのは、発行(issue)トランザクションの裏にあるロジック(ここでは見ることはできませんが)です。 トランザクションによってコマーシャルペーパーが作られるので、これらの構造の間には非常に近い関係があることになります。

発行(issue)トランザクションにおいて関係する唯一の組織は、MagnetoCorpです。 当然、MagnetoCorpがこのトランザクションに署名することが必要です。 一般的に、コマーシャルペーパーの発行者が、それを発行するトランザクションに署名を行うことが必要となります。

Buy

次に、コマーシャルペーパー00001の所有権をMagnetoCorpからDigiBankに移す、購入(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

購入(buy)トランザクションでは、コマーシャルペーパーに反映されるプロパティが少ないことに注目してください。 これは、このトランザクションが、コマーシャルペーパーを変更するだけだからです。 このトランザクションの結果として、変更が行われるのは、New owner = DigiBank(新所有者 = DigiBank)の部分だけであり、その他は変化ありません。 このことは特に問題はなく、購入(buy)トランザクションの最も重要なことは、所有権の変更であり、実際このトランザクションにおいては、元の所有者であるMagnetoCorpの承認があります。

コマーシャルペーパー00001に、購入時刻(Purchase time)と購入価格(Price)が表れないのはなぜかと思うかもしれません。 これは、トランザクションとコマーシャルペーパーの違いから来ているものです。 4.94M USDという値札は、コマーシャルペーパーのプロパティというよりも、トランザクションのプロパティであるからです。 この違いについて少し考えてみてください。これは、そんなに自明なものではありません。 後で、台帳は両方の情報、すなわち、コマーシャルペーパーを変更するすべてのトランザクションの履歴と最新のステートが記録されていることについて述べます。 この情報の分離についてしっかりと理解しておくことは非常に重要です。

また、コマーシャルペーパー00001は複数回にわたって購入、売却されるかもしれないということも、考えに入れておくべきです。 シナリオから少し離れてしまいますが、コマーシャルペーパー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

コマーシャルペーパーの所有者がどのように変化し、そしてこの例でどのように価格が変化したかを見てください。 MagnetoCorpのコマーシャルペーパーの価格が下落した理由について、何か思いつくでしょうか?

直観的には、購入(buy)トランザクションは、その取引に関わる二者の相互の合意の証拠となるように、購入する組織と同時に売却する組織の両方が、そのトランザクションに署名することが必要です。

Redeem

コマーシャルペーパー00001の現金化(redeem)のトランザクションは、そのライフサイクルの最後を表しています。 この比較的単純な例では、HedgeMaticがMagnetoCorpにコマーシャルペーパーを戻すトランザクションを開始します。

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

この現金化(redeem)トランザクションのプロパティが非常に少ないことに注目してください。 コマーシャルペーパー00001に対する変更は、現金化のトランザクションのロジックによってすべて計算することができます。 発行者(Issuer)が新しい所有者となり、現在の状態(Current state)は現金化済み(redeemed)に変更されます。 現在のコマーシャルペーパーの保持者とチェックをするために、現在の所有者(Current owner)プロパティが含まれています。

信頼という観点からすると、購入(buy)トランザクションと同じ理由付けが、現金化(redeem)の指示に対しても適用され、トランザクションに関わる二つの組織の両方がトランザクションに署名することが必要となります。

The Ledger

このトピックでは、トランザクションとその結果としてのコマーシャルペーパーのステートが、PaperNetにおける二つの最も重要な概念であることをみてきました。 実際、この二つの基本的な要素は、Hyperledger Fabricのいかなる分散台帳においても見ることができます。 すべてのオブジェクトの現在の値をもつワールドステートと、現在のワールドステートをもたらしているすべてのトランザクションの履歴を記録するブロックチェーンです。

トランザクションに対する必要な署名は、台帳にトランザクションを追加するときに評価されるルールを通じて強制されます。 必要な署名がそろっている場合のみ、Fabricはトランザクションを妥当なもの(valid)として受け入れます。

今このような考えをスマートコントラクトに変換するのにちょうどよいところにいます。 プログラムの能力が少し衰えているなと思っていても心配しないでください。 プログラムコードを理解するためのヒントや参照すべき場所をお伝えします。 コマーシャルペーパーのスマートコントラクトをマスターすることは、独自のアプリケーションを設計するうえで大きな一歩となります。 もし、少しのプログラミングなら問題ないというビジネスアナリストでしたら、ためらわずにより深く見ていきましょう!