diff --git a/README.md b/README.md index ae401b3..e3a792b 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ code for generating keys and utilizing multiple CPU threads for mining. `% go get -u -v git.tdem.in/tdemin/syg_go` +This program contains some modded code from Yggdrasil that aims to improve +performance. If you prefer to use original Yggdrasil code, set `-tags original` +flag in the command above. + ### History SimpleYggGen is originally a project by [@acetone](https://notabug.org/acetone), diff --git a/crypto.go b/crypto.go index 35a8af1..bf40398 100644 --- a/crypto.go +++ b/crypto.go @@ -5,6 +5,11 @@ import ( "github.com/yggdrasil-network/yggdrasil-go/src/crypto" ) +// custom function selectors, see crypto_xxx.go +var ( + addrForNodeID func(*crypto.NodeID) *address.Address +) + // AddrForNodeID is a variant of Yggdrasil's src/address.AddrForNodeID that // might be slightly optimized for performance. // diff --git a/crypto_original.go b/crypto_original.go new file mode 100644 index 0000000..a0ed3dc --- /dev/null +++ b/crypto_original.go @@ -0,0 +1,14 @@ +// +build original + +package main + +import ( + "log" + + "github.com/yggdrasil-network/yggdrasil-go/src/address" +) + +func init() { + log.Println("using unmodified Yggdrasil code") + addrForNodeID = address.AddrForNodeID +} diff --git a/crypto_vendor.go b/crypto_vendor.go new file mode 100644 index 0000000..5909965 --- /dev/null +++ b/crypto_vendor.go @@ -0,0 +1,10 @@ +// +build !original + +package main + +import "log" + +func init() { + log.Println("using vendored syg_go code") + addrForNodeID = AddrForNodeID +} diff --git a/main.go b/main.go index da94066..8e81de3 100644 --- a/main.go +++ b/main.go @@ -73,7 +73,7 @@ func doBoxKeys(out chan<- keySet) { for { pub, priv := crypto.NewBoxKeys() id := crypto.GetNodeID(pub) - ip := net.IP(AddrForNodeID(id)[:]).String() + ip := net.IP(addrForNodeID(id)[:]).String() out <- keySet{priv[:], pub[:], id[:], ip} } }