<style> .reveal { color: #CCC; } .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { color:#EEE; } .reveal ul{ font-size: 34px; font-family: "Times New Roman", Times, serif; } </style> ## An introduction to IOTA client PoCs on System on Chip ![](https://i.imgur.com/owJpLJt.png =220x) ##### 陳志誠 (Sam Chen) <!-- Put the link to this slide here so people can follow --> ###### https://hackmd.io/@iZnScZJWRUGWFCeL6mfFEA/H1VV5N0iI#/ Note: senior software engineer from IOTA funcdation, based in Taiwan --- ## Agenda - Node and Client Application - Project: IOTA Wallet<!-- .element: class="fragment" data-fragment-index="1" --> - Project: IOTA Cashier<!-- .element: class="fragment" data-fragment-index="2" --> - PlatfromIO<!-- .element: class="fragment" data-fragment-index="3" --> - What Next<!-- .element: class="fragment" data-fragment-index="4" --> --- ## IOTA Node * The core of an IOTA network(the Tangle) * Storing, broadcasting, and validating transactions * Provides client APIs * Applications: * IRI: https://github.com/iotaledger/iri * Hornet: https://github.com/gohornet/hornet * Chronicle: https://github.com/iotaledger/chronicle.rs * GoShimmer: https://github.com/iotaledger/goshimmer * Bee: https://github.com/iotaledger/bee Note: implements consensus protocol/algorithm keep the Tangle alive recommend to use Hornet, IRI will be retired soon chronicle sotres all transactions on it. GoShimmer is still WIP by our reserch team, it implements a prototype of an IOTA network without the Coordinator purpose of Coordinator is protect the Tangle from attacks Bee: A framework for IOTA nodes, clients and applications in Rust ---- ## IOTA Client * An IOTA network user * Holds a seed for address genration * Sends transactions to the Tangle * Libraries: * iota.c: https://github.com/iotaledger/iota.c * iota.go: https://github.com/iotaledger/iota.go * iota-java: https://github.com/iotaledger/iota-java * iota.js: https://github.com/iotaledger/iota.js * iota.py: https://github.com/iotaledger/iota.py * iota.rs: https://github.com/iotaledger/iota.rs Note: Seed: An unique password that is used to generate addresses, private keys, and signatures. Seed should not public. An address is like an account belongs to a seed and holds IOTA tokens. ---- ## IOTA Documentation #### https://docs.iota.org/ ![](https://docs.iota.org/assets/docs/site-settings/3.png =400x) Note: Getting start, Terminology Run a node, write client applications today I will focus on client application on System on Chip. --- ## IOTA Wallet A text-based application that interacts with the Tangle ![](https://i.imgur.com/gcMJrjx.png) Note: Command line interface application ---- ## IOTA Wallet PoCs - ESP32 Wallet - https://github.com/oopsmonk/iota_esp32_wallet - CLI Wallet (POSIX platfrom) - https://github.com/oopsmonk/iota_cmder Note: ---- ## IOTA Wallet System Architecture ![](https://raw.githubusercontent.com/oopsmonk/iota_esp32_wallet/master/images/esp32_wallet_block_diagram.png =640x480) Note: FreeRTOS runs on ESP32 and with mbedtls library esp-wifi APIs for wifi scan and connection SNTP client fetches data and time from a NTP(Network Time Protocol) server Wallet console process user input and display results ---- ## Support Commands * _<span style="color:SteelBlue">node_info</span>_: shows node info. * _<span style="color:SteelBlue">node_info_set</span>_: sets iota node endpoint. * _<span style="color:SteelBlue">client_config</span>_: shows MWM, Depth, and Security Level. * _<span style="color:SteelBlue">client_config_set</span>_: sets MWM, Depth, Security Level. * _<span style="color:SteelBlue">seed</span>_: shows wallet seed. * _<span style="color:SteelBlue">seed_set</span>_: sets wallet seed. * _<span style="color:SteelBlue">account</span>_: shows addresses, balances, and unused address. ---- ## Support Commands * _<span style="color:SteelBlue">transactions</span>_: finds transactions by tag, addresses, or bundles * _<span style="color:SteelBlue">balance</span>_: gets balance from addresses * _<span style="color:SteelBlue">send</span>_: sends transaction * _<span style="color:SteelBlue">get_addresses</span>_: gets addresses from given starting and ending index. * _<span style="color:SteelBlue">get_bundle</span>_: gets a bundle transaction from a given tail hash. * _<span style="color:SteelBlue">reattach</span>_: reattaches a bundle transaction to the Tangle. Note: this is a stateless wallet application it means it doesn't store resules, such as the balance on addresses imo, the storage implementation might vary depending on the design in the real world. --- ## IOTA Cashier yet another way to pay ![](https://i.imgur.com/VXAdNZh.jpg =600x400) ###### https://github.com/oopsmonk/iota_esp32_cashier Note: payment systems keep revolution over time, notes/coins -> credit cards/cards -> Smartphones EasyCard (悠遊卡), RFID technology, without physical contact that's improtant during the current pandemic sutuation ---- ## Wiring Diagram ![](https://raw.githubusercontent.com/oopsmonk/esp32_lib_st7735/master/image/ESP32-ST7735-Wiring-VSPI.jpg =500x) ---- ## Flowchart ![](https://raw.githubusercontent.com/oopsmonk/iota_esp32_cashier/master/image/IOTA%20Cashier.png =500x500) ---- ## Demo receive tokens {%youtube Vp9J2ntikcc %} ---- ## Demo withdraw tokens {%youtube a_qEPlbzrig %} --- ## PlatformIO ![](https://i.imgur.com/WGqdJBc.png) ---- ### Client lib for PlatformIO https://github.com/oopsmonk/iota_c_platformIO ![](https://i.imgur.com/dY0XhhP.png) ---- ### Use Client lib on PlatformIO ![](https://i.imgur.com/8UfS2kj.png) ---- ### VS Code + PlatformIO ![](https://i.imgur.com/qiBjRd7.png) ---- ### VS Code + PlatformIO ![](https://i.imgur.com/ch03jYZ.png =500x450) --- ## What Next - Learn IOTA from PoCs - Proting client lib to other platfroms<!-- .element: class="fragment" data-fragment-index="1" --> - Create your own PoCs<!-- .element: class="fragment" data-fragment-index="2" --> Note: for education purpose, having workshops for developing, proting and creating missing security --- ### Thank you! </br> ###### https://discord.iota.org/ ###### <span style="color:SteelBlue">Sam Chen#6934</span>
{"title":"An introduction to IOTA client PoCs on SoCs","tags":"IOTA, ESP32, Talk","description":"View the slide with \"Slide Mode\"."}
    271 views