Search content
Sort by

Showing 10 of 10 results by damiankopacz87
Post
Topic
Board Development & Technical Discussion
Re: Solving ECDLP with Kangaroos: Part 1 + 2 + RCKangaroo
by
damiankopacz87
on 20/06/2025, 21:14:12 UTC
Hello,

May I ask someone, who already has tames96.dat - tames100.dat, for sharing? If needed I will create tames by myself, but why to invent circle again if its already done? Smiley
I won't take #135, promise Wink I need Thema for another purpose.

BR
Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 13/03/2025, 17:00:11 UTC

you could convert binary keys to hex easily and then run keyhunt

Hmmm, I am not sure if Keyhunt can do that. Just to be clear. I want to check .txt file of eg. 1 000 000 hypothetic 256bit private keys (not consecutive, more like random) against list of addreses. Keyhunt can't do that I think.

Best
Regards
Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 13/03/2025, 16:17:05 UTC
Hello,

Is there any program available for bruteforce (as BitCrack) which can be feeded with txt file with list of selected private keys (binary)?

Best Raegards
Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 30/01/2025, 13:16:50 UTC
Hi,

Lately I was wondering if it is possible to modify JLPKangaroo_OW_OT to write DP's on SSD M.2 NVMe instead of RAM? Do You have some experience or theoretical knowledge about such an issue?

I know that RAM is something different than SSD, but concerning that main task in Kangaroo is to caclucate points, find DP's and search for colision, is there a chance to store DP's on NVMe SSD without losing performance?

Best Regards
Damian
Post
Topic
Board Development & Technical Discussion
Re: Solving ECDLP with Kangaroos: Part 1 + 2 + RCKangaroo
by
damiankopacz87
on 09/01/2025, 13:55:19 UTC
Hi,

Did You guys check newest release od RCKangaroo? Does it work on eg. 100bit space?

@RetiredCoder, do You plan any other minipuzzles (or maxi) in the future? Let us know "when", if You plan something, please Smiley

BR
Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 17/12/2024, 10:56:16 UTC
Hi,

I am exploring word of btc and I found interesting public key, I suppose. Do You maybe know what is phenomenon of those Y walues which looks like below?

d06f193b6ca4c19b1a6c58ef4d4049a34eb23889e08921cceea6e7b529fda6da
646616b7879bf9f074008e9221ae1b556c6066d9ae8b94896ce9cfc0991b87bb

d06f193b6ca4c19b1a6c58ef4d4049a34eb23889e08921cceea6e7b529fda6da
9b99e9487864060f8bff716dde51e4aa939f992651746b769316303e66e47474

BR Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 08/11/2024, 19:16:55 UTC
Hello everyone, maybe someone will be interested:
if this puzzle is a deterministic wallet,

Hi,

As far as I have studied bitcoin, it's highly impossible for this addresses to came from one deterministic wallet. Please, correct me if I am wrong. Creating deterministic wallet You have no influence on final shape of priv keys so Yo can not made them,1bit, 2bit, 3bit etc.

BR
Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 05/11/2024, 07:18:34 UTC

P.s. Here is a script that changes the public key and range in the working file.
Code:
import argparse
from math import log2
import os

HEADW = 0xFA6A8001  # work file
HEADERSIZE=156

def bytes_to_num(byte_data):   
    return int.from_bytes(byte_data, byteorder='little')
   

def checkhead(wf):
    head = bytes_to_num(wf.read(4))
    if head==HEADW:
        return head
    else:
        print('HEADER ERROR %08x %08x' % (head, HEADW))
        return False

def workinfo(workfile):   
    wf = open(workfile, 'rb')
    head = checkhead(wf)
    if not head:
        print('Invalid WorkFile Header')
        return False
    version = bytes_to_num(bytes(wf.read(4)))
    dp1 = bytes_to_num(bytes(wf.read(4)))
    RangeStart = bytes_to_num(bytes(wf.read(32)))
    RangeEnd = bytes_to_num(bytes(wf.read(32)))
    x = bytes_to_num(bytes(wf.read(32)))
    y = bytes_to_num(bytes(wf.read(32)))
    count = bytes_to_num(bytes(wf.read(8)))
    time = bytes_to_num(bytes(wf.read(8)))
    print(
        f'Header     : {head:08x}'
        f'\nVersion    : {version:d}'
        f'\nDP Bits    : {dp1}'
        f'\nStart      : {RangeStart:032x}'
        f'\nStop       : {RangeEnd:032x}'
        f'\nPubKey X   : {x:032x}'
        f'\nPubKey Y   : {y:032x}'
        f'\nCount      : 2^{log2(count):.3f}'       
        )     
    wf.close()
    return True
       
def getuncompressedpub(compressed_key):   
    p=2**256 - 2**32 - 977
    y_parity = int(compressed_key[:2],16) - 2
    if y_parity>1:     
      x = int(compressed_key[2:66], 16)
      y = int(compressed_key[66:130], 16)
      return (x,y)     
    x = int(compressed_key[2:], 16)
    a = (pow(x, 3, p) + 7) % p
    y = pow(a, (p+1)//4, p)   
    if y % 2 != y_parity:
        y = -y % p       
    return (x,y)
   
def MakeChanges(workfile, NewPubCompressed, NewRB, NewRE):
    if os.path.exists(f'{workfile}'):
        print('Old header:')
        if workinfo(workfile):       
            #make some changes
            (x,y)= getuncompressedpub(NewPubCompressed)   
            with open(workfile, 'r+b') as wf:           
                try:
                    wf.seek(12)
                    wf.write(NewRB.to_bytes(32, byteorder='little'))
                    wf.write(NewRE.to_bytes(32, byteorder='little'))
                    wf.write(x.to_bytes(32, byteorder='little'))
                    wf.write(y.to_bytes(32, byteorder='little')) 
                except Exception as e:
                    print(f'File error {e}')       
            print('New header:')
            workinfo(workfile)       
    else:
        print(f'File {workfile} is not exist')
        return


       
if __name__ == '__main__':   
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', dest='workfile', type=str, required=True, help='WorkFile path')
    parser.add_argument('-pub', dest='pub', required=True, type=str, help='Compressed public key')
    parser.add_argument('-rb', dest='rb', required=True, type=str, help='Begin range')
    parser.add_argument('-re', dest='re', required=True, type=str, help='End range')
    args = parser.parse_args()

    if args.workfile:
        print(f'Workfile {args.workfile}')
        MakeChanges(args.workfile, args.pub, int(args.rb,16), int(args.re,16))

   

Hi,
Thank You for posting link and description. Have You ever gentelmans thought about creating 110bit of DPs instead of 80bit like in recent challange? Is it even possible? How big shuld be work file for -m 3 in that case? It would take aprox 15 Years with 10k CUDA core card. Crazy idea, but thereafter ~33.000.000 possible ranges for #135 to check. Economicaly, there is no point in such a move, but I think that there are some romantic in here Wink In theory, how long does it take to check new public key in precompiled 110bit work file? @Etar, how long does it take You to find new public key with 80bit precompiled workfile?

BR
Damian
Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
damiankopacz87
on 03/11/2024, 16:41:32 UTC
This is a jlp kangaroo, with precalculated tame kangaroos.
You can make them yourself. By running a kangaroo in the required range with the -m 3 parameter in a loop with a false public key. In this way you will accumulate a lot of DPs.
After that, you will only need wild kangaroos.
This requires modification(s) to JLPs script.

Hi, this sounds interesting to me. Are You able to provide link where that modifications are explained? Or is there maybe a repo with modified software? Thanks for help.

BR Damian
Post
Topic
Board Off-topic
Re: Unraveling BTC Puzzle 130 - Join Our Collaborative Effort
by
damiankopacz87
on 13/06/2024, 08:43:50 UTC
Hi,

I am not very familiar with coding, programing etc. but isn't it impossible to solve 130bit puzzle with program that is described as "This program is limited to a 125bit interval search."? What does this sentence refere to?

Another quote from REDME of Kangaroo:

"#130, 129bits private key [2129,2130-1], 1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua 13.0BTC

Expected time: several years on 256 Tesla V100 (Not possible with this program without modification)"

Not possible with this program without modification - does it refere to "125bit interval" or "computing power"?

From semantic point of wiev, it is not possible to solve btc puzzle 130 with THIS program without modification. If Yes, can someone explain that why?

BR Damian