There is a list of commands to interact with TOKEN:

  • TOKEN LIST - lists actual token declarations
  • TOKEN INFO - shows actual information about specified token
  • TOKEN DECL - creates a token declaration datum and places it in the mempool
  • TOKEN UPDATE - creates a token-update datum and places it in the mempool
  • TOKEN DECL SIGN - signs a token-declaration datum from the mempool
  • TOKEN UPDATE SIGN - signs a token-update datum from the mempool
  • TOKEN EMIT - creates an emission datum and places it in the mempool
  • TOKEN EMIT SIGN - signs a token-emission datum from the mempool

In the end of the article you can find example of how to declare and update token in the network - TOKEN DECLARE AND UPDATE EXAMPLE

JSON-RPC Request - TOKEN LIST

Lists actual token declarations

CLI Example

Command syntax:

token list 
-net <net_name>

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list

Example:

Command:

cellframe-node-cli token list 
-net foobar

Response:

=== Datum Token Declaration ===
 
hash: 0x837723C2934FCBD1772EFB81BA5B91443A18BF09571FB891F0901AA29AA9FE8C
ticker: BUZ
size: 3614
version: 2
type: DECL
subtype: CF20
decimals: 18
auth signs (valid/total) 1/1
total_supply: 0
flags: NONE
signatures:
1) 0x035637F72D616C39A5121995743D42878B335B73DEB8A539023B8E8059C1D1A1, sig_dil, 2096 bytes
 
=== Datum Token Declaration ===
 
hash: 0xA48AB4D486DF603CFD86E41B6B1A16003AEF2BB00E7CDD70FEEE748EA6F0454B
ticker: mBUZ
size: 3922
version: 2
type: DECL
subtype: CF20
decimals: 18
auth signs (valid/total) 1/1
total_supply: 0
flags: NONE
ticker_token_from: BUZ
emission_rate: 0.001
signatures:
 
1) 0x035637F72D616C39A5121995743D42878B335B73DEB8A539023B8E8059C1D1A1, sig_dil, 2096 bytes
---------------
 
tokens: 2

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect  -d '{"method":"token", "params":["token;list;-net;foobar"], "id":"1"}'

Response:

{
  "type": 0,
  "result": "=== Datum Token Declaration ===\nhash: 0x837723C2934FCBD1772EFB81BA5B91443A18BF09571FB891F0901AA29AA9FE8C\nticker: BUZ\nsize: 3614\nversion: 2\ntype: DECL\nsubtype: CF20\ndecimals: 18\nauth signs (valid/total) 1/1\ntotal_supply: 0\nflags: NONE\nsignatures: \n1) 0x035637F72D616C39A5121995743D42878B335B73DEB8A539023B8E8059C1D1A1, sig_dil, 2096 bytes\n=== Datum Token Declaration ===\nhash: 0xA48AB4D486DF603CFD86E41B6B1A16003AEF2BB00E7CDD70FEEE748EA6F0454B\nticker: mBUZ\nsize: 3922\nversion: 2\ntype: DECL\nsubtype: CF20\ndecimals: 18\nauth signs (valid/total) 1/1\ntotal_supply: 0\nflags: NONE\nticker_token_from: BUZ\nemission_rate: 0.001\nsignatures: \n1) 0x035637F72D616C39A5121995743D42878B335B73DEB8A539023B8E8059C1D1A1, sig_dil, 2096 bytes\n---------------\ntokens: 2\n",
  "errors": null,
  "id": 1
}
Link to original

 

JSON-RPC Request - TOKEN INFO

Shows actual information about specified token

CLI Example

Command syntax:

token info 
-net <net_name> 
-name <token_ticker>

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-name - ticker (name) of the token

Example:

Command:

cellframe-node-cli token info 
-net Backbone 
-name CELL

Response:

        TOKENS:
 
                CELL:
                    current state:
                        -->Token name: CELL
                        type: CF20
                        flags: NONE
                        description: The token description is not set
                        Supply current: 0
                        Supply total: 0
                        Decimals: 18
                        Auth signs valid: 4
                        Auth signs total: 8
                        Signatures public keys:
 
#signatures
 
 
                        Total emissions: 24763
 
                    declarations:
 
                            status: ACCEPTED
                            Ledger return code: 0
                            Datum:
                                === Datum Token Declaration ===:
                                hash: 0xB1F56F4BD0C8F3F99BE753F8F223C9754C116ED593A488E2D605593F8F4956E5
                                ticker: CELL
                                size: 18188
                                version: 2
                                type: DECL
                                subtype: CF20
                                decimals: 18
                                auth signs valid: 3
                                auth signs total: 5
                                total_supply: 0
                                flags: NONE
                                Signatures:
                                status:
 
#signatures
 
                    updates:
 
                            status: ACCEPTED
                            Ledger return code: 0
                            Datum:
                                === Datum Token Declaration ===:
                                hash: 0x487F98375D4613535B0E6B9886D5D8A2C8B8707F634C26412395F552BA918CA3
                                size: 13864
                                version: 2
                                total_sign: 3
                                total_signs_valid: 4
                                total_pkeys_add: 0xB33EDC176790E7FEFD98167996E97892507BB3B1C81E1C99C50BC86BDEE8B6F0
                                Signatures:
                                status:
 
#signatures
 

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token", "params":["token;info;-net;Backbone;-name;CELL"], "id":"1"}'

Response:

{
  "type": 0,
  "result": "same as cli response",
  "errors": null,
  "id": 1
}
Link to original

 

JSON-RPC Request - TOKEN DECL

Creates a token declaration datum and places it in the mempool

CLI Example

Command syntax:

token_decl
-net <net_name> 
-chain <chain_name> 
-token <token_ticker> 
-total_supply <total_supply> 
-signs_total <sign_total> 
-signs_emission <signs_for_emission> 
-decimals <18>
-certs <certs_list>

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-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 fot it's emission
-decimals - number accuration after comma (18 by default)
-certs - certificates which is used to sign token (you can use any certificate)

Example:

Command:

cellframe-node-cli token_decl 
-net foobar 
-chain zero 
-token LLL 
-total_supply 1000.0e+18 
-signs_total 1 
-signs_emission 1 
-decimals 18 
-certs foobar.root.pvt.0

Response:

Datum 0xFE3C0D5CEBAB54957121C01C12017164E516D60709B6BE10BC7EE98758BF4429 with token ZZZ is placed in datum pool

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token_decl", "params":["token_decl;-net;foobar;-chain;zero;-token;JJJ;-total_supply;0;-signs_total;1;-signs_emission;1;-decimals;18;-certs;foobar.root.pvt.0"], "id":"1"}'

Response:

{
"type": 0,
"result": "Datum 0x751E62A4B44CA3A2DE0B77FFD4DCA5F0F317365B02C3AE8A9829734354A60C20 with token JJJ is placed in datum pool",
"errors": null,
"id": 1
}
Link to original

 

JSON-RPC Request - TOKEN UPDATE

Сreates a token-update datum and places it in the mempool

CLI Example

Command syntax:

token_update 
-net <net_name> 
[-chain <chain_name>] 
-token <existing_token_ticker> 
-type <CF20|private> 
[-total_supply_change <value>] 
-certs <name_certs> 
[-flag_set <flag>] 
[-flag_unset <flag>] 
[-total_signs_valid <value>] 
[-description <value>] 
[-tx_receiver_allowed <value>] 
[-tx_receiver_blocked <value>] 
[-tx_sender_allowed <value>] 
[-tx_sender_blocked <value>] 
[-add_cert <name_certs>] 
[-remove_certs <pkeys_hash>]

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-chain - name of the chain where token was declared (optional)
-token - ticker (name) of the token
-type - type of the token (CF20 or private, CF20 by default)
-total_supply_change - changes total supply, specify “INF” to set unlimited total supply (optional)
-certs - list of certificates which were used to sign token
 
-flag_set - list of flags are being set (optional)
-flag_unset - list of flags are being unset (optional)
-total_signs_valid - sets the minimum amount of valid signatures (optional)
-description - token description written in " " (optional)
 
-tx_receiver_allowed - adds specified wallet address to the list of allowed receivers (optional)
-tx_receiver_blocked - adds specified wallet address to the list of blocked receivers (optional)
-tx_sender_allowed - adds specified wallet address to the list of allowed senders (optional)
-tx_sender_blocked - adds specified wallet address to the list of blocked senders (optional)
 
-add_cert - adds certificates to the certificates list of the token (optional)
-remove_certs - removes certificates from the certificates list using theirs public key hash (optional)

Available flags:

ALL_BLOCKED: Blocks all permissions.
ALL_ALLOWED: Allows all permissions unless they are blocked. Be careful with this mode.
ALL_FROZEN: Temporarily freezes all permissions
ALL_UNFROZEN: Unfreezes all frozen permissions
STATIC_ALL: Blocks manipulations with a token after declaration. Tokens are declared statically.
STATIC_FLAGS: Blocks manipulations with token flags after declaration.
STATIC_PERMISSIONS_ALL: Blocks all manipulations with permissions list after declaration.
STATIC_PERMISSIONS_DATUM_TYPE: Blocks all manipulations with datum permissions list after declaration.
STATIC_PERMISSIONS_TX_SENDER: Blocks all manipulations with transaction senders permissions list after declaration.
STATIC_PERMISSIONS_TX_RECEIVER: Blocks all manipulations with transaction receivers permissions list after declaration.

Example:

Command:

cellframe-node-cli token_update 
-net foobar 
-chain zero 
-token ZZZ 
-type CF20 
-total_supply 0 
-decimals 18 
-signs_total 1 
-signs_emission 1 
-certs foobar.root.pvt.0 
-flags ALL_ALLOWED

Response:

Datum 0x8F581F2B53062ADF150D34EF3DA0224DA11FA6AFB7D9964A520F60449483DC69 with 256bit token ZZZ is placed in datum pool

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token_update", "params":["token_update;-net;foobar;-chain;zero;-token;ZZZ;-type;CF20;-total_supply;0;-decimals;18;-signs_total;1;-signs_emission;1;-certs;foobar.root.pvt.0;-flags;ALL_ALLOWED"], "id":"1"}'

Response:

{
"type": 0,
"result": "Datum 0x8F581F2B53062ADF150D34EF3DA0224DA11FA6AFB7D9964A520F60449483DC69 with 256bit token ZZZ is placed in datum pool",
"errors": null,
"id": 1
}
Link to original

JSON-RPC Request - TOKEN DECL SIGN

Signs a token-declaration datum in the mempool (by hash) using provided POA certificates

CLI Example

Command syntax:

token_decl_sign
-net <net_name> 
-chain <chain_name> 
-datum <datum_hash> 
-certs <certs_list>

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-chain - name of the chain where token was declared
-datum - hash of the datum with token declaration
-certs - list of certificates used for sign token declaration

Example:

Command:

cellframe-node-cli token_decl_sign 
-net foobar 
-chain main 
-datum 0xFE3C0D5CEBAB54957121C01C12017164E516D60709B6BE10BC7EE98758BF4429  
-certs foobar.root.pvt.1

Response:

datum 0xA3ECE90A9560D6A0B69A37AAB4EF32A438D6DE4BB1EC1895B78180D32227FD87 is replacing the 0xFE3C0D5CEBAB54957121C01C12017164E516D60709B6BE10BC7EE98758BF4429 in datum pool

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token_decl_sign", "params":["token_decl_sign;-net;foobar;-chain;main;-datum;0x9456CEED16F07E832C2FE7F5E5F2D66F16010E43B15F27314D95FC467DF5A676;-certs;foobar.root.pvt.1"], "id":"1"}'

Response:

{
"type": 0,
"result": "datum 0xBFC77C7ABF1FA3CE0F6F001C18250BF1730E22A3AEBD05257C14B9CAA7134949 is replacing the 0x9456CEED16F07E832C2FE7F5E5F2D66F16010E43B15F27314D95FC467DF5A676 in datum pool",
"errors": null,
"id": 1
}
Link to original

 

JSON-RPC Request - TOKEN UPDATE SIGN

Signs a token-update datum from the mempool (by hash) using provided POA certificates

CLI Example

Command syntax:

token_update_sign 
-net <net_name> 
-chain <chain_name> 
-datum <datum_hash> 
-certs <certs_list> 

Options:

-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-chain - name of the chain where token was declared
-datum - hash of the datum with token declaration
-certs - list of previous certificates used to sign token updating

Example:

Command:

cellframe-node-cli token_update_sign
-net foobar 
-chain main 
-datum 0x8F581F2B53062ADF150D34EF3DA0224DA11FA6AFB7D9964A520F60449483DC69 
-certs foobar.root.pvt.0 

Response:

datum 0x81D0480E5D1EBAC11189AC1E7407DDEF5F2F4ED4596D3D2EB40A53C4DCA85EA5 is replacing the 0x8F581F2B53062ADF150D34EF3DA0224DA11FA6AFB7D9964A520F60449483DC69 in datum pool

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token_update_sign", "params":["token_update_sign;-net;foobar;-chain;main;-datum;0x81D0480E5D1EBAC11189AC1E7407DDEF5F2F4ED4596D3D2EB40A53C4DCA85EA5;-certs;foobar.root.pvt.0"], "id":"1"}'

Response:

{
"type": 0,
"result": "datum 0x691E6D42AE74AC0844182EAF127A6DEDBD8F12776244C551058DF806ACBD27CF is replacing the 0x81D0480E5D1EBAC11189AC1E7407DDEF5F2F4ED4596D3D2EB40A53C4DCA85EA5 in datum pool",
"errors": null,
"id": 1
}
Link to original

 

JSON-RPC Request - TOKEN EMIT

Сreates an emission datum and places it in the mempool

CLI Example

Command syntax:

token_emit 
-token <mempool_token_ticker> 
-emission_value <value> 
-addr <addr> 
[-chain_emission <chain_name>] 
-net <net_name> 
-certs <cert_list>

Options:

-token - name of the token in the mempool
-emission_value - total value of emission
-addr - address of the wallet for emission
-chain_emission - name of the chain where token was emitted (optional)
-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-certs - list of certificates for sign token emission
 

Example:

Command:

cellframe-node-cli token_emit 
-token ZZZ 
-emission_value 99999.9e+18 
-addr ptV4n68gTebdUTcbmZA8HHVuueXki5N9zBrnAue92Dv1qaU5rcG2fSBaLGQSq2549vKjW9e944T8P9trNrpjEFyuYCWNgDsWftoTfGQp 
-chain main 
-net foobar 
-certs foobar.root.pvt.0

Response:

Datum 0x94C2B9D0A9BF293E30404730526DC014FED975B1503E119BAD2FFC8238F7934F with 256bit emission is placed in datum pool

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token_emit", "params":["token_emit;-token;ZZZ;-emission_value;99999.9e+18;-addr;ptV4n68gTebdUTcbmZA8HHVuueXki5N9zBrnAue92Dv1qaU5rcG2fSBaLGQSq2549vKjW9e944T8P9trNrpjEFyuYCWNgDsWftoTfGQp;-chain;main;-net;foobar;-certs;foobar.root.pvt.0"], "id":"1"}'

Response:

{
"type": 0,
"result": "Datum 0x7217FA1B7254B2EBA0107BE5BBA1FA41223AB4DCD79F8CD457510126EFD9713C with 256bit emission is placed in datum pool",
"errors": null,
"id": 1
}
Link to original

 

JSON-RPC Request - TOKEN EMIT SIGN

Signs a token-emission datum from the mempool (by hash) using provided POA certificates.

CLI Example

Command syntax:

token_emit sign 
-emission <hash> 
[-chain_emission <chain_name>] 
-net <net_name> 
-certs <cert_list>

Options:

-emission <hash> - hash of the emission
-chain_emission - name of the chain where token was emitted (optional)
-net - name of the Cellframe Network. The list of networks can be found in the <Config_dir> \ etc \ network folder or received by The Cellframe-Node-CLI using command - net list
-certs - list of certificates for sign token emission
 

Example:

Command:

cellframe-node-cli token_emit sign 
-emission  0x94C2B9D0A9BF293E30404730526DC014FED975B1503E119BAD2FFC8238F7934F 
-chain main 
-net foobar 
-certs foobar.root.pvt.

Response:

Datum 0xAE43A6BC351B89DCA92E86ED42720443BA913FB81838DBB224931D4B7B0379D1 with 256bit emission is placed in datum pool

JSON-RPC Example

Command:

curl -X POST http://rpc.cellframe.net/connect -d '{"method":"token_emit", "params":["token_emit;-token;ZZZ;-emission_value;99999.9e+18;-addr;ptV4n68gTebdUTcbmZA8HHVuueXki5N9zBrnAue92Dv1qaU5rcG2fSBaLGQSq2549vKjW9e944T8P9trNrpjEFyuYCWNgDsWftoTfGQp;-chain;main;-net;foobar;-certs;foobar.root.pvt.0"], "id":"1"}'

Response:

{
"type": 0,
"result": "Datum 0xAE43A6BC351B89DCA92E86ED42720443BA913FB81838DBB224931D4B7B0379D1 with 256bit emission is placed in datum pool",
"errors": null,
"id": 1
}
Link to original

 

TOKEN DECLARE AND UPDATE EXAMPLE

  1. Declare token from the root “0”

Request:

cellframe-node-cli token_decl 
-net foobar 
-chain zerochain 
-token ABC 
-type CF20 
-total_supply 1000000 
-signs_total 3 
-signs_emission 3 
-decimals 18 
-certs foobar.root.pvt.0

Response:

Datum 0x5E59C7D121B5D481843C0D7E3868A8BC535B4B0E04E6456F157E3739F094322C with token ABC is placed in datum pool
  1. Sign datum on the root “1”

Request:

cellframe-node-cli token_decl_sign 
-net foobar 
-chain zerochain 
-datum 0x5E59C7D121B5D481843C0D7E3868A8BC535B4B0E04E6456F157E3739F094322C  
-certs foobar.root.pvt.1

Response:

datum 0x6C9F326837C501247080FB37A2B324068D518E3904981B1AC2EC22CE91FE2BBF is replacing the 0x5E59C7D121B5D481843C0D7E3868A8BC535B4B0E04E6456F157E3739F094322C in datum pool
  1. Sign datum on the root “2”

Request:

cellframe-node-cli token_decl_sign 
-net foobar 
-chain zerochain 
-datum 0x6C9F326837C501247080FB37A2B324068D518E3904981B1AC2EC22CE91FE2BBF  
-certs foobar.root.pvt.2

Response:

datum 0xA5BAE1C2B69C87599A43E6AB435A2D2C7443DCC1A8B7D0E5A09C8EFDF8AFA69F is replacing the 0x6C9F326837C501247080FB37A2B324068D518E3904981B1AC2EC22CE91FE2BBF in datum pool

How datum with 3 signatures looks like in the mempool:

Example:

                        hash: 0xA5BAE1C2B69C87599A43E6AB435A2D2C7443DCC1A8B7D0E5A09C8EFDF8AFA69F
                        type: DATUM_TOKEN_DECL
                        created:
                            time_stamp: 1713972877
                            str: Wed, 24 Apr 2024 15:34:37 +0000
                        data:
                            version: 2
                            type: DAP_CHAIN_DATUM_TOKEN_TYPE_DECL
                            subtype: DAP_CHAIN_DATUM_TOKEN_SUBTYPE_NATIVE
                            header:
                                flags: NO_FLAGS
                                decimals: 18
                            ticker: ABC
                            signs_valid: 3
                            signs_total: 3
                            signs:
 
                                    type: sig_dil
                                    pkeyHash: 0x77813A4C341921F581856A40BD3415B0A9B032906ADF486E5421A6D49E0AC9D2
                                    signPkeySize: 1196
                                    signSize: 2096
                                    type: sig_dil
                                    pkeyHash: 0x38171CF9FA100D0ECB14F545E582E107F8482BEFF44E3BA1D781E1BAC5175360
                                    signPkeySize: 1196
                                    signSize: 2096
                                    type: sig_dil
                                    pkeyHash: 0x279B798F32C2610C07047244E1ACB354FF58D43B6D0809C16777988E0446AF7E
                                    signPkeySize: 1196
                                    signSize: 2096
 
                            TSD:
  1. Process the mempool_proc command on any root which was participated in datum signing to make datum pass to zerochain (and become event).

Request:

cellframe-node-cli mempool_proc 
-net foobar 
-chain zerochain 
-datum 0xA5BAE1C2B69C87599A43E6AB435A2D2C7443DCC1A8B7D0E5A09C8EFDF8AFA69F

Response:

        datum:
            hash: 0xA5BAE1C2B69C87599A43E6AB435A2D2C7443DCC1A8B7D0E5A09C8EFDF8AFA69F
            type: DATUM_TOKEN_DECL
            ts_created:
                time_stamp: 1713972877
                str: Wed Apr 24 15:34:37 2024
            data_size: 10226
        verify:
            isProcessed: true
            notice: Removed datum from mempool.

Here is a command to watch how declared token looks like:

Request:

cellframe-node-cli token info 
-net foobar 
-name ABC

Response:

=== Datum Token Declaration ===
 
hash: 0xA5BAE1C2B69C87599A43E6AB435A2D2C7443DCC1A8B7D0E5A09C8EFDF8AFA69F
ticker: ABC
size: 10226
version: 2
type: DECL
subtype: CF20
decimals: 18
auth signs (valid/total) 3/3
total_supply: 1000000
flags: NONE
signatures:
 
1) 0x77813A4C341921F581856A40BD3415B0A9B032906ADF486E5421A6D49E0AC9D2, sig_dil, 2096 bytes
 
2) 0x38171CF9FA100D0ECB14F545E582E107F8482BEFF44E3BA1D781E1BAC5175360, sig_dil, 2096 bytes
 
3) 0x279B798F32C2610C07047244E1ACB354FF58D43B6D0809C16777988E0446AF7E, sig_dil, 2096 bytes
  1. Token update command is used (in this case it updates information in total supply)

Request:

cellframe-node-cli token_update 
-net foobar 
-chain zerochain 
-token ABC 
-type CF20 
-total_supply 0 
-decimals 18 
-signs_total 3 
-signs_emission 3 
-certs foobar.root.pvt.0

Response:

Datum 0x44BF3AC31BA5030DB7E480E0F9037E3B8113A6A71EC1101D26F013CAD358D865 with 256bit token ABC is placed in datum pool
  1. Sign updated token on the root “1”

Request:

cellframe-node-cli token_update_sign 
-net foobar 
-chain zerochain 
-datum 0x44BF3AC31BA5030DB7E480E0F9037E3B8113A6A71EC1101D26F013CAD358D865  
-certs foobar.root.pvt.1

Response:

datum 0xF064FE54A100973F11BE473D56883D76EF7621F7EFEC446620BA70621FA1E921 is replacing the 0x44BF3AC31BA5030DB7E480E0F9037E3B8113A6A71EC1101D26F013CAD358D865 in datum pool
  1. Sign updated token on the root “2”

Request:

cellframe-node-cli token_update_sign 
-net foobar 
-chain zerochain 
-datum 0xF064FE54A100973F11BE473D56883D76EF7621F7EFEC446620BA70621FA1E921  
-certs foobar.root.pvt.2

Response:

datum 0xCE6ED998BDC1CA2D55053C3333395C9F5A7E92B9B6382083536C705ABD77627A is replacing the 0xF064FE54A100973F11BE473D56883D76EF7621F7EFEC446620BA70621FA1E921 in datum pool

This is how token update looks in the mempool:

Example:

                        hash: 0xCE6ED998BDC1CA2D55053C3333395C9F5A7E92B9B6382083536C705ABD77627A
                        type: DATUM_TOKEN_DECL
                        created:
                            time_stamp: 1713973137
                            str: Wed, 24 Apr 2024 15:38:57 +0000
                        data:
                            version: 2
                            type: DAP_CHAIN_DATUM_TOKEN_TYPE_UPDATE
                            subtype: DAP_CHAIN_DATUM_TOKEN_SUBTYPE_NATIVE
                            header:
                                flags: NO_FLAGS
                                decimals: 18
                            ticker: ABC
                            signs_valid: 3
                            signs_total: 3
                            signs:
 
                                    type: sig_dil
                                    pkeyHash: 0x77813A4C341921F581856A40BD3415B0A9B032906ADF486E5421A6D49E0AC9D2
                                    signPkeySize: 1196
                                    signSize: 2096
                                    type: sig_dil
                                    pkeyHash: 0x38171CF9FA100D0ECB14F545E582E107F8482BEFF44E3BA1D781E1BAC5175360
                                    signPkeySize: 1196
                                    signSize: 2096
                                    type: sig_dil
                                    pkeyHash: 0x279B798F32C2610C07047244E1ACB354FF58D43B6D0809C16777988E0446AF7E
                                    signPkeySize: 1196
                                    signSize: 2096
 
                            TSD:
  1. Process mempool_proc again

Request:

cellframe-node-cli mempool_proc 
-net foobar 
-chain zerochain 
-datum 0xCE6ED998BDC1CA2D55053C3333395C9F5A7E92B9B6382083536C705ABD77627A

Response:

        datum:
 
            hash: 0xCE6ED998BDC1CA2D55053C3333395C9F5A7E92B9B6382083536C705ABD77627A
            type: DATUM_TOKEN_DECL
            ts_created:
                time_stamp: 1713973137
                str: Wed Apr 24 15:38:57 2024
            data_size: 10226
        verify:
            isProcessed: true
            notice: Removed datum from mempool.

Now token info command displays also an updated datum additionally to token declaration datum:

Request:

cellframe-node-cli token info -net foobar -name ABC

Response:

=== Datum Token Declaration ===
 
hash: 0xA5BAE1C2B69C87599A43E6AB435A2D2C7443DCC1A8B7D0E5A09C8EFDF8AFA69F
ticker: ABC
size: 10226
version: 2
type: DECL
subtype: CF20
decimals: 18
auth signs (valid/total) 3/3
total_supply: 1000000
flags: NONE
signatures:
 
1) 0x77813A4C341921F581856A40BD3415B0A9B032906ADF486E5421A6D49E0AC9D2, sig_dil, 2096 bytes
 
2) 0x38171CF9FA100D0ECB14F545E582E107F8482BEFF44E3BA1D781E1BAC5175360, sig_dil, 2096 bytes
 
3) 0x279B798F32C2610C07047244E1ACB354FF58D43B6D0809C16777988E0446AF7E, sig_dil, 2096 bytes
 
=== Datum Token Declaration ===
 
hash: 0xCE6ED998BDC1CA2D55053C3333395C9F5A7E92B9B6382083536C705ABD77627A
ticker: ABC
size: 10226
version: 2
type: UPDATE
subtype: CF20
decimals: 18
auth signs (valid/total) 3/3
total_supply: 0
flags: NONE
 
signatures:
 
1) 0x77813A4C341921F581856A40BD3415B0A9B032906ADF486E5421A6D49E0AC9D2, sig_dil, 2096 bytes
 
2) 0x38171CF9FA100D0ECB14F545E582E107F8482BEFF44E3BA1D781E1BAC5175360, sig_dil, 2096 bytes
 
3) 0x279B798F32C2610C07047244E1ACB354FF58D43B6D0809C16777988E0446AF7E, sig_dil, 2096 bytes