The first data push in a protocol message is decoded as a sequence integers. These integers are interpreted as a sequence of (ID, OUTPUT, AMOUNT) tuples
Integers are encoded as prefix varints, where the number of leading ones in a varint determines its length in bytes. There is many types of prefix varints, and here is the Bitcoin style
To issue 21000000 rune we use this tuple [0 , 1, 21000000].
The second data push is decoded as two integers, SYMBOL, DECIMALS
SYMBOL is a base 26-encoded human readable symbol, similar to that used in ordinal number sat names. The only valid characters are A through Z.
Ordinal names are a modified base-26 encoding of ordinal numbers. To avoid locking short names inside the unspendable genesis block coinbase reward, ordinal names get shorter as the ordinal number gets longer. The name of sat 0, the first sat to be mined is nvtdijuwxlp and the name of sat 2,099,999,997,689,999, the last sat to be mined, is a.
// Some codeconstbb26=require("base26");consttext='rune';constformatOrdinalBase26= (text) => {constresult= (2099999997689999+1-bb26.from(text));return result;};
Here is data of tuple [RUNE, 18] after prefix varints Bitcoin-style encode