Archiv der Kategorie: PHP

AI Act -> AI Notarisierung

Der EU AI Act ist ein EU‑weiter Rechtsrahmen, der einheitliche Regeln für die Entwicklung, den Vertrieb und den Betrieb von KI‑Systemen festlegt. Er ordnet KI‑Anwendungen in Risikoklassen ein – von geringem bis zu verbotenem Risiko – und legt insbesondere für High‑Risk‑Systeme strenge Auflagen fest, weil diese Systeme aufgrund ihrer möglichen Auswirkungen auf Sicherheit, Gesundheit oder Grundrechte ein besonders hohes Risiko darstellen .

Aus diesem Grund verlangt der Act bei High‑Risk‑Anwendungen integritätsgesicherte Protokollierung:

  • Alle Datenströme zwischen der KI‑Anwendung (bzw. User) und dem KI‑Server müssen automatisiert erfasst und gesichert gespeichert werden .
  • Die Protokolle können nun mittels Blockchain‑basierter Notarisierung unveränderlich gemacht werden. Dabei werden Hash‑Werte der Log‑Daten in einer Blockchain abgelegt, was sowohl die Unveränderbarkeit als auch einen nachweisbaren Zeitstempel garantiert .

Durch diese Maßnahmen wird gewährleistet:

  1. Nachvollziehbarkeit – jeder Prompt, das daraus resultierende Reasoning und die Antwort der KI werden lückenlos dokumentiert.
  2. Unveränderbarkeit – die gespeicherten Logs können nachträglich nicht manipuliert werden.
  3. Integritätsnachweis – die Blockchain‑Notarisierung liefert einen kryptografischen Beweis, dass die Daten seit ihrer Erfassung unverändert geblieben sind.

Damit können Unternehmen (bzw. Aufsichtsbehörden) im Falle von Fehlverhalten, Sicherheitsvorfällen oder regulatorischen Prüfungen exakt nachweisen, wie das KI‑System agiert hat, und die Einhaltung der gesetzlichen Vorgaben belegen.

Die AUSTRIAPRO und die Blockchain Initiative Austria haben dieses Thema gemeinsam aufbereitet. Dabei wurde auch ein Proof of Concept implementiert und getestet. Details siehe diese Präsentation.

n8n and Ollama translate Swedish

Due to some peculiar reason, I had to analyze the source code of an Infocom Z-machine story file. All the strings within the file were in Swedish, which I (sadly?) don’t understand.

Therefore, translating the strings into English seemed like the most logical approach. However, initial attempts using Google Translate or DeepL were unsuccessful. While the strings were typically translated reasonably well, the subsequent program code became severely corrupted.

The following approach provided the solution:

1. Using a PHP script, I read the source code file, extracted the strings using regular expressions, and saved them in a JSON file.

2. For translation, I downloaded the „translategemma“ model, which now runs on my on-premise AI machine (AMD Ryzen™ AI Max+ 395), along with Ollama and LM Studio.

3. I created an n8n workflow that can be triggered via a webhook. The workflow calls Ollama, which then uses translategemma for translation.

n8n workflow

n8n workflow calling Ollama via an AI Agent, triggered by a Webhook.

n8n AI Agent configuration

Configuration of the n8n AI Agent, e.g. the system prompt.

4. Another script reads the JSON file from step 1, sends each string to the n8n workflow for translation, and returns the English translation.

As a result, the Swedish strings in the source code are now automatically replaced with their English counterparts … everything is readable now … and … that’s all 😉

example translation

Example of a translation in the temporary JSON file.

Conclusio: This is a fast & neat solution, built using open-source and other license-free components. This solution can, of course, also be used for other languages. Furthermore, it could also be used to automatically translate comments in source code.

DocNoS-API-StarterKit

DocNoS API StarterKit (de)

Der von der „AustriaPro“ und der „Blockchain Initiative Austria“ gemeinsam entwickelte Demonstrator „docnos3-testclient“ , mit dem Notarisierungen von Dokumenten auf der „Private Sector Blockchain“ und der „Austrian Public Service Blockchain“ erstellt und verifiziert werden können, wurde in eine neue Form gebracht und (auf mehrfachen Wunsch hin) nicht nur in PHP, sondern nun auch in Python und Java als „DocNoS-API-StarterKit“ publiziert.

Der Code ist publiziert unter: https://github.com/austriapro/blockchain/tree/master/DocNoS-API-StarterKit

DocNoS API StarterKit (en)

The „docnos3-testclient“ demonstrator, jointly developed by „AustriaPro“ and the „Blockchain Initiative Austria“ , which can be used to create and verify notarizations of documents on the „Private Sector Blockchain“ and the „Austrian Public Service Blockchain“ has been redesigned and (by popular request) published not only in PHP, but now also in Python and Java as the „DocNoS API Starter Kit.“

The code is published at: https://github.com/austriapro/blockchain/tree/master/DocNoS-API-StarterKit

Addendum 11/2023

Here is some previously unpublished information about a few former projects, prototypes and hackathons – almost exclusively in connection with blockchain technology. When I get the chance, I will go into more detail about the individual topics. Until then: Stay tuned…

During Industry meets Makers 2022 my colleagues Roman and Leopold and me worked on the topic „IoT Sensornetzwerk für das OpenLandLAB“. Details see here and here.

In October 2022 I had the opportunity to attend the european x-eHealth-Hackathon 2022 representing the Austrian Ministry of Health (BMSGPK). The topic was „Blockchain based Notarization for Health Information Management“. The presentation of the results can be found here, the protptype was running here (note: not all modules are active any longer).

March 2019: When I attended the Infineon-Hackathon in Graz, I focussed on „notarization and proof for geo based games“ – for details see the pitch and some code at Github. In the following Hackathon in Villach (November 2019) the topic was extended to „blockchain security for (geo based) games“ and some more usecases for the „Blockchain Security 2 Go“-Kit, like ERC20 Tokens and NFTs … here the pitch.

… to be continued.

MultiChain Tools erweitert

Auf mehrfachen Wunsch habe ich die beiden Blockchain-Tools „Multichain GUI“ und „MultiChain-API-PHP“ erweitert.

Das Multichain GUI, ein Web-GUI für MultiChain Blockchains wurde mit einer integrierten Access Control versehen, mit der das GUI selbst aber auch die „mc-info“ Funktion, die z.B. für Monitoring verwendet werden kann, mit unterschiedlichen Credentials (Username, Passwort) abgesichert werden können. Weiters wurden die Seiten „info“ und „help“ hinzugefügt.

Weitere Infos und Download: https://github.com/baumann-at/MultiChain-GUI

Beim MultiChain API (eine PHP Klasse, die Aufrufe an das Multichain REST-API kapselt) gab es kleinere Erweiterungen, die die Versionen des Nodes und Protokols bereitstellen. Weiters habe ich Beispiel-Code dazu bereitgestellt.

Weitere Infos und Download: https://github.com/baumann-at/MultiChain-API-PHP

Enjoy …

Fermat Faktorisierung

Letztlich von Klaus Schmeh in seiner Crypto Kolumne daran erinnert worden, habe ich mich dann abends hingesetzt und die Faktorisierungsmethode von Fermat implementiert:

https://github.com/chris2286266/fermat-factorizer

Ich weiss, es gibt schon einige Implementierungen, wollte aber trotzdem eine eigene machen 😉

Recht interessant fand ich, dass n=630548215070129547156718332495889632234434145411971275888376987603260225252787926135276738944105689100036295535868141424386536403649578707699128189491432138631900590774729214990015369102760964884776344849717811484309528915040117952098061886881
bereits nach der ersten Iteration „geknackt“ ist …

 

Multichain GUI verfügbar

Das Multichain GUI ist ein einfaches Web GUI für MuiltiChain basierte Blockchains. Mit ihm kann man ein oder mehrere Blockchain Instanzen administrieren, Daten anzeigen und eintragen etc.

Ich habe die Originalversion von Coin Science (MultiChain Web Demo) geforkt und mit einigen erweiterten bzw neuen Features ausgestattet.

Die bestehende Funktionen (abhängig von den verfügbaren Berechtigungen auf der jeweiligen Blockchain Instanz) sind:

  • Anzeigen des Status eines Blockchain Nodes und der verbundenen Nodes
  • Vergeben von „Labels“, d.h. Bezeichnungen für Adressen
  • Anzeigen und Setzen von Berechtigungen für Adressen
  • Erstellen, Bearbeiten und Versenden von Assets
  • Erstellen von Streams
  • Daten in Streams publizieren (Files, JSON-Format oder Textformat)
  • Anzeigen von Stream Items incl. Auswahl pro Key oder Publisher

Neue bzw. geänderete Funktionen:

  • Die Konfiguration wurde abgesichert und erweitert.
  • Zu den verbundenen Nodes werden mehr Details angezeigt.
  • Ein (einfacher) Blockexplorer wurde integriert, um eine Liste aller Blöcke sowie Details zu jedem Block anzuzeigen.
  • Ein Monitoring Endpoint wurde eingebaut, um Multichain Blockchainnodes komfortabel überwachen zu können.

Beispiel: Detailansicht eines Blockes im Blockexplorer

Die Voraussetzungen für den Einsatz sind: Ein Webserver mit PHP und curl. Das Multichain GUI ist auf Gitub verfügbar.

Enjoy 😉

Blockchain & IoT

Dieses Demo (erstellt für einen Workshop im Rahmen der Fachkonferenz Digitalisierung – IoT + Data Science) zeigt, wie man Leistungen von IoT-Devices über eine Blockchain „kaufen“ – d.h. bezahlen und ausführen lassen kann. Als „Leistung“ wird eine Lampe geschaltet, die „Bezahlung“ erfolgt mit einem „IoT-Light“-Token, welches mittels einer modernen Blockchainplattform (0bsnetwork.com) erstellt, gehandelt und übertragen wird.

Ein weiterer Teil demonstriert, wie Sensordaten des Devices über dieselbe Kommunikationsschnittstelle rückübertragen und in der Blockchain protokolliert werden können.

Die Komponenten dieses Demos sind:

Komponenten des Demos

Als IoT Device wird ein Raspberry Pi mit einem SenseHat-Modul verwendet, welches die Aktorik (LED-Feld als „Lampe“) und Sensorik (Joystick als Schalter) realisiert. Das Gerät stellt über WLAN eine WebSocket Verbindung zum Broker her.

Die IoT-Schnittstelle zwischen den Devices und einem Blockchain Client besteht aus einem WebSocket Broker und einem Client-Interface, welches die Blockchain auf Aktionen für bestimmte Walletadressen überwacht und die Daten über WebSocket an das IoT-Device weiterleitet. Hier ein Teil des Sourcecodes für ein solches Modul:

Als Blockchainumgebung wird in diesem Setup das TestNet des 0bsnetwork eingesetzt. Der Client bietet ein Web-GUI für die Walletfunktionen an: Den Handel mit den hier verwendeten „IoT-Light“ Tokens (gehandelt wird auf der „DEX“, der Decentralized Exchange) und das Senden der Token an das IoT-Device. Ein weiterer Node stellt die API Schnittstelle für das Client-Interface zur Verfügung, mit dem „Explorer“ können die Daten in der Blockchain (Blöcke, Transaktionen, Peers …) angesehen werden.

Ablauf

Auf der „DEX“ (integrierte Handelsplattform) werden die „IoT-Light“-Token für die Bezahlung des IoT-Devices gehandelt …

Handelsplattform für Token im 0bsnetwork

Über das Wallet werden Token an das IoT-Device (bzw. an seine Adresse 3Myh…) gesendet …

Senden von Token an das IoT-Device

Details zur Transaktion

Das Client-Interface …

… registriert die „Bezahlung“ für das Device, sendet ein Kommando an dieses und …

Rasperry Pi 3 mit Sense Hat als IoT Device

… das Device führt die bezahlte Leistung aus und schaltet Licht für die entsprechende Dauer ein.

Und das war es auch schon 😉

Digitalisierung: IoT + Data Science

Im Rahmen der Fachkonferenz Digitalisierung – IoT + Data Science am 7.11.2018 – wie immer perfekt veranstaltet von Seidler-Consulting – Danke, Joachim – hielten wir einen Workshop zum Thema „Was haben Blockchain-Anwendungen und IoT miteinander zu tun?“ ab. „Wir“, das waren Thom Kunz (Verein IoT Austria – The Austrian Internet of Things Network), Uwe Schimon (IVM GmbH) und ich.

Mein Part waren zwei Demos zum Thema „Blockchain & IoT“. Im ersten Demo zeigte ich, wie Daten von Sensoren (Temperatur, Luftfeuchte, Luftdruck), die über LoraWAN an einen MQTT Broker übermittelt wurden, von einem MQTT Client abonniert, empfangen und in einen Blockchain-Stream geschrieben werden.

Prozessdatenerfassung mit LoraWAN – Infrastruktur

Die IoT Sensoren, das LoraWAN und den MQTT Broker stellte die IVM GmbH zur Verfügung, den Rest (die Blockchain auf Basis MultiChain, die Scripts und die Darstellung mit plotly.js) steuerte ich bei. Abgesehen von der MQTT-Anbindung entspricht das Demo im Wesentlichen dem Aufbau der Air-Quality-Chain. Folgend ein Beispiel der Darstellung der Messdaten:

Beispiel für Darstellung der übermittelten Messdaten

Die Präsentation des Workshops kann übrigens hier heruntergeladen werden.

Im zweiten Demo ging es dann etwas detaillierter zur Sache …

Telegram Bot: Air Quality Vienna

Während der Entwicklung und dem Testbetrieb der Air-Quality-Chain (blockchainbasierte Lösung zur unveränderlichen Speicherung von Messdaten) baute ich im Rahmen eines anderen Projektes einen Proof-Of-Concept mit einem Telegram-Bot. Ich fand die Bot-Programmierung recht witzig und kam auf die Idee, mit der AQC protokollierte Umweltdaten auch per Telegram-Bot abzufragen.

Ich kombinierte also ein paar vorhandene Softwaremodule mit ein paar zig Zeilen neuem Code und … die erste Version des Bots war fertig, ich nannte ihn „Air Quality Vienna Bot“. Zugegeben, der Funktionsumfang ist noch recht bescheiden, in der ersten Version kann man nur die aktuellen Messwerte der 17 Wiener Umweltmessstationen abfragen. Ideen für neue Funktionen gibt es natürlich genug: Zeitreihenauswertungen, Mittelwerte, Maximalwerte, Benachrichtigungen bei Grenzwertüberschreitungen und so weiter. Mal sehen, wann ich dazu komme …

Der „Air Quality Vienna Bot“ ist übrigens unter https://t.me/AirQualityVienna_bot zu erreichen.

Der Screenshot zeigt die Liste aller vom Bot abfragbaren Messstellen, die aktuellen Messdaten und dazugehörigen Grenzwerte aus dem Immissionsschutzgesetz-Luft (IG-L) bzw. Informationsschwelle aus dem Ozongesetz (OzonG), weitere Details dazu siehe https://www.wien.gv.at/umwelt/luft/messwerte/grenzwerte.html.

Viel Spaß damit.

Update 1.10.2018: Die Anwendung ist jetzt auch auf data.gv.at – offene Daten Österreichs unter https://www.data.gv.at/anwendungen/telegram-bot-air-quality-vienna/ gelistet.

Datenquelle: Stadt Wien – data.wien.gv.at