Skip to main content

Welcome to Shimmer

Shimmer is a distributed ledger with the support of NFTs, native tokens, and smart contracts. It is an innovation network where the community tries out the new protocol changes before they are deployed on the more conservative IOTA network. It has its own supply of tokens which are called $SMR.

Basics

Nodes

Shimmer is a network made out of nodes, computers that run the Shimmer node software. Anyone can join and leave the network, and nodes are run by individual parties. If you own an average computer, you can run your own Shimmer node, too.

Blocks and Outputs

The structure that stores the data is called the Tangle. It consists of separate blocks, each of which stores some small data change. By including blocks into the Tangle, nodes agree on how the Tangle's current state looks like. To get included, each block should reference from a few older blocks, and be referenced by a newer block. It means that there is always a front of the most recent blocks: you even can see it. The more new pending blocks there are, the wider the front and the more points are there for newer blocks to attach.

Now, when the nodes agreed on the Tangle state, they can extract useful information from it: for example, who owns what tokens. Each block specifies outputs. In the most basic form, outputs specify an amount of tokens and their owner. Blocks exhaust existing outputs and create new outputs with the same total amount of tokens, but with different distribution and owners. Each output can be spent only once: all future blocks that try to exhaust it will be rejected by the nodes. You can ask a node to go through all blocks for a list of created and exhausted outputs that mention you as an owner. If you strike out all exhausted outputs from the list of created outputs, you will get a list of unspent outputs. The sum of their tokens will make your token balance. This model of accounting is called UTXO.

Unlock Conditions, Addresses, and Seeds

Each output has a list of unlock conditions. Owning an output means that it has an Address unlock condition that has your address listed. Addresses are not arbitrary: you can have multiple of them, but they all are derived from your seed through a special mathematical function.

The seed is a randomly generated number which you can use to cryptographically sign a transaction which you then send to a Shimmer node so it would include it in one of the new blocks. Anyone can check that the signature had been generated by the same seed that generated the address, and that the signature had been generated for that exact transaction. By matching the transaction data, the address in the unlock condition of the output, and the signature, nodes have a faultproof way to confirm your ownership.

This means that you own your funds only for as long as you are the only person who knows the seed. Take the cybersecurity seriously.

Tokenization

Shimmer lets you create non-fungible tokens, or NFTs. NFTs can't be mixed up with each other (hence the name), and are minted one by one. They can store some immutable data and identity of their creator. For example, you could record a music track and mint an NFT with the hash of it and your signature.

You can also create a foundry to mint native tokens. Consider these tokens a custom currency. You can mix tokens from the same factory together.

Smart Contracts

Shimmer supports smart contracts as a double-layered system. On the Layer 2, there are independent blockchains that actually run smart contracts. They regularly commit their state on the Layer 1, the Tangle. See IOTA Smart Contracts for further detail.

Storage Deposits

Shimmer is completely feeless. There are no fees for sending transactions, minting NFTs, or anchoring smart contract chains. But all this additional information has to be stored on the actual physical hardware. If not limited, that would cause node owners to add terabytes upon terabytes of additional storage space to their computers. For this reason, the available storage is bound to the amount of $SMR tokens in outputs. If there is some data in the output (an NFT or a list of native tokens), the $SMR tokens turn into its storage deposit. If during a transfer the new output has too much data and too little $SMR tokens, the network will deny the transaction.

This means that when you trade an NFT you can also have to send some $SMR tokens with it. You will get them back, though. With advanced unlock conditions, you can force the recepient to replace your tokens in the storage deposit.

Quiz

Question 1/9

The staging and innovation network of IOTA is called ...?