Blockchain com JavaScript

Fff7258836f20ea66b061b49a51fe8dd?s=47 Beto Muniz
November 24, 2018

Blockchain com JavaScript

Apresentação com exemplos, benefícios e possibilidades da utilização de Blockchain com JavaScript em aplicações reais.

Fff7258836f20ea66b061b49a51fe8dd?s=128

Beto Muniz

November 24, 2018
Tweet

Transcript

  1. Blockchain com JavaScript

  2. Sou Beto Muniz @obetomuniz

  3. Sou Beto Muniz @obetomuniz minasdev.org

  4. Sou Beto Muniz @obetomuniz https://developers.google.com/experts/people/beto-muniz

  5. None
  6. import SHA256 from "js-sha256" class Block { constructor(index, data, previousHash)

    { this.index = index this.timestamp = new Date() this.data = data this.previousHash = previousHash this.hash = this.calcHash() } calcHash() { const sha = SHA256.create() sha.update(`${this.index}${this.timestamp}${this.data}${this.previousHash}`) return sha.hex() } static generator(block = { index: 0, hash: "0" }, data = "genesis") { return new Block(block.index, data, block.hash) } } https://github.com/openblockchains/awesome-blockchains/blob/master/blockchain.js/blockchain.js
  7. None
  8. None
  9. Blockchain “Cadeia de Blocos”

  10. História do Blockchain

  11. 2008 O conceito é publicado por Satoshi Nakamoto

  12. 2009 Começa a blockchain Bitcoin

  13. 2014 Surge o termo “Blockchain 2.0”

  14. 2015 Surge a blockchain Ethereum Criada por Vitalik Buterin

  15. 2016 +1 bilhão de dólares investidos https://www.businessinsider.com/blockchain-technology-is-already-a-1-billion-dollar-industry-and-its-just-the-beginning-2016-6

  16. 2018 +1600 criptomoedas +500 bilhões de reais de valor de

    mercado +2000 aplicações descentralizadas na Ethereum https://en.wikipedia.org/wiki/List_of_cryptocurrencies https://coinmarketcap.com | https://www.stateofthedapps.com
  17. 2019 ???

  18. Conceito Blockchain

  19. É um banco de dados distribuído com uma lista (chain)

    de registros (blocks) interligados e seguros (linked hashes)
  20. Linked Hashes?!

  21. Crypto Hashes.

  22. E como funciona?

  23. Hashing Criptografia P2P Network Nodes Assinaturas Digitais Proof of Steak

    Proof of Authority Turing Completude InterPlanetary File System Consensus Protocols Delegated Proof of Stake Byzantine Fault Tolerance Proof of Work Smart Contracts Sidechains Tokens ÐApps Consortium blockchains
  24. None
  25. Mas então como aprender Blockchain?

  26. None
  27. A natureza da conceito blockchain não é linear E na

    prática…
  28. Composição de conceitos

  29. None
  30. Bitcoin blockchain Hashing Criptografia P2P Network Nodes Moeda Digital Proof

    of Work Imutabilidade
  31. Ethereum blockchain Smart Contracts Criptografia ÐApps Turing Completude Tokens Proof

    of Steak Imutabilidade
  32. Blockchain NÃO é o Bitcoin Bitcoin É um caso de

    uso do conceito blockchain
  33. BlockchainS “CadeiaS de Blocos”

  34. https://votolegal.com.br Justiça Eleitoral

  35. https://www.techrepublic.com/article/ibm-taps-blockchain-to-combat-food-contamination-in-global-supply-chain Logística

  36. https://www.techrepublic.com/article/why-blockchain-could-be-your-next-form-of-id-as-a-world-citizen Crises Humanitárias

  37. https://techcrunch.com/2017/04/26/spotify-acquires-blockchain-startup-mediachain-to-solve-musics-attribution-problem Música e Streaming

  38. https://www.criptomoedasfacil.com/odebrechet-cria-ferramenta-blockchain-para-monitorar-licitacoes-em-acordo-com-o-ministerio-publico-federal Anti-Corrupção Política

  39. https://www.bndes.gov.br/wps/portal/site/home/imprensa/noticias/conteudo/bndes-lanca-consulta-publica-em-busca-de-componentes-blockchain-para-o-bndestoken Gestão Pública

  40. https://www.iota.org/get-started/what-is-iota Internet das Coisas

  41. None
  42. Transparência de dados Governança Descentralizada Performance Segurança Privacidade* Rastreabilidade de

    Informação Imutabilidade Escalabilidade Tokenização Aplicabilidade … Open Source Comunidade Baixo Custo
  43. Como Aplicar?!

  44. JavaScript

  45. História do JavaScript

  46. None
  47. None
  48. None
  49. None
  50. None
  51. None
  52. JAVASCRIPT EVERYWHERE

  53. Aplicações Mobile Nativas Browser Aplicações para SmartTVs Banco de Dados

    Aplicações de Linha de Comando Aplicações Desktop Sistemas Operacionais Blockchain Servidor Games* Progressive Web Apps Internet das Coisas
  54. Utilizada por grandes empresas Ecossistema vasto Multiparadigma Gerada para um

    mundo conectado Fácil de iniciar os estudos Mercado abundante e generoso Melhoria contínua Comunidade vibrante e ativa … Auxilia no aprendizado de outras linguagens Linguagem mais popular do mundo
  55. 2019 2020, 2021, …

  56. None
  57. JavaScript + Blockchain

  58. Ethereum “com” JavaScript https://www.ethereum.org

  59. Smart Contracts https://www.ethereum.org

  60. https://www.ethereum.org/token pragma solidity ^0.4.20; contract HubConToken { mapping (address =>

    uint256) public balanceOf; function HubConToken(uint256 initialSupply) public { balanceOf[msg.sender] = initialSupply; } function transfer(address _to, uint256 _value) public returns (bool success) { require(balanceOf[msg.sender] >= _value); require(balanceOf[_to] + _value >= balanceOf[_to]); balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; return true; } }
  61. https://github.com/s-tikhomirov/smart-contract-languages Vyper Solidity LLL - Lisp* Ethereum bytecode Bamboo eWASM

    - WebAssembly* Serpent - Python* SolidityX Pyramid Flint Yul Babbage Mutan - C* Idris Lolisa L4 Formality Logikon
  62. ÐApps Aplicações Descentralizadas https://www.ethereum.org

  63. Centralizadas Ponto de Falha Único https://www.ethereum.org

  64. Distribuídas Micro Services Centralizadas Ponto de Falha Único https://www.ethereum.org

  65. Distribuídas Micro Services Descentralizadas Blockchains Centralizadas Ponto de Falha Único

    https://www.ethereum.org
  66. web3.js Ethereum JavaScript API https://github.com/ethereum/web3.js

  67. import web3 from "web3" const ORIGEM = “0xf4e36a1c193e687b459f22d3512dd0cfec289fd3" const DESTINO

    = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe611" const HubConTokenSmartContract = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe610" const HubConTokenABIObject = { ... } const SmartContract = await new web3.eth.Contract( HubConTokenABIObject, HubConTokenSmartContract ) SmartContract.methods.transfer(DESTINO, 1).send({ from: ORIGEM })
  68. import web3 from "web3" const ORIGEM = “0xf4e36a1c193e687b459f22d3512dd0cfec289fd3" const DESTINO

    = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe611" const HubConTokenSmartContract = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe610" const HubConTokenABIObject = { ... } const SmartContract = await new web3.eth.Contract( HubConTokenABIObject, HubConTokenSmartContract ) SmartContract.methods.transfer(DESTINO, 1).send({ from: ORIGEM })
  69. import web3 from "web3" const ORIGEM = “0xf4e36a1c193e687b459f22d3512dd0cfec289fd3" const DESTINO

    = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe611" const HubConTokenSmartContract = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe610" const HubConTokenABIObject = { ... } const SmartContract = await new web3.eth.Contract( HubConTokenABIObject, HubConTokenSmartContract ) SmartContract.methods.transfer(DESTINO, 1).send({ from: ORIGEM })
  70. import web3 from "web3" const ORIGEM = “0xf4e36a1c193e687b459f22d3512dd0cfec289fd3" const DESTINO

    = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe611" const HubConTokenSmartContract = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe610" const HubConTokenABIObject = { ... } const SmartContract = await new web3.eth.Contract( HubConTokenABIObject, HubConTokenSmartContract ) SmartContract.methods.transfer(DESTINO, 1).send({ from: ORIGEM })
  71. import web3 from "web3" const ORIGEM = “0xf4e36a1c193e687b459f22d3512dd0cfec289fd3" const DESTINO

    = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe611" const HubConTokenSmartContract = "0xcc16e3c00dbbe76603fa833ec20a48f786dfe610" const HubConTokenABIObject = { ... } const SmartContract = await new web3.eth.Contract( HubConTokenABIObject, HubConTokenSmartContract ) SmartContract.methods.transfer(DESTINO, 1).send({ from: ORIGEM })
  72. None
  73. Ark com JavaScript https://ark.io

  74. https://ark.io Ark com JavaScript, PHP, Swift, Go, .NET, Python, Java,

  75. ark-js Ark Blockchain Client https://github.com/ArkEcosystem/ark-js

  76. https://marketplace.arkaces.com/dashboard

  77. Hyperledger com JavaScript https://www.hyperledger.org

  78. Chaincode https://www.hyperledger.org

  79. import shim from "fabric-shim"; class Chaincode { Init(stub) { return

    stub .putState("chave", Buffer.from("valor")) .then(() => shim.success(), () => shim.error()); } Invoke(stub) { return stub.getState("chave").then(() => shim.success()); } }; shim.start(new Chaincode());
  80. import shim from "fabric-shim"; class Chaincode { Init(stub) { return

    stub .putState("chave", Buffer.from("valor")) .then(() => shim.success(), () => shim.error()); } Invoke(stub) { return stub.getState("chave").then(() => shim.success()); } }; shim.start(new Chaincode());
  81. Lisk 100% JavaScript

  82. https://blog.github.com/2018-11-15-state-of-the-octoverse-top-programming-languages | https://insights.stackoverflow.com/survey/2018

  83. Sidechain

  84. const lisk = require('lisk-elements').default; const client = lisk.APIClient.createTestnetAPIClient(); const tx

    = lisk.transaction.transfer({ recipientId: "YOUR LISK ID", passphrase: "YOUR PASSPHRASE HERE", amount: "1", data: "Hello World" }); try { client.transactions.broadcast(tx); } catch(err) { console.log(err.message); } å https://lisk.io/documentation/lisk-elements/packages/api-client
  85. const lisk = require('lisk-elements').default; const client = lisk.APIClient.createTestnetAPIClient(); client.dapps.get({ name:

    'LiskKitties' }) .then(res => { console.log(res.data); }) https://lisk.io/documentation/lisk-elements/packages/api-client
  86. None
  87. None
  88. Obrigado! @obetomuniz