Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 9838|Απάντηση: 4

Κιτ ανάπτυξης EOS Blockchain PHP

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 11/12/2018 8:56:36 π.μ. | | |
Αυτή η ανάρτηση επεξεργάστηκε τελευταία φορά από το χρήστη jimi2018 στις 2018-12-11 09:06

1. Επισκόπηση του πακέτου ανάπτυξης
Ο σκοπός του EosTool είναι να εξαλείψει τον πόνο της ανάπτυξης εφαρμογών blockchain EOS με χρήση PHP, όπως:
  • Καλέστε τις λειτουργίες του μέσω της διεπαφής RPC των Nodeos και Keosd
  • Δημιουργήστε ιδιωτικά και δημόσια κλειδιά σε μορφή EOS εκτός σύνδεσης
  • Χρησιμοποιήστε το τοπικό ιδιωτικό κλειδί σας για να δημιουργήσετε υπογραφές συναλλαγών συμβατές με το EOS
  • Σειριοποιήστε τα αντικείμενα συναλλαγών στη μορφή packed_trx που απαιτείται από το Nodeos
Μπορεί να θεωρηθεί ότι το EosTool είναι μια έκδοση PHP του eosjs, η οποία μπορεί να χρησιμοποιηθεί για την πλήρη υλοποίηση των λειτουργιών του επίσημου πελάτη EOS Cleos και μπορεί επίσης να προστεθεί εύκολα στην υποστήριξη του blockchain EOS σε εφαρμογές PHP, βελτιώνοντας σημαντικά την αποτελεσματικότητα ανάπτυξης.

Οι ενδιαφερόμενοι φίλοι μπορούν επίσης να μεταβούν απευθείας σε αυτό για να κατεβάσουν το κιτ ανάπτυξης EOS blockchain PHP:http://t.cn/EUZAODQ

Το EosTool εκτελείται σε περιβάλλον Php 7.1+, η τρέχουσα έκδοση είναι 1.0.0 και η λίστα των κύριων αρχείων κώδικα έχει ως εξής:

Αρχεία κώδικαδιευκρινίζω
eostool/src/πελάτης/NodeClient.phpΗ κλάση πακέτων διασύνδεσης RPC των κόμβων λογισμικού κόμβων
eostool/src/πελάτης/WalletClient.phpΗ κλάση ενθυλάκωσης διεπαφής RPC του λογισμικού πορτοφολιού KEOSD
eostool/src/πελάτης/RpcOutput.phpΤο RPC επιστρέφει την προκύπτουσα κλάση ενθυλάκωσης
eostool/src/Crypto/PrivateKey.phpΚατηγορία ιδιωτικού κλειδιού EOS
eostool/src/Crypto/PublicKey.phpΚατηγορία δημόσιου κλειδιού EOS
eostool/src/Crypto/Signature.phpΚλάση υπογραφής EOS
eostool/src/Serializer/AbiType.phpΗ κατηγορία πακέτων τύπου ABI της EOS
eostool/src/Serializer/AbiTypeFactory.phpΕργοστασιακή κατηγορία τύπου ABI
eostool/src/Serializer/SerialBuffer.phpΚλάση υλοποίησης σειριακού buffer
eostool/src/Serializer/Serializer.phpκλάση υλοποίησης serializer
eostool/src/Υπογράφων/Signer.phpΔιεπαφή υπογράφοντος
eostool/src/Υπογράφων/KeosdSigner.phpΚλάση υλοποίησης υπογράφοντος Keosd
eostool/src/Υπογράφων/LocalSigner.phpΕφαρμογή τοπικού υπογράφοντος εκτός σύνδεσης
eostool/src/Contract.phpΚατηγορία συμβολαίου
eostool/src/EosTool.phpΚατηγορία εισόδου πακέτου ανάπτυξης
EOSTOOL/ΕξετάσειςΚατάλογος δοκιμαστικών περιπτώσεων μονάδας
eostool/phpunit.xmlΠροφίλ δοκιμής μονάδας
eostool/προμηθευτήςΠακέτα εξάρτησης τρίτων
eostool/composer.jsonΑρχείο διαμόρφωσης συνθέτη
2. Πρόσβαση στον διακομιστή κόμβου
Χρησιμοποιήστε την κλάση NodeClient για να αποκτήσετε πρόσβαση στη διεπαφή rpc των nodeos. Για παράδειγμα, ο ακόλουθος κώδικας αποκτά πρόσβαση στη διεπαφή get_info της προσθήκης αλυσίδας για έναν κόμβο Nodeos που εκτελείται εγγενώς:
2.1 Ομαδοποίηση κλήσεων RPC

Το EosTool υιοθετεί μια συνεπή μέθοδο ονομασίας και η μέθοδος κλήσης του NodeClient μπορεί να συναχθεί σύμφωνα με το API: η ομαδοποίηση API αντιστοιχεί σε μια ιδιότητα με το ίδιο όνομα με το NodeClient και το API αντιστοιχεί σε μια μέθοδο που μετατρέπεται από το camelCase με το ίδιο χαρακτηριστικό του ίδιου ονόματος με την ομαδοποίηση του Πελάτη του Όχι. Για παράδειγμα:



ΠρόσθεταΟμαδοποίηση APIRPC APIΜέθοδος NodeClient
chain_api_pluginΑλυσίδαget_info$nc->chain->getInfo()
history_api_pluginΙστορίαget_transaction$nc->history->getTransaction()
net_api_pluginκαθαράΚατάσταση$nc->net->status()
producer_api_pluginΠαραγωγόςget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbμέγεθοςπαίρνω$nc->dbsize->get()

Επίσημη τεκμηρίωση για το RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 Παράμετροι κλήσης RPC

Για το Nodeos, ορισμένες κλήσεις απαιτούν τη μετάδοση πρόσθετων παραμέτρων, όπως η διεπαφή get_block της προσθήκης αλυσίδας, όταν χρησιμοποιείτε το EosTool για να πραγματοποιήσετε μια κλήση, απλώς οργανώστε τις παραμέτρους σε έναν συσχετισμένο πίνακα, το δείγμα κώδικα έχει ως εξής:



2.3 Οι κλήσεις RPC επιστρέφουν τιμές

Το αποτέλεσμα επιστροφής όλων των κλήσεων RPC είναι μια παρουσία RpcOutput και η κλήση της μεθόδου hasError() μπορεί να προσδιορίσει εάν η κλήση είναι λανθασμένη και μπορείτε να χρησιμοποιήσετε περαιτέρω τη μέθοδο getError() για να λάβετε πληροφορίες σφάλματος.
Η απόκριση της κλήσης RPC μπορεί να ληφθεί μέσω της μεθόδου getResult(), η οποία είναι ένα αντικείμενο StdClass που έχει μετατραπεί από το αρχικό αποτέλεσμα JSON, ώστε να μπορούν εύκολα να εξαχθούν πληροφορίες χαρακτηριστικών, όπως:

2.4 Πρόσβαση σε κόμβους mainnet/testnet

Κατά τη δημιουργία μιας παρουσίας NodeClient, μπορούν να μεταβιβαστούν πρόσθετες εκτελέσεις παραμέτρων για τον καθορισμό των κόμβων του κεντρικού δικτύου EOS ή του δοκιμαστικού δικτύου για πρόσβαση. Για παράδειγμα, χρησιμοποιήστε τον ακόλουθο κώδικα για να αποκτήσετε πρόσβαση σε έναν κόμβο mainnet:

Ή επισκεφτείτε έναν κόμβο στο δοκιμαστικό δίκτυο Jungle:


3. Πρόσβαση στον διακομιστή πορτοφολιού
Η νέα έκδοση του Keosd δεν παρέχει πλέον τεκμηρίωση RPC API, πράγμα που μπορεί να σημαίνει ότι έχει αρχίσει να ολισθαίνει στην άκρη στη στοίβα λογισμικού EOS. Ωστόσο, μπορείτε να αποκτήσετε πρόσβαση στην παλιά έκδοση της τεκμηρίωσης σε αυτήν τη διεύθυνση:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Χρησιμοποιήστε την κλάση WalletClient για να αποκτήσετε πρόσβαση στη διεπαφή rpc του Keosd. Για παράδειγμα, ο ακόλουθος κώδικας έχει πρόσβαση στη διεπαφή list_wallets του Keosd που εκτελείται εγγενώς:
Δεδομένου ότι το API του Keosd δεν είναι πλέον ομαδοποιημένο, η αντίστοιχη μέθοδος RPC είναι απευθείας αναρτημένη στο αντικείμενο WalletClient, κάτι που είναι μια διαφορά. Όπως το NodeClient, η κλήση στο WalletClient επιστρέφει ένα αντικείμενο RpcOutput.

Η έκδοση 1.4 του Keosd χρησιμοποιεί υποδοχές UNIX αντί για HTTP για την παροχή διεπαφών RPC από προεπιλογή, οι οποίες μπορεί να θεωρηθούν ασφαλέστερες για χρήση IPC, δεδομένου ότι στις περισσότερες περιπτώσεις το Keosd εκτελείται εγγενώς. Επομένως, αυτή είναι επίσης η προεπιλεγμένη επιλογή δημιουργίας για το WalletClient και στις περισσότερες περιπτώσεις, δεν χρειάζεται να μεταβιβαστούν πρόσθετες παράμετροι για τη δημιουργία του WalletClient.

4. Ιδιωτικά και δημόσια κλειδιά

Ο βασικός αλγόριθμος του EOS είναι παρόμοιος με το Bitcoin, αλλά με κάποιες τροποποιήσεις και ορίζοντας τη δική του μορφή.
Χρησιμοποιήστε τη στατική μέθοδο της κλάσης PrivateKey new() για να δημιουργήσετε ένα τυχαίο ιδιωτικό κλειδί. Για παράδειγμα:
Η μέθοδος toEos() χρησιμοποιείται για τη μετατροπή αντικειμένων ιδιωτικού κλειδιού σε προσαρμοσμένη μορφή για EOS.

4.1 Παραγωγή δημόσιου κλειδιού
Το δημόσιο κλειδί μπορεί να προέρχεται από το ιδιωτικό κλειδί, όπως:


Ομοίως, χρησιμοποιήστε τη μέθοδο toEos() για να μετατρέψετε το δημόσιο κλειδί σε προσαρμοσμένη μορφή για το EOS.

4.2 Εισαγωγή ιδιωτικών κλειδιών EOS
Μπορείτε να μετατρέψετε ένα ιδιωτικό κλειδί με μορφοποίηση EOS σε αντικείμενο EosTool PrivateKey, για παράδειγμα, ο παρακάτω κώδικας εισάγει το καθορισμένο ιδιωτικό κλειδί EOS και εμφανίζει το αντίστοιχο δημόσιο κλειδί EOS:

4.3 Έγκυρη υπογραφή
Η μέθοδος sign() του PrivateKey υποστηρίζει τόσο κανονικές υπογραφές όσο και έγκυρες υπογραφές που απαιτούνται από τους κόμβους EOS. Για παράδειγμα, ο ακόλουθος κώδικας επιστρέφει μια απλή υπογραφή:

Μεταβιβάστε πρόσθετες παραμέτρους για να αποκτήσετε μια έγκυρη υπογραφή για τα καθορισμένα δεδομένα:



5. Σειριοποίηση
Το EOS απαιτεί τη σειριοποίηση των συναλλαγών πριν από τη δέσμευση push_transaction κόμβου, κάτι που αποτελεί επίσης αναπόφευκτο μέρος της λειτουργίας των συναλλαγών EOS σε PHP.
Στο EosTool, η κλάση Serializer χρησιμοποιείται για λειτουργίες σειριοποίησης. Για παράδειγμα, ο ακόλουθος κώδικας σειριοποιεί μια συναλλαγή μεταφοράς EOS σε μορφή ροής κώδικα 16 δεκαδικών ψηφίων που μπορεί να υποβληθεί σε έναν κόμβο EOS:


Η στατική μέθοδος fromAbi() του Serializer χρησιμοποιείται για την κατασκευή μιας παρουσίας σειριοποιητή με βάση ένα καθορισμένο abi και, στη συνέχεια, η μέθοδος serialize() της παρουσίας χρησιμοποιείται για τη σειριοποίηση του καθορισμένου τύπου δεδομένων για τη λήψη μιας δεκαεξαδικής ροής κώδικα.

6. Υπογραφή
Το EosTool παρέχει δύο τρόπους υπογραφής συναλλαγών: χρησιμοποιώντας το Keosd για υπογραφή ή χρησιμοποιώντας ένα τοπικό ιδιωτικό κλειδί.
Χρησιμοποιήστε την κλάση KeosdSigner για να ολοκληρώσετε την υπογραφή χρησιμοποιώντας τον διακομιστή πορτοφολιού. Για παράδειγμα:

Χρησιμοποιώντας την κλάση LocalSigner, μπορείτε να αποφύγετε τη χρήση του keosd και να χρησιμοποιήσετε απευθείας την υπογραφή ιδιωτικού κλειδιού εκτός σύνδεσης. Για παράδειγμα:
χρησιμοποιήστε το EosTool\Signer\LocalSigner.

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = νέο LocalSigner($prvKeys);
$signatures = $signer->σύμβολο($tx,$pubKeys,$chainId);



7. Υποβολή Συναλλαγής
Τα δεδομένα μιας συναλλαγής πρέπει να κανονικοποιηθούν, να σειριοποιηθούν, να υπογραφούν και να συσκευαστούν μέσω μιας σειράς λειτουργιών προτού υποβληθούν στον κόμβο Nodeos για μετάδοση. Η κλάση EosTool παρέχει τη μέθοδο transact() για την απομόνωση αυτών των κουραστικών λειτουργιών.
Για παράδειγμα, ο παρακάτω κώδικας δημιουργεί μια παρουσία EosTool χρησιμοποιώντας το NodeClient και το LocalSigner και, στη συνέχεια, υποβάλλει μια συναλλαγή:
Είναι βολικό να αλλάξετε τον υπογράφοντα σε KeosdSigner, για παράδειγμα:


8. Επικαλεστείτε μια ενιαία συμβατική αγωγή
Χρησιμοποιήστε τη μέθοδο pushAction() του EosTool για να καλέσετε μια ενέργεια μεμονωμένου συμβολαίου. Για παράδειγμα, ο ακόλουθος κώδικας καλεί τη μέθοδο hi() του συμβολαίου φιλοξενίας λογαριασμού Tommy:



9. Αναπτύξτε τη σύμβαση
Αναπτύξτε τη σύμβαση χρησιμοποιώντας τη μέθοδο setContract() του EosTool, για παράδειγμα:
Οι ενδιαφερόμενοι φίλοι μπορούν να πάνε εδώ:http://t.cn/EUZAODQ




Δημοσιεύτηκε στις 11/12/2018 8:59:58 π.μ. |
Ευχαριστώ Πολύ χρήσιμο
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 11/12/2018 9:06:52 π.μ. |
Δημοσιεύτηκε στις 2018-12-11 08:59
Ευχαριστώ Πολύ χρήσιμο

Σας ευχαριστούμε για την υποστήριξη.
Δημοσιεύτηκε στις 11/12/2018 9:11:46 π.μ. |
Έχω διαβάσει πολύ περιεχόμενο στον ιστότοπό σας και πιστεύω ότι μερικά από αυτά είναι μεταφρασμένα ξένα άρθρα
Δημοσιεύτηκε στις 11/12/2018 9:32:07 π.μ. |
Κοίτα ευχαριστώ αφεντικό που πλούτισες
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com