Maison >développement back-end >tutoriel php >PHP implémente l'analyse de contenu pour l'interaction avec Ethereum via JSON-RPC

PHP implémente l'analyse de contenu pour l'interaction avec Ethereum via JSON-RPC

不言
不言original
2018-08-23 10:03:063085parcourir

Le contenu de cet article concerne l'analyse du contenu de PHP interagissant avec Ethereum via JSON-RPC. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Depuis l'année dernière, nous développons l'activité blockchain. Ayant utilisé Ethereum récemment et travaillant avec PHP, j'ai pensé que nous pourrions discuter de ce sujet.

Il y a une prémisse ici :

  • 1. Comprendre la blockchain

  • 2.

Texte :


1. Environnement de développement

Nous utiliserons Ubuntu 14.04 LTS. Après avoir installé le système d'exploitation, entrez les commandes prédéterminées.

$ sudo apt-get update
$ sudo apt-get upgrade
Après cela, j'ai configuré SSH, iptables, ntp, etc.

Vient ensuite Apache + PHP. La version PHP sera la 5.5.

$ sudo apt - get install php 5 libapache 2 - mod - php 5 php 5 - curl
2. Introduction à Ethereum

Cette fois, nous utiliserons le nœud Ethereum réalisé en langage GO,

appelé geth. go-ethereum

Ajoutons d’abord un référentiel.

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum / ethereum
$ sudo add-apt-repository -y ppa:ethereum / ethereum-dev
Après cela, installez-le simplement.

$ sudo apt-get update
$ sudo apt-get install ethereum
Démarrez geth immédiatement une fois l'installation terminée.

Tout d'abord, créez un répertoire de données et décrivez les paramètres du premier bloc (le bloc Genesis).

$ 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”:{}
}
Ensuite, créez le bloc Genesis et démarrez 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
Démarrez avec succès en mode console.

précise plusieurs options, les explications sont résumées ci-dessous.

  • networkid, connectez-vous aux nœuds publics.

  • port, c'est un port utilisé en veille. Je l'ai changé en 4 chiffres.

  • nodiscover, il s'agit d'un paramètre qui empêche les nœuds de s'afficher automatiquement.

  • datadir, précise le répertoire dans lequel la blockchain stocke les données.

  • console, démarre la console en même temps.

D'accord, prêt pour le prochain appel à PHP, mais avant cela, faisons un peu plus de préparation du côté geth.

3. Préparez-vous aux appels JSON-RPC

Accès depuis PHP via JSON-RPC. Ici, nous allons installer le quartier.

Tout d'abord, les informations du compte courant seront obtenues. Nous utilisons également la console geth que nous avons lancée la dernière fois.

> eth.accounts
[]
Nous n’avons pas encore créé de compte, nous devons donc le créer.

> personal.newAccount("password")
"0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"
> eth.accounts
["0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b"]
Compte maintenant créé. Nous l'avons configuré pour pouvoir obtenir des récompenses lors de l'exploitation minière.

> miner.setEtherbase(eth.accounts [0])
Ensuite, puisque le nœud actuel n'autorise pas les appels RPC, ajoutez une option et redémarrez-le. Commençons par conclure avec Geth.

> exit
Ajoutons des options et redémarrons

$ 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
Ajout de plusieurs options pour rpc. L'explication est la suivante.

  • rpc, permet la sauvegarde RPC.

  • rpcaddr, utilisé pour l'adresse IP de sauvegarde RPC.

  • rpcport, le port utilisé pour écouter RPC. J'ai réduit le numéro de port à 4 chiffres.

  • rpccorsdomain, le domaine qui permet d'accéder à RPC. Notez que lors de la publication d'un nœud, s'il vaut "*", il autorisera tout.

Le côté nœud est maintenant prêt. Ensuite sera l'appel de PHP.

4. Accès depuis PHP

La dernière chose est pourquoi accéder depuis PHP mais les avoir car il est assez difficile de l'utiliser lorsque vous écrivez du code.

Comme vous pouvez le voir dans le README, il vous suffit de créer une classe.

Utilisons-le en le plaçant dans le même répertoire que le script de test.

$ 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());
Lorsque nous exécutons ce script, il devrait y avoir une liste de comptes comme suit.

$ php test.php
Array
(
[0] => 0xb83fa0d1c6b34a42f900cca5a32400c3b6f69f4b
)
Si vous ne parvenez pas à vous connecter, veuillez vérifier les paramètres du port, etc.

Jusqu’à présent, nous l’avons expliqué simplement, mais n’est-il pas étonnamment facile de développer avec PHP ?

Recommandations associées :

Comment le navigateur obtient des données pertinentes via l'interface JSON-RPC du client Bitcoin Core

Un exemple simple de framework json rpc implémenté par php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn