so those large Xs wont show when we calculate a point that is 5th by point addition or scalar multiplication under the curve rules , but will they show when we calculate without applying mod p?
With mod p (Bitcoin's actual usage):
All coordinates wrap around p
NO large x-coordinates appear
Example (real secp256k1 point):
5G = (0x5ecbe4..., 0x769cf5...)
Without mod p (raw curve over ℝ):
Coordinates grow exponentially
Every 5th point (5G,10G,...) has massive x-values
Example pattern:
5G.x = 21
10G.x = 514
15G.x = 26867
20G.x = 863317
You can verify this in Python :
from ecdsa import SECP256k1
from ecdsa.ellipticcurve import Point
import matplotlib.pyplot as plt
import numpy as np
# Secp256k1 parameters
p = SECP256k1.curve.p()
G = SECP256k1.generator # Base point
# Over FINITE FIELD (actual Bitcoin)
def finite_scalar_mul(k):
"""ECC operation with mod p"""
point = k * G
return point.x()
def simulated_real_x(k):
"""real numbers"""
return 21 * (10 ** (k//5))
# Test for multiples of 5
print("Comparison for multiples of 5G:")
for k in range(5, 26, 5):
x_simulated = simulated_real_x(k)
x_finite = finite_scalar_mul(k)
print(f"\n{k}G:")
print(f"Simulated real nums (no mod p): x ≈ {x_simulated:.1e}")
print(f"Finite field (mod p): x = {x_finite}")
k_values = list(range(5, 101, 5))
x_simulated = [simulated_real_x(k) for k in k_values]
plt.figure(figsize=(10, 5))
plt.plot(k_values, x_simulated, 'ro-')
plt.yscale('log')
plt.title("Simulated Growth Pattern of x-coordinates for 5G, 10G,... (no mod p)")
plt.xlabel("Multiples of G (k)")
plt.ylabel("log(simulated x-coordinate)")
plt.grid(True)
plt.show()
Comparison for multiples of 5G:
5G:
Real nums (no mod p): x = 21505829891763648114329055987619236494102133314575206970830385799158076338148
Finite field (mod p): x = 21505829891763648114329055987619236494102133314575206970830385799158076338148
10G:
Real nums (no mod p): x = 72488970228380509287422715226575535698893157273063074627791787432852706183111
Finite field (mod p): x = 72488970228380509287422715226575535698893157273063074627791787432852706183111
15G:
Real nums (no mod p): x = 97505755694356382817881959832717013755620551362654128955029190924747025549326
Finite field (mod p): x = 97505755694356382817881959832717013755620551362654128955029190924747025549326
20G:
Real nums (no mod p): x = 34773495056115281091786765947597603724784643419904767525769502836017890139287
Finite field (mod p): x = 34773495056115281091786765947597603724784643419904767525769502836017890139287
25G:
Real nums (no mod p): x = 66165162229742397718677620062386824252848999675912518712054484685772795754260
Finite field (mod p): x = 66165162229742397718677620062386824252848999675912518712054484685772795754260 , ?