J'aime pour la rapiditĂ© de dĂ©veloppement et une excellente portabilitĂ©. C'est trĂšs bien d'avoir toujours dans sa poche un outil prĂȘt Ă rĂ©soudre des problĂšmes.
C'Ă©tait assez dĂ©cevant, lors de ma dĂ©couverte de la blockchain nationale qu'il n'y avait pas de SDK PHP prĂȘt Ă l'emploi dans son arsenal. Eh bien, j'ai dĂ» l'Ă©crire.
Au dĂ©but, j'avais besoin d'utiliser pour signer des transactions. Ainsi, pour gĂ©rer trois adresses, je devais exĂ©cuter trois nĆuds⊠C'Ă©tait un spectacle pitoyable, bien que cela rĂ©solvait certains problĂšmes. Jusqu'Ă ce que je comprenne qu'il ne fallait pas compter sur les nĆuds â c'est une impasse. PremiĂšrement, Ă cause de la fonctionnalitĂ© limitĂ©e, , deuxiĂšmement, Ă cause de la vitesse (Ă l'Ă©poque, les nĆuds Ă©taient trĂšs lents).
J'ai commencĂ© deux travaux parallĂšles. L'un Ă©tait de crĂ©er un explorateur de blockchain, qui serait rapide et totalement indĂ©pendant des API des nĆuds. Le second Ă©tait de rassembler toutes les fonctions pour travailler avec Waves Platform au mĂȘme endroit. C'est ainsi que des projets comme et .
Le premier pas derriĂšre les coulisses de la blockchain Waves a Ă©tĂ© . Ce n'Ă©tait pas simple, mais j'ai nĂ©anmoins rĂ©ussi Ă Ă©crire un calcul indĂ©pendant de tous les soldes et mĂȘme Ă trouver une erreur dans les calculs sur les nĆuds d'origine ( au fait, chez eux, ça fonctionne, ils paient pour les erreurs trouvĂ©es). Vous pouvez explorer les fonctionnalitĂ©s de l'explorateur w8io en dĂ©tail dans ce sujet :
Dans le processus de travail sur w8io, j'avais déjà des doutes, mais lorsque le travail est arrivé à une fin logique et que j'ai commencé à créer le SDK, les doutes se sont confirmés. Je n'ai pu trouver nulle part certaines fonctions, y compris les plus importantes, celles de cryptographie. Alors j'ai commencé à créer mes propres briques pour le fondement. Ainsi sont nés : pour le codage en base58 (en réalité pour coder n'importe quel alphabet dans n'importe quel), pour la création et la vérification de signatures compatibles (avec des variantes ), pour le calcul d'un des hachages (qui n'était disponible qu'à partir de PHP 7.2) etc.
Ici, je dois remercier pour quelques conseils précieux qui m'ont orienté vers au lieu des fichiers include que je connaissais, mais qui sont obsolÚtes.
AprĂšs quelques mois , est sorti de et est maintenant prĂȘt Ă fonctionner avec toutes les fonctionnalitĂ©s standard de la plateforme Waves. Tout ce qui est disponible sur Les transactions peuvent ĂȘtre facilement créées, signĂ©es et envoyĂ©es par un seul package, fonctionnant sur toutes les versions 64 bits de PHP Ă partir de 5.6 inclusivement.
Connectez WavesKit Ă votre projet :
composer require deemru/waveskitUtilisation :
use deemruWavesKit;
$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 sur le réseau de test « T ». Nous définissons la phrase de départ, à partir de laquelle les clés et l'adresse du compte sont automatiquement calculées sur la base de la clé publique. Ensuite, nous créons une transaction de transfert de 0.00000001 Waves depuis l'adresse automatiquement calculée selon la phrase de départ vers l'adresse alias « test », la faisons signer par la clé privée et l'envoyons dans le réseau. AprÚs cela, nous nous assurons que la transaction a été confirmée avec succÚs par le réseau.
Le travail avec les transactions est concentré dans . Pour mieux comprendre le travail avec les transactions, vous pouvez consulter ou vous pouvez directement vous référer aux exemples clairs dans .
Comme WavesKit a évolué dans des conditions d'utilisation réelles, il a déjà incorporé des fonctionnalités avancées. La premiÚre fonctionnalité phare est la , qui contrÎle l'atteinte du niveau de confiance requis, assurant que la transaction n'est pas perdue, mais a été confirmée et a atteint le nombre nécessaire de confirmations dans le réseau.
Un autre mĂ©canisme infaillible est la maniĂšre dont WavesKit communique avec les nĆuds. Dans des conditions idĂ©ales, le framework fonctionne uniquement avec le nĆud principal, maintenant une connexion constante avec celui-ci, mais en cas d'erreurs, il peut automatiquement basculer vers des nĆuds de secours. Si vous configurez un tableau de nĆuds de secours, vous pouvez appeler la fonction pour dĂ©terminer le meilleur nĆud principal basĂ© sur la valeur maximale de la hauteur actuelle et de la vitesse de rĂ©ponse. Maintenant, ajoutez Ă cela le cache interne des requĂȘtes et prenez soin des utilisateurs ainsi que des propriĂ©taires de nĆuds.
Un des derniers mécanismes avancés est la fonction . Cela est né de la nécessité de réagir aux transactions entrantes en temps réel. Cette fonctionnalité résout entiÚrement tous les enjeux liés au traitement des transactions sur la blockchain. Plus de douleur, il vous suffit de définir votre fonction de rappel avec les options souhaitées et d'attendre les nouvelles transactions qui déclencheront vos processus. Par exemple, un autre de mes projets est entiÚrement construit autour de cette fonction, vous pouvez tranquillement explorer comment elle fonctionne directement .
J'aime l'open source, c'est l'une des plus grandes rĂ©alisations de l'humanitĂ©. Comme je suis le seul dĂ©veloppeur et que j'ai atteint un Ă©tat oĂč tous mes besoins sont satisfaits, je vous invite Ă utiliser et Ă contribuer Ă .
Source : habr.com
