Page 27 - Revista_60.pub
P. 27

A PROGRAMAR









         Blockchain





              Muitos dizem que vai mudar o mundo, outros acreditam      Um exemplo do ficheiro genesis.json seria:
         que pode vir a ser um problema. A verdade é que está a revo-
         lucionar  a  forma  como  se  fazem  e  pensam  algumas  coisas,   {
         mas é um tecnologia tão recente que ainda faz com que haja       "config": {
         pouca informação. Blockchain é um conceito, um conceito defi-          "chainId": 15,
         nido como "base de dados descentralizada". A primeira imple-          "homesteadBlock": 0,
                                                                        "eip155Block": 0,
         mentação deste conceito foi o bitcoin e desde então muita coi-          "eip158Block": 0
         sa aconteceu.                                              },
                                                                    "nonce": "0x0000000000000042",
              Mas sobre isso não me vou alongar muito porque a in-      "timestamp": "0x0",
         ternet está repleta destas definições. Onde me pretendo alon-      "parentHash":
                                                                "0x000000000000000000000000000000000000000000000
         gar um pouco mais é mostrando ao leitor como pode fazer para                              0000000000000000000",
         criar/desenvolver algo.                                    "gasLimit": "0xffffffff",
                                                                    "difficulty": "0x400",
              Existem  muitas  implementações  do  conceito  de       "mixhash":
         blockchain, mas o que vai ser usado aqui é a ethereum, que foi   "0x000000000000000000000000000000000000000000000
         a primeira a trazer smart contracts. De forma muito breve, os                              0000000000000000000",
                                                                    "coinbase":
         smart  contracts  permitem  desenvolver  ações  dentro  da   "0x3333333333333333333333333333333333333333",
         blockchain.                                                "alloc": { }
                                                                }
              Para  que  o  leitor  entenda  melhor  porque  é  que  estas
         "ações  dentro  da  blockchain"  são  tão  importantes,  passo  a      Cada  um  destes  parâmetros  tem  um  significado,  o
         explicar.  Sem  os  smart  contracts  as  unicas  ações  realizadas   qual devem procurar na internet.
         numa blockchain eram transações, ou seja, funcionava apenas
         como  banco  descentralizado.  Os  smart  contracts  permitem      Posto isto, deve iniciar-se o nó, como o comando:
         programar, dando a possibilidade de se fazer qualquer coisa.
                                                                $ geth --identity "MyTestNetNode" --nodiscover
              Para não alongar muito, não irei entrar em muitos deta-            --networkid 15 --maxpeers 0 --datadir
         lhes,  mas  numa  blockchain  (base  de  dados  descentralizada)             ~/.ethereum_private init genesis.json
         todos os dados são partilhados por todos os nós que estiverem
         ligados entre si e todos terão os mesmo dados.               Este  comando  apenas  gera  os  dados  necessários

              Posto isto, vamos começar com o exemplo. Note-se que   para posteriormente poder correr o nó. De seguida, adiciona-
         apesar de ser uma tecnologia muito recente, já existem formas   se uma nova conta:
         diferentes  de  para  fazer  as  mesmas  ações,  logo,  o  que  vou   $ geth account new --datadir ~/.ethereum_private/
         apresentar  aqui  não  é  a  única  ferramenta  existente,  mas  na
         minha opinião a melhor.                                apenas colocando a senha. No final da execução será apre-
                                                                sentado um código hash do género 0x9c39fve54w(...). Esse
              Antes  de  começar  aqui  apresento  o  que  é  necessário   código deve ser utilizado para executar o seguinte comando:
         instalar: nodejs, geth, ethereum wallet, metamask (chrome ou
         firefox), ganache (com interface), truffle.            $ geth --mine --etherbase "0x9c39fve54w(...)"
                                                                                     -rpccorsdomain "*" --ipcpath
                                                                       ~/.ethereum/geth.ipc --rpc --networkid 15
                                                                     --datadir ~/.ethereum_private -maxpeers 5 --
         Básico                                                                                    minerthreads 1
              Antes de iniciar o desenvolvimento, o leitor deve enten-  que irá iniciar o nó e começar a minar, dando assim ETH (da
         der um pouco do funcionamento do mesmo. Para tal, e como   rede privada) ao utilizador.
         primeiro exemplo, o leitor deve correr um nó da ethereum, inici-     Neste momento o leitor poderá abrir a ethereum wal-
         ando uma rede privada, e  assim podendo  executar  ações na   let  onde  verá  a  conta  principal,  a  ganhar  ETH.  É  possível
         mesma.                                                 criar  outras  contas,  fazer  deploy  de  contractos  e  interagir
              Para tal, em primeiro lugar deve existir um ficheiro ge-  com eles (se é iniciante, recomendo que o faça).
         nesis.json.  Sendo  a  blockchain  um  conjunto  de  blocos  onde      Para  terminar  esta  parte  vamos  só  importar  a  conta
         cada bloco contém referência ao  bloco anterior, é necessário   que está na rede privada para o metamask (no browser) para
         que para gerar o primeiro bloco exista um anterior, e por isso   mais tarde poder ser utilizada numa aplicação web.
         mesmo existe o genesis block, que é o primeiro e a referência
         para o bloco anterior é 0.                                   Para importar, basta ir ao icon do metamask, selecio-
                                                                nar "importar conta", no tipo selecione "json file", escolher o
                                                                ficheiro correspondente á conta desejada (esse ficheiro json



                                                           27
   22   23   24   25   26   27   28   29   30   31   32