Skip to content

Module BSV::Primitives::Base58

Base58 and Base58Check encoding/decoding.

Implements the Base58 alphabet used throughout Bitcoin for addresses, WIF keys, and extended keys. Base58Check adds a 4-byte double-SHA-256 checksum for error detection.

@example Encode and decode an address payload

encoded = BSV::Primitives::Base58.check_encode(payload)
decoded = BSV::Primitives::Base58.check_decode(encoded)

Constants

ALPHABET

The Base58 alphabet (no 0, O, I, l to avoid visual ambiguity).

BASE

The base (58).

DECODE_MAP

Reverse lookup table mapping ASCII byte values to Base58 digit indices.

Public Class Methods

check_decode(string)

Decode a Base58Check string and verify its checksum. - @param string [String] Base58Check-encoded string - @raise [ChecksumError] if the checksum does not match or input is too short - @return [String] decoded payload (without checksum)

check_encode(payload)

Encode binary data with a 4-byte double-SHA-256 checksum appended. - @param payload [String] binary data to encode - @return [String] Base58Check-encoded string

decode(string)

Decode a Base58 string to binary data.

Leading +'1'+ characters are decoded as zero bytes. - @param string [String] Base58-encoded string - @raise [ArgumentError] if the string contains invalid Base58 characters - @return [String] decoded binary data

encode(bytes)

Encode binary data as a Base58 string.

Leading zero bytes are preserved as +'1'+ characters. - @param bytes [String] binary data to encode - @return [String] Base58-encoded string