The physical architecture the Side Chain Storage project needs to be deployed is formed by:

  1. Vinduinos.

  2. Weather station.

  3. Raspberry pi.

  4. Ethereum Node (Echo: 10.112.48.25)

    OpenBravo (Bravo: 10.112.48.25)

  5. Ethereum Main Chain

The communication between this components is defined in the following schema:

Communication interface

Raspberry pi to Sidechain

To allow this communication we are going to use a python3 script that collects vinduino and weather station data, signs it and sends it to the ethereum side chain in echo using the web3 protocol. This script is going to connect to ethereum sidechain using an https connection with the node running on 10.112.48.25 on port 8545. The data structure to be sent by the raspberry willl be:

Vinduino:

WeatherStation:

Sidechain to OpenBravo

As soon as data gets inserted in the blockchain, there will be an active  python3 listener script that will redirect it to openbravo leaving a trace so that, it is possible for any user to check its consistency. Comunication will be established using openbravo API and will carry the following information:

Vinduino:

WeatherStation:

Vinduinos

Vinduinos will be used as a datasource for this project. Once getting the code they are running for now, we are going to implement a digital signature for the data. So our prerequisites are:

Our objective with the vinduinos is to change the actual code so that it digitally sign the data that is being sent. (Sign <> Encrypt)

Weather Station

Weather stations will work as a datasource for this project. The basic prerequisites for this component to start the project are:

Our objective with this component is just to read its data and forward it to the side chain with the raspberry pi.

Raspberry pi + Weather Station

The raspberry pi is going to be used as the connection point between the IoT sensors and the blockchain. This raspberry pi must met the following prerequisites:

Our objective with the raspberry pi is to refactor the actual code so that, instead of sending data to OpenBravo directly it sends it to the side chain by using its own pair of keys.

Ethereum sidechain

For the ethereum sidechain we need a server node. The selected server node for this is Echo (10.112.48.25)

Our objective with this server node is to use it as our first full ethereum node. This server is going to hold the full blockchain until local nodes are implemented. It will also hold a servicie to interact with bravo (to be discussed). As a summary it will:

Ethereum mainchain

The ethereum mainchain is the public ethereum ledger. We are going to use the existing ledger and the account used for the MTB18 ICO deployment.

OpenBravo

OpenBravo is going to work as a fast database for this project. Once data have been validated in the sidechain, it will be stored in OpenBravo. The requirements to use OpenBravo are: