Binary Transaction Layout

Switch to an internal binary representation of the ternary transaction. This allows binary data (1,0) to be used for validation and other processing without requiring many binary-to-ternary conversions as in the old IOTA 1.0 node software. This should lead to further performance improvements.

Technical details: In the IOTA 1.0 mainnet, a transaction consists of 2,673 tryte-encoded characters and is composed of various fields of different tryte lengths.

It is important to note that with the currently used Kerl hash function, a hash (and thus an address) is naturally composed of 48 bytes rather than 243 trits. This means that for each address or hash, the 48 byte representation is absolutely equivalent to the 243 trits representation currently used. This is only the result of an additional conversion to base 3.

The old ternary transaction layout consisted of the following types:

  • Integers: Integers are simple to encode in binary form.
  • Hashes (hash (Curl), address (Kerl), bundle (Kerl)).
  • Signature message fragment

In the future, ternary strings will be encoded as:

  • 1 byte per tryte (3 trits),
  • 1 byte per 5 trits or
  • native 48 bytes for Kerl hashes.