SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
BLOCKCHAIN & BITCOIN:
INTRODUÇÃO E PRÁTICA
COM C#
Alisson Solitto da Silva
Alisson Solitto da Silva, 23 anos
Técnico em Informática
Técnico em JAVA/WR
Bacharel em Ciência da Computação
MBA em Gestão de TI
Mestrando em Ciência da Computação
6 anos de experiência com o
desenvolvimento de software
Alisson Solitto da Silva, 23 anos
Blog: https://solitto.com.br/
GitHub: https://github.com/alissonsolitto
Linkedin: https://www.linkedin.com/in/solitto
Lattes: http://lattes.cnpq.br/7754813473705418
Simplechain: https://simplechain.com.br/
IzyMobile: http://izymobile.com/
Bitcoin - História
■ White Paper Bitcoin: A Peer-to-Peer Electronic Cash System
■ Ano: 2008 – Crise dos EUA
Unidades Bitcoin
■ No caso do Real a moeda é dividida até sua centésima parte que é o centavo.
■ 1 CENTAVO = R$ 0,01
■ Por ser uma moeda digital o Bitcoin é divisível até a centésima milionésima parte
conhecida como “SATOSHI”em homenagem ao seu criador.
Outros Projetos
CoinMarketCap +2.100 Criptomoedas
Blockchain – O que é?
■ A blockchain funciona como um livro-razão da contabilidade, controlando todos os
créditos e débitos de várias contas.
■ Principal benefício está na descentralização da sua base de dados, visando a
segurança e a confiabilidade de suas transações.
■ Desta forma cria-se uma rede universal, publica e compartilhada.
O que é?
■ O blockchain nada mais é do que uma lista encadeada.
■ As informações referentes a transação são armazenadas em um bloco de dados.
■ HASH: SHA-256
■ Cada nó na rede é um computador e qualquer computador pode fazer parte da
blockchain, para fazer parte da rede é necessário fazer uma cópia de toda a base
de dados da rede, após isso a principal tarefa do nó é validar e repassar os dados
das transações.
■ https://www.blockchain.com/pt/btc/unconfirmed-transactions
Vantagens
■ Transparência: todas as transações que ocorrem na rede são publicas e disponíveis
de forma acessíveis para todos.
■ Descentralização: não há necessidade de um intermediário nas transações, é
possível transferir dinheiro entre pessoas de qualquer lugar do mundo sem uma
instituição financeiro como nos métodos convencionais.
■ Inalterável: as transações feitas na rede são imutáveis, ou seja, não podem ser
alteradas ou deletadas.
■ Baixo custo: Por não haver uma instituição financeira intermediando as transações
o custo é muito menor.
Blockchain – Como funciona?
0x2bf8b4d794eff286baf9de360aeef064478967d7 0xce784419493d80d37ce83dbe86c9353f3f617d75
AliceBob
Transação 01
Transação 02
Transação 03
...
Transação N
Proof of Work
■ O maior trabalho computacional da rede é a criação de um hash válido
■ NONCE (N = Número e Once = Uma vez).
■ Bitcoin utiliza o método hashcash => hash deve ser codificado com um
número n de zero bits.
Exemplo
■ "Olá, mundo! 0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
■ "Olá, mundo! 1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
■ "Olá, mundo! 2" => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7
■ ...
■ "Olá, mundo! 4248" => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
■ "Olá, mundo! 4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
■ "Olá, mundo! 4250" => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9
Consenso
■ Broadcast do novo bloco
■ Validação
■ Aceitação
Show me the code! C#
■ Vamos programar uma
Wallet de Bitcoin!!
Show me the code! C#
Show me the code! C#
Show me the code! C#
Key privateKey = new Key();
PubKey publicKey = privateKey.PubKey;
Console.WriteLine(publicKey);
Console.WriteLine(publicKey.GetAddress(Network.TestNet));
Show me the code! C#
■ https://live.blockcypher.com/btc-testnet
■ https://bitcoinfaucet.uo1.net/
Gerando chaves com senha
■ Mnemonic mnemo = new Mnemonic(Wordlist.PortugueseBrazil, WordCount.Twelve);
■ ExtKey pkey = mnemo.DeriveExtKey(senha);
Buscar Saldo
Money SpentCoins = 0;
Money ReceivedCoins = 0;
//Criando address BTC
BitcoinAddress btcAddress = BitcoinAddress.Create(address, Network.TestNet);
//Criando Client QBitNinjaClient
var client = new QBitNinjaClient(Network.TestNet);
Buscar Saldo
//Percorre todas as transações do endereço
client.GetBalance(btcAddress).Result.Operations.ToList().ForEach(x =>
{
if (x.Amount > 0) //Recebido
ReceivedCoins += x.Amount;
else //Enviado
SpentCoins += x.Amount;
});
Buscar Saldo
Console.WriteLine("Recebidos: " + ReceivedCoins.ToUnit(MoneyUnit.BTC));
Console.WriteLine("Enviados: " + SpentCoins.ToUnit(MoneyUnit.BTC));
Console.WriteLine("Total: " + (ReceivedCoins + SpentCoins).ToUnit(MoneyUnit.BTC));
Histórico de Transações
client.GetBalance(btcAddress).Result.Operations.ToList().ForEach(x =>
{
//Detalhes da transação
var tran = client.GetTransaction(x.TransactionId).Result;
Console.WriteLine("----------------------------------------------");
Console.WriteLine("TransactionId" + x.TransactionId.ToString());
Console.WriteLine("Amount" + x.Amount.ToUnit(MoneyUnit.BTC));
Console.WriteLine("BlockId" + x.BlockId.ToString());
Console.WriteLine("Height" + x.Height);
Console.WriteLine("Confirmations" + x.Confirmations);
Console.WriteLine("Fees" + tran.Fees.ToUnit(MoneyUnit.BTC));
});
Criar uma transação
Criar uma transação
■ Chave privada
■ Endereço de destino
■ Quantidade de BTC
■ Taxa de transação
Criar uma transação
var btcSecret = pkey.PrivateKey.GetBitcoinSecret(Network.TestNet);
//Enviando para...
BitcoinAddress btcAddress = BitcoinAddress.Create(addressSend, Network.TestNet);
//Buscando TODAS saídas validas para gastar
var client = new QBitNinjaClient(Network.TestNet);
client.GetBalance(btcSecret.GetAddress(), true).Result.Operations.ToList().ForEach(x =>
{
if (x.Confirmations > 0)
{
x.ReceivedCoins.ForEach(r =>
{
if (r.TxOut.Value > Money.Satoshis(0))
{
lstCoin.Add(new Coin()
{
Outpoint = r.Outpoint,
TxOut = r.TxOut
});
}
});
}
});
//Convertendo as saidas em ICOIN
Coin[] coin = lstCoin.Select((o, i) => new Coin(o.Outpoint, o.TxOut)).ToArray();
//TransactionBuilder montando a transação complexa
TransactionBuilder txBuilder = new TransactionBuilder();
//Politica que define a taxa minima de transacao
txBuilder.StandardTransactionPolicy.MinRelayTxFee = FeeRate.Zero;
//False para permitir transações com poucos satoshis
txBuilder.DustPrevention = false;
Transaction tx = txBuilder
.AddKeys(btcSecret.PrivateKey)
.AddCoins(coin)
.Send(btcAddress.ScriptPubKey, moneySend)
.SetChange(btcSecret.ScriptPubKey)
.SendFees(fee)
.BuildTransaction(true);
BroadcastResponse broadcastResponse = client.Broadcast(tx).Result;
if (!broadcastResponse.Success)
{
Console.WriteLine(string.Format("Code: {0}",
broadcastResponse.Error.ErrorCode));
Console.WriteLine("Mensagem: " + broadcastResponse.Error.Reason);
}
else
{
Console.WriteLine("Sucesso ====> " + tx.GetHash().ToString());
}

Mais conteúdo relacionado

Mais procurados

Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Treinamento Product Management | Circuito de Treinamentos AddTech
Treinamento Product Management | Circuito de Treinamentos AddTechTreinamento Product Management | Circuito de Treinamentos AddTech
Treinamento Product Management | Circuito de Treinamentos AddTech.add
 
Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP
Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP
Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP Startup Sorocaba
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?Jean-Pierre Lambert
 
Microcontroladores x microprocessadores
Microcontroladores x microprocessadoresMicrocontroladores x microprocessadores
Microcontroladores x microprocessadoresmiroslayer
 
Arquitetura de projetos IoT
Arquitetura de projetos IoTArquitetura de projetos IoT
Arquitetura de projetos IoTFernando Veiga
 
MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019
MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019
MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019Antonio Andre Rodrigues
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoTobias Sette
 
Como montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo MolaComo montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo MolaColetivo Mola
 
Tecnologias de blockchain
Tecnologias de blockchainTecnologias de blockchain
Tecnologias de blockchainIRIB
 
Microservices Api Gateway Eureka Server.pptx
Microservices Api Gateway Eureka Server.pptxMicroservices Api Gateway Eureka Server.pptx
Microservices Api Gateway Eureka Server.pptxAayush Chimaniya
 
Redes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoRedes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoMauro Tapajós
 
Comparing Apples to Apples - A technique to normalize software complexity and...
Comparing Apples to Apples - A technique to normalize software complexity and...Comparing Apples to Apples - A technique to normalize software complexity and...
Comparing Apples to Apples - A technique to normalize software complexity and...Fernando Ostanelli
 

Mais procurados (20)

Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Treinamento Product Management | Circuito de Treinamentos AddTech
Treinamento Product Management | Circuito de Treinamentos AddTechTreinamento Product Management | Circuito de Treinamentos AddTech
Treinamento Product Management | Circuito de Treinamentos AddTech
 
Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP
Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP
Startup Sorocaba: Palestra Sebrae "Conexão com Especialistas" - MVP
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?
 
Microcontroladores x microprocessadores
Microcontroladores x microprocessadoresMicrocontroladores x microprocessadores
Microcontroladores x microprocessadores
 
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
Arquitetura de projetos IoT
Arquitetura de projetos IoTArquitetura de projetos IoT
Arquitetura de projetos IoT
 
MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019
MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019
MVP (Produto Mínimo Viável) - i9 Talks Brasília - 2019
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
Como montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo MolaComo montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo Mola
 
Tecnologias de blockchain
Tecnologias de blockchainTecnologias de blockchain
Tecnologias de blockchain
 
Microservices Api Gateway Eureka Server.pptx
Microservices Api Gateway Eureka Server.pptxMicroservices Api Gateway Eureka Server.pptx
Microservices Api Gateway Eureka Server.pptx
 
Design Responsivo
Design ResponsivoDesign Responsivo
Design Responsivo
 
Redes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoRedes de computadores II - 3.Roteamento
Redes de computadores II - 3.Roteamento
 
Comparing Apples to Apples - A technique to normalize software complexity and...
Comparing Apples to Apples - A technique to normalize software complexity and...Comparing Apples to Apples - A technique to normalize software complexity and...
Comparing Apples to Apples - A technique to normalize software complexity and...
 
Servidor Web.pdf
Servidor Web.pdfServidor Web.pdf
Servidor Web.pdf
 
Scrum
ScrumScrum
Scrum
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Agile SCRUM
Agile SCRUMAgile SCRUM
Agile SCRUM
 

Semelhante a Blockchain e Bitcoin Introdução e Prática com C#

Blockchain e o Futuro da Internet
Blockchain e o Futuro da InternetBlockchain e o Futuro da Internet
Blockchain e o Futuro da InternetWesley Carçado
 
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?Evandro Pires da Silva
 
Blockchain e Aplicações Descentralizadas - Fev/2017
Blockchain e Aplicações Descentralizadas - Fev/2017Blockchain e Aplicações Descentralizadas - Fev/2017
Blockchain e Aplicações Descentralizadas - Fev/2017Edilson Osorio Junior
 
Blockchain: registros eletrônicos distribuídos, imutáveis e seguros
Blockchain: registros eletrônicos distribuídos, imutáveis e segurosBlockchain: registros eletrônicos distribuídos, imutáveis e seguros
Blockchain: registros eletrônicos distribuídos, imutáveis e segurosAugusto Herrmann Batista
 
Blockchain 2.0 - O Bitcoin além do dinheiro digital
Blockchain 2.0 - O Bitcoin além do dinheiro digitalBlockchain 2.0 - O Bitcoin além do dinheiro digital
Blockchain 2.0 - O Bitcoin além do dinheiro digitalEdilson Osorio Junior
 
CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.
CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.
CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.Ricardo Rozgrin
 
Blockchain e Aplicações Descentralizadas
Blockchain e Aplicações DescentralizadasBlockchain e Aplicações Descentralizadas
Blockchain e Aplicações DescentralizadasOriginalMy.com
 
Bitcoin - A moeda virtual e sua natureza técnica e normativa
Bitcoin - A moeda virtual e sua natureza técnica e normativaBitcoin - A moeda virtual e sua natureza técnica e normativa
Bitcoin - A moeda virtual e sua natureza técnica e normativaMarcelo Lau
 
Blockchain: mergulhando nos seus usos #CPBSB2
Blockchain: mergulhando nos seus usos #CPBSB2Blockchain: mergulhando nos seus usos #CPBSB2
Blockchain: mergulhando nos seus usos #CPBSB2Riad Vargas
 
Aula de Bitcoin e Blockchain Pereistroka 2017
Aula de Bitcoin e Blockchain Pereistroka 2017Aula de Bitcoin e Blockchain Pereistroka 2017
Aula de Bitcoin e Blockchain Pereistroka 2017João Paulo Oliveira
 
Blockchains - Muito Além do Bitcoin
Blockchains - Muito Além do BitcoinBlockchains - Muito Além do Bitcoin
Blockchains - Muito Além do Bitcoinjoselopes1984
 
Moedas Digitais - O futuro da economia mundial
Moedas Digitais - O futuro da economia mundialMoedas Digitais - O futuro da economia mundial
Moedas Digitais - O futuro da economia mundialVagner Oliveira
 
O Bitcoin Fez Sua Estreia Em Las Vegas
O Bitcoin Fez Sua Estreia Em Las Vegas
O Bitcoin Fez Sua Estreia Em Las Vegas
O Bitcoin Fez Sua Estreia Em Las Vegas pastoralmold7116
 
Blockchain - Além do mercado financeiro
Blockchain - Além do mercado financeiroBlockchain - Além do mercado financeiro
Blockchain - Além do mercado financeiroAnderson Carubelli
 
Moedas virtuais Matheus Pavanetti
Moedas virtuais   Matheus PavanettiMoedas virtuais   Matheus Pavanetti
Moedas virtuais Matheus PavanettiMatheus Pavanetti
 
TDC 2017 - Blockchain Para Nós Desenvolvedores
TDC 2017 - Blockchain Para Nós DesenvolvedoresTDC 2017 - Blockchain Para Nós Desenvolvedores
TDC 2017 - Blockchain Para Nós DesenvolvedoresRoberto Santacroce Martins
 
Marketing Multinivel LionsTrading Lançamento Mundial
Marketing Multinivel LionsTrading Lançamento MundialMarketing Multinivel LionsTrading Lançamento Mundial
Marketing Multinivel LionsTrading Lançamento MundialFernando Viana
 
HACKBCBR - RIPPEX - Rafael Pereira e Jan Schnurle
HACKBCBR - RIPPEX - Rafael Pereira e Jan SchnurleHACKBCBR - RIPPEX - Rafael Pereira e Jan Schnurle
HACKBCBR - RIPPEX - Rafael Pereira e Jan SchnurleVictor Cunha
 
Ethereum e a Tecnologia Blockchain
Ethereum e a Tecnologia BlockchainEthereum e a Tecnologia Blockchain
Ethereum e a Tecnologia BlockchainGoldhive
 

Semelhante a Blockchain e Bitcoin Introdução e Prática com C# (20)

Blockchain e o Futuro da Internet
Blockchain e o Futuro da InternetBlockchain e o Futuro da Internet
Blockchain e o Futuro da Internet
 
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
Bitcoin e blockchain. Afinal, é uma moeda ou um ativo?
 
Blockchain e Aplicações Descentralizadas - Fev/2017
Blockchain e Aplicações Descentralizadas - Fev/2017Blockchain e Aplicações Descentralizadas - Fev/2017
Blockchain e Aplicações Descentralizadas - Fev/2017
 
Blockchain: registros eletrônicos distribuídos, imutáveis e seguros
Blockchain: registros eletrônicos distribuídos, imutáveis e segurosBlockchain: registros eletrônicos distribuídos, imutáveis e seguros
Blockchain: registros eletrônicos distribuídos, imutáveis e seguros
 
Blockchain 2.0 - O Bitcoin além do dinheiro digital
Blockchain 2.0 - O Bitcoin além do dinheiro digitalBlockchain 2.0 - O Bitcoin além do dinheiro digital
Blockchain 2.0 - O Bitcoin além do dinheiro digital
 
CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.
CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.
CURSO SOBRE BLOCKCHAIN, BITCOIN, ETHEREUM E OUTRAS CRIPTOMOEDAS.
 
Blockchain e Aplicações Descentralizadas
Blockchain e Aplicações DescentralizadasBlockchain e Aplicações Descentralizadas
Blockchain e Aplicações Descentralizadas
 
Bitcoin - A moeda virtual e sua natureza técnica e normativa
Bitcoin - A moeda virtual e sua natureza técnica e normativaBitcoin - A moeda virtual e sua natureza técnica e normativa
Bitcoin - A moeda virtual e sua natureza técnica e normativa
 
Blockchain: mergulhando nos seus usos #CPBSB2
Blockchain: mergulhando nos seus usos #CPBSB2Blockchain: mergulhando nos seus usos #CPBSB2
Blockchain: mergulhando nos seus usos #CPBSB2
 
Aula de Bitcoin e Blockchain Pereistroka 2017
Aula de Bitcoin e Blockchain Pereistroka 2017Aula de Bitcoin e Blockchain Pereistroka 2017
Aula de Bitcoin e Blockchain Pereistroka 2017
 
Blockchains - Muito Além do Bitcoin
Blockchains - Muito Além do BitcoinBlockchains - Muito Além do Bitcoin
Blockchains - Muito Além do Bitcoin
 
Moedas Digitais - O futuro da economia mundial
Moedas Digitais - O futuro da economia mundialMoedas Digitais - O futuro da economia mundial
Moedas Digitais - O futuro da economia mundial
 
O Bitcoin Fez Sua Estreia Em Las Vegas
O Bitcoin Fez Sua Estreia Em Las Vegas
O Bitcoin Fez Sua Estreia Em Las Vegas
O Bitcoin Fez Sua Estreia Em Las Vegas
 
Blockchain - Além do mercado financeiro
Blockchain - Além do mercado financeiroBlockchain - Além do mercado financeiro
Blockchain - Além do mercado financeiro
 
Moedas virtuais Matheus Pavanetti
Moedas virtuais   Matheus PavanettiMoedas virtuais   Matheus Pavanetti
Moedas virtuais Matheus Pavanetti
 
Tecnologia Blockchain: uma visão Geral (CPqD)
Tecnologia Blockchain: uma visão Geral (CPqD)Tecnologia Blockchain: uma visão Geral (CPqD)
Tecnologia Blockchain: uma visão Geral (CPqD)
 
TDC 2017 - Blockchain Para Nós Desenvolvedores
TDC 2017 - Blockchain Para Nós DesenvolvedoresTDC 2017 - Blockchain Para Nós Desenvolvedores
TDC 2017 - Blockchain Para Nós Desenvolvedores
 
Marketing Multinivel LionsTrading Lançamento Mundial
Marketing Multinivel LionsTrading Lançamento MundialMarketing Multinivel LionsTrading Lançamento Mundial
Marketing Multinivel LionsTrading Lançamento Mundial
 
HACKBCBR - RIPPEX - Rafael Pereira e Jan Schnurle
HACKBCBR - RIPPEX - Rafael Pereira e Jan SchnurleHACKBCBR - RIPPEX - Rafael Pereira e Jan Schnurle
HACKBCBR - RIPPEX - Rafael Pereira e Jan Schnurle
 
Ethereum e a Tecnologia Blockchain
Ethereum e a Tecnologia BlockchainEthereum e a Tecnologia Blockchain
Ethereum e a Tecnologia Blockchain
 

Blockchain e Bitcoin Introdução e Prática com C#

  • 1. BLOCKCHAIN & BITCOIN: INTRODUÇÃO E PRÁTICA COM C# Alisson Solitto da Silva
  • 2. Alisson Solitto da Silva, 23 anos Técnico em Informática Técnico em JAVA/WR Bacharel em Ciência da Computação MBA em Gestão de TI Mestrando em Ciência da Computação 6 anos de experiência com o desenvolvimento de software
  • 3. Alisson Solitto da Silva, 23 anos Blog: https://solitto.com.br/ GitHub: https://github.com/alissonsolitto Linkedin: https://www.linkedin.com/in/solitto Lattes: http://lattes.cnpq.br/7754813473705418 Simplechain: https://simplechain.com.br/ IzyMobile: http://izymobile.com/
  • 4. Bitcoin - História ■ White Paper Bitcoin: A Peer-to-Peer Electronic Cash System ■ Ano: 2008 – Crise dos EUA
  • 5. Unidades Bitcoin ■ No caso do Real a moeda é dividida até sua centésima parte que é o centavo. ■ 1 CENTAVO = R$ 0,01 ■ Por ser uma moeda digital o Bitcoin é divisível até a centésima milionésima parte conhecida como “SATOSHI”em homenagem ao seu criador.
  • 6.
  • 9. Blockchain – O que é? ■ A blockchain funciona como um livro-razão da contabilidade, controlando todos os créditos e débitos de várias contas. ■ Principal benefício está na descentralização da sua base de dados, visando a segurança e a confiabilidade de suas transações. ■ Desta forma cria-se uma rede universal, publica e compartilhada.
  • 10.
  • 11. O que é? ■ O blockchain nada mais é do que uma lista encadeada. ■ As informações referentes a transação são armazenadas em um bloco de dados. ■ HASH: SHA-256
  • 12. ■ Cada nó na rede é um computador e qualquer computador pode fazer parte da blockchain, para fazer parte da rede é necessário fazer uma cópia de toda a base de dados da rede, após isso a principal tarefa do nó é validar e repassar os dados das transações. ■ https://www.blockchain.com/pt/btc/unconfirmed-transactions
  • 13. Vantagens ■ Transparência: todas as transações que ocorrem na rede são publicas e disponíveis de forma acessíveis para todos. ■ Descentralização: não há necessidade de um intermediário nas transações, é possível transferir dinheiro entre pessoas de qualquer lugar do mundo sem uma instituição financeiro como nos métodos convencionais. ■ Inalterável: as transações feitas na rede são imutáveis, ou seja, não podem ser alteradas ou deletadas. ■ Baixo custo: Por não haver uma instituição financeira intermediando as transações o custo é muito menor.
  • 14. Blockchain – Como funciona?
  • 17. Proof of Work ■ O maior trabalho computacional da rede é a criação de um hash válido ■ NONCE (N = Número e Once = Uma vez). ■ Bitcoin utiliza o método hashcash => hash deve ser codificado com um número n de zero bits.
  • 18. Exemplo ■ "Olá, mundo! 0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64 ■ "Olá, mundo! 1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8 ■ "Olá, mundo! 2" => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7 ■ ... ■ "Olá, mundo! 4248" => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965 ■ "Olá, mundo! 4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6 ■ "Olá, mundo! 4250" => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9
  • 19. Consenso ■ Broadcast do novo bloco ■ Validação ■ Aceitação
  • 20. Show me the code! C# ■ Vamos programar uma Wallet de Bitcoin!!
  • 21. Show me the code! C#
  • 22. Show me the code! C#
  • 23. Show me the code! C# Key privateKey = new Key(); PubKey publicKey = privateKey.PubKey; Console.WriteLine(publicKey); Console.WriteLine(publicKey.GetAddress(Network.TestNet));
  • 24. Show me the code! C# ■ https://live.blockcypher.com/btc-testnet ■ https://bitcoinfaucet.uo1.net/
  • 25. Gerando chaves com senha ■ Mnemonic mnemo = new Mnemonic(Wordlist.PortugueseBrazil, WordCount.Twelve); ■ ExtKey pkey = mnemo.DeriveExtKey(senha);
  • 26. Buscar Saldo Money SpentCoins = 0; Money ReceivedCoins = 0; //Criando address BTC BitcoinAddress btcAddress = BitcoinAddress.Create(address, Network.TestNet); //Criando Client QBitNinjaClient var client = new QBitNinjaClient(Network.TestNet);
  • 27. Buscar Saldo //Percorre todas as transações do endereço client.GetBalance(btcAddress).Result.Operations.ToList().ForEach(x => { if (x.Amount > 0) //Recebido ReceivedCoins += x.Amount; else //Enviado SpentCoins += x.Amount; });
  • 28. Buscar Saldo Console.WriteLine("Recebidos: " + ReceivedCoins.ToUnit(MoneyUnit.BTC)); Console.WriteLine("Enviados: " + SpentCoins.ToUnit(MoneyUnit.BTC)); Console.WriteLine("Total: " + (ReceivedCoins + SpentCoins).ToUnit(MoneyUnit.BTC));
  • 29. Histórico de Transações client.GetBalance(btcAddress).Result.Operations.ToList().ForEach(x => { //Detalhes da transação var tran = client.GetTransaction(x.TransactionId).Result; Console.WriteLine("----------------------------------------------"); Console.WriteLine("TransactionId" + x.TransactionId.ToString()); Console.WriteLine("Amount" + x.Amount.ToUnit(MoneyUnit.BTC)); Console.WriteLine("BlockId" + x.BlockId.ToString()); Console.WriteLine("Height" + x.Height); Console.WriteLine("Confirmations" + x.Confirmations); Console.WriteLine("Fees" + tran.Fees.ToUnit(MoneyUnit.BTC)); });
  • 31. Criar uma transação ■ Chave privada ■ Endereço de destino ■ Quantidade de BTC ■ Taxa de transação
  • 32. Criar uma transação var btcSecret = pkey.PrivateKey.GetBitcoinSecret(Network.TestNet); //Enviando para... BitcoinAddress btcAddress = BitcoinAddress.Create(addressSend, Network.TestNet);
  • 33. //Buscando TODAS saídas validas para gastar var client = new QBitNinjaClient(Network.TestNet); client.GetBalance(btcSecret.GetAddress(), true).Result.Operations.ToList().ForEach(x => { if (x.Confirmations > 0) { x.ReceivedCoins.ForEach(r => { if (r.TxOut.Value > Money.Satoshis(0)) { lstCoin.Add(new Coin() { Outpoint = r.Outpoint, TxOut = r.TxOut }); } }); } }); //Convertendo as saidas em ICOIN Coin[] coin = lstCoin.Select((o, i) => new Coin(o.Outpoint, o.TxOut)).ToArray();
  • 34. //TransactionBuilder montando a transação complexa TransactionBuilder txBuilder = new TransactionBuilder(); //Politica que define a taxa minima de transacao txBuilder.StandardTransactionPolicy.MinRelayTxFee = FeeRate.Zero; //False para permitir transações com poucos satoshis txBuilder.DustPrevention = false; Transaction tx = txBuilder .AddKeys(btcSecret.PrivateKey) .AddCoins(coin) .Send(btcAddress.ScriptPubKey, moneySend) .SetChange(btcSecret.ScriptPubKey) .SendFees(fee) .BuildTransaction(true);
  • 35. BroadcastResponse broadcastResponse = client.Broadcast(tx).Result; if (!broadcastResponse.Success) { Console.WriteLine(string.Format("Code: {0}", broadcastResponse.Error.ErrorCode)); Console.WriteLine("Mensagem: " + broadcastResponse.Error.Reason); } else { Console.WriteLine("Sucesso ====> " + tx.GetHash().ToString()); }