トレーサビリティ機能を備えたサンプルCordappのご紹介
--
____________________________________________________
<お知らせ>
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つの機能があります。①製造機能は、材料を使用して素材を生成します。②売買機能は他企業が保有している商品を購入します。③トレースバック機能は製品の製造にかかる全行程の製造者、製造日時、ロット番号を取得できます。
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
おすすめ記事