Post
Topic
Board Bitcoin Discussion
Re: Bitcoin puzzle transaction ~32 BTC prize to who solves it
by
kTimesG
on 14/07/2024, 16:18:43 UTC
  • [Hops: 229969 h/s] [00:00:01]
  • total time: 1.47 sec
  • KANGAROO: Sun Jul 14 16:01:53 2024 PUZZLE SOLVED
  • Private key (hex) : 000000000000000000000000000000000000000000000000000000e9ae4933d6
  • Hops: 335150
  • Average time to solve: 1.47 sec

I can bet that you can make a .so file that works 20 times faster point_addition &  point_doubling than this. Grin

A single point addition according to your program requires:

m = (y1 - y2) / (x1 - x2)
x3 = m**2 - x1 - x2
y3 = m(x2 - x3) - y2





result_bytes = ice.point_addition(P_bytes, Q_bytes)

You have to ask the iceland how it works. Since the source is closed.

But this is irrelevant. I was pointing out the flaw in the high-level strategy:

while (condition)
   add_point(P, Q)

which is a serial one-by-one element addition. If you really aim for higher speed you need to rethink what you are doing, not pretend that some black-box "addPoints(a, b)" can do wonders for you. The black-box does whatever the formula to add 2 points does, and has no knowledge of your context (adding many points).

Here's a clue:

z = p[0].x - jp[0].x
for (i = 1 .. n) {
  d = p.x - jp.x
  z *= d
  q = z
}

t = inv(z)
for (i = n - 1 ... 0) {
   xd = i > 0 ? t * q[i-1] : t
   t *= q
  // finish addition..
}

This trades 3(N-1) multiplications with a single inversion
Depending on size of N you can get a speedup up to the factor of around cost(1 inversion) / cost(3 multiplications).