103

How Bitcoin Mining Works Bitcoin transactions are mined (processed) by Miners, and Miners want to benefit from their work. By mining transactions with higher fees, they make more money. Some miners can decide to mine all transactions no matter the fee but they still must compete with every other financially motivated miner. Why is it taking so long for my ...


30

Yes, there is a way to save a borked transmission. A restart of the wallet and some patience typically fixes the issue. How to stop/reverse a Bitcoin transaction without confirmations: Run bitcoind and with -zapwallettxes. This makes the wallet "forget" any unconfirmed transactions, thus enabling you to reuse their inputs. Create a new transaction to make ...


22

In the case that your fee is too low: Now that child-pays-for-parent has been merged, you(or any of the recipients of your unconfirmed transaction) could spend the Bitcoin received and the fee associated with that second transaction will help prioritize the confirmation of the original transaction. This does require more fine grained control of which ...


17

Here is a guide for as many wallets as I could figure out how to perform an RBF with. This is adapted from my bitcointalk post: https://bitcointalk.org/index.php?topic=1802212.0 What is a "Stuck" transaction? How are they caused? A "stuck" transaction is a transaction which has remained unconfirmed for period of time which either the receiver or the sender ...


15

If a merchant accepts 0-confirmation transactions, he has to accept that the transaction can be reversed. So he only should do that if he trusts you for more than the amount you transferred to him. You won't get any bragging rights for doing that, since Bitcoin never promised to be secure without sufficient confirmations. That trust may come from different ...


13

A transaction claims some outputs from previous transactions and then creates new outputs whose summed value is equal to (or less than, in the case of fees) the sum of the claimed outputs values. For a transaction to be valid it must be the only one that claims the outputs (no double spend) and the transaction that created the claimed outputs must be valid. ...


12

Two issues with Bitcoin's design Scalability of everyone checks everything Bitcoin is a gossip network: P2P nodes connect mostly randomly to each other and pass-on new information to each other as they receive it. That way, information floods through the network quickly: each step further increases the nodes that were informed exponentially (until most are)...


11

The other answers cover most useful information already, I'd like to add one point though: The fee estimation of most wallets has significantly improved since blocks have gotten full. If you're running an outdated version, it's likely that it is doing a bad job of guessing the fee. That may cause you to either overpay or your transactions not getting ...


10

When you create a transaction, your Bitcoin wallet broadcasts it to a few full nodes on the Bitcoin peer-to-peer network. Those full nodes quickly relay it to other full nodes, and it eventually ends up at the full nodes run by the sites you linked to. That's how those sites know the transaction exists. The full nodes also relay the transaction to Bitcoin ...


9

Yes. Unlike other transactions you don't need to wait for the confirmations. From the code which selects which coins to use to fund a transaction in src/wallet.cpp: bool CWallet::SelectCoins(int64 nTargetValue, [...]) { vector<COutput> vCoins; AvailableCoins(vCoins); return (SelectCoinsMinConf(nTargetValue, 1, 6, vCoins, setCoinsRet, ...


8

For small amounts, like a cup of coffee, the double-spending risk is going to be negligible. If it's a person I know, I wouldn't mind receiving and accepting as valid a transaction with zero confirmations. For shops that will start accepting bitcoin, a stronger security measure would be for them to have multiple bitcoin clients installed in multiple ...


7

If you are using Electrum, there is no equivalent to -zapwallettxes. The closest thing you can do is to restore your wallet from a seed. This will wipe your client of any unconfirmed transactions. Then, you can resend the transaction with a higher fee.


7

Bitcoin's security rests on the assumption that the majority of the hashing power follows the protocol. If instead miners/pools break protocol for a quick buck by switching to a conflicting transaction which is clearly a double-spend attempt, this assumption no longer fully holds. One can only hope that the mining pool (or any block issuing agent) will ...


6

There are no such arbitrators currently, as far as I know. There have been plans discussed to create trusted sources of Bitcoins. The idea would be that I'd hold my Bitcoins with an e-wallet service and ask them to transfer my coins to you. The e-wallet service would confirm (outside the Bitcoin network) that it was going to send you so many coins. In one ...


6

Replace-by-fee (RBF) transactions all have a sequence number that is below MAX - 1. If the payment a merchant receives comes from a transaction that has such a sequence number, the merchant can either wait for the transaction to be included in a block, or ignore the payment altogether. Ignoring the payment is fraught with other complications, however, ...


5

You may ask viabtc.com to prioritize. https://pool.viabtc.com/tools/txaccelerator/


5

The original design assumes a common behavior of processing the incoming transaction on FIFO basis. That means the first transaction received by a miner wins and all conflicting transactions received after it will be ignored (no matter if the first one is already confirmed or not). While this standard behavior is beneficial for the Network as a whole, some "...


4

No, it does not lend you bitcoins but rather it spends the very same TX outputs that you have sent there. Thus, if your transaction turns out to be surpassed by another one (double spend), then also the transaction spending its output will be considered invalid. It's like cutting a branch on a tree: all sub-branches will go down with the root one.


4

This transaction (e8c5...) will never confirm because its inputs have already been spent by transaction 93cc4fe50e6069dccb827f56636bb4cd20f9865dd4d7e3b7946bbbca97576e80, which currently has 9 confirmations. There isn't any inherent need to cancel transaction e8c5; the network is never going to consider it valid. You might want to remove it from your wallet ...


4

The simplest protection is to not consider a payment to have been made to you until it receives some number of confirmations. The number can depend on the value of the payment. For small payments, one is probably sufficient. For large payments, some have decided to wait for as many as six confirmations.


4

Mining is the timestamp in Bitcoin, it allows for a decentralized system to achieve synchronized ordering of transactions with high probability. If a system for doing decentralized time sync existed there would be no need for mining blocks at all, you'd simply timestamp transactions as they arrived and call it a day. No system for this exists, hence we use ...


3

If using the wallet notify option in bitcoin.conf, you can get a notification any time a transaction occurs on the network that matches a bitcoin address in the wallet. To use this, of course, you'll have to keep Bitcoin-QT or bitcoind running at all times. https://en.bitcoin.it/wiki/Running_Bitcoin Once you have the transaction id, you'll have to look up ...


3

It has become trivial to double-spend; do not accept zero-confirmation transactions!* Accepting zero-confirmation transactions today is not safe: Especially, with the full blocks of late, it is almost trivial to double-spend. Only accepting the first seen transaction for the same inputs and discarding double-spending transactions had been a policy that ...


3

If you send BTC, your transaction will be broadcasted to the bitcoin P2P network. It is very unlikely that the transaction fails, if the receiver was notified, because then probably many miners already have the transaction and it is confirmed with the next mined block (that's the reason for the 10 minutes, because each 10 minutes a new block is mined). The ...


3

It would be recommended to connect directly to most of the major pools. This way one doesn't need to rely on any other nodes to relay the informations. However, you should note that the conflicting transaction could already be pre-mined, rendering such precautions useless.


3

Blockchain technology, at least without accepting central party that controls access to the chain, inherently has slow blocks, or strong centralization incentives. The reason is that blocks need to propagate much faster than the block interval time. If they don't, miners who are further away from the majority of the hash power are put at a disadvantage. To ...


2

A transaction simply link an older output transaction and reasign it. You can send bitcoin you just reveice because you can link to the other transaction immediately. Then the transactions can be mined in the same block. The standard bitoin client doesn't let you spend unconfirmed bitcoin because it could let some create an attack.


2

Use an exchange that allows "user to user" transfers, for instance if both parties use MTGOX then they can instantly transfer bitcoins from one to the other.


2

Instawallet Green Address is a way to accept bitcoins with zero confirmations and zero risk of double spend attacks. Of course you still have the risk that Intsawallet is compromised in some way. Also, for a lot of application (e.g. coffee shop), you can just accept with 0 confirmations with minimal/almost zero risk. The cost of ripping you off would be ...


2

There is no single answer to this question. It involves a risk / convenience tradeoff and depends heavily on the circumstances, i.e. the risks of trusting a payment before some number of actual transaction confirmations are seen in the blockchain, vs the risk of lost opportunities by making things slow or difficult for your customers. Generally speaking, ...


Only top voted, non community-wiki answers of a minimum length are eligible