トレーサビリティ機能を備えたサンプルCordappのご紹介

Tainakam
Corda japan
Published in
9 min readAug 2, 2021

____________________________________________________
<お知らせ>
SBI R3 Japanブログは、MediumからSBI R3 Japanのポータルサイトに引っ越ししました。引っ越し先で、mediumの過去記事も閲覧可能です。今までとは異なる新しいコンテンツも発信してまいりますので、お気に入り登録をぜひお願いします!

____________________________________________________

SBI R3 Japanが作成した、製造業のトレーサビリティを想定したサンプルCordappについてご紹介いたします。

製品がどの素材を使用して作成されたかが一目でわかる。

目次

1.開発背景
2.想定ユースケース
3.機能紹介
4.アプリの拡張性
5.サンプルCordappのデモ
6.サンプルCordappの技術紹介

1.開発背景

SBI R3 Japanではお客様からよく「Cordaは見えないからイメージがつきにくい」、「具体的に何ができるかを知りたい」という声を頂いておりました。そこで、近年メーカーのリコール時の迅速な原因究明や原産地証明として注目を集めているトレーサビリティにフォーカスを当て、本アプリを開発しました。

トレースバックを行うことで、製品の部品に対し、どの生産者がいつ製造したかを、サプライチェーンの始点までさかのぼることができる。

2.想定ユースケース

本アプリはサプライチェーン管理において次のニーズにこたえることができます。

企業間において製品、素材の移動データを正確に短時間で管理したい

仕入・在庫・販売の管理を一元化したい

原産地証明や製造者を把握したい

リコール時の影響範囲を把握したい

本アプリでは部品の購入、在庫の確認が簡単にできる。

3.機能紹介

本アプリには、製造業のトレーサビリティを想定した3つの機能があります。①製造機能は、材料を使用して素材を生成します。②売買機能は他企業が保有している商品を購入します。③トレースバック機能は製品の製造にかかる全行程の製造者、製造日時、ロット番号を取得できます。

サンプルCordappの3つの機能
製造画面では製造の記録、製造物の在庫が確認できる。

4.アプリの拡張性

本アプリを拡張するアイデアとして、在庫情報・売掛債権を基にした資金調達があげられます。金融機関にCordaネットワークに参加してもらい、改ざんできない取引データを基に、ファイナンスを容易に受けることができます。また、バイヤーの信用力を基にサプライヤーに対しファイナンスをするサプライチェーンファイナンスを行うこともできます。さらに金融機関のシステムとつなげ、スマートコントラクトを活用することで、取引データ生成と同時に支払いを行うこともできます。導入の観点では、すでに自社で仕入管理・在庫管理・販売管理システムを持っている場合、APIで自社のERPシステムと接続することができます。

5.サンプルCordappのデモ

デモシナリオの流れ

サプライチェーン上に、素材メーカー、部品メーカー、自動車メーカーの3社がいて、①素材メーカーがゴム・鉄・油(→素材)を製造。②部品メーカーが素材を購入し、③素材を基にタイヤ・エンジン(→部品)を製造。④自動車メーカーが部品を購入し、⑤部品を基に車を製造。⑥自動車メーカーがトレースバックを行う、となっています。

⑥のトレースバックをすることで車の部品・素材の製造日、生産者、ロットIDが入手できます。トレースバックは部品メーカーも行うことができます。なお、製品名、製造に必要な素材、参加者数は設定ファイルから自由にカスタマイズできます。

6.サンプルCordapp技術紹介

Flowの設計

本アプリでは4つのFlowが設計されています。

1.ManufactureFlow
ProductState(モノ)を生成します。

2.TradeFlow
ProductStateを売買します。このflowは買い手から実行しなければなりません。

3.GetTraceBackFlow
保有するProductStateの中に含まれる材料の製造者や製造日を出力します。

4.CheckStockFLow
Nodeが保有するProductStateを出力します。

Stateの設計

製品・部品・素材(→モノ)はすべてProductStateとして表現されています。一方、製品名・部品名・素材名(→名前)を特定する名称はProductState内のフィールドで定義します。パラメーターはロット番号、製品名、製造日、量、所有者が含まれます。

Contractの設計

CordaではStateの生成や移転の制約をContractで行います。Contractでは大きく分けて、次の3つの制約を定義しています。

すべての検証をパスすること

モノを作成するための検証

モノを移転するための検証

CorDappの設定

本アプリは、製品・部品・素材に必要な材料を下記のように定義しています。

task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {

///省略

cordapp project(':contracts')
cordapp (project(':workflows')){
config '''
car = ["tire:4", "engine:1"] // carを作るにはtireが4つ必要
engine = ["oil:10", "iron:20", "chemical:30"]
tire = ["rubber:10","wire:20"]
rubber = []
wire = []
oil = []
iron = []
chemical = []
'''
}
runSchemaMigration = true
}

本アプリの詳細は2021年8月25日の技術者向けイベントでお話ししますので、奮ってご参加ください。

本イベントでは、サンプルCordappの他、農産物のトレーサビリティアプリ、STOアプリ、証券トークントレーディングアプリの計4つのアプリをご紹介します。お気軽にお申込みください。

ご参考までに前回のイベントの様子はこちら!

最後までお読み頂き誠にありがとうございます。
記事へのご質問、またはブロックチェーンに関してお困りごとがございましたらお気軽にご連絡ください。
ブレインストーミングやアイデアソンも大歓迎です。

お問い合わせ:info-srj@sbir3japan.co.jp
HP: https://sbir3japan.co.jp/
Corda Guide:https://support.sbir3japan.co.jp/hc/ja
Twitter: https://twitter.com/R3Sbi
Facebook: https://www.facebook.com/R3DLTJapan

--

--