Pages:
Author

Topic: VanitySearch (Yet another address prefix finder) - page 40. (Read 31225 times)

member
Activity: 118
Merit: 11
It would be nice if you could search for not just a specific Vanity address, but also a specific pubkey address.
For example if I wanted to search for an address with a public key that begins with 0400000000 or 02123456  or 03333333 etc.
Is it very hard to implement something like this to the VanitySearch?
donator
Activity: 4732
Merit: 4240
Leading Crypto Sports Betting & Casino Platform
I don't think you can get any ASICs meant for mining to work on VanitySearch.

why?
Are there alternative programs?

None I've ever heard of.  More surprisingly, I'm not even aware of any FPGA vanity searching tools.
newbie
Activity: 4
Merit: 0
I don't think you can get any ASICs meant for mining to work on VanitySearch.

why?
Are there alternative programs?
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
I don't think you can get any ASICs meant for mining to work on VanitySearch.
newbie
Activity: 4
Merit: 0
How to configure VanitySearch to work with bitfury bf1

https://imgur.com/8bwVYG8
https://imgur.com/iqpi94c
https://imgur.com/226O3t7

GPU: GPU #0 GeForce GTX 770 (8x192 cores) Grid(64x128)
Seed: 1576154843
167.716 MegaKey/sec
ComputeKeys() found 1494 items , CPU check...
GPU/CPU check OK

does not see the device bitfury bf1 ((


I want to set up a mining farm to work with VanitySearch.
USB hub 49 ports.
sr. member
Activity: 462
Merit: 696
Jean_Luc, thank you for the detailed explanation.

Do you know, are there any other elliptic curve properties exist besides symmetry and endomorphism?

Symmetry and endomorphism were used by you in the code to spead up the process. However may be you know some other properties or features which could be used for additional speedup?

To my knowledge, no other speedup using other ec properties can be added to VanitySearch, but my knowledge is not infinite Wink
In any case the time required for ECC calculation is now low compare to hashing (~80% of CPU usage is taken by SHA256 and RIPEMD160). By using symmetry and endomorphism, we are near of ~1 modular multiplication per point. Even if we double the speed of ECC, it will only result in a ~10% speed increase.
To my point of view, the only significant speedup can be bring by partial reversing of the hashing function in order to reduce hashing time consumption.
sr. member
Activity: 443
Merit: 350
Jean_Luc, thank you for the detailed explanation.

Do you know, are there any other elliptic curve properties exist besides symmetry and endomorphism?

Symmetry and endomorphism were used by you in the code to spead up the process. However may be you know some other properties or features which could be used for additional speedup?
sr. member
Activity: 462
Merit: 696
Are these properties all known elliptic curve properties, or there are some other known properties but not used in vanitysearch?

Symmetry (x,y) (x,-y) is a common property of all elliptic curve.
Secpk1 admit a primitive cubic root of unity so an endomorphism can be constructed using β and λ (β^3 = 1 mod p and λ^3 = 1 mod n)
If β^3 = 1 and λ^3 = 1 we have also (β^-1)^3 = 1,(λ^-1)^3 = 1 so we can construct a second endomorphism using β^-1 and λ^-1.
Note:  β^3 = 1 mod p =>   β^3.(β^-1) = 1.(β^-1) mod p => β^2 =  β^-1 mod p (same for λ^3 mod n)

Code:
β = 7ae96a2b 657c0710 6e64479e ac3434e9 9cf04975 12f58995 c1396c28 719501ee
λ = 5363ad4c c05c30e0 a5261c02 8812645a 122e22ea 20816678 df02967c 1b23bd72

To find primitive roots of unity you need to factorize p-1 and n-1 and find common prime factors. We have always a primitive square root of unity but it is 1 and it does not bring an improvement, speck1 admit only a cubic primitive root of unity which can be exploited.

Code:
Factorization of p-1 and n-1, only 3 can be exploited.

p-1 = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2E
2
3
7
3481
1DB8260E5E3B460A46A0088FCCF6A3A5936D75D89A776D4C0DA4F338AAFB

n-1 = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
2^6
3
95
277
17D6CFB8EE30C51
978C6F353C3889A79
10DBFF26EAB8198050172EE03275


I also made some tests with vanitysearch and it is interesting for me why it is faster than bitcrack. For example, for 1 compressed address on GTX 1080ti bitcrack has 340-350MKey/sec, but vanitysearch has 950-1000MKey/sec (3 times more). Was it caused by endomorphism used?

Symmetry and endomorphisms bring significant speedup. I'm not sure, but it seems to me that bitcrak use 32 bits arithmetic which is slower...


Edit: Added factorisation of p-1 and n-1
sr. member
Activity: 443
Merit: 350
Any other ECDSA properties are used?

Endomorphism. It is a elliptic curve property, not a ECDSA property.

If kG = (x,y)  then  (λ*k)G = (β*x, y)  and  (λ*λ*k)G = (β*β*x, y)
-snip-

Thank you! I have looked at the code and also found just these properties:
1) Endomorphism (for λ and λ*λ) -  2 additional addresses for kG
2) Curve symmetry (if (x,y) = k*G, then (x, -y) is -k*G) - 1 additional address

So, it is clear why 6 addresses are found: (1+2) * 2 = 6

Are these properties all known elliptic curve properties, or there are some other known properties but not used in vanitysearch?

I also made some tests with vanitysearch and it is interesting for me why it is faster than bitcrack. For example, for 1 compressed address on GTX 1080ti bitcrack has 340-350MKey/sec, but vanitysearch has 950-1000MKey/sec (3 times more). Was it caused by endomorphism used?
legendary
Activity: 1914
Merit: 2071

this explains why 1 of 6 will be valid if split gen right?


Yes. But this is due only to the way the programs we use to reassemble the pieces for the final private key work.

Let s (Q = sG) be the secret private key (the public key). Only one person knows 's'.

Then he sends only Q to another person, who run a "split gen" program.

Usually "split gen" works like this:

it computes only (s+1)G = Q + G, (s+2)G = Q + 2G, …, (s+k)G = Q + kG = P

until it gets a public key P with a particular address.

The program knows only k (the partial private key).

Then you need to compute k' (k' G = P):

k' = (s + k)  mod n.


Now suppose you get P in this way: - (Q + kG) = P

then in order to get from the partial private key k the correct final private key k' = (-s -k) mod n
you need to know how k was obtained (exploiting the symmetry).


If you get P in this way: λ(Q + kG) = P

(exploiting the endomorphism) the correct final private k' will be: λ*(s + k) mod n   and so on.
hero member
Activity: 1430
Merit: 513
Any other ECDSA properties are used?

Endomorphism. It is a elliptic curve property, not a ECDSA property.

If kG = (x,y)  then  (λ*k)G = (β*x, y)  and  (λ*λ*k)G = (β*β*x, y)

where

Code:
λ = 5363ad4c c05c30e0 a5261c02 8812645a 122e22ea 20816678 df02967c 1b23bd72
β = 7ae96a2b 657c0710 6e64479e ac3434e9 9cf04975 12f58995 c1396c28 719501ee

λ*k is mod n,  β*x is mod p

where

Code:
n = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

In this way, you get 6 points with only 1 "operation" kG:

(x,y) (β*x, y)  (β*β*x, y)
(x,p-y) (β*x, p-y)  (β*β*x, p-y)

this explains why 1 of 6 will be valid if split gen right?
legendary
Activity: 1914
Merit: 2071
Any other ECDSA properties are used?

Endomorphism. It is a elliptic curve property, not a ECDSA property.

If kG = (x,y)  then  (λ*k)G = (β*x, y)  and  (λ*λ*k)G = (β*β*x, y)

where

Code:
λ = 5363ad4c c05c30e0 a5261c02 8812645a 122e22ea 20816678 df02967c 1b23bd72
β = 7ae96a2b 657c0710 6e64479e ac3434e9 9cf04975 12f58995 c1396c28 719501ee

λ*k is mod n,  β*x is mod p

where

Code:
n = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

In this way, you get 6 points with only 1 "operation" kG:

(x,y) (β*x, y)  (β*β*x, y)
(x,p-y) (β*x, p-y)  (β*β*x, p-y)
sr. member
Activity: 443
Merit: 350
This is similar to VanityGen and other vanity generators. They don't need to use a SHA256 from any seed, they just start at some random number in the space and then increment by 1 each time until it finds a match. So it basically generates thousands to millions of addresses per second or minute. After a few thousand or million tries, it randomly switches to another number and does the process again.

Ok, this is clear. Thank you. By the sha256 I supposed the initial starting base key. If the process just "increment by 1", it is very clear.
In the description of Vanitysearch on GitHub the author also pointed that the tool "Use some properties of elliptic curve to generate more keys". What kind of elliptic curve properties are used? I suppose that for every private key number k the tool finds also the address for (order - k) number (as it needs only to change 02 to 03 in public key and vice verca). Any other ECDSA properties are used?
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
This is similar to VanityGen and other vanity generators. They don't need to use a SHA256 from any seed, they just start at some random number in the space and then increment by 1 each time until it finds a match. So it basically generates thousands to millions of addresses per second or minute. After a few thousand or million tries, it randomly switches to another number and does the process again.
member
Activity: 118
Merit: 11
Looks like a nice project, will give it a try.
You have a typo under Usage. - https://github.com/JeanLucPons/VanitySearch
VanitySeacrh instead of VanitySearch.  Wink
sr. member
Activity: 443
Merit: 350
Nice project, thank you.

I have not read all the replies to this topic, so sorry is my question has been already answered or discussed.
I want to know the algorithm how is Vanitysearch finds the prefix address in order to be sure that it is real secure.

The starting seed is used for search (this seed could be generated randomly or defined by a user). How is later Vanitysearch finds the address based on this seed? Can you please describe the processs in simple words, for example: (1) software uses sha256 from the seed, (2) generates address from sha256 number and compare with prefix, (3) if prefix not found, increment number by 1, and so on.

Of course it is not the scheme how vanitysearch works, but cann you please describe it or give the links where it has already been discussed.
sr. member
Activity: 462
Merit: 696
I was very very busy during the last few months but now the the development is almost ended, we still have to debug few things, I'm starting to breath again Wink
legendary
Activity: 3458
Merit: 6231
Crypto Swap Exchange

Since Jean_Luc has been offline and not updated in a while I think the only new speed increases will be with new cards not from software updates.

-Dave

Hi there,
I'm still very busy at the moment but I will definitely restart to work on the project soon.
I'm working in a particle accelerator and we have rebuilt the storage ring. We have just started the commissioning phase yesterday.
When we will get a stable stored beam at nominal settings, I will have more time to work again on personal projects.

We have now seen Jean_Luc's to do list

1) Probe the secrets of the universe.
2) Update VanitySearch

No problem with this being #2 on your list.
Glad to hear you are doing well, just dropping off and going dark like that makes people worry.

-Dave
sr. member
Activity: 462
Merit: 696
What kind of storage does a particle accelerator use? That's interesting. Those things are like giant lasers or something and you break atoms and stuff right?

I'm guessing this is one of those circular particle accelerators, where the beam goes round and round for some time.

Yes it is a circular ring, diameter ~270m,energy  6GeV. (ESRF at Grenoble/France).
We don't break atoms, we accelerate electron to produce hard Xray. Those xray are used in beamlines all around the ring to explorate matter. A bit like a giant microscope.
legendary
Activity: 3416
Merit: 1912
The Concierge of Crypto
Hi there,
I'm still very busy at the moment but I will definitely restart to work on the project soon.
I'm working in a particle accelerator and we have rebuilt the storage ring. We have just started the commissioning phase yesterday.
When we will get a stable stored beam at nominal settings, I will have more time to work again on personal projects.

What kind of storage does a particle accelerator use? That's interesting. Those things are like giant lasers or something and you break atoms and stuff right?

I'm guessing this is one of those circular particle accelerators, where the beam goes round and round for some time.
Pages:
Jump to: