diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-05-26 09:21:54 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2016-05-26 09:26:03 -0700 |
| commit | 68d950c3443b3454fdcdd301e339a5692967c7b1 (patch) | |
| tree | 81f676b4eae97962007377ee19e37ce9cfea7bff | |
| parent | 0bcc7d46a3355e05c3f79a0e1bc4f6a000395e9b (diff) | |
| download | infinitytier-68d950c3443b3454fdcdd301e339a5692967c7b1.tar.gz infinitytier-68d950c3443b3454fdcdd301e339a5692967c7b1.zip | |
Hack in zerotier-idtool to allow generation of vanity addresses.
| -rw-r--r-- | one.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
@@ -571,7 +571,7 @@ static void idtoolPrintHelp(FILE *out,const char *pn) COPYRIGHT_NOTICE ZT_EOL_S LICENSE_GRANT ZT_EOL_S); fprintf(out,"Usage: %s <command> [<args>]"ZT_EOL_S""ZT_EOL_S"Commands:"ZT_EOL_S,pn); - fprintf(out," generate [<identity.secret>] [<identity.public>]"ZT_EOL_S); + fprintf(out," generate [<identity.secret>] [<identity.public>] [<vanity>]"ZT_EOL_S); fprintf(out," validate <identity.secret/public>"ZT_EOL_S); fprintf(out," getpublic <identity.secret>"ZT_EOL_S); fprintf(out," sign <identity.secret> <file>"ZT_EOL_S); @@ -607,8 +607,28 @@ static int idtool(int argc,char **argv) } if (!strcmp(argv[1],"generate")) { + uint64_t vanity = 0; + int vanityBits = 0; + if (argc >= 5) { + vanity = Utils::hexStrToU64(argv[4]) & 0xffffffffffULL; + vanityBits = 4 * strlen(argv[4]); + if (vanityBits > 40) + vanityBits = 40; + } + Identity id; - id.generate(); + for(;;) { + id.generate(); + if ((id.address().toInt() >> (40 - vanityBits)) == vanity) { + if (vanityBits > 0) { + fprintf(stderr,"vanity address: found %.10llx !\n",(unsigned long long)id.address().toInt()); + } + break; + } else { + fprintf(stderr,"vanity address: tried %.10llx looking for first %d bits of %.10llx\n",(unsigned long long)id.address().toInt(),vanityBits,(unsigned long long)(vanity << (40 - vanityBits))); + } + } + std::string idser = id.toString(true); if (argc >= 3) { if (!OSUtils::writeFile(argv[2],idser)) { |
