Muhammed Zakir
|
|
May 31, 2015, 06:57:58 AM |
|
I still need help to vanity with amd, sapphire 7950, windows 7 not geniunie (im thinking about moving to linux it may help?) and drivers up to date.
Use lifeboats version with the 64 bit DLL. andulolika's Windows 7 is not genuine and AFAIK OpenCL doesn't work in it.
|
|
|
|
andulolika
Legendary
Offline
Activity: 2366
Merit: 1048
|
|
June 02, 2015, 01:41:07 PM |
|
I still need help to vanity with amd, sapphire 7950, windows 7 not geniunie (im thinking about moving to linux it may help?) and drivers up to date.
Use lifeboats version with the 64 bit DLL. andulolika's Windows 7 is not genuine and AFAIK OpenCL doesn't work in it. Thanks both of you, as soon as i move to ubuntu i think its gonna be fine.
|
|
|
|
Jude Austin
Legendary
Offline
Activity: 1140
Merit: 1000
The Real Jude Austin
|
|
June 03, 2015, 05:23:22 AM |
|
I still need help to vanity with amd, sapphire 7950, windows 7 not geniunie (im thinking about moving to linux it may help?) and drivers up to date.
Use lifeboats version with the 64 bit DLL. andulolika's Windows 7 is not genuine and AFAIK OpenCL doesn't work in it. Oh, I didn't know OCL wouldn't work on a non-genuine Windows system. Thanks for that bit of knowledge!
|
Buy or sell $100 of Crypto and get $10!
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 03:20:47 PM |
|
I am trying to get rid of the limitation that doesn't allow you to look for patterns that overlap.
For example: I would like to be able to search for 1ad, 1adf, 1adfg,
but it will not let me search for all of them in a row, instead it will say that 1adf and 1adfg "are ignored because they overlap with 1ad"
So how can I fix that? Or am I missing a parameter?
|
|
|
|
TheRealSteve
|
|
June 07, 2015, 03:37:20 PM |
|
You'd have to modify the source code and recompile. The reason it's skipping them is reasonable, though. If you're looking for any address starting with '1ad' in the first place, then what makes '1adfg' special? '1adfg' will naturally occur in some percentage of all '1ad' results.
|
|
|
|
organofcorti
Donator
Legendary
Offline
Activity: 2058
Merit: 1007
Poor impulse control.
|
|
June 07, 2015, 03:39:32 PM |
|
I am trying to get rid of the limitation that doesn't allow you to look for patterns that overlap.
For example: I would like to be able to search for 1ad, 1adf, 1adfg,
but it will not let me search for all of them in a row, instead it will say that 1adf and 1adfg "are ignored because they overlap with 1ad"
So how can I fix that? Or am I missing a parameter?
If you're using vanitygen and you know regex, try using that (I think it's the -r switch?). If you're using oclvanitygen and you know regex, try running a batch to create a few hundred million '1a' addresses, and regex for the others you want.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 03:52:01 PM Last edit: June 07, 2015, 04:06:36 PM by georgem |
|
Thanks guys. I am working on an in-wallet vanity gen, using this codebase. I just want to let the user pass any valid patterns he wants to the vanity gen thread, so if he specifically desires to search for two patterns that overlap, then he should be allowed to do so. I have excluded regex from the code, to make it easier and to not require PCRE. So I can't use that. As far as I can see, in this function here (in pattern.cpp), it tells the program to get rid of the overlapping pattern: https://github.com/samr7/vanitygen/blob/master/pattern.c#L1044static vg_prefix_t *vg_prefix_add(avl_root_t *rootp, const char *pattern, BIGNUM *low, BIGNUM *high) { vg_prefix_t *vp, *vp2; assert(BN_cmp(low, high) < 0); vp = (vg_prefix_t *) malloc(sizeof(*vp)); if (vp) {
avl_item_init(&vp->vp_item);
vp->vp_sibling = NULL; vp->vp_pattern = pattern; vp->vp_low = low; vp->vp_high = high; vp2 = vg_prefix_avl_insert(rootp, vp); if (vp2 != NULL) { fprintf(stderr, "Prefix '%s' ignored, overlaps '%s'\n", pattern, vp2->vp_pattern); vg_prefix_free(vp); vp = NULL; } } return vp; } But if I remove the vg_prefix_free(vp); vp = NULL; it still gets rid of the overlapping pattern, so I assume there is some restricting code elsewhere that I have overlooked. I want the program to keep any valid pattern and work with it, instead of automatically removing overlaps.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 04:08:54 PM |
|
The reason it's skipping them is reasonable, though. If you're looking for any address starting with '1ad' in the first place, then what makes '1adfg' special? '1adfg' will naturally occur in some percentage of all '1ad' results.
Maybe someone wants to periodically update his favorite vanity address by using an increasingly better match over time. Why not. Suppose I'd like to use 1superduper, but since this is going to take ages, I am willing to use 1super for now, while letting vanitygen keep on working on subsequent larger patterns like 1superd 1superdu 1superdup etc... And whenever one of those is found, I can atleast use the intermediate result, and getting closer and closer to the ultimate goal.
|
|
|
|
TheRealSteve
|
|
June 07, 2015, 04:13:33 PM |
|
I get that, but what I'm saying is that there's no factual difference.
Let's say the user wants it to look for '1abc' and also '1abcd'. What is the expected output of your generator in that case?
To vanitygen, '1abcd*' is not a special case of '1abc*'. It's just one of many possible matches, including but not limited to '1abc1*', '1abc2*', '1abc3*' ... '1abcx*', '1abcy*', '1abcz*'. Some of those will naturally be '1abcd', but they're not 'special' in any way.
If your wallet is supposed to interpret '1abcd*' as a more special form of '1abc*', then what organofcorti is suggested - i.e. take all the '1abc*' ones and specifically filter further for '1abcd*' as a secondary step - perhaps to highlight them or move them up a list or however your wallet would be handling it - is the best way to go. It has the additional advantage that, at least theoretically, you can store these results and call upon them at a later time. This does become a storage vs calculation tradeoff pretty quickly, though.
If the expectation is instead that more precise vanities should overrule less precise ones - i.e. the exact opposite of how vanitygen is handling it - that would require a preparational step in your wallet, and probably a warning to the user, to suggest that using both prefixes "1abc" and "1abcd" will cause it to only look for "1abcd".
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 04:16:51 PM |
|
I get that, but what I'm saying is that there's no factual difference.
I know there is no factual difference. I am just looking for a way to force vanity gen to work with overlapping patterns as if they were "unique" patterns. (meaning, vanitygen will not compare patterns with eachother and get rid of overlapping patterns, and will always print out the resulting privkey etc) That would be the easiest solution for what I am trying to achieve: Pass an array of strings to vanity gen thread, and getting results back over time on EVERY item in the array.
|
|
|
|
TheRealSteve
|
|
June 07, 2015, 04:23:37 PM |
|
And whenever one of those is found, I can atleast use the intermediate result, and getting closer and closer to the ultimate goal.
I fear you misunderstand how vanity addresses work - that or I'm mis-reading this line. You can't take a result '1Super', and then feed that back into vanitygen to get '1SuperDuper' at a lower cost. The process is effectively (pseudo-)random. What you can do, and I touched upon in the previous post, is store all '1Super*' results - including '1SuperMan*', '1SuperWoman*' but also nonsensical (past the 'Super' bit) ones like '1Super5d41402a', and then later if the user enters '1SuperDuper', look through your '1Super*' database for any '1SuperDuper' ones. But that's going to be a fairly large database I am just looking for a way to force vanity gen to work with overlapping patterns as if they were "unique" patterns. (meaning, vanitygen doesn't get rid of them, and will always print out the resulting privkey etc, even from overlapping patterns.)
But it's not 'getting rid of them', is what I'm trying to convey. While looking for '1abc', it's not going to discard any '1abcd*' results. It will still include them, among all other '1abc*' results. vanitygen -k -o results.txt 1a 1ab Prefix '1ab' ignored, overlaps '1a' Difficulty: 1353 Pattern: 1a Address: 1azzEKBaqhWmEAQCD4FDvqehTXnwjAGLL Privkey: 5Jt8AfHCbWcnZ5ewRm7ZLZYkxLiB8FBbEcQUSYN5ZAdwEm4398F Pattern: 1a Address: 1avFsr2z2UnKrkgdG6ZiqTnnYh3pYnVkz Privkey: 5Kc2R7VJu4G7m2D6CtyQp7nk56neCTqkn5upgEHNtfp7Abh9TFJ Pattern: 1a Address: 1ab9Sk54nnYgMeE9K8YsPsKsdt2HPtVMt Privkey: 5KjjJXkKstLUqhDzSU81Q5tyrnpqVYHz7tiLWHQFvmJfhBo6Xm6 Pattern: 1a Address: 1a7oEr6vMb5tTsL7NKGGFwM4hxgUhvPuy Privkey: 5JWkGg4T5tD1YRZnQdUZGzbm9PaAn41UmNT1FusBwoNsxRi5uBQ Pattern: 1a Address: 1aXoxNnFHriwYKRPMviGJVH5tpPig3YCD Privkey: 5Jhimb2f1rSqPPTQMChCh584m1i1wsow5aCjVSGEAo7w27qNVQw
That would be the easiest solution for what I am trying to achieve. I guess I'm still unclear as to what it is you're trying to achieve
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 04:26:55 PM Last edit: June 07, 2015, 04:46:01 PM by georgem |
|
You can't take a result '1Super', and then feed that back into vanitygen to get '1SuperDuper' at a lower cost.
When did I ever say that I want to "save time" or achieve "lower cost"? I don't want to "feedback" anything. As I stated, I just desire that vanity gen doesn't automatically get rid of patterns that overlap,but instead it should continue working with them as if they were unique searches. Right now, vanity gen stops the processing of overlapping patterns, I would like that it continues the processing anyway.
|
|
|
|
Muhammed Zakir
|
|
June 07, 2015, 04:28:55 PM |
|
You can't take a result '1Super', and then feed that back into vanitygen to get '1SuperDuper' at a lower cost.
When did I ever say that I want to "save time" or achieve "lower cost"? As I stated, I just desire that vanity gen doesn't automatically get rid of patterns that overlap,but instead it should continue working with them as if they were unique. Right now, vanity gen stops the processing of overlapping patterns, I would like that it continues the processing anyway.Could you please give an example. I am not understanding correctly. It would be great if you give an example for the problem and for what you are trying to achieve.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 04:36:26 PM Last edit: June 07, 2015, 04:57:26 PM by georgem |
|
Could you please give an example. I am not understanding correctly. It would be great if you give an example for the problem and for what you are trying to achieve.
Very well. The way vanitygen works now, is that it allows us to search for multiple patterns simultaneously (by starting vanitygen once and passing parameters once). And it will keep on working to find matches for all those patterns, printing out the resulting privkey/pubkey when one is found. Very good. Suppose I now want to start vanitygen looking for those patterns: 1something, 1super, 1superduper Now, depending on what pattern is listed first, vanitygen will complain that either Prefix '1superduper' ignored, overlaps '1super' or if the list is ordered differently, like that: 1something, 1superduper, 1super: Prefix '1super' ignored, overlaps '1superduper' I would like vanitygen to NOT do that, but instead work with all patterns listed, and printing out resulting keys when a match is found. This means that I expect vanitygen to find a match for 1super in short time (and print out the resulting keys), and continue looking for a match of 1superduper. Vanitygen doesn't allow me to do that. Can someone who understands the code give me a hint what functions I need to disable/adjust so that overlapping patterns don't get removed/ignored? Thanks.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 05:04:50 PM |
|
Another example: what if I want to feed those patterns into vanitygen: 1super 1superd 1superdu 1superdup 1superdupe 1superduper and I want it to print out the privkey/pubkey pair whenever one of those matches is found. What method can I use to achieve that and REALLY have vanitygen print out all intermediate key pairs, without ignoring my wishes. PS: I know that I can achieve that by starting 6 different vanitygen processes. But I do require that this happens withing one vanitygen process.
|
|
|
|
Muhammed Zakir
|
|
June 07, 2015, 05:07:22 PM |
|
Try with -r command. It is working for me. Another example: what if I want to feed those patterns into vanitygen: 1super 1superd 1superdu 1superdup 1superdupe 1superduper and I want it to print out the privkey/pubkey pair whenever one of those matches is found. What method can I use to achieve that and REALLY have vanitygen print out all intermediate key pairs, without ignoring my wishes. PS: I know that I can achieve that by starting 6 different vanitygen processes. But I do require that this happens withing one vanitygen process. I tried with these but vanitygen is only finding for 5 keywords not 6 but it is better than nothing.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 05:08:15 PM |
|
Try with -r command. It is working for me. Another example: what if I want to feed those patterns into vanitygen: 1super 1superd 1superdu 1superdup 1superdupe 1superduper and I want it to print out the privkey/pubkey pair whenever one of those matches is found. What method can I use to achieve that and REALLY have vanitygen print out all intermediate key pairs, without ignoring my wishes. PS: I know that I can achieve that by starting 6 different vanitygen processes. But I do require that this happens withing one vanitygen process. I tried with these but I vanitygen is only finding for 5 keywords not 6 but it is better than nothing. Thanks, so it requires regex. What if I don't want to use regex, but rather adjust vanitygen so that it doesn't ignore overlaps?
|
|
|
|
TheRealSteve
|
|
June 07, 2015, 05:09:34 PM |
|
Can someone who understands the code give me a hint what functions I need to disable/adjust so that overlapping patterns don't get removed/ignored?
I don't think this is the way to go about it - preparsing the user's list, feeding it into vanitygen, filtering afterward being more appropriate - but alright. In pattern.c, look for vg_prefix_avl_insert. There's a comparison function in there that compares prefixes and inserts them in appropriate spots. There's an edge condition where the two are considered equal, the 'else [...] return vp;' part. You want to eliminate that. Should be as simple as changing one of the comparisons from '>' or '<' to '>=' or '<=' respectively. Not sure if that breaks anything, but give it a shot.
what if I want to feed those patterns into vanitygen: 1super 1superd 1superdu 1superdup 1superdupe 1superduper
and I want it to print out the privkey/pubkey pair whenever one of those matches is found.
It already will. See earlier example where feeding it '1a 1ab' has it drop '1ab' from the prefixes list, but will still happily return '1ab*' results (along with '1aa*', '1ac*', '1ad*', etc.) because it still matches '1a'.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 05:24:51 PM |
|
There's an edge condition where the two are considered equal, the 'else [...] return vp;' part. You want to eliminate that. Should be as simple as changing one of the comparisons from '>' or '<' to '>=' or '<=' respectively. Not sure if that breaks anything, but give it a shot.
Thanks, I tried that, removing the part and changing either to >= or <=, but it doesn't work. It looks like the program isn't even starting the search cycle anymore.
|
|
|
|
georgem
Legendary
Offline
Activity: 1484
Merit: 1007
spreadcoin.info
|
|
June 07, 2015, 05:29:57 PM |
|
It works if I do this: static vg_prefix_t *vg_prefix_avl_insert(avl_root_t *rootp, vg_prefix_t *vpnew) { vg_prefix_t *vp; avl_item_t *itemp = NULL; avl_item_t **ptrp = &rootp->ar_root; while (*ptrp) {
itemp = *ptrp; vp = avl_item_entry(itemp, vg_prefix_t, vp_item); if (BN_cmp(vp->vp_low, vpnew->vp_high) > 0) { ptrp = &itemp->ai_left; } else { if (BN_cmp(vp->vp_high, vpnew->vp_low) < 0) { ptrp = &itemp->ai_right; } else ptrp = &itemp->ai_left; //return vp; }
} vpnew->vp_item.ai_up = itemp; itemp = &vpnew->vp_item; *ptrp = itemp; avl_insert_fix(rootp, itemp); return NULL; } remove return vp; and replace it with ptrp = &itemp->ai_left; Thanks again for the hint, TheRealSteve! You really are The Real Steve!
|
|
|
|
|