Bitcoin Forum
June 19, 2024, 04:58:55 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: How to easily assert I made a particular transaction?  (Read 633 times)
Nollins (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
October 05, 2012, 09:28:26 PM
 #1

  I have read the faq and googled a bit but was not able to figure this out.  What I am trying to determine is how do I prove to someone via email or their e-commerce website that it was me that sent btc from wallet xyz?

  Is this only possible if the recipient generated a one-time address for me to send to that was presented to only me?

  Or from the merchant perspective, if I advertise wallet number 1234 and a customer sends me an email with an order for a widget and a claim that they sent me payment from wallet 5678, how do I know that the person sending me email sent the payment from 5678 and not someone monitoring the distributed ledger for payments to me?

DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
October 05, 2012, 09:34:57 PM
 #2

Wallet vs Address.  One thing in your post which may be part of the problem is the use of terms like "wallet #".  The network has no concepts of wallets.  There are simply addresses.  A transaction moves funds from one address to another.  In the case of paying for goods and services a user moves funds from an address he/she controls to an address the merchant controls.  A wallets may have more than one address (likely has hundreds) but the network has no knowledge or concept of wallets.  It just verifies that a tx is valid (sends funds from an valid address, to a valid address, the inputs have proper qty of coins, and the tx is properly signed by the owner).

So you as a merchant you should probably just assign a unique address to each order/user.  You can pretty trivially generate thousands or even hundreds of thousands.  Then when the address is paid the order is paid.  It is the simplest method, essentially foolproof, provides universal support, and trying to do anything else is just trying to force a round peg into a square hole. 

Still as an alternative you could have users sign a message using the private key of the address they sent funds FROM. So if a user sent coins from address 1123456 you could ask them to sign a message with the private key for address 1123456.  Only the user with access to that private key could accomplish that.  Still that isn't a very good solution as not all wallets support that. Even among wallets which do support it, users may not understand how to do it properly, and you add the extra steps of needing to request a signed message, the user sign a message, the user sends you the signed message, and you confirm the signed message.  A lot of extra work that when combined with the fact that not all wallets support it will lead to lots of confusion and problems.  
Nollins (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
October 05, 2012, 10:01:39 PM
 #3


DeathAndTaxes,

 Thank you very much for the explanation.  It sounds like best practices for shopping carts that support btc should include the dynamic generation of unique customer payment adresses.  I suppose adding an arbitrary data field to each transaction, where a customer could reference an order number or assert identification is not currently part of the protocol?



DeathAndTaxes
Donator
Legendary
*
Offline Offline

Activity: 1218
Merit: 1079


Gerald Davis


View Profile
October 05, 2012, 10:06:10 PM
 #4

Correct.  The protocol doesn't support a "datafield" in transactions.  There are ways to hack around that but it will suffer from the same issue as digitally signing with private keys, lack of universal support.  Bitcoin is already a tiny market, putting up barriers to commerce is going to be counter productive.  If you generate a new address per order and record it in your order database and then monitor open orders for funds it will be universally compatible with all clients.   I would also point out it is how bitcoin users "expect" transactions to work so any administrative/support costs are going to be much lower.

User checks out.
Site provides user a unique one time use address (behind the scenes the assigned address is stored in the "orders" table of the database).
User pays.
Site has a monitoring daemon running which monitors (using bitcoind or some other client/app) all open orders.
Site updates order/confirmation page to reflect payment status.


Nollins (OP)
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
October 05, 2012, 10:28:50 PM
 #5

 Thanks again!  So in a shopping cart scenario I can credit a customer.  It sounds like if I want to launch an advertising campaign with a QR code I would need to have have the QR code resolve to a web site and not a bitcoin address directly.
Stephen Gornick
Legendary
*
Offline Offline

Activity: 2506
Merit: 1010


View Profile
October 06, 2012, 01:03:46 AM
 #6

how do I prove to someone via email or their e-commerce website that it was me that sent btc from wallet xyz?

Related:

We need a payment protocol with non-repudiation built in.

See https://gist.github.com/2217885 for a multisig version (the singlesig version is simpler, but the merchant <-> customer communication will be the same).


Unichange.me

            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █
            █


Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!