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:
| Serverless | Smartcontract |
| Stateless | Statefull |
| Executa em um cloud centralizada: AWS, GCP, Azure | Executa em um blockchain descentralizada: Ethereum, Solana, Polkadot |
| “Não precisa de runtime” | “Não precisa de runtime” |
| Apenas uma função pequena | Uma classes com métodos e estados internos |
| Executa: JavaScript, Python, Java, Go, … | Apenas o que a máquina suporta. EVM |
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
| Vyper | Solidity |
| Mais simples e restrita | Menos restrições e mais complexidade |
| Menos materiais e suporte da comunidade | Maior número de conteúdo e suporte |
| Foco em: Simplicidade e Segurança | Foco: Flexibilidade e liberdade de uso |
| Inspirada em Python | Inspirada em JavaScript e C++ |
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ísticas | Hardhat | Foundry | ApeWorx |
| Linguagem de Script | JavaScript | Solidity | Python |
| Performance | Lento | Muito Rápido | Lento |
| Momento | já consolidado, mais 10.000 commits | Em crescimento, mais 4.000 commits | Oportunidade, menos de 1.500 commits |
| Ecosistema | Herda tudo do JavaScript | Herda tudo do Rust | Herda tudo do Python |

Hands-on
Para acompanhar o hands-on siga as instruções do README.md do repo: Python Floripa – Blockchain
Lucas Oliveira1 contribuições
Head of Education @ Nearx | Senior Blockchain Engineer | Matemático