O serviço de comunicação para a criptomoeda Ripple foi desen- volvido em JavaScript (Node.js). Ele utiliza o framework Express para receber e devolver as requisições. O motivo para escolher uma lin- guagem de programação diferente é que a Ripple oferece uma API de desenvolvimento com bibliotecas já prontas para Node, a ripple-lib.
61
Para validar a utilização do gateway desenvolvido foi utilizada uma rede de desenvolvimento da Ripple. Diferente da IOTA, para se conectar a essa rede foi necessário conseguir credenciais de acesso. Essas são geradas de forma automática pela API. Outra diferença, é que cada nova conta desta rede de desenvolvimento inicia com 10 mil tokens XRP, viabilizando uma simulação real de transferência de recursos.
Diferente da Tangle, não parece ser necessária uma funcionali- dade de verificação de status de transação, uma vez que ao que tudo indica esse status é definitivo após o termino de uma chamada na rede XRP e já retorna como resposta nas chamadas da API mas, como o Coin Gateway requer a existência deste tipo de requisição, foi imple- mentado um endpoint para verificar o status. As transações realizadas como teste obtiveram uma média de duração de aproximadamente 4 segundos. Abaixo, as descrições dos endpoints do módulo:
• transactionstatus - Utilizada para buscar o status de uma tran- sação, recebe como parâmetros o ID da transação, o endereço e o valor. Com estes dados, é utilizada a api Ripple para validar se a transação desejada está já está na última versão do livro-razão e retornar seu resultado, se foi para o endereço e possui status de sucesso.
• transfer - Utilizada para realizar uma transferência, recebe como parâmetros o endereço e o valor. A transação é preparada com a api Ripple, com sua devida assinatura e configuração de expiração através da versão do livro-razão. Com a transação preparada, ela é submetida para a rede, e retorna o Id da transação.
• getaddress - Utilizado para gerar um endereço na criptomoeda. No contexto do ambiente experimental, devido a necessidade de credencias de acesso, foi utilizado um endereço fixo.
4.6 BALANCE CONTROL
O módulo Balance Control foi desenvolvido em Python utili- zando o framework web Flask para envio e recebimento de requisições. Em sua inicialização, após se registrar no Service Registry, é buscada a listagem de criptomoedas disponíveis nele através do endpoint list- cryptos, armazenando os dados de serviço delas em memória. Abaixo, as descrições dos endpoints do módulo:
• listpaymentoptions - Recebe como parâmetro a quantidade dese- jada e retorna após uma busca nas criptomoedas em memória,
62
seus endereços e preços.
• transfer - Registra uma transfência, recebe como parâemtro o en- dereço, o valor e a criptomoeda desejada. Requisita então para o respectivo Coin Gateway a realização da transferência, retor- nando o ID da transação.
4.7 TRANSACTION WATCHER
Módulo para rastreamento das transações, foi desenvolvido em Python utilizando o framework web Flask para envio e recebimento de requisições. As bibliotecas utilizadas foram Flask, json, threading e time. Para armazenamento de dados, foi optado pela utilização do banco já utilizado pelo Product Gateway, dada a natureza experimental do ambiente e ambiente restrito. Apesar desta reutilização, o módulo não ficará indisponível caso o serviço Product Gateway esteja fora do ar, apenas se comportará como se não houvessem transações sendo rastreadas no momento. Em sua inicialização, após se registrar no Service Registry, é buscada a listagem de criptomoedas disponíveis nele através do endpoint listcryptos, armazenando os dados de serviço delas em memória.
Em sua inicialização, também é iniciada uma thread de rastrear as transações. O rastreio funciona buscando no BD todas os pedidos com status "Confirmando Pagamento"e para cada pedido retornado, é validado o status de sua transação através do módulo Coin Gateway da criptomoeda utilizada no pedido. Caso o status da transação seja de que ela foi concluída, o pedido tem seu status atualizado no BD para "Confirmado"e o endpoint de confirmtransaction do Product Gateway é utilizado. Esta thread dispara o processo de rastreio a cada 1 segundo. Este módulo não possui endpoints por ter seu funcionamento automático pela thread de sua inicialização.
4.8 MARKETPLACE
O módulo Marketplace é a porta de acesso aos produtos da ar- quitetura. Foi desenvolvido em Python utilizando o framework web Flask para envio e recebimento de requisições. As bibliotecas utiliza- das foram Flask e json. Os produtos nele registrados são armazenados em memória. Abaixo, as descrições dos endpoints do módulo:
63
tro os dados do serviço de Product Gateway.
• list - Sem parâmetros, tras a listagem de todos os produtos regis- trados.
• search - Recebe como parâmetro o tipo do produto e retorna os produtos registrados que forem daquele tipo.
65
5 RESULTADOS OBTIDOS
Para análise do ambiente experimental, concebeu-se uma forma de testá-lo, obtendo dados e os analisando. O teste foi efetuar 100 tran- sações com cada uma das criptomoedas que tiveram um Coin Gateway implementado ou seja, 100 transações com IOTA e 100 transações com Ripple. Depois sucedeu a análise do tempo dispendido nas transações. Para executar o teste, utilizou-se um pequeno projeto em Python, que representou uma instância da arquitetura que fez uso somente de dpois módulos, Balance Control e Coin Gateway. Essa medida foi ado- tada para provar a diversidade possível com a arquitetura, pois uma instância dela não necessita de todos os módulso para operar. Esta in- tância comunicou-se com outra, através dos Marketplace e do Balance Control para realização de operações. Houveram duas execuções, uma para as transações em IOTA e outra para as transações em Ripple. Abaixo, quais operações eram feitas pelo script em cada uma das 100 repetições:
1. Requisita ao marketplace através da operação search por um pro- duto específico.
2. Ordena os produtos retornados por preço e seleciona o de menor preço.
3. Requisita a reserva do produto de menor preço através da ope- ração. book de seu Product Gateway, recebendo como retorno os dados do pedido.
4. Utiliza o endereço de IOTA contido nos dados do pedido e requi- sita ao Balance Control o pagamento do preço do pedido, através da operação transfer.
5. Com os dados da transação retornados do Balance Control, re- quisita ao Product Gateway a confirmação do pagamento através da operação pay.
A Figura 18 representa as trocas de comunicações entre as ins- tancias da arquitetura no momento em que é feita a operação de buscar de produtos. Para isto, TestScript executa a operação search do mó- dulo marketplace, que retornar os produtos, com o endereço dos seus Balance Control, além de demais informações dos produtos.
66
Figura 18 – Troca de requisições na operação search
A Figura 19 representa as trocas de comunicações entre as ins- tancias da arquitetura no momento em que é feita a operação de reserva de produto. Para isto, TestScript executa a operação 1.book do módulo Balance Control do produto desejado. O pedido de reserva é então feito ao módulo do dispositivo IoT, com sua operação 2.book, que retorna o sucesso ou não do pedido de reserva. No caso de sucesso, é executada a operação 3.listpaymentoptions do Balance Control, que por sua vez requisita de cada Coin Gateway os endereços de suas carteira através das operações 4. e 5. getaddress, devolvendo ao Balance Controle, que por fim encerra as requisições retornando ao TestScript o identificador do pedido e os endereços das carteiras
67
Figura 19 – Troca de requisições na operação book
A Figura 20 representa as trocas de comunicações dentro da arquitetura do TestScript no momento em que é feita a operação trans- ferência para a carteira recebida com seu pedido. Para isto, TestScript executa a operação 1.transfer do seu próprio módulo Balance Control, que por sua vez executa a operação 2.transfer a criptomoeda da carteira informada
Figura 20 – Troca de requisições na operação transfer
A Figura 21 representa as trocas de comunicações entre as ins- tancias da arquitetura no momento em que é feita a operação de infor-
68
mar o pagamento. Para isto, TestScript executa a operação 1.pay do módulo Balance Controle, que registra a mudança de status do pedido informado e o id da transação.
Figura 21 – Troca de requisições na operação pay
A Figura 22 representa as trocas de comunicações quando o mó- dulo Transaction Watcher valiad os status das transações que tiveram seu pagamento informado. Para isto, o módulo executa a operação 1.transactionstatus do módulo Coin Gateway das tranações que tive- ram pagamento informado. Com o status confirmado pelo coin gateway, o transaction watcher então utiliza a operação 2.confirmtransaction do módulo Product Gateway, que por sua vez executa a operação 3.confirm do dispositivo IoT que aguardava a transação confirmada.
69
Figura 22 – Troca de requisições na operação transactionstatus Após a execução, os dados dos tempos das transações foram extraídos, para geração dos gráficos que serão apresentados a seguir. Os termos utilizados no gráfico, são o do tempo de uma transação, que consiste na soma do tempo levado para fazer um pagamento com o tempo levado para confirmar o pagamento.
Figura 23 – Dispersão das transações IOTA
Para IOTA, o tempo total de execução foi de 49 minutos e 50 segundos. A duração média de transação foi de aproximadamente 135
70
segundos sendo 13% do tempo gasto com o pagamento e 87% com a confirmação do pagamento. Analisando a dispersão dos dados, em conjunto com seu desvio padrão na figura 23, 36% das transações ficam além do desvio, indicando que os tempos de transação de IOTA têm considerável variação.
Figura 24 – Dispersão das transações Ripple
Ao realizar a mesma análise sobre as transações de Ripple, que possuem o tempo de execução de 17 minutos e 39 segundos, tendo um tempo médio por transação de 9,5 segundos e um desvio padrão de 1,33 segundos, com 21% das transações ficando foram do intervalo compreendido pelo desvio padrão sobre a média, ilustrado na figura 24. O tempo de cada transação em Ripple, ficou com uma divisão de 33,38% em pagamento e 66,62% para pagamento.
71
Figura 25 – Proporção do tempo de transação de cada criptomoeda Na figura 25 é possível comparar a diferença na proporção de tempo utilizada por cada criptomoeda nos esforço para realização de pagamento e para confirmação da transação. IOTA gasta próximo de um décimo de seu tempo com pagamento, quanto Ripple chega a um terço.
73
6 CONCLUSÃO E TRABALHOS FUTUROS
Este trabalho teve como proposta, conceber uma arquitetura para controle de micro transações financeiras em um contexto de EoT, baseada em microsserviços. A fim de alcançar este objetivo, foram pes- quisados e analisados conceitos, propostas e utilizações de IoT, Block- chains, Microsserviços e EoT, ora integrados, ora isolados. A arqui- tetura proposta possuía gateways de comunicação para criptomoedas, dispositivos IoT, e monitoramento de transações destes dispositivos, além de um módulo para autenticação dos participantes da arquite- tura. A flexibilidade necessária em um ambiente aonde haja variedade de tecnologias envolvidas, que estão em constante evolução, como IoT e blockchains, levou a utilização de microsserviços.
Para validação da proposta, foi desenvolvido um ambiente expe- rimental. Nele, o gateway de comunicação com criptomoedas (Coin Ga- teway), realizava as consultas e transferências com criptomoedas, trans- ferindo fundos e consultando status de transações submetidas através dele. Já o gateway de comunicação com os dispositivos IoT, chamado de Product Gateway, é o serviço responsável por realizar as comunica- ções que os dispositivos necessitassem, consultando os produtos que o dispositivo tinha, formas de pagamento, efetuando reservas de itens e confirmando transações. O Balance Control realiza o controle das mi- cro transações, sendo responsável por informar as formas de pagamento para o Product Gateway e validando os preços nas criptomoedas que serão transferidos para os Coin Gateway. O módulo de monitorma- nento de transações (Transaction Watcher), é incumbido de constante- mente validar as transações passadas pela arquitetura, notificando aos Product Gateway quando confirmadas. O módulo de autenticação - Service Registry, valida os elementos da rede, encaminhando para cada um as chaves de acesso aos serviços que necessitassem.
O ambiente experimental, consistiu de uma placa Wemos D1 para representar os dispositivos IoT, um Raspberry Pi para os Coin Gateways, Balance Control, Service Registry e Product Gateway e um outro Raspberry Pi para o Marketplace. Foram utilizadas as linguagens Python, JavaScript e C, a fim de demonstrar a flexibilidade da arquite- tura. A comunicação era realizada através da internet, com requisições utilizando o framewerk Flask. As criptomoedas selecionadas para os testes foram IOTA e Ripple, aonde para cada uma, foram realizadas 100 transações e analisados seus tempos de execução.
74
nham tido uma dispersão grande, os resultados apresentados foram satisfatórios, levando a crer que a arquitetura é apta a atender a neces- sidade da proposta em um contexto real.
Como trabalhos futuros, foi identificada a necessidade de um teste em um ambiente experimental mais complexo, com formas de co- municação distintas e mais elementos como outras criptomoedas e di- versificados tipos de dispositivos IoT. Além de uma melhora que torne possível analisar o tempo dispendido em comunicação entre os módulos para análise da performance da arquitetura, considerando que o teste feito não diferenciou o tempo das transações neste aspecto. A necessi- dade de um dispositivo precisar efetuar transações de compra através de outro marketplace dando inicio a um novo ciclo de interações, também parece uma boa maneira de validação. Também se faz necessária uma abordagem mais segura na forma da comunicação entre os serviços.
75
REFERÊNCIAS
AGOSTINHO, B. M. et al. Smart comm: A smart home middleware supporting information exchange. 44th Annual Conference of the IEEE Industrial Electronics Society, IECON., Oct 2018. ISSN 2577-1647. AL-FUQAHA, A. et al. Internet of things: A survey on enabling technologies, protocols, and applications. IEEE Communication Surveys & Tutorials., v. 17, n. 4, 2015.
Al-Sarawi, S. et al. Internet of things (iot) communication protocols: Review. In: 2017 8th International Conference on Information Technology (ICIT). [S.l.: s.n.], 2017. p. 685–690.
ARMKNECHT, F. et al. Ripple: Overview and outlook. In: SPRINGER. International Conference on Trust and Trustworthy Computing. [S.l.], 2015. p. 163–180.
ATZORI, L.; IERA, A.; MORABITO, G. The internet of things: A survey. Comput. Netw., Elsevier North-Holland, Inc., New York, NY, USA, v. 54, n. 15, p. 2787–2805, out. 2010. ISSN 1389-1286. <http://dx.doi.org/10.1016/j.comnet.2010.05.010>.
BACK, R. P.
Análise Comparativa de Técnicas de Integração entre Microsserviços — Universidade Federal de Santa Catarina, Florianopolis, SC, Brasil, 2016.
BARROZO, L. M.
Descoberta semântica de microservices em contêineres — Universidade Federal de Santa Catarina, Florianopolis, SC, Brasil, 2016.
Bröring, A. et al. Enabling iot ecosystems through platform interoperability. IEEE Software, v. 34, n. 1, p. 54–61, Jan 2017. Butzin, B.; Golatowski, F.; Timmermann, D. Microservices approach for the internet of things. p. 1–6, Sep. 2016.
Centenaro, M. et al. Long-range communications in unlicensed bands: the rising stars in the iot and smart city scenarios. IEEE Wireless Communications, v. 23, n. 5, p. 60–67, October 2016.
76
CHAIN, I. IoT Chain - A high-security lite IoT OS - White Paper. 2018. <https://iotchain.io/whitepaper/ITCWHITEPAPER.pdf>. Acessado em 12/10/2019.
CHAIN, R. Ruff IoT Blockchain Whitepaper. 2017.
<https://github.com/RuffNotes/RuffChain/blob/master/WhitePaper.md>. Acessado em 12/10/2019.
CHASE, B.; MACBROUGH, E. Analysis of the xrp ledger consensus protocol. ArXiv, abs/1802.07242, 2018.
CHRISTIDIS, K.; DEVETSIKIOTIS, M. Blockchains and smart contracts for the internet of things. IEEE Access, v. 4, p. 2292–2303, 2016. ISSN 2169-3536.
DAI, H.-N.; ZHENG, Z.; ZHANG, Y. Blockchain for internet of things: A survey. ArXiv, abs/1906.00245, 2019.
FAMILIAR, B. Microservices, IoT, and Azure: Leveraging DevOps and Microservice Architecture to Deliver SaaS Solutions. Berkeley, CA: Apress, 2015. 133-163 p. ISBN 978-1-4842-1275-2.
FARELL, R. An analysis of the cryptocurrency industry. 2015. <https://repository.upenn.edu/>. Acessado em 25/06/2019.
FERNáNDEZ-CARAMéS, T. M.; FRAGA-LAMAS, P. A review on the use of blockchain for the internet of things. IEEE Access, v. 6, p. 32979–33001, 2018. ISSN 2169-3536.
FOUNDATION, I. The Industry Marketplace. 2019.
<https://industry.iota.org/industrymarketplace>.Acessadoem14/10/2019.
Granjal, J.; Monteiro, E.; Sá Silva, J. Security for the internet of things: A survey of existing protocols and open research issues. IEEE Communications Surveys Tutorials, v. 17, n. 3, p. 1294–1312, thirdquarter 2015. ISSN 1553-877X.
Harris III, A. F. et al. Bluetooth low energy in dense iot environments. IEEE Communications Magazine, v. 54, n. 12, p. 30–36, December 2016. ISSN 0163-6804.
HUCKLE, S. et al. Internet of things, blockchain and shared economy applications. Procedia computer science, Elsevier, v. 98, p. 461–466, 2016.
77
Jamshidi, P. et al. Microservices: The journey so far and challenges ahead. IEEE Software, v. 35, n. 3, p. 24–35, May 2018. ISSN 0740-7459.
KRISHNAMACHARI, B. et al. I3: An iot marketplace for smart communities. In: ACM. Proceedings of the 16th Annual International Conference on Mobile Systems, Applications, and Services. [S.l.], 2018. p. 498–499.
Krylovskiy, A.; Jahn, M.; Patti, E. Designing a smart city internet of things platform with microservice architecture. p. 25–30, Aug 2015. LEWIS, J.; FOWLER, M. Microservices. martinfowler. com, 2014. Liu, Y. et al. LightChain: A lightweight blockchain system for industrial internet of things. IEEE Transactions on Industrial Informatics, v. 15, n. 6, p. 3571–3581, June 2019.
LOUGEE, R.; PURESWARAN, V. The Economy of Things - Extracting new value from the Internet of Things. 2015.
<https://www.ibm.com/downloads/cas/AVRE308E>. Acessado em 06/06/2019.
LUCIO, J. P. D.
ANÁLISE COMPARATIVA ENTRE ARQUITETURA MONOLÍ- TICA E DE MICROSSERVIÇOS — Universidade Federal de Santa Catarina, Florianopolis, SC, Brasil, 2017.
Manimuthu, A. et al. A literature review on bitcoin: Transformation of crypto currency into a global phenomenon. IEEE Engineering Management Review, v. 47, n. 1, p. 28–35, Firstquarter 2019. ISSN 0360-8581.
Mišura, K.; Žagar, M. Data marketplace for internet of things. In: 2016 International Conference on Smart Systems and Technologies (SST). [S.l.: s.n.], 2016. p. 255–260.
MUKHOPADHYAY, U. et al. A brief survey of cryptocurrency systems. p. 745–752, Dec 2016.
NAKAMOTO, S. et al. Bitcoin: A peer-to-peer electronic cash system. 2008.
NEWMAN, S. Building microservices: designing fine-grained systems. [S.l.]: "O’Reilly Media, Inc.", 2015.
78
NGU, A. H. et al. Iot middleware: A survey on issues and enabling technologies. IEEE Internet of Things Journal., v. 4, n. 1, February 2017.
POPOV, S. The Tangle. 2018.
<https://iota.org/IOTAWhitepaper.pdf>.Acessadoem26/06/2019.
ROTTA, G.; DANTAS, M. A. R. Um estudo sobre protocolos de comunicação para ambientes de internet das coisas. Escola Regional de Alto Desempenho., 2017.
Sanchez-Gomez, J.; Sanchez-Iborra, R.; Skarmeta, A. Transmission technologies comparison for iot communications in smart-cities. In: GLOBECOM 2017 - 2017 IEEE Global Communications Conference. [S.l.: s.n.], 2017. p. 1–6.
SCHWAB, K. The Fourth Industrial Revolution. Crown Publishing Group, 2017. ISBN 9781524758875. <https://books.google.com.br/books?id=ST_FDAAAQBAJ>. SCHWARTZ, D. et al. The ripple protocol consensus algorithm. Ripple Labs Inc White Paper, v. 5, p. 8, 2014.
Sheng, Z. et al. A survey on the ietf protocol suite for the internet of things: standards, challenges, and opportunities. IEEE Wireless Communications, v. 20, n. 6, p. 91–98, December 2013. ISSN 1536-1284.
SIDDIQUI, F. et al. Secure and lightweight com- munication in heterogeneous iot environments. Internet of Things, p. 100093, 2019. ISSN 2542-6605.
<http://www.sciencedirect.com/science/article/pii/S2542660519301921>. SKWAREK, V. Blockchains as security-enabler for industrial iot- applications. Asia Pacific Journal of Innovation and Entrepreneurship, Emerald Publishing Limited, v. 11, n. 3, p. 301–311, 2017.
TEAM, T. I. IoTeX - A Decentralized Network for Internet of ThingsPowered by a Privacy-Centric Blockchain. 2018. <https://v1.iotex.io/white-paper>. Acessado em 12/10/2019. TENNANT, L. Improving the Anony-
mity of the IOTA Cryptocurrency. 2017.
79
ZHENG, Z. et al. Blockchain challenges and opportunities: A survey. International Journal of Web and Grid Services, Inderscience Publishers (IEL), v. 14, n. 4, p. 352–375, 2018.