For clarification, I am talking about 100 trillion private keys NOT addresses.
That's good, because addresses don't actually exist at the protocol level. Addresses are an abstraction that wallets use to make it easier for we humans to discuss the transfer of control over value.
At the protocol level there are just scripts. One script is used to encumber a transaction output with a requirement that must be met in order to spend that output. The other script is used in the input to a transaction to satisfy the requirements of the output being spent.
When using a bitcoin address that starts with a '1' the wallet translates that to a script that encumbers the output with a requirement to provide a digital signature generated with a private key that is associated with a given public key hash. Other address types will have other scripts. Some output scripts don't even require a private key at all (although those are typically not a secure way to transfer control over the associated value).