Mosaic

Mosaics are part of what makes the Smart Asset System unique and flexible. They are fixed assets on the NEM blockchain that can represent a set of multiple identical things that do not change.

A mosaic could be a token, but it could also be a collection of more specialized assets such as reward points, shares of stock, signatures, status flags, votes or even other currencies.

Properties

Each mosaic has a unique identifier and a set of configurable properties. During the mosaic creation, you can define:

Property Type Description
Divisibility Integer Determines up to what decimal place the mosaic can be divided. Divisibility of 3 means that a mosaic can be divided into smallest parts of 0.001 mosaics. The divisibility must be in the range of 0 and 6.
Duration Integer Specifies the number of confirmed blocks the mosaic is rented for. To create non-expiring mosaics, leave this property undefined. Duration is allowed to lie up to 3650 days (10 years).
Initial supply Integer Indicates the amount of mosaic in circulation. The total supply must be in the range of 0 and 9,000,000,000.
Supply mutable Boolean If set to true, the mosaic supply can change at a later point. Otherwise, the mosaic supply remains immutable.
Transferability Boolean If set to true, the mosaic can be transferred between arbitrary accounts. Otherwise, the mosaic can be only transferred back to the mosaic creator.

Absolute and relative amounts

NEM works with absolute amounts, removing the comma when the mosaic can be divisible. To get an absolute amount, multiply the amount of assets you want to create or send by 10divisibility.

For example, if the mosaic has divisibility 2, to create or send 10 units (relative) you should define 1000 (absolute) instead.

Cost

The cost of creating a mosaic is configurable per network. By default, it has a cost of 500 cat.currency plus transaction fees.

Example

A private company, ComfyClothingCompany, decides that it wants to go public. Instead of a traditional IPO, the company decides to do an STO to issue tokens through the NEM platform.

Thus, the company must create a mosaic to represent shares to their company. Here is how the company might configure the mosaic properties:

Property Configuration
Duration undefined
Divisibility 2
Initial supply 1000000000 (10.000.000,00)
Supply mutable true
Transferability true

Duration: Shares of the company should exist as long as the company is in business. The ComfyClothingCompany leaves this property undefined, creating a non-expiring mosaic representing their assets.

Divisibility: Although brokerages and investment firms can fractionalize shares, the traditional minimum number of shares an investor can purchase from the open market is 1.

However, NEM mosaics offer more flexibility in tokenizing their company shares. ComfyClothingCompany chooses the divisibility to be 2, allowing the smallest fraction of their shares to be 0.01.

Fractional ownership, along with the ability to trade 24/7, brings additional liquidity to the market. These same characteristics also open up the market to smaller investors.

Supply: ComfyClothingCompany sets the initial supply of the mosaic to a typical startup amount of 10.000.000 authorized shares. As the company grows, it could choose to increase the number of shares, so the supply mutable is set to true.

Transferability: Once the initial shares are distributed, the shares will be on the market to be traded in public. Thus, the transferability property needs to be set to true.

Guides

Schemas

Note

Configuration parameters are editable . Public network configuration may differ.

MosaicDefinitionTransaction

Announce a mosaic definition transaction to create a new mosaic.

Version: 0x02

Entity type: 0x414D

Inlines:

Property Type Description
mosaicNonce uint32 Random nonce used to generate the mosaic id.
mosaicId uint64 The mosaic Id.
propertiesCount uint8 The number of elements in optional properties
flags MosaicFlag The mosaic flags.
divisibility uint8 The mosaic divisibility. The maximum divisibility is 6.
properties array(MosaicProperty, propertiesCount) The optional mosaic properties.

MosaicSupplyChangeTransaction

Announce a supply change transaction to increase or decrease a mosaic’s supply.

Version: 0x02

Entity type: 0x424D

Inlines:

Property Type Description
mosaicId uint64 The id of the affected mosaic.
direction MosaicSupplyChangeDirection The supply change direction.
delta uint64 The amount of supply to increase or decrease.

MosaicProperty

Property Type Description
id uint8 The property id. (0x02) stands for duration.
value uint64 The mosaic property value.

Mosaic

Property Type Description
mosaicId uint64 The mosaic id.
amount uint64 The amount of the mosaic.

UnresolvedMosaic

Property Type Description
mosaicId uint64 The mosaic id.
amount uint64 The amount of the mosaic.

MosaicFlags

Enumeration: uint8

Id Description
0x00 No flags present.
0x01 The mosaic supply is mutable.
0x02 The mosaic is transferable.

MosaicSupplyChangeDirection

Enumeration: uint8

Id Description
0 Decrease.
1 Increase.