Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 9838|Respuesta: 4

Kit de desarrollo EOS Blockchain PHP

[Copiar enlace]
Publicado en 11/12/2018 8:56:36 | | |
Esta publicación fue editada por última vez por jimi2018 el 11-12-2018 09:06

1. Resumen del paquete de desarrollo
El propósito de EosTool es eliminar el dolor de desarrollar aplicaciones blockchain EOS usando PHP, tales como:
  • Llama a sus funciones a través de la interfaz RPC de Nodeos y Keosd
  • Generar claves privadas y públicas en formato EOS sin conexión
  • Utiliza tu clave privada local para generar firmas de transacciones compatibles con EOS
  • Serializar objetos de transacción al formato packed_trx requerido por Nodeos
Se puede considerar que EosTool es una versión PHP de eosjs, que puede usarse para implementar completamente las funciones del cliente oficial de EOS Cleos, y también puede añadirse fácilmente al soporte de la blockchain EOS en aplicaciones PHP, mejorando enormemente la eficiencia del desarrollo.

Los amigos interesados también pueden acceder directamente a este para descargar el kit de desarrollo EOS blockchain PHP:http://t.cn/EUZAODQ

EosTool funciona en un entorno Php 7.1+, la versión actual es la 1.0.0, y la lista de archivos de código principales es la siguiente:

Archivos de códigoilustrar
eostool/src/client/NodeClient.phpLa clase de paquete de interfaz RPC de node software nodeos
eostool/src/client/WalletClient.phpLa clase de encapsulación de interfaz RPC del software de cartera KEOSD
eostool/src/client/RpcOutput.phpRPC devuelve la clase de encapsulación resultante
eostool/src/Crypto/PrivateKey.phpClase de clave privada EOS
eostool/src/Crypto/PublicKey.phpClase de clave pública EOS
eostool/src/Crypto/Signature.phpClase de firma EOS
eostool/src/Serializer/AbiType.phpClase de paquete tipo ABI de EOS
eostool/src/Serializer/AbiTypeFactory.phpClase de fábrica tipo ABI
eostool/src/Serializer/SerialBuffer.phpClase de implementación de búfer serializada
eostool/src/Serializer/Serializer.phpClase de implementación Serializer
eostool/src/Signer/Signer.phpInterfaz signer
eostool/src/Signer/KeosdSigner.phpClase de implementación Keosd signer
eostool/src/Signer/LocalSigner.phpImplementación local de signantes offline
eostool/src/Contract.phpClase de contrato
eostool/src/EosTool.phpClase de entrada de paquete de desarrollo
eostool/pruebasCatálogo de casos de prueba unitaria
eostool/phpunit.xmlPerfiles de pruebas unitarias
eostool/proveedorPaquetes de dependencias de terceros
eostool/composer.jsonArchivo de configuración del compositor
2. Acceder al servidor nodo
Utiliza la clase NodeClient para acceder a la interfaz rpc de Nodeos. Por ejemplo, el siguiente código accede a la interfaz get_info del plugin de cadena para un nodo Nodeos que se ejecuta de forma nativa:
2.1 Agrupación de llamadas RPC

EosTool adopta un método de nomenclatura consistente, y el método de llamada de NodeClient puede inferirse según la API: el agrupamiento de la API corresponde a una propiedad con el mismo nombre que NodeClient, y la API corresponde a un método convertido por camelCase bajo el mismo atributo del mismo nombre que el agrupamiento del Cliente de No. Por ejemplo:



PluginsAgrupación de APIsRPC APIMétodo NodeClient
chain_api_pluginCadenaget_info$nc->cadena->getInfo()
history_api_pluginHistoriaget_transaction$nc->history->getTransaction()
net_api_pluginnetoEstado$nc->net->status()
producer_api_pluginProductorget_runtime_options$nc->productor->getRunTimeOptions()
dbsize_api_plugindbsizeObtener$nc->dbsize->get()

Documentación oficial de la API RPC:https://developers.eos.io/eosio-nodeos/reference

2.2 Parámetros de llamada RPC

Para Nodeos, algunas llamadas requieren pasar parámetros adicionales, como la interfaz de get_block del plugin de cadena; al usar EosTool para realizar una llamada, basta con organizar los parámetros en un array asociado, el código de ejemplo es el siguiente:



2.3 Las llamadas RPC devuelven valores

El resultado de retorno de todas las llamadas RPC es una instancia de RpcOutput, y llamar a su método hasError() puede determinar si la llamada es incorrecta, y además puedes usar el método getError() para obtener información de error.
La respuesta de la llamada RPC puede obtenerse mediante el método getResult(), que es un objeto StdClass convertido a partir del resultado JSON original, por lo que puede extraerse fácilmente información de los atributos, como:

2.4 Acceso a nodos mainnet/testnet

Al crear una instancia NodeClient, se pueden pasar ejecuciones adicionales de parámetros para definir los nodos de mainnet o de prueba de EOS a los que acceder. Por ejemplo, utiliza el siguiente código para acceder a un nodo de mainnet:

O visita un nodo en la red de pruebas de Jungle:


3. Acceder al servidor de cartera
La nueva versión de Keosd ya no proporciona documentación de la API RPC, lo que podría significar que ha empezado a desplazarse hacia el límite en la pila de software EOS. Sin embargo, puedes acceder a la versión antigua de la documentación en esta dirección:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Utiliza la clase WalletClient para acceder a la interfaz rpc de Keosd. Por ejemplo, el siguiente código accede a la interfaz list_wallets de Keosd que se ejecuta de forma nativa:
Como la API de Keosd ya no está agrupada, el método RPC correspondiente queda directamente colgado del objeto WalletClient, lo cual es una diferencia significativa. Al igual que NodeClient, la llamada a WalletClient devuelve un objeto RpcOutput.

La versión 1.4 de Keosd utiliza sockets UNIX en lugar de HTTP para proporcionar interfaces RPC por defecto, lo que puede considerarse más seguro para usar IPC dado que en la mayoría de los casos Keosd funciona de forma nativa. Por lo tanto, esta es también la opción predeterminada de instanciación para WalletClient y, en la mayoría de los casos, no es necesario pasar parámetros adicionales para instanciar el WalletClient.

4. Claves privadas y públicas

El algoritmo clave de EOS es similar al de Bitcoin, pero con algunos ajustes y definiendo su propio formato.
Utiliza el método estático de la clase PrivateKey new() para generar una clave privada aleatoria. Por ejemplo:
el método toEos() se utiliza para convertir objetos clave privada en un formato personalizado para EOS.

4.1 Derivación de clave pública
La clave pública puede derivarse de la clave privada, tales como:


De manera similar, utiliza el método toEos() para convertir la clave pública a un formato personalizado para EOS.

4.2 Importar claves privadas EOS
Puedes convertir una clave privada con formato EOS en un objeto EosTool PrivateKey, por ejemplo, el código de abajo importa la clave privada EOS especificada y muestra su correspondiente clave pública EOS:

4.3 Firma autorizada
El método sign() de PrivateKey soporta tanto firmas normales como firmas autorizadas requeridas por los nodos EOS. Por ejemplo, el siguiente código devuelve una firma simple:

Introduce parámetros adicionales para obtener una firma autorizada para los datos especificados:



5. Serialización
EOS requiere que las transacciones se serializen antes de comprometer el push_transaction de nodo, lo que también es una parte inevitable de operar transacciones EOS en PHP.
En EosTool, la clase Serializer se utiliza para operaciones de serialización. Por ejemplo, el siguiente código serializa una transacción de transferencia EOS en un formato de flujo de código de 16 decimales que puede enviarse a un nodo EOS:


El método estático fromAbi() de Serializer se utiliza para construir una instancia de serializer basada en un abi especificado, y luego el método serialize() de la instancia se emplea para serializar el tipo de datos especificado y obtener un flujo de código hexadecimal.

6. Firma
EosTool ofrece dos formas de firmar transacciones: usando Keosd para firmar o usando una clave privada local.
Utiliza la clase KeosdSigner para completar la firma usando el servidor de cartera. Por ejemplo:

Al usar la clase LocalSigner, puedes evitar usar keosd y usar directamente la firma de claves privadas offline. Por ejemplo:
usa EosTool\Signer\LocalSigner;

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



7. Presentación de transacciones
Un dato de transacción debe ser normalizado, serializado, firmado y empaquetado mediante una serie de operaciones antes de poder ser enviado al nodo Nodeos para su difusión. La clase EosTool proporciona el método transact() para aislar estas tediosas operaciones.
Por ejemplo, el código siguiente crea una instancia de EosTool usando NodeClient y LocalSigner, y luego envía una transacción:
Es conveniente cambiar el signante a KeosdSigner, por ejemplo:


8. Invocar una acción contractual única
Utiliza el método pushAction() de EosTool para llamar a una única acción contractual. Por ejemplo, el siguiente código llama al método hi() del contrato de alojamiento de la cuenta Tommy:



9. Desplegar el contrato
Despliega el contrato usando el método setContract() de EosTool, por ejemplo:
Los amigos interesados pueden ir aquí:http://t.cn/EUZAODQ




Publicado en 11/12/2018 8:59:58 |
Gracias. Muy útil.
 Propietario| Publicado en 11/12/2018 9:06:52 |

Gracias por el apoyo.
Publicado en 11/12/2018 9:11:46 |
He leído mucho contenido en tu sitio y siento que algunos de ellos son artículos extranjeros traducidos
Publicado en 11/12/2018 9:32:07 |
Mira, gracias jefe, por hacerte rico
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com