Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 9838|Répondre: 4

Kit de développement EOS Blockchain PHP

[Copié le lien]
Publié sur 11/12/2018 08:56:36 | | |
Ce post a été modifié pour la dernière fois par jimi2018 le 11-12-2018 à 09:06

1. Aperçu du paquet de développement
Le but d’EosTool est d’éliminer la douleur liée au développement d’applications blockchain EOS utilisant PHP, telles que :
  • Appelez ses fonctions via l’interface RPC de Nodeos et Keosd
  • Générer des clés privées et publiques au format EOS hors ligne
  • Utilisez votre clé privée locale pour générer des signatures de transaction conformes à EOS
  • Sérialiser les objets de transaction dans le format packed_trx requis par Nodeos
On peut considérer qu’EosTool est une version PHP d’eosjs, qui peut être utilisée pour implémenter pleinement les fonctions du client officiel d’EOS, Cleos, et peut aussi être facilement ajoutée au support de la blockchain EOS dans les applications PHP, améliorant considérablement l’efficacité du développement.

Les amis intéressés peuvent également aller directement sur ce site pour télécharger le kit de développement EOS blockchain PHP :http://t.cn/EUZAODQ

EosTool fonctionne dans un environnement Php 7.1+, la version actuelle est la 1.0.0, et la liste des fichiers de code principaux est la suivante :

Fichiers de codeillustrer
eostool/src/client/NodeClient.phpLa classe de logiciels logiciels de nœuds (PAAC) RPC (PAAC)
eostool/src/client/WalletClient.phpLa classe d’encapsulation d’interface RPC du logiciel portefeuille KEOSD
eostool/src/client/RpcOutput.phpRPC retourne la classe d’encapsulation résultante
eostool/src/Crypto/PrivateKey.phpClasse de clé privée EOS
eostool/src/Crypto/PublicKey.phpClasse de clé publique EOS
eostool/src/Crypto/Signature.phpClasse signature EOS
eostool/src/Serializer/AbiType.phpClasse de type ABI d’EOS
eostool/src/Serializer/AbiTypeFactory.phpClasse usine de type ABI
eostool/src/Serializer/SerialBuffer.phpClasse d’implémentation de tampon sérialisée
eostool/src/Serializer/Serializer.phpClasse d’implémentation Serializer
eostool/src/Signer/Signer.phpInterface signer
eostool/src/Signer/KeosdSigner.phpClasse d’implémentation signataire Keosd
eostool/src/Signer/LocalSigner.phpImplémentation locale du signataire hors ligne
eostool/src/Contract.phpClasse contractuelle
eostool/src/EosTool.phpClasse d’entrée de paquet de développement
eostool/testsCatalogue de cas de test unitaire
eostool/phpunit.xmlProfils de tests unitaires
eostool/vendorPackages de dépendance tiers
eostool/composer.jsonfichier de configuration du compositeur
2. Accéder au serveur de nœuds
Utilisez la classe NodeClient pour accéder à l’interface rpc de Nodeos. Par exemple, le code suivant accède à l’interface get_info du plugin de chaîne pour un nœud Nodeos qui s’exécute nativement :
2.1 Regroupement d’appels RPC

EosTool adopte une méthode de nommage cohérente, et la méthode d’appel de NodeClient peut être déduite selon l’API : le regroupement de l’API correspond à une propriété du même nom que le NodeClient, et l’API correspond à une méthode convertie par camelCase sous le même attribut du même nom que le regroupement du Client de No. Par exemple :



PluginsRegroupement APIRPC APIMéthode NodeClient
chain_api_pluginChaîneget_info$nc->chaîne->getInfo()
history_api_pluginHistoireget_transaction$nc->history->getTransaction()
net_api_pluginNetStatut$nc->net->status()
producer_api_pluginProducteurget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeAvoir$nc->dbsize->get()

Documentation officielle pour l’API RPC :https://developers.eos.io/eosio-nodeos/reference

2.2 Paramètres d’appel RPC

Pour Nodeos, certains appels nécessitent de passer des paramètres supplémentaires, comme l’interface get_block du plugin de chaîne ; lors de l’utilisation d’EosTool pour effectuer un appel, il suffit d’organiser les paramètres dans un tableau associé, le code d’exemple est le suivant :



2.3 Les appels RPC retournent des valeurs

Le résultat de retour de tous les appels RPC est une instance RpcOutput, et appeler sa méthode hasError() peut déterminer si l’appel est incorrect, et vous pouvez également utiliser la méthode getError() pour obtenir des informations d’erreur.
La réponse de l’appel RPC peut être obtenue via la méthode getResult(), qui est un objet StdClass converti à partir du résultat JSON original, ce qui permet d’extraire facilement les informations d’attribut, telles que :

2.4 Accès aux nœuds du mainnet/testnet

Lors de la création d’une instance NodeClient, des exécutions de paramètres supplémentaires peuvent être intégrées pour définir le mainnet ou les nœuds de testnet EOS auxquels accéder peuvent être utilisés. Par exemple, utilisez le code suivant pour accéder à un nœud du mainnet :

Ou visitez un nœud sur le testnet Jungle :


3. Accéder au serveur portefeuille
La nouvelle version de Keosd ne fournit plus de documentation API RPC, ce qui pourrait signifier qu’elle a commencé à glisser vers la limite dans la pile logicielle EOS. Cependant, vous pouvez accéder à l’ancienne version de la documentation à cette adresse :
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Utilisez la classe WalletClient pour accéder à l’interface rpc de Keosd. Par exemple, le code suivant accède à l’interface list_wallets de Keosd qui s’exécute nativement :
Puisque l’API de Keosd n’est plus regroupée, la méthode correspondante RPC est directement suspendue à l’objet WalletClient, ce qui est une différence. Comme NodeClient, l’appel à WalletClient renvoie un objet RpcOutput.

La version 1.4 de Keosd utilise des sockets UNIX au lieu d’HTTP pour fournir par défaut des interfaces RPC, ce qui peut être considéré comme plus sûr à utiliser IPC étant donné que dans la plupart des cas Keosd fonctionne nativement. C’est donc aussi l’option d’instanciation par défaut pour WalletClient, et dans la plupart des cas, aucun paramètre supplémentaire n’est nécessaire pour instancier le WalletClient.

4. Clés privées et publiques

L’algorithme clé d’EOS est similaire à Bitcoin, mais avec quelques ajustements et la définition de son propre format.
Utilisez la méthode statique de la classe PrivateKey new() pour générer une clé privée aléatoire. Par exemple :
la méthode toEos() est utilisée pour convertir des objets à clé privée en un format personnalisé pour EOS.

4.1 Dérivation de la clé publique
La clé publique peut être dérivée de la clé privée, telles que :


De même, utilisez la méthode toEos() pour convertir la clé publique en un format personnalisé pour EOS.

4.2 Importation des clés privées EOS
Vous pouvez convertir une clé privée formatée EOS en objet EosTool PrivateKey ; par exemple, le code ci-dessous importe la clé privée EOS spécifiée et affiche sa clé publique EOS correspondante :

4.3 Signature faisant autorité
La méthode sign() de PrivateKey prend en charge à la fois les signatures normales et les signatures d’autorité requises par les nœuds EOS. Par exemple, le code suivant renvoie une signature simple :

Passez des paramètres supplémentaires pour obtenir une signature faisant autorité pour les données spécifiées :



5. Sérialisation
EOS exige que les transactions soient sérialisées avant de valider le push_transaction de nœud, ce qui est également une partie inévitable du fonctionnement des transactions EOS en PHP.
Dans EosTool, la classe Serializer est utilisée pour les opérations de sérialisation. Par exemple, le code suivant sérialise une transaction de transfert EOS dans un format de code à 16 décimales pouvant être soumis à un nœud EOS :


La méthode statique fromAbi() de Serializer est utilisée pour construire une instance de sérializeur basée sur un abi spécifié, puis la méthode serialize() de l’instance est utilisée pour sérialiser le type de données spécifié afin d’obtenir un flux de code hexadécimal.

6. Signature
EosTool propose deux façons de signer des transactions : utiliser Keosd pour signer ou utiliser une clé privée locale.
Utilisez la classe KeosdSigner pour compléter la signature via le serveur portefeuille. Par exemple :

En utilisant la classe LocalSigner, vous pouvez éviter d’utiliser keosd et utiliser directement la signature de clé privée hors ligne. Par exemple :
utiliser EosTool\Signer\LocalSigner ;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'] ;
$signer = nouveau LocalSigner($prvKeys) ;
$signatures = $signer->signe($tx,$pubKeys,$chainId) ;



7. Soumission de la transaction
Une donnée de transaction doit être normalisée, sérialisée, signée et emballée à travers une série d’opérations avant de pouvoir être soumise au nœud Nodeos pour diffusion. La classe EosTool fournit la méthode transact() pour isoler ces opérations fastidieuses.
Par exemple, le code ci-dessous crée une instance EosTool en utilisant NodeClient et LocalSigner, puis soumet une transaction :
Il est pratique de changer le signataire en KeosdSigner, par exemple :


8. Invoquer une action contractuelle unique
Utilisez la méthode pushAction() d’EosTool pour appeler une seule action de contrat. Par exemple, le code suivant appelle la méthode hi() du contrat d’hébergement du compte Tommy :



9. Déployer le contrat
Déployez le contrat en utilisant la méthode setContract() d’EosTool, par exemple :
Les amis intéressés peuvent aller ici :http://t.cn/EUZAODQ




Publié sur 11/12/2018 08:59:58 |
Merci, très utile
 Propriétaire| Publié sur 11/12/2018 09:06:52 |

Merci pour votre soutien.
Publié sur 11/12/2018 09:11:46 |
J’ai lu beaucoup de contenu sur votre site, et j’ai l’impression que certains sont des articles étrangers traduits
Publié sur 11/12/2018 09:32:07 |
Regarde ça merci patron d’être devenu riche
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com