class Base58::Alphabet::Monero

Overview

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

Defined in:

base58/alphabet/monero.cr

Constant Summary

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 Method Summary

Class Method Detail

def self.[](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


def self.[]?(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


def self.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


def self.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