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

background-sample
profile-picture

Lucas Oliveira1 contribuições

Head of Education @ Nearx | Senior Blockchain Engineer | Matemático

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Entrar

Rolar para cima