Autor: Lucas Oliveira

  • Introdução a Blockchain usando Python

    Autor: Lucas Oliveira
    Posições: Head of Education @ Nearx | Senior Blockchain Engineer | Matemático

    O que é Blockchain?

    Blockchain é uma tecnologia que resolve problema de confiança entre partes. Para entendermos melhor como a tecnologia funciona vamos dividir em partes: Wallet, Transações, Blocos e Consenso.

    Como funciona?

    “As Wallets armazenam chaves para gerenciar os ativos digitais. Essas chaves assinam Transações que são registros de transferências. Blocos agrupam transações, e são ligados formando uma cadeia de blocos, a blockchain. Consenso entre os participantes valida os blocos, e garante a segurança dos dados na rede.”

    Agora vamos ver no detalhe como isso funciona…

    Wallets

    São aplicações, de software ou hardware que armazenam suas chaves, privada e pública. A chave privada é utilizada para assinar transações, enquanto a chave pública é visível para todos e usada para identificar o usuário.

    Transações

    Representam a transferência de ativos digitais. Existem transações de vários tipos como: transferência de valor, criação de smartcontrats, interação com os smartcontracts entre outras.

    Cada transação (ou tx) possui um valor que está sendo enviado (que pode ser zero), uma taxa um remetente e um destinatário e precisa ser assinada com a chave privada do remetente.

    Blocos

    As transações são agrupadas em blocos que contêm um header e um body. No header temos metadados como o identificador único do bloco (hash), o hash do bloco anterior (prev-hash) e os dados da transação.

    Esses hashes criam uma estrutura encadeada de blocos, ou seja a blockchain.

    Consenso

    É o processo que garante que todos os participantes da rede (nós) concordem sobre o estado atual da blockchain. Isso é essencial para garantir a segurança e integridade dos dados, impedindo que transações duplicadas ou fraudulentas sejam registradas.

    Também é responsável pelo Throughput da rede. A Rede de nós validadores é o que chamamos de rede blockchain ou rede do bitcoin ou até blockchain do Bitcoin.

    Smartcontracts

    Nada mais é do que um código sem runtime como uma função serveless. Existem algumas diferenças entre um smartcontract e uma função serverless:

    ServerlessSmartcontract
    StatelessStatefull
    Executa em um cloud centralizada: AWS, GCP, AzureExecuta em um blockchain descentralizada: Ethereum, Solana, Polkadot
    “Não precisa de runtime”“Não precisa de runtime”
    Apenas uma função pequenaUma classes com métodos e estados internos
    Executa: JavaScript, Python, Java, Go, …Apenas o que a máquina suporta. EVM
    Diferença entre Serverless e Smartcontract

    Hoje na indústria de blockchain, EVM é a plataforma mais utilizada, sendo a segunda solução o WASM. Para blockchains que suportam EVM, temos várias linguagens sendo a principal Solidity seguida de Vyper.

    Linguagens EVM: Solidity e Vyper

    VyperSolidity
    Mais simples e restritaMenos restrições e mais complexidade
    Menos materiais e suporte da comunidadeMaior número de conteúdo e suporte
    Foco em: Simplicidade e SegurançaFoco: Flexibilidade e liberdade de uso
    Inspirada em PythonInspirada em JavaScript e C++
    Diferença entre Solidity e Vyper

    Frameworks EVM 2024

    Para desenvolver contratos precisamos de um kit de ferramentas para facilitar nossa vida. Hoje (2024) temos 3 grandes frameworks: Foundry, Hardhat, ApeWorx. Cada um com seu pró e contra, todos eles focam em entregar produtividade no processo de desenvolvimento de smartcontracts.

    Apesar de comparar eles, dessa vez vamos focar no ApeWorx que é escrito em Python.

    CaracterísticasHardhatFoundryApeWorx
    Linguagem de ScriptJavaScriptSolidityPython
    PerformanceLentoMuito RápidoLento
    Momentojá consolidado, mais 10.000 commitsEm crescimento, mais 4.000 commitsOportunidade, menos de 1.500 commits
    EcosistemaHerda tudo do JavaScriptHerda tudo do RustHerda tudo do Python
    Comparação entre Hardhat, Foundry, ApeWorx

    Hands-on

    Para acompanhar o hands-on siga as instruções do README.md do repo: Python Floripa – Blockchain

Entrar