Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 9838|Antwort: 4

EOS Blockchain PHP Entwicklungskit

[Link kopieren]
Veröffentlicht am 11.12.2018 08:56:36 | | |
Dieser Beitrag wurde zuletzt von jimi2018 am 11.12.2018 um 09:06 bearbeitet

1. Übersicht des Entwicklungspakets
Der Zweck von EosTool ist es, den Aufwand der Entwicklung von EOS-Blockchain-Anwendungen mit PHP zu beseitigen, wie zum Beispiel:
  • Ruft seine Funktionen über die RPC-Schnittstelle von Nodeos und Keosd auf
  • Private und öffentliche Schlüssel im EOS-Format offline generieren
  • Verwenden Sie Ihren lokalen privaten Schlüssel, um EOS-konforme Transaktionssignaturen zu erstellen
  • Serialisieren Sie Transaktionsobjekte in das von Nodeos geforderte packed_trx-Format
Es kann angenommen werden, dass EosTool eine PHP-Version von eosjs ist, die zur vollständigen Implementierung der Funktionen des offiziellen EOS-Clients Cleos verwendet werden kann und auch einfach zur Unterstützung der EOS-Blockchain in PHP-Anwendungen hinzugefügt werden kann, was die Entwicklungseffizienz erheblich verbessert.

Interessierte Freunde können auch direkt dazu gehen, das EOS Blockchain PHP Entwicklungskit herunterzuladen:http://t.cn/EUZAODQ

EosTool läuft in der Php 7.1+-Umgebung, die aktuelle Version ist 1.0.0, und die Liste der Hauptcodedateien ist wie folgt:

Codedateienillustrieren
eostool/src/client/NodeClient.phpDie RPC-Schnittstellenpaketklasse der Nodeos der Knotensoftware-Nodeos
eostool/src/client/WalletClient.phpDie RPC-Schnittstellenkapselungsklasse der Wallet-Software KEOSD
eostool/src/client/RpcOutput.phpRPC liefert die resultierende Kapselungsklasse zurück
eostool/src/Crypto/PrivateKey.phpEOS-Private-Key-Klasse
eostool/src/Crypto/PublicKey.phpEOS-Klasse des öffentlichen Schlüssels
eostool/src/Crypto/Signature.phpEOS-Signaturklasse
eostool/src/Serializer/AbiType.phpEOS' ABI-Typ-Paketklasse
eostool/src/Serializer/AbiTypeFactory.phpABI-Typ-Fabrikklasse
eostool/src/Serializer/SerialBuffer.phpSerialisierte Puffer-Implementierungsklasse
eostool/src/Serializer/Serializer.phpSerializer-Implementierungsklasse
eostool/src/Signer/Signer.phpSigner-Schnittstelle
eostool/src/Signer/KeosdSigner.phpKeosd-Signer-Implementierungsklasse
eostool/src/Signer/LocalSigner.phpImplementierung des lokalen Offline-Signierers
eostool/src/Contract.phpVertragsklasse
eostool/src/EosTool.phpEntwicklungspaket-Einstiegsklasse
Eostool/TestsKatalog von Einheitstestfällen
Eostool/phpunit.xmlEinheitstestprofile
eostool/AnbieterDrittanbieter-Abhängigkeitspakete
eostool/composer.jsonKomponisten-Konfigurationsdatei
2. Zugriff auf den Knotenserver
Verwenden Sie die NodeClient-Klasse, um auf die rpc-Schnittstelle von NodeOS zuzugreifen. Zum Beispiel greift der folgende Code auf die get_info-Schnittstelle des Chain-Plugins für einen nativ laufenden Nodeos-Knoten zu:
2.1 RPC-Rufgruppierung

EosTool verwendet eine konsistente Benennungsmethode, und die Aufrufmethode von NodeClient kann anhand der API abgeleitet werden: Die API-Gruppierung entspricht einer Eigenschaft mit demselben Namen wie der NodeClient, und die API entspricht einer von camelCase konvertierten Methode unter demselben Attribut mit demselben Namen wie die Gruppierung des Client von No. Zum Beispiel:



PluginsAPI-GruppierungRPC APINodeClient-Methode
chain_api_pluginKetteget_info$nc->chain->getInfo()
history_api_pluginGeschichteget_transaction$nc->history->getTransaction()
net_api_pluginnettoStatus$nc->net->status()
producer_api_pluginProduzentget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeErhalten$nc->dbsize->get()

Offizielle Dokumentation für die RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 RPC-Aufrufparameter

Für Nodeos erfordern einige Aufrufe das Eingeben zusätzlicher Parameter, wie zum Beispiel die get_block-Schnittstelle des Ketten-Plugins. Wenn man mit EosTool einen Aufruf tätigt, organisiere die Parameter einfach in ein zugehöriges Array, der Beispielcode ist wie folgt:



2.3 RPC-Aufrufe returnieren Werte

Das Rückgabeergebnis aller RPC-Aufrufe ist eine RpcOutput-Instanz, und der Aufruf ihrer hasError()-Methode kann bestimmen, ob der Aufruf falsch ist, und Sie können außerdem die getError()-Methode verwenden, um Fehlerinformationen zu erhalten.
Die Antwort des RPC-Aufrufs kann über die getResult()-Methode erhalten werden, die ein StdClass-Objekt ist, das aus dem ursprünglichen JSON-Ergebnis konvertiert wurde, sodass sie leicht extrahierbar Attributinformationen sind, wie zum Beispiel:

2.4 Zugriff auf Mainnet-/Testnet-Knoten

Beim Erstellen einer NodeClient-Instanz können zusätzliche Parameterausführungen eingereicht werden, um die EOS-Hauptnetz- oder Testnetzknoten zu definieren, auf die sie zugreifen sollen. Verwenden Sie zum Beispiel folgenden Code, um auf einen Mainnet-Knoten zuzugreifen:

Oder besuchen Sie einen Knoten im Jungle-Testnetz:


3. Zugriff auf den Wallet-Server
Die neue Version von Keosd bietet keine RPC-API-Dokumentation mehr, was bedeuten könnte, dass sie im EOS-Softwarestack langsam an den Rand rutscht. Die alte Version der Dokumentation können Sie jedoch unter dieser Adresse abrufen:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Verwenden Sie die WalletClient-Klasse, um auf die rpc-Oberfläche von Keosd zuzugreifen. Zum Beispiel greift folgender Code auf die list_wallets Schnittstelle von Keosd zu, die nativ läuft:
Da Keosds API nicht mehr gruppiert ist, hängt die entsprechende RPC-Methode direkt am WalletClient-Objekt auf, was einen Unterschied macht. Wie bei NodeClient gibt der Aufruf an WalletClient ein RpcOutput-Objekt zurück.

Keosd Version 1.4 verwendet UNIX-Sockets anstelle von HTTP, um standardmäßig RPC-Schnittstellen bereitzustellen, was als sicherer für IPC gelten kann, da Keosd in den meisten Fällen nativ läuft. Daher ist dies auch die Standardinstanziierungsoption für WalletClient, und in den meisten Fällen müssen keine zusätzlichen Parameter eingegeben werden, um den WalletClient zu instanziieren.

4. Private und öffentliche Schlüssel

Der Schlüsselalgorithmus von EOS ähnelt Bitcoin, weist jedoch einige Anpassungen auf und definiert ein eigenes Format.
Verwenden Sie die statische Methode der PrivateKey-Klasse new(), um einen zufälligen privaten Schlüssel zu generieren. Zum Beispiel:
die toEos()-Methode wird verwendet, um private Schlüsselobjekte in ein benutzerdefiniertes EOS-Format umzuwandeln.

4.1 Herleitung des öffentlichen Schlüssels
Der öffentliche Schlüssel kann aus dem privaten Schlüssel abgeleitet werden, zum Beispiel:


Verwenden Sie ähnlich die toEos()-Methode, um den öffentlichen Schlüssel in ein benutzerdefiniertes EOS-Format umzuwandeln.

4.2 Import von EOS-Privatschlüsseln
Sie können einen EOS-formatierten privaten Schlüssel in ein EosTool PrivateKey-Objekt umwandeln, zum Beispiel importiert der untenstehende Code den angegebenen EOS-Privatschlüssel und zeigt den entsprechenden EOS-Public-Key an:

4.3 Autoritative Unterschrift
Die sign()-Methode von PrivateKey unterstützt sowohl normale Signaturen als auch autoritative Signaturen, die von EOS-Knoten benötigt werden. Zum Beispiel liefert der folgende Code eine einfache Signatur:

Geben Sie zusätzliche Parameter ein, um eine autoritative Signatur für die angegebenen Daten zu erhalten:



5. Serialisierung
EOS erfordert, dass Transaktionen serialisiert werden, bevor Knoten-push_transaction gecommittet wird, was ebenfalls ein unvermeidbarer Bestandteil des Betriebs von EOS-Transaktionen in PHP ist.
In EosTool wird die Serializer-Klasse für Serialisierungsoperationen verwendet. Zum Beispiel serialisiert der folgende Code eine EOS-Übertragungstransaktion in ein 16-dezimales Codestream-Format, das an einen EOS-Knoten übermittelt werden kann:


Die statische Methode fromAbi() von Serializer wird verwendet, um eine Serializer-Instanz auf Basis eines angegebenen Abi zu konstruieren, und anschließend wird die Serialize()-Methode der Instanz verwendet, um den angegebenen Datentyp zu serialisieren und so einen hexadezimalen Codestrom zu erhalten.

6. Unterschrift
EosTool bietet zwei Möglichkeiten, Transaktionen zu signieren: mit Keosd zum Signieren oder mit einem lokalen privaten Schlüssel.
Verwenden Sie die KeosdSigner-Klasse, um das Signieren über den Wallet-Server abzuschließen. Zum Beispiel:

Mit der LocalSigner-Klasse können Sie die Nutzung von keosd vermeiden und direkt Offline-Private-Key-Signing nutzen. Zum Beispiel:
EosTool\Signer\LocalSigner verwenden;

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



7. Einreichung der Transaktion
Eine Transaktionsdaten müssen normalisiert, serialisiert, signiert und durch eine Reihe von Operationen verpackt werden, bevor sie zum Broadcasting an den Nodeos-Knoten gesendet werden können. Die EosTool-Klasse bietet die transact()-Methode, um diese mühsamen Operationen zu isolieren.
Zum Beispiel erstellt der folgende Code eine EosTool-Instanz mit NodeClient und LocalSigner und reicht dann eine Transaktion ein:
Es ist praktisch, den Signer zum Beispiel in KeosdSigner zu ändern:


8. Erheben Sie eine einheitliche Vertragsklage
Verwenden Sie die pushAction()-Methode von EosTool, um eine einzelne Vertragsaktion aufzurufen. Zum Beispiel ruft der folgende Code die hi()-Methode des Tommy-Konto-Hosting-Vertrags auf:



9. Den Vertrag auszulösen
Deployen Sie den Vertrag zum Beispiel mit der setContract()-Methode von EosTool:
Interessierte Freunde können hier gehen:http://t.cn/EUZAODQ




Veröffentlicht am 11.12.2018 08:59:58 |
Danke. Sehr hilfreich.
 Vermieter| Veröffentlicht am 11.12.2018 09:06:52 |

Danke für die Unterstützung.
Veröffentlicht am 11.12.2018 09:11:46 |
Ich habe viele Inhalte auf Ihrer Seite gelesen und habe das Gefühl, dass einige davon übersetzte ausländische Artikel sind
Veröffentlicht am 11.12.2018 09:32:07 |
Schau dir an, danke, Chef, dass du reich geworden bist.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com