class

Base58::Alphabet::Monero

Inherits Base58::Alphabet / Reference / Object

Not to be outdone in the Base58 customizations competition, Monero has another unique spin on the base58 alphabet. With Monero, the base alphabet is the same at the Bitcoin alphabet, but when encoding, Monero breaks the input into 8-byte chunks, encoding each chunk separately, and padding to 11 bytes if the result is shorter than 11, except for the last chunk, which will only be padded to the maximum possible size for the given bitcount of that chunk. Decoding reverses this process.

Normally, base58 encoding results in some instability in the length of the final encoded values, but the Monero approach eliminates that instability. This, for example, Monero addresses, which are 69 bytes, will always encode to a 95 byte string.

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Constants

BaseToUInt = UInt8.static_array(49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122)
UIntToBase = UInt8.static_array(0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 9, 10, 11, 12, 13, 14, 15, 16, 0_u8, 17, 18, 19, 20, 21, 0_u8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0_u8, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8, 0_u8)

Class methods

[](val)

Not to be outdone in the Base58 customizations competition, Monero has another unique spin on the base58 alphabet. With Monero, the base alphabet is the same at the Bitcoin alphabet, but when encoding, Monero breaks the input into 8-byte chunks, encoding each chunk separately, and padding to 11 bytes if the result is shorter than 11, except for the last chunk, which will only be padded to the maximum possible size for the given bitcount of that chunk. Decoding reverses this process.

Normally, base58 encoding results in some instability in the length of the final encoded values, but the Monero approach eliminates that instability. This, for example, Monero addresses, which are 69 bytes, will always encode to a 95 byte string.

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Source
[]?(val)

Not to be outdone in the Base58 customizations competition, Monero has another unique spin on the base58 alphabet. With Monero, the base alphabet is the same at the Bitcoin alphabet, but when encoding, Monero breaks the input into 8-byte chunks, encoding each chunk separately, and padding to 11 bytes if the result is shorter than 11, except for the last chunk, which will only be padded to the maximum possible size for the given bitcount of that chunk. Decoding reverses this process.

Normally, base58 encoding results in some instability in the length of the final encoded values, but the Monero approach eliminates that instability. This, for example, Monero addresses, which are 69 bytes, will always encode to a 95 byte string.

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Source
inverse(val)

Not to be outdone in the Base58 customizations competition, Monero has another unique spin on the base58 alphabet. With Monero, the base alphabet is the same at the Bitcoin alphabet, but when encoding, Monero breaks the input into 8-byte chunks, encoding each chunk separately, and padding to 11 bytes if the result is shorter than 11, except for the last chunk, which will only be padded to the maximum possible size for the given bitcount of that chunk. Decoding reverses this process.

Normally, base58 encoding results in some instability in the length of the final encoded values, but the Monero approach eliminates that instability. This, for example, Monero addresses, which are 69 bytes, will always encode to a 95 byte string.

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Source
inverse?(val)

Not to be outdone in the Base58 customizations competition, Monero has another unique spin on the base58 alphabet. With Monero, the base alphabet is the same at the Bitcoin alphabet, but when encoding, Monero breaks the input into 8-byte chunks, encoding each chunk separately, and padding to 11 bytes if the result is shorter than 11, except for the last chunk, which will only be padded to the maximum possible size for the given bitcount of that chunk. Decoding reverses this process.

Normally, base58 encoding results in some instability in the length of the final encoded values, but the Monero approach eliminates that instability. This, for example, Monero addresses, which are 69 bytes, will always encode to a 95 byte string.

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Source