ExBase58 (ex_base58 v0.3.0)
Base58 encoding and decoding.
Every function in this module accepts additonal optional parameter - alphabet. Default alphabet is :bitcoin
.
It uses https://github.com/mycorrhiza/bs58-rs rust library
Link to this section Summary
Functions
Decodes from Base58 format
Decodes binary checking checksum using the Base58Check algorithm.
Decodes binary checking checksum using the Base58Check algorithm. The version byte will be used in verification.
Encodes binary into Base58 format.
Encodes binary including checksum calculated using the Base58Check algorithm
Encodes binary including checksum calculated using the Base58Check algorithm and version
Link to this section Types
alphabet()
Specs
alphabet() :: :bitcoin | :monero | :ripple | :flickr
Link to this section Functions
decode(encoded, alphabet \\ :bitcoin)
Specs
Decodes from Base58 format
examples
Examples
iex> ExBase58.decode("c4oi")
{:ok, "hey"}
iex> ExBase58.decode("Cn8eVZg")
{:ok, "hello"}
iex> ExBase58.decode("U83eVZg", :ripple)
{:ok, "hello"}
iex> ExBase58.decode("cM8DuyF", :flickr)
{:ok, "hello"}
iex> ExBase58.decode("Hello")
{:error, :decode_error}
iex> ExBase58.decode("cM8DuyF", :meow)
{:error, :invalid_alphabet}
iex> ExBase58.decode("2gsG")
{:ok, <<5, 6, 7>>}
decode_check(binary, alphabet \\ :bitcoin)
Specs
Decodes binary checking checksum using the Base58Check algorithm.
examples
Examples
iex> ExBase58.decode_check("GZVwCXwyKVRPTViubJDVKVhVvcaKpEnqR", :monero)
{:ok, <<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>}
iex> ExBase58.decode_check("GZVAUXAyKVRPTV5ubJDVKV6Vvc2KFN8qR", :ripple)
{:ok, <<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>}
decode_check_version(binary, version, alphabet \\ :bitcoin)
Specs
decode_check_version(binary(), non_neg_integer(), alphabet()) :: {:ok, binary()} | {:error, atom()}
Decodes binary checking checksum using the Base58Check algorithm. The version byte will be used in verification.
examples
Examples
iex> ExBase58.decode_check_version("1GZVwCXwyKVRPTViubJDVKVhVvcaEoX5cN", 0)
{:ok, <<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>}
iex> ExBase58.decode_check_version("mw5TEFcvnLvgAZyLdAGbKEi2MvDHF1HXJX", 111)
{:ok, <<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>}
iex> ExBase58.decode_check_version("mAnTNEcv8LvgwZyLdwGbKN5pMvDHErHXJX", 111, :ripple)
{:ok, <<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>}
encode(binary, alphabet \\ :bitcoin)
Specs
Encodes binary into Base58 format.
examples
Examples
iex> ExBase58.encode("hello")
{:ok, "Cn8eVZg"}
iex> ExBase58.encode("hello", :monero)
{:ok, "Cn8eVZg"}
iex> ExBase58.encode("hello", :ripple)
{:ok, "U83eVZg"}
iex> ExBase58.encode("hello", :flickr)
{:ok, "cM8DuyF"}
iex> ExBase58.encode("hello", :meow)
{:error, :invalid_alphabet}
iex> ExBase58.encode(<<5, 6, 7>>)
{:ok, "2gsG"}
encode_check(binary, alphabet \\ :bitcoin)
Specs
Encodes binary including checksum calculated using the Base58Check algorithm
examples
Examples
iex> ExBase58.encode_check(<<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>, :monero)
{:ok, "GZVwCXwyKVRPTViubJDVKVhVvcaKpEnqR"}
iex> ExBase58.encode_check(<<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>, :ripple)
{:ok, "GZVAUXAyKVRPTV5ubJDVKV6Vvc2KFN8qR"}
encode_check_version(binary, version, alphabet \\ :bitcoin)
Specs
encode_check_version(binary(), non_neg_integer(), alphabet()) :: {:ok, binary()} | {:error, atom()}
Encodes binary including checksum calculated using the Base58Check algorithm and version
examples
Examples
iex> ExBase58.encode_check_version(<<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>, 0)
{:ok, "1GZVwCXwyKVRPTViubJDVKVhVvcaEoX5cN"}
iex> ExBase58.encode_check_version(<<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>, 111)
{:ok, "mw5TEFcvnLvgAZyLdAGbKEi2MvDHF1HXJX"}
iex> ExBase58.encode_check_version(<<170, 175, 89, 206, 129, 197, 74, 82, 170, 144, 47, 81, 120, 199, 251, 203, 167, 32, 54, 7>>, 111, :ripple)
{:ok, "mAnTNEcv8LvgwZyLdwGbKN5pMvDHErHXJX"}