Buying from Friend
Alice decides to buy 0.001 BTC from Joe
Alice and Joe check the exchange rates and come to a consensus
Alice gives Joe the appropriate amount in cash
Alice opens her digital wallet and clicks on Receive
An QR code is display (contains Alice’s bitcoin address)
Joe selects Send on this wallet application and scans Alice’s QR code
This sets Alice as recipient for Joe. Joe enters the amount to be sent (0.001 BTC)
The amount to be sent may be shown in a different units (mBTC, sats, etc.)
The wallet app may ask Joe to add an label to the transaction
Joe’s wallet will also prompt for transaction fee (Higher fee faster confirmation)
Joe checks all the details and clicks on Send
Joe’s wallet constructs a transaction that assigns 0.001 BTC to Alice’s address
The funds are sources from Joe’s wallet and is signed using his Private Key
This transaction will quickly propagate through the bitcoin network
The blockchain network sees Alice’s address for the first time
Alice’s wallet will show an transaction of 0.001 BTC in “Unconfirmed” state
Once transaction is incorporated into the blockchain its will become “Confirmed”
This is similar to the Clearing functionality in traditional transactions
Buying from Online Store
Alice wants to buy Bob’s podcast. Bob accepts payments in Bitcoins
Bob’s website creates an QR code invoice
A invoice is different from a Bitcoin address
Invoices are encoded URI that wallet apps can use to pre-fill fields
Invoice contains destination address, payment amount, label and description
Alice scans the QR code. Verifies the information that is auto-populated
Alice authorizes the payment
After a few seconds Bob will see the transaction on his register
Extended Public Key on Web Store
Gabriel is running a online store that accepts Bitcoin payments
Initially he used a single Bitcoin address for all payments on the store
But as the store grew he started receiving a a huge influx of orders
Bitcoin does not store the transaction amount and spender address
Gabriel could not link the transactions and the order easily
Setups the public key derivation feature of his HD wallet
The extended public key is uploaded on the website
A new public key is generated for each other. The address also acts as Invoice Id
When Gabriel wants to spend the funds he generates the corresponding private key in the HD wallet
This way no private keys are stored online