# Issue Transaction Binary Format
Learn more about Issue transaction.
# Version 3
Binary format of version 3 is defined in transaction.proto protobuf scheme. The fields that are common to all types of transactions are described in the Transaction Binary Format article.
Version 3 is enabled by feature #15 “Ride V4, VRF, Protobuf, Failed transactions”.
message IssueTransactionData {
string name = 1;
string description = 2;
int64 amount = 3;
int32 decimals = 4;
bool reissuable = 5;
bytes script = 6;
};
Field | Size | Description |
---|---|---|
name | From 4 to 16 bytes | Token name |
description | From 0 to 1000 bytes | Token description |
amount | 8 bytes | Amount of token to issue, specified in the minimum fraction (“cents”) |
decimals | 1 byte | Number of decimal places |
reissuable | 1 byte | Reissue availability flag |
script | Up to 8192 bytes | Asset script |
# Version 2
# | Field | JSON field name | Field type | Field size in bytes | Comment |
---|---|---|---|---|---|
1 | Version flag | Byte | 1 | Indicates the transaction version is 2 or higher. Value must be 0 | |
2 | Transaction type ID | type | Byte | 1 | Value must be 3 |
3 | Transaction version | version | Byte | 1 | Value must be 2 |
4 | Chain ID | chainId | Byte | 1 | 87 — for Mainnet 84 — for Testnet 83 — for Stagenet |
5 | Public key of the transaction sender | senderPublicKey | Array[Byte] | 32 | |
6.1 | Token name length | Short | 2 | ||
6.2 | Token name | name | Array[Byte] | From 4 to 16 | |
7.1 | Token description length | Short | 2 | ||
7.2 | Token description | description | Array[Byte] | From 0 to 1000 | |
8 | Amount of the token that will be issued | quantity | Long | 8 | |
9 | Number of decimal places of the token | decimals | Byte | 1 | |
10 | Reissue flag | reissuable | Boolean | 1 | If the value is 0, then token reissue is not possible. If the value is 1, then token reissue is possible |
11 | Transaction fee | fee | Long | 8 | |
12 | Transaction timestamp | timestamp | Long | 8 | |
13.1 | Script existence flag | Boolean | 1 | If the value is 0, then the token does not have a script. If the value is 1, then the token has a script | |
13.2 | Script length in bytes | Short | S | S = 0 if the value of the "Script existence flag" field is 0.S = 2 if the value of the "Script existence flag" field is 1 | |
13.3 | Asset script | script | String | S | S = 0 if the value of the "Script existence flag" field is 0.0 < S ≤ 8192, if the value of the "Script existence flag" field is 1 |
14 | Transaction proofs | proofs | See Transaction Proofs Binary Format | S | If the array is empty, then S = 3. If the array is not empty, then S = 3 + 2 × N + 64 × N , where N is the number of proofs in the array.The maximum number of proofs in the array is 8. The size of each proof is 64 bytes |
The fields numbered in bold are the transaction body bytes.
# JSON Representation of Transaction
See the example in Node API.
# Version 1
# | Field | Field type | Field size in bytes | Comment |
---|---|---|---|---|
1 | Transaction type ID | Byte | 1 | Value must be 3 |
2 | Transaction signature | Array[Byte] | 64 | |
3 | Transaction type ID | Byte | 1 | This field duplicates field 1 |
4 | Public key of the transaction sender | Array[Byte] | 32 | |
5.1 | Token name length | Short | 2 | |
5.2 | Token name | Array[Byte] | From 4 to 16 | |
6.1 | Token description length | Short | 2 | |
6.2 | Token description | Array[Byte] | From 0 to 1000 | |
7 | Amount of the token that will be issued | Long | 8 | |
8 | Number of decimal places of the token | Byte | 1 | |
9 | Reissue flag | Boolean | 1 | |
10 | Transaction fee | Long | 8 | |
11 | Transaction timestamp | Long | 8 |
The fields numbered in bold are the transaction body bytes.
# Invalid characters in token names and descriptions
Before feature 15 “Ride V4, VRF, Protobuf, Failed transactions” was activated, it was possible to create tokens with names and descriptions which are not valid UTF-8 strings. There are no such tokens on Mainnet, they exist only on Testnet (see example).
The following interfaces use the replacement character � instead of data that does not match any UTF-8 character:
- REST API and gRPC Server both in Node Scala and Node Go
- Blockchain Updates in Node Scala
- Data Service API