- [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.

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[i ].x - jp[i ].x
z *= d
q[i ] = z
}
t = inv(z)
for (i = n - 1 ... 0) {
xd = i > 0 ? t * q[i-1] : t
t *= q[i ]
// 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).
You are going off topic and pretending to be too smart without need. Just like Digaran... This is my answer @WanderingPhilospher what would happen if we switch same script from GMP to iceland. And I don't intend to talk with with you at all. You just raise the pressure without any script ever being shown..