サンプルCordappについてのユースケース、機能、アプリ、デモをご紹介しています。
はじめに
SBI R3 Japanが作成した、製造業のトレーサビリティを想定したサンプルCordappについてご紹介いたします。
1.開発背景
SBI R3 Japanではお客様からよく「Cordaは見えないからイメージがつきにくい」、「具体的に何ができるかを知りたい」という声を頂いておりました。そこで、近年メーカーのリコール時の迅速な原因究明や原産地証明として注目を集めているトレーサビリティにフォーカスを当て、本アプリを開発しました。
2.想定ユースケース
本アプリはサプライチェーン管理において次のニーズにこたえることができます。
企業間において製品、素材の移動データを正確に短時間で管理したい仕入・在庫・販売の管理を一元化したい
原産地証明や製造者を把握したい
リコール時の影響範囲を把握したい
3.機能紹介
本アプリには、製造業のトレーサビリティを想定した3つの機能があります。①製造機能は、材料を使用して素材を生成します。②売買機能は他企業が保有している商品を購入します。③トレースバック機能は製品の製造にかかる全行程の製造者、製造日時、ロット番号を取得できます。
4.アプリの拡張性
本アプリを拡張するアイデアとして、在庫情報・売掛債権を基にした資金調達があげられます。金融機関にCordaネットワークに参加してもらい、改ざんできない取引データを基に、ファイナンスを容易に受けることができます。また、バイヤーの信用力を基にサプライヤーに対しファイナンスをするサプライチェーンファイナンスを行うこともできます。さらに金融機関のシステムとつなげ、スマートコントラクトを活用することで、取引データ生成と同時に支払いを行うこともできます。導入の観点では、すでに自社で仕入管理・在庫管理・販売管理システムを持っている場合、APIで自社のERPシステムと接続することができます。
5.サンプルCordappのデモ
サプライチェーン上に、素材メーカー、部品メーカー、自動車メーカーの3社がいて、①素材メーカーがゴム・鉄・油(→素材)を製造。②部品メーカーが素材を購入し、③素材を基にタイヤ・エンジン(→部品)を製造。④自動車メーカーが部品を購入し、⑤部品を基に車を製造。⑥自動車メーカーがトレースバックを行う、となっています。
⑥のトレースバックをすることで車の部品・素材の製造日、生産者、ロットIDが入手できます。トレースバックは部品メーカーも行うことができます。なお、製品名、製造に必要な素材、参加者数は設定ファイルから自由にカスタマイズできます。
6.サンプルCordapp技術紹介
Flowの設計
本アプリでは4つのFlowが設計されています。
1.ManufactureFlowProductState(モノ)を生成します。
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
}
<ご質問・ご要望の例>
- Corda Portalの記事について質問したい
- ブロックチェーンを活用した新規事業を相談したい
- 企業でのブロックチェーン活用方法を教えて欲しい 等々