Skip to content

Latest commit

 

History

History
125 lines (105 loc) · 5.01 KB

README.MD

File metadata and controls

125 lines (105 loc) · 5.01 KB

Blockchain IoT Marketplace

Solidity TypeScript Rust Docker NPM Vite Svelte TailwindCSS

概要

データ流通を支援する分散型需給マッチングシステム のPoC。ブロックチェーンを用いたIoT機器のデータ流通を追体験できる。

データ流通までのワークフロー

sequenceDiagram
    autonumber
    participant Mediator(IoTOwner)
    actor iotOwner as IoTオーナー
    participant Merchandise
    participant IoTMarketplace as マーケットプレイス
    participant Frontend as UIアプリケーション
    actor buyer as データ購入者
    participant Mediator(buyer)
    Mediator(IoTOwner)->>IoTMarketplace: Deploy
    Note right of Mediator(IoTOwner): Hash値などメタデータ
    IoTMarketplace->>Merchandise: コンストラクタ
    buyer->>Frontend: データ購入リクエスト
    Note left of buyer: ウォレットによる署名
    Frontend->>Merchandise: purchase
    Mediator(buyer)->>Mediator(IoTOwner): 実データの要求
    Mediator(buyer)->>Mediator(buyer):Hash()
    Mediator(buyer)->>Merchandise: verify()
    Mediator(IoTOwner)->>Merchandise: withdraw()
Loading

requirements

  • Docker
  • VSCode (Extensions:Docker+DevContainers)

セットアップ

1. リポジトリをクローン

git clone --recursive https://github.com/ertlnagoya/Blockchain_IoT_Marketplace.git

2. hardhat(ブロックチェーンの)セットアップ

$ cd iot-market
$ code .

VSCodeを開いたら、> DevContainer: Rebuild and Reopen in Containerを選択してコンテナに入る。

続いて、以下のコマンドを実行

$ npx hardhat node

これによって、ローカルネットワークが起動します。

別のターミナルを開いて、以下のコマンドを実行

$ npx hardhat run scripts/deployMerchandiseWithIoTMarket.ts --network localhost

これによってローカルネットワークに、IoT Marketといくつかのサンプルデータがデプロイされます。

3. Metamaskのセットアップ

ブラウザの拡張機能であるMetamaskをインストールしてください。 以下のサイトを参考にローカルネットワークのアカウント0~3をMetamaskに追加してください

参考:Ethereumのローカルノードを立ち上げて、MetaMaskも使ってみる (hardhat) #Ubuntu - Qiita

4. フロントエンドのセットアップ

$ cd iot-market-ui
$ code .

VSCodeを開いたら、> DevContainer: Rebuild and Reopen in Containerを選択してコンテナに入る。

続いて、以下のコマンドを実行

$ npm run dev

localhost:5173にアクセスすると、フロントエンドが表示されます。

5. ストレージサーバーのセットアップ

$ cd simple-storage
$ code .

VSCodeを開いたら、> DevContainer: Rebuild and Reopen in Containerを選択してコンテナに入る。

続いて、以下のコマンドを実行

$ cargo run

これによって、ストレージサーバーが起動します。ストレージサーバーはポート3000番で待ち受けます。

6. Mediator(owner)のセットアップ

$ cd mediator-owner
$ code .

VSCodeを開いたら、> DevContainer: Rebuild and Reopen in Containerを選択してコンテナに入る。

続いて、以下のコマンドを実行

$ cargo run

これによって、Mediatorが起動します。 ownerは商品のデプロイとストレージサーバーへのファイルのアップロードを行います。

7. Mediator(buyer)のセットアップ

$ cd mediator-buyer
$ code .

以降、手順6と同様にMediator(buyer)をセットアップしてください。

8. 購入手続きを行う

localhost:5173にアクセスし、metamaskでアカウントをbuyerのものに切り替えてください。その後、mediator(owner)の実行によってデプロイされた商品を購入してください。正しくセットアップされていれば、buyerはイベントをキャッチしてストレージサーバーからファイルをダウンロードするはずです。

How it works