Archiv der Kategorie: Allgemein

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 …

Bitcoin Full Node on Raspberry Pi

Last week I bought a Raspberry Pi 3 (model B) to set up a proof of concept of a Blockchain connection to IoT devices (but that’s another story) …

Some time ago I read http://www.raspberrypifullnode.com/ and decided, to give it a try now.
This posting will not repeat everything from David’s article, just the changes from then (2014) to now (9/2017).

Micro SD card: The Bitcoin blockchain has a size of around 145 GByte at the moment, which leaves a 256 GB cards as an option, if you really want to store the complete blockchain …

Operating system: As I didn’t have NOOBS at hand, I downloaded the current version of Raspbian Stretch here and used Etcher to „burn“ the image to th SD card.

During the first boot, I connected a monitor and a keyboard, then configured the WiFi and activated the ssh deamon using

sudo raspi-config

After a

sudo reboot

I had a fully working system, which I could control with Putty (and WinSCP).

Now I followed David’s article, but had to apply some changes due to changes in the Bitcoin source. After updating and upgrading with

sudo apt-get update
sudo apt-get upgrade


I installed the dependencies …

sudo apt-get install build-essential autoconf libssl-dev libboost-dev libboost-chrono-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libboost-thread-dev libtool libevent-dev

… and then downloaded the current version (branch 0.15) of the Bitcoin source:

mkdir ~/bitcoin
cd ~/bitcoin
git clone -b 0.15 https://github.com/bitcoin/bitcoin.git
cd bitcoin/

The building took „some“ time …

./autogen.sh
./configure --disable-wallet
make
sudo make install

… but in the end everything was OK.

Remark: I chose to build the node with –disable-wallet, as I did not care to run a wallet on the system. See the discussion here concerning Berkley DB 4.8 and incompatible wallet formats …

After starting the deamon with

bitcoind &

it started to connect to other nodes and sync the blockchain …

Voilà – all up and running 😉

Kurzparken in Wien

Mit Onlinemaps, Libraries dazu & dem Thema OpenData beschäftige ich mich ja schon viele Jahre. Kürzlich musste ich im Zuge eines Projektes mein Know-How wieder auf den letzten Stand bringen. Ich baute dazu eine Minianwendung, die die Darstellung der Kurzparkzonen und -streifen in Wien ermöglicht.

Nach Öffnen des Links zur Anwendung wird die Wien Karte dargestellt. Es kann der aktuelle Standort dargestellt werden (Pin links oben), falls der Webbrowser bzw. das Device die Ortung erlauben. Kurzparkzonen werden blau dargestellt, Kurzparkstreifen rot. Ein Klick auf eine Zone oder einen Streifen öffnen ein Informationsfenster mit Details.

kurzparken_wien

Verwendete Technologien:

Ich nutze das Service selbst sehr oft, hat mir schon ein paar Mal ein Strafmandat wegen Nichtbeachtung der (in Wien teilweise recht verwirrenden) Kurzparkregeln erspart 😉

Viel Spaß damit!

Update: Die Anwendung ist auch auf https://www.data.gv.at/anwendungen/ gelistet.

Webshop mit Coinbase Payment

Um die Frage zu beantworten, wie (einfach?) es geht, einen Webshop mit Bitcoin-Payment auszustatten, habe ich folgendes Setup erstellt:

Zuerst habe ich auf einer WordPress-Installation das beliebte eCommerce Plugin WooCommerce installiert und ein paar Produkte angelegt.

Als erste Methode soll eine Bitcoin-Zahlung über den Paymentprovider Coinbase eingerichtet werden. Dazu ist das Coinbase-WooCommerce Plugin zu installieren, was auch problemlos funktioniert – cURL muss dazu am Server installiert sein.

Danach ist noch die Konfiguration von API-Key und Secret durchzuführen (WooCommerce – Einstellungen – Kassa – Coinbase) – siehe Screenshot.

ws_coinbase_config

Und das war es auch schon. Die Payment-Methode „Bitcoin (via Coinbase)“ erscheint automatisch in der Auswahl der angebotenen Bezahlmethoden.

ws_coinbase_1

Eine Bezahlung mit Bitcoin verwendet den üblichen, bekannten Coinbase Dialog …

ws_coinbase_2

… und der Status des Bezahlvorganges (OK oder Abbruch/Timeout) wird dem Webshop über das Plugin online zurückgeliefert.

Parallel dazu werden die bei dem verwendeten Coinbaseaccount konfigurierten Notifys (e-Mail und/oder Callback) durchgeführt.

Zusammengefasst: EInfache Installation und Konfiguration des Plugins, das Bitcoin-Payment über Coinbase ist sofort einsatzbereit.

Ubuntu Touch auf Nexus 4

Gestern las ich den Artikel „Das Schicke – Ubuntu für Smartphones und Tablets“ in der c’t 5/15. Sehr interessant! Und da ich ein derzeit beschäftigungsloses Nexus 4 herumliegen habe, war es klar: Da muss Ubuntu Touch drauf.

Die Installation geht mittels einer Ubuntu Desktop-Version ab 12.04, allerdings nicht unter VM-Ware. Also schnell per unetbootin eine Ubuntu 14.04_Live Version gezogen und einen bootfähigen USB-Stick erstellt.

Nach dem (wie gewohnt) problemlosen Start von Ubuntu am ThinkPad X121e ist zuerst das entsprechende Repository hinzuzufügen …

$ sudo add-apt-repository universe

… und zur Sicherheit ein Update zu machen.

$ sudo apt-get update

Dann werden noch die Android Debug Bridge, fastboot und das Ubuntu Device-Flash Paket installiert:

$ sudo apt-get install android-tools-adb android-tools-fastboot ubuntu-device-flash

Und Jetzt geht es zur Sache: Am Android Device muss natürlich USB-Debugging aktiviert sein, die hoffentlich erfolgreiche Verbindung kann man per adb prüfen. Nach einem Start in den Bootloader kann dieser mit …

$ sudo fastboot oem unlock

… entsperrt werden. Das war in meinem Fall nicht nötig, denn das Device hatte bereits CyanogenMod mit einem offenen Bootloader drauf.
Nach einem Neustart mit …

$ sudo fastboot reboot-bootloader

… kann das Flashen beginnen:

$ ubuntu-device-flash --channel=stable --bootstrap

Nach etwa 15 Minuten war das Flashen (aktuell „stable“ ist die Version 14.09) erledigt und das Gerät startete neu.

Erster Start nach erfolgreichem Flashen

Erster Start nach erfolgreichem Flashen.

Sprachauswahl, WLAN konfigurieren, Fertig!

Und jetzt? Jetzt muss ich mich an das Bedienkonzept gewöhnen: Alles geht mit Gesten, die auf Android üblichen Buttons gibt es nicht …

Und dann werde ich mal checken, was man sonst noch alles damit machen kann: ssh, apache, ev. node.js?

Terminal mit root access.

Terminal mit root access

Mal sehen …

Cheater ausgesperrt …

Das Problem beschäftigte Betreiber von (sha256 und quark) Mining Portalen monatelang: Die „fake hash vulnerability“. Damit konnte jemand, der einigermassen erfahren mit Kryptowährungen, Linux, Python, Stratum-Mining etc. ist, Mining Portale, die mit der gängigsten Software Version arbeiteten, betrügen. D.h. Shares uploaden, die nur durch Software generiert wurden und eine extrem hohe „Difficulty“ vorspiegeln. Eine Difficulty, die ausschliesslich mit spezieller Hardware erreicht werden kann.

Nach ein paar nächtlichen Recherchen, Debug Sessions und Tests an einigen Echtsystemen konnte ich den (eigentlich recht banalen) Fehler finden …

Und natürlich auch beheben und die Community informieren: https://github.com/Crypto-Expert/stratum-mining/issues/353

Recht interessant, wie ein „kleiner“ Bug in ein System einen Fehlerfaktor von 65535 hineinbringt. Traurig hat mich aber gemacht, dass der Entwickler sich mit „… habe ich eh gewusst … sah aber keinen Grund, das zu fixen …“ äusserte. Tja.

Jedenfalls können durch diesen Fix Cheater, die Kryptowährungen in unbekannter Höhe abgegriffen haben von den Stratum Servern automatisch erkannt und ausgesperrt werden.

Wie geht es weiter? Der Nachfolger von stratum-mining ist UNOMP. Schaue ich mir auch mal an. UNOMP bzw. die Vorgängerversion NOMP und diverse Forks davon werden weltweit x 100 oder 1000 mal eingesetzt.

Uiiii … der nächste Kandidat.

C2coin – Windows Wallet

Das C2coin Netz läuft jetzt seit einigen Tagen problemlos. Es wurde also Zeit, dass ich mich auch um eine Windows-Version der Software kümmere.

Diverse Recherchen im Web ergaben, dass das Compilieren der Binaries für Windows eine ziemliche Herausforderung darstellen soll. Und so war es auch …

Es dauerte mehrere Stunden, bis ich mich mit den beteiligten Komponenten halbwegs anfreunden konnte:

  • Die „Toolchain“ (Entwicklungsumgebung): MinGW, MSYS und Qt mit qmake, mingw32-make, G++ C-Compiler usw.
  • Die „Dependencies“ (notwendige Libraries): Berkeley-DB, Openssl und die Boost-Library.

Einige Stunden (und Fehlversuche) später war es dann soweit: Sowohl die „headless“ Version (c2coind.exe), als auch die GUI-Version (c2coin-qt.exe) wurden fehlerfrei übersetzt.

C2coin Windows Wallet

C2coin Windows Wallet

War jedenfalls eine interessante Herausforderung …

Downloads: Wallet für WindowsCoindeamon für Windows
Installation/Konfiguration: Readme
Kurzanleitung Mining mit Grafikkarten: Mining with GPUs

Bitcoin Zahlungen über Coinbase

Seit 11.9.2014 ist die in den USA populäre Bitcoin-Plattform Coinbase auch in 13 europäischen Ländern, darunter auch Österreich, verfügbar (die Futurezone berichtete darüber).

Das habe ich zum Anlass genommen, mir die Möglichkeiten der Integration des Payment-APIs von Coinbase anzusehen und praktisch auszuprobieren (visit link).

coinbase_demo

Ich werde noch weitere Varianten erproben und in das Demo aufnehmen.

Stay tuned!

„MoWi“ – MObile WalletInfo

Ein Tool für alle, die mehrere Cryptocoin-Wallets (Bitcoin, Litecoin etc.) am Laufen haben und die Übersicht behalten wollen … und zwar immer und überall.

Funktionsweise: Ein Serverscript (PHP) verbindet sich zu den (im LAN erreichbaren) konfigurierten Wallets, frägt über die RPC API-Calls „getinfo“ und „getmininginfo“ die Daten ab und stellt sie auf einer mobilen Webseite (mit jQuery Mobile) zur Verfügung.

Screenshot_2014-09-30-12-26-17 Screenshot_2014-09-30-12-26-26

Der Zugriff auf diese Daten kann z.B. mit https und Userauthentifizierung geschützt werden. Das Tool ist im derzeit im Testbetrieb.