Forked from github.com/mr-tron/base58. Separated repos for security (prevent potential supply chain attacks).
Find a file
2025-12-25 13:32:34 +00:00
.forgejo/workflows Add .forgejo/workflows/go.yml 2025-12-22 17:23:13 +00:00
base58 Update license, README, and module path; remove deprecated code and tests 2025-12-22 17:32:32 +01:00
examples Update license, README, and module path; remove deprecated code and tests 2025-12-22 17:32:32 +01:00
.gitignore don't ignore base58 directory 2017-12-17 16:35:12 -08:00
.mailmap Add myself to authors 2020-05-31 15:46:10 +02:00
alphabet.go Better handling of custom alphabets + tests 2020-05-31 15:46:15 +02:00
base58.go Merge pull request #15 from ribasushi/lessmem 2020-05-29 17:07:29 +03:00
base58_2_test.go move package on top level 2018-10-08 12:33:46 +01:00
base58_test.go Better handling of custom alphabets + tests 2020-05-31 15:46:15 +02:00
doc.go Slightly better README rendering 2020-05-31 15:46:15 +02:00
go.mod Update license, README, and module path; remove deprecated code and tests 2025-12-22 17:32:32 +01:00
go.sum Works without changes on go1.11: lower dep 2020-05-31 15:46:15 +02:00
LICENSE Update LICENSE 2025-12-25 13:32:34 +00:00
README.md Update license, README, and module path; remove deprecated code and tests 2025-12-22 17:32:32 +01:00
trivial.go move trivial encodig/decoding to over file 2018-10-20 21:42:51 +01:00

Fast Implementation of Base58 encoding

GoDoc Go Report Card Used By

This version is maintained and used by

Rebxd

Note

Original can be found under github.com/mr-tron/base58.

Fast implementation of base58 encoding in Go.

Base algorithm is adapted from https://github.com/trezor/trezor-crypto/blob/master/base58.c

Benchmark

  • Trivial - encoding based on big.Int (most libraries use such an implementation)
  • Fast - optimized algorithm provided by this module
BenchmarkTrivialBase58Encoding-4          123063              9568 ns/op
BenchmarkFastBase58Encoding-4             690040              1598 ns/op

BenchmarkTrivialBase58Decoding-4          275216              4301 ns/op
BenchmarkFastBase58Decoding-4            1812105               658 ns/op

Encoding - faster by 6 times

Decoding - faster by 6 times

Usage example


package main

import (
	"fmt"
	"code.rebxd.com/Rebxd/base58"
)

func main() {

	encoded := "1QCaxc8hutpdZ62iKZsn1TCG3nh7uPZojq"
	num, err := base58.Decode(encoded)
	if err != nil {
		fmt.Printf("Demo %v, got error %s\n", encoded, err)	
	}
	chk := base58.Encode(num)
	if encoded == string(chk) {
		fmt.Printf ( "Successfully decoded then re-encoded %s\n", encoded )
	} 
}