Este documento fornece diretrizes para o desenvolvimento seguro de contratos inteligentes, cobrindo tópicos como visibilidade de funções, armazenamento de variáveis, tipos de funções, fallback functions, boas práticas de programação, segurança, custos e testes.
Muito se tem falado sobre Bitcoin e criptomoedas, mas pouco se fala da tecnologia base para estas soluções, o Blockchain.
Com esta tecnologia muitas inovações se tornam possíveis em diversos segmentos da economia, eliminando a necessidade de intermediários, reduzindo custos e aumentando a transparência e confiança no registro de transações.
PT
Explicação simplificada para iniciantes no mundo do blockchain e das criptomoedas. Neste conjunto de slides pretendo transmitir de forma clara e simples o que é o blockchain e como é o seu funcionamento. Definindo os principais elementos envolvidos nesta tecnologia: Nó, Bloco e transação.
EN
Simplified explanation for beginners in the world of blockchain and crypto-coins. In this set of slides I want to convey in a clear and simple way what the blockchain is and how it works. Defining the main elements involved in this technology: Node, Block and transaction.
Muito se tem falado sobre Bitcoin e criptomoedas, mas pouco se fala da tecnologia base para estas soluções, o Blockchain.
Com esta tecnologia muitas inovações se tornam possíveis em diversos segmentos da economia, eliminando a necessidade de intermediários, reduzindo custos e aumentando a transparência e confiança no registro de transações.
PT
Explicação simplificada para iniciantes no mundo do blockchain e das criptomoedas. Neste conjunto de slides pretendo transmitir de forma clara e simples o que é o blockchain e como é o seu funcionamento. Definindo os principais elementos envolvidos nesta tecnologia: Nó, Bloco e transação.
EN
Simplified explanation for beginners in the world of blockchain and crypto-coins. In this set of slides I want to convey in a clear and simple way what the blockchain is and how it works. Defining the main elements involved in this technology: Node, Block and transaction.
Blockchain: a descentralização da confiança e da informaçãoHuge
Gabriel Aleixo, pesquisador do Instituto de Tecnologia e Sociedade do Rio de Janeiro (ITS-Rio) fala como incentivos econômicos e redes descentralizadas podem se combinar em prol de informações essenciais mantidas de forma mais transparente e segura.
Blockchain e Bitcoin Introdução e Prática com C#Alisson Solitto
Minicurso ministrado no evento FLISOL 2019 (https://www.univem.edu.br/eventos/flisol-2019)
Introdução técnica e conceitual sobre o Blockchain e Bitcoin, além do desenvolvimento prático de uma carteira utilizando C#.
https://github.com/alissonsolitto/flisol2019-blockchain-bitcoin
Painel para a discussão de casos de usos para o Blockchain e aplicações corporativas.
Ocorreu durante o Bitcoin Summit da CoinBR em Abril de 2016.
Painelistas: Edilson Osorio Junior (OriginalMy.com) e Gabriel Aleixo (ITS-RJ)
Painel e palestra ministrada por Edilson Osorio Junior na Faculdade de Direito da USP, no Largo São Francisco, em 17/03/2017, em evento patrocinado pela Camara-e.Net.
O evento teve como tema "Direito, Privacidade e Tecnologia: Desafios e Dilemas" e contou com especialistas do direito e de tecnologia.
Também esteve presente a Amie Stepanovich, advogada e diretora para políticas públicas da Access Now, de Washington DC, que possui forte atuação em segurança cibernética, privacidade e vigilância.
O que o blockchain tem a oferecer para novas aplicações seguras para além do mundo financeiro. Conhecida pela sua primeira aplicação na criptomoeda Bitcoin, o modelo tem sido cada vez mais considerado e aplicado para outras aplicações distribuídas: processos eletrônicos, contratos inteligentes, registro de propriedade intelectual, etc. Exploramos algumas características e o potencial da ferramenta.
Introdução ao Ethereum, Uma Plataforma BlockchainRenato Guimaraes
Ethereum é uma plataforma blockchain aberta que permite a qualquer pessoa construir e usar aplicativos descentralizados que funcionam em tecnologia blockchain.
Blockchain e o Novo Ambiente - Curitiba, Brazil 11/12/2018Pascual Arrechea
A tecnologia Blockchain trará mudanças para várias profissões. Nesta apresentação fique sabendo como as 4 maiores firmas globais de auditoria estão se preparando para essa revolução. Além disso conheça detalhes da tecnologia em linguagem direta, muitos dados de mercado e previsões para o futuro.
Na palestra discorro sobre a tecnologia blockchain e seu diferencial, as inovações que já são realidade como o Ethereum, das promessas futuras e das falhas catastróficas como o DAO.
Desde 2008 com a publicação da invenção feita por Satoshi Nakamoto temos a chance de ter finalmente um sistema computacional distribuido tolerante a falhas em produção. Esse sistema ramificou-se para diversas implementações com novas funcionalidades, conectando-se com outra invenção de nosso século conhecida como Smart Contracts inventada por Nick Szabo ha mais de 20 anos, todos esse arsenal soma em pesquisa algo em torno de 40 anos em temas como Ciencia da Computação, Criptografia e Teoria dos Jogos. Olhando para esse novo universo computacional com a intenção de explorar as suas diversas faces e sabores juntos vamos navegar na história e implementação dos blockchains como Bitcoin
Aqui de forma resumida um pouco sobre o bitcoin...
Blog Oficial: http://techcryptobr.blogspot.com.br/
Canal no YouTube: https://goo.gl/XiHufz
Comunidade no Google +: https://goo.gl/jBqTQs
Página no Facebook: https://www.facebook.com/techcryptobr
Grupo no Facebook: https://www.facebook.com/groups/techcryptobr
Twitter: https://twitter.com/jeffytavares
Skype: jeffytavares
Extensão do canal instale em seu navegador e fique sempre ligados nos vídeos: http://goo.gl/OzKovv
Eobot melhor site de mineração: https://goo.gl/pTLVK5
Minere com RDP Main: https://goo.gl/n3eam0
Boas práticas no desenvolvimento de smart contracts, The Dev Conf - TDC SP 2019Rafael Capaci Pereira
Diversos casos de DApps e ICOs fracassam por conta de bugs nos smart contracts desenvolvidos (The DAO, Parity e outros). Assim como qualquer software, smart contracts também são suscetíveis a erros, porém são imutáveis. A palestra aborda as melhores práticas no desenvolvimento de contratos na plataforma Ethereum, evitando bugs conhecidos, com baixo custo de execução e de fácil auditoria.
Blockchain: a descentralização da confiança e da informaçãoHuge
Gabriel Aleixo, pesquisador do Instituto de Tecnologia e Sociedade do Rio de Janeiro (ITS-Rio) fala como incentivos econômicos e redes descentralizadas podem se combinar em prol de informações essenciais mantidas de forma mais transparente e segura.
Blockchain e Bitcoin Introdução e Prática com C#Alisson Solitto
Minicurso ministrado no evento FLISOL 2019 (https://www.univem.edu.br/eventos/flisol-2019)
Introdução técnica e conceitual sobre o Blockchain e Bitcoin, além do desenvolvimento prático de uma carteira utilizando C#.
https://github.com/alissonsolitto/flisol2019-blockchain-bitcoin
Painel para a discussão de casos de usos para o Blockchain e aplicações corporativas.
Ocorreu durante o Bitcoin Summit da CoinBR em Abril de 2016.
Painelistas: Edilson Osorio Junior (OriginalMy.com) e Gabriel Aleixo (ITS-RJ)
Painel e palestra ministrada por Edilson Osorio Junior na Faculdade de Direito da USP, no Largo São Francisco, em 17/03/2017, em evento patrocinado pela Camara-e.Net.
O evento teve como tema "Direito, Privacidade e Tecnologia: Desafios e Dilemas" e contou com especialistas do direito e de tecnologia.
Também esteve presente a Amie Stepanovich, advogada e diretora para políticas públicas da Access Now, de Washington DC, que possui forte atuação em segurança cibernética, privacidade e vigilância.
O que o blockchain tem a oferecer para novas aplicações seguras para além do mundo financeiro. Conhecida pela sua primeira aplicação na criptomoeda Bitcoin, o modelo tem sido cada vez mais considerado e aplicado para outras aplicações distribuídas: processos eletrônicos, contratos inteligentes, registro de propriedade intelectual, etc. Exploramos algumas características e o potencial da ferramenta.
Introdução ao Ethereum, Uma Plataforma BlockchainRenato Guimaraes
Ethereum é uma plataforma blockchain aberta que permite a qualquer pessoa construir e usar aplicativos descentralizados que funcionam em tecnologia blockchain.
Blockchain e o Novo Ambiente - Curitiba, Brazil 11/12/2018Pascual Arrechea
A tecnologia Blockchain trará mudanças para várias profissões. Nesta apresentação fique sabendo como as 4 maiores firmas globais de auditoria estão se preparando para essa revolução. Além disso conheça detalhes da tecnologia em linguagem direta, muitos dados de mercado e previsões para o futuro.
Na palestra discorro sobre a tecnologia blockchain e seu diferencial, as inovações que já são realidade como o Ethereum, das promessas futuras e das falhas catastróficas como o DAO.
Desde 2008 com a publicação da invenção feita por Satoshi Nakamoto temos a chance de ter finalmente um sistema computacional distribuido tolerante a falhas em produção. Esse sistema ramificou-se para diversas implementações com novas funcionalidades, conectando-se com outra invenção de nosso século conhecida como Smart Contracts inventada por Nick Szabo ha mais de 20 anos, todos esse arsenal soma em pesquisa algo em torno de 40 anos em temas como Ciencia da Computação, Criptografia e Teoria dos Jogos. Olhando para esse novo universo computacional com a intenção de explorar as suas diversas faces e sabores juntos vamos navegar na história e implementação dos blockchains como Bitcoin
Aqui de forma resumida um pouco sobre o bitcoin...
Blog Oficial: http://techcryptobr.blogspot.com.br/
Canal no YouTube: https://goo.gl/XiHufz
Comunidade no Google +: https://goo.gl/jBqTQs
Página no Facebook: https://www.facebook.com/techcryptobr
Grupo no Facebook: https://www.facebook.com/groups/techcryptobr
Twitter: https://twitter.com/jeffytavares
Skype: jeffytavares
Extensão do canal instale em seu navegador e fique sempre ligados nos vídeos: http://goo.gl/OzKovv
Eobot melhor site de mineração: https://goo.gl/pTLVK5
Minere com RDP Main: https://goo.gl/n3eam0
Boas práticas no desenvolvimento de smart contracts, The Dev Conf - TDC SP 2019Rafael Capaci Pereira
Diversos casos de DApps e ICOs fracassam por conta de bugs nos smart contracts desenvolvidos (The DAO, Parity e outros). Assim como qualquer software, smart contracts também são suscetíveis a erros, porém são imutáveis. A palestra aborda as melhores práticas no desenvolvimento de contratos na plataforma Ethereum, evitando bugs conhecidos, com baixo custo de execução e de fácil auditoria.
Workshop de desenvolvimento para blockchain EthereumOriginalMy.com
Este workshop utiliza o Mercado Pokémon como plataforma de exemplo, utilizando blockchain para:
- Criar uma criptomoeda
- Criar ativos digitais únicos e exclusivos
- Apresentar uma plataforma de trade e negociação de ativos
Além disso é possível criar uma aplicação totalmente standalone, distribuída no P2P, se conectando diretamente no blockchain para utilizá-lo como infraestrutura distribuída e descentralizada.
O workshop também apresenta 15 dicas avançadas de desenvolvimento.
Apresentação realizada no meetup sobre Blockchain, onde foram abordados smart contracts, "por que desenvolver soluções com blockchain?", ethereum, solidity, que é a liguagem de programação para implementar smart contracts e uma implementação de caso de uso para o registro da bens, venda e doação.
Slides da palestra ministrada na UFABC (Universidade Federal do ABC), em São Paulo, no dia 29/04/2016.
Conteúdo técnico porém introdutivo, elaborado para as faculdades de Computação, Ciências Cognitivas e Matemática.
Ferramentas para desenvolvimento no blockchain EthereumOriginalMy.com
Apresentamos o desenvolvimento para blockchain Ethereum utilizando:
- Solidity Browser
- Geth
- Mist
- Trufffle
Utilizando o Mercado Pokémon como plataforma de exemplo.
Amazon EC2 oferece uma ampla seleção de tipos de instâncias para suportar diversos casos de uso. Nesta sessão, entregaremos uma visão geral da plataforma de instâncias do Amazon EC2, das características mais importantes da plataforma e do conceito de gerações de instâncias. Nos aprofundamos nas escolhas da geração atual para as diferentes famílias de instâncias, incluindo as famílias de Propósito Geral (General Purpose), as otimizadas para Computação, Otimizadas para Armazenamento, Otimizadas para Memória e as familias com Computação Acelerada (GPU e FPGA). Também detalharemos as melhores práticas e compartilhamos dicas de desempenho para obter o máximo de suas instâncias do Amazon EC2.
https://aws.amazon.com/pt/ec2/
How to break a Monolith into Microservices - Quebrar o um monolito pode não ser uma tarefa fácil, mas existe bastante conteúdo que vai nos ajudar com essa tarefa. Decompor uma aplicação existente monolítica, requer pensar em uma estratégia de desacoplamento, migração de dados, convivência entre sistemas e tecnologias. Conteúdo elabora junto com Marlon Moncores.
This presentation talks about how to start a project using git. From installation and configuration, through concepts of structure commits, index management, stash, branch, merge, rebase, remote repositories and extra themes.
Esta apresentação explica como funciona o Quorum, um fork do Ethereum, com recursos para uso em situações corporativas de cadeia de suprimentos, financeiro ou processos inter empresariais
2. Desenvolvedor na JUPTER
Co-organizador do Meetup Blockchain Curitiba
Desenvolvedor na JUPTER
Colaborador da GoBlockchain
Co-organizador do Meetup Blockchain Curitiba
André Ferreira
Rafael Capaci
3. Create the necessary conditions to FIND, FUND & LAUNCH the Future
OPEN SCIENCE ORIGINATION
Scientific Methods
Tech Based
Businesses
First Principles
Approach
Open Innovation
Open Data & Open
Source
Collaboration Tech
Early Stage Teams
Product Launches
Deal Flow Generation
9. Smart Contract
● Similar à uma classe, que possui métodos e atributos
● Identificado por um endereço próprio (0x71c20d...9ec0)
● Executa regras contratuais definidas em código
● Escritos em linguagem de alto nível (Solidity ou outras)
● Compilados em bytecode
● A EVM consome gas para executar as operações do contrato
11. ● Public: podem ser chamadas por funções do próprio contrato, de contratos herdados
ou por usuários externos.
● External: podem ser acessadas somente externamente, não sendo possível ser
chamada pelo próprio contrato.
● Private: podem ser acessadas somente pelo próprio contrato.
● Internal: podem ser acessadas pelo próprio contrato e por contratos herdados.
Visibilidade
13. ● Memory: utilizada para valores temporários. É apagada entre execuções
distintas e é barata.
● Storage: utilizada para armazenar variáveis de estado do contrato. É mais
cara pois é gravada no blockchain.
Armazenamento de variáveis
15. ● view: função que não modifica o estado no blockchain
● pure: função que não lê ou modifica o estado no blockchain
● payable: permite que o contrato receba ETH na execução da função
Tipos de funções
16. Enviando ETH
● transfer() lança erro e para a execução caso haja falta de gas
● send() retorna false e deixa que você trate o erro
Caso usar send(). NÃO ESQUEÇA DE TRATAR O RETORNO!!!
18. Fallback Function
● Aquela que não deve ser nomeada
● Não possui argumentos
● E não retorna nada!
E pra que serve então???
19. Fallback Function
● É executada quando o contrato recebe ETH
● Ou quando se tenta executar uma função de nome inválido no contrato
20. Fallback Function
● Sem fallback function, o ETH enviado será rejeitado
● Um fallback executa com 2300 de gas*
○ Gas insuficiente para trabalhar com variáveis em STORAGE
○ Basicamente o que dá pra fazer é emitir um evento, informando que recebeu ETH
22. Fallback Function
● Um fallback pode executar com mais gas, caso isso fique explícito
● No caso de um contrato enviar ETH para outro, pode chamar a função
addr.call.value(x)()
○ Dessa forma, o fallback pode fazer operações mais caras
25. Style Guide
● Indentação: 4 espaços por nível
● Tabs ou Espaços? Espaços
● Tamanho máximo de linha: 79 ou 99 chars
● Estruturas de controle, declaração de funções e variáveis
● Funções modifiers
● Convenções de nomenclatura
● imports no topo do contrato
● Ordem de declaração das funções
26. Loops
● Blocos possuem um limite de gas para as transações dentro dele
● Tomar cuidado com loops de tamanho variável
● Não se aplica a view e pure functions.
● Porém, quando uma view ou pure function é chamada a partir de uma
transação, ela também consome gas.
30. Manipulação de variáveis da storage
● Corresponde a instrução SSTORE
● 20.000 de gas para guardar novos dados
● 5.000 de gas pra alterar dados *
○ Com exceção de uma alteração que zera um dado (Gas refund)
● Escreva o mínimo possível na storage.
42. Gas refund
● Operações que alteram o estado da blockchain são caras
○ Ex: Criar contratos, guardar dados em um contrato.
● Para incentivar as pessoas a liberarem espaço que não será mais utilizado, a
EVM implementa o mecanismo de Gas Refund
● Duas operações que reembolsam gas:
○ SUICIDE: This basically kills the smart contract. Doing so will get you back 24000 gas.
○ SSTORE: Storage deletion, which gets you back 15,000.
45. Segurança
● Se houver um bug, não é possível atualizar e corrigir o código
● Qualquer erro pode levar a consequências terríveis
● Disneylândia para hackers
○ Baixo esforço, altos retornos e baixo risco
● Todo o ecossistema está amadurecendo em termos de segurança
47. Withdraw Pattern
● O contrato não deve enviar Ether durante uma alteração de estado
● Recomendado:
○ Salvar o saldo dos usuários em um mapping (address => uint)
○ Usuário realiza o saque do saldo através de uma função específica
● King of Ether Hack
50. Re-Entrancy
Um contrato (A) pode chamar outro contrato (B) e transferir o controle de Ether
para o contrato (B), possibilitando que (B) chame (A) novamente antes que essa
interação seja concluída.
Isso permite que o contrato (B) possa realizar um loop recursivo, utilizando a
função fallback, por exemplo.
55. Over/Under Flows
● Tipos de dados de tamanho fixo para inteiros na EVM.
● As variáveis podem ser exploradas para resultar em números fora do
intervalo do tipo de dados que os armazena.
● Um uint8, por exemplo, só pode armazenar números no intervalo [0, 255].
Tentar armazenar 256 em um uint8 resultará em 0.
63. Testnet
● Testnet é uma rede de testes pública do Ethereum
● É gratuita, porém insegura
● Na testnet:
○ Ethers são fáceis de serem obtidos
○ Ethers não possuem valor como criptomoeda
Faça deploy e teste os seus contratos na testnet
antes de utilizar em produção na mainnet.