WavesKit - framework PHP para trabalhar com a plataforma Waves

Eu gosto do PHP pela velocidade de desenvolvimento e excelente portabilidade. É ótimo ter essa ferramenta no bolso, sempre pronta para resolver problemas.


Para mim, foi bastante triste que não houvesse SDK da Waves Platform para PHP quando conheci este bom blockchain. Bem, eu tive que escrever esse kit.


No começo, eu até usei meus nós para assinar transações. Então, para 3 endereços funcionarem, tive que executar 3 nós ... Foi bastante patético, mas resolvi algumas tarefas. Até que houvesse um entendimento de que confiar em um nó é um beco sem saída. Em primeiro lugar, devido à falta de funcionalidade e, em segundo lugar, a API do nó é lenta (naqueles dias era super lenta).


Comecei 2 trabalhos paralelos. O primeiro é um explorador de blockchain que deve ser rápido e não depende da API do nó. O outro é um agregador de todas as funções necessárias para trabalhar com a Plataforma Waves. Foi assim que nasceram projetos como o w8io e o WavesKit .


O primeiro passo nos bastidores do blockchain Waves foi o w8io explorer . Foi difícil, mas ainda consegui escrever um cálculo independente de todos os saldos e até encontrei um erro nos cálculos nos nós originais (a propósito, o programa de recompensa de bugs funciona, eles pagam por erros). Você pode aprender mais sobre a funcionalidade do w8io explorer neste tópico: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite


Quando isso terminou, passei para a próxima etapa, mas não consegui encontrar os blocos de construção e, até a parte mais importante, a criptografia. Então eu comecei a fazer meus próprios pacotes base. Foi assim que nasceu o ABCode para a codificação base58 (na maioria, mas na verdade qualquer um para qualquer alfabeto), Curve25519 para variantes suportadas de funções de sinal e verificação ( em variantes de esteróides ), Blake2b para função hash (que só aparece na biblioteca de sódio no PHP 7.2) etc.


Aqui, devo agradecer a Inal Kardanov por algumas dicas que me levaram ao caminho do compositor , em vez de incluir o arquivo da velha escola.


Alguns meses depois, o WavesKit saiu do estágio beta e agora está pronto para funcionar com a funcionalidade padrão da Plataforma Waves. Todas as transações de mainnet estão disponíveis para os usuários criarem, assinarem e transmitirem facilmente no pacote único, que funciona em todas as versões de PHP de 64 bits a partir da versão 5.6 inclusive.


Conecte o WavesKit ao seu projeto:


composer require deemru/waveskit 

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

No exemplo acima, criamos o objeto WavesKit, que funciona na testnet "T". Definimos pharse de sementes, a partir do qual as chaves e o endereço da chave pública são calculados automaticamente. Em seguida, criamos uma transação de transferência de 0.00000001 Waves do endereço calculado para um endereço com o alias "test", passamos essa transação para assinar com a função de chave privada calculada e a transmitimos para a rede. Depois disso, garantimos que a transação seja confirmada com sucesso pela rede.


O trabalho com transações concentra-se em funções com prefixos "tx" . Para uma melhor compreensão de como trabalhar com transações, você pode estudar a documentação do WavesKit ou consultar imediatamente exemplos reais de uso em testes de integração contínuos .


Desde que o WavesKit estava evoluindo em casos reais, ele possui recursos avançados. Antes de tudo, é garantir a função que pode ser usada para atingir o nível de confiança desejado de que sua transação não foi perdida, mas confirmada e alcançou o número necessário de confirmações.


Outro mecanismo à prova de balas é como ele interage com os nós. Há uma capacidade interna de fallback para nós de backup no caso de erros do nó principal. Você pode definir uma matriz de nós de backup para fallback. Você pode chamar a função setBestNode para escolher automaticamente o melhor nó atualmente adequado, com base na altura mais alta e no menor tempo de resposta do nó. Agora, adicione um mecânico de cache interno e uma conexão ao seu arsenal e você poderá sentir o cuidado não apenas dos usuários, mas também dos proprietários dos nós.


Um dos recursos avançados mais recentes é a função txMonitor . Parecia uma necessidade de reagir às transações recebidas em tempo real. Esta função resolve completamente todos os problemas relacionados ao processamento de transações na blockchain. Chega de desenvolvedores, basta definir sua função de retorno de chamada e as opções desejadas e aguardar novas transações para acionar seus processos. Por exemplo, meu projeto VECRO é totalmente baseado nessa função txMonitor, fique à vontade para aprender como ele funciona .


Eu gosto de código aberto, esta é uma das maiores realizações da humanidade. Como sou o único desenvolvedor dessa estrutura e chegou a um ponto em que todas as minhas necessidades foram resolvidas, convido você a usar e contribuir com o WavesKit .

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


All Articles