Archiv der Kategorie: Blockchain

Umweltmessdaten auf der Blockchain

Die „Air-Quality-Chain“ ist ein System zur Protokollierung, unveränderlichen Speicherung und dezentralen Verteilung von Umweltmessdaten basierend auf der Blockchain Technologie.

Im aktuellen Testsystem werden u.a. die Messdaten des Luftmessnetzes der Stadt Wien verarbeitet, die an 17 stationären Messstellen zur kontinuierlichen Messung von Luftschadstoffen erhoben werden. Diese Daten werden in 30 minütigen Intervallen im Rahmen von „data.gv.at – offene Daten Österreichs“ veröffentlicht.

Eine AQC-Schnittstelle lädt diese Daten periodisch und protokolliert sie in der AQC-Blockchain, wo sie unveränderlich gespeichert und an alle teilnehmenden Blockchain-Knoten („Nodes“) verteilt werden.

Die grafische Darstellung der Messwerte ist nur ein Beispiel, wie die gesichert protokollierten Daten ausgewertet werden können.

Eine weitere Datenquelle betrifft die „aktuellen Ozondaten Österreich„, die Ozonmesswerte der Messnetze der Ämter der Landesregierungen und des Umweltbundesamtes. Diese Daten werden im Rahmen des „OpenData Portal – Datenkatalog: Luft“ des Umweltbundesamtes zur Verfügung gestellt. Auch hier lädt ein AQC-Script die stündlichen Mittelwerte und protokolliert sie in der AQC-Blockchain.

Die Ozondaten können auf einer Karte dargestellt werden, es ist aber z.B. auch eine Zeitreihendarstellung einzelner Stationen möglich.

Auch die Meßwerte des Strahlenfrühwarnsystems werden im Rahmen der laufenden Tests verarbeitet, d.h. über eine Schnittstelle eingelesen und in der Blockchain protokolliert. Als Beispiel können die aktuellen Daten der derzeit 111 Stationen auf einer AQC-Kartendarstellung angezeigt werden, ähnlich der offiziellen Darstellung des BMNT.

Im Rahmen des aktuellen Testsystems ist der Zugriff auf die Air-Quality-Chain nur für definierte Teilnehmer möglich. Im kommenden Echtsystem wird diese Beschränkung aufgehoben, d.h. jeder Interessierte kann einen Blockchain-Node betreiben und auf die gespeicherten Daten uneingeschränkt zugreifen.

Webinar „Digitalisierung – Blockchain“

Im Rahmen des Immo-Webinars „Digitalisierung – Blockchain“ konnte ich im Gespräch mit Mag. Heimo Rollett die technischen Grundlagen von Blockchains erläutern, die Abgrenzung Bitcoin – Blockchain, die Haupteigenschaften von Blockchains und Grundlagen über die notwendige Kryptografie. Heimo Rollett ergänzte noch einige sehr interessante Aspekte aus dem Immobilienbereich – siehe auch seinen Blogbeitrag dazu.

War eine interessante Erfahrung, danke an immowebinar.at, das Team von m|mint und natürlich an Mag. Heimo Rollett.

Crypto-currencies hidden in Lego artworks

Two days ago I read this article in „Klausis Krypto Kolumne“. It is about artist Andy Bauch, who created Lego mosaics with hidden data in it. Decoding the data should lead to private keys for crypto-currencies …

After a little brainstorming I managed to crack the code of the picture Bitcoin Initially Valued at $20, 2016, but when looking up the calculated Bitcoin Address (1NmxAV1ze28U4Uuqg2fH1JTB8NtWKvTyhM) in a Blockexplorer, I had to recognize, that the value was already withdrawn. After googling the decoded private key (S49JAsn794iqvr6sTodXfdf41NCFaD) I found an russian article on medium.com, explaining the decoding process of all the Bitcoin series. Further information I then found here.

So some clever guys had done it three weeks ago and collected Bitcoins worth USD 10.000,- Congratulations!


Parallel to the „Bitcoins“ series Andy Bauch also did some artwork including the private keys for other cryptocurrencies. For example Dogecoin initally valued at $10, 2018.

I played around with it yesterday evening: It is a little more complicated to extract the private key (than in the BTC series) and the gained value is far lower, but the fun is the same …

Here my findings for the Dogecoin picture, after locating the relevant area in the picture (see yellow frame):

The information is coded in Base4, using 4 digits per character
Colors: pink: 0, red: 1, blue: 2, grey: 3

This leads to following 204 digits: 031210221101101013020310101113120312030313101013100211131003031312220302102211211322101012321213121213021100112011201303122110111221101310311301121212231213111313031233101112320320031113111013031011200310

This sequence grouped in four digits, converted to Base10 and interpreted as ASCII gives the 51 character private key: 6JQDr4Ev63tGBWC7j2JYzDngfrPXXsiEiGMqfkgWsoEn85uG4X4

This converts to the DOGE Address: DS94PAd6nxxTWSktgHUKkcxxjotSJoWrCW

As expected, the 1,255.3030078 DOGE (valued approx. USD 10,-) also have been collected on 2018-03-24.

But: Did I mention the fun?

😉

Austrian Blockchain Landscape

Letzte Woche wurde die V1.1 der „Austrian Blockchain Landscape“ veröffentlicht. Es handelt sich hier um einen Überblick zu Unternehmen, Plattformen und Institutionen in Sachen Blockchain Entwicklungen in Österreich. Diese Infos werden von der EnliteAI GmbH in Zusammenarbeit mit dem bekannten Blogger & Influencer Robby Schwertner (CryptoRobby) zusammengestellt.

Für mich ist es natürlich eine Ehre, unter der Rubrik „Development & Software“ genannt zu werden!

Austrian Blockchain Center

Jetzt wird es ernst: Die Vorbereitungen für den Förderantrag zur Gründung des COMET K1 Forschungszentrums ABC – Austrian Blockchain Center laufen auf vollen Touren.
Es freut mich, gemeinsam mit Synercon an der Organisation und Moderation der Antragserstellung arbeiten zu können.

Die wissenschaftlichen Partner sind großteils definiert: Prof. Taudes (WU, Institut für Kryptoökonomie) ist für die wissenschaftliche Gesamtleitung verantwortlich, die vier Themengebiete (Areas) werden von Top Researchern der WU Wien, TU Wien, Uni Wien, SBA-Research, FH St. Pölten, dem RIAT … bearbeitet.

Aktuell arbeiten wir an der Gewinnung von Unternehmenspartnern …

Details siehe https://blockchain-center.at/

IOTA Full Node

IOTA zählt heute wohl zu den am meisten polarisierenden Technologien am Sektor der Kryptowährungen.

Mit dem anstatt einer Blockchain eingesetzten „Tangle“ sollen IOTA Systeme Transaktionen „blitzschnell“ verarbeiten und dabei „endlos skalieren“. Da es kein Mining gibt, fallen keine Transaktionskosten an und „quantum proof“ (d.h. die Algorithmen können nicht von – irgendwann kommenden – Quantencomputern gebrochen werden) soll das System auch noch sein.

Da werden natürlich Verfechter der „alten“ Kryptowährungen, die auf Bitcoin- bzw. auf Ethereumtechnologien basieren, nervös und reiten auf diversen Eigenschaften von IOTA herum, ibs. auch auf den Skurilitäten, z.B. der Einsatz von ternärer Logik auf „normaler“ (binärer) Hardware oder eine selbsterfundene Hashfunktion, die sich als kryptografische Schwachstelle herausgestellt hatte.

Wie dem auch sei. Ich finde die Technologie jedenfalls interessant genug, um mich damit zu beschäftigen. Also habe ich Anfang Dezember 2017 mal einen Server („Full Node“) mit IRI (der IOTA Reference Implementation) aufgesetzt. War zwar etwas Bastelei (mittlerweilen gibt es gute Anleitungen) und auch das manuelle Suchen und Konfigurieren von „Neighbors“ (Nodes mit denen sich der eigene zu verbinden hat) ist zumindest ungewöhnlich.

Gut, jetzt habe ich also einen funktionierenden Full Node und unterstütze das IOTA Netzwerk. Mein Wallet (Light Wallet unter Windows, Android muss ich noch testen) kann ich auch damit verbinden und IOTA hin- und herschicken. Sehr spannend 😉

Eigentlich würde ich sehr gerne noch ganz andere Dinge damit ausprobieren, z.B. Daten von IOT-Devices verarbeiten (übertragen, speichern, verkaufen …), was ja der eigentliche Hauptzweck von IOTA sein soll. Das ist aber noch nicht wirklich verfügbar, zumindest nicht für die Allgemeinheit.

Aber wenigstens konnte ich einmal das IRI-API anbinden, an eine simple Webapplikation, mit der man den Status meines Nodes beauskunften kann.

Ich bleibe jedenfalls dran und werde über die Verarbeitung von IOT-Daten berichten, sobald es relevante News gibt.

Also: Stay tuned …

„Proof Of Existence“ auf Basis Blockchain

Mittels „Proof Of Existence“ kann bewiesen werden, dass ein elektronisches Dokument zu einem bestimmten Zeitpunkt in einer bestimmten Form existiert hat (es wird auch der englische Begriff „Notarization“ dafür verwendet).
Dabei wird ein eindeutiger Fingerabdruck eines Dokumentes (der sog. Hashwert) errechnet und gemeinsam mit einem Zeitstempel unveränderbar protokolliert.
Wenn zu einem späteren Zeitpunkt der Beweis erbracht werden soll, dass das betreffende Dokument zum behaupteten Zeitpunkt bereits existiert hat, wird von dem Dokument erneut der Hashwert berechnet und mit den früher (unveränderbar) verspeicherten Daten verglichen.

Dieses Demo zeigt die Implementierung eines derartigen Systems auf Basis der Blockchain Technologie Multichain.

Zum Erstellen des Beweises wird ein Dokument ausgewählt. Das Dokument wird dabei nicht auf den Server hochgeladen, sondern der Hashwert wird lokal im Browser errechnet. Optional können weitere Informationen hinzugefügt werden, die mit gespeichert werden, den Hashwert jedoch nicht beeinflussen.

Berechnung des Hashwertes, Eingabe optionaler weiterer Informationen.

Nach dem Übermitteln der Formulardaten an den Server erstellt dieser eine Blockchain Transaktion, die die Daten beinhaltet und antwortet mit folgender Meldung:

Meldung des Systems nach Protokollierung der Daten in der Blockchain.

Damit wird angezeigt, dass in der Blockchaintransaktion (in diesem Beispiel die Transaktion mit der ID d919c006523ff32f38052014e09946ead08c6eb90c93341816884a17fcfaceb6) der errechnete Hashwert (in diesem Fall d8db6f0434544a62e04f5e7a121e2286f4e22dfcd7cab5d76c4c85dab79a80f5) plus Zusatzinformationen verspeichert wurden.

Wenn zu einem späteren Zeitpunkt ein entsprechender Beweis erbracht werden soll, muss die Transaktions-ID und/oder der Hashwert des Dokumentes an das System übergeben werden:

Verifikation der Daten mittels Transaktions ID und/oder Hashwert des Dokumentes.

Das System sucht in der Blockchain die entsprechende Transaktion und stellt die verifizierten Daten dar:

Darstellung der verifizierten Daten.

Die Transaktionsdaten beinhalten dabei den Hashert des Dokumentes, die optionalen Zusatzdaten und den Zeitstempel der Erstellung der Transaktion.

Zusätzlich wird darüber informiert, in welchem Block der Blockchain die Transaktion verspeichert wurde, den Zeitstempel des Blocks (Blocktime) und durch wie viele nachfolgende Blocks dieser Block bereits bestätigt wurde.

Natürlich kann der Beweis nicht nur durch dieses System (das ja auch den Eintrag erstellt hat) erbracht werden, sondern durch jeden anderen Node (=“Teilnehmer“) dieser Blockchain. Dazu kann z.B. der betreffende Block mit einem Blockexplorer gesucht werden …

Liste der Blocks in einem Blockexplorer.

… und die Transaktionsdaten gelesen (bzw. interpretiert) werden – in diesem Beispiel in Rohformat:

Notarization_TransactionDetails

Das vorgestellte System läuft noch im Testbetrieb, ich werde es aber demnächst freigeben.

16.11.2017: Das System ist unter https://blockchains.web-lab.at/poe/ zu erreichen.

MQTT, Node-RED & Blockchain

Und noch eine Kopplung eines IoT Systems mit einer Blockchain …

Ich hoffe, es wird nicht langweilig. Aber mein lieber Kollege M. wollte es unbedingt sehen: „Zeig mir doch, wie man mit Node-RED in die Blockchain schreiben kann, aber getriggert über MQTT, wenn’s geht.“

Also gut:

Die zu protokollierenden Daten werden über einen MQTT Publisher an einen MQTT Broker gesendet. Ich verwende hier als Broker das (Opensource) System von Mosquitto.org.

MQTT & Node-RED & Blockchain – Übersicht

In Node-RED sorgt ein simpler Flow dafür, dass die Daten, die über den MQTT Subscriber eintreffen, nach einer Umformatierung der Json-Datenstruktur über WebSockets an den IoT-Interface Node gesendet werden.

Node-RED – Blockchain – Flow

Der Interface Node (auch bereits beim IoT-Demo und beim Alexa Demo verwendet) nimmt die Daten entgegen und …

Node-RED – Blockchain – Interface Node

… protokolliert sie dann in der Blockchain. Hier verwende ich natürlich wieder meinen Favoriten, die Multichain!

Multichain-Stream „DeviceLog“, der die von Node-RED und den anderen Demos eingetragenen Daten beinhaltet.

Aja … der MQTT Publisher: Da gibt es mehrere Möglichkeiten. Um es schnell und einfach zu machen, habe ich ein fertiges Beispiel genommen (https://github.com/CloudMQTT/python-mqtt-example/) und (in den Zeilen 58 und 60) den Url und das Topic entsprechend angepasst.

Und das war es auch schon …

LG an Kollegen M. 😉

Alexa schreibt in die Blockchain

In Erweiterung zum Proof of Concept Blockchain – Internet Of Things wird in diesem Demo gezeigt, wie über einen „digitalen Assistenten“ eine Blockchain-Transaktion ausgelöst wird. Ich verwende dazu mein Amazon Echo Dot Device „Alexa“.

Amazon Echo Dot – „Alexa“

Alexa nimmt dazu „Blino“ zur Hilfe. Der „Blockchain-Interface-Node“ stellt die Schnittstelle zwischen IoT-Devices und Blockchains zur Verfügung.

Alexa schreibt in die Blockchain – Übersicht

Ablauf

  • Ein Sprachkommando wie „Alexa, sage Blino, er soll 471234 in die Blockchain schreiben.“ startet den Vorgang.
  • Alexa ruft den „Skill“ (=Anwendung) Blino in der Amazon Cloud auf.
  • Der Skill ruft das Blino-Webservice auf, welches die entsprechenden Informationen an den Interface-Node sendet, der sie in die Blockchain schreibt. Danach wird die entsprechende Antwort erstellt und an den Skill retourniert.
  • Der Skill übergibt die Antwort an Alexa, welche sie dann ausspricht.

Der Multichain-Stream „DeviceLog“, der die von Alexa mittels Blino protokollierten Daten beinhaltet.

Anmerkung: Zum Testen habe ich einen Voice Synthesizer verwendet:

Automatische erzeugtes Sprachkommando für Alexa

Der gesamte Voice Dialog hört sich so an.

Der Skill

Die Konfiguration des Skills mittels Alexa Skills Kit (ASK) besteht im Wesentlichen aus folgenden Schritten:

Alexa Skill Kit: Allgemeine Konfiguration

Die allgemeine Konfiguration beinhaltet den „Invocation Name“, die Bezeichnung mit der Alexa den Skill im System findet, wenn sie mit „Alexa, starte Blino …“ angesprochen wird.

Im nächsten Schritt werden die „Intents“ konfiguriert, das sind die Aktionen, die über Sprachbefehle aufgerufen werden können. Intents können Parameter haben – in diesem Fall einen Parameter „Nummer“.

Alexa Skill Kit: Konfiguration der Intents

Nun werden verschiedene Phrasen („Utterances“) konfiguriert, die alle denselben Intent  aufrufen – mit Übergabe des Parameters „Nummer“.

Alexa Skill Kit: Konfiguration der Utterances

Schließlich wird noch der Endpoint eingerichtet, die Serverfunktion, die vom Skill aufgerufen wird und das Ergebnis an Alexa zurückgibt.

Skills verwenden in fast allen Fällen Amazon’s Lambda Funktionen. Im vorliegenden Beispiel habe ich allerdings ein eigenes Webservice verwendet, da ich die Anbindung an den Interface Node bereits aus einem Vorprojekt zur Verfügung hatte.

Der Endpoint

Der Endpoint ist als Webservice implementiert, die Verarbeitung besteht im Wesentlichen aus

  • Parsen des Json-Requests und Ermitteln der angeforderten Verarbeitung,
  • der eigentlichen Verarbeitung, z.B. Aufruf des Interface Nodes mittels WebSockets
  • und dem Aufbauen des Responses, der dann an über den Skill an Alexa retourniert wird

Alexa Skill Kit: Testen des Endpoints

Fazit

Ob das Protokollieren von Daten in einer Blockchain durch einen digitalen Assistenten jetzt enorm viele praktische Anwendungsmöglichkeiten hat, muss natürlich jeder selbst beurteilen 😉

Ich fand es jedenfalls recht interessant, ein wenig in die Welt von Alexa eintauchen und mich mit der Entwicklung von Skills und deren Schnittstellen zu beschäftigen.

Dabei sind mir auch gleich Ideen für weitere Experimente gekommen: Alexa könnte sich ja auch mit Node-RED unterhalten, oder? Das werde ich mich bald einmal ansehen …

Blockchain – Internet of Things

In einem Proof of Concept wird hier gezeigt, wie ich eine bidirektionale Kopplung einer Blockchain mit dem „Internet of Things“ (d.h. mit IoT-Devices) implementiert habe.

Von Blockchain Nodes können „Assets“ an IoT-Devices gesendet werden, welche dann entsprechend reagieren. Ein „Asset“ kann als „Wert“ (ähnlich einer Währung) gesehen werden, auf dessen Basis das IoT-Device eine Aktion durchführt, z.B. ein bestimmte Leistung für eine bestimmte Zeit erbringt.

Unabhängig davon kann das IoT-Device bei bestimmten Ereignissen (z.B. Sensorinputs) entsprechende Daten in der Blockchain protokollieren lassen.

Die Blockchain Technologie sorgt in diesem Aufbau also einerseits für die dezentrale Übermittlung der Daten zwischen den Systemteilnehmern (peer to peer), andererseits für die unveränderliche Protokollierung aller entsprechenden Aktionen (Steuerbefehl, Antwort darauf) und zusätzlicher Ereignisse (Sensoren).

In diesem Setup wird eine „permissioned Blockchain“ verwendet, d.h. es sind nur bekannte (authentifizierte) Systemteilnehmer zugelassen.

Systemaufbau

Blockchain – IoT Kopplung – Übersicht

Blockchain

Als Blockchain-Technologie wird eine entsprechend konfigurierte Installation von „Multichain“ eingesetzt, die seit Kurzem als Version 1.0 gelaunched wurde. Das System muss aus (mindestens) zwei Nodes bestehen, hier als Seednode und IoT-Interface Node bezeichnet. Ein Echtsystem besteht natürlich aus mehreren weiteren Nodes.

Seednode

Der Seednode ist der „erste“ Node der hier verwendeten Blockchain und stellt u.a. die initialen Konfigurationsdaten zur Verfügung. Der Node kann über ein Web-GUI angesprochen werden:

MultiChain Web-GUI – Anzeige der Nodes

Damit können die Aktionen komfortabler als über die Commandline erledigt werden: Senden der Assets und Beauskunften der Streams.

IoT-Interface Node

Auf diesem Node läuft ein Script, welches bei definierten Ereignissen in der Blockchain (z.B. Empfang von Assets) aufgerufen wird, mit dem IoT-Device per WebSockets kommuniziert und Rückmeldungen von diesem in „Streams“ in der Blockchain protokolliert.

Seednode: Senden von Assets an den Interface-Node

Unabhängig davon kann das IoT-Device weitere Daten an den Interface Node senden, der die entsprechenden Einträge in den Blockchain Streams erzeugt.

IoT-Device

Der Demoaufbau verwendet als IoT Device einen Rasperry Pi 3B. Auf diesem läuft ein WebSocket-Client, welcher mit dem Interface Node kommuniziert und die Steuerungsaufgabe ausführt, wie das Schalten der Aktoren (z.B. Lampe für die gewünschte Zeitdauer) und das Einlesen der Sensoren.

Rasperry Pi 3 mit Sense Hat als IoT Device

Stream „DeviceLog“ – Protokollierung von Meldungen des IoT Devices

In einem nächsten Schritt soll – in Zusammenarbeit mit DI Uwe Schimon von der IVM GmbH – das System um Smart Contracts auf Basis Ethereum erweitert werden.

Stay tuned!