The process of [[Token Delegated (m-token)|m-token]] declaration is similar to the regular [[How to Create and Manage the Token|CF-20 token declaration]].
The only difference is in the creation of declaration datum.
## Datum declaration
The simple [[Node Command - TOKEN DECL|token declarations]] parameters are:
**`net`** - name of the Cellframe Network
**`chain`** - name of the chain where token was declared
**`token`** - ticker (name) of the token
**`total_supply`** - maximum sum of all token emissions `in datoshi`
**`signs_total`** - quantity of authorized token signatures
**`signs_emission`** - quantity of authorized token signatures required for its emission, must be lower than `signs_emission` value
**`decimals`** - number accuration after comma (`18` by default)
**`certs`** - certificates which is used to sign token (you can use any certificate)
The **`-delegated_token_from`** key with a token ticker value is a required addition.
> [!HINT] Note
> To create an **m-token** for any token, such token must be already declared and emitted in the corresponding network.
`Command example:`
```actionscript
cellframe-node-cli token_decl -net riemann -chain zerochain -token mBIG -type CF20 -total_supply 0 -decimals 18 -signs_total 3 -signs_emission 2 -certs riemann.bridge.pvt.0 -delegated_token_from BIG
```
`Response example:`
```actionscript
errors:
code: 0
message: Datum 0x8555B08155814FE7FCDE0055E1CC5D2DD76A2F10C71FAB88972079D514239586 with token mBIG is placed in datum pool
```
## Datum signing
Next step is to sign the **declaration datum** with the required number of signatures.
It can be done using [[Node Command - TOKEN DECL SIGN]].
`First sign example:`
```actionscript
cellframe-node-cli token_decl_sign -net riemann -chain zerochain -datum 0x8555B08155814FE7FCDE0055E1CC5D2DD76A2F10C71FAB88972079D514239586 -certs riemann.bridge.pvt.1
```
`Response example:`
```actionscript
errors:
code: 0
message: Datum was replaced in datum pool:
Old: 0x8555B08155814FE7FCDE0055E1CC5D2DD76A2F10C71FAB88972079D514239586
New: 0xD92AD54FC6DAEBDFC148168F9FC4D5A50353E4E0673C034C8A975706BD696655
```
`Second sign example:`
```actionscript
cellframe-node-cli token_decl_sign -net riemann -chain zerochain -datum 0xD92AD54FC6DAEBDFC148168F9FC4D5A50353E4E0673C034C8A975706BD696655 -certs riemann.bridge.pvt.2
```
`Response example:`
```actionscript
errors:
code: 0
message: Datum was replaced in datum pool:
Old: 0xD92AD54FC6DAEBDFC148168F9FC4D5A50353E4E0673C034C8A975706BD696655
New: 0x5EBEE728270AD919359B7BE9F4DC6B50C549369652B9AEF77A7C09DB24303F13
```
After signing the datum, it needs to be processed.
It can be done using [[Node Command - MEMPOOL PROC]].
`Command example:`
```actionscript
cellframe-node-cli mempool_proc -net riemann -chain zerochain -datum 0x5EBEE728270AD919359B7BE9F4DC6B50C549369652B9AEF77A7C09DB24303F13
```
`Response example:`
```actionscript
datum:
hash: 0x5EBEE728270AD919359B7BE9F4DC6B50C549369652B9AEF77A7C09DB24303F13
type: DATUM_TOKEN
ts_created:
time_stamp: 1750320715
str: Thu, 19 Jun 2025 08:11:55 +0000
data_size: 10278
verify:
isProcessed: true
notice: Removed datum from mempool.
```
After the declaration datum is processed by the **root nodes**, it becomes a part of the zerochain and can be found in the network.
## Datum information
`Command:`
```actionscript
cellframe-node-cli token list -net riemann
```
`Result:`
Take notice that this datum has **`ticker_token_from`** key in the token dump.
```actionscript
mBIG:
current state:
-->Token name: mBIG
type: CF20
flags: NONE
description: The token description is not set
Supply current: 0
Supply total: 0
Decimals: 18
Auth signs valid: 2
Auth signs total: 3
Signatures public keys:
line: 0
hash: 0xE7D0E94E6792FE145A9691ECDFECA151BC1C7477C3E11979DA48E5752C14A2E1
pkey_type: DAP_PKEY_TYPE_SIGN_DILITHIUM
bytes: 1196
line: 1
hash: 0x0A57D6D1F3E72E9F2D1DDA6E6089AFEB0AADB953FB347E08C7B6575D65FA6D56
pkey_type: DAP_PKEY_TYPE_SIGN_DILITHIUM
bytes: 1196
line: 2
hash: 0x18A38ACF46876226F9AC130427870814503C19B00185A85F034DDC2058D699C1
pkey_type: DAP_PKEY_TYPE_SIGN_DILITHIUM
bytes: 1196
Total emissions: 0
declarations:
status: ACCEPTED
Ledger return code: 0
Datum:
=== Datum Token Declaration ===:
hash: 0x5EBEE728270AD919359B7BE9F4DC6B50C549369652B9AEF77A7C09DB24303F13
ticker: mBIG
size: 10278
version: 2
type: DECL
subtype: CF20
decimals: 18
auth signs valid: 2
auth signs total: 3
total_supply: 0
flags: NONE
ticker_token_from: BIG
emission_rate: 0.001
Signatures:
status:
line: 1
hash: 0xE7D0E94E6792FE145A9691ECDFECA151BC1C7477C3E11979DA48E5752C14A2E1
sign_type: sig_dil
bytes: 2096
line: 2
hash: 0x0A57D6D1F3E72E9F2D1DDA6E6089AFEB0AADB953FB347E08C7B6575D65FA6D56
sign_type: sig_dil
bytes: 2096
line: 3
hash: 0x18A38ACF46876226F9AC130427870814503C19B00185A85F034DDC2058D699C1
sign_type: sig_dil
bytes: 2096
```
There you can see all the information about newly declared **m-token**.