Difference between revisions of "Payments in Bitcoin"

Line 25: Line 25:
  
 
==Payment Channels==
 
==Payment Channels==
Any transaction that has both an nLocktime in the future or an nSequence that is less than 0xFFFFFFFF is in a [[Payment Channels|payment channel]].
+
Any transaction that has both an [[nLocktime]] in the future or an [[nSequence]] that is less than 0xFFFFFFFF is in a [[Payment Channels|payment channel]].
 
The transaction can be updated once, or many times between peers until either nSequence is finalised or nLocktime runs out and one of the parties transmits the transaction to the blockchain.
 
The transaction can be updated once, or many times between peers until either nSequence is finalised or nLocktime runs out and one of the parties transmits the transaction to the blockchain.
 
Payment channels are useful for streaming data, operating a sequence of events or operating with a live dataset in applications such as gaming and more.
 
Payment channels are useful for streaming data, operating a sequence of events or operating with a live dataset in applications such as gaming and more.

Revision as of 02:51, 4 February 2020

Payments are an important aspect of Bitcoin. Every transaction is a payment of some sort. Transactions are the only means through which information can be written onto the ledger.

Block discovery events are agreed upon through the acceptance of a Coinbase transaction as a valid payment. A block is simply the process of having a collection of payments set down, collated and agreed upon as valid.

There are many methods of requesting and making payments.

BIP-0270

BIP270 is a simplified version of the BIP70 Payment Protocol introduced in 2013. It is a protocol for communication between a payment host (usually either a merchant, a payment processor, or simply the recipient's wallet) and their customer (the sender of the funds). It enables:

  • Better experience
  • Simpler wallet infrastructure
  • Multiple outputs
  • Better security against man-in-the-middle attacks

BIP-270 is designed for wallets that use Simplified Payment Verification to achieve huge improvements at scale. Transactions can be exchanged partially or in iterations. This is far faster when done peer to peer between the payer and the payee, writing to the ledger only at the end to settle the transaction(s).

This BIP is an optimisation of BIP-0070. Changes include:

  • Moves all signature exchange and validation to the communication later (usually HTTPS)
  • Add multiple outputs
  • A library optimised for peer to peer transaction management

BSVAlias

BSVAlias is a set of protocols that lay out a structure for making and receiving payments using identity as the means to link sender and receiver.

Paymail is the first practical implementation of BSVAlias.

Payment Channels

Any transaction that has both an nLocktime in the future or an nSequence that is less than 0xFFFFFFFF is in a payment channel. The transaction can be updated once, or many times between peers until either nSequence is finalised or nLocktime runs out and one of the parties transmits the transaction to the blockchain. Payment channels are useful for streaming data, operating a sequence of events or operating with a live dataset in applications such as gaming and more. Payment channels have been unavailable since the early versions of Bitcoin and have been re-enabled since the Genesis upgrade, enabling many potential use cases.

Legacy Payment Protocols

These are payment protocols where the payer is asked to broadcast a transaction to the network (instead of the payee) so the payee can scan the network for relevant transactions rather than handling the transaction peer-to-peer as with SPV.

IP to IP payments

The original version of the Bitcoin node client had the facility to conduct IP-IP payments where a receiver could give a payer their IP address. The payer's client would reach out to the Payee's client and request a public key for the payment to be addressed to. This payment method was one of the first features removed by the Bitcoin Core team when they took over the project. New payment processes are in development which draw from this original idea, and will allow network peers to interact securely using cryptographically verified IP addresses.

BIP-0021

BIP-0021 has been one of the predominant means of making mobile payments in Bitcoin throughout it's history. Almost all QR codes based payment gateways used within Bitcoin are or are an extension of BIP0021. BIP0021 itself is an extension of RFC-3986, the RFC standard for URIs (Universal Resource Identifiers).

BIP-0070

BIP-0070 was a payment protocol for reaching out to receivers using an extension of BIP-0021 that added a URL. The URL directed the phone to reach out to a server and provide it the address at the front of the QR code. This server would instruct the device making the query which address to send money to.