~

How can an offline software create valid private key/public key pairs without communicating with the blockchain? The software must on its own know a certain private key would match a certain public key. Doesnt it mean there is a calculable relationship between private key and public key?

private key is simply a 256 bit number is a huge range that is selected randomly. it is from 0x1 to 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140.

when you generate a new address in your wallet (online or offline) what happens is that your wallet software randomly chooses a number in this range and that is your private key then uses some math to get the public key and then your address from that number. and this "math" is a one way street. meaning you get the public key from private key but you can not do the opposite. same with address. and that is the relationship.

example:

1. private key (number)

11253563012059685825953619222107823549092147699031672238385790369351542642469

your wallet, for convenience shows this to you in a special format called Base58

5J1F7GHadZG3sCCKHCwg8Jvys9xUbFsjLnGec4H125Ny1V9nR6V

2. public key which is a coordinate on the Elliptic curve (y^2 = x^3 + ax + b)

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

3. address which is SHA256 + RIPMED160

010966776006953D5567439E5E39F86A0D273BEE

again for convenience the same Base58 encoding is used here too:

16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

*ref:* https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses