Me gusta PHP por su velocidad de desarrollo y excelente portabilidad. Es genial tener una herramienta así en tu bolsillo, siempre lista para resolver problemas.
Para mí fue bastante triste que no hubiera Waves Platform SDK para PHP cuando conocí por primera vez a esta bonita cadena de bloques. Bueno, tuve que escribir ese kit.
Al principio incluso utilicé mis nodos para firmar transacciones. Entonces, para que funcionen 3 direcciones, tuve que ejecutar 3 nodos ... Fue bastante patético, pero resolvió algunas tareas. Hasta que hubo un entendimiento de que confiar en un nodo es un callejón sin salida. En primer lugar debido a la falta de funcionalidad y, en segundo lugar, la API del nodo es lenta (en aquellos días era súper lenta).
Empecé 2 trabajos paralelos. El primero es un explorador de blockchain que debe ser rápido y no depender en absoluto de la API de nodo. El otro es un agregador de todas las funciones necesarias para trabajar con Waves Platform. Así nacieron proyectos como w8io y WavesKit .
El primer paso detrás de las escenas de la cadena de bloques Waves fue w8io explorer . Fue difícil, pero aún así logré escribir un cálculo independiente de todos los saldos e incluso encontré un error en los cálculos en los nodos originales (por cierto, el programa de recompensas de errores funciona, pagan por los errores). Puede obtener más información sobre la funcionalidad de w8io explorer en este tema: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
Cuando terminó, procedí al siguiente paso, pero no pude encontrar bloques de construcción, e incluso para la parte más importante, la criptográfica. Entonces comencé a hacer mis propios paquetes base. Así es como nació ABCode para la codificación base58 (en su mayoría pero en realidad a cualquier alfabeto), Curve25519 para las variantes admitidas de las funciones de signo y verificación ( en las variantes de esteroides ), Blake2b para la función hash (que solo aparece en la biblioteca de sodio en PHP 7.2) etc.
Aquí debería agradecer a Inal Kardanov por un par de consejos que me guiaron a la manera del compositor en lugar del archivo de la vieja escuela.
Un par de meses después, WavesKit salió de la etapa beta y ahora está listo para funcionar con la funcionalidad estándar de la plataforma Waves. Todas las transacciones de mainnet están disponibles para que los usuarios creen, firmen y transmitan fácilmente en el paquete único, que funciona en todas las versiones de PHP de 64 bits a partir de 5.6 inclusive.
Conecte WavesKit a su proyecto:
composer require deemru/waveskit
Ejemplo de uso básico:
use deemru\WavesKit; $wk = new WavesKit( 'T' ); $wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' ); $tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) ); $tx = $wk->ensure( $tx );
En el ejemplo anterior creamos el objeto WavesKit, que funciona en testnet "T". Establecemos el análisis inicial, a partir del cual las claves y la dirección de la clave pública se calculan automáticamente. A continuación, creamos una transacción de transferencia de 0.00000001 Ondas desde la dirección calculada a una dirección con el alias "prueba", pasamos esta transacción para firmar con la función de clave privada calculada y la transmitimos a la red. Después de eso, nos aseguramos de que la transacción sea confirmada con éxito por la red.
Trabajar con transacciones se concentra en funciones con prefijos "tx" . Para una mejor comprensión de cómo trabajar con transacciones, puede estudiar la documentación de WavesKit o consultar de inmediato ejemplos de uso real en pruebas de integración continua .
Como WavesKit evolucionó en casos reales, tiene características avanzadas. En primer lugar, es garantizar la función que se puede utilizar para lograr el nivel de confianza deseado de que su transacción no se perdió, sino que se confirmó y alcanzó el número requerido de confirmaciones.
Otro mecanismo a prueba de balas es cómo interactúa con los nodos. Existe una capacidad interna de respaldo a los nodos de respaldo en caso de errores del nodo principal. Puede configurar una matriz de nodos de respaldo para hacer retroceder. Puede llamar a la función setBestNode para elegir automáticamente el mejor nodo adecuado actualmente basado en la altura más alta y el tiempo de respuesta más corto del nodo. Ahora agregue una mecánica de caché interna y una conexión a su arsenal y podrá sentir la preocupación no solo por los usuarios, sino también por los propietarios de los nodos.
Una de las últimas funciones avanzadas es la función txMonitor . Parecía una necesidad de reaccionar ante las transacciones entrantes en tiempo real. Esta función resuelve completamente todos los problemas relacionados con el procesamiento de transacciones en la cadena de bloques. No más dolores de los desarrolladores, solo configure su función de devolución de llamada y las opciones deseadas y espere a que nuevas transacciones activen sus procesos. Por ejemplo, mi proyecto VECRO se basa completamente en esta función txMonitor, no dude en aprender cómo funciona .
Me gusta el código abierto, este es uno de los mayores logros de la humanidad. Como soy el único desarrollador de este marco y he llegado al punto de que todas mis necesidades están resueltas, le invito a usar y contribuir con WavesKit .