Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die Inhaltsanalyse für die Interaktion mit Ethereum über JSON-RPC

PHP implementiert die Inhaltsanalyse für die Interaktion mit Ethereum über JSON-RPC

不言
不言Original
2018-08-23 10:03:063012Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Inhaltsanalyse der Interaktion von PHP mit Ethereum über JSON-RPC. Ich hoffe, dass er für Freunde hilfreich ist.

Seit letztem Jahr entwickeln wir das Blockchain-Geschäft. Nachdem ich kürzlich Ethereum verwendet und mit PHP gearbeitet habe, dachte ich, wir würden uns über dieses Thema unterhalten.

Hier gibt es eine Voraussetzung:

  • 1. Blockchain verstehen

  • 2. Kenntnisse in Programmiersprachen haben

Text:

1. Entwicklungsumgebung

Wir werden Ubuntu 14.04 LTS verwenden. Geben Sie nach der Installation des Betriebssystems die vorgegebenen Befehle ein.

$ sudo apt-get update
$ sudo apt-get upgrade

Danach habe ich SSH, iptables, ntp usw. eingerichtet.

Dann kommt Apache + PHP. Die PHP-Version wird 5.5 sein.

$ sudo apt - get install php 5 libapache 2 - mod - php 5 php 5 - curl

2. Einführung in Ethereum

Dieses Mal verwenden wir den in der GO-Sprache erstellten Ethereum-Knoten, go-ethereumgeth genannt.

Zuerst fügen wir ein Repository hinzu.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum / ethereum
$ sudo add-apt-repository -y ppa:ethereum / ethereum-dev

Danach installieren Sie es einfach.

$ sudo apt-get update
$ sudo apt-get install ethereum

Starten Sie geth sofort nach Abschluss der Installation.
Erstellen Sie zunächst ein Datenverzeichnis und beschreiben Sie die Einstellungen für den ersten Block (den Genesis-Block).

$ mkdir~ / eth_private_net
$ vim~ / eth_private_net / my_genesis.json

{
“nonce”:“0x0000000000000042”,
“timestamp”:“0x0”,
“parentHash”:“0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,
“extraData”:“0x0”,
“gasLimit”:“0xffffffff”,
“难度”:“0x4000”,
“mixhash”:“0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”:“0x3333333333333333333333333333333333333333”,
“alloc”:{}
}

Als nächstes erstellen Sie den Genesis-Block und starten geth.

$ geth --datadir "/home/yoshida/eth_private_net" init /home/yoshida/eth_private_net/my_genesis.json
$ geth --networkid 57598955 --port 8955 --nodiscover --datadir "/home/yoshida/eth_private_net" console 2>> /home/yoshida/eth_private_net/geth_err.log

Erfolgreicher Start im Konsolenmodus.

gibt mehrere Optionen an, die Erläuterungen sind unten zusammengefasst.

  • Netzwerk-ID, Verbindung zu öffentlichen Knoten herstellen.

  • Port, es handelt sich um einen Port, der für den Standby-Modus verwendet wird. Ich habe es auf 4 Ziffern geändert.

  • nodiscover, dies ist eine Einstellung, die verhindert, dass Knoten automatisch angezeigt werden.

  • datadir, gibt das Verzeichnis an, in dem die Blockchain Daten speichert.

  • Konsole, startet gleichzeitig die Konsole.

Okay, bereit für den nächsten Aufruf von PHP, aber vorher lasst uns noch etwas Vorbereitung auf der Geth-Seite machen.

3. Bereiten Sie sich auf JSON-RPC-Aufrufe vor

Zugriff von PHP über JSON-RPC. Hier werden wir die Nachbarschaft einrichten.

Zuerst werden die aktuellen Kontoinformationen eingeholt. Wir verwenden auch die Geth-Konsole, die wir zuletzt gestartet haben.

> eth.accounts
[]

Wir haben noch kein Konto erstellt, also müssen wir eines erstellen.

> personal.newAccount("password")
"0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"
> eth.accounts
["0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"]

Konto jetzt erstellt. Wir haben es so eingerichtet, dass wir beim Mining Belohnungen erhalten können.

> miner.setEtherbase(eth.accounts [0])

Da der aktuelle Knoten keine RPC-Aufrufe zulässt, fügen Sie als Nächstes eine Option hinzu und starten Sie sie erneut. Lassen Sie uns zunächst Geth zusammenfassen.

> exit

Lasst uns Optionen hinzufügen und neu starten

$ geth --networkid 57598955 --port 8955 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport "8956" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal" --datadir "/home/yoshida/eth_private_net" console 2>> /home/yoshida/eth_private_net/geth_err.log

Mehrere Optionen für RPC hinzugefügt. Die Erklärung lautet wie folgt.

  • rpc, ermöglicht RPC-Backup.

  • rpcaddr, wird für die RPC-Backup-IP-Adresse verwendet.

  • rpcport, der Port, der zum Abhören von RPC verwendet wird. Ich habe die Portnummer auf 4 Ziffern gesenkt.

  • rpccorsdomain, die Domäne, die den Zugriff auf RPC ermöglicht. Beachten Sie, dass beim Veröffentlichen eines Knotens alles zulässig ist, wenn er „*“ ist.

Die Knotenseite ist jetzt fertig. Als nächstes folgt der Aufruf von PHP.

4. Zugriff über PHP

Der letzte Punkt ist, warum Sie über PHP zugreifen sollten, weil es ziemlich schwierig ist, dies beim Schreiben von Code zu verwenden.

Wie Sie in der README-Datei sehen können, müssen Sie nur eine Klasse erstellen.

Verwenden wir es, indem wir es im selben Verzeichnis wie das Testskript ablegen.

$ cd /home/yoshida/php-eth/
$ ls -l
ethereum.php json-rpc.php
$ vim test.php
<?php

require_once &#39;ethereum.php&#39;;
$ethereum = new Ethereum(&#39;localhost&#39;, &#39;8956&#39;);
print_r($ethereum->eth_accounts());

Wenn wir dieses Skript ausführen, sollte eine Liste mit Konten wie folgt vorhanden sein.

$ php test.php
Array
(
[0] => 0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b
)

Wenn Sie keine Verbindung herstellen können, überprüfen Sie bitte die Porteinstellungen usw.

Bisher haben wir es einfach erklärt, aber ist es überraschend einfach, mit PHP zu entwickeln?

Verwandte Empfehlungen:

Wie der Browser relevante Daten über die JSON-RPC-Schnittstelle des Bitcoin Core-Clients erhält

Ein einfaches JSON-RPC-Framework-Beispiel, implementiert durch PHP

Das obige ist der detaillierte Inhalt vonPHP implementiert die Inhaltsanalyse für die Interaktion mit Ethereum über JSON-RPC. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn