Ethereum: Funcionalidades

Share:

Neste segundo artigo, focamos nas principais funcionalidades do protocolo, objetivando transmitir o entendimento do Ethereum de uma forma objetiva e completa. No terceiro e último artigo, analisaremos o roadmap do protocolo, seus principais concorrentes e sua comunidade, a fim de fechar um ciclo de aprendizado em volta do protocolo.

Solidity – Programando em Ethereum

Solidity é a linguagem de programação desenvolvida para a rede Ethereum, focada no funcionamento da Ethereum Virtual Machine e dos smart contracts. Ela é baseada nas linguagens C++, Python e Java Script.
Uma de suas maiores dificuldades é a falta de materiais de apoio para o desenvolvimento de habilidades de programação na linguagem, devido a sua especificidade de uso. A falta de materiais leva a exclusão de novos programadores, visto que é muito mais simples aprender Solidity após ter dominado as linguagens mais populares. Dada a dificuldade, foram desenvolvidas aplicações que ensinam a programar seu código, sendo a mais famosa delas a Crypto Zombies, uma espécie de Codecademy tematizada e voltada à Solidity. O usuário cumpre pequenas tarefas que são checadas instantaneamente pelo servidor, voltadas a criação de um jogo de zumbis com a linguagem Solidity. É muito interessante e recomendável para quem deseja aprender mais sobre a linguagem, porém, é indicado possuir conhecimento prévio básico de Python e Java Script.

Ether              

Ether é o principal mecanismo de incentivos da rede do Ethereum. A criptomoeda em questão é o combustível usado para que possam existir aplicações distribuídas na plataforma, ela é a forma com que os usuários pagam as máquinas para realizar operações quaisquer. Além disso, é um método de incentivo para que programadores desenvolvam aplicações de qualidade, visto que linhas de códigos desnecessárias são custosas.
A oferta total de moeda foi decidida em meados de 2014, durante a sua pré-venda. Os resultados finais foram uma oferta inicial de aproximadamente 60 milhões de tokens, dentre estes 20% foram deslocados ao fundo de desenvolvimento da plataforma. 5 ethers são criados a cada novo minerado e são destinados como recompensa ao seu minerador. Ademais, uma característica interessante e destoante da criação de bitcoins é que quando um minerador soluciona um bloco, porém ele não é incluído no blockchain, este minerador recebe uma recompensa de 2-3 ethers, chamada de uncle reward. É importante frisar que a oferta de moedas não é infinita, existe um limite de emissão de ethers de 18 MM por ano, portanto estabelecendo uma inflação decrescente a cada ano.
Desenvolvedores (1) e usuários (2) da plataforma necessitam possuir ether. Em (1), ele se faz necessário no desenvolvimento de aplicações que rodem no blockchain do Ethereum. Em (2), ele é necessário para o acesso e interação com smart contracts na rede. A mineração de ethers é feita de forma muito semelhante a do Bitcoin, por meio de um algoritmo Proof-of-work, um método de geração de blocos onde computadores disputam para resolver um problema matemático. Este processo é randômico e garante que as recompensas sejam dadas aqueles que têm maior poder computacional. Algumas diferenças para o protocolo do Bitcoin é que o Ethereum não usa Scrypt ou Sha256, e sim um algoritmo próprio.

Ether x Bitcoin

A grande diferença entre o Bitcoin e o Ether é que o Bitcoin foi idealizado para ser uma moeda digital ou reserva de valor, enquanto que o Ether é utilizado para ser o combustível da rede Ethereum, usado para pagar desenvolvedores e realizar transações na rede, e não ser usado como uma moeda ou ativo financeiro.

GAS

O Gas é o preço para se rodar uma transação ou contrato no Ethereum. 1 Gas é igual a 0.00001 Ethers, e ele pode ser usado para rodar 1 linha de comando. As ideias principais são limitar ataques de loop infinitos – visto que estes seriam extremamente custosos – e  incentivar programações eficientes. Quanto mais complexo for um código, mais custoso ele será, dado a maior quantidade de dados que necessitam ser armazenados. Qualquer transação realizada na rede custa Gas, e este custo é totalmente arcado pelo remetente.

Ethereum Virtual Machine (EVM)

Diferentemente do blockchain do Bitcoin, em que só é possível realizar transações monetárias P2P, a rede Ethereum vai além. Seu blockchain é programável, o que significa que o usuário, sendo um desenvolvedor, pode elaborar suas próprias aplicações e operações. Isto se deve ao fato de que, por concepção, o Ethereum foi desenvolvido como uma plataforma pronta para receber aplicações descentralizadas.
Uma vez desenvolvidas as aplicações, para rodarem na rede, precisam de algo em seu background que funcione como seu “motor”. Este papel é atribuído à Ethereum Virtual Machine (EVM). A partir da ideia do ex-CTO da Ethereum, Dr. Gavin Wood, de fato foi criado um ambiente para a execução dos Smart Contracts, dos quais falaremos mais abaixo.
A Ethereum Virtual Machine foi desenvolvida para que possa executar aplicações, de qualquer nível de complexidade, programadas em linguagens convencionais como Python, C++, JavaScript e claro, a Solidity, linguagem própria da Ethereum. Além disso, também é responsável por garantir a segurança da rede de modo a impedir que ocorram ataques do tipo DoS (Denial-of-service) – quando há uma tentativa de sobrecarregar a rede para que os seus serviços fiquem indisponíveis. Desta forma, esta versatilidade permite que desenvolvedores experientes, assim como iniciantes, possam elaborar aplicações na rede, sendo esta, então, uma característica fundamental para seu crescimento. Outra característica, garantidora da escalabilidade da rede, é o fato de que todos os nodes rodam uma Ethereum Virtual Machine, sendo todos estes capazes de executar as mesmas operações e também manter o consenso. Por esta razão, a Ethereum muitas vezes é descrita como um “computador mundial”.
Como essa ferramenta não está associada diretamente à rede Ethereum, existe a possibilidade de testar aplicações antes que elas sejam operadas de fato na rede. Ou seja, qualquer empreendedor, ao fazer um Smart Contract, pode testar sua ideia sem interferir na rede antes que o mesmo esteja concluído.

Contratos, Transações e Mensagens na rede Ethereum

Existem dois tipos possíveis de contas dentro do protocolo:
  1. Contas de propriedade externa – controladas por uma chave privada, onde o possuidor da chave tem a possibilidade de movimentar fundos da conta.
  2. Contratos: uma conta controlada por sua própria linha de código. Ou seja, o código pode possuir diversas funcionalidades, que são ativadas gatilhos.
Uma transação feita de uma conta de propriedade externa para um contrato, leva a ativação do contrato, que automaticamente roda seu código pré-programado e realiza suas específicas funcionalidades.
Uma transação na rede Ethereum faz referência à um pacote de dados enviado de uma conta de propriedade externa para qualquer outra conta dentro da rede. Ela contém as seguintes funcionalidades:
  1. Recipiente
  2. Assinatura do remetente, provando sua intenção de realizar a transação
  3. Valor enviado
  4. Startgas Value: representa o limite no número de etapas computacionais que a transação pode rodar.
  5. Taxa em Gas que o remetente deseja pagar pela transação para os mineradores.
Mensagens são similares às transações, porém, elas são enviadas de contratos para qualquer outra conta na rede, ou seja, nunca produzidas por uma conta de propriedade externa. Mensagens existem apenas dentro do ecossistema da rede. Elas podem ser interpretadas como funções de comando ativadas por meio de gatilhos.

Smart Contracts

Há algum tempo, entendemos por contrato algo que estabelece uma forma de relacionamento, garantido em termos da lei, entre duas partes ou mais. Com o surgimento dos Smart Contracts, esta ideia foi elevada a outro patamar.
Primeiramente idealizado em 1993 pelo criptógrafo e cientista da computação Nick Szabo, um Smart Contract pode ser explicado de uma forma mais acessível fazendo-se uma analogia com as conhecidas “vending machines”. Quando o consumidor insere algum valor na máquina, recebe dela um produto, como uma garrafa d’água por exemplo. Da mesma maneira, se nenhum valor é inserido na máquina, a mesma não libera o produto para ninguém. Um smart contract é um programa de computador auto executável de acordo com regras pré-estabelecidas pelo seu criador, podendo assim manter o controle sobre ativos – e no caso do universo blockchain, estes ativos são digitais. Neste âmbito, a Ethereum é, por concepção, uma plataforma construída para executar Smart Contracts.
Desta forma, é possível que o desenvolvedor crie um Smart Contract, estabelecendo suas próprias regras, fazendo uso das diversas linguagens convencionais de programação e principalmente da Solidity. Feito isto, o programa se auto executará de modo que dada alguma ação do usuário, compilará seu código e enviará, por exemplo, uma certa quantidade de tokens para um determinado endereço. Importante ressaltar que por estar em um blockchain, todas as ações de um Smart Contract são (ou deveriam ser) feitas de forma descentralizada. Mais especificamente, possibilita transações entre partes diferentes e anônimas sem a necessidade de um elemento centralizador ou externo à rede para garantir a validade e segurança. Por esta razão, há um corte diretos de custos de transação. Além disso, também pelo fato de estar em uma rede pública como o blockchain, os registros das transações empenhadas pelo Smart Contract são imutáveis e transparentes.
Esta tecnologia implementada na rede Ethereum é extremamente versátil – não se resume apenas ao exemplo inicial da “vending machine”. As inúmeras funcionalidades que podem ser implementadas em um Smart Contract têm o poder de transformar vários mercados. Tais possibilidades passam a ser cada vez mais vistas com o surgimento dos DApps.

Tokens ERC-20

Grande parte dos Smart Contracts na rede Ethereum operam transações financeiras. Como cada um deles têm suas próprias particularidades, seria muito conveniente que tivessem algum tipo de token que atendesse tais necessidades. Por esta razão, existem diversos tokens que estão aptos a circular na plataforma Ethereum. Por também haver maneiras diferentes de se atribuir valor aos tokens, podem ser considerados como ativos digitais. Neste caso, acabam representando direitos sobre serviços na rede ou qualquer produto do mundo real. Para que possam ser transacionados, devem seguir algumas padronizações da rede sendo que o conjunto mais comum se chama ECR 20.
Esta padronização se refere à um conjunto de normas das quais qualquer token na plataforma Ethereum deve seguir. Tal qual como outros tipos de token, os ECR 20 são emitidos nos recorrentes ICOs (Inicial Coin Offering), sendo que por estarem na plataforma Ethereum, seus desenvolvedores exigirão Ether – token nativo – em troca pelos ECR 20.
Dentre tais características, algumas das principais requeridas são o modo como esses tokens são transferidos, como os usuários podem ter acesso às informações sobre seus tokens, qual a oferta total e sob quais condições as transações são aprovadas. Fora isso, cada um terá alguma particularidade como o nome ou quantidade de casas decimais em seu valor, por exemplo. Desta forma, cada token é construído de forma a funcionar similarmente aos outros na plataforma. Graças à esta interoperabilidade, se torna possível que um token possa ser trocado por outros, além de que também garante um padrão quanto a aceitação dos mesmos pelos DApps.

Nenhum comentário