How can I recognize a bitcoin transaction from a given person?

3

If I ask two different people to pay me a given amount of bitcoin, how can I tell which one has paid and which one has not?

If the amount is different then it's easy. For the same amount? Public key of the sender? If so, shall I trust my local copy of the blockchain? (I know the "balance" can be faked albeit nobody can steal or send bitcoins in your behalf)

What about big merchants which process large amount of transactions?

Of course I'm not asking how to find out the identity of the senders

6

It would be possible if you can generate multiple receiving address for each transaction. That can be done using your public and private keys.

Give each user a separate address of yours. Then you should be able to track.

oh I see... didn't think about it. I thought a "receiving address" was the public key but from what you say looks like it's not, isn't it? – Gianluca Ghettini – 2016-06-29T12:21:24.690

@GianlucaGhettini addresses are derived from the public key. You can generate as many addresses as you want from it. – jgm – 2016-06-29T12:22:35.280

1Actually, every public key has only corresponding address, but you can have any number of keys. – Murch – 2016-06-29T12:23:04.427

which in turn means generating many different private keys... (I guess) – Gianluca Ghettini – 2016-06-29T12:23:50.657

1you can use the same private key to generate multiple public keys and in turn multiple addresses. – jgm – 2016-06-29T12:26:36.490

1

Just use a new address for every payment request. You can have as many addresses as you want.

1

If you are implementing a web service/site you can have your backend create a new address for each session token/cookie. These addresses can be associated with users. One way to implement this would be to associate addresses or sessions with an unused address. Then transactions could be easily linked to sessions and accounts.

Ok thanks.. I thought bitcoin public/private key pairs were way less expendable. Instead it looks like a new pair has to be used for each transaction – Gianluca Ghettini – 2016-06-29T12:55:53.267