Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 9838|Jawab: 4

Kit Pengembangan PHP EOS Blockchain

[Salin tautan]
Diposting pada 11/12/2018 08.56.36 | | |
Posting ini terakhir diedit oleh jimi2018 pada 2018-12-11 09:06

1. Ikhtisar paket pengembangan
Tujuan dari EosTool adalah untuk menghilangkan rasa sakit dalam mengembangkan aplikasi blockchain EOS menggunakan PHP, seperti:
  • Panggil fungsinya melalui antarmuka RPC Nodeos dan Keosd
  • Hasilkan kunci pribadi dan publik dalam format EOS secara offline
  • Gunakan kunci pribadi lokal Anda untuk menghasilkan tanda tangan transaksi yang sesuai dengan EOS
  • Serialisasi objek transaksi ke dalam format packed_trx yang diperlukan oleh Nodeos
Dapat dianggap bahwa EosTool adalah versi PHP dari eosjs, yang dapat digunakan untuk sepenuhnya mengimplementasikan fungsi klien resmi EOS Cleos, dan juga dapat dengan mudah ditambahkan ke dukungan blockchain EOS dalam aplikasi PHP, sangat meningkatkan efisiensi pengembangan.

Teman-teman yang tertarik juga dapat langsung ke sini untuk mengunduh kit pengembangan EOS blockchain PHP:http://t.cn/EUZAODQ

EosTool berjalan di lingkungan Php 7.1+, versi saat ini adalah 1.0.0, dan daftar file kode utama adalah sebagai berikut:

File kodeMenggambarkan
eostool/src/klien/NodeClient.phpKelas paket antarmuka RPC dari nodeo perangkat lunak node
eostool/src/klien/WalletClient.phpKelas enkapsulasi antarmuka RPC dari perangkat lunak dompet KEOSD
eostool/src/klien/RpcOutput.phpRPC mengembalikan kelas enkapsulasi yang dihasilkan
eostool/src/Crypto/PrivateKey.phpKelas kunci pribadi EOS
eostool/src/Crypto/PublicKey.phpKelas kunci publik EOS
eostool/src/Crypto/Signature.phpKelas tanda tangan EOS
eostool/src/Serializer/AbiType.phpKelas paket tipe ABI EOS
eostool/src/Serializer/AbiTypeFactory.phpKelas pabrik tipe ABI
eostool/src/Serializer/SerialBuffer.phpKelas implementasi buffer berseri
eostool/src/Serializer/Serializer.phpKelas Implementasi Serializer
eostool/src/Penandatangan/Signer.phpAntarmuka penanda tangan
eostool/src/Penandatangan/KeosdSigner.phpKelas implementasi penanda tangan Keosd
eostool/src/Penandatangan/LocalSigner.phpPenerapan penanda tangan offline lokal
EOSTOOL/SRC/Contract.phpKelas kontrak
EOSTOOL/SRC/EosTool.phpKelas entri paket pengembangan
EOSTOOL/tesKatalog kasus uji unit
EOSTOOL/phpunit.xmlProfil uji unit
eostool/vendorPaket dependensi pihak ketiga
eostool/composer.jsonfile konfigurasi komposer
2. Akses server node
Gunakan kelas NodeClient untuk mengakses antarmuka rpc nodeos. Misalnya, kode berikut mengakses antarmuka get_info plugin rantai untuk simpul Nodeos yang berjalan secara asli:
2.1 Pengelompokan panggilan RPC

EosTool mengadopsi metode penamaan yang konsisten, dan metode panggilan NodeClient dapat disimpulkan sesuai dengan API: pengelompokan API sesuai dengan properti dengan nama yang sama dengan NodeClient, dan API sesuai dengan metode yang dikonversi oleh camelCase di bawah atribut yang sama dengan nama yang sama dengan pengelompokan Klien No. Sebagai contoh:



PluginPengelompokan APIRPC APIMetode NodeClient
chain_api_pluginrantaiget_info$nc->chain->getInfo()
history_api_pluginSejarahget_transaction$nc->history->getTransaction()
net_api_pluginbersihStatus$nc->net->status()
producer_api_pluginprodusenget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizedapatkan$nc->dbsize->get()

Dokumentasi resmi untuk RPC API:https://developers.eos.io/eosio-nodeos/reference

2.2 Parameter Panggilan RPC

Untuk Nodeos, beberapa panggilan memerlukan meneruskan parameter tambahan, seperti antarmuka get_block dari plugin rantai, saat menggunakan EosTool untuk melakukan panggilan, cukup atur parameter ke dalam array terkait, kode sampelnya adalah sebagai berikut:



2.3 RPC memanggil nilai pengembalian

Hasil yang ditampilkan dari semua panggilan RPC adalah instans RpcOutput, dan memanggil metode hasError() dapat menentukan apakah panggilan salah, dan Anda dapat menggunakan metode getError() untuk mendapatkan informasi kesalahan.
Respons panggilan RPC dapat diperoleh melalui metode getResult(), yang merupakan objek StdClass yang dikonversi dari hasil JSON asli, sehingga dapat dengan mudah diekstraksi informasi atribut, seperti:

2.4 Akses ke node mainnet/testnet

Saat membuat instans NodeClient, eksekusi parameter tambahan dapat diteruskan untuk menentukan node mainnet atau testnet EOS yang akan diakses. Misalnya, gunakan kode berikut untuk mengakses simpul mainnet:

Atau kunjungi node di testnet Jungle:


3. Akses server dompet
Versi baru Keosd tidak lagi menyediakan dokumentasi API RPC, yang mungkin berarti bahwa Keosd telah mulai meluncur ke tepi dalam tumpukan perangkat lunak EOS. Namun, Anda dapat mengakses versi lama dokumentasi di alamat ini:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Gunakan kelas WalletClient untuk mengakses antarmuka rpc Keosd. Misalnya, kode berikut mengakses antarmuka list_wallets Keosd yang berjalan secara native:
Karena API Keosd tidak lagi dikelompokkan, metode yang sesuai dengan RPC langsung digantung pada objek WalletClient, yang merupakan perbedaan. Seperti NodeClient, panggilan ke WalletClient mengembalikan objek RpcOutput.

Keosd versi 1.4 menggunakan soket UNIX alih-alih HTTP untuk menyediakan antarmuka RPC secara default, yang mungkin dianggap lebih aman untuk menggunakan IPC mengingat dalam banyak kasus Keosd berjalan secara asli. Oleh karena itu, ini juga merupakan opsi instansiasi default untuk WalletClient, dan dalam banyak kasus, tidak ada parameter tambahan yang perlu diteruskan untuk membuat instance WalletClient.

4. Kunci pribadi dan publik

Algoritma utama EOS mirip dengan Bitcoin, tetapi dengan beberapa penyesuaian dan mendefinisikan formatnya sendiri.
Gunakan metode statis kelas PrivateKey new() untuk menghasilkan kunci pribadi acak. Sebagai contoh:
Metode toEos() digunakan untuk mengonversi objek kunci pribadi menjadi format khusus untuk EOS.

4.1 Derivasi Kunci Publik
Kunci publik dapat diturunkan dari kunci privat, seperti:


Demikian pula, gunakan metode toEos() untuk mengonversi kunci publik ke format khusus untuk EOS.

4.2 Impor Kunci Pribadi EOS
Anda dapat mengonversi kunci pribadi berformat EOS menjadi objek EosTool PrivateKey, misalnya, kode di bawah ini mengimpor kunci privat EOS yang ditentukan dan menampilkan kunci publik EOS yang sesuai:

4.3 Tanda tangan otoritatif
Metode sign() PrivateKey mendukung tanda tangan normal dan tanda tangan otoritatif yang diperlukan oleh node EOS. Misalnya, kode berikut mengembalikan tanda tangan biasa:

Berikan parameter tambahan untuk mendapatkan tanda tangan otoritatif untuk data yang ditentukan:



5. Serialisasi
EOS mengharuskan transaksi diserialkan sebelum melakukan push_transaction node, yang juga merupakan bagian yang tidak dapat dihindari dari operasi transaksi EOS dalam PHP.
Di EosTool, kelas Serializer digunakan untuk operasi serialisasi. Misalnya, kode berikut menserialkan transaksi transfer EOS ke dalam format codestream 16 desimal yang dapat dikirimkan ke node EOS:


Metode statis fromAbi() dari Serializer digunakan untuk membuat instans serializer berdasarkan abi yang ditentukan, dan kemudian metode serialize() dari instans digunakan untuk menserialkan jenis data yang ditentukan untuk mendapatkan aliran kode heksadesimal.

6. Tanda tangan
EosTool menyediakan dua cara untuk menandatangani transaksi: menggunakan Keosd untuk menandatangani atau menggunakan kunci pribadi lokal.
Gunakan kelas KeosdSigner untuk menyelesaikan penandatanganan menggunakan server dompet. Sebagai contoh:

Dengan menggunakan kelas LocalSigner, Anda dapat menghindari penggunaan keosd dan langsung menggunakan penandatanganan kunci pribadi offline. Sebagai contoh:
menggunakan EosTool\Signer\LocalSigner;

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



7. Pengajuan Transaksi
Data transaksi perlu dinormalisasi, diserialisasikan, ditandatangani, dan dikemas melalui serangkaian operasi sebelum dapat dikirimkan ke simpul Nodeos untuk disiarkan. Kelas EosTool menyediakan metode transact() untuk mengisolasi operasi yang membosankan ini.
Misalnya, kode di bawah ini membuat instans EosTool menggunakan NodeClient dan LocalSigner, lalu mengirimkan transaksi:
Lebih mudah untuk mengubah penanda tangan ke KeosdSigner, misalnya:


8. Memanggil satu tindakan kontrak
Gunakan metode pushAction() EosTool untuk memanggil satu tindakan kontrak. Misalnya, kode berikut memanggil metode hi() dari kontrak hosting akun Tommy:



9. Terapkan kontrak
Sebarkan kontrak menggunakan metode setContract() EosTool, misalnya:
Teman-teman yang tertarik dapat pergi ke sini:http://t.cn/EUZAODQ




Diposting pada 11/12/2018 08.59.58 |
Terima kasih Sangat berguna
 Tuan tanah| Diposting pada 11/12/2018 09.06.52 |

Terima kasih atas dukungannya.
Diposting pada 11/12/2018 09.11.46 |
Saya telah membaca banyak konten di situs Anda, dan saya merasa bahwa beberapa di antaranya adalah artikel asing yang diterjemahkan
Diposting pada 11/12/2018 09.32.07 |
Lihatlah terima kasih bos karena menjadi kaya
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com