Voltar ao início

Primeira aplicação com Blockchain. Parte 3

Seguindo com a nossa série ! Vamos lá.
Criando um arquivo Python com Flask.

Existem várias formas, porém vou demonstrar uma dessas diversas formas. Não estou considerando eficiência de algoritmos uma vez que esse exemplo possui intenções de demonstrações de funcionalidade básicas apenas.

Para criar a sua primeira aplicação em Flask, é importante se atentar nos imports das bibliotecas

from flask import Flask, render_template
# Criando uma instância da aplicação
Flask app = Flask(__name__)

# Rota para a página de login
@app.route(‘/login’, methods=[‘POST’] , [‘GET’])
def login():
código a ser desenvolvido

Nesse trecho de código, estamos importando para renderizar templates HTML em uma aplicação Flask. Ela permite que você crie páginas dinâmicas, onde você pode combinar dados e lógica do seu aplicativo com estruturas HTML pré-definidas.

Quaisquer dúvidas sobre o funcionamento do Flask, acesse a página da documentação.

Depois, é necessário criar as rotas que serão usadas nessa aplicação. A rota abaixo será a rota de login onde o usuário, caso não seja cadastrado, irá precisar se cadastrar.


@app.route('/login', methods=['POST', 'GET'])
def login():
    error = None    
    if request.method == 'POST': 
        validate_result = validate(request.form['username'],request.form['password'])           
        if validate_result == True:
            response = make_response(render_template('opcoes.html', error = ""))
            response.set_cookie(COOKIE_NAME, request.form['username'])                 
            return response
        else:
            return render_template('login.html', error = "Usuário não cadastrado!")

    if request.method == 'GET':       
        return render_template('login.html', error = "Bem vindo ")


Antes de seguir com a aplicação em Flask, será preciso fazer o contrato, em Solidity, para que seja possível inserir dados na Blockchain.



Solidity é uma linguagem de programação orientada a contratos inteligentes (smart contracts). Ela foi desenvolvida especificamente para a plataforma Ethereum, que é uma blockchain que suporta a execução de contratos inteligentes.

Solidity é semelhante em sintaxe a linguagens de programação como JavaScript e C++, tornando-a relativamente fácil de aprender para desenvolvedores com experiência nesses idiomas. No entanto, Solidity possui recursos específicos para lidar com as peculiaridades dos contratos inteligentes, como a capacidade de definir estruturas de dados, funções e modificadores especiais para gerenciar a execução do contrato.

No trecho abaixo, estamos utilizando uma estrutura conhecida em solidity como mapping. Ela é uma estrutura de dados que foi escolhida por ser eficiente. Funciona como se fosse um dicionário em outras linguagens.

pragma solidity >=0.4.22 <0.8.0;

contract SaveTransaction {
    
   
    struct Transaction {
        string urlHash;
        uint contContent;
      
    }

  mapping (string => Transaction) registros;

function qtdRegContent(string memory urlHash) public view returns (uint qtd) { 
    return (registros[urlHash].contContent) ;
}

As funções de retorno são bem parecidas com outros tipos de linguagens.
Quaisquer dúvidas, leia a documentação da linguagem solidity no site oficial.

Para garantir que o contrato esteja funcional, iremos utilizar o truffle para fazer essa validação.

$ truffle develop
Truffle Develop started at http://127.0.0.1:9545/

Accounts:
(0) 0x55660bb0918f9aade4db7b7ef7f71639750c2262
...
Private Keys:
(0) ead0d6b318832f278b9a2ee1a6a6ab0156ab439d898394b6887d023bc929159c
...
$ truffle(develop)>


No próximo post, vamos aprender como utiliza o ganache para visualizar as transações que iremos enviar.

Será preciso desenvolver a função de inclusão no contrato.
Não darei a resposta, no próximo post continuamos com essa resposta :)