Git Product home page Git Product logo

kontaktdatenblattonblockchain's Introduction

"Kontaktdatenblatt" on Blockchain

Introduction

Proof-of-concept for running "Kontaktdatenblatt" used for market communication in German energy industry on an Ethereum blockchain. The primary goal was to proof end-to-end verification of "Marktpartner" identities regarding their organisation names is possible purely on-chain using an on-chain verification algorithm (currently ECDSA with SHA256 supported) and existing certificates (SM-PKI EMT).

This work is inspired by discussions in BCI-E+, in particular the idea of leveraging existing SM-PKI EMT certificates for this use case.

Architecture

Smart contract architecture:

"Image 1"

Example

"Marktpartner" registers itself (DID):

"Image 1"

Show data to be included in a certificate:

"Image 2"

List all "Marktpartner" including their verification status:

"Image 3"

Exemplarily verify a "Marktpartner" via a certificate issued by a trusted certificate authority:

"Image 4"

Trigger on-chain verification of provided certificate:

"Image 5"

On-chain verification of provided certificate:

"Image 6"

Certificate successfully verified on-chain:

"Image 7"

Verified "Marktpartner" highlighted accordingly:

"Image 8"

Edit additional contact information (besides organisation name, which has been extracted from the certificate):

"Image 9"

Confirm contact information update:

"Image 10"

Contact information successfully edited:

"Image 11"

Show contact information of verified "Marktpartner":

"Image 12"

Installation

The following instructions assume an execution on localhost. However, feel free to execute the code on any Ethereum-based blockchain (with a gas limit of at least 25 Mio.).

  1. Install Ganache. Important: A gas limit of at least 25 Mio. is required. We recommend to set it to 30 Mio. Open Ganache => Settings => Chain

"Image 12"

  1. Install Metamask in your browser. Once installed, import one of the prefuned accounts and connect Metamask to your Ganache private chain (default: http://localhost:7545)

  2. Git clone the repo to your local machine via git clone --recurse-submodules [email protected]:BlockInfinity/kontaktdatenblattOnBlockchain.git

  3. Use Remix (or any other client) to deploy ./contracts/Register.sol (and all imported contracts) to your Ganache chain. Important note: Register.sol's constructor requires 2 parameters. Use the following values for them.

  • pk_x = 0x686A332A465F38F17CC6541CB939CE1237CF8C2EFC1A28D8DD93191CCDD760BC
  • pk_y = 0x48CEC4C40D2C0EBB7F1626C77FC8BD8573948600658BF6B8DFFBB2559A5EA8B7
  1. cd ./webapp && npm install

  2. Configure contract address of the previously deployed contract (4) in /webapp/src/api/blockchainApi.js at variable "registerContractAddress".

  3. Start the app via npm run start-dev

Hint: In ./misc you find the official PKI EMT certificate of "50Hertz Transmission GmbH" you may use for verification testing (downloaded here). However, any ECDSA (with SHA256) based signature should work.

kontaktdatenblattonblockchain's People

Contributors

m1cm1c avatar m1am1a avatar mgsgde avatar

Watchers

James Cloos avatar Matthias Stumpp avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.