Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The IOTX token, introduced in 2019 for the IoTeX L1, serves as the currency balancing incentives among validators (Delegates), Dapp builders, and users. Validators receive IOTX rewards for staking and validating transactions, while developers and users pay IOTX for transactions and smart contract interactions. Additionally, IOTX tokens are staked by token-holders for participation in network governance.
As IoTeX evolves from a simple L1 to a modular platform with interconnected infrastructure, the tokenomics of the IOTX token will also expand to align with our vision for IoTeX 2.0. This includes new utilities for the IOTX token, which will be integrated into the new technology offerings of IoTeX 2.0.
A key goal of IoTeX 2.0 tokenomics is to balance inflationary staking rewards and deflationary token burning based on platform usage. Additionally, we aim to incentivize DePIN Dapps and L2s to utilize our modular infrastructure. The upgraded tokenomics will not only introduce new utility and value for the IOTX token by connecting it to W3bstream, ioID, ioDDK, and other DIMs but also maintain a stable token supply through balanced inflationary and deflationary mechanisms.
As IoTeX's modular infrastructure sees increased adoption, the IOTX token will gain new value as the currency of the IoTeX 2.0 network.
IoTeX was founded in 2017 to empower people to own and control their smart devices, as well as the data and value their devices produce, by connecting the Internet of Things with blockchain. Our founding thesis was that the orchestration of billions of smart devices using decentralized blockchains would resolve major issues with the existing Internet of Things, such as trust, security, and sovereignty, as well as enable a new paradigm for user-owned device networks to flourish.
Over the past 6 years, we have pioneered the synthesis of the real world and blockchains, exploring and building out several core use cases.
IOTX tokens will be used across the entire IoTeX 2.0 infrastructure and ecosystem, expanding from the existing L1 utility to the new infrastructure modules.
Let's go through them:
IOTX tokens are still being used for rewarding Delegate nodes for validating L1 transctions and participate in consensus. Also, token holders will participate in governance by staking IOTX and vote their favorite delegate and receive IOTX rewards for it. The IOTX token will continue to serve as the native currency of the IoTeX L1 blockchain in IoTeX 2.0, where users and developers will pay fees in IOTX to deploy and utilize Dapps.
This introduces a new economy involving staked IOTX, where the MSP effectively "leases" security and trust to DIMs, which are required to stake IOTX. This also creates new earning opportunities for IOTX stakers, who will earn their base IOTX staking rewards as well as additional rewards for re-staking their tokens, including potential bribes from DIM projects.
DePIN Infrastructure Modules (DIMs) will be required to stake IOTX in order to join the Modular Security Pool (MSP), gain security from the pool of re-staked assets, and offer their services in a verifiable fashion to Dapps, L2s, and users. DIMs may also choose to utilize IOTX as payment from Dapps that leverage their services, or they may utilize their own tokens. For example, a long-term storage provider like Filecoin or a data availability provider like NEAR would stake IOTX to join IoTeX 2.0 as a DIM, after which they could charge Dapps for their data services in their own tokens. For several of the IoTeX 2.0 DIMs that are built in-house by the IoTeX team, such as ioID and ioConnect, payment for these services will be denominated in the IOTX token.
Projects and L2s that launch on the IoTeX 2.0 tech stack will pay IOTX to process transactions and interact with smart contracts. In addition, Dapps and L2 chains may choose their own modular tech stack and pay one or more DIMs for services, such as connectivity, data storage, off-chain compute, and more, in the DIM's token. To close the loop, most Dapps will have their own tokens that users will acquire and spend to access the Dapps services.
In IoTeX 2.0, device owners will burn IOTX to register their devices on the IoTeX L1 and receive , establishing a trusted anchor for participating in DePINs. Additionally, the IoTeX L1 will utilize a DAO, allowing token-holders to vote on the allocation of network incentives to various initiatives. This aims to drive the onboarding of new devices, DePINs, Dapps, and users, thereby increasing the utility of IOTX through burning, staking, and spending.
IoTeX 2.0 will allow users to repurpose their staked IOTX by re-staking or re-hypothecating it to the . The MSP is designed to extend the security of the IoTeX L1 blockchain to that integrate with IoTeX 2.0. DIM builders can use the MSP to incentivize IOTX stakers to allocate their re-staked IOTX to provide security for their solutions.
In addition to the utility for IOTX token above, there are also new designs for IoTeX 2.0 regarding how IOTX tokens will be burned based on infrastructure usage, how IOTX will be shared with Dapps and builders via incentives programs, and how new IOTX will be emitted to stakers going forward.
When the IoTeX Mainnet launched in 2019, 12% of the total IOTX supply (1.2 billion IOTX) was allocated for staking rewards to Delegates. Token-holders stake IOTX to vote for Delegates who share a portion of the staking rewards with their voters. Since then, approximately 200 million IOTX per year has been distributed as block and epoch rewards to Delegates and voters. Block rewards were given to the Top 36 Consensus Delegates for each new block produced, while epoch rewards were distributed proportionally among the Top 100 Delegates every hour.
After more than four years of Mainnet operation, the initial IOTX allocation for staking rewards is nearly exhausted. To continue incentivizing Delegates to validate transactions and secure the network, IoTeX 2.0 will introduce inflationary staking rewards. These rewards involve minting new IOTX tokens, which are distributed to Delegates and stakers participating in network consensus.
Inflationary staking rewards will maintain the existing distribution structure, with block rewards for block-producing Delegates and epoch rewards for the Top 100 Delegates. This approach ensures a higher staking ratio and enhanced security for the IoTeX network. The specific annual inflation rate will be determined by network-wide governance, aiming for mild inflation that offers competitive staking rewards APRs, while considering deflationary token burning to maintain a stable token supply.
This concept aligns with practices of other Layer 1 blockchains, such as Ethereum, Solana, and Cosmos. For instance, Solana started with an 8% inflation rate, reducing annually by 15%, reaching about 5.5% in early 2024. IoTeX 2.0 aims to introduce a balanced inflationary mechanism that supports network growth and security, detailed further in the following sections.
To maintain a stable token supply, IoTeX 2.0 introduces deflationary burning of tokens based on network usage, similar to the Burn and Mint Equilibrium model. For instance, Ethereum balances the issuance of new ETH with the deflationary burning of gas fees (EIP-1559) to achieve a stable or deflationary token supply. Since 2020, IoTeX has implemented the Burn-Drop program, resulting in approximately 4% (400M IOTX) of the total supply being burned based on new device registrations.
With IoTeX 2.0, new deflationary mechanisms will be introduced at the protocol level:
Gas Fee Burning: Similar to Ethereum's EIP-1559, gas fees will be burned to incentivize and redistribute value to IOTX token-holders as network usage increases.
ioID: Creating new on-chain identities for devices will require burning IOTX, with the burn rate dynamic based on the total number of registered devices. Additionally, obtaining Verifiable Credentials (VCs) for DIDs will involve burning IOTX, linking device identities to the IoTeX L1 and DIMs like W3bstream.
Modular Products: The adoption of modular products like W3bstream, ioConnect, and ioDDK by Dapps and companies will drive deflationary burning of IOTX due to device interactions. Periodic token burns based on community-defined adoption thresholds may also be implemented.
IoTeX 2.0 tokenomics aim to reward increased usage of the platform's modular components through deflationary burning, initially counterbalancing inflationary staking rewards to maintain a stable token supply. As the platform achieves mass adoption, the IOTX token supply could become net deflationary. To support this growth, IoTeX 2.0 will allocate IOTX tokens to various builders through growth incentive programs.
An important pillar of IoTeX 2.0 is The Marshall DAO (IIP-23), a Decentralized Autonomous Organization (DAO) that will enable IoTeX stakeholders to make proposals regarding how to allocate IOTX incentives to grow the IoTeX ecosystem, including onboarding reputable DePIN projects and funding network-wide initiatives. This creates a transparent and meritocratic system where the best ideas are funded using IOTX. The Marshall DAO will initially be funded by more than 500M IOTX that was repurposed from the Burn-Drop allocation, which was decided by the IoTeX community via a network-wide vote in Q1 2024. In the future, additional funding for the Marshall DAO may be added via further network-wide votes to add newly minted IOTX to the pool.
The Marshall DAO employs a vote-escrow on-chain governance model, which means the more IOTX is staked in the DAO the more voting power a user has. This ensures decisions to fund projects and initiatives are made by those who are most invested in the long-term success of IoTeX. Token-holders that stake for at least 91 days will earn veIOTX, a non-transferrable on-chain token, which can be used to propose and vote on funding allocations via gauges that represent specific proposals. This means long-term stakers can vote using their veIOTX to shape how IOTX from the DAO funds various projects, including but not limited to boosting liquidity for DEX trading pairs on IoTeX, sponsoring early-stage DePIN projects via launchpads, accelerating DePIN projects via dual-mining, issuing grants for public goods and network-wide tools, and more.
DePIN For Everyone!
Since its inception, IoTeX has been a pioneer in the blockchain industry, focusing on creating secure and scalable infrastructures that bridge the gap between the physical and digital worlds. Initially established as a Layer 1 blockchain, IoTeX has expanded its vision by spearheading the development of Decentralized Physical Infrastructure Networks (DePINs).
IoTeX 2.0 unveils its brand new vision, upgrading its L1 blockchain into an open Modular Infrastructure for all DePINs.
The new whitepaper provides a comprehensive tech stack including composable modules and a unified trust layer to accelerate DePIN adoption. All underpinned by our new tokenomics design that links together the interconnected set of DePIN Dapps, L2 chains, modules, and devices.
IoTeX 2.0 is embarking on a new roadmap to onboard 100 million devices and unlock trillions of dollars in real-world value on chain within the next 3-5 years. Realizing IoTeX’s mission of “DePIN for Everyone”.
"At IoTeX, we firmly believe small teams with big hearts should have full support to build impactful DePINs. Because together, we can make more. That is the foundation of IoTeX's 2.0 mission to democratize DePIN for everyone." - Raullen Chai, CEO & Cofounder of IoTeX
Discover why IoTeX is the ideal platform for building and deploying your Decentralized Physical Infrastructure Network (DePIN) projects. Explore the key features and advantages that make IoTeX stand out.
IoTeX offers a modular approach allowing DePIN projects to construct a tech stack tailored to their needs. This includes critical products built in-house by IoTeX and integrations with partner products from top projects. This modularity enables DePIN builders to focus on what they do best (their infrastructure) while utilizing cutting-edge Web3 technologies such as Decentralized Identities, off-chain scaling, zero-knowledge proofs, and artificial intelligence.
The IoTeX Modular Security Pool (MSP) provides a unified trusted layer, offering security and trust to DePIN Infrastructure Modules (DIMs) and DePIN applications. This system leverages existing security from established L1 blockchains like IoTeX, Bitcoin, and Ethereum, and utilizes restaking to ensure a robust and secure foundation for new projects.
IoTeX 2.0 offers full support for DePIN projects throughout their lifecycle. From initial stages focused on tech stack development to later stages requiring scalability and decentralization, IoTeX provides the necessary infrastructure and public resources to capture attention, liquidity, and users.
IoTeX provides a suite of public goods designed to support DePIN builders. These include user-facing tools (e.g., explorers, wallets, bridges), developer-focused tools (e.g., IDEs, SDKs), and network-wide resources (e.g., governance, accelerator, liquidity). This ecosystem of tools and resources helps builders launch their projects more easily and provides the foundation for growth.
IoTeX employs a meritocratic tokenomics system designed to reward significant contributions. The IOTX token is more than just an L1 protocol token, it is used to incentivize various DePIN stakeholders, ensuring that rewards are distributed based on the value provided to the network. This system drives new utility to the IOTX token, making it a foundational currency for the DePIN sector.
IoTeX integrates advanced technologies such as zero-knowledge proofs (ZKP), trusted execution environments (TEE), and self-sovereign identity (SSI) for devices. These technologies enhance security, scalability, and trust within DePIN projects, enabling innovative and secure applications.
In addition to the existing decentralized process for managing Improvement Proposals for the blockchain, IoTeX 2.0 introduces one more important pillar for decentralized governance: The Marshall DAO (IIP-23). Marshall DAO is a Decentralized Autonomous Organization that will enable IoTeX stakeholders to make proposals regarding how to allocate IOTX incentives to grow the IoTeX ecosystem, including onboarding reputable DePIN projects and funding network-wide initiatives. This creates a transparent and meritocratic system where the best projects are funded using IOTX. allowing stakeholders to contribute to the growth of the IoTeX ecosystem.
Whether a DePIN focuses on physical resources or digital resources or targets a specific vertical, it must interface with real-world smart devices that generate an incredible amount of data. The need for a modular, end-to-end tech stack that connects real-world data to the blockchain world is essential.
Blockchain, as an immutable ledger, is a perfect foundation to document facts about what happened in the physical world; however, before writing "proofs of physical work" from devices to the blockchain permanently, a series of steps must be completed to verify the real world activity that actually happened and if the data is trustworthy.
Devices must be registered on-chain, raw data must be collected, parsed, sequenced, and stored, and computations over data must be performed in a verifiable fashion before any "proof of real-world activity" can be settled to a blockchain. The reference architecture above shows nine essential layers for DePIN projects to consider.
IoTeX introduced the concept of "DePIN Infrastructure Modules (DIMs)" as the methodology enabling any infrastructure builder to provide their implementations for the different layers required to a DePIN project. This provides DePIN projects with a vast array of options for creating their custom tech stack.
IoTeX is committed to building a decentralized and inclusive ecosystem. As a digital democracy, IoTeX acknowledges and rewards community contributions in various ways.
In the IoTeX ecosystem, any token holder who stakes at least 100 IOTX and votes for a Delegate is recognized as a "Voter." Voting for a Delegate is a mandatory part of the staking process. By doing so, Voters help to secure and decentralize the network. In return for their participation, Voters receive rewards in the form of IOTX tokens, with the amount depending on their staking settings. This system creates a cycle that incentivizes voting, secures the network, and maintains decentralization.
Delegates are elected by IOTX token holders and represent the IoTeX network. They run the protocol, maintain consensus, promote project awareness, organize community-wide initiatives, and more. Any token holder can self-candidate as a Delegate in the IoTeX ecosystem. After profile registration (which costs 100 IOTX) the minimum requirement to become a Delegate is to receive at least 1.2 million votes from a single account, which can be the candidate's own account self-voting, or a third-party account endorsing the candidate.
The top 100 Delegates, ranked by votes, receive rewards proportional to their share of the total votes versus the total votes in the network. This incentivizes participation and ensures the IoTeX ecosystem remains secure, decentralized, and vibrant.
The top 36 Delegates with the most votes are “Consensus Delegates” that manage transaction verification and block production. Consensus Delegates also receive fixed block rewards for every mined block in addition to the variable rewards shared by all IoTeX Delegates.
Learn how to set up your preferred wallet to securely store your assets on the IoTeX blockchain
Learn how to transfer tokens from other blockchains to IoTeX and vice versa.
Exchange tokens on the IoTeX blockchain using the popular decentralized exchange Mimo.
Access EVM RPC endpoints quickly for seamless integration with your applications on the IoTeX blockchain.
Get free IOTX for testing and development purposes using the IoTeX faucet or joining the developer portal.
Learn DePIN development to build and manage decentralized physical infrastructure networks on the IoTeX blockchain.
Learn how to deploy ERC20 and NFT tokens on the IoTeX blockchain quickly and easily, creating new innovative DeFi solutions.
Follow our steps, for a successful launch, including submitting your token metadata and become part of the IoTeX ecosystem.
List your project on depinscan.io to increase visibility and attract attention from the community and investors.
Learn how to run an IoTeX Delegate and contribute to the network's security and governance while earning rewards.
Learn how to run an RPC node on the IoTeX blockchain to support network operations and improve performance.
📡 Run a W3bstream Prover
Coming soon... Learn more about W3bstream -> [W3bstream] DePIN Verification
IoTeX is compatible with the most recent Ethereum Virtual Machine (EVM), allowing developers to deploy smart contracts written in Solidity and interact seamlessly with the IoTeX blockchain.
This compatibility provides access to a wide range of Ethereum-based tools and libraries, enhancing the development ecosystem.
Like other blockchains, IoTeX was bootstrapped from an initial ("genesis") state, which is then altered over time through transactions, or "Actions" as they are called in IoTeX.
An action is fundamentally a packet of data, signed by a blockchain account, that instructs the blockchain to make a specific change to the distributed ledger. The action can be sent to any blockchain node acting as a gateway, which in turn broadcasts it to the entire network of nodes for verification. Once verified, it gets applied and stored permanently in the ledger.
In IoTeX, there are different types of Actions depending on the type of operation required:
Transfer Action
Execution Action
Governance Actions
Find the structure for all IoTeX Actions in the protobuf definition on GitHub:
An "account" is a fundamental concept in the IoTeX blockchain, represented by a pair of cryptographic keys: a private key and a public key, utilized to sign and verify blockchain actions.
IoTeX accounts could represent individual users, machines, or entities, facilitating interactions with the blockchain and dApps. Like Ethereum, IoTeX's architecture includes two types of accounts:
Externally Owned Accounts (EOAs): Controlled by private keys, these accounts represent individual users or entities.
Contract Accounts: These are associated with smart contracts deployed on the blockchain and operate based on their programmed logic. Each contract account maintains a balance, nonce, and storage, contributing to IoTeX's global state.
-> Learn more about IoTeX Account Cryptography
IoTeX supports Account Abstraction as defined by ERC-4337 v0.6.0.
By enabling people to use Smart Contracts as their primary accounts, ERC-4337 introduces many user experience benefits.
ERC-4337 runs on top of the blockchain and does not require any changes to the blockchain itself. Currently, the IoTeX Account Abstraction code is based on ERC-4337 0.6.0 release version.
The blockchain also supports ioID identities, providing a secure and verified identity system that integrates seamlessly with various DePIN projects and applications.
IoTeX is designed to interact with other blockchains and systems. Cross-chain bridges and standards enable the integration of various tokens, applications, and services, making IoTeX a versatile platform for cross-blockchain Web3 development and innovation.
Thanks to the native integration of the EVM, smart contracts on IoTeX function similarly to Ethereum. Developers upload reusable code pieces to the EVM's state, known as "smart contracts." These contracts, once invoked by sending a transaction to their address with specific parameters, execute the contract specific code performing some computations given certain conditions are met.
For instance, transferring IOTX to a designated contract address might result in the assignment of a certain digital asset to the sender. Smart contracts allow Web3 developers to create trusted applications on the IoTeX network, ranging from games to financial tools to decentralized infrastructures and data marketplaces.
The Blockchain Layer acts as the trust anchor of a DePIN application, managing participant identities, transactions, device data, and status, among other functions. It also handles crucial tasks such as verification of off-chain computations, orchestration of machine networks, distribution of token rewards to DePIN miners, and on-chain governance.
Inspired by Ethereum, the IoTeX blockchain pioneers innovative solutions to address challenges related to blockchain scalability, which is paramount in Decentralized Physical Infrastructure Networks. IoTeX makes it easy for Web3 developers to create trustworthy and decentralized applications that benefit from instant transactions with 1-block finality and a transaction fee of under $0.001.
5 seconds
1,000 transactions/s
Instant finality (all blocks are final, forks are not possible)
Randomized Delegated Proof of Stake with PBFT ("Roll-DPoS")
4689 (IoTeX Mainnet), 4690 (IoTeX Testnet)
9,444,302,397 (deflationary) - all tokens are already in circulation
Token holders can stake on or directly inside
The IOTX utility and tokenomics are being updated in IoTeX 2.0. Please refer to -> IoTeX 2.0 Tokenomics
The IOTX token, commonly known as "iotex," serves as the native cryptocurrency of the IoTeX blockchain, playing a role similar to Ether (ETH) in Ethereum. It underpins a marketplace for computational power, ensuring that nodes who run the blockchain are financially motivated to validate and process transactions, as well as to supply the computational power required to execute smart contracts across the network. This mechanism is vital for maintaining the network's operation and efficiency.
↗ Read more about IOTX token in this blog article
Max Supply
10 Billions IOTX
Total Supply
9,441,378,959 IOTX
Circulating Supply
All IOTX are in circulation
↗ Check out IOTX on CoinMarketCap
In the IoTeX network, anyone initiating a transaction must pay a fee in IOTX, similar to Ethereum's transaction fee structure. This fee compensates the network nodes responsible for validating, executing, and recording the transaction on the blockchain. The size of the fee corresponds to the computational effort required for the transaction, helping to prevent network abuse by discouraging excessively demanding computational tasks without appropriate compensation.
IOTX serves multiple crucial roles in maintaining the crypto-economic security of the IoTeX network:
Rewards: IOTX is used to reward nodes who successfully propose new blocks and identify fraudulent activities within the network.
Staking by Validators: Validator nodes stake IOTX as a form of commitment and collateral, helping to safeguard the network against dishonest behaviors.
Delegate Election: IOTX is crucial for staking by token holders, who use it to vote for delegates. This process is vital for maintaining decentralized governance and overall network security.
Burn-Drop Mechanism: In a unique deflationary tactic specific to the IoT environment, IOTX implements the "Burn-Drop" scheme. Whenever a new IoT device is registered on the IoTeX blockchain, a specified number of tokens are burned, and a corresponding amount is airdropped to stakers, simultaneously reducing the total supply and rewarding active participants.
6 fractions of the IOTX token are defined, where 1 Rau
is the smallest IOTX
token unit:
Fraction
IOTX Value
Rau Value
1 Rau
10⁻¹⁸ IOTX
1 Rau
1 Krau
10⁻¹⁵ IOTX
10³ Rau
1 Mrau
10⁻¹² IOTX
10⁶ Rau
1 Grau
10⁻⁹ IOTX
10⁹ Rau
1 Qev
10⁻⁶ IOTX
10¹² Rau
1 Jing
10⁻³ IOTX
10¹⁵ Rau
1 IOTX
1 IOTX
10¹⁸ Rau
ERC20 tokens provide a standardized approach for creating fungible tokens on EVM blockchains, facilitating everything from decentralized finance to governance mechanisms. NFTs, on the other hand, certify the uniqueness and ownership of digital assets, opening up possibilities for art, collectibles, and beyond.
IoTeX supports ERC20 tokens and NFTs through its Ethereum Virtual Machine (EVM) compatibility. This allows developers to deploy Ethereum-based smart contracts directly on IoTeX, taking advantage of faster transaction times, reduced costs, and enhanced scalability.
The integration of Ethereum token standards on IoTeX, especially within Decentralized Physical Infrastructure Networks (DePIN), significantly enhances their utility and paves the way for innovative real-world and blockchain integrations.
ERC20 is a protocol standard that defines rules for issuing fungible tokens on Ethereum. Key functions include:
totalSupply()
: Displays the total token supply.
balanceOf(address)
: Provides the token balance of a specific account.
transfer(address, amount)
: Enables token transfers between accounts.
approve(address, amount)
and allowance(owner, spender)
: Manage spending permissions.
Unlike ERC20 tokens, NFTs are unique digital tokens that represent ownership and authenticity of a specific item or asset, managed on the blockchain. Each NFT has distinct information or attributes that make it irreplaceable, making them ideal for applications in digital art, real estate, and more.
Using ERC20 tokens and NFTs on IoTeX offers several benefits:
Faster Transactions: IoTeX’s blockchain architecture offers quicker transaction confirmations with instant finality compared to other EVM blockchains.
Lower Fees: Transaction costs on IoTeX are significantly lower, enhancing the economic viability for microtransactions, large-volume operations, and contract executions.
DePIN Applications: IoTeX’s focus on Decentralized Physical Infrastructure Networks (DePIN) integrates ERC20 and NFTs with real-world data and utility, enabling use cases like the incentivization of community-owned infrastructure and data marketplaces.
This document provides an overview of the various formats of the IOTX token, including their respective networks, descriptions, and typical usages. Understanding these different formats is essential for users interacting with the IoTeX network and its associated DeFi applications.
An IoTeX Improvement Proposal (or "IIP") is a design document providing information to the IoTeX community, or describing a new feature for IoTeX, its processes, or its environment.
IIPs are intended to be the primary mechanisms for proposing new features, collecting community input on an issue, and documenting the design decisions that have been implemented in the IoTeX ecosystem.
Because IIPs are maintained as text files in a versioned repository, their revision history also represents the historical record of the feature proposal itself.
Anyone can submit an IIP: A proposal should provide a concise technical specification and a rationale for the new feature. The IIP author is responsible for building consensus within the community and documenting dissenting opinions.
You can read more about IoTeX IIPs, browse past proposals and submit a new one by sending a pull request to the GitHub repository:
The IoTeX Governance Portal is powered by Snapshot, a no-fee governance tool based on IPFS that makes it simple for decentralized networks to run open votes, polls, and referendums. Follow the link below to browse through or vote on existing proposals, as well as create a new one. 👇
Check out our governance forum, if you'd like to meet the community and discuss new proposals: 👇
Feel free to checkout this blog article if you'd like to learn more about decentralized governance in the IoTeX ecosystem.
The table below provides an updated summary of the supported IOTX token types across various cryptocurrency exchanges. This information is compiled from the latest available data on each exchange’s we
IOTX ERC20 token is the original form of the IOTX token that was issued on the Ethereum blockchain during the initial development phase of the IoTeX blockchain protocol. Before the launch of the IoTeX blockchain in 2019, IOTX was primarily an Ethereum ERC20 token to facilitate early distribution and community engagement.
A blockchain wallet, sometimes just called a 'crypto wallet,' is a digital tool that allows individuals to store, send, and receive digital currencies like IoTeX, Ethereum, and many others. If you're just getting started with blockchain, think of it like an online banking app, but instead of using it for traditional money, you use it for cryptocurrencies.
Just like learning to use a new app or device, it might take a little time to get used to how a blockchain wallet works, but it's an essential tool for anyone looking to engage with cryptocurrencies.
IoTeX users have a wide range of both official and third-party wallets to choose from. For more information, see the next section, which provides an introduction to IoTeX wallets.
You can connect any multi-chain wallet to ioTeX, as long as it supports the addition of an EVM chain. Below are the required configuration details:
ioPay Mobile Wallet is a versatile and secure digital wallet designed for the IoTeX network also offering a comprehensive solution for managing digital assets across multiple blockchain networks, making it a valuable tool for users looking to engage with a variety of cryptocurrencies and decentralized applications.
Install ioPay Mobile
ioPay Mobile Wallet is readily available for both iOS and Android users:
Staking and Voting Capabilities: The wallet enables in-app staking and voting processes on the IoTeX blockchain, allowing users to contribute to network governance and consensus mechanisms.
Multi-Chain Support: ioPay supports multiple blockchain networks pre-configured and ready to use, including Ethereum, Polygon, BSC (Binance Smart Chain), Arbitrum, Avalanche, Fantom, and Base. This multi-chain functionality allows users to manage a diverse range of digital assets across various ecosystems.
User-Friendly Interface: The wallet offers an intuitive interface, ensuring ease of use for both novices and seasoned crypto enthusiasts. This simplifies the process of managing digital assets and engaging with dApps.
High-Level Security: ioPay prioritizes the security of your digital assets. It incorporates advanced security measures to safeguard your tokens and sensitive data like biometric authentication and per-transaction authentication options.
In-App Swap Capability: ioPay integrates in-app swap functionality, allowing users to easily swap tokens using popular DeFi platforms like mimo on IoTeX or Uniswap on Ethereum. This feature provides a convenient and efficient way to exchange tokens without leaving the wallet.
Direct dApp Interaction: Users can access and interact with a wide array of decentralized applications directly through the wallet, enhancing the user experience within the IoTeX ecosystem and all supported networks.
Real-Time Notifications: Stay informed with instant push notifications about transactions and wallet activities.
and more...
ioPay Mobile allows you to easily manage your accounts on multiple Networks, including:
Bitcoin
Ethereum
BNB Smart Chain
Polygon
Avalanche
Fantom
Arbitrum
Base
more...
Rabby Wallet offers a seamless and straightforward UI to engage with your assets, thanks to its native integration of the IoTeX Blockchain. This means that users do not need to undergo any additional configuration steps to manage their IOTX tokens, track their staked IOTX balance, participate in staking, or interact with IoTeX's decentralized applications (DApps).
Its intuitive design and native integration with IoTeX make Rabby Wallet an excellent alternative to more generalist wallets like Metamask.
To have a fast and efficient consensus mechanism with instant block finality in the context of DePIN, the IoTeX blockchain combines the concepts of Delegated Proof of Stake (DPoS), Proctical Bizantine Fault Tolerance (PBFT) and Verifiable Random Functions (VRFs). VRF is a family of functions that can produce publicly verifiable proofs for the correctness of their random outputs. At a high level, our Roll-DPOS has four phases elect candidates, form committee, propose block and finalize block.
All nodes in the IoTeX network participate this phase in terms of voting for the committee candidates. To encourage nodes to vote, the system makes sure the delegates share forged rewards with their voters. The candidates forms a set of at least 36 delegates; this number will increase in the future to further avoid the centralization of the mining power. Once the candidates are selected, they will be fixed in one epoch, which consists of 30 iterations.
In each iteration, a random committee of size 24 is selected from the candidate pool using VRF for creating blocks in the next 30 rounds. The use of VRF is important as it provides a non-interactive way to sort all delegates for proposing blocks in a fairness and security way. To this end, we use the efficient VRF as being used in Algorand.
In each round (which is roughly every 5 seconds), every committee node proposes a new block and broadcasts it to the network, together with the the proof. Only the block proposed by the expected committee node and has not been proposed in the same iteration is considered by other nodes, which is called a candidate block.
In the same round, all other nodes use PBFT to vote for/against the candidate block. If more than 2/3 committee nodes agree on candidate block's validness, it is finalized and is appended to the blockchain by everyone in the network. After that, "propose block" and "finalize block" are executed in the next round; if the current iteration finishes, another random committee will be formed before propose block and finalize block are executed again.
WIOTX
is an ERC20 token deployed on the IoTeX blockchain. Due to its exchangeability and representation on the IoTeX blockchain, WIOTX is commonly referred to as "Wrapped IOTX." It represents an ERC20-wrapped version of the native IOTX token, enabling it to interact with other ERC20-compatible services within the IoTeX ecosystem. This token typically originates from the bridging of CIOTX
tokens from the Ethereum blockchain to the IoTeX blockchain. This process is facilitated through , a cross-chain bridge.
WIOTX
is designed to be directly exchangeable with the native IOTX token at a consistent 1:1 ratio. This exchange (also called "unwrapping") can be performed on the or the .
CIOTX, also known as "CrossChain IOTX," is an ERC20 token utilized within the bridge ecosystem. It is designed to facilitate the bridging of the native IOTX token between the IoTeX blockchain and all other blockchains supported by iotube. This interoperability enables seamless IOTX token transfers across different blockchain networks. CIOTX maintains a consistent 1:1 swap ratio with both the native IOTX token and the Wrapped IOTX (WIOTX) token on the IoTeX blockchain, utilizing the .
→ Go to the section.
The is a multi-chain, decentralized wallet designed to provide secure and seamless access to various blockchain networks. It supports a wide range of cryptocurrencies and decentralized applications (dApps), allowing users to manage assets, trade, and interact with DeFi platforms all from one place. With features like private key management, in-app swaps, and staking, OKX Wallet emphasizes security and ease of use, making it a popular choice for both novice and experienced crypto users.
-> Visit the to get started.
For iOS Users: Download ioPay from the Apple App Store by searching for "ioPay" or following the .
For Android Users: Android device owners can find ioPay in the Google Play Store. Look for "ioPay" or follow the .
is your comprehensive command center for engaging with the IoTeX ecosystem. Designed for ease of use and multi-chain functionality, it allows users to buy, trade, bridge, stake, and access dApps directly from any Metamask-compatible browser.
-> Visit the to get started.
Ethereum
IOTX
0x6fb3e0a217407efff7ca062d46c26e5d60a14d69
IoTeX
WIOTX
0xa00744882684c3e4747faefd68d283ea44099d03
IoTeX
CIOTX
0x99B2B0eFb56E62E36960c20cD5ca8eC6ABD5557A
Polygon
CIOTX
0x300211Def2a644b036A9bdd3e58159bb2074d388
BSC
CIOTX
0x2aaF50869739e317AB80A57Bf87cAA35F5b60598
Ethereum
CIOTX
0x9F90B457Dea25eF802E38D470ddA7343691D8FE1
Network Name
"IoTeX Mainnet"
"IoTeX Testnet"
RPC URL
Chain ID
4689
4690
Symbol
IOTX
IOTX
Explorer URL
The process mirrors the experience of using Ledger with any other blockchain on Rabby Wallet, which supports IoTeX out of the box.
A Ledger Hardware Wallet
Rabbit Wallet software installed on your computer
The latest version of the Ethereum app installed on your Ledger device (for ERC20 tokens)
Connect your Ledger Hardware Wallet to your computer using the provided USB cable.
Enter your PIN on the Ledger device to unlock it.
Launch Rabby Wallet on your computer.
If it's your first time using Rabby Wallet, follow the on-screen instructions to set it up. If you're an existing user, proceed to the next step.
Navigate to the settings or wallet management section within Rabby Wallet.
Select the option to connect a hardware wallet.
Choose Ledger from the list of available hardware wallets.
Follow the prompts to allow Rabby Wallet to access your Ledger device.
is a versatile and user-friendly software wallet that natively supports the IoTeX blockchain and represents a valid alternative to Metamask. This guide will walk you through using Rabby Wallet in conjunction with a Ledger Hardware wallet to manage your native IOTX tokens, ERC20 tokens on the IoTeX network, and engage with IoTeX staking features.
While the Native IoTeX Ledger App is fully functional, users who wish to migrate to the Ethereum Ledger App can do so as well. Simply refer to the Migrate Assets to a different wallet guide for instructions on how to move all your assets from one wallet to another.
Ledger Nano S and Ledger Nano X are hardware wallets, which are considered very secure for the storage of private keys in the blockchain world. When using a hardware wallet like Ledger Nano, your digital assets are safe even when operating on a compromised (or untrusted) PC.
IoTeX Options for Ledger Wallet:
Ethereum App for Ledger (Preferred)
This option uses the Ethereum Ledger App, which can be paired with popular Etehreum-compatible desktop applications like Metamask or Rabby Wallet.
Depending on the combination of the app on your Ledger key, and the wallet software you're utilizing, here are your available options:
Ethereum App on Ledger + Metamask This is the preferred setup and enables you to transfer both native IOTX and any ERC20 tokens on the IoTeX network. Additionally, it supports managing staking actions on stake.iotex.io.
IoTeX App on Ledger + IoTeX Hub Portal This option is available for existing users that created an account in the IoTeX Ledger App in the past. As the option above, it enables you to transfer both native IOTX and any ERC20 tokens on the IoTeX network, and supports managing staking activities on stake.iotex.io. See also #Mi
Ethereum App on Ledger + Ledger Live Software: Allows only for the transfer of IOTX in the form of ERC20 tokens (e.g. on the Ethereum or Polygon blockchains).
Please make sure that:
Ledger Live is installed and ready to use
You have initialized your Ledger Nano Device
The latest Ledger firmware is installed
Important: Software Deprecation Notice
While this wallet remains available for existing users, we highly recommend using MetaMask or your preferred Ethereum wallet for a more up-to-date experience, optionally in conjunction with the IoTeX Hub Wallet.
Ledger Hardware Support The IoTeX Ledger App does not support ioPay Desktop anymore. Please refer to using Ledger with the IoTeX Hub Portal.
Native IoTeX API: The IoTeX Desktop Wallet is based on the native (non-EVM) IoTeX API.
Supported Actions IOTX transfers & ERC20 transfers
Smart Contract Interaction Includes an integrated user interface for interacting with smart contracts.
To download and install the IoTeX Desktop Wallet, click the link below:
Please note that the recommended way to use a Ledger Hardware Wallet with IoTeX is by using the Ethereum Ledger App and pairing it with a Web3 wallet such as Metamask or Rabby.
The option below, is intended specifically for existing users who previously created an IoTeX wallet using the older IoTeX Ledger integration.
See also: Migrate to the Ethereum Ledger App
The Ethereum Ledger App is required for the new IoTeX Ledger App to be installed.
Please ensure you installed the Ethereum App on your Ledger before installing or updating to the new IoTeX App.
Next, the IoTeX Ledger App needs to be installed on your device to allow it to generate a native IoTeX account and sign blockchain actions.
Follow the instructions below to install the IoTeX Ledger App:
Ensure you exit any opened app on your Ledger. In Ledger Live, open the "My Ledger" section, then connect and unlock your Ledger Nano device:
You may be asked to “Allow Ledger Manager” on your device: do so by clicking both buttons on your device:
In Ledger Live "Manager" section, select the “App Catalog” tab, find “IoTeX” among the apps and click the “Install” button next to it:
Follow the instructions in the Ledger Live software and on your device to complete the installation.
The IoTeX Hub Portal allows you to manage all your assets on the IoTeX blockchain, from IOTX tokens, to ERC20 to NFTs, up to your staking deposits and even DePIN devices you own.
To connect with your account on the IoTeX Ledger app follow the steps below:
Open https://hub.iotex.io in your browser (Google Chrome -based browsers are supported)
Connect and unlock your Ledger Nano device
On your Ledger device open the IoTeX App
In the IoTeX Hub Portal, click the Ledger icon in the top right of the page to connect your Ledger:
Select your Ledger from the browser list of connected devices:
Once you connected your Ledger wallet to the IoTeX Hub you'll be able to check your wallet address, balance as well as manage your assets and interact with Dapps available on the Hub Portal:
Check your assets at https://hub.iotex.io/assets
Manage your Staking IOTX at https://hub.iotex.io/staking#delegate-list
Trade your tokens at https://hub.iotex.io/trade
Discover more on the IoTeX Hub Portal!
Install Metamask
After MetaMask is installed in your browser, it comes pre-configured to connect to the Ethereum blockchain. However, you can easily add configurations for additional blockchains to use it across multiple networks, including IoTeX. You can do this either by entering the blockchain network configuration details manually or by using the links provided on the IoTeX Developer Portal.
For a simpler and error-free setup, you can automatically configure MetaMask to add the IoTeX network:
Follow these steps to manually add the IoTeX network to MetaMask:
Open MetaMask: Launch the MetaMask extension or app.
Access Network Selection: Click on the network dropdown menu at the top of the app (defaulted to Ethereum Mainnet).
Add Network: Select "Add Network" or "Custom RPC" at the bottom of the network list.
Enter IoTeX Network Details: Input the following network configuration details:
Network Name: IoTeX Mainnet
New RPC URL: https://babel-api.mainnet.iotex.io
Chain ID: 4689
Currency Symbol: IOTX
Block Explorer URL: https://iotexscan.io
Save: Click "Save" to add the IoTeX network to your MetaMask wallet.
Using a Ledger Hardware wallet in conjunction with Metamask or a similar Ethereum-compatible software is a seamless and secure way to manage your native IOTX tokens, ERC20 tokens, or your staking on the IoTeX blockchain.
The process mirrors the experience of using Ledger with Ethereum blockchain, with a few additional steps to ensure Metamask compatibility with the IoTeX network.
Ledger Hardware Wallet
Latest version of Ethereum app installed on your Ledger device
Open Metamask on your browser.
Connect your Ledger Hardware Wallet to your computer using the USB cable.
Enter your Ledger PIN to unlock the device.
Navigate through the apps on your Ledger device to find the Ethereum app.
Open the Ethereum app (e.g., by by pressing both buttons on the Ledger device simultaneously).
With the IoTeX network added to your wallet, you can now:
Select the IoTeX network from the network dropdown menu in Metamask.
Perform transactions as usual. Your transactions will now be executed on the IoTeX blockchain.
is a popular Ethereum wallet and gateway to blockchain apps which can also be configured to work with the IoTeX network. This allows users to manage their IOTX tokens and interact with IoTeX's decentralized applications (DApps) directly through MetaMask. This document outlines the simple steps to add the IoTeX blockchain configuration to MetaMask, both manually and automatically.
MetaMask Wallet: You need to have the on your web browser
-> Visit
Check out the page for updated RPC endpoints for The IoTeX Mainnet and Testnet
Metamask on your computer
To ensure that your transactions are processed on the IoTeX network, you must configure Metamask accordingly. You can add the IoTeX Blockchain to Metamask either manually or by going to the .
In the world of blockchain and cryptocurrencies, keeping track of your digital assets is crucial. Wallets like Metamask and ioPay not only display your native token balance on the selected blockchain, but also enable you to monitor other assets, like "ERC20 tokens." or "NFT Tokens".
This guide will walk you through the process of adding ERC20 tokens to your wallet, ensuring that you have complete visibility over your digital portfolio.
Accessing the Token Section:
Open Metamask and navigate to the "Tokens" tab.
At the bottom of this tab, you'll find the "+ Import Token
" option. Click on it to proceed.
Locating the Token Address:
To add a specific token, such as CIOTX
, first locate its contract address. A reliable way to do this is by using a blockchain explorer like etherscan.io.
Go to etherscan.io and use the search bar to enter "CIOTX
".
Select "CIOTX (Crosschain IOTX)" from the search results to view its dedicated page.
Importing the Token:
On the CIOTX
token page in Etherscan, you have two options:
Manually copy the contract address and paste it into the Metamask token import field.
Use the "More" dropdown menu and select "Add Token to Metamask". This automates the process, adding that token to your Metamask token balances.
Selecting the Token:
Open your ioPay wallet.
Look for the (+)
button in the tokens panel below the native balance section.
Tap the (+)
button and select the tokens that you want to show in the list.
HD derivation path means hierarchical deterministic wallet derivation path. It is a way to derive multiple accounts from the same mnemonic seed.
IoTeX uses m/44'/304
as its HD path. You can view all HD paths for all coins here: https://github.com/satoshilabs/slips/blob/master/slip-0044.md
If you use mnemonic seed and HD to derive wallets, m/44'/304'/0'/0
is the 0-th wallet for IoTeX Wallet and m/44'/304'/0'/1
is the 1st wallet.
A full HD path is usually like this
Using this HD path, you can manually derive your private keys from mnemonic seed. A tool you can do that is https://iancoleman.io/bip39/.
Any online tools are not safe if you operate your mnemonic seed or private keys. If download the tool and run it locally. Please also use an offline computer to run it.
A tutorial of using the tool with IoTeX wallet is https://community.iotex.io/t/migrate-your-iotex-wallet-from-trust-wallet-to-iopay/2352
Sometimes, it may be necessary to abandon a wallet account, such as when you suspect that your current wallet has been compromised or when rotating addresses for security purposes. In these situations, it’s crucial to ensure that all your assets are successfully migrated to your new wallet.
Identify the new wallet you want to transfer your assets to. If it's a hardware wallet, connect it to Metamask and identify the wallet address.
Transfer ERC20 Tokens
Transfer all your NFT Tokens, they'll include:
Staking IOTX as NFT Buckets
DePIN Devices that you own
IoTeX Name Service (INS) domain names
Any other type of NFT
Other DeFi protocols may also work with the same principle: please do your research and identify the correct steps to migrate your liquidity to a different address.
Other similar liquid staking protocols you may have used may also work with the same principle: please do your research and identify the correct steps to migrate your liquidity to a different address.
Other DeFi protocols like borrowing/lending, or gaming apps, or any othe Dapp might require you to withdraw your deposits in order to transfer them to a different wallet. Please do your research and identify the correct steps to migrate your assets from these protocols to a different address.
As a last step, once you transferred all your other assets, you can transfer all your IOTX tokens to the new address.
If you are an investors interested in purchasing the IoTeX (IOTX) token, in this document we aim to provide you with a clear and detailed overview of all available options for acquiring IOTX. Here, you'll find insights about each option, ensuring you can make an informed decision.
IOTX, the native token of the IoTeX Blockchain, is a cryptocurrency token that can be bought on various cryptocurrency exchanges. It be found on exchanges such as:
In addition to centralised exchanges, decentralised Exchanges are also a popular choice for trading cryptocurrencies like IoTeX (IOTX). You may find the IOTX token on DEXs that operate on the networks compatible with IoTeX. Some popular DEX options include:
Please note that new types of assets and services are continually being added to the IoTeX ecosystem, and this guide is not intended to cover every scenario. If you have questions about migrating a specific asset or service to a new account, feel free to ask for assistance in our .
Start by transferring all your ERC20 and NFT tokens from
Next, move to the and transfer all your staking buckets to the new address:
If you created provided liquidity to a pool on , you should have received LP tokens for each pool that represent your fractional ownership of the liquidity: just make sure you transfer all the LP tokens to the new wallet.
If you performed IOTX staking on , you have received uniIOTX. These are ERC20 tokens that represent your staked IOTX on the Bedrock Dapp: ensure you transferred them to the new address.
If your old account was used to manage an IoTeX Delegate Profile, login to your delegate profile at and perform a Transfer Profile Ownership to the new address.
Users have the option to purchase directly using a debit or credit card on Mimo DEX. This feature is integrated within the , providing a streamlined process for transactions. It allows for a straightforward purchasing experience without the necessity to leave the app or use additional external platforms.
Visit the page to discover more exchanges that support IOTX.
Native Token on IoTeX
One of the largest and most popular cryptocurrency exchanges. Not available for US Residents
ERC20 Token on Ethereum
Known for its user-friendly interface, it's a popular choice among beginners. You cannot stake the IOTX ERC20 token. However, you can swap it for the native IOTX token using iotube.org.
Native Token on IoTeX
Known for its extensive range of services including a cryptocurrency exchange, wallet, and more
Native Token on IoTeX
A global exchange offering a variety of cryptocurrencies.
Native Token on IoTeX
Offers a wide range of cryptocurrencies and is known for listing newer tokens.
Native tToken on IoTeX
Another exchange with a wide selection of cryptocurrencies.
Native Token on IoTeX
A DEX on the IoTeX blockchain. It provides features like token swapping and liquidity mining. Being on the IoTeX network, it's particularly relevant for those looking to trade the native IoTeX token (IOTX) and other tokens on the IoTeX blockchain.
ERC20 Token on Ethereum
One of the largest Ethereum-based DEXs, known for its liquidity pools. (Note: if you buy IOTX tokens here, they will be on the Ethereum network. If you want to use them to stake, you will have to swap them for the native token on the IoTeX blockchain.)
A core part of decentralized governance in the IoTeX Network is staking, where token holders deposit ("stake") IOTX
in the IoTeX blockchain to facilitate network operations, consensus, and governance. By staking, token holders earn rewards, contributing to an attractive passive income stream. Additionally, staking strengthens the IoTeX network security and stability, as it supports the decentralization of block production.
By participating in staking, you also gain a voice in IoTeX governance, allowing you to influence key decisions and the future direction of IoTeX. Overall, staking in IoTeX is not just a financial endeavor; it's an opportunity to be an integral part of a growing blockchain ecosystem.
Native staking happens by interacting with a dedicated, protocol-level staking mechanism, which means it operates at the core layer of the blockchain without the need for additional smart contracts.
This option offers complete flexibility concerning the amount you choose to stake, the lock time, and the Stake-Lock options. Additionally, it allows you to increase the deposit of existing stakes at a later time, and it incurs a lower fee for any staking action
Staking as NFT introduces Non-Fungible Tokens (NFTs) to represent your staking deposits. In this mechanism, when you stake your tokens, you receive an NFT that signifies ownership and details of the staked amount and lock options.
Staking as NFT offers several benefits over native staking:
It enables participation in Liquid Staking or other DeFi applications and unlocks the potential to earn additional passive income.
With your staking ownership being managed as an NFT token you have the option to liquidate your stake in an for instance if you initially set a lock period but you need your deposit back ahead of it to conclude.
IoTeX 2.0.0 activation is expected on July 22, 2024 00:00:00 UTC, and the conversion will be available on the .
An IoTeX Improvement Proposal (or "IIP") is a design document providing information to the IoTeX community, or describing a new feature for IoTeX, its processes, or its environment.
IIPs are intended to be the primary mechanisms for proposing new features, collecting community input on an issue, and documenting the design decisions that have been implemented in the IoTeX ecosystem.
Because IIPs are maintained as text files in a versioned repository, their revision history also represents the historical record of the feature proposal itself.
Anyone can submit an IIP: A proposal should provide a concise technical specification and a rationale for the new feature. The IIP author is responsible for building consensus within the community and documenting dissenting opinions.
You can read more about IoTeX IIPs, browse past proposals and submit a new one by sending a pull request to the GitHub repository:
↗ Browse and Submit Improvement Proposals
The IoTeX Governance Portal is powered by Snapshot, a no-fee governance tool based on IPFS that makes it simple for decentralized networks to run open votes, polls, and referendums. Follow the link below to browse through or vote on existing proposals, as well as create a new one.
Check out our governance forum, if you'd like to meet the community and discuss new proposals:
↗ Governance Proposals on the IoTeX Forum
Feel free to checkout this blog article if you'd like to learn more about decentralized governance in the IoTeX ecosystem.
To begin staking IOTX, you will need a compatible wallet. Use ioPay if you prefer to manage your stakes on a mobile phone, or MetaMask for managing your stake from a desktop.
To start, purchase IOTX tokens from a cryptocurrency exchange. Then, transfer them to your chosen wallet. For detailed guidance on funding your wallet, follow this link:
This can be done directly through the ioPay app's in-built browser or via a Metamask-enabled web browser. Once you reach the staking portal, you will be prompted to choose between two staking methods: 'Native Staking' or 'Stake as NFT'.
In the first screen of the Staking process, you can browse the list of IoTeX Validators and choose one to delegate your IOTX tokens to. At any time you will be able to redirect your votes to a different delegate without the need to unstake your IOTX.
Delegates all have unique reward plans to cover costs, donate to funds, and re-distribute rewards to their voters. Think of it as Delegates charging a service fee to stake your token.
Create a diverse voting portfolio that is representative of your vision for the future of IoTeX.
Community: If you want IoTeX to prioritize community, vote for an IoTeX Ambassador!
DApps: If you want to prioritize dApp development, vote for a Dev Group!
Enterprise: If you want enterprise to be a priority, vote for a delegate founded by an investor.
When selecting the amount of IOTX to stake, consider your investment goals and risk tolerance. Here are a few tips:
Minimum Stake: Ensure you stake at least 100 IOTX, as this is the minimum requirement.
Transaction Fees: Do not try to stake your entire balance: leave some IOTX in your wallet for transaction fees.
The staking duration setting allows you to specify how long you wish to lock your IOTX tokens for staking. Here are some key points to consider when selecting a duration:
Short-term vs Long-term: Shorter durations provide more flexibility but typically offer lower rewards. Longer durations can offer higher rewards but keep in mind that the extra rewards decrease exponentially so it many not be worth locking for very long periods.
Goal Alignment: Choose a duration that aligns with your investment goals and liquidity needs.
StakeLock is a feature that, when enabled, prevents the countdown of your staking duration from progressing. This means that your IOTX tokens remain locked for the specified duration, and the lock period does not decrease until you disable StakeLock. Once disabled, the countdown will begin, and you'll need to wait for the lock period to expire before you can unstake your tokens. It's useful when your staking duration is short and you don't want to keep renewing it manually each time it expires.
Be careful when enabling StakeLock for long staking durations. If you decide to unstake afterward, you must first disable StakeLock and then wait for the entire lock period to expire before you can unstake your tokens.
When staking for an Hermes Delegate, you can always check your reward distribution transactions on the Hermes website:
As a staker, you may have the right to participate in IoTeX governance decisions, contributing to the future direction of the network.
Unstaking IOTX involves a few key steps:
Disable StakeLock: If StakeLock is enabled, you first need to disable it. This will start the countdown of your staking duration, allowing the lock period to expire.
Wait for Lock Period: Wait for the lock period to count down to zero.
Initiate Unstaking: After the lock period expires, you can initiate the unstaking process.
Cooldown Period: Once you start unstaking, there is a mandatory 3-day cooldown period.
Withdraw: After the cooldown period, you can withdraw your IOTX back to your wallet.
Log into your exchange account
Navigate to the withdrawal
section.
Select IOTX
as the token to withdraw.
Enter the address of your personal wallet.
If required, select IoTeX
as the destination network
Log into your exchange account and obtain the deposit address for IOTX
.
Make sure your exchange accepts IOTX deposits on the IoTeX Network for that deposit address.
Initiating the Transfer:
Open your personal wallet (Metamask, ioPay, etc.).
Select your IoTeX wallet and click "Send".
Enter the exchange's deposit address as the recipient.
Confirm the transaction details and complete the transfer.
Locate and copy your wallet's address.
Provide your wallet's address to the sender.
Confirm that the sender uses the correct token and blockchain network.
Ensure you have enough ETH in your wallet to cover for gas costs on the Ethereum network when you want to transfer your IOTX.
Check out the IOTX Swap guide below if you want to use your IOTX on the IoTeX blockchain for staking and interacting with IoTeX dApps
Transferring IOTX tokens can be a seamless process with the right information. Whether you are moving tokens from an exchange to a personal wallet or vice versa, always ensure you are using compatible wallets and networks. For specific needs like staking, the iotube dApp provides a decentralized solution to swap your IOTX tokens on ethereum to the native IoTeX blockchain.
Staking as NFT enables participation in Liquid Staking or other DeFi applications and unlocks the potential to earn additional passive income. Furthermore, you have the option to liquidate your stake in an if you prefer not to wait for the lock period to conclude.
91-day period: 91 day is a special threshold for the staking duration: when is also enabled, it entitles you to the Burn-Drop rewards that come from DePIN devices registered on the IoTeX blockchain.
Unstaking: Once the staking period ends (if ), your tokens become unlocked. At this point, your tokens remain staked but will no longer earn additional staking rewards because they are no longer locked. You now have the option to unstake, renew your staking period by locking the tokens again, or leave your tokens staked without locking.
Staking IOTX earns you rewards, which are typically distributed automatically to the same wallet you used to stake. To easily identify delegates who distribute rewards daily through IoTeX's Hermes service, look for the Hermes wing icon on .
Welcome to our guide on sending and receiving IOTX tokens. This guide is designed to help you understand how to transfer IOTX tokens between exchanges and personal wallets, such as Metamask or ioPay. We'll also cover important considerations for users withdrawing IOTX from exchanges like , which only support IOTX tokens on the Ethereum blockchain.
you have a .
your wallet is .
Ensure you've
Some exchanges, like , currently supports IOTX only on the Ethereum blockchain. This means you will receive your IOTX on the Ethereum network when you withdraw from Coinbase.
This specification provides a comprehensive overview of the ioID system, detailing its methods, workflows, and security considerations for effective deployment in DePIN applications.
DePIN devices and network nodes can generate a DID and the corresponding DID document by means of SDKs, CLIs or other tools.
A DePIN device owners and node operators can onboard their devices via a the following steps
Generate/obtain the device's DID and DID document (e.g. use a CLI for nodes, or obtain it via the serial port for embedded devices).
Store the DID document on a selected storage layer (e.g. AWS S3, IPFS, etc...)
Invoke the device registry contract with the device's DID, DID document hash, and URI.
Upon successful onboarding, an ioID NFT representing on-chain ownership of the device is minted in the owner's blockchain wallet.
Once registered on-chain, a DePIN entities can authenticate each other and establish secure off-chain communications with other entities in the network using DID-based protocols.
DIDs in ioID conform to the Generic DID Scheme described in the DID specification. They follow the format did:io:io-specific-idstring
, where io-specific-idstring
is generated by:
Creating a private/public key pair over the elliptic curve secp256k1.
Converting the public key to an Ethereum address.
Example of an ioID DID:
A sample DID document:
To onboard a server within a specific layer of a DePIN modular stack (e.g., a sequencer node), a node operator needs to:
Log into the DePIN node using their server credentials.
Generate a DID and DID document (e.g. using a CLI)
Upload the DID document to a storage provider and take note of the URI.
Using the operator's blockchain account, invoke the ioID on-chain registry to perform a Device Registration for the node, with the node DID, DID document hash, and URI.
The ioID device registry is updated with the new information and a "device NFT" is minted to the node operator's blockchain address.
To onboard a device (e.g., a 5G Cellular Antenna) that belongs to a certain DePIN project, a device owner needs to:
Retrieve the device's DID and DID document (e.g. via a usb tool paired with an embedded SDK installed on the device).
Upload the DID document to a storage provider and get the URI.
Register the device with its DID, DID document hash, and URI.
Using the owner's blockchain account, invoke the ioID on-chain registry to perform a Device Registration with the device DID, DID document hash, and URI.
The ioID device registry is updated with the new information and a "device NFT" is minted to the owner's blockchain address.
Once DePIN nodes and devices are registered in the ioID device registry, a DePIN device will rely on a bootstrapping node to discover the service endpoint(s) of a DePIN application.
A DePIN device sends a project descriptor (e.g., a project ID) to a bootstrapping node.
The bootstrapping node uses the project descriptor to retrieve the project configuration URL from the project registry on the blockchain.
The bootstrapping node uses the URI to read the project configuration file from the storage.
The bootstrapping node parses the project configuration file to obtain the service endpoint(s) of the DePIN project.
The bootstrapping node returns the service endpoint(s) to the device.
The device stores the service endpoint(s) in its flash.
Such a DePIN node discovery protocol might need to run periodically to handle potential changes in DePIN nodes within the network.
With the service endpoint available, a DePIN device can interact with a DePIN node in a secure manner. To this end, a number of DID-based sub-protocols need to be performed.
4.1 Mutual Authentication
A DID-based mutual authentication protocol enables secure communication between devices and nodes.
4.2 VC Issuance
Optionally, DePIN devices receive a VC from an issuer to exchange for a W3bstream access token.
4.3 VC Presentation
Optionally, Devices present the VC to obtain an access token.
4.4 Data Upload
Devices upload data to a node via a DID-based encrypted channel.
The first step for any DePIN project intending to integrate with ioID identities is to register the project on the IoTeX blockchain to obtain a Project ID.
Here’s how to register your project:
ioctl
)Please notice that this ioctl command currently only supports the IoTeX Testnet.
Once the transaction is completed you will receive a Project NFT with a certain Token ID, representing your DePIN Project ID on the IoTeX blockchain.
Contract: ProjectRegistry
Function Call: register() external payable returns (uint256)
Example:
This guide will walk you through the process of integrating the IoTeX token ($IOTX
) on your exchange. Since IoTeX is fully Ethereum-compatible, most integration steps will resemble those of any EVM blockchain. Below are the detailed steps, requirements, and resources necessary for seamless integration.
If you require further assistance, please don’t hesitate to reach out to our support team.
IoTeX is a leading decentralized layer-1 blockchain, focused on enabling decentralized physical infrastructure networks (DePIN). The IoTeX native token, $IOTX
, powers the IoTeX ecosystem by facilitating blockchain transactions, staking, governance, as well as data computing and identities management for DePINs.
• Token Name: IoTeX
• Ticker Symbol: IOTX
• Blockchain: IoTeX Mainnet
• Standard: Native Protocol Token
• Network Name: IoTeX Mainnet
• Chain ID: 4689
• Symbol: IOTX
• RPC URL: https://babel-api.mainnet.iotex.io (see more endpoints)
• Explorer URL: https://iotexscan.io
• Network Name: IoTeX Testnet
• Chain ID: 4690
• Symbol: IOTX
• RPC URL: https://babel-api.testnet.iotex.io (see more endpoints)
• Explorer URL: https://testnet.iotexscan.io
Since IoTeX is fully compatible with Ethereum’s virtual machine (EVM), exchanges can use familiar Ethereum tools and libraries (such as Web3.js, Ethers.js, and Truffle) for $IOTX
integration.
To support deposits and withdrawals for $IOTX
, exchanges need to implement wallet integration. As IoTeX is fully Ethereum-compatible, most Ethereum-compatible wallets (such as MetaMask, Trust Wallet, and hardware wallets like Ledger) will work seamlessly for managing $IOTX
tokens.
• Use Ethereum-compatible libraries like Web3.js or Ethers.js to interact with the IoTeX blockchain.
• Set the correct RPC endpoint to ensure interaction with the IoTeX blockchain.
Exchanges can either use public RPC endpoints for convenience, or set up their own IoTeX nodes for higher reliability and security.
Running your own node ensures maximum control over latency, security, and performance.
If you prefer to run your own full node, you can follow the IoTeX full node setup guide.
• IoTeX Mainnet: https://babel-api.mainnet.iotex.io (see more endpoints)
• IoTeX Testnet: https://babel-api.testnet.iotex.io (see more endpoints)
To integrate $IOTX withdrawals:
Use the correct gas price and gas limit based on IoTeX network conditions.
Since IoTeX is EVM-compatible, it supports all Ethereum smart contracts, including those written in Solidity. If your exchange supports Ethereum-based trading, you can use the same mechanisms to enable $IOTX
trading.
To list $IOTX
, use the following token details:
• Symbol: IOTX
• Decimals: 18
• Private Key Management: Ensure private keys are stored securely (e.g., using HSMs, cold storage, or other secure key management systems).
• Multi-Sig Wallets: Implement multi-signature wallets for withdrawals to minimize the risk of unauthorized transactions.
• Monitoring and Alerts: Set up monitoring for large transactions, unusual activity, and sudden spikes in gas fees.
For any issues or further questions regarding the $IOTX
integration, feel free to contact the IoTeX team:
• Email: developers@iotex.io
• Official Documentation: https://docs.iotex.io
• Developer Resources: IoTeX Developer Portal
As a general-purpose identity system, ioID could be utilized in different layers of the DePIN modular infrastructure, as shown in the figure below:
The ioID Module is IoTeX's comprehensive decentralized identity solution based on the IoTeX blockchain and the ioID specification. It is an essential module for developers aiming to integrate decentralized identity verification into their DePIN applications.
The IoTeX ioID module comprises four main components:
ioID Smart Contracts
DID-based secure communication protocol
Client-side tools and SDK
DID Resolver Service
Together, these components facilitate the robust management of both on-chain and off-chain identities for smart devices, users, and nodes within a decentralized network.
This document provides a high-level overview of the architecture of the ioID module and it's components.
The ioID smart contracts provide a secure and decentralized framework for managing the identities of DePIN projects, users, devices, and nodes based on the IoTeX Blockchain.
-> Learn more about ioID Contracts
Unlike traditional centralized IoT clouds that rely on secret certificates, ioConnect enables devices to use Decentralized Identifiers (DIDs) for establishing secure communication channels.
-> Learn more about ioID Contracts
Several client tools are provided to interact with ioID both for DEPIN Builders, device manufacturers, and device owners. ioConnect SDK includes a dedicated API to implement the secure DID communication between devices and servers. The IoTeX CLI ioctl facilitates interactions for DEPIN Builders, while wallet.iotex.io implements the device owner experience.
-> Learn more about ioConnect SDK for ioID
-> Learn more about ioctl for ioID
-> Learn more about wallet.iotex.io for device owners
The DID Resolver is an essential service for enabling DID-based communications within a DePIN project. It serves the critical function of resolving Decentralized Identifiers (DIDs) to their corresponding DID Documents, which contain the necessary metadata and public keys required for secure interactions.
-> Learn more about the DID Resolver
The ioID suite of smart contracts provides a robust framework for decentralized identity management on the IoTeX blockchain. These contracts collectively provide a robust framework for identity management and interaction within the IoTeX ecosystem.
Here’s a brief overview of each contract and its main functions.
ProjectRegistry.sol
The DePIN Project Registry is an NFT-based registry that manages all DePIN projects. It ensures that each project is uniquely identified and authenticated within the network.
ioID.sol
The ioID NFT contract is an essential part of the ioID framework for decentralized identity management on the IoTeX blockchain. It's directly managed by the Project Registry and is in charge for creating and assigning unique ioID tokens for devices. This involves linking devices to project IDs and owners, and generating associated wallet addresses according to the ERC6551 standard.
ioIDStore.sol
The ioID Store is responsible for managing the application and activation of ioID across all projects. It handles the lifecycle of identity management applications, ensuring that identities are correctly set up and maintained.
ioIDRegistry.sol
The ioID Registry contract is used for registering devices on-chain and activating their ioID. It also serves as a DID resolver, providing a reliable means for verifying device identities across different projects.
After binding a Device NFT contract to a DePIN project and requesting a specific number of ioIDs for the project, physical devices can be registered in the ioIDRegistry contract, effectively "activating" the ioID.
This activation process must be carried out by the device owner and involves minting an ioID NFT to the device owner's account. During the minting process the ioID is associated with a specific Device NFT token, where the device's DID (Decentralized Identifier) serves as the token's ID.
Contract: ioIDRegistry
Function Call: function register(address deviceContract, uint256 tokenId, address device, bytes32 hash, string calldata uri, uint8 v, bytes32 r, bytes32 s ) external
Example:
Please refer to this code to clarify the meaning of the method call arguments:
You can check the project status and details using the ioctl command below:
Output Explanation:
projectContarctAddress represents the NFT token contract address for registered projects (add it to your wallet app to check your project IDs and manage ownership).
deviceNFT represents the Device NFT contract address you have set for your depin project
appliedIoIDs: is the number of ioIDs you have applied, consequently the number of devices that can be activated for your project
activatedIoIDs: is the number of ioIDs activated and assigned to registered devices
Decentralized Physical Infrastructure Networks (DePIN) face unique challenges in verifying and processing physical device data while ensuring trust. On-device verification methods, such as using trusted execution environments in conjunction with blockchain-based identity management, can help solve data provenance verification. However, trusted processing of data is often overlooked by DePIN builders due to the lack of dedicated off-chain verifiable compute protocols suitable for DePINs.
As a result, the core logic of DePIN projects, specifically the logic that triggers on-chain token economies, is not verifiable by anyone and thus not trusted.
W3bstream is an off-chain verifiable compute protocol designed by IoTeX to address the verification challenges in DePIN. Based on multi-prover technology, W3bstream ensures flexible and scalable verification of off-chain computations, mitigating risks like self-dealing, lazy providers, and malicious responses.
Ensure you have already registered a Project ID
After registering a DePIN project, the next step is to set the Device NFT contract for that project. This contract must be set before any user attempts to register a device ioID for your project.
Your Device NFT contract must be linked to your Project ID and only users who own a valid device NFT for a DePIN project are entitled to register a new ioID identity for a physical device for that project and bind it to their blockchain wallet.
While the Device token contract could be a plain NFT721, below is an example for a typical customization that can be used as a Device NFT by a DePIN project.
ioctl
)Contarct: ioIDStore
Function Call: setDeviceContract(uint256 _projectId, address _contract) external
Example:
↗ For more details, source code and deployments, you can visit the .
Combined with , W3bstream forms a robust infrastructure that ensures trust and integrity within DePIN ecosystems, enabling trusted and secure management of decentralized physical infrastructures.
DePIN projects must reserve a specific number of ioIDs by paying the required amount before they can register their devices on IoTeX. ioIDs can only be reserved by DePIN projects that are registered on IoTeX, so please ensure that your project and you own the Project ID
before continuing.
This section is dedicated to the process of registering identities within the IoTeX ecosystem, particularly for DePIN (Decentralized Physical Infrastructure Networks) projects and devices.
Register a DePIN Project
To initiate a DePIN project and register device identities, you must first register your project with the IoTeX network. This process involves:
Providing a project name.
Referencing your "Device NFT" contract.
Receiving a "Project ID" in the form of an NFT.
Register Devices
For devices to interact with the IoTeX blockchain, they must be assigned to a DePIN project, registered, and verified. This ensures that all devices and their data are verifiable across all layers of the DePIN architecture. The process involves:
Requesting a number of ioIDs for a DePIN project.
Activating these ioIDs through a device registration and owner binding process.
W3bstream is a blockchain-orchestrated protocol, which aims to harness the power of a global-scale network of provers to execute the logic of emerging DePIN applications. In a nutshell, W3bstream is a decentralized off-chain computing network that is composed of heterogeneous nodes performing verifiable computations, as illustrated in the figure below:
The proofs generated by W3bstream nodes are verified by dedicated verifier contracts on-chain and then consumed by DePIN Dapps. Depending on each DePIN project configuration, W3bstream provers are run by the community and are rewarded for providing their computational resources to process blocks of data for DePIN projects.
Several techniques have been developed in the past to attest integrity of data processing and allow public verifiability, including zero-knowledge proofs (ZKPs), trusted execution environments (TEEs), and secure multi-party computations (SMPCs).
W3bstream will gradually support the leading zkVM/zkWASM projects (e.g., Risc0, Succinct SP1, Nexus, etc.) as well as popular DSLs (e.g., Circom, Halo2, ZoKrates, Noir, Cairo, etc.) for building customized zk circuits.
Halo2: The Halo2 ZK prover executes Halo2 circuits.
Risc Zero: The Risc Zero prover executes code in a Risc Zero zkVM.
zkWASM: The zkWASM prover executes WASM modules in a zkWASM VM.
The TEE prover facilitates DePIN developers to utilize state-of-the-art confidential computing technology for performing privacy-preserving off-chain computing. W3bstream will gradually support the development flow of the leading TEE-based hardware platforms such as Intel SGX, Intel TDX, AMD SEV, AMD SEV-SNP, AWS Nitro, Arm CCA, etc.
An SMPC prover can be realized by following the general development flow of a specific SMPC protocol (e.g., SPDZ). However, efficiently achieving public verifiability is still an ongoing research direction. The SMPC prover allows DePIN developers to employ several nodes in the network to conduct collaborative privacy-preserving off-chain computing in a distributed manner.
The BYOP type of prover offers great flexibility for DePIN developers deploying optimized provers that are tailored to specific DePIN projects or exploring new efficient verifiable computation techniques in the context of DePIN.
The default DePIN configuration provided with the W3bstream release offers the essential stack needed to stream data messages from a DePIN device and process them in W3bstream, generating a validity proof that can be written and verified on-chain.
The Sequencer service provided in this configuration is a reference implementation for a DePIN data sequencer, supporting both ioID and W3bstream. While suitable for development purposes, this demo service however is best used as a reference or starting point for your own sequencer implementation.
Below, we explore some configuration options for the data sequencer that can be useful during development of your W3bstream project.
In a DePIN application, the data sequencer, whether centralized or decentralized, typically authenticates devices, validates, filters, and sorts their data. Each data message processed by the Sequencer is usually appended to a W3bstream Task until the expected "aggregation value" is reached. In the provided demo sequencer, the default aggregation value is set to 1
, meaning each message sent to the sequencer is immediately wrapped in a W3bstream Task, stored in the Postgres DB, and fetched by W3bstream for processing.
You can change the data aggregation amount in the Sequencer configuration of docker-compose.yaml
like shown below:
The W3bstream GitHub repository includes a developer-friendly setup to facilitate DePIN builders building W3bstream provers for their verifiable off-chain computing.
The setup includes the following services:
A reference implementation for a DePIN data sequencer
A Postgres DB as the Data Availability service
A W3bstream coordinator and a prover as a single-node W3bstream configuration
Let's start by first downloading some ready-made W3bstream project files that implement a basic "range prover" using different ZK technologies:
With the demo projects in place, we can proceed by fetching the docker-compose.yaml file and running W3bstream locally:
Now that we have a basic DePIN stack running, including a data sequencer, a data availability service, and a minimal W3bstream network, let's test the setup by sending a data message targeting one of the three demo projects.
In a new terminal, type the following command to send a data message to the sequencer targeting one of the example projects:
After some time, the log in the first terminal should look like similar to the one below:
The proof generation in this case should be pretty quick, the log in the first terminal should look like similar to the one below:
After some time, the log in the first terminal should look like similar to the one below:
By leveraging W3bstream, developers can efficiently process and validate device data before committing proofs of physical work to the blockchain, ensuring integrity of data processing and reducing on-chain computation costs.
This guide outlines the steps necessary to integrate W3bstream into your DePIN project, from setting up a local development environment to deploying your configuration on the IoTeX blockchain. To use W3bstream as the off-chain compute layer in a DePIN project, developers should follow these steps:
Run a local W3bstream node: Set up and run a W3bstream node on your local machine to facilitate the development and testing process.
Build the prover logic: Develop the logic that processes and verifies device data, ensuring it meets the necessary criteria before being sent to the blockchain.
Create a W3bstream configuration file: Compile a configuration file that includes your prover code, specifying how W3bstream should handle and process incoming data.
Test the W3bstream prover locally: Validate your prover logic and configuration file by running tests locally to ensure everything functions correctly.
Deploy the W3bstream configuration to the IoTeX blockchain: Once testing is complete, deploy your configuration to the IoTeX blockchain, enabling your DePIN project to leverage W3bstream's off-chain compute capabilities in a live environment.
A coordinator node in the off-chain computing layer retrieves data from the data availability layer based on the configuration of a DePIN project;
The coordinator node feeds data to an idle prover node or a selected set of idle prover nodes in the off-chain computing layer;
The prover node(s) performs computation specified by the DePIN project and generates the computation result and corresponding validity proof;
The computation result and validity proof are returned to the coordinator node;
The coordinator node sends the computation result and validity proof to a smart contract for further processing.
Given two input and , compute the result and provide the proof.
Given three input and , compute the result and provide the proof that
Ensure that you have before proceeding:
In a , W3bstream is an implementation of the off-chain computing layer featuring multi-prover technology. As a decentralized heterogeneous prover pool, W3bstream can perform project-specific business logic on the data stored in the Data Availability (DA) layer and generate validity proofs (e.g., zero-knowledge proofs, attestation reports, etc.) of the computations executed. W3bstream works as a stateless computing component in a modular DePIN infrastructure and follows the high-level workflow as illustrated below:
Start by cloning the W3bstream repository, where you can start from a template example:
Open the folder in a code editor and make the required modifications based on your actual data message and prover logic.
Enter the zkWASM circuit folder
Build the prover with:
The prover binary will be saved in zkwasm_demo.wasm.
Execute the docker run
command for local verification. Note that the directory where the proof is located needs to be mounted into the image. It's simple, just input the proof file. You can also use the help command to check how to use it.
Because a dependency of zkwasm-circuit
is still under development and not yet ready for public release, it is recommended to use the Docker image method above for local verification.
Run the following command to build the verifier:
After the command is successful, a zkwasm-circuit
executable file will be generated in the target/release
directory.
You can execute the binary file in the target/release
directory. To verify a proof, simply provide the proof file as an argument. For more details on usage, you can use the help command.
To deploy your prover logic to the W3bstream network, you need to create a W3bstream project file. This file includes the binary code of the ZK Prover and the destination contract of the DePIN project that will receive the computation results and proof on the blockchain.
A W3bstream proof can be directed to various destinations, referred to as "Outputs." Each configuration in the W3bstream project file must have an output specified. Below is an example configuration structure:
Each output type has its own settings and parameters. Below are the supported output types and their respective configurations:
stdout
is the default output for a configuration and is ideal during the development phase. It allows developers to retrieve the proof from the W3bstream node log for local verification without writing it to an actual destination. This simplifies debugging and testing:
type: Specifies the output type. For standard output, this should be set to stdout
.
By using the stdout
output type, you can focus on ensuring that your proofs are generated correctly and efficiently before moving on to more complex output configurations.
When you need the W3bstream proof to be written to your Dapp contract (e.g., to trigger your DePIN token economy), you should use the ethereumContract
output type. This output currently supports the IoTeX blockchain and requires some additional settings:
type: Specifies the output type. For Ethereum contracts, this should be set to ethereumContract
.
chainEndpoint: The endpoint of the IoTeX blockchain where your Dapp operates.
contractAddress: The address of the W3bstream router contract on the IoTeX blockchain.
receiverContract: The address of your DePIN Dapp contract that is supposed to receive the W3bstream proofs.
contractMethod: The method in the receiver contract that will handle the proof.
contractAbiJSON: The ABI of the method in the receiver contract that will handle the proof.
By configuring the output as shown, you ensure that the proofs generated by W3bstream are correctly sent to your Dapp contract on the IoTeX blockchain, enabling your DePIN token economy to function as intended.
The W3bstream project file includes all the necessary code and configurations for a W3bstream node to correctly serve your DePIN project with data computation and on-chain proof submission. When deploying a W3bstream project you are in fact deploying a project file and linking it to your Project ID in the W3bstream contracts.
Below is an example of a W3bstream project file:
The W3bstream project file is in fact an array of configurations. Each configuration in the array allows you to define different settings for various provers and outputs, enabling flexibility in how W3bstream handles proofs and integrates with other components.
defaultVersion: The default version of the configuration to be used.
versions: An array of all available W3bstream configurations for the project. Each configuration includes:
vmType: The type of prover (e.g., halo2, risc0, zkwasm, with more types in the future).
output: Defines where the proof should be written.
version: The version number of this configuration.
code: The actual code of the prover if it's a ZK prover. Zlib compressed and hex encoded.
A W3bstream project file with a valid configuration can be easily generated using the ioctl CLI for various types of provers. After generation, the configuration can be manually finalized by adding receiver contract details, version numbers, and other necessary information.
To generate a W3bstream project file for a Risc Zero prover using a Postgres database as the Data Availability (DA) Layer, use the following ioctl command:
Make sure to:
Configure DA Layer Credentials: Ensure the Postgres database credentials are correct.
Customize File Paths: Set the path to your methods.rs
file appropriately.
Customize Project File Name: Change the project file name (e.g., 10001
) as needed.
Match image_id
and elf
Fields: Ensure the image_id
and elf
fields in the command match the values in your methods.rs
file.
For a Halo2 prover, use the command below:
For a zkWASM prover, use the command below:
To utilize the proofs generated by W3bstream in your Dapp contract, it's essential to verify the receipt on-chain. In this section of the documentation, we will explore how smart contracts of DePIN projects can receive a W3bstream proof, verify it, and utilize the computation results to trigger token economies. For example, this might involve awarding crypto assets to device owners upon proving that certain "work" has been performed in the physical world by the DePIN device.
Start by cloning the W3bstream repository, where you can start from a template example:
Open the folder in a code editor and make the required modifications based on your actual data message.
The circuit bytecode is saved in the file halo2_wasm_bg.wasm
located under the pkg
folder.
The command below will create thasdfwefe circuit executable that can be used to generate and verify proofs locally, as well as generate the Solidity contract for on-chain verification of a proof:
This section of the documentation explains how to create a W3bstream ZK prover using Risc Zero as the ZK framework.
Start by cloning the W3bstream repository, where you can start from a template prover:
Open the folder in a code editor and make the required modifications based on your actual data message.
Learn more about developing Risc Zero provers:
The prover bytecode is saved in a file named methods.rs
inside the release
folder. The correct path is logged at the end of the build:
The method.rs
file also includes the image ID of the prover that is needed by the verifier when verifying a proof:
When your W3bstream project file is ready, you need to deploy it to the IoTeX blockchain for it to become discoverable by the W3bstream network. Let's go through the stpes.
Here is an example W3bstream project registration:
The output of the ioctl command will reveal the newly created W3bstream project's settings and status:
With your project registered in W3bstream it's now possible to deploy your project file:
The output of the command will show the new status of the project:
The project file has been uploaded to IPFS and the uri along with the hash has been set for your project in the W3bstream registry.
The last thing to note is that your project is paused by default, which means W3bstream nodes will not process any task available on the DA Layer that targets your project until the project activity is resumed.
As the owner of the project NFT, you have the ability to query and interact with your W3bstream project at any time. Below are the operations you can perform on your W3bstream project:
To start your project, use the following command:
To query the status or details of your project, use the following command:
By default, the prover amount that processes the project's tasks is set to one. You can customize this amount using the following command:
If you need to stop the project's task processing, use the following command:
In this section of the documentation, we will review the steps required to create the prover code based on the proving technology your project requires. Currently W3bstream supports several ZK proving technologies. TEE and additional provers will be added in future releases.
The first step is to register your DePIN Project ID into the W3bstream Projects Registry. This operation has a cost of 1 IOTX per project on the IoTeX Testnet (corresponding to ).
This documentation is being updated. Please refer to thein the repository.
Testnet
0xD6c51c8Fb86F8e7b051AB52B3EEDd70467378016
Mainnet
N/A
N/A
The recommended method to run a W3bstream node is using official Docker images from IoTeX.
To enable your node to send proofs to the blockchain, set up a funded account on the IoTeX Testnet:
Fetch the latest stable docker-compose.yaml
:
Pull the required images:
To process proofs for DePIN projects based on RISC0, you need to configure a Bonsai API Key:
-> Learn more about the BONSAI service
To start your W3bstream node, run the following command in the same directory containing docker-compose.yaml
:
Monitor your W3bstream instance with:
To shut down the node run the following:
Many traditional Web2-based IoT businesses are looking for new opportunities in the Web3 space and the ioID-SDK is dedicatedly built to address the pain points during this transition.
Smart devices used in today's IoT businesses vary in terms of chip architectures (e.g., Arm, MIPS, RISC-V, etc.), operating systems (e.g., RTOS, Linux, Android, etc.), peripherals, etc. An IoT development team often faces two major technical hurdles when they try to join the Web3 evolution: 1) Lack of Web3 development kits that support their hardware platforms; and 2) Adoption of different Web3 development kits for different hardware platforms. The first technical challenge prevents an IoT business from being transformed into a Web3 one, whereas the second technical challenge leads to increased learning time and development costs as well as decreased code resuability for developers. The ioID-SDK tackles these challenges by employing an innovative SDK architecture composed of a core framework (CF) and a platform adaptation layer (PAL). While the core framework consists of stable and platform-independent functionalities such as cryptographic algorithms, communication interfaces, data encoding/decoding, etc., the platform adaptation layer handles platform-specific functionalities and accommodates requirements of different embedded systems and communities. This design methodology enables the ioID-SDK to be easily integrated into various smart devices, thereby greatly reducing the development complexity and learning curve.
Traditional Web2-based IoT projects are highly centralized and transforming those projects into Web3 ones usually involve significant changes in system architecture and device firmware. Such a lengthy and tedious transformation process has posed a major challenge for Web2-based IoT businesses.The ioID-SDK is able to simplify the changes of existing device firmware by introducing the concept of a standard layer. The standard layer refers to well-known design frameworks, such as embedded operating systems (e.g., FreeRTOS, Zephyr, etc.), POSIX standards, and community-driven code frameworks (e.g., Arduino, Raspberry Pi, ESP32, etc.). The usage of a standard layer can effectively minimize code coupling between the ioID-SDK and original Web2-based IoT project. When the framework provided by the standard layer is used, an IoT developer can easily integrate the ioId-SDK into existing project codebase with only minor code modifications.
To address the pain points that are faced by traditional Web2-based IoT businesses during their Web3 journey, the ioID-SDK is built with a number of salient features.
W3bstream prover onboarding is based on the ioID DIM module and follows the process for ioID Registration and Binding. An on-chain fleet management contract is responsible for scheduling W3bstream tasks and tracking the lifecycle of all the prover nodes.
Each prover node can be either in a ‘Busy‘, ‘Idle‘, or ‘Offline‘ status and the node status will be continuously updated in the fleet management contract. A W3bstream explorer can be used to check the status of all prover nodes.
The IoTeX's ioID SDK is a software development toolkit for Internet of Things (IoT) applications. It aims to facilitate the rapid and convenient transformation of traditional Web2-based IoT projects into Web3 ones by providing a suite of developer-friendly components such as the Arm certified PSA crypto APIs, decentralized identifiers (DIDs), verifiable credentials (VCs), and DIDComm messaging.
The ioID SDK is compatible with a wide range of embedded systems (e.g., Arduino, ESP32, Raspberry Pi, Nordic, STM32, etc.) and developers can easily integrate the SDK into their existing or ongoing traditional IoT projects within minimal code changes.]
As illustrated in the figure below, the ioId-SDK adopts a layered design and consists of five layers from top to bottom, namely the DIDComm messaging layer, the identity and credential service layer, the cryptographic service layer, the cryptographic primitive layer, and the root of trust layer. It is worth noting that each layer is composed of multiple components, allowing developers to customize the SDK to meet hardware limitations and application requirements.
The arrows on the right side of the architecture diagram represent two development directions defined by the SDK.
In the future, the SDK will continue to evolve and provide other application components related to Web3 and blockchain domains for developers to use.
The southern part forms the core framework of the entire SDK, which is based on the cryptographic suite developed in compliance with Arm’s Platform Security Architecture (PSA) architecture and aims to provide unified, standardized cryptographic suite application programming interfaces (APIs) for northbound component developers or other application developers. Through highly abstracted driver interfaces, cryptographic suites suitable for various development platforms, and an optimized SDK configuration system, the underlying southern layer not only applies to a wide range of embedded system platforms but also greatly reduces the learning curve for developers using the SDK.
The northern part is composed of self-sovereign identity (SSI) components built upon the core framework mentioned above. The DIDs, VCs and DIDComm messaging represent the three key pillars of SSI, which aim to move control of digital identity from conventional identity providers to individuals and lay down the foundation for people, organizations and things establishing rich digital relationships. DIDs are a new type of globally unique identifier (URI) that enables verifiable, self-sovereign digital identity, whereas VCs are able to attest identity attributes of subjects and the exchange of VCs builds up trust among DID-identified peers. Both DIDs and VCs are the proposed recommendations of the World Wide Web Consortium (W3C). DIDComm, as specified by the Decentralized Identity Foundation (DIF), provides utility for people, organizations and IoT devices interacting with machine-readable messages and creating DIDbased relationships.
DIDComm messages are exchanged between software agents of entities for implementing a variety of security protocols. The modular design methodology allows developers to easily configure the SDK to adapt to their project needs. For instance, developers can build hardware wallets or blockchain embedded clients based on the southbound core framework, and create machine-to-machine (M2M) communications, identity wallets, metaverse applications, etc., based on the northbound SSI components.
The Modular Security Pool (MSP) is a module that acts as a pool gathering staking security from various established Layer 1 blockchains and distributing that security to new networks, including DePINs and DePIN Infrastructure Providers (DIMs). This allows new networks to inherit the security of the underlying Layer 1 blockchains without having to build their own security infrastructure from scratch.
Stakers can support a new network by pointing their stakes to the validators of the network, who are responsible for validating transactions within the network.
The Modular Security Pool (MSP) architecture is designed to streamline and secure the development of new networks, specifically DePINs and DIMs, by inheriting security from established Layer 1 blockchains. Here's how it operates:
Stakers Delegate Assets: Participants in Layer 1 blockchains like IoTeX or Ethereum delegate their assets to the MSP, enhancing the security of MSP-powered networks.
Stakers Choose Validators: Stakers select validators from a pool associated with DIM or DePIN networks. Validators run nodes to secure the network and validate transactions.
Validators Run Nodes: Chosen validators operate nodes within the MSP network, ensuring transaction integrity and security.
DIM Builders Establish Networks: DIM and DePIN builders develop their networks, including on-chain and off-chain components like data streaming, processing mechanisms, storage solutions, automation tools, cryptography schemes, and authentication modules.
Incentivizing Stakers: DIM and DePIN builders incentivize stakers to allocate assets to their modules within the MSP through rewards, network tokens, or other benefits, ensuring sufficient motivation for participation.
Distribution of Staking Security: The MSP distributes staking security to new networks, leveraging pooled security from Layer 1 blockchains and the participation of stakers and validators to ensure the security and decentralization of these new networks.
Along with the core modules developed internally by the IoTeX developers, numerous modules will be sourced from leading projects in the blockchain space with specialized capabilities. For instance, the Data Availability layer is the main focus of projects like Celestia and NEAR, whereas the Long-term Storage layer is the central focus of projects like Filecoin and Arweave.
As IoTeX 2.0 stresses modularity and composability, we invite all projects to integrate into the DIM layer, thus enabling DePIN projects to design a tech stack of their preference.
The ioId-SDK currently supports a number of embedded communities as shown below. In particular, the PSACrypto library (i.e., the southern part of the ioId-SDK) has been submitted to the Arduino and ESPRESSIF communities and passed their component approval processes.
The IoTeX's PSACrypto is a cryptographic library (the southen part of SDK) that supports a wide range of embedded devices with flash memory from as low as 20KB to several hundred MB. It is fully compliant with the Arm PSA Certified Crypto API 1.1 standard. With its unique frontend and backend design, it allows users to choose a backend cryptographic library that best suits their needs, thereby achieving a good balance between the performance and memory footprint. Moreover, an optimized visual configuration tool provides great flexibility for developers to customize a cryptographic library based on the available hardware resources and specific project requirements and facilitates developers to integrate the PSACrypto library into their projects seamlessly. The PSACrypto library has received the PSA Certified Crypto API label from Arm.
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.
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.
A DePIN Sequencer can function either as a centralized service or as a decentralized network. Its primary role is to sort data packets from smart devices and pack them in a Data Availability Network in a format that can be processed by the off-chain computing layer (W3bstream).
A DePIN sequencer is usually responsible for device authentication, data message validation, sorting, filtering, and other tasks depending on project requirements.
While researchers have not yet reached a consensus on the architecture and functions of a DePIN Sequencer, the need for high customizability and programmability is evident. Many emerging decentralized Sequencer networks focus on Ethereum scalability but lack the programmability required by DePIN projects.
While IoTeX does not provide any Data Sequencer DIM, W3bstream will support popular Data Availability (DA) infrastructures. We anticipate that third-party projects will develop DIMs to serve as DePIN Sequencers, integrating seamlessly with W3bstream.
The Data Availability Layer (DAL) is the input layer for W3bstream. It can be either a centralized service or a decentralized network that stores blocks of data for a specified period as determined by a DePIN project. Once this period expires, the data may be immediately deleted or transferred to a dedicated Long-Term Storage Layer. Depending on the project's configuration, the DAL also periodically commits data sets (e.g., a hash) to the IoTeX Blockchain to ensure data integrity.
While IoTeX does not provide any Data Availability DIM, W3bstream will support popular Data Availability (DA) infrastructures. We anticipate that third-party projects will develop DIMs to serve as DA layers, integrating seamlessly with W3bstream.