I might be wrong in some of the facts that I state here, so please correct me if necessary.
My understanding:
- Private key - 256 bits
- Public key - 256 bits
- Public address - the last 160 bits of a public key
- Every private key is mapped to a public key, and hence to a public address
The facts above imply that some private keys are mapped to the same public address, but they do not imply that some private keys are mapped to the same public key.
I would like to ask the following questions:
Do we have any other knowledge as to whether or not some private keys are mapped to the same public key, and hence, some public keys have no private key which is mapped to them?
If the answer to the above question is yes, then there's a possibility that some public addresses have no private key which is mapped to them. Do we know of any such addresses, or if they even exist?
My motivation for asking this, is that I have an ERC20 contract which sometimes (depending on the current state) mints an additional amount of tokens which will later be distributed among (i.e., transferred to) some users.
Now, I need some address to hold these tokens, but I wish to avoid the case where someone has the private key of this address (as slim a chance as it may be).
At present, I am generating this address as follows:
address public constant MINTING_ACCOUNT = address(keccak256("MINTING_ACCOUNT"));
Ideally, I would like to replace this with a constant address which has no private key.
Thank you!