chainmetric-app

所属分类:企业管理
开发工具:Dart
文件大小:0KB
下载次数:0
上传日期:2021-09-27 10:03:25
上 传 者sh-1993
说明:  由传感器需求系统控制的物联网区块链供应链的移动客户端应用程序
(Mobile client application for the IoT enabled blockchain supply chain controlled by sensor requirements system)

文件列表:
LICENSE (11357, 2021-09-27)
docs/ (0, 2021-09-27)
docs/asset_management.png (12686181, 2021-09-27)
docs/bluetooth_pairing.gif (10174749, 2021-09-27)
docs/bluetooth_pairing.png (1047863, 2021-09-27)
docs/device_management.png (17053235, 2021-09-27)
docs/diagram.png (52117, 2021-09-27)
docs/identity_management.png (7291493, 2021-09-27)
docs/readings_streaming.gif (1193332, 2021-09-27)
docs/screenshots.png (11878891, 2021-09-27)
heimdall/ (0, 2021-09-27)
heimdall/.metadata (305, 2021-09-27)
heimdall/Makefile (2354, 2021-09-27)
heimdall/analysis_options.yaml (307, 2021-09-27)
heimdall/android/ (0, 2021-09-27)
heimdall/android/app/ (0, 2021-09-27)
heimdall/android/app/build.gradle (2935, 2021-09-27)
heimdall/android/app/src/ (0, 2021-09-27)
heimdall/android/app/src/debug/ (0, 2021-09-27)
heimdall/android/app/src/debug/AndroidManifest.xml (336, 2021-09-27)
heimdall/android/app/src/main/ (0, 2021-09-27)
heimdall/android/app/src/main/AndroidManifest.xml (2794, 2021-09-27)
heimdall/android/app/src/main/kotlin/ (0, 2021-09-27)
heimdall/android/app/src/main/kotlin/network/ (0, 2021-09-27)
heimdall/android/app/src/main/kotlin/network/chainmetric/ (0, 2021-09-27)
heimdall/android/app/src/main/kotlin/network/chainmetric/heimdall/ (0, 2021-09-27)
heimdall/android/app/src/main/kotlin/network/chainmetric/heimdall/MainActivity.kt (133, 2021-09-27)
heimdall/android/app/src/main/libs/ (0, 2021-09-27)
heimdall/android/app/src/main/libs/lorkhan-sources.jar (12150, 2021-09-27)
heimdall/android/app/src/main/libs/lorkhan.aar (42458032, 2021-09-27)
heimdall/android/app/src/main/res/ (0, 2021-09-27)
heimdall/android/app/src/main/res/drawable-v21/ (0, 2021-09-27)
... ...

# Chainmetric: Client Application [![dart badge]][dart]  [![flutter badge]][flutter]  [![android badge]][flutter]  [![commit activity badge]][repo commit activity]  [![license badge]][license url] ## Overview _**Chainmetric Client Application**_ provides a convenient visual user interface for interacting, managing, and monitoring assets stored on permissioned IoT-enabled blockchain as a part of supply-chain control needs. A cross-platform application written with the help of the Flutter framework provides a way to input assets to the ledger, assign requirements of storing and delivering such assets, monitoring environmental metric readings sourced by [IoT sensor-equipped devices][chainmetric sensorsys repo] and validated by [blockchain network's][chainmetric network repo] [Smart Contracts][chainmetric contracts repo]. [![screenshots]][this repo] ## Tradeoff Chainmetric application is written using the [Flutter][flutter] UI development framework, which provides a convenient way of crafting fast user experiences for mobile, web, and desktop from a single codebase. Its programming language [Dart][dart] has build-in support for [declarative UI][declarative ui] and its massive widget catalog makes Flutter a pretty hot alternative to native mobile development and other hybrid frameworks like React Native or Ionic Angular. However, Flutter is still a young technology and its dedicated programming language may not have alternatives for some packages that may be crucial for the project. And that is exactly the tradeoff with the Chainmetric project since its blockchain network is built upon [Hyperledger Fabric][hyperledger fabric] stack, which currently does not support client SDK for Dart (only [Go][fabric sdk go], [Python][fabric sdk py], [NodeJS][fabric sdk node], and [Java][fabric sdk java]). So, the available options here are to skip Flutter in favor of native development, try to use JS-based frameworks like React Native, or even implement own SDK on Dart, which actually is not that complicated, since foremost it uses common gRPC protocols communication. Thankfully, there is one more option that happens to be ideal for this project, which implies binding Golang-written SDK using [`gomobile`][gomobile] utility to mobile native languages, which in this case are Kotlin for Android, and Swift for iOS, and then use call this native functionality from Dart codebase using [Method Channel][method channel]. Even though this approach seems too complicated at the first glance, it is actually pretty straightforward and works just fine. See details in [Lorkhan](https://github.com/timoth-y/chainmetric-app/tree/master/lorkhan) readme. ## Features ### Asset and requirements management Application allows supply chain participants to manage their assets: register them, transfer ownership, view changes history, etc. Requirements for conditions in which such assets must be stored and transported during supply operations are also can be assigned, changed, and revoked without leaving app. ![](https://github.com/timoth-y/chainmetric-app/blob/master/docs/asset_management.png?raw=true) ### IoT devices management IoT devices are essential for Chainmetric solution, they provide continuous flow of sensor reading from where the assets are located. Application provides extensive functionality to manage such devices, register them, monitor their activity, transfer ownership, control and send remote commands. ![devices screens](https://github.com/timoth-y/chainmetric-app/blob/master/docs/device_management.png?raw=true) ### Bluetooth pairing Each Chainmetric device is equipped with Bluetooth LE module, so that the phone with application can pair with them and perform some local communication, like share GPS location.

chainmetric bluetooth

### Environment monitoring Once asset is on Chainmetric blockchain ledger, and the requirements assigned to it, you can monitor its surrounding environment conditions in real time, verify if those are complied with required conditions, and receive notification whenever violations occurs.

chainmetric streaming

Environment metric readings from sensors connected to the device are being streamed directly to device, while being validated by on-chain [Smart Contracts][chainmetric contracts repo] against previously assigned requirements. The implementation of such feature requires the combination of Flutter's [Event Channel][event channel] with carefully choreographed event emitters and listeners throughout each level of the system: [![diagram]][this repo] [diagram]: https://github.com/timoth-y/chainmetric-app/blob/master/docs/diagram.png?raw=true ### Identity management Application provides a convenient way of managing identities, user authentication and authorization. Despite the fact that Hyperledger Fabric requires x509 cryptographic credentials for accessing it, application still can be signed in via basic auth credentials. See details at [chainmetric-network/orgservices/identity](https://github.com/timoth-y/chainmetric-network/tree/main/orgservices/identity). Application allows to have multiple identities (including ones from different organizations) and switch between them on fly. ![](https://github.com/timoth-y/chainmetric-app/blob/master/docs/identity_management.png?raw=true) ## Requirements - Mobile phone with Android or IOS - [Connection config][connection config] which can be generated via [`fabnctl`][fabnctl] command line utility - Cryptographic credentials to access the network [connection config]: https://github.com/timoth-y/chainmetric-app/blob/master/app/assets/connection_template.yaml [fabnctl]: https://github.com/timoth-y/fabnctl#bonus-generate-connectionyaml ## Roadmap - [x] IoT device Bluetooth pairing [(#1)](https://github.com/timoth-y/chainmetric-app/pull/1) - [x] GPS location tethering [(#2)](https://github.com/timoth-y/chainmetric-app/pull/2) - [ ] Asset view page - [ ] Device view page - [x] User profile tab [(#11)](https://github.com/timoth-y/chainmetric-app/pull/11) - [ ] Home dashboard tab - [x] Metric requirements violation notifications [(#9)](https://github.com/timoth-y/chainmetric-app/pull/9) ## Wrap up Chainmetric application implementation manages to connect [modern UI rendering engine][flutter] and [enterprise-grade permissioned blockchain][hyperledger fabric] by utilizing Golang cross-platform capabilities. Such an approach allowed to quickly create a decent-looking user interface that is truly reactive to changes in the [blockchain network][chainmetric network repo] and allows to make them in any place at any time. ## License Licensed under the [Apache 2.0][license file]. [dart badge]: https://img.shields.io/badge/Code-Dart-informational?style=flat&logo=dart&logoColor=white&color=50B1AA [lines counter]: https://img.shields.io/tokei/lines/github/timoth-y/chainmetric-contracts?color=teal&label=Lines [commit activity badge]: https://img.shields.io/github/commit-activity/m/timoth-y/chainmetric-contracts?label=Commit%20activity&color=teal [flutter badge]: https://img.shields.io/badge/Framework-Flutter-informational?style=flat&logo=flutter&logoColor=white&color=3374E0 [android badge]: https://img.shields.io/badge/Android-Supported-informational?style=flat&logo=android&logoColor=white&color=87B153 [license badge]: https://img.shields.io/badge/License-Apache%202.0-informational?style=flat&color=blue [screenshots]: https://github.com/timoth-y/chainmetric-app/blob/master/docs/screenshots.png?raw=true [this repo]: https://github.com/timoth-y/chainmetric-app [dart]: https://dart.dev [flutter]: https://flutter.dev [repo commit activity]: https://github.com/timoth-y/kicksware-api/graphs/commit-activity [license url]: https://www.apache.org/licenses/LICENSE-2.0 [declarative ui]: https://flutter.dev/docs/get-started/flutter-for/declarative [widget catalog]: https://flutter.dev/docs/development/ui/widgets [hyperledger fabric]: https://www.hyperledger.org/use/fabric [fabric sdk go]: https://github.com/hyperledger/fabric-sdk-go [fabric sdk py]: https://github.com/hyperledger/fabric-sdk-py [fabric sdk node]: https://github.com/hyperledger/fabric-sdk-node [fabric sdk java]: https://github.com/hyperledger/fabric-sdk-java [gomobile]: https://github.com/golang/mobile [method channel]: https://api.flutter.dev/flutter/services/MethodChannel-class.html [event channel]: https://api.flutter.dev/flutter/services/EventChannel-class.html [chainmetric network repo]: https://github.com/timoth-y/chainmetric-network [chainmetric contracts repo]: https://github.com/timoth-y/chainmetric-contracts [chainmetric sensorsys repo]: https://github.com/timoth-y/chainmetric-sensorsys [license file]: https://github.com/timoth-y/chainmetric-network/blob/main/LICENSE

近期下载者

相关文件


收藏者