Page 29 - Revista_60.pub
P. 29

A PROGRAMAR







          BLOCKCHAIN

                                                                ploy.  Espero  que  o  leitor  tenha  gostado  e  com  isto  tenha
         var abiArray = JSON.parse(fs.readFileSync
                (path.resolve(__dirname, './contract.json'),    aprendido um pouco mais sobre blockchain.
                                                  'utf-8'));
         var contractAddress = "0x9E4555ae3(...)";
          app.get('/usercar/:useraddress/:index', (req, res)
                                                        => {
         var contract = new web3.eth.Contract(abiArray,                   Muitos dizem que
                                           contractAddress);
         contract.methods.getUserCars
         (req.params.useraddress,                                vai mudar o mundo,
         req.params.index).call().then((receipt) => {
         res.render('usercar', { carname: receipt })
         });                                                     outros acreditam que
         })
         app.get('/add/:useraddress/:carname', (req, res) =>
         {                                                       pode vir a ser um pro-
         var contract = new web3.eth.Contract(abiArray,
                                           contractAddress);
         contract.methods.addUserCar                             blema. A verdade é que
         (req.params.carname).send({from:
                req.params.useraddress}).then((receipt) => {     está a revolucionar a
         res.send(receipt)
         });
         })                                                      forma como se fazem e
         app.listen(3000, () => console.log('Example app
                                  listening on port 3000!'))
              O     contractAddress deve ser o endereço gerado quando   pensam algumas coi-
         o contracto foi deployed. No contract.json deve estar o abi do
         contrato que pode ser encontrado na pasta onde estão os con-  sas, mas é um tecnolo-
         tratos,  em  build/contracts/UserCar.json.  E  por  fim  a  interface
         pug  num  ficheiro  de  nome  usercar.pug  dentro  do  directório   gia tão recente que ain-
         views:
                                                                 da faz com que haja
         doctype html
         html(lang='en')
         head                                                    pouca                  informação.
         title Car
         body
         h1 User Car                                             Blockchain é um con-
         #container.col
         p= carname                                              ceito, um conceito defi-
         Com isto, o leitor pode agora executar o comando:
                                                                 nido como "base de
         $nodejs index.js

         para iniciar a webapp e postariormente adicionar carros a um   dados       descentraliza-
         utilizador através do url http://localhost:3000/add/endereco-da-
         conta-utilizada-para-fazer-deploy-do-contrato/nome-do-carro.   da".
              Caso tudo corra bem, receberá uma reposta de suces-
         so.  Para  ver  os  carros  de  qualquer  utilizador,  deve  ser  feito
         através do url http://localhost:3000/usercar/endereco-da-conta-
         utilizada-para-fazer-deploy-do-contrato/index  e  poderá  ver  um
         simples output que deve conter o nome do veiculo, por exem-
         plo, para o primeiro carro adicionado, deve pesquisar pelo in-
         dex 0 e deve aparecer o nome que adicionou. O endereço da
         conta  utilizada  é  normalmente  a  primeira  conta  no  ganache,
         aquela que tiver menos eth, pois foi utilizado para fazer o de-
         AUTOR



                      Escrito por Bernardo Vieira
                      Licenciado em Engenharia Informática pelo ISEC. Comecei a programar por diversão aos 15, quando com
                      amigos comecei a jogar online. Curioso o suficiente para explorar algo que me pareça bom e quando
                      tenho possibilidade gosto de escrever sobre o que explorei. Com especial interesse em blockchain, iot e
                      devops. @obernardovieira



                                                           29
   24   25   26   27   28   29   30   31   32   33   34