Skip to main content

Units and Conversions

Exchanges and dApp Devs Only

The migration documentation describes the processes needed to claim and migrate output types manually; However, for the average user, this knowledge is not needed and is abstracted in the wallet web application (dashboard). The specific migration knowledge described here is unnecessary for people using a regular wallet.

IOTA

The IOTA token, the native token on IOTA Stardust, is represented as a Coin<IOTA> object on IOTA Rebased. The IOTA coin type lives on 0x2::iota::IOTA. The amount of decimals has changed for IOTA Rebased from 6 to 9 decimals.

Example

  • You own 1.234567 IOTA on Stardust on address iota1qrhacyfwlcnzkvzteumekfkrrwks98mpdm37cj4xx3drvmjvnep6xqgyzyx.
  • This address is represented as 0xefdc112efe262b304bcf379b26c31bad029f616ee3ec4aa6345a366e4c9e43a3 in hex format.
  • After the migration, you will end up with an owned object on address 0xefdc112efe262b304bcf379b26c31bad029f616ee3ec4aa6345a366e4c9e43a3 for IOTA Rebased.
  • This owned object will be of the type Coin<0x2::iota::IOTA> with a Balance of 1234567000 represented as 1.234567000, given the new 9 decimal format.
╭───────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ objectId │ 0xde7a1588162458db4e003b0192c300f51caf5afbbe65a8f9f56964cfaddb3c30 │
│ version │ 1 │
│ digest │ ABbc7w4dqVXHU2zu26xdfaUzkzfjE4YYQW3epEFsh8uh │
│ objType │ 0x2::coin::Coin<0x2::iota::IOTA> │
│ owner │ ╭──────────────┬──────────────────────────────────────────────────────────────────────╮ │
│ │ │ AddressOwner │ 0xefdc112efe262b304bcf379b26c31bad029f616ee3ec4aa6345a366e4c9e43a3 │ │
│ │ ╰──────────────┴──────────────────────────────────────────────────────────────────────╯ │
│ prevTx │ 9vHM6saxeYewLy2UpnVNGYvFznh4tgzk4Es4koCWV4UA │
│ storageRebate │ 0 │
│ content │ ╭───────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ │ dataType │ moveObject │ │
│ │ │ type │ 0x2::coin::Coin<0x2::iota::IOTA> │ │
│ │ │ fields │ ╭─────────┬───────────────────────────────────────────────────────────────────────────────╮ │ │
│ │ │ │ │ balance │ 1234567000 │ │ │
│ │ │ │ │ id │ ╭────┬──────────────────────────────────────────────────────────────────────╮ │ │ │
│ │ │ │ │ │ │ id │ 0xde7a1588162458db4e003b0192c300f51caf5afbbe65a8f9f56964cfaddb3c30 │ │ │ │
│ │ │ │ │ │ ╰────┴──────────────────────────────────────────────────────────────────────╯ │ │ │
│ │ │ │ ╰─────────┴───────────────────────────────────────────────────────────────────────────────╯ │ │
│ │ ╰───────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰───────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Timestamps

In IOTA Stardust, you had transaction timestamps for every transaction (which offer no guarantees, given that they could arbitrarily be set by the sender of a transaction) and global Milestone timestamps, which were set for the milestone confirming a transaction. For any use case where timestamps are critical, the milestone timestamp, in seconds since the Unix epoch, should've been used.

With IOTA Rebased, we no longer have these milestones to rely on. Instead, we can use on-chain time using the Clock module in Move to get a timestamp of the last checkpoint (again, a Unix epoch-based timestamp, but this time in milliseconds since the Unix epoch). To learn more, please read the section about On-Chain time.