Blockchain chaincode para desenvolvedores Java – parte 01b
Por Steve Perry
Em 08/05/2017 no site iMasters
Fazer deploy e executar um exemplo de chaincode Java
Agora que definiu e iniciou a sua rede blockchain local e construiu e instalou o cliente JAR Java shim no seu repositório Maven local, está pronto para criar, registrar e invocar transações num dos exemplos de chaincode Java que é enviado com o Hyperledger Fabric que você baixou anteriormente.
Aqui estão os passos que você irá seguir:
Crie o exemplo usando Gradle.
Registre o exemplo com a rede de pares de validação, executando um script que é criado para você pela compilação Gradle.
Implante o exemplo para a rede local blockchain usando SoapUI.
Invoque transações no chaincode exemplo usando SoapUI.
Crie o exemplo
1. Crie o exemplo usando Gradle
Navegue até o diretório $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/java/Example.
Em seguida, inicie a compilação Gradle através da linha de comando utilizando este comando:
A compilação cria uma distribuição autônoma que está localizada dentro do diretório compilar/distribuições em duas formas: um arquivo TAR e um arquivo ZIP e cada um desses arquivos contém tudo o que você precisa para executar o chaincode, incluindo um script para conduzi-lo chamado Example.
O chaincode Example agora está pronto para ser registrado com a rede blockchain local.
2. Registre o exemplo
Certifique-se de que a sua rede blockchain local está em execução. Se não estiver, você precisará iniciá-la. Consulte a seção “Inicie a rede blockchain” se precisar de uma atualização.
Se você ainda não estiver lá, navegue para $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/java/Example.
Em seguida, extraia Example.zip (ou Example.tar) no diretório compilar/distribuições:
“Por que tantos arquivos?”, você pode se perguntar. A distribuição contém tudo o que você precisa para executar o chaincode autonomamente (em seu próprio processo), juntamente com todos os JARs dependentes.
Para registrar o chaincode exemplo, dentro da pasta compilar/distribuições, execute o seguinte script:
1
./Example/bin/Example
Isso executa um processo autônomo que registra o chaincode exemplo com a rede local blockchain. Você deve ver o resultado da janela do terminal assim:
vp0_1 | 16:05:14.065 [chaincode] beforeRegisterEvent -> DEBU 072 Got REGISTER for chaincodeID = name:"hello" , sending back REGISTERED
9
.
10
.
Anote o nome do chaincodeID no resultado do log de registro (hello para o Example, veja a linha 8 no anterior). Você precisará disso mais tarde para a mensagem JSON ao implantar o chaincode Example através da interface REST do fabric.
O resultado anterior indica que o chaincode Example está em execução e foi registrado com a rede local de pares de validação de blockchain e está pronto para ser implantado.
3. Implante o exemplo
O Hyperledger Fabric fornece uma interface de serviço da web REST que você usa para interagir com o fabric. A primeira interação com o fabric é implantar o seu chaincode. Certifique-se de que sua rede local blockchain esteja em execução, então inicie o SoapUI e clique no botão REST para criar um novo projeto REST. Você deve ver uma caixa de diálogo como na Figura 3, onde você digita o URL baseado usado para todas as solicitações REST:
Digite http://localhost:7050 como a URL e, em seguida, clique em OK. A porta 7050 é a porta REST padrão usada pelo fabric e, uma vez que sua rede blockchain está sendo executada no seu computador local, você usará o localhost como o nome do host.
Quando SoapUI surgir, você pode fazer um smoke test rápido para se certificar de que ele pode se comunicar com sua rede local blockchain. Expanda o novo recurso REST que você acabou de criar até ver Request 1. Em seguida, abra-o na janela Editor. Use GET para o método e em resource digite /chain. Certifique-se de clicar na opção JSON na guia de resultado e, em seguida, execute a solicitação (clicando no ícone de seta). Quando você executa esta requisi;áo, você simplesmente retorna o bloco hash atual na guia de resultado, localizada no lado direito da janela do editor, como você pode ver na Figura 4:
Se você vir uma mensagem JSON semelhante à da Figura 4 (o valor currentBlockHash para sua rede será diferente, é claro), então você está pronto para implantar o chaincode Example.
Clique com o botão direito do mouse na extremidade de REST Project 1 (http://localhost:7050) e escolha New Resource; você deverá ver uma caixa de diálogo “Novo Recurso REST” (veja a Figura 5) com um campo Resource Path:
Digite /chaincode como o resource path, em seguida, clique em OK e você deve ver o novo recurso aparecer no painel SoapUI Projects. Abra a solicitação para este recurso (por padrão, ele será chamado Request 1), mude o método para POST e cole este JSON na área de solicitação, localizada no canto inferior esquerdo da janela do editor de solicitações:
1
{
2
"jsonrpc": "2.0",
3
"method": "deploy",
4
"params": {
5
"type": 1,
6
"chaincodeID":{
7
"name": "hello"
8
},
9
"CtorMsg": {
10
"args": [""]
11
}
12
},
13
"id": 1
14
}
Três coisas a observar:
Linha 3: O valor do método deve ser deploy.
Linhas 6-7: O chaincodeID.name na mensagem JSON deve corresponder ao chaincodeID quando você registrou o chaincode Example na seção anterior (hello para o chaincode Example).
Linha 13: O valor id é usado para coordenar solicitações. Você não precisa se preocupar tanto com isto para este tutorial, mas observe que ele sempre é enviado de volta na resposta (veja a próxima listagem).
Quando você envia essa solicitação, o resultado JSON deve se parecer com isto:
1
{
2
"jsonrpc": "2.0",
3
"result": {
4
"status": "OK",
5
"message": "hello"
6
},
7
"id": 1
8
}
A Figura 6 mostra uma imagem de como isso se apresenta em SoapUI. A mensagem de resultado JSON aparecerá na guia de resultado, que está localizada no lado direito do editor de solicitação.
O resultado de log de rede na janela do terminal deve incluir linhas que se parecem com isso:
As linhas 3-4 mostram o resultado indicando que a rede recebeu a mensagem de implantação e o fabric está implantando seu chaincode. As linhas 13-14 mostram que seu chaincode foi implantado com êxito.
Tome nota de resultado como este na janela do terminal executando o seu chaincode:
Nenhum comentário:
Postar um comentário