KW 13.16 – Weekly Blockchainers Recap

Brave Browser mit Bitcoin Wallet  Diese Woche bin ich an einem Artikel zu einem neuen Browser hängen geblieben – Brave. Erst einmal ist Brave nur in neuer Browser mit dem ich geschützt im Netz Surfen kann. In Zukunft soll der tapfere Browser ein Bitcoin Wallet für Micropayments enthalten. Hier wird die Geschichte interessant, die Kombination von Browser und Wallet kann bedeutend für das Internet of Money werden. Bei meinen ersten Tests machte der Browser einen guten Eindruck, ich bin auf keinerlei Probleme gestoßen. Solidity im Visual Studio Die Ethereum Sprache Solidity für Smart Contacts wurde in die Microsoft Visual Studio Entwicklungsumgebung integriert. Es unterstützt die Strategie von Microsoft Azure Cloud Services für Ethereum zu verkaufen.   Zum 1. April gab es noch 2 schöne Blockchain Geschichten 😉 Die RWE benutzen den überflüssigen Strom zum Minen. Bottrop wird somit zum Bitcoin Mining Zentrum. Ethereum und R3 bringen zusammen eine Crypto-Währung raus. Bitte einmal an die Vereinbarung heran zoomen.

Ethereum Usecase: Online Identitätsprüfung

Die Identitätsprüfung des Kunden bei Onlinegeschäften ist in der Regel ein Prozess, der mehrere Tage in Anspruch nimmt. Die Identifizierung wird zum großen Teil über das PostIdent Verfahren abgewickelt, das von dem Kunden verlangt zur Postfiliale zu fahren, um sich vor Ort identifizieren zu lassen. Die schnellste (mir bekannte) Onlineidentifizierungsmethode bietet idnow, das z.B. von Number26 bei der Kontoeröffnung benutzt wird. Dabei wird in einem Video-Chat die Identität des Kunden überprüft. Der Prozess nimmt etwa 5 Minuten in Anspruch und ist mit gängigen Smartphones durchführbar.

Was wäre aber, wenn man den Identitfikationsprozess noch schneller und mit noch weniger Intermediären durchführen könnte? Das Zauberwort heißt Ethereum.

Der große Anspruch von Ethereum ist es einen offen zugägnlichen Welt-Computer zu schaffen, der in der Lage ist die Programme, die er ausführt und den Laufzeitzustand, der sich aus der Ausführung dieser Programme ergibt, in eine Blockchain so zu verpacken, dass es keine Möglichkeit gibt die Programme oder deren Laufzeitzustand zu verfälschen.

Jeder Benutzer und jedes Programm in Ethereum haben eine oder mehrere öffentlich bekannte Adressen. Zusätzlich zu der öffentlichen Adresse hat jeder Benutzer einen privaten (geheimen) Schlüssel mit dem er Transaktionen in Ethereum signieren kann.

Welche Möglichkeiten würden sich ergeben, wenn die Behörde bei der Ausstellung eines neuen Personalausweises für alle Ausweisdaten (Name, Vorname, Geburtsdatum, Adresse, …), einen Hash-Wert berechnen und in einem öffentlich zugänglichen Identitätsverzeichnis an die Ethereum-Adresse des Kartenbesitzers binden würde?

In Ethereum kann man so ein Identitätsverzeichnis mit wenigen Codezeilen durch den folgenden Contract abbilden:

contract IdentityRegistry {
    address owner; // Der Besitzerer der Registry (die Behörde)
    string name;   // Der Name der Registry
    
    // Abbildung von Ethereum Adresse
    // zu dem Hash-Wert der Personalausweisdaten
    mapping(address => uint256) idHashes;  
    
    // der Konstruktor wird einmalig beim Anlegen des Contracts ausgeführt
    function IdentityRegistry(string _name) {
        owner = msg.sender;   // hier merken wir uns den Contract-Ersteller als Besitzer
        name = _name;         // den Namen der Registry setzen
    }
    
    // Liefert den Namen der Registry, verändert nicht den Zustand
    function getName() constant returns (string) {
        return name;
    }
    
    // Beschreibt wie der Hash-Wert für die Daten gebildet wird
    // Alle Informationen werden durch "/" getrennt, hintereinander abgelegt
    // Es wird SHA-1 Hashwert der Zeichenkette berechnet
    function getIdHashFormat() constant returns (string) {
        return "sha-1(NAME/GIVENNAMES/DATEOFBIRTH/PLACEOFBIRTH/NATIONALIY/ADDRESS1/ADDRESS2/ADDRESS3)";
    }
    
    // Diese Methode kann nur von dem Besitzer (Bürgeramt) aufgerufen werden.
    // das "throw" rollt die Transaktion zurück, wenn die Transaktion
    // nicht vom Besitzer der Registry (Bürgeramt) aufgerufen wurde.
    // Die Funktion bindet den Hash-Wert an die Ethereum Adresse des Ausweisbesitzers
    function registerIdHash(address who, uint256 hash) {
        if(owner != msg.sender) throw;
        idHashes[who] = hash;
    }
    
    // Wird vom Gegenüber (z.b. Bank) aufgerufen, um den Hash-Wert einer
    // Ethereum Adresse zu überprüfen
    function verifyIdentity(address who, uint256 hash)
    constant returns(bool) {
        return idHashes[who] == hash;
    }
    
    // Falls keine der oben definierten Methoden aufgerufen wurde,
    // sorgt diese Funktion, dass die Transaktion zurückgerollt wird.
    function() {
        throw;
    }
}

Beantrag beispielsweise Max Mustermann, geboren am 01.01.1990 aus Musterstrasse 12, Musterhausen den Ausweis, berechnet das Amt zunächst den Hash-Wert aus allen oben genannten Daten, z.B.:

sha1("MUSTERMANN/MAX/01.01.1990/MUSTERHAUSEN/DEUTSCH/MUSTERHAUSEN/MUSTERSTRASSE 12") = 1417400950720517943593210833135938663929334829119

Dieser Hash-Wert wird anschliessend vom Amt im Identitätsverzeichnis an Maxs öffentliche Ethereum-Adresse (0xDBEc37…) gebunden, z.B.:

identityRegistry.registerIdHash(
    0xDBEc371775c57f59fDA5BBa2c9FC8876968F34E3, 
    1417400950720517943593210833135938663929334829119)

Hierbei ist es wichtig anzumerken, dass aus dem Hash-Wert der Daten keine Rückschlüsse auf die Daten selbst gezogen werden können.

Möchte Max ein Konto bei der Musterbank eröffnen, könnte er nun über ein Onlineformular der Musterbank seine persönlichen Daten eingeben und zusätzlich seine öffentliche Ethereum-Adresse senden. Mit diesen Informationen kann die Musterbank bereits überprüfen, ob der Datensatz korrekt ist. Genauso wie das Bürgeramt, berechnet die Musterbank den Hash-Wert und vergleicht diesen mit dem Hash-Wert aus dem Identitätsverzeichnis des Bürgeramts. Z.B.:

bool res = identityRegistry.verifyIdentity(
    0xDBEc371775c57f59fDA5BBa2c9FC8876968F34E3,
    1417400950720517943593210833135938663929334829119)

Damit ist überprüft, ob der Datensatz valide ist, aber noch nicht ob Max auch der tatsächliche Absender der Information ist. Um auch das zu überprüfen, instantiiert die Musterbank einen weiteren Contract auf Ethereum und wartet darauf, dass Max mit seinem privaten (geheimen) Schlüssel die Bestätigungsmethode aus dem Contract aufruft und damit beweist, dass er tatsächlich der Besitzer des Ethereum Kontos mit der öffentlichen Adresse 0xDBEc37… ist. Der Contract sieht wie folgt aus:

contract IdentityConfirmation {
    address createdBy;    // Ersteller des Contracts (Musterbank)
    address who;          // Wer soll sich identifizieren (Max)
    bool confirmed;       // wurde die Identität bestätigt?
    
    // dieses Event wird verschickt,
    // wenn Max die Funktion "confirm" aufruft
    event IdentityConfirmed(address who);
    
    function IdentityConfirmation(address _who) {
        who = _who;
        createdBy = msg.sender;
        confirmed = false;
    }
    
    // wenn die Methode von Max aufgerufen wird, d.h.,
    // der Aufruf mit dem privaten Schlüssel von Max signiert wurde
    // bekommt die Musterbank die Bestätigung über
    // die erfolgreiche Authentifizierung
    function confirm() {
        if(who == msg.sender) {
            confirmed = true;
            IdentityConfirmed(msg.sender);    
            suicide(createdBy);
        }
    }
    
    function() {
        throw;
    }
}

Anbei der gesamte Vorgang zusammengefasst in einem Sequenzdiagramm:

Sequence Diagram

Weitere Überlegungen

Das vorgestellte Konzept ist eine grobe Skizze. Ein produktives System bräuchte noch weitere Feature wie z.B Aktualisierung / Sperrung / Entsperrung des Eintrags im Umzugsfall oder beim Verlust des privaten Schlüssels bzw. beim Ablauf des Ausweises.

Falls die Behörden nicht die Blockchain-Technologie adaptieren sollten, kann man sich auch folgende Alternativen vorstellen:

  • Es existiert ein Intermediär vergleichbar zu idnow, der den Aufbau des Identitätsverzeichnisses übernimmt und den Dienst gegen Gebühr anbietet.
  • Das Identitätsverzeichnis wird innerhalb des Konsortiums/Verbands aufgebaut und benutzt.

Schließlich wäre noch zu untersuchen, ob man mit dem privaten Ethereum Schlüssel außerhalb von Ethereum Daten signieren kann (public/private-key Verfahren). Das würde den zweiten Contract überflüssig machen.

KW 11.16 – Weekly Blockchainers Recap

Die Revolution frisst ihre Kinder Diese Woche sind mir zwei Artikel besonders aufgefallen, die beide zu dem alten Zitat von Pierre Vergniaud aus den Zeiten der französischen Revolution passen. Zu einem Teil des aktuellen PWC Reports passt die Überschrift: While Fintech Disrupts Banks, the Blockchain Disrupts Fintech. Des weiteren gab es verschiedene Presseberichte über ein Startup Arcade City, die eine Art Blockchain basierenden Uber Clone raus gebracht haben. Wenn man ein 1/4 Sekunde drüber nachdenkt, vereinfacht es noch mal sehr viel am Uber Geschäftsmodell. Uber beschäftigt sich mit den Abrechnungen der Kunden und Fahrer, dass wird zum großen Teil hinfällig. Why Latin American economies are turning to bitcoin In dem hier besprochenen Buch Crypto Currencies wird, aus einer persönlichen  Betroffenheit des Autors, ausführlich über die Möglichkeiten des Bitcoins in Ländern ohne stabiles Währungs- und Banksystem diskutiert. Dieses scheint auch für Sir Richard Branson nach einem richtig guten Geschäft zu riechen.

Homestead … settling down

Having crossed frontiers in unknown and unsafe land, finally, we are settling down.

After having described last time how to create our own cryptocurrency in Ethereum Frontier – the description of which was way to complicated as we have learnt – we will repeat it, this time in Ethereum Homestead, and we assure you: this time it will be really easy.

In fact, creating a new cryptocurrency is even built into the new Ethereum wallet, so if you use the proposed “coin-interface“, your own currency is even supported with an own pocket in the wallet itself, besides your real Ether – this is just gorgeous and if you are still unsure about the world dominance about Ethereum, try this out and hopefully, just be astonished.

EtherumWallet

Ok, enough propaganga, let’s get down to the nitty-gritty.

Objective

Create you own cryptocurrency in Ethereum Homestead. You should be able to fund yourself with some amount of initial value (let’s say 10000 items) of your own currency and be able to send it around to any valid Ethereum address.
This currency should in no way be related or dependent on an existing crytocurrency like Bitcoins or Ether and creating it should cost you not one penny of your fiat or “real” crypto-money.

Setup

The easiest way to archieve the goal would be to just follow the instructions on the new ethereum.org Homestead site closely, you can then use your cryptocurrency in the real and in the Morden testnet.

However, this approach has two limitations:

  • It takes longer than five minutes, which is our definition of really easy (but afterwards you will know why it works)
  • It runs on the real Ethereum blockchain or on the Morden testnet, but we want to build this using own very own, local and/or private, Ethereum blockchain.

If these limitations do not apply for me, stop here and go ahead and read the official tutorial.

Ok, I want my local, private blockchain, really fast, so let’s go…

Ready, Set…

  • Start Geth with an own genesis file and an unique networkid (greater than 1), for details see this post.
    You can use this genesis file, just store it as /ethereum/genesis.json (always add the drive for Windows, eg. c:/ethereum/genesis.json)

    {
        "nonce": "0xdeadbeefdeadbeef",
        "timestamp": "0x0",
        "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "extraData": "0x0",
        "gasLimit": "0x8000000",
        "difficulty": "0x400",
        "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "coinbase": "0x3333333333333333333333333333333333333333",
        "alloc": {
        }
    }

    and create the empty directory /ethereum/data
    The start command then is

    geth --genesis /ethereum/genesis.json --datadir /ethereum/data --networkid 123 --nodiscover --maxpeers 0 console

    we need this initial start with the console to create our first account, which we need to start mining.
    In the console, type

    personal.newAccount()

    and create your “etherbase”-account. Subsequent accounts can be created in the Ethereum Wallet.
    Make sure that you exit geth afterwards.

    …Go

  • Now, start the Ethereum Wallet, make sure Geth is not running currently
    There will be several dialogs, it does not really matter what you type in there. You should choose testnet if asked for real or Morden testnet.
  • Afterwards, when all steps have been completed, you will see an empty account in the Morden testnet

    ethereum-morden

  • Quit the Wallet.
  • To start the Wallet using our local testnet, consult the readme.txt in the installation folder and make sure you set the ipcpath cli argument correctly. On Windows, you can skip this step.
  • Start geth with this parameters (plus the ipcpath, if on Linux)
    geth --genesis /ethereum/genesis.json --datadir /ethereum/data --networkid 123 --nodiscover --maxpeers 0 --mine

After restarting the Wallet, we should see our created account with some Ether in it (we are mining currently and the difficulty is really low and we have no peers, so we get all the money)

account-start

Choose Contracts and Copy & Paste the code from the tutorial…

created-my-token

…linked on the contracts page

build-token

Don’t forget to set the arguments for your token/currency (like display name, initial supply, etc.)

arguments-token

Choose the fastest possible deployment (we have enough Ether right now).

fastest-deploy

Here we go, congrats to your very own cryptocurrency with Wallet support.

etherbase-mouc

Please comment on this tutorial, does it work for you? Did you get stuck at some step? We want to improve out tutorials to make sure more people use this great technology.

Ethereum – der neue große Rivale des Bitcoin

Das Thema Ethereum ist in der deutschen Mainstream-Presse angekommen. In dem Artikel “Das ist der neue große Rivale des Bitcoin” schreibt Die Welt:

Der Bitcoin war das Nonplusultra, wenn es um digitales Geld ging. Der Konkurrent Ether könnte das aber nun ändern – auch weil er mehr kann als Bitcoin. Ether übersprang jetzt eine magische Hürde.

Die magische Hürde war die Marktkapitalisierung von mehr als 1 Milliarde Dollar, die aus den Berechnungen von Coinmarketcap.com hervorgeht. Im Vergleich dazu liegt Bitcoin bei einer Marktkapitalisierung von rund 6,3 Milliarden Dollar.

Des Weiteren schreibt Die Welt:

Experten gestehen Buterins Erfindung ein großes Potential zu, von einer revolutionären Technik ist die Rede. Unternehmen wie UBS, Microsoft, Samsung und seit neuestem auch der deutsche Energieversorger RWE experimentieren mit der Währung.

Auch auf den Börsen, die den Kryptowährungshandel anbieten, entkoppelt sich Ethereum immer mehr von Bitcoin. Kraken bietet seit längerem die Möglichkeit Ether direkt in Euro zu kaufen. Laut Welt, möchte auch die größte deutsche Bitcoinbörse Bitcoin.de in den Ether-Handel einsteigen und Bitfinex hat bereits offiziell angekündigt, dass sie ab dem 14.3. den Ether/Dollar Handel anbieten werden.

Der 14.3. ist nicht zufällig gewählt. An diesem Tag, bei Ethereum-Block 1.150.000, wird das neue Ethereum Homestead-Release aktiviert. Dabei wechselt Ethereum in einen, den Entwicklern zufolge, stabilen Betriebsmodus. Die Ethereum Website wurde bereits aktualisiert und das durchgestrichene “Safe” wurde entfernt.

KW 10.16 – Weekly Blockchainers Recap

#EXECFINTECH in Frankfurt Die Woche war das Fintech Klassentreffen in FFM. Auf der Agenda war das Hype Thema Blockchain nur sehr knapp vertreten. Der Gründer von bitbond.com hat einen sehr guten und kurzen Vortrag über die Bitcoin Grundlagen gehalten, anschließend gab es eine Podiumsdiskussion zum Thema. Parallel gab es viele Fintech Pitches. Aufgefallen sind stratumn, QuantozCoinify und Cashila. Bundesbank  erforscht die Blockchain  Auf die Aktivitäten die chinesische- und russische Zentralbank zur Blockchain haben wir hier schon verwiesen. Die Bundesbank prüft die Technologie mit dem BIS. Schon Anfang 2015 gab es bei der Bundesbank den Tanz um die Blockchain.

KW 09.16 – Weekly Blockchainers Recap

Kampf der Giganten Langsam aber sicher formieren sich die Lager bei den erfolgversprechenden Blockchain-Implementierungen. Während IBM mit Hyperledger einen großen Coup gelandet hat, indem es eine große Anzahl Unterstützer versammelt und sich mit starken Ankündigungen (“IBM will open IBM Garages in Tokyo, Signapore, New York City and London“) bei dem Thema Blockchain positioniert hat, unterstützt Microsoft seit einiger Zeit aktiv das Ethereum-Projekt. War Microsoft zunächst “nur” der bekannteste Unterstützer der Ethereum-Konferenz DEVCON1, steht nun schon seit einiger Zeit die Azure-Lösung für Entwickler (Ethereum Blockchain-as-a-Service, EBaaS) bereit. Realisiert ist die Lösung mit BlockApps STRATO, welches eine Art RAD für Ethereum Smart Contracts im Unternehmensumfeld ist. Auf dieser Plattform ist der von IBM anvisierte Blockchain-as-a-Service heute schon nutzbar. Während Microsoft sich eher auf den Aspekt der Smart Contracts und Ethereum spezialisiert, verfolgt IBM mit Hyperledger die Idee, als Bindeglied zwischen unterschiedliche Blockchains zu fungieren. Man darf gespannt sein, wer hier das Rennen macht. Vielleicht ist aber auch dauerhaft Platz für zwei konkurrierende Blockchain-Technologien, Konkurrenz hat diesen beiden Firmen und ihren Produkten ja auch bisher nicht geschadet. Zentralbanken prüfen die Blockchain Nachdem schon vor längerem bekannt wurde, dass die chinesische Zentralbank einer eignen Blockchain Lösung arbeitet, ziehen jetzt Pressemitteilung über die russische Zentralbank nach. Es ist also nur eine frage der Zeit bis die anderen Zentralbanken nachziehen, inklusive der EZB. Am interessantesten finde ich das Gedankenspiel, wenn die USA selber einen eDollar oder iDollar heraus gibt. Der Dollar ist schon in vielen Ländern die Parallelwährung. Die USA würde ihre politische Macht noch einmal deutlich steigern, wenn die eignen Cryptowährung überall und jederzeit verfügbar ist. Nationalstaaten können den nationalen Devisenverkehr nicht mehr einschränken. Die US Währungspolitik wäre also noch deutlich global durchschlagender als sie es heute schon ist. Ethereum Homestead Release Die für mich wichtigste News der Woche war die kleine aber feine Meldung, dass das Ethereum Homestead Release fertig ist. Homestead wird vermutlich am 14.3. aktiv. Mit Homestead wechselt das Ethereum Netzwerk vom unsicheren Beta-Stadium des Frontier Releases in das erste richtige sichere Release. Damit kann Ethereum als erstes richtiges produktives Smartcontract Netzwerk für Business Anwendungen angesehen werden. Das neue Land ist also jetzt da und Claims können abgesteckt werden. Viel Erfolg beim Goldgraben.

Entering the World Computer

Ever wanted to create your own, individual cryptocurrency?
Read on, if you reach the end of this post and have followed all instructions in the hands-on guide, you will have created your own working cryptocurrency in less than 20 mins.

How’s that?
The magic-happens-here part is done by the revolutionary technology named Ethereum or Ethereum Virtual Machine (EVM).

What is it?
Summarizing this great explanation: “blockchains are peer-to-peer cloud computers that collectively enforce a set of rules on a historical record that they create together. Bitcoin’s rules define a currency: how are new tokens produced, how many are allowed, how they can be transferred from one person to another, etc.
Ethereum’s rules define a process for defining new rules.”

Feeling a little “meta” here? For sure. Let’s try another definition:

“If you think of Bitcoin as a decentralized version of Microsoft Excel, then Ethereum is a decentralized Excel where we’ve made the visual basic macros functional, […] with the Bitcoin blockchain, each cell on this hypothetical Excel table holds just a number; on the Ethereum blockchain, each cell is home to an entire computer program.”

Before reading on, make sure that you understand this new dimension Ethereum adds to existing blockchain technology.
Your Bitcoins are static data blobs (yes, we are oversimplifying here, Bitcoins can be scripted. But nobody does.)
Your Ethereum contract can be a static data blob as well. However, it might as well be a condition checking for the release of your home’s lock after you paid your rent or Skynet trying to take over the world.

In essence, the new dimension of Ethereum consists in each “coin” being a turing complete computer program running in a peer to peer cloud.

Not excited by now? Ok, let’s take another perspective.

Even if you don’t hack a new facebook or google at night, you should be able to read and understand this program

contract token {
 mapping (address => uint) public balanceOf; // [1]

 function token(uint supply) { // [2]
   if (supply == 0) supply = 10000;
   balanceOf[msg.sender] = supply;
 }

 function send(address receiver, uint amount) { // [3]
   if (balanceOf[msg.sender] < amount) return;
   balanceOf[msg.sender] -= amount;
   balanceOf[receiver] += amount;
 }
}

with a little help by this walk-through:

[1] We are assigning an address to an “amount” (in many languages a dictionary, in Java a Map, you name it. A simple Key/Value Store)
[2] A constructor (in many (OO-)languages a initializer for the new object). Here this initializer is called once during the whole lifecycle of a smart contract: when the contract is written in the ledger (deployed). msg.sender is the address of the creator of the contract. He gets all the money.
[3] A very simple function which makes sure that the storage status can be changed, otherwise the programm would be completely static. Changing the storage status means transfering/sending amounts from one key (address) of the dictionary to another key.

So, here we are. Maybe you got it already, this is your own, individual cryptocoin. It starts with an amount of 10000 “items” which can be subdivided and sent to other addresses. This is exactly the minimum functionality of a cryptocoin.

Before you go on, try hard to understand what happens here – we are facilitating the properties of a cryptocurrency blockchain (cryptography, consensus algorithms, peer to peer technology), everything eg. the Bitcoin blockchain has, for our own rules. These rules are just transfering a value from one address to another and storing the result. That’s exactly as usual cryptocurrencies do.

Our cryptocurrency is one app (also called dapp for decentralized app) inside the Ethereum blockchain. See it as one really smart Bitcoin simulating the whole Bitcoin system itself (we are going meta again).

Ok, enough head spinning, let’s try this out.

Hands-on Guide to your own Cryptocurrency

One word of warning: after this tutorial, you will have your running smart contract in the (local, private) Ethereum chain, but you will most certainly not have understood how this is working.

To understand the principles and technologies behind Ethereum, I strongly advise visiting these sites:

  1. The Ethereum Main site: your entry point to Ethereum
  2. The Ethereum Frontier Guide Gitbook
  3. The Ethereum Builder’s Guide Gitbook
  4. A 101 Noob Intro to Programming Smart Contracts on Ethereum
  5. (Hands-on) How to create a Private Ethereum Chain 

This tutorial mainly is just a very compressed rewrite of those sites.

Ok, to be clear about the 20 minutes: reset your stopwatch now, we are counting the time from now on.

What’s the tutorial about?

  1. Creating a  local, private Ethereum chain
  2. Setting the stage
  3. Deploying our cryptocurrency in cosmo.to

Creating a local, private Ethereum Chain

We will start with installing Geth, the Go implementation of the Ethereum protocol. We chose Geth because it runs in Linux as well as Windows without having to install any dependencies before and with a dead easy installation procedure. (Might be a good point for Golang)

All instructions are in the Ethereum Guide, however the Windows link is wrong currently, use this one.

Now, here’s the important part missing in the main guide for using specific Ethereum chains:

A Ethereum chain is defined by two factors, which are unique to each chain: the network id and the genesis block. The genesis block is the big bang of your own Ethereum universe and the values there are the cosmological constants of your universe. If you want to participate in a specific Ethereum chain, you will have to

  • have a network connection to a running node
  • know and use the network id (given as command line parameter)
  • use the identical genesis block

Our genesis block looks like this, save this as genesis.json to some directory. All parameters are explained in detail here.

{
 "nonce": "0xdeadbeefdeadbeef",
 "timestamp": "0x0",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "extraData": "0x0",
 "gasLimit": "0x8000000",
 "difficulty": "0x400",
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "coinbase": "0x3333333333333333333333333333333333333333",
 "alloc": {
 }
}

Now, if you start Geth with these parameters

geth --genesis genesis.json --datadir somedatadir --networkid 23 --rpc --rpcaddr="localhost" --rpcport="8080" --rpccorsdomain="*" --maxpeers=1 console

the most important part is already done. With genesis.json and network id 23 your chain is defined and whoever wants to play with it has to agree on the genesis and the network id. Or she could just start her own universe with different cosmological constants, just like in real life. If you believe in multiverse theory. And in real life.

Setting the stage

Actually, the node we started above does not do much, it just sits around and does not mine Ether. Therefore, our universe has no “time”, it is static. We have to create a primary, “etherbase” account, to facilitate mining which we need for deploying our contract.

We are in the console now, just type

personal.newAccount()

you will get back a address like ‘0x693309002d4fbb672c90df7063b75b42055f5449’, which is your primary account address. Do it a second time to have another account. You will feel lonely otherwise transfering your new currency between you and you.

Now exit the console and restart with

geth --genesis genesis.json --datadir somedatadir --networkid 23 --rpc --rpcaddr="localhost" --unlock="0x693309002d4fbb672c90df7063b75b42055f5449" --rpcport="8080" --rpccorsdomain="*" --maxpeers=0 --mine

At startup, you will be asked for the password, just type it in, even if the console is moving, your keystrokes will be recognized.

This time, our universe is ticking. We can go on.

Deploying our cryptocurrency in cosmo.to

Right now our operating system is running, but using it as a developer is quite complicated. You have to compile your contract to bytecode first, using a compiler like solc and afterwards have to deploy the contract.

Of course, using it is also not the most intuitive thing. Remember the first days of the internet, of Java Applets, mobile application development on Android – there you are.

However, for this early stage in the history of the “internet of value” there exist quite a lot tools which ease development, one (to me the most stunning) projects is cosmo.to

It is based on the solidity browser, but adds a lot of usibility, try it yourself. Open cosmo and follow the notes in the attached screenshot.

Choose “auto” compile, copy the sample token source code from above and deploy it. The last step is crucial, since this makes our application usable. It is like running your executable or, in more modern terms, deploying your application to Bluemix, Amazon AWS, the Google Cloud, whatever. But your application has guaranteed 100% availability, and noone can shut it down. If you deploy it to the real Ether chain that is.

For our local Ethereum chain, your contract has now been mined (by yourself) and added to the ledger.

cosmo

Congratulations! The logic can now be executed and cosmo helps you a lot in using it. Use “call” to query the state and “transact” to change the state. Send your new currency to your 2nd account. You will have to wait some time (depending on the speed of your somputer) till the transaction is executed, so don’t wonder if the call does not succeed for some time.

Now play around. Do you get it? Create new accounts, send your token/coins around. This really is a value-exchange (even a currency) if you want to and the others, who are using your contract, agree with you.

They do not have to trust you at all, anybody can easily deduct that the initial amount of your coins is fixed at 10000 and cannot be extended. This is written in the contract and really nobody can change this, as nobody can change the Bitcoin ledger.

When people will really understand this trustless system, which can now not only transfer static value, but also run any application you can think of, we are sure that great things will emerge. And now you can be part of the universal Dapp system development. Have fun!

KW 08.16 – Weekly Blockchainers Recap

Bitcoin 0.12 Release Seit dem 23.2. gibt es das neue Bitcoin Core Release, im Link sind die Verbesserung ausgeführt. Bitcoin Skeptiker sehen in der Geschwindigkeit und der Limitierung der Transaktionen immer einen Grund warum das Bitcoin Netzwerk oder die Blockchain Technologie sich nicht komerziell durchsetzt. Ich bin lange genug in er Branche dabei um sagen zu dürfen, dass sich Performanceprobleme in IT Systemen immer mit ausreichend KnowHow lösen lassen. Das aktuelle Release ist ein Schritt in genau diese Richtung. Hyperleger Die IBM Blockchain Marketing Maschine ist gut angelaufen, in diversen Kanälen verkündigen sie was sie mit der Blockchain alles machen werden. Vehicle ist  das Linux Foundation Hyperleger Projekt. Viel zu sehen ist auf der Webseite noch nicht viel. Der IBM ist es aber zuzutrauen, dass etwas entsteht, was der (Berater-) Industrie gefällt. https://www.hyperledger.org  Ich erwarte ein private Blockchain für Smartcontracts nach dem “proof-of-stake” Verfahren. Mich würde es nicht wundern, wenn die Programmierung etwas komplizierter wird. Video am Wochenende Für alle die keine Lust zu lesen haben produziert Amanda ihren Video Blog   “The Daily Decrypt”  http://thedailydecrypt.com . Das Niveau variiert sehr stark, so viele Videos produzieren ist auf jeden Fall viel Arbeit, mal sehen wie lange sie durchhält. Der ein oder andere Interviewpartner kommt aus dem tiefsten Nerdistan.

Book Review – “Cryptocurrency: Wie virtuelles Geld unsere Gesellschaft verändert” von Michael Casey und Paul Vigna

Anfang Februar ist das Buch „The Age of Cryptocurrency“ in der deutschen Übersetzung erschienen. Die Gretchenfrage bei einem Buch mit 400 Seiten ist: Soll ich die Zeit investieren es zu lesen ?

Kurzfassung
Anzugträger: ja
IT Coder: optional
Auf einer Scala von 1 bis 10 bekommt das Buch von mir eine 6.

Langfassung
Die Autoren sind Journalisten, keine Techis. In dem Buch findet man keine wirkliche Beschreibung wie Bitcoin und Blockchain in der Tiefe funktionieren. Die Autoren sind eher der Meinung, dass es nicht notwendig ist die Wirkungsweise eines Ottomotors zu verstehen, wenn man Auto fahren will.

Gut gefallen hat mir die Darstellung, dass jeder, der sich mit den Bitcoins beschäftigt 5 Phasen der der „Kryptoakzeptanz“ durchläuft: Geringschätzung – Skepsis – Neugierde – Verständnis – Akzeptanz. Der Leser wird im Laufe des Buches seine eigene Position wahrnehmen und vermutlich eine Treppenstufe höher steigen.

Anhand von vielen bunten Geschichten, werden sinnvolle Anwendungsgebiete des Bitcoins beschrieben. Bitcoins lösen in vielen Ländern ohne stabiles Banken- und Währungssystem Probleme die es in Deutschland so gar nicht gibt. Was durchaus dazu führen kann, dass man links von anderen Ländern überholt wird. Beispiel China: dort gibt es Unternehmen, deren Unternehmenswert über Blockchains gehandelt werden und die Zentralbank arbeitet an einer eignen Blockchain.
Generell ist das Buch sehr Bitcoin-lastig. Die englische Version des Buchs ist ein Jahr älter, vor dem Hintergrund ist es verständlich das Beispiele für Smartcontract Anwendungen noch weniger konkret behandelt wurden. Ripple oder Ethereum werden am Rande erwähnt.

Im Buch sind persönliche Erfahrungen des Autors verarbeitet, der einige Zeit in Argentinien gelebt hat und selber erfahren musste welche Einschränkungen man in einem bankrotten Land ohne funktionierende Währung unterlegen ist.

Die Autoren holen sehr weit aus. Sie gehen auf die Entstehung des Geldes ein und auf die Fragestellung was Geldscheine wertvoll macht, oder warum Gold einen hohen Wert hat. Wenn man darüber nachdenkt, dass ein Geldschein auch nur ein Schuldschein des Staates ist, relativiert es doch das ein oder andere. Auch war es ein geschickter Kunstgriff von Satoshi bei Bitcoins in Analogie zum Gold das Minen einzuführen.

Des weiteren wird die Bitcoin Historie inklusive der Vorgänger und der Cypherpunk Bewegung beleuchtet, ich fand es spannend anschließend im Bitcoin Blog die Posts von Satoshi nachzulesen. Es erscheint so als wenn Satoshi, oder wie auch immer die Person oder Gruppe heißt, nur geschickt bekannte Ideen neu zusammen geführt hat. Die Zeit war nach dem Crash 2008 einfach reif für ein dezentrales System ohne Banken. Eine Erfindung wie Bitcoin erscheint als eine unausweichliche logische Notwendigkeit.

Den visionäre Schlussteil kann man sich sparen. Hier wagen sich die Autoren nicht, konkrete Prognosen zu treffen. Sie zeigen nur mögliche Szenarien auf.

Wir stehen ganz am Anfang des Umgangs mit dezentralen Anwendungen, Werten und Unternehmen. Man hätte auch die Ingenieure, die die ersten Computer mit Netzwerkkabeln verbanden nach Facebook fragen können. Dabei wollten sie nur, ohne ein Speichermedium von A nach B tragen zu müssen, Dateien kopieren können.

Zusammenfassend kann man sagen, das Buch ist gute amerikanische Unterhaltung, die man auch im halb wachem Zustand, oder am Strand verdauen kann. Faktenorientierte Leser wären mit einer auf 20 Seiten komprimierten Version zufriedener, aber die kann man schlecht für den gleichen Preis verkaufen. Es reiht sich ein in die Reihe der netten Bücher, die in bunten Bildern Wirtschaftsjournalismus betreiben. Die Qualität von „Cybercurrency“ ist nicht vergleichbar mit Christensens „Innovator’s Dilemma“ oder Ries „Lean Startup“. Also liebe Autoren es ist noch Platz ein wirklich gutes Business Buch über Bitcoins und Blockchains zu schreiben, bis dahin lesen wir dieses.

— Andreas Albrecht