Developer Center

Developer Center

  • Getting Started
  • Built-in Features
  • REST API Endpoints
  • Guides
  • Cheat Sheet

›Built-in Features

Getting Started

  • What is Sirius Chain
  • Setting up your workstation
  • Writing your first application

Built-in Features

  • Account
  • Mosaic (SDA)
  • Namespace
  • Transfer Transaction
  • Aggregate Transaction
  • Multisig Account
  • Metadata
  • Account Restriction
  • Cross-Chain Swaps
  • Exchange Market
  • Decentralized Exchange Market
  • Liquidity Provider
  • Storage

Protocol

  • Node
  • Block
  • Cryptography
  • Transaction
  • Validating
  • Consensus Algorithms
  • Receipt
  • Inflation

REST API

  • Overview
  • Tools
  • Serialization
  • Websockets
  • Status Errors

SDKs

  • Overview
  • Architecture
  • Languages
  • Extending Sirius Chain Capabilities
  • SDK Development
  • SDK Documentation

Wallets & Explorers

  • Wallets & Explorers

Cheat Sheet

  • Sirius Chain Cheat Sheet

Guides

  • Overview
  • External Guides
  • Account

    • Creating and opening an account
    • Getting account information
    • Getting the amount of XPX sent to an account
    • Reading transactions from an account

    Account Restriction

    • Preventing spam attacks with account restrictions

    Aggregate Transaction

    • Sending payouts with aggregate-complete transaction
    • Creating an escrow with aggregate bonded transaction
    • Asking for mosaics with aggregate-bonded transaction
    • Signing announced aggregate-bonded transactions

    Block

    • Listening to New Blocks
    • Getting block by height

    Cross Chain Swaps

    • Atomic cross-chain swap between Sirius public and private chains

    Metadata

    • Account Metadata
    • Mosaic Metadata
    • Namespace Metadata
    • Account Metadata (Deprecated since 0.7.0 Sirius Chain release)
    • Mosaic Metadata (Deprecated since 0.7.0 Sirius Chain release)
    • Namespace Metadata (Deprecated since 0.7.0 Sirius Chain release)

    Monitoring

    • Monitor transaction

    Mosaic

    • Creating a mosaic (SDA)
    • Getting the mosaic information
    • Getting the asset identifier behind a namespace with receipts

    Mosaic Levy

    • Modifying Mosaic Supply

    Multisig Account

    • Converting an account to multisig
    • Modifying a multisig account
    • Creating a multi-level multisig-account
    • Sending a multisig transaction

    Namespace

    • Registering a namespace
    • Registering a subnamespace
    • Getting the Namespace information
    • Linking a namespace to a mosaic
    • Linking namespace to account

    Transfer Transaction

    • Transfer transaction
    • Sending an encrypted message

    Storage

    • Data Modification Cancel
    • Data Modification
    • Download Channel
    • Download Payment
    • Drive Closure
    • Finish Download Channel
    • Prepare Bc Drive
    • Replicator Offboarding
    • Replicator Onboarding
    • Storage Payment
    • Verification Payment

Storage

  • Overview
  • Participate
  • External Economy
  • Roles
  • Verification
  • Challenge
  • Rewards
  • Transaction Schemas
  • Built-In Features

    • Drive
    • Replicator
    • Verifier
    • Supercontracts

    Protocols

    • Cross-Block Protocol
    • Fair Streaming

    Storage User Application

    • Overview
    • Getting Started
    • Managing Drives
    • Managing Drive Files
    • Downloading Data

Metadata

Sirius Chain provides you with an option to associate metadata to an account, mosaic or namespace with a transaction.

The most common uses of metadata are:

  • Attach relevant information to your assets.
  • Validate the value attached to an asset to enable users in your application to perform an off-chain action.

Metadata is uniquely identified by the tuple { signer, target-id, metadata-key }. Including a signer in this composite identifier allows multiple accounts to specify the same metadata without conflict.

The value linked to an identifier is a string up to 1024 characters. The client application is responsible for encrypting the message or keeping it visible for every blockchain participant.

Persistence

Metadata entries are stored in the blockchain—like the message of a regular TransferTransaction — but also as a key-value state.

This feature reduces the reading time of client applications; metadata allows information to be accessed by keys instead of processing the entire account transaction history off-chain to obtain the latest transaction message value.

Permissions

The account, namespace or mosaic owner must opt-in to all metadata requests received by giving explicit permission. In practice, this means that all MetadataTransactions must be wrapped in an AggregateTransaction.

The target account should cosign the aggregate to record the metadata on the blockchain and update the asset state.

Examples

Adding a certificate to an account

Metadata used to attach relevant information to an asset

Metadata used to attach relevant information to an asset

Bob works as a digital notary that stamps accounts on the Sirius Chain. When a customer comes to Bob to notarize a document, he checks the authentication of the customer’s documents then tags the account with a MetadataTransaction.

Alice is a recent graduate and wants her educational certificate accredited to her Sirius Chain account to avoid the hassle of repeatedly providing verification of her degree. So, she goes to Bob and provides him with proof of her degree. Once Alice pays Bob a fee, Bob verifies the authenticity and stamps Alice’s account with metadata that signifies her degree.

Access management

Validating metadata to restrict performing an off-chain action

Validating metadata to restrict performing an off-chain action

The HR department of the SneakersCompany uses the Sirius Chain for access management of sensitive work resources. Each account is tagged with the metadata that regulates its access to the company apps suite.

When a new employee, Carol, is hired, the HR department creates a new work account for her. For security reasons, HR sets the metadata of the account to {company, ACCESS, 9-18}.

Each time Carol attempts to access the company apps suite, the company app validates that Carol has permission and that the time falls under 9:00-18:00 before granting her admission.

On the other hand, if Derek, who has no permissions, attempts to access the company apps suite, the company app will reject his request.

Related transactions

IdTypeDescription
0x413fAccountMetadataTransactionAssociate a key-value state to an account.
0x423fMosaicMetadataTransactionAssociate a key-value state to a mosaic.
0x433fNamespaceMetadataTransactionAssociate a key-value state to a namespace.

Guides

Address

Since Address usually represents entities from the real world, it can be useful to attach some extra information to the address.

Guides on account metadata

Guides on deprecated account metadata

Mosaic

For Mosaic, metadata could be used to share where users can obtain or exchange an asset.

Guides on mosaic metadata

Guides on deprecated mosaic metadata

Namespace

If users own a namespace, they can attach extra details with metadata for their own namespace.

Guides on namespace metadata

Guides on deprecated namespace metadata

Schemas

MetadataTransactionHeader

PropertyTypeDescription
TargetPubKey32 bytesMetadata target public key
ScopedMetadataKeyuint64Metadata key scoped to source, target and type

BasicMetadataTransactionBody

PropertyTypeDescription
ValueSizeDeltaint16Difference between old and new value size
ValueSizeuint16Value size
Valueuint8Value

AccountMetadataTransaction

Version: 0x01

Entity type: 0x413f

PropertyTypeDescription
MetadataTransactionHeaderMetadataTransactionHeader
BasicMetadataTransactionBodyBasicMetadataTransactionBody

MosaicMetadataTransaction

Version: 0x01

Entity type: 0x423f

PropertyTypeDescription
MetadataTransactionHeaderMetadataTransactionHeader
BasicMetadataTransactionBodyBasicMetadataTransactionBody
MosaicIduint64The id of the affected mosaic

NamespaceMetadataTransaction

Version: 0x01

Entity type: 0x433f

PropertyTypeDescription
MetadataTransactionHeaderMetadataTransactionHeader
BasicMetadataTransactionBodyBasicMetadataTransactionBody
NamespaceIduint64The id of the namespace

MetadataType

IdType
0x00Address
0x01Mosaic
0x02Namespace

Embedded-transactionSchema

TransactionSchema

← Multisig AccountAccount Restriction →
  • Persistence
  • Permissions
  • Examples
    • Adding a certificate to an account
    • Access management
  • Related transactions
  • Guides
    • Address
    • Mosaic
    • Namespace
  • Schemas
    • MetadataTransactionHeader
    • BasicMetadataTransactionBody
    • AccountMetadataTransaction
    • MosaicMetadataTransaction
    • NamespaceMetadataTransaction
    • MetadataType
  • Follow our profile
  • Ask development questions
  • Join our Discord channel
  • Explore our Youtube channel
  • Explore Github
Protocol
BlockConsensus AlgorithmsCryptographyInflationNodeReceiptTransactionValidating
Built-in Features
AccountAggregate TransactionCross-Chain SwapsExchange MarketDecentralized Exchange MarketMetadataMosaicMultisig AccountNamespaceTransfer TransactionStorageLiquidity Provider
References
REST APISDKsCheat Sheet
Includes Documentation Forked from NEM
Copyright © 2025 Sirius Chain