Erstellen Sie Ihre erste Blockchain mit Java Code

Ad-Midbar
Ad-Midbar
Ad-Midbar
Ad-Midbar

Wir haben alle gesehen, wie groß Bitcoin und andere Kryptowährungen geworden sind. Während diese Art von Online-Währung notorisch volatil ist, hat die Technologie dahinter das Potenzial, jede Branche von innen heraus zu stören. Weil Blockchain einen endlosen Anwendungsbereich hat, wird es jeden Tag auf neue Weise gesehen.

In diesem Beitrag gehen wir auf die Architektur hinter Blockchain ein und wie ein verteiltes Hauptbuch funktioniert. Sobald Sie es für sich selbst sehen, werden Sie sehen, warum so viele Entwickler Blockchain als eine neue Normalität begreifen. Wir werden auch in ein kurzes Tutorial eintauchen, wie Sie Ihre eigene (grundlegende) Blockchain-Sequenz erstellen und ein Proof of Work (Mining) -System verwenden können.

Bild über Pexels

Blockchain verstehen

Zuerst müssen wir alle auf derselben Seite darüber sein, was Blockchain ist und wie es funktioniert, bevor wir es selbst versuchen. Der Block hat Header-Informationen, und es gibt auch einen Satz oder einen "Block" von Daten. Diese Daten sind normalerweise eine Transaktion in der Welt der Kryptowährung, aber sie können angepasst werden. Die Kette beginnt dann mit einem Genesis-Block, und neue Blöcke werden erstellt, abhängig davon, wie viele Transaktionen oder Datensätze in einem Block gespeichert sind.

Sobald dieser Schwellenwert erreicht ist, wird ein neuer Block erstellt. Diese neue ist mit der vorherigen verknüpft, und von daher kommt der Begriff Blockchain. Blockchains sind auch unveränderlich. Dies liegt daran, dass ein SHA-256-Hash bei jeder Transaktion oder jedem Datensatz beteiligt ist. Der Inhalt innerhalb der Blöcke wird ebenfalls gehasht. Dies bedeutet, dass es für jeden Block einen eindeutigen Bezeichner gibt und der Hash der verknüpften Blöcke ebenfalls im Header gespeichert und gehasht wird.

Weil Blockchains unveränderlich sind, sind sie unglaublich sicher. Es ist grundsätzlich unmöglich, mit einem zu verkehren. Der Versuch, Transaktionsdaten oder Eigentum vorzutäuschen, wäre eine Herausforderung. Mehr noch, wenn die Kette wächst, wird sie noch sicherer. Die Technologie, um dieses System zu stören, existiert noch nicht, und das sind gute Nachrichten.

Es gibt drei Arten von Blockchain:

  • Öffentlichkeit - Die öffentliche Blockchain kann von jedermann gesehen werden. Die Transaktionen und Daten erscheinen alle auf dem Hauptbuch, und das bedeutet, dass jeder am Konsensprozess teilnehmen kann.
  • Föderiert - Im Gegensatz zu einer öffentlichen Blockchain erlaubt Federated nicht, dass jeder Teil des Konsensprozesses ist. Stattdessen gibt es eine begrenzte Anzahl von Knoten mit der Berechtigung, auf das Hauptbuch zuzugreifen.
  • Privatgelände - Schließlich werden private Blockchains hauptsächlich in Unternehmen eingesetzt. Diese sind auf bestimmte Mitglieder beschränkt, die auf die Blockchain zugreifen und Transaktionen ausführen können.

Transaktionen

Lassen Sie uns als nächstes über Transaktionen innerhalb von Blockchain sprechen. Die Blockchain-Technologie ist verteilt. Da sie nur Append-Only sind, ist es einfach, Blockchains über Knoten im Netzwerk zu duplizieren. Während Knoten normalerweise Peer-to-Peer kommunizieren (wie bei Bitcoin), können sie auch mit APIs über HTTP dezentralisiert werden.

Eine Transaktion kann alles sein. Es könnte einen Ausführungscode haben oder einfach Informationen speichern. Sie können diese Technologie in Aktion mit der Einführung von neuen sehen intelligente Verträge. Im Wesentlichen sind diese intelligenten Verträge Computerprotokolle, die digitale Verträge ermöglichen und verifizieren. Sie werden wahrscheinlich in Branchen wie der Fertigung, dem Bankwesen usw. mehr Mainstream werden.

Sehen wir uns Bitcoin als Beispiel an. Bei Bitcoin gibt es eine Transaktion mit einem bestimmten Betrag, der von einem Eigentümerkonto auf ein anderes Konto übertragen wird. Diese Transaktion verfügt über öffentliche Schlüssel und Konto-IDs, um sicherzustellen, dass sie sicher sind. Diese Transaktionen werden einem Netzwerk hinzugefügt und sie werden zusammengefasst. Obwohl sie sich in einem gemeinsamen Netzwerk befinden, befinden sie sich nicht in einem Block oder in der Kette selbst.

Wie funktioniert das? Es kommt auf die Konsensmechanismus. Sie kennen wahrscheinlich einen solchen Mechanismus namens Mining, der von Bitcoin verwendet wird. Es gibt eine endlose Liste von Konsensmechanismen und es würde zu lange dauern, sie alle aufzulisten. Alles, was Sie wissen müssen, ist, dass es sich um Algorithmen oder Muster handelt, die Transaktionen sammeln, einen Block erstellen und diese Blöcke zur Validierung hinzufügen.

Anfangen

Wie Sie oben lesen, ist eine Blockchain eine Kette oder eine Liste von Blöcken. Jeder Block verfügt über eine eigene digitale Signatur sowie die digitale Signatur der Blöcke davor. Einige enthalten möglicherweise auch Daten wie Transaktionsinformationen. Die digitale Signatur wird als Hash bezeichnet. Der eigene Hash eines jeden Blocks wird aus dem vorherigen berechnet. Eine Änderung wirkt sich auf alle folgenden Hashes aus. Indem wir diese berechnen und vergleichen, können wir sehen, ob eine Blockchain gültig ist.

Da alle Änderungen an Daten zu einer unterbrochenen Kette führen, erstellen wir zuerst eine Klasse Block, die die Grundlage für die Blockchain bildet.

Öffentliche Klasse Block {

öffentlicher String-Hash;

Öffentliche Zeichenfolge previousHash;

Private String-Daten;

Private lange ZeitStempel;

// Block Konstruktor.

Öffentlicher Block (String data, String previousHash) {

this.data = Daten;

this.previousHash = vorherigerHash;

this.timeStamp = new Datum (). getTime ();

}

Der obige Code beginnt mit a Zeichenfolge-Hashund hier werden wir unsere digitale Signatur machen. Wie du siehst, previousHash hält den Hash des letzten Blocks und Zeichenfolgedaten wird unsere gesamten Blockdaten enthalten. Weil wir die Grundlage haben, können wir jetzt eine digitale Signatur erzeugen. Dies bedeutet, dass Sie einen kryptografischen Algorithmus auswählen müssen. Für dieses Beispiel werden wir verwenden SHA256. Um dies zu erhalten, importieren wir die java.security.MessageDigest.

import java.security.MessageDigest;

Öffentliche Klasse StringUtil {
Öffentliche statische Zeichenfolge applySha256 (String input) {
versuche {
Message Digest Digest = MessageDigest.getInstance ("SHA-256");
Byte [] Hash = Digest.digest (input.getBytes ("UTF-8"));
StringBuffer hexString = new StringBuffer (); // Dies wird Hash als Hexadezimal enthalten
für (int i = 0; i <hash.lenge; i ++) {
Zeichenfolge hex = Integer.toHexString (0xff & hash [i]);
if (hex.length () == 1) hexString.append ('0');
hexString.append (hex);
}
Rückgabe hexString.toString ();
}
fangen (Ausnahme e) {
neue RuntimeException werfen (e);
}
}
}

Dies schafft ein StringUtil Dienstprogrammklasse, die wir später verwenden werden. Dies nimmt eine Zeichenfolge und wendet den SHA256-Algorithmus an, um die generierte Signatur zurückzugeben. Mit dem neuen Helfer können wir den Hash in unserem berechnen Blockieren Klasse. Um den Hash zu berechnen, müssen wir alle Teile des Blocks verwenden, mit denen wir nicht verwirrt werden wollen.

Öffentliche Zeichenfolge calculateHash () {
String berechnethash = StringUtil.applySha256 (
vorherigesHash +
Long.toString (Zeitstempel) +
Datum
);
Rückgabeberechneter Hash;
}

public Block (Zeichenkette data, String previousHash) {
this.data = Daten;
this.previousHash = vorherigerHash;
this.timeStamp = new Datum (). getTime ();
this.hash = berechnenHash (); /

}

Perfekt! Jetzt ist es Zeit für ein paar Tests. Wir müssen einige Blöcke erstellen und die Hashes auf dem Bildschirm anzeigen. Auf diese Weise wissen wir, dass alles so funktioniert, wie es sollte. Da im ersten (Genesis) -Block kein vorheriger Block vorhanden ist, geben wir "0" als Wert für den vorherigen Hash ein.

Öffentliche Klasse Test {

public static void main (String [] args) {

Block genesisBlock = neuer Block ("Genesis block", "0");
System.out.println ("Hash für Block 1:" + genesisBlock.hash);

Block secondBlock = neuer Block ("Second block", genesisBlock.hash);
System.out.println ("Hash für Block 2:" + secondBlock.hash);

Block thirdBlock = neuer Block ("Third block", secondBlock.hash);
System.out.println ("Hash für Block 3:" + thirdBlock.hash);

}
}

Ihre Ausgabe sollte drei Blöcke mit jeweils einer eigenen digitalen Signatur haben. Ihre digitale Signatur wird abhängig von Ihrem eindeutigen Zeitstempel unterschiedliche Werte haben, aber Sie erhalten einen anderen Ort. Jetzt ist es Zeit, unsere Blöcke in einem zu speichern Anordnungsliste. Gleichzeitig werden wir es tun Gib gson ein und betrachte es als Json.

import java.util.ArrayList;
Importieren Sie com.google.gson.GsonBuilder;

Öffentliche Klasse Test {

Öffentliche statische ArrayList <Block> blockchain = new ArrayList <Block> ();

public static void main (String [] args) {
blockchain.add (neuer Block ("Genesis block", "0"));
blockchain.add (neuer Block ("Zweiter Block", blockchain.get (blockchain.size () - 1) .hash));
blockchain.add (neuer Block ("Dritter Block", blockchain.get (blockchain.size () - 1) .hash));

String blockchainJson = new GsonBuilder (). SetPrettyPrinting (). Create (). ToJson (blockchain);
System.out.println (blockchainJson);
}

}

Jetzt machen wir viel mehr Prozess. Ihre Ausgabe ist viel näher an der erwarteten Blockchain. Schließlich werden wir prüfen, wie gültig unsere Blockchain ist. Wir werden ein erstellen isChain Valid () Boolean Methode in unserem Test Klasse. Dadurch werden alle bisher erstellten Blöcke durchlaufen und der Hashwert verglichen, um zu sehen, ob er dem berechneten Hashwert entspricht und so weiter.

public static Boolean isChainValid () {
Block currentBlock;
Block vorherigerBlock;

für (int i = 1; i <blockchain.größe (); i ++) {
currentBlock = blockchain.get (i);
previousBlock = blockchain.get (i-1);
if (! aktuellerBlock.hash.equals (currentBlock.calculateHash ())) {
System.out.println ("Aktuelle Hashes ungleich");
return false;
}
if (! previousBlock.hash.equals (currentBlock.previousHash)) {
System.out.println ("Vorherige Hashes ungleich");
return false;
}
}
return true;
}

Wenn bei diesem Code Änderungen an den Blöcken vorgenommen werden, erhalten Sie eine falsche Rückgabe. Wenn Sie eine echte Antwort erhalten, haben Sie es erfolgreich gemacht. Sie haben Blöcke von gespeicherten Daten mit einer einzigartigen digitalen Signatur erstellt, die das Ganze zusammenhält. Sie können jetzt mit dem Mining beginnen.

Final Thoughts

Da Blockchains dezentralisiert sind, gibt es keine Autorität, Regeln für akzeptierte Transaktionen festzulegen. Blockchain beinhaltet eine Vertrauensstufe, da diese Transaktionen in einem offenen Netzwerk gespeichert werden. Obwohl es eine Menge Verwirrung um diese Technologie gibt, wie Sie oben sehen können, ist es nicht so kompliziert, wie viele es ausstellen.

Je mehr Entwickler versuchen, ihre eigenen Mining-Bestrebungen in Angriff zu nehmen, desto mehr Tools helfen ihnen dabei. Software wie Loggly und der Microsoft Azure sind so konzipiert, dass Blockchains einfacher und zugänglicher werden. Es gibt viele Gründe für Entwickler, die Welt der Blockchain zu erkunden. Erstens ist es relativ einfach zu lernen, wie Sie oben sehen können, und es wird auch erwartet, dass es in naher Zukunft eine gefragte Karriere sein wird.

Während Blockchain keine magische Datenbank in den Wolken ist, ist es eine moderne Lösung für komplexe und technische Transaktionen. Es besteht kein Zweifel, dass diese Technologie hier ist, um zu bleiben. Nur die Zeit wird zeigen, wie es in Zukunft weiter angewendet wird. Die hier von Mitwirkenden geäußerten Meinungen sind ihre eigenen.

Als Senior Vice President für Business Intelligence Development habe ich Fortune 1000 mit umfassendem Know-how im gesamten Web unterstützt, einschließlich Marketing-Maßnahmen, die sowohl auf den Verbraucher als auch auf den Anbieter zugeschnitten sind. Ich bin ein Denker, Kommunikator, Vermarkter, Konkurrent, Leute Person und viel beschäftigte Biene. Ich bin ein unerbittlicher Netzwerker mit mehreren Jahren Praxiserfahrung und zwei College-Abschlüssen. Er ist auch ein Beitrag zu Esprittoday.

Veröffentlicht September 23, 2018

Quelle Link

Ad-unten
Ad-unten
Ad-unten
Ad-unten

KEINE KOMMENTARE