Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 9838|Antwoord: 4

EOS Blockchain PHP Ontwikkelingskit

[Link kopiëren]
Geplaatst op 11-12-2018 08:56:36 | | |
Dit bericht is voor het laatst bewerkt door jimi2018 op 11-12-2018 09:06

1. Overzicht van het ontwikkelingspakket
Het doel van EosTool is om de moeite van het ontwikkelen van EOS-blockchainapplicaties met PHP te elimineren, zoals:
  • Roep zijn functies aan via de RPC-interface van Nodeos en Keosd
  • Genereer privé- en publieke sleutels offline in EOS-formaat
  • Gebruik je lokale privésleutel om EOS-conforme transactiehandtekeningen te genereren
  • Serialiseer transactieobjecten in het packed_trx-formaat dat door Nodeos vereist is
Er kan worden aangenomen dat EosTool een PHP-versie van eosjs is, die volledig kan worden gebruikt om de functies van de officiële EOS-client Cleos volledig te implementeren, en het kan ook eenvoudig worden toegevoegd aan de ondersteuning van de EOS-blockchain in PHP-applicaties, wat de ontwikkelingsefficiëntie aanzienlijk verbetert.

Geïnteresseerde vrienden kunnen hier ook direct naartoe gaan om de EOS blockchain PHP ontwikkelingskit te downloaden:http://t.cn/EUZAODQ

EosTool draait in een Php 7.1+ omgeving, de huidige versie is 1.0.0, en de lijst met hoofdcodebestanden is als volgt:

Codebestandenillustreren
eostool/src/client/NodeClient.phpDe RPC-interfacepakketklasse van nodeo-softwarenodes
eostool/src/client/WalletClient.phpDe RPC-interface-encapsulatieklasse van de walletsoftware KEOSD
eostool/src/client/RpcOutput.phpRPC geeft de resulterende encapsulatieklasse terug
eostool/src/Crypto/PrivateKey.phpEOS private key-klasse
eostool/src/Crypto/PublicKey.phpEOS publieke sleutelklasse
eostool/src/Crypto/Signature.phpEOS-handtekeningklasse
eostool/src/Serializer/AbiType.phpEOS' ABI-type pakketklasse
eostool/src/Serializer/AbiTypeFactory.phpABI-type fabrieksklasse
eostool/src/Serializer/SerialBuffer.phpGeserialiseerde bufferimplementatieklasse
eostool/src/Serializer/Serializer.phpSerializer-implementatieklasse
eostool/src/Signer/Signer.phpSignerinterface
eostool/src/Signer/KeosdSigner.phpKeosd signer implementatieklasse
eostool/src/Signer/LocalSigner.phpLokale offline signerimplementatie
eostool/src/Contract.phpContractklasse
Eostool/SRC/EosTool.phpOntwikkelingspakket instapklasse
eostool/testsCatalogus van eenheidstestcases
eostool/phpunit.xmlEenheidstestprofielen
eostool/leverancierAfhankelijkheidspakketten van derden
eostool/composer.jsonComposer configuratiebestand
2. Toegang tot de nodeserver
Gebruik de NodeClient-klasse om toegang te krijgen tot de rpc-interface van Nodeos. Bijvoorbeeld, de volgende code benadert de get_info-interface van de chain plugin voor een native draaiende Nodeos-node:
2.1 RPC-oproepgroepering

EosTool hanteert een consistente naamgevingsmethode, en de aanroepmethode van NodeClient kan worden afgeleid volgens de API: de API-groepering komt overeen met een eigenschap met dezelfde naam als de NodeClient, en de API komt overeen met een methode die door camelCase is omgezet onder hetzelfde attribuut met dezelfde naam als de groepering van de Client of No. Bijvoorbeeld:



PluginsAPI-groeperingRPC APINodeClient-methode
chain_api_pluginKettingget_info$nc->chain->getInfo()
history_api_pluginGeschiedenisget_transaction$nc->history->getTransaction()
net_api_pluginnetStatus$nc->net->status()
producer_api_pluginProducentget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeToevoegen$nc->dbsize->get()

Officiële documentatie voor RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 RPC Oproepparameters

Voor Nodeos vereisen sommige aanroepen het doorgeven van extra parameters, zoals de get_block interface van de ketenplugin; bij het gebruik van EosTool om een aanroep te maken, organiseer je gewoon de parameters in een bijbehorende array, de voorbeeldcode is als volgt:



2.3 RPC-oproepen retourneren waarden

Het returnresultaat van alle RPC-aanroepen is een RpcOutput-instantie, en het aanroepen van de hasError()-methode kan bepalen of de aanroep fout is, en je kunt verder de getError()-methode gebruiken om foutinformatie te verkrijgen.
De respons van de RPC-aanroep kan worden verkregen via de getResult()-methode, een StdClass-object dat is omgezet van het oorspronkelijke JSON-resultaat, zodat het gemakkelijk attribuutinformatie kan worden geëxtraheerd, zoals:

2.4 Toegang tot mainnet/testnet-knooppunten

Bij het aanmaken van een NodeClient-instantie kunnen extra parameteruitvoeringen worden doorgegeven om de EOS-mainnet- of testnet-nodes te definiëren die toegankelijk zijn. Gebruik bijvoorbeeld de volgende code om toegang te krijgen tot een mainnet-knooppunt:

Of bezoek een node op het Jungle testnet:


3. Toegang krijgen tot de walletserver
De nieuwe versie van Keosd biedt geen RPC API-documentatie meer, wat kan betekenen dat het naar de rand van de EOS-softwarestack is gaan glijden. Je kunt echter de oude versie van de documentatie op dit adres raadplegen:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Gebruik de WalletClient-klasse om toegang te krijgen tot de rpc-interface van Keosd. Bijvoorbeeld, de volgende code benadert de list_wallets-interface van Keosd die native draait:
Omdat de API van Keosd niet langer gegroepeerd is, hangt de bijbehorende RPC-methode direct op het WalletClient-object, wat een verschil is. Net als bij NodeClient geeft de aanroep naar WalletClient een RpcOutput-object terug.

Keosd versie 1.4 gebruikt UNIX-sockets in plaats van HTTP om standaard RPC-interfaces te bieden, wat mogelijk veiliger wordt geacht om IPC te gebruiken aangezien Keosd in de meeste gevallen native draait. Daarom is dit ook de standaard instantieoptie voor WalletClient, en in de meeste gevallen hoeven er geen extra parameters te worden ingevoerd om de WalletClient te instantiëren.

4. Privé- en publieke sleutels

Het sleutelalgoritme van EOS lijkt op Bitcoin, maar met enkele aanpassingen en het definiëren van een eigen formaat.
Gebruik de statische methode van de PrivateKey-klasse new() om een willekeurige privésleutel te genereren. Bijvoorbeeld:
de toEos()-methode wordt gebruikt om private key-objecten om te zetten naar een aangepast formaat voor EOS.

4.1 Afleiding van publieke sleutels
De publieke sleutel kan worden afgeleid van de privésleutel, zoals:


Gebruik evenzo de toEos()-methode om de publieke sleutel om te zetten naar een aangepast formaat voor EOS.

4.2 Import van EOS privésleutels
Je kunt een EOS-geformatteerde privésleutel omzetten in een EosTool PrivateKey-object; bijvoorbeeld, de onderstaande code importeert de gespecificeerde EOS-privésleutel en toont de bijbehorende EOS-publieke sleutel:

4.3 Gezaghebbende handtekening
De sign()-methode van PrivateKey ondersteunt zowel normale handtekeningen als gezaghebbende handtekeningen die vereist zijn door EOS-knooppunten. Bijvoorbeeld, de volgende code geeft een gewone handtekening terug:

Geef extra parameters door om een gezaghebbende handtekening voor de gespecificeerde data te verkrijgen:



5. Serialisatie
EOS vereist dat transacties geserialiseerd worden voordat node push_transaction wordt toegewezen, wat ook een onvermijdelijk onderdeel is van het opereren van EOS-transacties in PHP.
In EosTool wordt de Serializer-klasse gebruikt voor serialisatiebewerkingen. Bijvoorbeeld, de volgende code serialiseert een EOS-overdrachtstransactie in een 16-decimale codestream-formaat dat kan worden ingediend bij een EOS-knooppunt:


De statische methode fromAbi() van Serializer wordt gebruikt om een serializer-instantie te construeren op basis van een gespecificeerde abi, waarna de serialize()-methode van de instantie wordt gebruikt om het gespecificeerde type data te serialiseren en zo een hexadecimale codestroom te verkrijgen.

6. Handtekening
EosTool biedt twee manieren om transacties te ondertekenen: Keosd gebruiken voor ondertekening of een lokale privésleutel.
Gebruik de KeosdSigner-klasse om het ondertekenen te voltooien via de walletserver. Bijvoorbeeld:

Door de LocalSigner-klasse te gebruiken, kun je het gebruik van keosd vermijden en direct offline private key signing gebruiken. Bijvoorbeeld:
gebruik EosTool\Signer\LocalSigner;

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



7. Indiening van de transactie
Een transactiedata moet genormaliseerd, geserialiseerd, ondertekend en verpakt worden door een reeks bewerkingen voordat deze naar de Nodeos-node kan worden gestuurd voor uitzending. De EosTool-klasse biedt de transact()-methode om deze saaie bewerkingen te isoleren.
Bijvoorbeeld, de onderstaande code maakt een EosTool-instantie aan met NodeClient en LocalSigner, en dient vervolgens een transactie in:
Het is handig om de signer bijvoorbeeld te veranderen in KeosdSigner:


8. Een enkele contractprocedure instellen
Gebruik de pushAction()-methode van EosTool om één contractactie aan te roepen. Bijvoorbeeld, de volgende code roept de hi()-methode van het Tommy-accounthostingcontract aan:



9. Het contract uitrollen
Rol het contract uit met behulp van de setContract()-methode van EosTool, bijvoorbeeld:
Geïnteresseerde vrienden kunnen hier terecht:http://t.cn/EUZAODQ




Geplaatst op 11-12-2018 08:59:58 |
Dank je. Heel handig.
 Huisbaas| Geplaatst op 11-12-2018 09:06:52 |

Bedankt voor de steun.
Geplaatst op 11-12-2018 09:11:46 |
Ik heb veel inhoud op uw site gelezen, en ik heb het gevoel dat sommige daarvan vertaalde buitenlandse artikelen zijn
Geplaatst op 11-12-2018 09:32:07 |
Kijk naar bedankt baas dat je rijk bent geworden.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com