WavesKit: marc PHP per treballar amb la cadena de blocs Waves

Мне нравится PHP per a la velocitat de desenvolupament i una excel·lent portabilitat. És molt bo quan sempre tens una eina preparada per resoldre problemes a la butxaca.

Va ser una vergonya quan es va familiaritzar amb la cadena de blocs domèstica Plataforma Onades no tenia un SDK PHP preparat al seu arsenal. Bé, l'havia d'escriure.

Al principi vaig haver d'utilitzar nodes per signar transaccions. Per tant, per gestionar tres adreces, calia executar tres nodes... Va ser una visió lamentable, tot i que va resoldre alguns problemes. Fins que es va entendre que confiar en els nodes és un carreró sense sortida. En primer lloc, a causa d'una funcionalitat limitada API, en segon lloc, per la velocitat (els nodes eren molt lents en aquells dies).

Vaig començar dues feines paral·leles. Un és fer un explorador de cadena de blocs ràpid i completament independent de l'API del node. El segon és recollir totes les funcions per treballar amb la Plataforma Waves en un sol lloc. Així van sorgir els projectes. w8io и WavesKit.

El primer pas darrere de les escenes de la cadena de blocs Waves va ser navegador w8io. No va ser fàcil, però tot i així es va aconseguir escriure un càlcul independent de tots els saldos i fins i tot trobar un error en els càlculs als nodes originals (programa de recompensa d'errors Per cert, els funciona, paguen els errors trobats). Podeu obtenir més informació sobre la funcionalitat del navegador w8io en aquest fil: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

En el procés de treball amb w8io, ja tenia dubtes, però quan el treball va arribar a un final lògic i vaig començar a crear l'SDK, els meus dubtes es van confirmar. No he pogut trobar algunes funcions enlloc, incloses les criptogràfiques més importants. Després vaig començar fent els meus maons de fonamentació. Així van néixer: ABCode per codificar en base58 (en realitat per codificar qualsevol alfabet a qualsevol), Curve25519 per crear i verificar signatures compatibles (amb opcions amb esteroides), Blake2b per calcular un dels hash (que només està disponible des de PHP 7.2), etc.

Aquí he d'agrair Inala Kardanova per uns consells valuosos que em van orientar cap compositor en lloc de l'habitual per a mi, però obsolet, inclou fitxers.

Després d'un parell de mesos WavesKit va veure la llum, va sortir versions beta i ara està preparat per treballar amb totes les funcionalitats estàndard de la plataforma Waves. Tot disponible a xarxa principal Les transaccions es poden crear, signar i enviar fàcilment amb un sol paquet que s'executa amb totes les versions de 64 bits de PHP a partir de la 5.6 inclosa.

Connectem WavesKit al nostre projecte:

composer require deemru/waveskit

Fem servir:

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

A l'exemple anterior, creem un objecte WavesKit que s'executa a la xarxa de prova "T". Establem la frase inicial, a partir de la qual es calculen automàticament les claus i l'adreça del compte en funció de la clau pública. A continuació, creem una transacció de transferència 0.00000001 Waves des de l'adreça calculada automàticament des de la frase inicial fins a l'adreça de l'àlies "prova", la transferim per signar amb la clau privada i l'enviem a la xarxa. Després d'això, ens assegurem que la transacció sigui confirmada correctament per la xarxa.

Les transaccions estan enfocades funcions que comencen amb tx. Per a una millor comprensió del treball amb transaccions, podeu estudiar Documentació de WavesKit o aneu directament als exemples il·lustratius a proves d'integració contínua.

Com que WavesKit s'ha desenvolupat en ús real, ja té funcions avançades. La primera característica assassina és garantir la funció, que controla l'assoliment del nivell de confiança requerit que la transacció no s'ha perdut, sinó que, per contra, es va confirmar i va assolir el nombre de confirmacions requerits a la xarxa.

Un altre mecanisme a prova de bales és com es comunica WavesKit amb els nodes. En condicions d'hivernacle, el marc funciona només amb el node principal, mantenint-hi una connexió constant, però en cas d'error pot canviar automàticament a còpies de seguretat. Si esteu configurant una matriu de nodes en espera, podeu trucar a la funció setBestNode per determinar el millor node com a node principal pel valor màxim de l'alçada actual i la velocitat de resposta. Ara afegiu-hi una memòria cau de consultes interna i sentiu la cura tant dels usuaris com dels propietaris dels nodes.

Un dels últims mecanismes avançats és la funció txMonitor. Va aparèixer en relació amb la necessitat de respondre a les transaccions entrants en temps real. Aquesta funció resol completament tots els matisos associats al processament de transaccions a la cadena de blocs. No més dolor, només cal que configureu la vostra funció de devolució de trucada amb les opcions que vulgueu i espereu que noves transaccions iniciïn els vostres processos. Per exemple, un altre dels meus projectes VECRO completament construït al voltant d'aquesta funció, podeu aprendre fàcilment com funciona correctament al codi del projecte.

M'encanta el codi obert, és un dels èxits més grans de la humanitat. Com que sóc l'únic desenvolupador i he arribat a l'estat en què totes les meves necessitats estan solucionades, us convido a utilitzar i contribuir a WavesKit.

Font: www.habr.com

Afegeix comentari