WavesKit - Framework PHP pour travailler avec Waves Platform

J'aime PHP pour la vitesse de développement et une excellente portabilité. C'est génial d'avoir un tel outil dans votre poche, toujours prêt à résoudre les problèmes.


Pour moi, c'était assez triste qu'il n'y avait pas de SDK Waves Platform pour PHP lorsque j'ai rencontré cette belle blockchain pour la première fois. Eh bien, j'ai dû écrire un tel kit.


Au début, j'ai même utilisé mes nœuds pour signer des transactions. Donc, pour que 3 adresses fonctionnent, j'ai dû exécuter 3 nœuds ... C'était assez pathétique, mais cela a résolu certaines tâches. Jusqu'à ce que l'on comprenne que compter sur un nœud est une impasse. Premièrement en raison du manque de fonctionnalités et deuxièmement, l' API de noeud est lente (à l'époque était super lente).


J'ai commencé 2 travaux parallèles. L'un est un explorateur de chaînes de blocs qui doit être rapide et ne pas s'appuyer du tout sur l'API de nœud. L'autre est un agrégateur de toutes les fonctions nécessaires pour travailler avec Waves Platform. C'est ainsi que des projets tels que w8io et WavesKit sont nés.


La première étape dans les coulisses de la blockchain Waves a été w8io explorer . C'était difficile, mais j'ai quand même réussi à écrire un calcul indépendant de tous les soldes et j'ai même trouvé une erreur dans les calculs sur les nœuds d'origine (à propos, le programme de bug-bounty fonctionne, ils paient pour les erreurs). Vous pouvez en savoir plus sur la fonctionnalité de l'explorateur w8io dans cette rubrique: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite


Quand cela a été fait, je suis passé à l'étape suivante, mais je n'ai pas pu trouver de blocs de construction, et même pour la partie la plus importante, la cryptographie. J'ai donc commencé à créer mes propres packages de base. C'est ainsi que sont nés ABCode pour l'encodage base58 (principalement mais n'importe quel alphabet en fait), Curve25519 pour les variantes prises en charge des fonctions de signe et de vérification ( sur les variantes de stéroïdes ), Blake2b pour la fonction de hachage (qui n'apparaît que dans la bibliothèque Sodium en PHP 7.2)) , etc.


Ici, je dois remercier Inal Kardanov pour quelques conseils qui m'ont guidé vers la voie du compositeur au lieu de la vieille école.


Quelques mois plus tard, WavesKit est sorti de la phase bêta et est maintenant prêt à fonctionner avec la fonctionnalité standard de la plateforme Waves. Toutes les transactions du réseau principal sont disponibles pour que les utilisateurs puissent créer, signer et diffuser facilement dans le package unique, qui fonctionne sur toutes les versions 64 bits de PHP à partir de 5.6 inclus.


Connectez WavesKit à votre projet:


composer require deemru/waveskit 

Exemple d'utilisation de base:


 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 ); 

Dans l'exemple ci-dessus, nous créons un objet WavesKit, qui fonctionne dans testnet "T". Nous définissons le pharse de départ, à partir duquel les clés et l'adresse de la clé publique sont calculées automatiquement. Ensuite, nous créons une transaction de transfert de 0,00000001 vagues de l'adresse calculée vers une adresse avec l'alias "test", passons cette transaction pour signer avec la fonction de clé privée calculée et la diffusons sur le réseau. Après cela, nous nous assurons que la transaction est confirmée avec succès par le réseau.


Le travail avec les transactions est concentré dans les fonctions avec des préfixes "tx" . Pour une meilleure compréhension de la façon de travailler avec les transactions, vous pouvez étudier la documentation WavesKit ou vous référer immédiatement à des exemples d'utilisation réels dans des tests d'intégration continue .


Depuis WavesKit évoluait sur des cas réels, il a des fonctionnalités avancées. Tout d'abord, c'est une fonction qui peut être utilisée pour atteindre le niveau de confiance souhaité que votre transaction n'a pas été perdue, mais confirmée et a atteint le nombre requis de confirmations.


Un autre mécanisme à l'épreuve des balles est la façon dont il interagit avec les nœuds. Il existe une capacité interne de secours aux nœuds de sauvegarde en cas d'erreurs du nœud principal. Vous pouvez définir un tableau de nœuds de sauvegarde sur repli. Vous pouvez appeler la fonction setBestNode pour choisir automatiquement le meilleur nœud actuellement approprié en fonction de la hauteur la plus élevée et du temps de réponse le plus court du nœud. Ajoutez maintenant un mécanisme de cache interne et une connexion à son arsenal et vous pouvez ressentir le souci non seulement des utilisateurs, mais aussi des propriétaires de nœuds.


L'une des dernières fonctionnalités avancées est la fonction txMonitor . Il est apparu comme une nécessité de réagir en temps réel aux transactions entrantes. Cette fonction résout complètement tous les problèmes liés au traitement des transactions dans la blockchain. Plus de problème pour les développeurs, définissez simplement votre fonction de rappel et les options souhaitées et attendez que de nouvelles transactions déclenchent vos processus. Par exemple, mon projet VECRO est entièrement basé sur cette fonction txMonitor, n'hésitez pas à apprendre comment cela fonctionne .


J'aime l'open source, c'est l'une des plus grandes réalisations de l'humanité. Étant donné que je suis le seul développeur de ce framework et que je suis arrivé au point que tous mes besoins sont résolus, je vous invite à utiliser et à contribuer à WavesKit .

Source: https://habr.com/ru/post/fr446112/


All Articles