An Yggdrasil address miner in Go - migrated to GitHub https://github.com/tdemin/syg_go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Timur Demin 1f9d8f9b3a
Add migration warning
2 months ago
.drone.yml Use non-Alpine images to avoid unexpected problems with CI 1 year ago
.goreleaser.yml Update goreleaser config for multiple files 1 year ago
LICENSE Initial commit 1 year ago
README.md Add migration warning 2 months ago
crypto.go Update for Yggdrasil 0.4.0 3 months ago
crypto_test.go Update for Yggdrasil 0.4.0 3 months ago
debug.go Use custom logger when debugging 11 months ago
go.mod Update for Yggdrasil 0.4.0 3 months ago
go.sum Update for Yggdrasil 0.4.0 3 months ago
main.go Set version to v0+HEAD 3 months ago

README.md

This project has moved to GitHub https://github.com/tdemin/syg_go

SimpleYggGen-Go

This program reimplements SimpleYggGen in Go, importing the original Yggdrasil code for generating keys and utilizing multiple CPU threads for mining. It is based on cmd/genkeys from yggdrasil-go.

Installation

% go get -u -v git.tdem.in/tdemin/syg_go

If you're an Arch Linux user, you can install it from AUR:

% yay -S syg_go

Features

  • regex-based key mining (see -regex)
  • bruteforce-resistant keys mining mode (see -highaddr)
  • multithreaded key mining (see -threads)

Usage

% syg_go -help
Usage of syg_go:
  -highaddr
        high address mining mode, excludes regex
  -iter uint
        per how many iterations to output status (default 100000)
  -original
        use original Yggdrasil code
  -regex string
        regex to match addresses against (default "::")
  -threads int
        how many threads to use for mining (default 16)
  -version
        display version

This program outputs keys found to stdout and iterations numbers reached to stderr so that users can redirect the (possibly) irrelevant status output to /dev/null. To redirect status output to /dev/null, run:

% syg_go ...flags... 2>/dev/null

History

SimpleYggGen is originally a project by @acetone, who wrote a Bash miner for getting "magic" Yggdrasil addresses following a pattern. The main problem with his implementation was that it ran grep and yggdrasil as separate processes, making mining very slow. Even though @acetone later made a C++ implementation, it still relied on running Yggdrasil as a separate process.

As of August 2020 @acetone reworked his C++ miner implementation, and SYG-C++ is a lot more performant than this program, making 4 times more iterations in the same time. It might be feasible to use his program instead unless you're running an architecture where SYG-C++ won't build.

Performance

Obviously far superior to the original SimpleYggGen.

With multiple threads it takes SimpleYggGen a month to run through a few million cycles and find keys for 200::c84:77b0:f66d:b47e:64c7 (targeting ::). syg_go has found keys for 206:bcdb::ac47:4e3b:b97e:df4e with the same target in 27 minutes, utilizing 8 threads on AMD Ryzen 1700X.

With 8 threads on Ryzen 1700X while searching for :: this program reaches:

  • 10 000 000 iterations in 2 minutes, 36 seconds
  • 100 000 000 iterations in 25 minutes, 58 seconds
  • 500 000 000 iterations in 2 hours, 10 minutes

This program contains some modded code from Yggdrasil that aims to improve performance. If you prefer to use original Yggdrasil code, set -original flag.

Development

go tool pprof support is available when building with -tags debug. The program will launch an HTTP server attachable by pprof, listening on the address specified by the SYGGO_HTTP environment variable.

License

See LICENSE.