É recomendado que utilize o Ubuntu 20.04 LTS, caso utilize sistema execute o script de instalação
./installFabric.sh
Observação: Não é necessário rodar o script como sudo, quando necessário ele pedirá permissão juntamente de sua senha.
Primeiramente é necessário checkar a variável FABRIC_CFG_PATH, descomente-a em configmsp.sh
export FABRIC_CFG_PATH=$PWD
Após isso, execute o script:
./configmsp.sh
Esse script gera os certificados MSP na pasta crypto-config que deverão ser devidamente substituídos no ptb.de.json e no inmetro.br.json nas linhas 38/39/51
Vamos então checkar os contéudo na pasta .env, acesse-á e altere de acordo com seu endereço IP. Também devemos acessar ptb.de.json e o inmetro.br.json e alterar as linhas 58/76/77 com seu devído endereço IP, mantendo a porta padrões (:7050 / :7051 / :7053).
Para iniciar o container de uma organização em específico utilize o comando:
docker-compose -f peer-ptb.yaml up -d
Se sua organização é responsável por hostear o serviço orderer você também precisará iniciá-la junto de sua organização, informando ambos arquivos .yaml:
docker-compose -f peer-orderer.yaml -f peer-ptb.yaml up -d
Caso seja necessário desativar ou restartar os containers utilize os seguintes comandos:
Desativar:
docker-compose -f peer-ptb.yaml stop
Resetar:
./teardown.sh peer-ptb.yaml
Para fazer essa conexão execute o seguinte comando, alterando apenas a organização se necessário:
./configchannel.sh ptb.de -c
Em caso de sucesso o Hyperledger Fabric estará rodando em seu servidor, com uma instância da sua organização no sistema. Para ver mais informações do container execute:
docker ps
docker stats
Insira o chaincode dentro da pasta fabpki, volte para a pastar raiz do projeto e execute o seguinte comando para instalar o chaincode:
./configchaincode.sh install cli0 fabpki 1.0
Para instânciar o chaincode em toda a rede execute o comando:
./configchaincode.sh instantiate cli0 fabpki 1.0
Vamos instalar mais algumas dependências ecessárias para executar os próximos códigos:
cd $HOME
git clone https://github.com/hyperledger/fabric-sdk-py.git
cd fabric-sdk-py
git checkout tags/v0.8.0
sudo make install
cd $HOME
git clone https://github.com/hyperledger/fabric-sdk-py.git
cd fabric-sdk-py
git checkout tags/v0.8.0
sudo make install
Execute a API requisicaoLedger.py com:
python3 requisicaoAPI.py
Em seu terminal aparecerá dois endereços IP. Geralmente em ambiente local é utilizado o 127.0.0.1 (o mesmo que localhost), entretando, caso queira fazer requisições fora do seu ambiente local deverá utilizar o IP da sua rede.
Instale o Insomnia ou qualquer outro ambiente para testes de requisições HTTPS, caso utilize o Insomnia importe o arquivo backup-insomnia.json, caso você não possua o Insomia é possível verificar o corpo das requisições apenas pelo arquivo JSON.
Esse é o corpo necessário para inserir um veiculo na rede, perceba que em existe um parâmetro chamado "Vin", ele é super importante pois é necessário para o registro dos fabricantes dentro da rede, então se certifique de que esse Vin seja um parâmetro válido para evitar conflitos.
A princípio não será necessário utilizar esse endpoint, pois os fabricantes são altomaticamente inseridos ao verificarem o fabricante dos veiculos, isso é feito para que os créditos do veículo não se percam caso o fabricante do veículo não exista na rede.
Esse endpoint é utilizado para que a quantidade de Co2 acumulado dos fabricantes seja convertido em saldo com base em uma meta, em questão de sistema esse endpoint deve ser ativado em períodos equidistantes para uma amostragem mais precisa desses cálculos.
Após o cálculo do saldo dos fabricantes será possível o início das transações dentro do sistema, onde fabricantes com saldo de carbono negativo podem comprar o saldo de outros fabricantes com uma moeda fiduciário. Todos começam com 10.000 dessa moeda fiduciária para testes.
Com esse endpoint é possível iniciar uma nova ordem. Como parâmetro temos o proprietário da ordem, que virá com o id do fabricante dentro dos registros do blockchain (Nessa rede todo o fabricante inicia com "fab-"). Temos o tipo da transação, sendo permitido preencher com "comprar" e "vender". Por último o saldo ofertado, caso seja preenchido "comprar" no campo de tipo de transação esse saldo representará o saldo fiduciário, caso preenchido "vender" representará o saldo de carbono
Esse endpoint representa um lance dentro da ordem criada anteriormente. Ela tem no corpo do seu JSON o id da transação criada (Existe um endpoint de GET para as transações no JSON de backup do Insomnia). O valor do seu lance, existindo os detalhes para caso a ordem seja de venda venda ou compra explicados no item anterior. Por último o id do comprador.
Existem algumas regras de negócio dentro do sistema, como a impossibilidade de fazer dois lances seguidos para o mesmo fabricante, ou até fazer um lance não possuindo saldo suficiente. Se atente com isso!
Nesse último endpoint será possível fechar a ordem para novos lances, em seu fechamento o respectivo saldo e computado para o proprietario e o ultimo lancista da ordem, essa ordem também ficará fechada para novos lances.