Next scheduled rescrape ... never
Version 2
Last scraped
Scraped on 05/05/2025, 08:15:31 UTC
Here a direct proof on puzzle 17:

Code:
def get_filter_candidate(x: int, c: int) -> int:
    h2  = hash160_pubkey(x)
    val = int.from_bytes(h2, 'big')
    return val >> (160 - c)

def prefilter_scan(start: int, end: int, target: str, c: int):
    t1  = get_filter_target(target, c)
    ops = 0
    for x in range(start, end+1):
        if get_filter_candidate(x, c) != t1:
            continue
        ops += 1
        if derive_address(x) == target:
            return x, ops
    return None, ops

You have an error in your script. You do H160 and continue before you increment ops. So the heavy op is not accounted always.

Also - if the key isn't found, the method simply fails.

I also believe that the actual HEAVY operation that actually ever matters is having a public key of the private key - because that is the actual step where you go from the scalar domain into the discrete log injective-only domain.
Version 1
Scraped on 28/04/2025, 08:20:34 UTC
Here a direct proof on puzzle 17:

Code:
def get_filter_candidate(x: int, c: int) -> int:
    h2  = hash160_pubkey(x)
    val = int.from_bytes(h2, 'big')
    return val >> (160 - c)

def prefilter_scan(start: int, end: int, target: str, c: int):
    t1  = get_filter_target(target, c)
    ops = 0
    for x in range(start, end+1):
        if get_filter_candidate(x, c) != t1:
            continue
        ops += 1
        if derive_address(x) == target:
            return x, ops
    return None, ops
[/quote]


You have an error in your script. You do H160 and continue before you increment ops. So the heavy op is not accounted always.

Also - if the key isn't found, the method simply fails.

I also believe that the actual HEAVY operation that actually ever matters is having a public key of the private key - because that is the actual step where you go from the scalar domain into the discrete log injective-only domain.
Original archived Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
Scraped on 28/04/2025, 08:15:22 UTC
Here a direct proof on puzzle 17:

Code:
def get_filter_candidate(x: int, c: int) -> int:
    h2  = hash160_pubkey(x)
    val = int.from_bytes(h2, 'big')
    return val >> (160 - c)

def prefilter_scan(start: int, end: int, target: str, c: int):
    t1  = get_filter_target(target, c)
    ops = 0
    for x in range(start, end+1):
        if get_filter_candidate(x, c) != t1:
            continue
        ops += 1
        if derive_address(x) == target:
            return x, ops
    return None, ops
[/quote]

You have an error in your script. You do H160 and continue before you increment ops. So the heavy op is not accounted always.

Also - if the key isn't found, the method simply fails.

I also believe that the actual HEAVY operation that actually ever matters is having a public key of the private key - because that is the actual step where you go from the scalar domain into the discrete log injective-only domain.