Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: MikeJ_NpC on July 22, 2021, 06:07:46 AM



Title: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 22, 2021, 06:07:46 AM
Hey guys i know to some this is "easy" but i merely want to get it correct. Can someone assist with this perhaps?

I need to generate pubkey/privkey only ... i dont need address i dont need balances etc... only those 2 results to a given range which is below.
Also to save the results into 100GB files..   If someone wants lunch i dont mind sending a tip  for helping.. the purpose is for a correlation study... 

Start of range: 04000000005ef4a74721e864761ea977768e5f518bb6891be80000000000000000                                     
End of range: 0400000002fe7f16c00762b915532410f81fa9220d30e5f8a6c38751c7c58df5d4

i can run this on multi-gpu or cpu doesn't matter to me .. just want to get it over with as i have had some disappointments hence why i am requesting for some help on the matter.
As i said dont need the other stuff.. just as stated above.

py might be too slow.. im not sure.. 

Thank you
Kind Regards..



Title: Re: Generation of priv/pub in given range..
Post by: Minase on July 22, 2021, 06:34:26 AM
First of, what you posted are public keys ranges (at least they look like this, even if they start with 04 and contain only the "X" value). They are 66 chars long.
And second.... even if i remove the 04 from the beginning the difference is bigger than 2^225 which translates to = not enough time/space to generate/store all those points, not even with a mini farm.

//edit
Even with a speed of 1.000.000.000.000 keys/s you will still need 1709788601417468277185883757421336293355983284027 YEARS to complete this task.


Title: Re: Generation of priv/pub in given range..
Post by: odolvlobo on July 22, 2021, 07:00:10 AM
I need to generate pubkey/privkey only ... i dont need address i dont need balances etc... only those 2 results to a given range which is below.
Also to save the results into 100GB files..   If someone wants lunch i dont mind sending a tip  for helping.. the purpose is for a correlation study...  

Start of range: 04000000005ef4a74721e864761ea977768e5f518bb6891be80000000000000000                                      
End of range: 0400000002fe7f16c00762b915532410f81fa9220d30e5f8a6c38751c7c58df5d4

It's not clear what you are looking for. Do you want the private keys of all public keys in that range or just one? If you want only one, it should be easy to do. If you want all, then you will find that it is infeasible just because of the number of keys in that range.


Title: Re: Generation of priv/pub in given range..
Post by: TheArchaeologist on July 22, 2021, 09:51:30 AM
It's not clear what you are looking for. Do you want the private keys of all public keys in that range or just one? If you want only one, it should be easy to do. If you want all, then you will find that it is infeasible just because of the number of keys in that range.
Since OP states he want the results saved in 100GB files he clearly means all pirvate/public keys in range.


Title: Re: Generation of priv/pub in given range..
Post by: ABCbits on July 22, 2021, 10:20:03 AM
Assuming you actually mean range of private key, here's a dumb Python script created by myself which generate compressed public key and using all CPU cores.

Code:
from fastecdsa import keys, curve
import multiprocessing

start = 0x1
end = 0xF

f = open('pubkey.txt', 'w')
def do(private):
    public = keys.get_public_key(int(private), curve.secp256k1)
    public_str = '02' + str(hex(public.x)).lstrip('0x') + '\n'
    f.write(public_str)
    f.flush()

p = multiprocessing.Pool(multiprocessing.cpu_count())
p.map(do, range(start, end))

I tried it with Python 3.8 and fastecdsa 2.1.5, here's the result

Code:
0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5
02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9
022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4
02fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556
02a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7
02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13
022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01
02f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8
02499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4
02774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb
025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc
02acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe
02d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a


Title: Re: Generation of priv/pub in given range..
Post by: Sterbens on July 22, 2021, 07:47:05 PM

i can run this on multi-gpu or cpu doesn't matter to me .. just want to get it over with as i have had some disappointments hence why i am requesting for some help on the matter.
As i said dont need the other stuff.. just as stated above.

if using Multi GPU you are trying to use there may be some like using Split/Tile method or by using alternative Frame method. That is if you keep a sizable workload.
As for I would suggest you better use the Alternative method, because this can simplify the work and will also be practical in every step you go through. But again, to finish everything from scratch, you'll have a hard time if you don't have the other elements.

https://i.gyazo.com/0de1825d4bcb21cb4b2b6e7963c696d9.png

As an example of a fairly simple Multi GPU configuration, namely GIGABYTE GV-N970WF2OC-2GD + GIGABYTE GV-XXXXXXX-2XD
then proceed with several additional configurations, namely GIGABYTE GV-R449G1 GA-4GD + GIGABYTE GV-R4545GX.


Title: Re: Generation of priv/pub in given range..
Post by: NotATether on July 23, 2021, 11:02:16 AM
Since OP states he want the results saved in 100GB files he clearly means all pirvate/public keys in range.

Here's the thing about getting all pubkeys in a range. We still don't know whether he wants the X part or the Y part (or both) in the specified range. If *most* keys in the range is sufficient, we could optimize the run time by inspecting only those pubkeys that are also a multiple or 2 or 4 or 8... depending on granularity required.

Obviously the algorithm will be different depending on which parts of pubkey should be in range.

Edit: spelling fudge


Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 23, 2021, 02:45:02 PM
Hey guys sorry about my delay on posting,.. wife is sick...

Well to clarify,  i only need keys  pub/priv with-in the  start  and end points. A 1:1 output meaning all of them within that segment.

I tested  a few other things out and i think  in PY its going to be way too slow.. granted it  wasnt on the 192cpu.. i do know  someone with 400gpu so i could have him run it i think thats a maybe...
other than that most  i can do is 8x to  16x gpu..

Well the premise is  however  you want to arrange it is fine with me as long as the output is  "  pivkey_hex/pubkey_hex " for the points in-between start and end range
Im not expecting  something for free as everyone  needs to eat and  takes time so..  if there is something that works im all ears.




Title: Re: Generation of priv/pub in given range..
Post by: WanderingPhilospher on July 23, 2021, 04:50:26 PM
Hey guys sorry about my delay on posting,.. wife is sick...

Well to clarify,  i only need keys  pub/priv with-in the  start  and end points. A 1:1 output meaning all of them within that segment.

I tested  a few other things out and i think  in PY its going to be way too slow.. granted it  wasnt on the 192cpu.. i do know  someone with 400gpu so i could have him run it i think thats a maybe...
other than that most  i can do is 8x to  16x gpu..

Well the premise is  however  you want to arrange it is fine with me as long as the output is  "  pivkey_hex/pubkey_hex " for the points in-between start and end range
Im not expecting  something for free as everyone  needs to eat and  takes time so..  if there is something that works im all ears.



Can you clarify the range? The range you posted in OP, doesn't really make sense.


Title: Re: Generation of priv/pub in given range..
Post by: BitcoinADAB on July 23, 2021, 07:13:23 PM
Hey guys i know to some this is "easy" but i merely want to get it correct. Can someone assist with this perhaps?
...
Start of range: 04000000005ef4a74721e864761ea977768e5f518bb6891be80000000000000000                                     
End of range: 0400000002fe7f16c00762b915532410f81fa9220d30e5f8a6c38751c7c58df5d4
...

If you need it for this...

Hey all,

Im just wondering if there is a list of all wallets which are Satoshi Nakamoto related? ... Perhaps from block 0 to 32688 ?....
Would help for a project im doing, ... havent been able to find any list so figured i would ask here ....

Thank you!
Kind Regards

it is impossible:

https://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2FMnBkXUo.jpg&t=627&c=re9oA9y8iKpp7g


Title: Re: Generation of priv/pub in given range..
Post by: WanderingPhilospher on July 23, 2021, 08:22:28 PM
I already have a program that would do this, but would need to know the specific range you wanted in order to code it in and show you a test run.

Just know, printing to a file, slows even GPUs down to a snails pace. I'll have to rerun it again to see what speeds it gets.


Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 24, 2021, 01:38:57 PM
Well to clarify,  i only need keys  pub/priv with-in the  start  and end points.

Now we know you need both private and public key, but you haven't clarify what kind of range you're talking about. Are you talking about range of private key or range of public key?

Just know, printing to a file, slows even GPUs down to a snails pace. I'll have to rerun it again to see what speeds it gets.

Just wondering, are you talking about writing priv/pub pair as soon as it's generated (random write) or big batch of priv/pub pair (sequential write)?


i had said  at the start i need the pub/priv key and wanted to look at correlations  with in that range... in hex ... lol..  dont know else i should  say it   :)
Also its not even close to the  entire key space ,   if its easier to   do it by even integers  then okay ... just would like to be able to generate something to base things on ... 


Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 24, 2021, 01:41:57 PM
I already have a program that would do this, but would need to know the specific range you wanted in order to code it in and show you a test run.

Just know, printing to a file, slows even GPUs down to a snails pace. I'll have to rerun it again to see what speeds it gets.

I need to record the data somehow..  saving it off is the only way... or should it be written to sql for instance?
the range  is noted in the 1st post.. that is the range i want to segment and pull.. in 200gb files..

whatever works, just again only need the start  / end range and covering pub/priv keys.  
no compression no address no  bal .. just the data in hex... do not need wif either.


Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 24, 2021, 01:43:54 PM
IF someone already has this stuff comprised ... i  dont mind tipping for it..   saves me the headache anyways.  ;D ;)


Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 24, 2021, 03:17:59 PM
Thanks but doesn't support  / work with long hex  apparently

Assuming you actually mean range of private key, here's a dumb Python script created by myself which generate compressed public key and using all CPU cores.

Code:
from fastecdsa import keys, curve
import multiprocessing

start = 0x1
end = 0xF

f = open('pubkey.txt', 'w')
def do(private):
    public = keys.get_public_key(int(private), curve.secp256k1)
    public_str = '02' + str(hex(public.x)).lstrip('0x') + '\n'
    f.write(public_str)
    f.flush()

p = multiprocessing.Pool(multiprocessing.cpu_count())
p.map(do, range(start, end))

I tried it with Python 3.8 and fastecdsa 2.1.5, here's the result

Code:
0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5
02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9
022f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4
02fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556
02a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7
02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13
022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01
02f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8
02499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4
02774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb
025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc
02acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe
02d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a


Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 25, 2021, 04:51:02 AM
I have to start  my dissertation so  this inst a complex thing to request; its in multiple utilities.
That being said ill pay 250. I still have to parse the data or if someone has it ill settle for that too.



Title: Re: Generation of priv/pub in given range..
Post by: odolvlobo on July 25, 2021, 08:32:33 AM
i had said  at the start i need the pub/priv key and wanted to look at correlations  with in that range... in hex ... lol..  dont know else i should  say it   :)
Also its not even close to the  entire key space ,   if its easier to   do it by even integers  then okay ... just would like to be able to generate something to base things on ...  

It appears that you are asking someone to find 2225 key pairs. Not only will it take longer than the age of the universe to generate those pairs, but storing that information in 200 gb files is not possible as 2225 is more than the number of atoms on the entire planet.

You prefix the numbers with in the range with 0x04, which indicates an uncompressed public key, but it looks like you are asking for a range of compressed public keys.

Actually, it is not even clear if the range applies to the public keys or the private keys. Either way, it doesn't matter because you are asking for 2225 key pairs.


Title: Re: Generation of priv/pub in given range..
Post by: PrimeNumber7 on July 25, 2021, 08:02:08 PM
Well to clarify,  i only need keys  pub/priv with-in the  start  and end points.

Now we know you need both private and public key, but you haven't clarify what kind of range you're talking about. Are you talking about range of private key or range of public key?

It is not possible to get the private keys for a range of public keys, unless the length of the range is 1, and you have calculated the public key from the private key.


OP, you need to have a shorter range of private keys that you want the associated public keys to. You may also want to choose a different dissertation topic.



Title: Re: Generation of priv/pub in given range..
Post by: MikeJ_NpC on July 26, 2021, 06:40:56 AM
Well to clarify,  i only need keys  pub/priv with-in the  start  and end points.

Now we know you need both private and public key, but you haven't clarify what kind of range you're talking about. Are you talking about range of private key or range of public key?

It is not possible to get the private keys for a range of public keys, unless the length of the range is 1, and you have calculated the public key from the private key.


OP, you need to have a shorter range of private keys that you want the associated public keys to. You may also want to choose a different dissertation topic.



okay well  how about a smaller more applicable range then.. its not written in stone... lol .


Title: Re: Generation of priv/pub in given range..
Post by: WanderingPhilospher on August 01, 2021, 12:37:55 AM
Well to clarify,  i only need keys  pub/priv with-in the  start  and end points.

Now we know you need both private and public key, but you haven't clarify what kind of range you're talking about. Are you talking about range of private key or range of public key?

Just know, printing to a file, slows even GPUs down to a snails pace. I'll have to rerun it again to see what speeds it gets.

Just wondering, are you talking about writing priv/pub pair as soon as it's generated (random write) or big batch of priv/pub pair (sequential write)?
Sequential priv/pub pair as soon as it's generated.

You could do random as well (in a given range) and then sort to put the pairs in order.


Title: Re: Generation of priv/pub in given range..
Post by: WanderingPhilospher on August 01, 2021, 02:21:39 PM
Quote
the range  is noted in the 1st post.. that is the range i want to segment and pull.. in 200gb files..
So start private key range = 4000000005ef4a74721e864761ea977768e5f518bb6891be80000000000000000
and end private key range = 400000002fe7f16c00762b915532410f81fa9220d30e5f8a6c38751c7c58df5d4

with output of this:

Code:
10A6B1DA05AD8A694BB1E91CE6939FE68EBEB8B781DD90B18FD72950DC56BC4D 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000001
9AD61EE1D0372B978548B0D663EBB1152CB9FEB7B0CA15DE8C865D6E007B7A82 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000002
26D7E3721C8A43DB954BD108C59C4A7B9C97F120EDAF8468982CBE379CBD8396 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000003
83518730D3ECE0CF6BF260E49CEA2697530A872934DECA87CA78A00F5971A5B0 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000004
D39C4099202641ED7954EECAC3E115499294169ABBC0FE6022516226F53CEEDC 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000005
917159F1B000E2C8AD3946E56C8C66D45E526BD298DFD537C0F94910C3849743 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000006
287EADE410310F05DA8564230A1978B1381A5BC06AEDEA33FF2AF96C939CD6A1 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000007
ABA32A43552F750779D294A41D075F68612455361C4E171F8B2795EC8F05EF79 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000008
17356318139CE5D4898A36B2EA71A900CE27256496EDA6398CB9BEC6830BAEA0 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000009
42A8A58AADFDA21BF4B0B31FC364371FAFC7158886EC977A012CF9255F421CDE 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000000A
CFD963DD94A2C482408790E8524FF70E932E198169D22457112342E1720E55A7 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000000B
7598DA94DC17F0468E657D6C34EC4432C1AA90CB813DC71B73EC578CEC31EDD3 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000000C
17C86B1BF5E4B5C4969D002A694332A2D33454F268F3E794571EB8A2432AD502 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000000D
4C2430FE46E2CA8297BD732160AA953B5A045C8E7A301AE493A47E703DB25CEC 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000000E
F7119759715DBF7FF6C5961F20FB3CD8401A7372832267989F867320F69AE2D4 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000000F
F84E56D456287173C987804180DC2C7420023361FAC57BE28766976D0483CFD3 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000010
0138F73AA143F28198481810702601C9F6CE9169550E0E98D0B1B31BCE1AC231 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000011
1592ED5AB0D60D2AAD1B87E53A4AD8673902B9C96D0F081083857AEC09E16D95 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000012
E847025678369C3128F4126B536BE17F8188C9214FCD048E512E79AE16438102 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000013
A34440A8C5A36F220040D47F94E3399586B27CC2C4F558B23CD750E9134D7BDC 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000014
5BA6553A1CDF349A959200B0FB5683FF0FB1D9A02EFCAA42A89A871CD224CB94 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000015
5D2FA1A3CE1A1D170CD8C86F7EE788CC04EAEDAA3E666F5DE93C614FBF2CE231 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000016
319BE85A414EDC1A7C50FD94F2770623C083C76E350F7C869370E5BD8380B9D3 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000017
9FB574F7AD656BA96B07411C03A4AB974B70E5FC43A268372D061FC3EDAC5C73 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000018
1FD24BD562B082C708A72D2415102999CCAF9F41EFA0CA2663A5C4313DE68895 4000000005EF4A74721E864761EA977768E5F518BB6891BE8000000000000019
D38D4BE9495C863904FF5B963866832EEB22D3C55858CDFC7FAFABAE67740EA4 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000001A
44A2D5346AA597DCCF20DADE6275829EC6404BA31F6B31BC0DF265A2DCCE3380 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000001B
8090AE1E5283CB909C775C4C2CBC0A4BF7D9522F3229728D7B53B64BD66A6D6F 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000001C
6F9BA7A2ACAA4216CE3990BEB3F9B940EF37AF704E4265009D188B462AC1F891 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000001D
E1A09B414041A6CD7A9BCFF06A18BE95564F462774176203EA56AE5809EBBE05 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000001E
A55D73D5841C4176CA322A8C7FEC10006DB7466384E11B8BFF89146940BE0F4F 4000000005EF4A74721E864761EA977768E5F518BB6891BE800000000000001F



Title: Re: Generation of priv/pub in given range..
Post by: PrimeNumber7 on August 01, 2021, 04:58:46 PM
Well to clarify,  i only need keys  pub/priv with-in the  start  and end points.

Now we know you need both private and public key, but you haven't clarify what kind of range you're talking about. Are you talking about range of private key or range of public key?

It is not possible to get the private keys for a range of public keys, unless the length of the range is 1, and you have calculated the public key from the private key.


OP, you need to have a shorter range of private keys that you want the associated public keys to. You may also want to choose a different dissertation topic.



okay well  how about a smaller more applicable range then.. its not written in stone... lol .
To put things in perspective for you:

There are approximately 2^160 possible bitcoin addresses. There are an estimated approximately 2^63 grains of sand on Earth.

The relationship between a private key and a public key is not linear, if you want an explanation regarding the relationship between private keys and public keys, you can watch the video at the bottom of this webpage (https://asecuritysite.com/encryption/bit_keys).

I can also assure you that a lot of resources has been devoted into trying to find a way to calculate a private key based on a public key, not only for ecdsa but other encryption methods as well.