MultiChain – offene Plattform für Blockchain Anwendungen

Vor etwa eineinhalb Jahren hatte ich schon einmal das Vergnügen, die MultiChain Plattform des englischen Unternehmens Coin Sciences Ltd. zu evaluieren. Vor etwas mehr als einem Monat wurde die Version 1.0 offiziell gelauncht, siehe https://www.multichain.com/blog/2017/08/multichain-1-released-new-partners/.

Grund genug, die aktuelle Version anzutesten und … ich bin begeistert! Die stabile Plattform war ja schon zuvor als extrem flexibel bekannt, d.h. dass mit den vielfältigen Parametrierungsmöglichkeiten eine große Anzahl von Usecases (im Speziellen für permissioned Blockchains) abgedeckt werden kann.

Was weiters sehr gefällt, ist die extrem gute Dokumentation und das engagierte Entwicklerteam, welches bei eventuellen Fragen oder Problemchen stets flott weiterhilft.

Einen Schwerpunkt legte ich auf das Ausprobieren der APIs. Für alle möglichen Umgebungen stehen auf Github Libraries und Demos bereit, ich testete das PHP-API mit dem Web-Demo, siehe https://github.com/MultiChain/multichain-web-demo.

GUI MultiChain Demo / API Test

Das Web-Demo selbst ist zwar etwas verbesserungswürdig, was etwa den Umfang der Funktionen betrifft, die RPC Aufrufe des Deamons sind aber extrem performant. Kein Wunder, ist es doch eine native C/C++ Implementierung (auf Basis des Bitcoin Clients).

Die Argumentation der Entwickler, dass sich mit den in dieser Plattform eingesetzten „Assets“ und „Streams“ eine Vielzahl von Anwendungen realisieren lassen, für die man heutzutage (unnötigerweise?) Smart Contracts einsetzen würde, ließ mich dann auch noch schmunzeln.

Mal sehen, wie es weitergeht …

WalletGenerator erweitert

Der universelle Generator für Walletadressen, Paper-, Bulk- und Brainwallets von WalletGenerator.net kennt jetzt auch die Parameter meiner Kryptowährung C2coin.

WalletGenerator.net mit C2coin Erweiterung

Der erweiterte Generator kann nun Wallets für 130 Kryptowährungen generieren und ist zu finden unter http://coinz.at/walletgenerator/.

Die Version ist ein Fork von https://github.com/MichaelMure/PaperWallet/archive/master.zip

coinz.at – Umstieg auf uNOMP

Die bisher bei coinz.at verwendete Pool-Software Stratum-Mining ist ja schon etwas in die Jahre gekommen, daher wurde der DEM-Pool auf die moderne Lösung uNOMP umgestellt.

coinz_at_20161118

Basis für uNOMP ist ein node.js Server und eine Redis No-SQL Datenbank, das System läuft seit einigen Wochen problemlos und hoch performant.

Update 11/2016: Das Tempo der Entwicklungen in diesem Sektor ist enorm! uNOMP gilt seit 10/2016 als „deprecated“ und wird durch „node merged pool“ ersetzt, coinz.at wird also demnächst wieder upgedated …

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.

Apple Push Notification – Server-Zertifikat erstellen

How to create (or renew) an Apple Certificate for APN (Apple Push Notification) Services … and prepare it in a way that it can be used by an APN Server (in this example a production server written in PHP)

1) Log in on Apple Developer Center

apn_certificate_step_1

2) Got to „Certificates, Identifiers & Profiles“

apn_certificate_step_2

3) Verify that the chosen App can be used with Push: Select „App IDs“ and check, if „Push Notifications“ is enabled in „Distribution“

apn_certificate_step_3

4) Generate the Certificate: Go to Certificates – Production and select „+“

apn_certificate_step_4

5) Choose Certificate type: in our case „Apple Push Notification SSL (Production)“ and „Continue“

apn_certificate_step_5

6) Select the desired App ID and „Continue“

apn_certificate_step_6

7) Create a CSR by following the description using Keychain („Schlüsselbundverwaltung“ on OSX), save the file (e.g. „ProjectName_Prod_APN_2015041.certSigningRequest“) and „Continue“

apn_certificate_step_7

8) Upload the CSR-File and „Generate“

apn_certificate_step_8

9) Download the generated Certificate (its default name is „aps_production.cer“)

apn_certificate_step_9

10) Open the Certificate with Keychain („Schlüsselbundverwaltung“), this imports the Certificate.

11) Export the Certificate and the private key as PKCS12 (.p12) File. Enter a protection password for the private key.

12) Convert the PKCS12 File to a .pem file using the following command:

openssl pkcs12 -in ProjectName_Prod_APN_20150415.p12 –out ProjectName_Prod_APN_20150115.pem -clcerts

You now have the certificate and encrypted private key in a pem file for use with your server:

apn_certificate_step_12_pem

13) You can check the new certificate (and validity) in the certificates list

apn_certificate_step_13_check

Uff … done 😉

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