Jedan mali primer koliko su veliki brojevi u pitanju sto se tice BTC i kriptovaluta..........
Jednostavna Python skripta koja generise oko 3.49 Miliona/s kljuceva po cpu core.
from fastecdsa import keys, curve
import secp256k1 as ice
while True:
dec = keys.gen_private_key(curve.P256)
HEX = "%064x" % dec
wifc = ice.btc_pvk_to_wif(HEX)
wifu = ice.btc_pvk_to_wif(HEX, False)
uaddr = ice.privatekey_to_address(0, False, dec)
caddr = ice.privatekey_to_address(0, True, dec)
print('Privatni kljuc (hex) : ', HEX)
print('Privatni kljuc (dec) : ', dec)
print('Privatni kljuc (wif) Kompresovan : ', wifc)
print('Privatni kljuc (wif) Dekompresovan : ', wifu)
print('Bitkoin adresa Kompresovana = ', caddr)
print('Bitkoin adresa Dekompresovana = ', uaddr)
a evo koliki su ti brojevi prakticno na X i Y krivi *(Gx i Gy)
// G x, y values taken from official secp256k1 document
CURVE.Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240n;
CURVE.Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424n;
class Point {
// Elliptic curve point multiplication with double-and-add algo.
multiplyDA(n: bigint) {
let p = Point.ZERO;
let d: Point = this;
while (n > 0n) {
if (n & 1n) p = p.add(d);
d = d.double();
n >>= 1n;
}
return p;
}
}
const G = new Point(CURVE.Gx, CURVE.Gy);
// Example
function getPublicKey(privKey: bigint) {
return G.multiplyDA(privKey);
}
// console.log(getPublicKey(140n));
Da se nabode slucajno broj 2256 je toliko ogroman (~1077 kombinacija) da sa tipicnom brzinom GPU-a od ~ 108-109 privatnih kljuceva u sekundi jedna BTC adresa brute force metodom na tipičnom računaru (oporavljanje privatnih ključeva za određenu BTC adresu petljom kroz sve mogucce BTC privatne Kljuceve) ce zahtevati vreme vecce nego što se veruje da postoji Univerzum.
Ili je verovatnoca ista da pronadjemo naseljenu planetu u drugoj galaksiji.
p.s.
iz mojih belezaka.......