Heim > Artikel > Backend-Entwicklung > PHP implementiert die Inhaltsanalyse für die Interaktion mit Ethereum über JSON-RPC
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:
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
Dieses Mal verwenden wir den in der GO-Sprache erstellten Ethereum-Knoten, go-ethereum
geth 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.
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.
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 'ethereum.php'; $ethereum = new Ethereum('localhost', '8956'); 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!