Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 9838|Resposta: 4

Kit de Desenvolvimento PHP EOS Blockchain

[Copiar link]
Publicado em 11/12/2018 08:56:36 | | |
Este post foi editado pela última vez por jimi2018 em 2018-12-11 09:06

1. Visão geral do pacote de desenvolvimento
O objetivo do EosTool é eliminar o problema de desenvolver aplicações blockchain EOS usando PHP, tais como:
  • Chame suas funções através da interface RPC do Nodeos e do Keosd
  • Gerar chaves privadas e públicas no formato EOS offline
  • Use sua chave privada local para gerar assinaturas de transações compatíveis com EOS
  • Serialize objetos de transação no formato packed_trx exigido pela Nodeos
Pode-se considerar que o EosTool é uma versão PHP do eosjs, que pode ser usada para implementar totalmente as funções do cliente oficial do EOS, Cleos, e também pode ser facilmente adicionada ao suporte da blockchain EOS em aplicações PHP, melhorando significativamente a eficiência do desenvolvimento.

Amigos interessados também podem acessar diretamente para baixar o kit de desenvolvimento EOS blockchain PHP:http://t.cn/EUZAODQ

O EosTool roda em ambiente Php 7.1+, a versão atual é a 1.0.0, e a lista dos principais arquivos de código é a seguinte:

Arquivos de códigoilustrar
eostool/src/client/NodeClient.phpA classe do pacote de interface RPC de nós de software nodeos
eostool/src/client/WalletClient.phpA classe de encapsulamento da interface RPC do software de carteira KEOSD
eostool/src/client/RpcOutput.phpO RPC retorna a classe de encapsulamento resultante
eostool/src/Crypto/PrivateKey.phpClasse de chave privada EOS
eostool/src/Crypto/PublicKey.phpClasse de chave pública EOS
eostool/src/Crypto/Signature.phpClasse de assinatura EOS
eostool/src/Serializer/AbiType.phpClasse de pacote tipo ABI da EOS
eostool/src/Serializer/AbiTypeFactory.phpClasse de fábrica tipo ABI
eostool/src/Serializer/SerialBuffer.phpClasse de implementação de buffer serializada
eostool/src/Serializer/Serializer.phpClasse de implementação Serializer
eostool/src/Signer/Signer.phpInterface de signação
eostool/src/Signer/KeosdSigner.phpClasse de implementação do signatário Keosd
eostool/src/Signer/LocalSigner.phpImplementação local offline do signer
eostool/src/Contract.phpClasse contratada
eostool/src/EosTool.phpClasse de entrada do pacote de desenvolvimento
eostool/testesCatálogo de casos de teste unitário
eostool/phpunit.xmlPerfis de teste unitário
eostool/fornecedorPacotes de dependência de terceiros
eostool/composer.jsonArquivo de configuração do compositor
2. Acesse o servidor de nó
Use a classe NodeClient para acessar a interface rpc da nodeos. Por exemplo, o código a seguir acessa a interface get_info do plugin chain para um nó Nodeos que está correndo nativamente:
2.1 Agrupamento de chamadas RPC

O EosTool adota um método de nomenclatura consistente, e o método de chamada do NodeClient pode ser inferido de acordo com a API: o agrupamento da API corresponde a uma propriedade com o mesmo nome do NodeClient, e a API corresponde a um método convertido pelo camelCase sob o mesmo atributo de mesmo nome que o agrupamento do Cliente do No. Por exemplo:



PluginsAgrupamento de APIsRPC APIMétodo NodeClient
chain_api_pluginCorrenteget_info$nc->chain->getInfo()
history_api_pluginHistóriaget_transaction$nc->history->getTransaction()
net_api_pluginLíquidoStatus$nc->net->status()
producer_api_pluginProdutorget_runtime_options$nc->produtor->getRunTimeOptions()
dbsize_api_plugindbsizeObter$nc->dbsize->get()

Documentação oficial para a API RPC:https://developers.eos.io/eosio-nodeos/reference

2.2 Parâmetros de Chamada RPC

Para Nodeos, algumas chamadas exigem a passagem de parâmetros adicionais, como a interface get_block do plugin chain; ao usar o EosTool para fazer uma chamada, basta organizar os parâmetros em um array associado, o código de exemplo é o seguinte:



2.3 Chamadas RPC retornam valores

O resultado de retorno de todas as chamadas RPC é uma instância RpcOutput, e chamar seu método hasError() pode determinar se a chamada está errada, e você pode ainda usar o método getError() para obter informações de erro.
A resposta da chamada RPC pode ser obtida pelo método getResult(), que é um objeto StdClass convertido a partir do resultado original do JSON, podendo ser facilmente extraído informações de atributo, como:

2.4 Acesso a nós mainnet/testnet

Ao criar uma instância NodeClient, execuções adicionais de parâmetros podem ser passadas para definir os nós da mainnet ou da testnet do EOS para acessar. Por exemplo, use o seguinte código para acessar um nó da mainnet:

Ou visite um nó na testnet Jungle:


3. Acesse o servidor da carteira
A nova versão do Keosd não fornece mais documentação da API RPC, o que pode significar que ele começou a se posicionar na linha de controle da pilha de software EOS. No entanto, você pode acessar a versão antiga da documentação neste endereço:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Use a classe WalletClient para acessar a interface rpc do Keosd. Por exemplo, o seguinte código acessa a interface list_wallets do Keosd que roda nativamente:
Como a API do Keosd não é mais agrupada, o método correspondente RPC fica diretamente pendurado no objeto WalletClient, o que é uma diferença. Assim como NodeClient, a chamada para WalletClient retorna um objeto RpcOutput.

A versão 1.4 do Keosd usa sockets UNIX em vez de HTTP para fornecer interfaces RPC por padrão, o que pode ser considerado mais seguro para usar IPC, considerando que, na maioria dos casos, o Keosd roda nativamente. Portanto, essa também é a opção padrão de instância para o WalletClient e, na maioria dos casos, não é necessário passar nenhum parâmetro adicional para instanciar o WalletClient.

4. Chaves privadas e públicas

O algoritmo-chave do EOS é semelhante ao do Bitcoin, mas com alguns ajustes e definindo seu próprio formato.
Use o método estático da classe PrivateKey new() para gerar uma chave privada aleatória. Por exemplo:
o método toEos() é usado para converter objetos de chave privada em um formato personalizado para EOS.

4.1 Derivação de Chave Pública
A chave pública pode ser derivada da chave privada, como:


Da mesma forma, use o método toEos() para converter a chave pública em um formato personalizado para EOS.

4.2 Importar Chaves Privadas EOS
Você pode converter uma chave privada formatada em EOS em um objeto EosTool PrivateKey, por exemplo, o código abaixo importa a chave privada EOS especificada e exibe sua chave pública EOS correspondente:

4.3 Assinatura autoritativa
O método sign() do PrivateKey suporta tanto assinaturas normais quanto assinaturas autoritativas exigidas pelos nós EOS. Por exemplo, o código a seguir retorna uma assinatura simples:

Passe parâmetros adicionais para obter uma assinatura autoritativa para os dados especificados:



5. Serialização
O EOS exige que as transações sejam serializadas antes de comprometer o push_transaction de nó, o que também é uma parte inevitável da operação das transações EOS em PHP.
No EosTool, a classe Serializer é usada para operações de serialização. Por exemplo, o código a seguir serializa uma transação de transferência EOS em um formato de fluxo de código de 16 decimais que pode ser submetido a um nó EOS:


O método estático fromAbi() do Serializer é usado para construir uma instância de serializer baseada em um abi especificado, e então o método serialize() da instância é usado para serializar o tipo de dado especificado e obter um fluxo de código hexadecimal.

6. Assinatura
O EosTool oferece duas formas de assinar transações: usando o Keosd para assinar ou usando uma chave privada local.
Use a classe KeosdSigner para completar a assinatura usando o servidor da carteira. Por exemplo:

Ao usar a classe LocalSigner, você pode evitar usar keosd e usar diretamente a assinatura de chaves privadas offline. Por exemplo:
use EosTool\Signer\LocalSigner;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = novo LocalSigner($prvKeys);
$signatures = $signer->signo($tx,$pubKeys,$chainId);



7. Submissão de Transações
Um dado de transação precisa ser normalizado, serializado, assinado e empacotado por meio de uma série de operações antes de poder ser submetido ao nó Nodeos para transmissão. A classe EosTool fornece o método transact() para isolar essas operações tediosas.
Por exemplo, o código abaixo cria uma instância do EosTool usando NodeClient e LocalSigner, e então envia uma transação:
É conveniente mudar o signatário para KeosdSigner, por exemplo:


8. Invocar uma única ação contratual
Use o método pushAction() do EosTool para chamar uma única ação contratual. Por exemplo, o código a seguir chama o método hi() do contrato de hospedagem da conta Tommy:



9. Implementar o contrato
Implante o contrato usando o método setContract() do EosTool, por exemplo:
Amigos interessados podem acessar aqui:http://t.cn/EUZAODQ




Publicado em 11/12/2018 08:59:58 |
Obrigado. Muito útil.
 Senhorio| Publicado em 11/12/2018 09:06:52 |

Obrigado pelo apoio.
Publicado em 11/12/2018 09:11:46 |
Li muito conteúdo no seu site, e sinto que alguns deles são artigos estrangeiros traduzidos
Publicado em 11/12/2018 09:32:07 |
Olha só, obrigado chefe por ficar rico
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com