@arulbero thanks for the explanation but it seems like you made a small mistake here:
k*G, (k+4)*G, (k+8)*G, (k+12)*G where k is the first possible key to check (k = f461....dca10)
In
giant steps you pre-compute
0G, 1G, 2G, ..., (m-1)G. So in this case it seems you should be calculating kG, (k+1)G, (k+2)G, (k+3)G
Then for the baby step you calculate
s= m * -G
loop: r=r+s
Giant means giant, baby baby.
You have 2 possibilities:
1)
Baby-steps: 0, 1*G, 2*G, ..., (m-1)*G // Giant-steps: P, P - m*G, P - 2*m*G, ...., P - (m-1)*(m)*G
or
2)
Baby-steps: P, P - 1*G, P - 2*G, ...., P - (m-1)*G // Giant-steps: 0, m*G, 2*m*G, ...., (m-1)*m*G
In either cases you can find a key between
1 (P = 1G) and
m^2 - 1 (P - (m-1)*G = (m-1)*m*G --> P = (m^2 - 1)*G)
You have two lists of m elements.
If you need a search space from k to k + m^2 - 1 (size of search = n = m^2),
in the case 1) add k*G in the baby-steps list: k*G, (k+1)*G, (k+2)*G,...., (k+m-1)*G or sub k*G from P in the giant-steps list
in the case 2) add k*G in the giant-steps list: k*G, (k+m)*G, (k+2*m)*G,...., (k+(m-1)*m)*G or sub k*G from P in the baby-steps list
baby: step of 1G
giant: step of mG (where m is sqrt(n))