LTO Network
Search…
Mass Transfer
A Mass Transfer combines several ordinary Transfer transactions that share a single sender. Under the hood, it has a list of recipients, and an amount to be transferred to each recipient.
1
{
2
"type" : 11,
3
"version" : 3,
4
"id" : "BG7MQF8KffVU6MMbJW5xPowVQsohwJhfEJ4wSF8cWdC2",
5
"sender" : "3HhQxe5kLwuTfE3psYcorrhogY4fCwz2BSh",
6
"senderKeyType": "Ed25519",
7
"senderPublicKey" : "7eAkEXtFGRPQ9pxjhtcQtbH889n8xSPWuswKfW2v3iK4",
8
"fee" : 200000,
9
"timestamp" : 1518091313964,
10
"proofs" : [ "4Ph6RpcPFfBhU2fx6JgcHLwBuYSpn..." ],
11
"attachment" : "59QuUcqP6p",
12
"transfers" : [
13
{
14
"recipient" : "3HUQa6qtLhNvBJNyPV1pDRahbrcuQkaDQv2",
15
"amount" : 100000000
16
}, {
17
"recipient" : "3HaAdZcCXAqhvFj113Gbe3Kww4rCGMUZaEZ",
18
"amount" : 200000000
19
},
20
...
21
]
22
}
Copied!
It's easy to see how compact this transaction is compared to several Transfer transactions. Here we have a sequence of recipients and associated amounts, while sender, fee, timestamp, and signature occur just once.

Constraints

The maximum number of recipients in a single transaction is 100. There is no minimum recipient number. You can create a Mass Transfer Transaction with one or even zero recipients. In addition, restrictions that apply to Transfers apply here as well, such as you cannot send a negative amount and cannot send more than you have on your account.
Other than that, we've decided not to put any restrictions on transactions that are harmless, even if they may seem against common sense. For example, transfers to self are allowed, as well as zero-valued transfers. In the recipient list, a recipient can occur several times, this is not considered an error.

Fees

The Mass Transfer fee is made up of two amounts: a fixed one plus a per-recipient one. By default the formula looks like:
1
1 + 0.1 * N
Copied!
where N is the number of recipients in the transaction. The total is rounded up to the nearest 100_000. Fee can be configured in miner node settings using the usual syntax, just keep in mind that there are two parts to it, the base (BASE) fee and the variable (VAR) fee. Below is an excerpt from the configuration file that ships with the node:
1
mass-transfer {
2
BASE = 100000000
3
VAR = 10000000
4
}
Copied!

Binary schema

The binary data structure of the unsigned transaction.
V3 (current)
V1
#
Field Name
Type
Length
1
Transaction type
Byte (constant, value=11)
1
2
Version
Byte (constant, value=3)
1
3
Chain id
Byte
1
4
Timestamp
Long
8
5
Sender's key type
KeyType (Byte)
1
6
Sender's public key
PublicKey (Array[Byte])
32 | 33
7
Fee
Long
8
8
Number of transfers (T)
Short
2
9
Recipient 1
Address (Array[Byte])
26
10
Amount 1
Long
8
...
11
Attachment length (N)
Byte
2
12
Attachment
Array[Byte]
N
  • Recipient and Amount are repeated for each transfer.
  • Chain id can be obtained by taking the 2nd byte from the sender address.
  • Each key type has a numeric id in addition to the reference from the JSON.
  • Integers (short, int, long) have a big endian byte order.
#
Field Name
Type
Length
1
Transaction type
Byte (constant, value=11)
1
2
Version
Byte (constant, value=1)
1
3
Sender's public key
PublicKey (Array[Byte])
32
4
Number of transfers (T)
Short
2
5
Recipient 1
Address (Array[Byte])
26
6
Amount 1
Long
8
...
7
Fee
Long
8
8
Timestamp
Long
8
9
Attachment length (N)
Short
2
10
Attachment
Array[Byte]
N
  • Recipient and Amount are repeated for each transfer.
  • Integers (short, int, long) have a big endian byte order.