LogoLogo
WalletsEcosystemStart BuildingJoin the Community
  • Welcome to IoTeX 2.0
    • 💡Why IoTeX
    • 🪙Tokenomics
      • IOTX Utility in IoTeX 2.0
      • IOTX Emission, Deflation, and Re-Staking
    • 📖Whitepaper
    • ⚡Get Started
  • DePIN Infra Modules (DIM)
    • DIMs Overview
    • [IoTeX L1] DePIN Blockchain
      • Core Concepts
        • Consensus Mechanism
        • Voters and Delegates
        • Ethereum Virtual Machine
        • Accounts & Identities
        • Blockchain Actions
        • ERC20 and NFT Tokens
        • Smart Contracts
        • Interoperability
        • Governance
      • The IOTX Token
        • IOTX Token Exchange Support
        • Different Formats of the IOTX Token
        • IOTX Token Contracts
      • Wallets
        • Supported Wallet Apps
          • ioPay Mobile
          • IoTeX Web Wallet
          • OKX Wallet
          • Rabby Wallet
          • Metamask Desktop
          • Ledger Nano S & X
            • Use Ledger with Metamask
            • Use Ledger with Rabby Walet
            • Use Ledger with IoTeX Hub Portal
            • Migrate to the Ethereum Ledger App
          • IoTeX Desktop Wallet
          • 👩‍💻IoTeX HD Derivation Path
        • Buy IOTX Tokens
        • Execute Transactions
          • Transfer IOTX Tokens
          • Transfer ERC20 Tokens
          • Interact with Dapps
          • Explore transactions
        • Migrate Assets to a different wallet
      • Staking & Governance
        • About IoTeX Staking
        • IoTeX Staking Guide
          • Native staking
          • Staking as NFT
        • Join the Governance
          • Marshall DAO
          • Improvement Proposals
      • Exchange Integration
      • 👨‍💻Deploy Dapps on IoTeX
    • [ioID] DePIN Identities
      • ioID Specification
      • Overview of ioID
      • Registering Identities
      • 👩‍💻Integration Guide
        • Register a DePIN Project
        • Bind your Device NFT
        • Reserve Device ioIDs
        • Query Project Status
        • Register a Device
        • ioID Smart contracts quick reference
    • [W3bstream] DePIN Verification
      • Overview of W3bstream
      • Multi-Prover Architecture
      • 👨‍💻Build with W3bstream
        • Get Started
          • Sequencer Options
        • Build the Prover Code
          • Risc Zero
          • Halo2
          • zkWASM
        • Deploy to W3bstream
          • Create the Project File
          • W3bstream Outputs
          • Deploying Projects
          • Interacting with Projects
        • On-chain integration
          • Verify Risc0 Proofs
          • Verify Halo2 Proofs
          • Verify zkWASM profs
        • Sending Messages
      • 👩‍💻Node Operators
        • Configure a ZK Prover Node
        • Register your Node
    • [ioID-SDK] Hardware SDK
      • ioID-SDK Overview
      • Layered Architecture
      • Compatibility
      • Current Development Status
    • [MSP] Modular Security Pool
    • Third-Party DIMs
      • Data Sequencer Infras
      • Data Availability Infras
      • 👨‍💻W3bstream Tasks
  • Ecosystem
    • Assets on IoTeX
      • Mainstream Assets
      • IOTX and Derivatives
      • DePIN Tokens
      • MEME Coins
    • iotube Bridge
    • iotexscan Explorer
    • Ecosystem Apps
      • DePINScan
      • mimo DEX
      • ecosystem.iotex.io
    • "Powered by IoTeX" Devices
      • Pebble Tracker
        • Quick Start
        • Device Registration
        • Online Firmware Update
        • USB Firmware Update
        • Migrating to Pebble v2.0
          • 1.0 Device Registration
        • Tech Specs
        • Network Selection
        • Pebble Configuration
        • Query Pebble Data
        • Troubleshooting
        • Firmware Development
          • Hardware Setup
          • Build the Firmware
          • Flash the firmware
      • SenseCAP Indicator
      • UCam Home Camera
  • Builders
    • IoTeX Developer Portal
    • Dev Chat on Discord
    • Web3 Development
      • RPC Endpoints
      • Set up your Environment
      • Get Testnet IOTX Tokens
      • ioctl CLI
        • Installation
        • Create Accounts
        • Blockchain interaction
          • ioctl command reference
      • Chain Indexing
        • The Graph
        • SubQuery
        • IoTeX Analytics API
      • IoTeXscan API
      • Deterministic Deployment
      • Account Abstraction
        • Components of AA
        • 👩‍💻Creating new Accounts
        • 👨‍💻P256Account Example
      • Blob Transactions (EIP-4844)
      • Multicall3
      • EVM Precompiled Contracts
    • Building DePINs
      • ioID Step by Step Tutorial
        • Integrate ioID in the Device Firmware
        • Integrate ioID in your cloud
      • Decentralized WiFi Connectivity (DeWi)
        • Project Specification
        • The choice of Hardware
        • The Data API Service
        • DePIN Incentives Contract
    • Building DeFi
      • Deploy Tokens
        • Deploy an ERC20 Token
        • Deploy an NFT Token
      • Price Oracles
        • Chainlink Relayer
        • SupraOracles
      • Integrate IoTeX Staking
      • Liquid staking Dapps
    • Launch Dapps on IoTeX
      • Submit Tokens to the IoTeX Ecosystem
      • Submit tokens to the iotube bridge
      • Verify Smart Contracts
      • Audit your Contracts
      • Submit your Dapp to Portals
      • Useful tools
    • Node Operators
      • Fastblocks (Node as a Service)
      • Setup an IoTeX RPC Node
      • Run a Delegate Node
      • Rosetta API
    • Reference Docs
      • ioctl client
        • Accounts
        • HD Wallets
        • Aliases
        • Actions
        • Queries
        • Smart Contracts
        • Staking & Voting
        • Tokens
        • ioID Identities
        • W3bstream
        • Decentralized Identifiers (DID)
        • JWT Auth Tokens
      • Native IoTeX Development
        • IoTeX gRPC API
        • Account Cryptography
        • Address Conversion
        • Create Accounts
        • Estimate Gas Price
        • Make IOTX Transfers
        • Manage ERC20 Tokens
        • Smart Contract Interactions
        • ioPay Desktop
        • DID JWT Tokens
        • Calling any RPC method
      • Embedded Blockchain Clients
        • Arduino IDE
        • Linux Systems
        • PlatformIO
        • Examples
        • Tutorials
  • Participate
    • Crypto's Got Talent (CGT)
      • IoTeX x Polygon DePIN Grant
    • Governance
      • IoTeX Improvement Proposals
      • The Marshall DAO
    • Join the Community
    • Get in Touch
Powered by GitBook
LogoLogo

This documentation portal is currently undergoing updates to align with the IoTeX 2.0 Whitepaper release. Information provided here may be incomplete, or out-of-date. Please use this portal for preliminary reference only, and check out the official IoTeX 2.0 Whitepaper for updated information.

  • .

2025 | IoTeX

On this page
  • Compatibility with Heterogenous Smart Devices
  • Minimal Code Coupling

Was this helpful?

Export as PDF
  1. DePIN Infra Modules (DIM)
  2. [ioID-SDK] Hardware SDK

Compatibility

PreviousLayered ArchitectureNextCurrent Development Status

Last updated 5 months ago

Was this helpful?

Compatibility with Heterogenous Smart Devices

The ioConnect SDK aims to support a wide range of embedded systems, not limited to specific device types. To this end, the SDK is architected with a core framework (CF) and a platform adaption layer (PAL). As the foundation of the SDK, the CF abstracts common functionalities that are independent of the development platform or environment. On the other hand, the PAL adapts to different embedded systems and communities, differentiating the specific functionalities of each platform. For example, Arduino tends to use C++ classes, while the ESP32 community prefers traditional API implementation styles. Moreover, both communities have significant differences in MQTT implementation and usage. However, the SDK can accommodate the implementation methods of each community, including the community’s compilation rules, coding conventions, framework designs, etc.Each PAL component provides the following advantages:

  • With support and adaptation from embedded communities, the SDK can support a wider range of IoT hardware. For example, the SDK currently supports the Arduino community. As a result, any hardware platform supported by Arduino can be supported by the SDK.

  • Reduces the development complexity and cycle of the entire SDK. After extensive testing and verification, the platform adaptation layer code for each community is limited to around 300 to 500 lines.

  • Developers can quickly and conveniently add new hardware platforms. When developers encounter unsupported embedded hardware while using the SDK, they can develop a new PAL component based on the SDK's PAL specification, requiring only about 300 to 500 lines of code.

It is important to note that the PAL component not only needs to adapt to the community’s code framework system but also needs to support the community’s default or specified file structure, compilation standards, and more. For example, the Arduino and ESP32 projects have completely different programming languages, reference paths, and library managers.Based on the above information, the core framework and PAL layer design can effectively solve the device compatibility issues in IoT projects and provide developers with a user-friendly development and usage environment.

Minimal Code Coupling

Another unique feature of this SDK is minimal code coupling, which is based on the assumption that users have already developed or are developing a traditional Web2 IoT project. When development teams want to transform their Web2 project into a Web3 one, they often face a number of challenges:

  • Code reuse: Maximizing the reuse of developed functional components or the entire project;

  • Minimal code coupling: Minimizing modifications to the original code due to the introduction of new component libraries.

The SDK achieves minimal code coupling by compressing and streamlining the technology stack, reducing complexity to a minimum. Additionally, the SDK introduces the concept of a standard layer to reduce code coupling between the SDK and the original project.Traditional component usage employs the API pattern as shown at the top of the firgure above. In this pattern, each component designs API functions independently, which are then referenced and called by both sides. However, this approach inevitably leads to some potential issues, i.e., both parties must have a clear understanding of each other’s API functions, including their definitions and usage methods, before usage.The SDK breaks away from the traditional API call mechanism by introducing a standard layer (as shown at the bottom of the figure). The standard layer uses well-known design frameworks, such as embedded operating systems (e.g., FreeRTOS, Zephyr, etc.), POSIX standards, and active community code frameworks (e.g., Arduino, Raspberry Pi, ESP32). Both parties only need to use the common framework provided by the standard layer, which allows for seamless integration with minimal knowledge of the technical details of the other party’s standard layer.

Layered Architecture in ioID-SDK