Why should I pay in bitcoin as opposed to traditional payment methods?

This is an interesting question, and certainly one to which the answer will evolve before Bitcoin adoption could hit the mainstream.

On an abstract level, it is trivial to answer: In order for you to want to pay in Bitcoin, it must give you an advantage compared to other payment methods, or it must be the exclusive path to some good or service.

There are a number of concrete reasons, although maybe none of them will apply to you personally.

Tipping and Donating

Like sending money in the mail, it is possible to offer monetary support without providing your identity or address. Additionally, with Bitcoin the receiving party doesn't have to provide its personal information.
The low transaction fees make it economically feasible to send smaller amounts than by mail. This is especially true if the receiving party is located in another country. It's easy to send just a few cents to another internet user to commend him for an insightful contribution.

Buying digital goods

Buying access to a newspaper article, a movie, or an mp3-download currently requires you to create an account with the merchant and, often, to create a balance first. Bitcoin could allow such purchases without exchange of personal information for a global market.
Especially for small purchases, it would be likely that merchants would offer a discount, as receiving bitcoin payments is significantly cheaper, easier to implement, and less hassle, since they can't be charged back. On the other hand, any sufficient reputable service would not be interested in scamming the customers for cents, potentially alienating its userbase.
For example, I could easily see Bitcoin become a much used payment method for computer game vendors such as Steam or GOG, as it already has become for HumbleBundle.

Online Gambling, Pornography, and Drugs

While we might not like it, Bitcoin as a payment method has advantages for services of questionable morality and legality, so there are some that operate solely on Bitcoin or at least offer it as an alternative payment method.
It might be preferable to users to pay by Bitcoin, than to have a pornsite's charge on the credit card, while pornsites have a lot of trouble with chargebacks due to buyer's remorse and for other reasons.

Bitcoin is a fast and cheap way to send money to a private person abroad

Definitely faster than an international wire, or even TransferWise.
Likely cheaper than Western Union or PayPal (depending on exchange courses and amounts).

You don't need a bank account

For a lot of people it is significantly easier to gain access to Bitcoin (just internet access), than to get a credit card or even a bank account. Currently, not having access to banking is a major hurdle in order to participate in online markets.

Travelling

Far down the road, it might be easier to carry just Bitcoin while traveling than to exchange to the local currency for each country. Already, one can pay taxis, hotel rooms, air fare, and food delivery in Bitcoin.


SharedCoin vs JoinMarket, Pros and Cons of each

I'll do my best. SharedCoin is no longer around. It used to have a centralized server which collected inputs and outputs from users then merged them into one big coinjoin transaction. They allowed you to do multiple "rounds" where the outputs from one round would roll over into the next and be coinjoined again, and they charged a small fee. A few years ago it was demonstrated that this obfuscation could be solved using what was called "coinjoin sudoku" which allowed an observer to connect certain inputs to outputs with certainty, although the computational costs of doing so were very high. This was a significant weakness, not to mention that the SharedCoins servers knew a lot about the participants.

JoinMarket is open source software for people to make their own coinjoins. It is decentralized because it uses an IRC channel to announce orders and organize transactions amongst the participants themselves. It uses a system of makers and takers. Makers offer coins to be used in coinjoins and collect a small fee, takers specify the outgoing transaction size and pay a small fee. Unlike SharedCoin, each coinjoin transaction has a handful of identically sized outputs. If I'm a taker and I want to send 1.2345 bitcoins, my transaction will have a bunch of other outputs of exactly 1.2345 bitcoins going to the makers who participated in the transaction. As far as I know, an outside observer examining this coinjoin transaction alone would have no way of connecting the 1.2345 outputs to any of the participants or input addresses.

SharedCoin's advantages would have been simplicity and ease of use (you used to be able to do it straight out of a blockchain.info wallet), plus I believe it had many more users at its peak which increases the anonymity set. JoinMarket requires a decent bit of time and technical expertise to get set up properly, but its advantages are that it gives you stronger privacy, is decentralized, and allows you to earn a modest return on your idle coins. I'm a big fan of JoinMarket and I recommend you check it out, if you're already running a bitcoin node it's not too much more work to get JM set up.


Why doesn't RBF include restrictions on the outputs?

Why didn't the RBF specification include additional constraints on the replacing transaction, such as that it would need to contain the same outputs (with at least the original output amounts) as the transaction being replaced?

Because it is not as effective to do this. What you describe is known as First Seen Safe RBF (FSS-RBF). However this imposes additional restrictions on transactions that make fee bumping difficult, if not impossible to do.

FSS-RBF notably requires spending an additional input. However if no input is available (e.g. user has one input, or is sweeping their wallet), then the transaction cannot be replaced. Or users may wish to retain their privacy by avoiding to spend certain inputs together and so if they have no inputs they are willing to add to the transaction, then it cannot be replaced.

Furthermore, this increases the size of a transaction with each bump thereby taking up more and more block space for little utility. The cost to continuously bump a transaction's fee also will grow non-linearly. In addition to the new feerate you are targeting, you also have to pay for the input you've just added at that feerate.

It also means that continuously bumping the transaction fee is annoying to do, and eventually, impossible (due to lack of inputs). If you lowball the fee, then decide to bump it later, and that is still too low, to bump it again requires another input. And so on and so forth. Bumping the fee like this reduces your future ability to FSS-RBF transactions too as you will be consolidating inputs.

Conversely, Full RBF does not require extra inputs, so as long as you have a change output, you can keep decrementing that to get the new fee. This means that the fee will only grow as the fee rate grows, and it does not require more block space. Since it does not require more inputs, you can fee bump transactions when you have no additional inputs available.

  Couldn't this have made it safer to assume that zero-confirmation RBF transactions would eventually settle on-chain?

No, in fact, it would have made it worse.

To assume that a 0-confirmation transaction is safe means that you are willing to spend its outputs. In that spending transaction, you will be explicitly referencing the txid of the transaction whose output(s) are being spent. Replacing a transaction (in both RBF and FSS-RBF) means creating a new transaction that spends the same inputs, i.e. a double spend. This new transaction will have a different txid because it, at the very least, changes the amounts of the outputs and thus results in different data being hashed. So if the bumped transaction becomes confirmed, then any transaction the spent the outputs of the lower fee transaction instantly becomes invalid. This is not safe at all.

The fact that people will think that unconfirmed transactions are safe to accept if FSS-RBF were used (as you did) is far more dangerous than Full RBF. With Full RBF, people know to just wait for confirmations. With FSS-RBF, people will think that unconfirmed transactions are safe to accept, spent its outputs, and then find out that their transaction is invalidated when a bumped version of the original unconfirmed transaction is mined instead. It is a false sense of security.

In general, unconfirmed transactions are not safe to accept, regardless of RBF, FSS-RBF, or no RBF at all. Either way, an unconfirmed transaction could be replaced with a conflicting one and result in any transaction that spent from the original unconfirmed transaction to become invalid. Because the dangers are all the same regardless of RBF and which type of RBF is used, Full RBF where any outputs can be replaced is better as it is more space and fee efficient.

There is some discussion of the motivation for Full RBF over FSS-RBF in BIP 125 itself.


Intelligent people ask intelligent questions.

Indeed it is true that if a particular setup can profit $2 per day there is seemingly no sensible reason to lease it out for $1 a day when you could have the $2 a day yourself - it would make more economic sense to lease it out for $3 a day.

From another perspective, someone who wants to mine can forgo the initial outlay for mining equipment and hire mining power for a fee. It is possibly not true, also considering the cost of running the machine, that leasing mining power may be more cost effective than purchasing and housing mining equipment yourself - most high-power mining equipment is also quite loud. It is still to consider that the equipment you lease may have lower costs for power and cooling than you could provide.


What is the most cost-effective way to distribute a Bitcoin into 1000 different addresses?

The best/cheaper way to split a single address into multiple is using batching transactions:

Batching explained in StackOverflow

This blog post from David Harding shows what are the saving possibilities when using batching to send your transfers and how it works:

Batching savings

Samourai Wallet supports batching if you don't want to use api's.


Bitcoin optional fees create transaction ordering problems?

Fundamentally, this is why nobody should be accepting zero confirmations, until the payment has confirmations it’s not really a payment made. This is generally referred to as double spending, as clearly only a single payment can confirm in your scenario. If stores want to accept payments in an unsafe fashion, that’s their risk to bear and insure for.

Technology like Lightning can be used to make instantly confirming transactions safely if this sort of retail experience is desirable, though this comes with its own hurdles.


Initially, they appear the same, only considering that there is a hash included in the block.

A Merkle Tree is more efficient to prove a transaction is included in a block since otherwise, it is necessary to have and hash each transaction to prove a transaction is included using a message digest, so a full node can do this, but an SPV client (and a pruned node looking outside the blocks it has kept) cannot.

There is some more information on how this works in these answers: Merkle Root and Merkle Proofs


ScriptCode field in P2SH-P2WPKH BIP-143 Test Vector

The one that you are referring to is sighashing. There is no good reason to use 1976a91479091972186c449eb1ded22b78e40d009bdf008988ac (dup hash160 [79091972186c449eb1ded22b78e40d009bdf0089] equalverify checksig as the scriptCode in Segwit but to limit the number of changes SegWit makes to the original sighashing. In designing SegWit, only intended changes were made. The hash structure remains the same, and contains all the same data. The sighash flags still have the same effect. The only thing that changes in BIP-143 is that some data is organized under precomputed hashes, and the input amounts go into it.


Bitcoin animation from The Good Wife S03E13

Here is a link (YouTube) to the clip with the animation in it. I don't know if the actual animation on its own is available anywhere.


Error polling getblocktemplate {"code":-4,"message":"Failed to parse wallet address"}

So the fix was that the address was cut in the config.json file due nano not displaying all the line.

So if you run into this problem check if the address is correct :)


Is there a list of altcoin communities that has the most active developers?

Coin Gecko (https://www.coingecko.com/en) has all sorts of metrics on what coins have active communities/developers. I'm not sure how exactly they measure each of these things, but it may be what you're looking for.


What was the vulnerability in v0.3.4 that allowed an attacker to steal coins?

Explanation by Mike Hearn:
https://bitcointalk.org/index.php?topic=152470.msg1620493#msg1620493

  When Bitcoin was first released, it contained two completely fatal
  bugs that made the entire system worthless. Fortunately, they were
  found and fixed before Bitcoin  actually had any serious value.

  The first bug was that scripts were concatenated before being run
  instead of just using a shared stack. This meant that anyone could
  write a scriptSig that always evaluated to true and claim anyone elses
  coins. Fixed here in v0.3.2:

  https://github.com/bitcoin/bitcoin/commit/73aa262647ff9948eaf95e83236ec323347e95d0

...

  Needless to say, if somebody when this version was first released
  actually wrote such a scriptSig and stole some coins, that would have
  caused a chain split between old and new versions. Nobody did because,
  why bother? I'm not even sure Mt Gox existed back then, iirc that came
  some months later. Many script opcodes were disabled around this time
  (which is also a hard-forking change).


First, if ECDSA were broken, a lot of other things would be broken, like ssh, https and a bunch of other things, including banking websites.

Second, if nobody reused addresses, then yes, bitcoin would be protected by SHA256 and RIPEMD160. There is currently no known way to get a preimage of a hash used by either of those functions so your bitcoin would be safe. Again, this assumes nobody reuses addresses.

As far as how much protection this gives, it's hard to say because it depends on the exploit used to break ECDSA.


Transaction to "dynamic" wallet doesn't arrive?

It appears the transaction with that id actually exists, you can verify it because Bitcoin transactions are public https://www.blockchain.com/btc/tx/1968cc2b31b396c3ef0677c69ed68a588f6bdec1ed9e60fcb8500fddda46b068. Indeed since it has ~900 confirmations, at an average block time of 10 minutes (Bitcoin protocol rules), it was first confirmed about a week ago.

The only explanations I can think of is related to the service and their application. If they do not choose to acknowledge the transaction or that it was sent to an address you own, that is between you and them.

  from what I've heard from other users, this is a common problem caused by some delay in the blockchain (?) system

To answer this question, when you first submit a transaction to the Bitcoin network, the nodes will validate it, and if it passes, it will propagate throughout the nodes on the network. It is added to each node's mempool, which is where the transactions wait until a miner decides to add them to their block, and attempt to mine that block for a reward. When a miners decide to add your transaction to the next block is entirely up to them, but is generally dependent on the fee you decide to give them. The wallet software you used lets you select this fee, so the higher the fee the faster it will be mined (generally).

Another thing to understand is the application that is waiting for your transaction can decide how many blocks need to be mined after your transaction was submitted. This is known as confirmations. The reason for waiting more than 1 block is that if there is a conflict and 2 miners mine a block at the same time (unlikely), there is a reorganization of the blockchain, and your once confirmed transaction may become unconfirmed. So, it is a way to establish how permanent that transaction must be to be considered final. 6 is a typical minimum confirmation in Bitcoin, but can be higher or lower depending on the service or application. ~900 confirmations is much higher than usual and there should be no problem with confirmations with the service you used.


How do I uniquely identify a transaction (to protect against malleability)?

This is an interesting problem, one that has been studied and discuss within the bitcoin community quite a bit.

The basic way to do this is to keep track of a normalized TXID alongside of the actual TXID used in the protocol. Then to calculate the normalized ID of a transaction, you serialize it:

With the inputs' txids replaced by their normalized transaction
Removing the scriptSigs (as those are the most malleable parts of a transaction)

The only caveat is that that this doesn't need to be done for coinbase transactions, as the scriptSig is not malleable (since it's already in a block) and there are no real txids in the inputs. You also don't want to remove the scriptSig from the coinbase transaction because it contains the height of the block (per BIP34), which guarantees the TXID (and normalized TXID) will be unique. Hence, for coinbase transactions, the normalized transaction id is the same as the transaction id (nTXID == TXID).

Note: this is a lot of work to keep track of normalized IDs for every transaction. It has not been implemented in Bitcoin Core yet, and implementing your own version of this may be time consuming.

If you can guarantee the set of outputs in all transactions within your system will be unique (i.e. you are using new receiving addresses and new change addresses for every transaction), then you might be able to use a hash of the set of outputs as a unique identifier. This would be more specific to your use case, as a temporary fix while Bitcoin Core doesn't yet have support for normalized transaction ids.

Some further resources:

https://github.com/bitcoin/bitcoin/pull/3656
What is the normalized transaction hash of a transaction?
When computing a normalized transaction id, when do I finalize the sha256 hash?


Do I need to pay taxes if I sit on (do not use) bitcoins?

No. Assuming you are not a miner or receiving bitcoin in exchange for services, there are no taxes that you need to pay on the bitcoins until you sell or transfer them. When you sell or transfer them, you need to pay taxes on the difference between the value of the bitcoins and your tax basis in the bitcoins.

The value of the bitcoins would be what you sold them for if you sold them. If you traded them or did not get full value for them the value for tax purposes is their fair market value.

Your basis in the bitcoins is what you paid for them. If you mined them, it's probably their value at the time you acquired them assuming you treated them as income. Otherwise, it gets complicated. (In particular, you should either treat your basis as zero or consult a tax professional if you sell or otherwise dispose of bitcoins you received as a gift!)

If you held the bitcoins for more than a year, this is a long term capital gain. If you acquire and sell bitcoins on a regular basis, the rules get tricky for which sells you have to match to which buys.

I am not a lawyer. Please check with your own tax professional if you need advice you can rely on.


Why won't my bitcoin miner detect any of my hardware?

According to the release notes, current versions of bfgminer only support FPGA and ASIC mining hardware out of the box. It  sounds like you don't have any such devices.

CPU and GPU mining are not enabled by default, since they are not economically viable. See the files README.CPU and README.GPU for information about how to enable them if you really want to.


bcoin daemon killed over and over again [BCOIN]

At this time, bcoin requires nodejs version 10.0 or greater.


How do I exchange the issuer of my BTC in Ripple?

It will happen automatically when you pay someone who only accepts Bitcoins from the other gateway. There are several different ways you could form transactions to do this, but I think the client doesn't currently give you an easy way to get to any of them.

In the Ripple system internals, people can create offers whose sides are the same currency but different issuers. However, you can also achieve the same effect without having to go through an offer (and likely at a lower cost) by using a circular payment path with no exchanges.

Again, you can't do this with the client currently, but here's how it works on the server side:

You have 1 WeExchange BTC. You want 1 Bitstamp BTC.
You form a payment path like this:
You/BTC -> WeEx/BTC -> ??? -> Bitstamp/BTC -> You/BTC
You hand this payment path to the server, telling it you want to get 1 Bitcoin out.
The server finds the cheapest way to do it. Most likely, it will find one or more people who have extended trust to WeEx/BTC and hold Bitstamp/BTC. You can use any of those people. (For safety, you can pick three to make sure your transaction goes through.)
With the three payment paths the server found you, you form a "Payment" transaction. Assuming all three of those people don't change their trust or balance settings before your transaction applies, the exchange is complete. Someone in the middle has your WeEx/BTC and you have their Bitstamp/BTC.

Note that if there's an exchange offer that gives you better than 1-to-1, the pathfinding scheme will use that instead. So you could wind up with more bitcoins out than in. (Though it's not likely.)

This actually will not allow you to get 1 Bitcoin out because you would have to pay two transfer fees to transfer the Bitstamp and WeEx IOUs. The total of the transfer fees is something like .7%, so you'd only get .993 Bitcoins out.

Instead, if you're not in a hurry, you could drop your credit limit to WeExchange to zero. This signals that you want to get rid of your WeExchange IOUs. Anyone picking a payment path like above in the other direction will try to accommodate you. Then they'd pay the transfer fees. (The current pathfinding algorithm doesn't always do this, but the new one scheduled to replace it shortly will be better at this.)


The answer is hidden in this forum post here.

  "You have the same problem that is common in P2Pool threads, your miner is (relatively) slow compared to the size of the pool, as such you are not solving the required 1 P2Pool share every 24 hours (not the work your miner is submitting). You will get paid when your miner solves a share with a difficulty greater than the current P2Pool Share difficulty (see the website), this is currently about 1.320658 (or 87.4k in CGMiner speak)."

The PPLNS payment system is not to be considered as the best for slow hash rate miners. To get payouts, you need to:

solve at least one hash every 24h hours which is higher than the p2pool share difficulty = gets at least one payout each day.
solve at least one hash within the window of the current block with a difficulty higher than the p2pool share difficulty = gets at least one payout each block.
check if your p2pool server avoids dust payments, meaning that very small payments are hold back until a certain threshold is reached, e.g. > 0.01 ŁTC.

I'm mining at around 100kH/s (867.9 block difficulty) and only recieving payments once every four/five blocks. This is a bit discouraging but in total I'm getting higher payouts than mining in normal pools.

By the way, the minimum recommended hashrate for p2pool-miners is 590 kHash/s.

Multiply by 65536 to convert to P2P difficulty to CGminer difficulty.


Why are transactions grouped into blocks? (how are transactions put into blocks)

Lets say we have just put a block on the blockchain and there are no blocks at the moment that miners mine. Now miners start forming new blocks and try to guess new hash values. The miners are putting transactions into their formed block (with a hash guess)? Which of the unconfirmed transactions do they put into the block (all unconfirmed or a subset)?

Miners will select transactions to include based upon transaction fees. In Bitcoin Core, this transaction selection is done as follows: Group up transactions into packages, a package consists of a transaction and its unconfirmed ancestors and descendants (some packages may just be 1 transaction, others more). Then calculate the total fee rate paid by a package and sort the packages by fee rate. Select transactions by going down the list of packages and choosing each package until the weight of all of the transactions (as defined by BIP 141) cannot allow any more transactions to be included (i.e. add packages until the weight exceeds the limit, then remove what was just added and add the next one, etc. until no transactions left to add).

There will often be more unconfirmed transactions than can fit in a block, so miners will only select a subset of unconfirmed transactions.

  Is putting a transaction into a block a way of stating that transaction has been validated? How does this guarantee the transaction miner put in the block is valid?

It is not. A block could contain invalid transactions and the block (and those invalid transactions) would be invalid. A full node must check that a block is valid. They do this by checking the block header is valid, the coinbase transaction is valid, and all transactions in the block are valid. Just because a transaction is found in a block does not mean that it is necessarily valid, and if it is not, the block is invalid and should be rejected.


How to move coins into the website of poloniex, for example convert my bitcoins in bitshares

Firstly, you should have Bitcoin to do this!(sorry)

Now, you would need a deposit address at poloniex. Copy that, and send bitcoin (from wherever you have it - in some other exchange, I suppose) to this address.

This takes time, anywhere between 2-20 mins(may vary depending upon congestion in blockchain). Once you receive bitcoin at poloniex, you should be able to buy bitshares using those bitcoins.


The official Bitcoin full node software always had the mining feature built in, and will probably always have. If you have the line gen=1 in your .conf file, then you will start confirming transactions when you open the wallet. Take a look at https://en.bitcoin.it/wiki/Running_Bitcoin


How to send bitcoins from one address to another without wallet

If you have your private key, you are able to import it into a wallet and send the coins from there. The trustless way to do this would be to start your very own Bitcoin and user the Import Private Key RPC call. You then would be able to use the Send To Address RPC call to send the coins.

Depending on your necessary security level, it may be easier to just use an online wallet service like BTC.com. They have instructions available for importing private keys as well: https://help.btc.com/hc/en-us/articles/360002934354-How-do-I-import-my-private-key-into-the-wallet-


What public data sets are available that could used for correlation in bitcoin analytics?

Historic trade data is available from the Bitcoin Charts Market API
Bitcointalk.org forum stats, impression stats for ads, e.g. new member sign-ups per day
Google Trends data for bitcoin. (Can be exported as a CSV file with links at bottom of the page)
Blockexplorer.com stats query page
Blockchain.info API
The Bitcoinstatus.RowIT page has graphs on the number of bitcoin hosts connected, client version and data on hosts/country. Don't see an API but some data is in tables so probably easy enough to scrape.
Chris Moore's answer to this question provides a lot of useful stats.
Of course the blockchain itself.


Bitcoin: block reward for a tiny transaction

The reward is for a block, and a typical block generally contains around 2,500 separate transactions in it.

Typical transaction fees seem to be around $8 (USD), so transaction fees in a block are typically around $20,000.

The miner who successfully submits a block receives:

   $162,500 (12.5 BTC * $13,000) : reward
 +  $20,000 (2,500 tx * $8 ea.)  : tx fees
--------------------------------
   $182,500 (approximately)


Does Bitcoin Core still use "Bitcoin seed" in addition to a seed like stated in BIP 32?

After much searching, I found the bit of code that uses "Bitcoin seed". So yes, Bitcoin Core uses the string "Bitcoin seed" in tandem with a random seed.

https://github.com/bitcoin/bitcoin/blob/d0f81a96d9c158a9226dc946bdd61d48c4d42959/src/key.cpp#L302


Energy cost of bitcoin vs physical currency?

The most extensive research on this topic is:"An Order-of-Magnitude Estimate of the Relative Sustainability of the Bitcoin Network" by Hass McCook
among others, it cover specific topic as the economic and environmental cost of cash printing & coin minting, banking system, gold mining & recycling etc ...
The results of the research are summarized in the tables below.

take in mind that these data are from 2014, so Bitcoin cost of production and consumption are actually much higher.

These are the estimation about miners efficiency at the time, when the network hashrate was 130 Phash/s and the most efficient miner was Antminer S3 with 0.766 w/Ghash:

I redid the calculations using current hashrate of 186 Ehash/s, an efficiency of miners ranging from 0.1 w/Gh of Antminer S9 to S19 0.03 w/Gh and keeping all other assumptions the same, these are the results:

About 70/80 times more consumption than was in 2014 (depending on which energy efficiency you pick as network average). Certainly the costs of the other activities (banking, mining, minting) have also increased, but not in this size.
Although the research in question is detailed, the author was honest in saying that the data is not an accurate representation of reality, but an estimate of its order of magnitude.


Can you specify Antminer overclock settings in bfgminer config file?

Try:

"scan" : [
        "antminer:clock=x0781"
]


What article started the Bitcoin bubble?

Press inquiries to me really picked up after the Forbes article came out in the print edition of that magazine. I think that "mainstream press" mention started the publicity avalanche that fueled the bubble, although I'm a pattern-matching monkey like everybody else so take my opinion with a big grain of salt.


Blockchain.info's receive API has been all wonky for the past month or two. The forwarding used to be almost instant, but lately it has been taking up to 24 hours for the payment to be forwarded.

Remember that THEY pay the transaction/mining fee for you, so they pay as little as possible which can cause a delay in transactions.

In my opinion you should try another forwarding service that is not free. I suggest you try Blockcypher's payment forwarding service. It's very similar to Blockchain's however the mining/transaction fee will be taken from the funds received and you will need to register and create a token.


Minimum software to broadcast a Bitcoin transaction on a resource constrained environment

The least resource demanding method I can think of is to use cURL.
The code snippet below will broadcast using https://blockchain.info/pushtx

curl -X POST -d tx='your raw transaction in hex format' https://blockchain.info/pushtx

Example usage:

curl -X POST -d tx=0100000001492d631b86db96ab8b2d50bea0bec53ebde8eda603bdae6441289de454f89cd8010000006b483045022100e21e298f1ce99ade77502955b2bfa1acf1ada40a30e7b3a8ed86ae08bf9b7566022001a9b43a24abdb1b90eac434619f0a49ca2c8ec4152576ac8df0b63de43e2e68012102ed8725a530d72af0cbbaa96b1936042952ae73b78221edc596ea53c9a1c7a2b2ffffffff0210270000000000001976a914a0e6ca5444e4d8b7c80f70237f332320387f18c788ac250e0000000000001976a914ff4b370002146338c95827273de755e0eb8574cb88ac00000000 https://blockchain.info/pushtx

Otherwise I would recommend using a SPV wallet like Electrum, it is both lightweight and not resource-demanding at all.

If you are looking for the highest level of granularity/control, Bitcoins the hard way: Using the raw Bitcoin protocol might interest you.


How does estimated coins calculated on Coinotron?

Regarding estimated coins per day, with any coin, the golden rule is:

coins per day = kh/s * coins per block / network difficulty / 50

So for example, if you were mining Dogecoin with 800 kh/s, you would have

coins per day = 800 * 250000 / 1000 / 50 = 4000

This 50 is not really a 50 exactly, but rather 2^32 / (3600 * 24 * 1000), where 2^32 is the expected number of hashes required to find a block at difficulty 1 (i.e. the probability of finding a block is 2^-32), 3600 is the number of seconds per hour, 24 is the number of hours per day, and 1000 is the the number of hashes in a kilohash. It works out to be only about 0.5% off, close enough for an estimate.

Estimated current round rewards is an estimate of how many coins you would get, based on your submitted shares, if a block were found right now. As for confirmed and unconfirmed rewards, mined coins require a lot of confirmations before they can be spent. The reason is that if the block gets orphaned, the mined coins disappear. So before the threshold of confirmations (different for each coin) is met, they are considered unconfirmed and cannot yet be paid out. Confirmed rewards, on the other hand, can be safely paid out.


Are there any transaction-related artifacts left in the database?

Some (one?) of the *.log files are connected to your wallet.dat address database, knowing your bitcoin addresses implies knowing your transactions.

One (debug.log) is free format debugging text and may contain all kinds of identifying info.


Some wallets have a function called something live "View on block explorer". For Electrum, you can see it if you right-click a transaction.

This will take you to a website on which you find your transaction ID. I drew a red ellipse around it so you know which number it is.

If your wallet doesn't have that functionality or you don't find it, simply copy the address you used to send the money and paste it into the search field on https://blockchain.info. You'll get to a page showing you all transactions that address has been involved in.

Green arrows mean that that address gained money, red arrows mean that that address lost money in the transaction.


What happen if there's no one mining bitcoin?


multisig without knowing one of the keys

Indeed, if you have a public key and then the hash of another public key, you can build a script that behaves similarly than a 1-of-2 multisig. Something like this would do the trick:

OP_DUP OP_TOALTSTACK <pubKey1> OP_CHECKSIG
OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY
OP_CHECKSIGVERIFY OP_ENDIF
<0x01>

The output script will be unlocked if either a signature validated with pubKey1 is provided or a valid signature and a public key that match pubKeyHash2 are provided.

In the first case, the user with pubKey1 spends with a valid signature:

ScriptSig: <signature1>

Evaluation:

<signature1> OP_DUP OP_TOALTSTACK <pubKey1> OP_CHECKSIG OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature1> <signature1> OP_TOALTSTACK <pubKey1> OP_CHECKSIG OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature1> <pubKey1> OP_CHECKSIG OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
0x01 OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<0x01>

Note that since the first OP_CHECKSIG returns True, the opcodes inside the conditional are not executed, and the script terminates succesfully  (leaving 0x01 in the stack).

In the second case, the user with pubKeyHash2 spends with a valid signature and revealing the public key matching the hash:

ScriptSig: <signature2> <pubKey2>

Evaluation:

<signature2> <pubKey2> OP_DUP OP_TOALTSTACK <pubKey1> OP_CHECKSIG OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> <pubKey2> <pubKey2> OP_TOALTSTACK <pubKey1> OP_CHECKSIG OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> <pubKey2> <pubKey1> OP_CHECKSIG OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> 0x00 OP_NOTIF OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> OP_FROMALTSTACK OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> <pubKey2> OP_DUP OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> <pubKey2> <pubKey2> OP_HASH <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> <pubKey2> <pubKeyHash2> <pubKeyHash2> OP_EQUALVERIFY OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<signature2> <pubKey2> OP_CHECKSIGVERIFY OP_ENDIF <0x01>
<0x01>

In this case, the first OP_CHECKSIG fails, so the code inside the conditional is executed. This code validates the signature and public key with pubKeyHash2, and makes the script fail if any of the validations fail. If both validations are passed, then the script pushes 0x01 to the stack, terminating successfully.

PD: Please don't use this script in the mainnet without first having checked that it works as expected ;)


help problem to synchronize bitcoin wallet core

Install the latest version of Bitcoin Core, Bitcoin Core 0.17.0. The wallet format has not changed significantly and the software always maintains compatibility with older wallets, so your wallet should work in 0.17.0. You will still need to wait as there will be a database upgrade that takes place and it will need to finish syncing the blockchain.

0.17.0 can be installed on top of your existing installation. It will not delete any of your data. Your wallet does not need to be moved. However, as always, you should always have a backup of your wallet on hand.

If you cannot wait for that, then you can export the private keys for your addresses and import them into another wallet such as Electrum. You can do this by using the dumpprivkey <address> command in the Debug Console. <address> is the address that you want the private key for.


Try using a bitcoin accelerator:
https://www.viabtc.com/tools/txaccelerator/


Is the denumerability of private keys a threat?

There's around 2^256 possible private keys. However, there's only 2^160 valid wallet addresses. To store each key-address pair we need 160+256 bits = 25 bytes, so the searchable record will take several million mass of solar system if stored on 4TiB harddrives.

But first we need to create this database. If we equip each PC on Earth (around 2 billion) with 4 GPUs (each generating around 20Mkey/s), we will need much more time than the age of the universe. By the way, we most likely will also hit the hard drive write performance limit if we write each pair to disk.


Within the Bitcoin ecosystem where are wallet addresses stored/reserved?

When you create an address, it is stored in your wallet. It is not recorded on the blockchain until someone executes a transaction that includes the address.

It is not necessary to reserve your address since it is statistically impossible that someone else will generate the same address (with some caveats, see below). Here is what happens when you create a new address in your wallet:

Your private key (for spending funds) is derived from a random number between 1 and 115792089237316195423570985008687907852837564279074904382605163141518161494337. Assuming the number was truly random, you don't need to worry about someone guessing this number since the number of possibilities is so ridiculously large.
The matching public key (for receiving funds) is derived from the private key in a way that is irreversible, and is used to generate the address where you can receive payments. There are 2^160 possible addresses (1461501637330902918203684832716283019655932542976).
The private and public keys are saved together as a "pair" in your wallet.


Bitcoin to ether lost on transaction via Bity.com

we've double checked. you have received the corresponding ETH here: https://etherscan.io/tx/0x7828e72fb692f51a42a626b08b99b0719ad25deaa0fdedd7c1f26d183e482ca8


The transaction has 2 inputs, and 5 outputs. I see you are on testnet3.
I looked at the S-Values:

 21: OP_LENGTH_0x21:      this is SIG S (33 Bytes)
     00A65F3F8BD0E3F8:C56567B28A37D3C6:0FF383FB10F416D2:5261C8453D278F8B:81
checking S-value is less than N/2, S-value is zero padded - ok

 20: OP_LENGTH_0x20:      this is SIG S (32 Bytes)
     1B1C9E34E1D32DE4:25480B4AFCDF5FEF:4957011511E6C859:658C6AD70ACA23F3
 checking S-value is less than N/2, yup... - ok

I don't see an issue here... What have you used unsigned tx?

UPDATE 2018-Mar-10:

Quickly decoding first part of the unsigned transaction:

 01000000
 02
  375C75E7E1108C74511D53E5A47DE40CD7A587BF219279E81DCF8C5817C6B7B0
  00000000
  19
  76A9147C48AAB4405B50CA5394FCF21BC08BB58BC91E0588AC
  FFFFFFFF
  B5F2776EC7BD0FE2DE8E197CEEF493317CE3A65CF41EB1D7AB653D5DB4239EE5
  01000000
  00
  FFFFFFFF

 05
  8096980000000000
  19
  76A914DB9C91ED4690C016140E84D4D2EC72CB4225E59A88AC
  8096980000000000
  19
  76A914D51779439CE3441647F5F4813177BE8EB0FEBD3D88AC
  8096980000000000
  19
  76A914FC5DA273AEA2B3B1346FA9648E4020E7697CEB3B88AC
  8096980000000000
  19
  76A91428EF437E0E48B8ED4D65A10CA47A129149DE6B4788AC
  00093D0000000000
  19
  76A914476F97A1BDD330FAE9BBDE17DE407FBFD409170488AC
00000000

I can see the scriptsig is only filled for one part of the tx. So ok for the first round. Then tx part two is somehow messed up:

 01000000
 02
  375C75E7E1108C74511D53E5A47DE40CD7A587BF219279E81DCF8C5817C6B7B0
  00000000
  00
  B0B7C617  <-- I think this should be FFFFFFFF (Sequence number)
  00000000375C75E7E1108C74511D53E5A47DE40CD7A587BF219279E81DCF8C58...

I thing the sequence number is missing, and then should somehow continue like this:

  Sequence number FFFFFFFF
  OutPoint hash   B5F2776EC7BD0FE2DE8E197CEEF493317CE3A65CF41EB1D7AB653D5DB4239EE5
  OutPoint index  hex=01000000, reversed=00000001, decimal=1
  Script Length   hex=19
  Script Sig      76A9147C48AAB4405B50CA5394FCF21BC08BB58BC91E0588AC
  Sequence        FFFFFFFF

and then the TX_OUT structure...


Permission denied when attempting to backup wallet using backupwallet

You need to check ownership and permissions for the files and folders involved. Your current user needs permissions to read /home/bitcoin/.bitcoin/new_wallet/wallet.dat and permissions to write to the current directory for backup.dat
Try ls -ld /home/bitcoin/.bitcoin/new_wallet/wallet.dat . and pwd and id. The permissions will be shown as three triplets for owner, group and others shown as rwxr-x--- 1 bitcoin pi which means the owner (user "bitcoin") has read, write and execute permissions (rwx), members of the group ("pi") have only read and execute permission (r-x) and other people have no permissions at all (---). The id command will tell you which groups your current use is a member of. The pwd will tell you the full name of the current directory where you are trying to write your backup.dat

To further diagnose the problem try
see if the target already exists and can't be overwritten
ls -l backup.dat
mv backup.dat backup.dat.old
echo test > backup.dat

see if the source file is readable - look for messages no read permission
file /home/bitcoin/.bitcoin/new_wallet/wallet.dat

try to copy it directly
cp /home/bitcoin/.bitcoin/new_wallet/wallet.dat backup.dat


How can I exactly use both the rpc API of Bitcoin and the rpc API of Bitcoin cash on the same server or machine?

if you don't have Bitcoin-core and bitcoin cash already installed alongside, follow my answer in here to install Bitcoin-cash alongside Bitcoin-core.

It's so important creating a different username than bitcoin username because bitcoin and bitcoin cash use the same directory.

Now login to Bitcoin username and edit this file ~/.bitcoin/bitcoin.conf

so it becomes like that:

rpcuser=myusername
rpcpassword=myRPCpa$$word
daemon=1
server=1
rpcport=5345

in here we are using different RPC port to bitcoin core. to know more about bitcoin config see this website.

Now, do the same thing to Bitcoin-cash, and everything should work as it supposed to be.

if you have a firewall enabled, don't forget to allow chosen ports.


how recover my money in Coinbase Wallet?

According to coinbase

  Wallet is a user-custodied digital currency wallet and DApp browser. This means that with Wallet, the private keys (that represent ownership of the cryptocurrency) are stored directly on your device and not with a centralized exchange like Coinbase Consumer. You do not need a Coinbase Consumer account to use Wallet and you can download Wallet from anywhere in the world.

You cannot recover control over money in a user-custodied wallet using only a Bitcoin-address and a Transaction ID.

If you have somehow lost your wallet (e.g. phone dropped into ocean) - without the recovery phrase or some other equivalent sort of backup, your money is gone forever.

If by "Coinbase Wallet" you actually mean "Coinbase Consumer" - that is a custodial-wallet (or equivalent service) and your only possible way to recover control over your money is to communicate with the help-desk of Coinbase.


How do I calculate mining profit from shares in Litecoin?

It should pay 100USD for every 713 shares (diff as I type).

That refers to shares of a certain difficulty: diff 1 Litecoin shares or diff 65,536 shares according to some mining clients (notably CGMiner).

Each found share has its difficulty. If the share's difficulty is equal to or higher than the worker's difficulty, it gets submitted by the worker and accepted by the pool.

At 713 difficulty, it will take on average 713 * 65,536 = 46,727,168 diff 1 shares to find a block. Likewise, it would take 713 * 65,536 / D diff D shares.

Note that, if you submit a diff 256 share at 128 worker difficulty, you get paid for a diff 128 share. So, assuming your worker difficulty is constant (LTC pools tend to use variable difficulty), your expected payout would be numbers of shares * worker difficulty * 50 / difficulty LTC, where both worker difficulty and difficulty should use the same metric (just use the values the mining client reports).

  Aren't the mechanisms supposed to be very similar?

For Bitcoin mining, a diff 1 share (lowest possible worker difficulty) is found for every 232 hashes that are calculated. Since Litecoin's scrypt algorithm is about 1000 times slower than SHA256, mining Litecoins would have a very high variance if the same metric of worker difficulty was being used.

Therefore, pools and mining clients implemented shares with worker difficulty lower than 1, e.g., diff 2-10.

In order to avoid dealing with fractional difficulties (I assume), mining clients labelled diff 2-16 shares diff 1 shares, so actual diff 1 Litecoin shares become diff 65,536 shares.

  Litecoin difficulty is very low!

Since computing hashes is 1,000 times slower for Litecoin mining, a difficulty of 713 for Litecoin mining is more or less equivalent to a difficulty of 713,000 for Bitcoin mining.


How does namecoin and other merge-mined coins prevent pre-mine attacks?

If you fake the bitcoin blocks, then you will be mining only namecoins and no bitcoins, so you are losing 99% of your mining income.

You can't just mine at a height above the current namecoin blockchain. Remember that it is a chain. Each block has to link to the previous one. If you want to mine at namecoin height X which is thousands of blocks above the current height, how will you know in advance what the hash of the block at height X-1 will be?


Bitcoin: what if I was about to sign an offline transaction using the transaction history and I get paid into same address

It will work fine.

The offline transaction you are signing points back to one or more previous transactions that sent coins to your address; these are the coins that the new transaction will spend.  It's okay if additional transactions come in in the meantime, they just won't be the coins used as the inputs for your offline transactions.


Yup.  Most of the common VPN services would work with it, it's a normal TCP/UDP sort of system.  I use torguard VPN, but I think most would work.


What software can I use to calculate my private key from a seed (e.g. Trezor or Ledger)?

Any wallet software that allows restoring from a BIP39 mnemonic will allow you to do that, such as Electrum.
However, you should not do this on your regular computer, since putting your private key on your computer defeats the purpose of having a hardware wallet. If you really have to verify your key is correct, and you'd like to maintain the security of having a hardware wallet, do it from a computer that isn't connected to the Internet.


Why are blk*.dat files ~134200000 bytes?

The constant is called MAX_BLOCKFILE_SIZE and is set in src/validation.h.  It is currently set to 0x8000000 which is 128 MiB (134,217,728 bytes).

You can see where it is checked in FindBlockPos() in src/validation.cpp.

There isn't any indication of why this specific size was chosen and it may be arbitrary.  It is desirable to have some limit because some operating systems (or specific filesystems) have limits on maximum file size, usually above 2 GB or so.  So at least this limit ensures we never get anywhere close to an OS limit.


Do foreign bitcoin exchanges need to be liscensed in every US state?

As CTO of Bit2C, Israel bitcoin exchange I can tell from my experience that the exchange has a bank account at it's local country, the exchange required by the bank which holds the customers funds to "know your customers" and in Israel we are obligated to ask from customers who make deposits to sign a document declaring they have no us citizenship, so we can't deal with US customers.


Is there any link between Bitcoin's PoW and BFT?

PoW achieves the same outcome as BFT. However, the way in which they arrive at the same outcome is different. PoW is for environment where there are untrusted actors. Unlike BFT protocols where it is semi-trusted.


The hardware of the controller doesn't matter. You can run cgminer on a Raspberry Pi or a TP-Link router, both are terribly weak and it has absolutely no effect on the ASIC whatsoever. To this end, even KNC mining rigs use Beaglebone Black boards to control their top of the range miners. Most home miners use Raspberry Pi due to their low cost and easy to run software like MiningPeon.

CPU, memory, GPU are all largely irrelevant.


price_per_byte is the key that effect transaction cost for user. Generally standard fees for price_per_byte = 206 satoshi per byte which is too costly and higher for user, we can reduce it upto 2 satoshi. it will cost very low.

206 satoshi per byte transaction completes in very next block or in very next transaction means immediately. while 2 satoshi per kb transaction takes upto 2 to 3 hours to complete transaction.

general transaction space will be 224 to 299 kb if user send BTC to single user amount is not the matter here, so transaction cost will be very low based how much satoshi amount user has setup for transaction.


Transactions with multiple input UTXOs and multiple output UTXOs

I don't think you can make that assumption with any certainty. You can fairly easily invent other explanations that are equally valid (though probably much less likely)

For example, this transaction might be created by a 23292 member club with an annual subscription of 1 BTC that sends prizes of 0.5 BTC to ten winners of their monthly competition. There would be no real-world transaction that links one specific subscriber with two specific prize-winners.

The blockchain certainly doesn't assign inputs to outputs. The only requirement is that the sum of inputs cannot exceed the sum of outputs (and usually the sum of outputs is less than the sum of inputs - the difference being the mining fee)

This may be clearer if you just think of this as a record of a fiat cash transaction. If I hand out $1 banknotes to ten people, the various five people who each gave me a couple of $1 banknotes in change have no involvement in my later transaction. The sources, sizes or sequence of the inputs are not relevant.


what's the point of "n" in "vout"? getrawtransaction

The vout index (n) that you see after calling decoderawtransaction is added by bitcoind. It is not present in the raw transaction data.

If you manually decode the serialized tx for your example, you get this for the output section:

02  # Number of outputs
# value lockscript_length lockscript
005a620200000000 17 a914a88433dd5e9fcee779efdea952e397cf3bfe8aac87
# value lockscript_length lockscript
c587841500000000 19 76a91402952d768c840f30a49e20af5bd4219210a14d2488ac

Notice how there is no index field. It is simply calculated by the node when deserializing the transaction.


How do you delete an account in Bitcoin Core?

bitcoind does not allow you to delete addresses. (If it did, the next question people would ask is, "How do I undelete addresses?" :))

However, you can use the rpc call setaccount to change the account associated with the address. The first argument to setaccount should the the address you're changing; the second shound be the account you're moving it to. (If you want to move it to the default account, put "" as the second argument.)

Note that this does not change the balance of the account; balances are tracked internally. If you want to keep this consistent, run getreceivedbyaddress, then move that balance to the new account.

You can also use PyWallet to delete addresses permanently. Use the --multidelete option, and pass it a path to a file. That file should contain key as the first line, followed by each address you want to delete, each on a new line.


It is technically possible that all copies of the blockchain are lost...but extremely unlikely.  Also, I see no reason why such a massive data loss would be restricted to a single historical block, rather than the whole blockchain.

For a cool visualization of the number of full nodes on the network, look here:

https://bitnodes.21.co/nodes/network-map/

Keep in mind that there are probably a lot more copies of the entire blockchain than there are full nodes.  For example, I run 1 full node from my house, but also have 3 full copies of the blockchain backed up (so I don't have to download again).  It would take a cataclysmic event to destroy all the world's backups.

Also, having worked IT for a bank, I can assure you that your bank account doesn't have nearly this many redundant backups.


Any website that explains most of the BIPs in a different way that newbies can understand better?

I am not aware of one comprehensive write-up, but Aaron van Wirdum has a few great write-ups of various proposals in Bitcoin Magazine, the Bitcoin Optech newsletter has covered a number of the more recent proposals in depth, there are a number of talks (and transcripts of those) about BIPs on Youtube from conferences, workshops and Bitcoin meetups. There are a few BIPs that have their own tags here where they are covered more in depth, but again, I don't know about a single resource that is just focused on explaining all the BIPs. Maybe someone should start one? :D
Until then, our site here is a great place to ask all your questions about any BIPs.


Getting the wrong txid for coinbase transactions

The txid is the hash of transaction without segwit data. The full coinbase transaction contains the segwit data which will result in the hash that you got. However that is not the txid.


How does one prove that they sent bitcoins to an unspendable wallet? Proof of burn?

Essentially you must send coins to an address that is provably unspendable. There are many ways to do this.

Put the coins in an OP_RETURN output. These outputs are provably unspendable because the consensus rules prevent it.
Send coins to any script which resolves to false.
Since addresses are encoded hashes, start with a hash, of which it would be nearly impossible to find the pre-image, e.g. assume a script hash of 0000000000000000000000000000000000000000. Encode that into a valid address:

bs58 -c 050000000000000000000000000000000000000000
31h1vYVSYuKP6AhS86fbRdMw9XHieotbST

This address has actually had Bitcoin sent to it, but never from it: https://blockstream.info/address/31h1vYVSYuKP6AhS86fbRdMw9XHieotbST


Why does the Bitcoin protocol use the little-endian notation?

Modern computers almost always use little-endian internally, so this choice improves speed. If Bitcoin used network byte order, then order conversions would be necessary for every message sent or received.

Hashes are defined by the standards as being big-endian, and crypto libraries deal with them in that form, so hashes are transmitted in big-endian. Bitcoin displays hashes in little-endian because Bitcoin sometimes considers hashes to be little-endian integers instead of strings.


Where is the New button in the Receiving Addresses windows of bitcoin core 0.17.0?

Press "request payment" to get an address.

The button on the address book was redundant and was removed by PR12721.


How does Segwit achieve backwards compatibility in terms of the block size?

Segwit changes the definition of a maximum block size to be something called block weight. The maximum block weight is 4000000 weight units. We use the following formula to calculate the block weight:

3 * (size of non-witness data) + (size of everything including witness data)

So we can do some math here to figure out if the size of non-witness data will ever be more than 1 MB.

Let x = size of non-witness data
Let y = size of just witnesses
4000000 >= 3x + (x + y)
4000000 >= 4x + y
4000000 - 4x >= y

Since this is just a downwards sloping line, the point at which y = 0 is where x will be the greatest. So setting y to 0:

4000000 - 4x >= 0
-4x >= -4000000
 x <= 1000000

Thus the largest the non-witness data can be is 1 MB, which is exactly the maximum block size for non-segwit nodes. Since non-segwit nodes will only see the non-witness data, segwit is backwards compatible as blocks would still be within the size limit.


Is there any point attempting to vote when my hash power is so marginal?

You can still vote by supporting a pool voting in the same way as you.

Voting is rather fair, as bigger pool operators have a bigger responsibility to their miners to keep the software up to date and operating according to their best interest. Thus mining in a pool is like voting for your representatives - you give your trust to them so they can work on benefiting you.


Where can I find the structure and layout of what exactly gets hashed by miners?

The data that's hashed is the block header. You can find a description of the format and layout at https://en.bitcoin.it/wiki/Block_hashing_algorithm


Which mining pools use custom mining software?

BitMinter offers its own mining software, but also gives the option of using other programs by connecting to mint.bitminter.com:8332 .


Why has Intersango stopped accepting UK bank transfers?

In the UK, banks are free to discontinue providing a banking relationship with certain customers.  Metro Bank chose to do so with Intersango.  They now have no bank in the UK, and there is very little trading on their BTC/GBP market since the August 30th action as there are no methods for moving GBPs in or out..

There have been no mentions that I've seen of this being resolved anytime soon.

http://bitcointalk.org/index.php?topic=63877.msg1122824#msg1122824

For updates, see Intersango's status page.


What's the size of the last Ripple ledger and the indices to search through it?

Ledger 8470000 in JSON format (without inner nodes) is 115 MB large. You can get it if you issue the "ledger" API call on a rippled that you own - it's an admin-only call, as it takes lots of ressources to assemble it.

If you are asking about the size of the databases rippled uses in the backend, these are about 9 GB (ledger headers + validations archive) ~100 GB (transactions) and ~320GB (RocksDB node store, snappy compression enabled) on my node.

Rippled can utilize several backends, the most mature/recommended is RocksDB, a LevelDB adaption by facebook. In general rippled just needs a high performance key-value store for the largest chunk of data (nodes), transactions and other stuff is stored in SQLite databases.


Theoretically, you could produce an ASIC for every possible algorithm. It's done all the time by NSA, CIA and their kind for cryptographic purposes. Why has no company produced an ASIC for scrypt or to look for Cunningham chains? Return of investment!

Developing an ASIC for scrypt is harder than for SHA-256, this is by design. So designing the electronics is going to be costly, producing and testing the first test batches is going to be expensive as well.

For such a project to be done commercially, either: a) investors see a potentially big market of buyers for such an ASIC, or b) they sense a big investment opportunity in creating such machines for mining themselves a scrpyt-based coin.

For both situations to happen, scrypt-based crypto-coins need to become more popular/used, or their market capitalization increased substantially. Now that Litecoin has become much more high-profile (and its market capitalization a big chunk), and with Dogecoin, Coinye and so many other scrypt-based coins hitting the news, that there's a lot of interest in designing an ASIC for scrypt.

What surprises me is not seeing a team of teachers/students at any college in the world designing the electronics, getting a grant to create a few batches and finally either publicly releasing the gerbers or raising seed-capital to start a company based on the effort. I've seen a number of companies start up like this, have no idea why no one has tried it.


Can we decouple tx fee from the txs themselves?

Bitcoin mining is business. It incurs significant hardware and energy costs. So it's absolutely understandable and legitimate that the commercial miners choose those transactions that give the biggest overall fee. And a 10-Satoshi transaction occupies the same space in the block as a 100-Bitcoin one. It's a bit like in real life: some countries in the Euro region don't circulate 1- or 2-cent coins because their production costs more than their nominal value. And everybody there accepts that a change of 1 or 2 cents is lost.

Your suggestion is implementable within the current bitcoin consensus if you can convince a significant portion of the miners to follow that scheme. Every miner is free to implement his own priority scheme for transactions, not necessarily based only on transaction-internal data.

But I doubt that you'll be able to convince enough miners and users to switch to that scheme. Miners will lose fees, and users will have to pay in advance to get a token that's only accepted by a (small?) portion of the miners.

If you want to help with low-volume transactions, start your own miner with a priority scheme that prefers low-volume transactions. You'll lose money running your mining hardware, but some users will benefit.


In which Block was Len Sassaman memorialised?


Check out Bitmixer.io, it even has an API.

You could do that, but personally, I think it's a much better idea to generate a new wallet per customer transaction. That way, all your coins aren't grouped together, so the customers won't know how much you make. Just how much they paid. Personally, my app creates addresses through the Coinbase API, all of which are held in a specific account named after my app.


How to get my c-lightning node's private key?

c-lightning uses this code to obtain the node's private key from the hsm_secret.

I've came up with a way to do the same using Python and posted my highly-commented tutorial-like code in this gist.

Basically you have to call an hkdf function with the hsm_secret contents, a salt which will usually be zero, \x00, and the label "nodeid".


Given a bitcoin block, what's the easiest way to determine the minimum net fee rate (including ancestors) for transactions in that block?

First, even if you find the transaction with the lowest effective fee rate in a block, that will not necessarily mean that the mempool cleared to that level. In their recent paper "On Blockchain Commit Times: An analysis of how miners choose Bitcoin transactions", Messias et al observe deviations in the block composition from the expected norm (GetBlockTemplate) of up to 22%. They surmise that this could be caused by out-of-band prioritization or use of other algorithms.
Fact is, we don't know what software miners are running to compose blocks, how often they update their templates, how often they get acceleration requests or have their own interests to include transactions, and which version of Bitcoin Core they may be running if they even they simply use GetBlockTemplate (GBT).
Assuming that blocks are generally produced by Bitcoin Core's GetBlockTemplate method, and applying general rules for block composition, we know the following:

Transactions must be ordered topologically in a block
If a transaction spends UTXOs created within the
same block, the child transaction must follow the parent in the block's transaction list
GBT selects in order of effective fee rate
GBT will select complete transaction ancestor groups
This means either a single transaction if no child transaction is present, or the descendants have a lower effective feerate, or the complete group derived from the descendant that has the highest effective feerate.
Groups may be skipped when they don't fit in the block
If a transaction group requires more blockspace than is left, a smaller transaction group with a lower effective feerate will get included instead. This means that larger transaction groups may miss a block even though transactions with lower feerates made it in.
Only the best sibling counts
Sibling transactions do not form a shared ancestor group unless the
ancestor group is started from a shared descendant. I.e. if two siblings both have higher feerates than the parent, they each form a separate ancestor group in the candidate list and get prioritized on basis of the effective feerate of their individual group. When the ancestor group with the higher effective feerate gets selected, all remaining ancestor groups get recalculated and the sibling transactions would now likely have the highest effective feerate right afterwards (since it was higher than the parent alone). So, even if siblings and parents all appeared grouped in a block, they would be positioned at the highest effective feerate among the individual ancestor groups, the parent does not gain a special benefit from being CPFPed multiple times in parallel, and they were actually selected iteratively not together.

Altogether, it would be expected that transactions should appear in descending order of their feerate in the block (when using GBT), except where topology interferes, or transactions have been imbued with a "virtual high-feerate" via PrioritiseTransaction. I.e. you could look at the effective feerates of the last few transactions in the block and make a guess from there. Taking a low percentile instead may give you a more representative value.


I've cached a command line Bitcoin address generator posted a while ago on BitcoinTalk. Note that I've not tested it more than once, but it should at least give you a place to start.


Connecting full nodes within a LAN to speed up blockchain sync

Ok got it, it seems you need to remove the line bind=127.0.0.1:8333 from the config file, and (surprisingly) you can keep the setting onlynet=onion (you still can connect via ipv4 on the LAN). So the existing Tor node can be configured as follows:

txindex=1
debug=mempool
daemon=1
onlynet=onion
onion=127.0.0.1:9050
port=8333
listen=1
externalip=<myexternaltoraddress>.onion
seednode=<seed1>.onion
[...]
seednode=<seedk>.onion
banscore=10000
bantime=11

and the new local ipv4 node can be configured as follows:

txindex=1
debug=mempool
daemon=1
connect=192.168.0.xxx:8333

With these settings, the Tor node works as normal with Tor only connections (inbound and outbound) with the exception of the local ipv4 connection from the new node.


problem when start using cpuminer / cudaminer

I think that you configured the batch file incorrectly. It seems as if your batch file is beginning with a call to cgminer when either

A) You don't even have cgminer installed, you didn't mention installing it whatsoever. Download cgminer, and relocate the batch file in the application directory.

B) Your batch file calls cgminer, and it can't find it. Either move the batch file to the cgminer application directory for cgminer, or go in and edit the batch file to call either 'cpuminer' or 'cudaminer' (this should be the first word in the file) depending on which .exe you want to run.


BIP44: What's the use of internal addresses?

The separation between internal and external addresses comes from BIP32.

Using a different chain for each permits you to give out an xpub for just the external ones to an auditor. They would then be able to observe your incoming payments, but not your spending.


How is "additional information" stored in the ledger and which blockchain projects don't allow it?

In Bitcoin, you can use an OP_RETURN output to encode arbitrary data into a transaction output.

But there are also ways to do that without actually explicitly saying something is arbitrary data. For example, you could cut up the data into 32 byte slices and claim it is a public key. To an outside observer, it very well could be a public key. So then the person encoding the data creates a lot of P2PK outputs or a large bare multisig output with public keys which are actually the data.

In order for data to be put on the blockchain, it typically has to be transformed in some way (e.g. slicing it up) and it has to be interpreted specially in order to get the encoded data out. That someone has encoded illegal information into the blockchain is not a new idea, but in order to actually get the illegal information, you need a special decoder, otherwise it is just arbitrary bytes.


Not totally cold but how cold and safe is it?

It depends!

The problem is that almost all PCs are relatively unsafe. As Bitcoin use becomes more widespread and Bitcoins more valuable, we'll probably soon see more malware looking for it. Naturally, if you limit your internet usage, you are less exploitable. Yet only one such malware need to make it onto your computer, and then connecting even once to the net may be enough for your wallet to get stolen. Also be aware that what counts may not be that you think of yourself as having connected the computer to the network, but rather that indeed no potential malware (say a rootkit able to hide its network connections or something having infected your interfaces) can talk to anything outside your computer. Think unplugging your network cable and physically removing the wireless interface, rather than "I clicked to disable it, and I think that might have done what I hope it does!"

That said, I think the scenario you describe comes pretty close to what security you can achieve with reasonable effort. After all, even with a completely offline wallet you will have a similar risk exposure at the moment you decide to bring it back into a (connected) client to spend the Bitcoins in it---unless you are so diligent as to sign the transaction from an air-gapped PC not connected to the internet at all.

One problem I do see with your suggestion is that people are really good at tricking themselves. If I were to say "I'll only connect this PC to the internet when I spend these Bitcoins," I wonder if I'd live up to this promise. I suppose for me, the only way to protect me from myself was to set up the PC to indeed never connect to the internet. You may, of course, have more discipline than I trust myself with consistently living up to.


can somone create guaranteed future transaction?

You can create a transaction that has a lock time set. If a transaction has a lock time, it cannot be confirmed until after the lock time has passed. This mostly meets the first constraint.

However the inputs that it spends from could be spent by another transaction before the lock time of the original has passed, thus meeting the second constraint.

The caveat is that the lock timed transaction will only be valid if the output that it spends from is not spent yet. Bitcoin does not use accounts so there is no balance.


The "four years" is a description of how far back in time the current synchronization progress is, it won't literally take four years to complete. For most people it will take under a day to completely sync from cold, and there's not really any way of speeding it up.


To simply generate a new main network address, you can use the official zcash-cli like that:

$ zcash-cli getnewaddress
t1fMAAnYrpwt1HQ8ZqxeFqVSSi6PQjwTLUm

Or:

$ zcash-cli z_getnewaddress
zcHTYUQRA54WGdcNtLRx1yRyvEJjLD8NAK4S7FbEGoqB1s5En4syEStMnJPRMAD8XmF9xgeKnCEuZ7g35LcNpMhRDZX4PDw

Vanity is a bit tricky, but there is an offline wallet generator available here (forum, gitub).

It can be installed via go:

$ export GOPATH="$GOPATH;/home/user/.go"
$ go get -u github.com/btcsuite/btcutil
$ go get -u github.com/blackkeyboard/mneumonic
$ go get -u github.com/blackkeyboard/zgenerate
$ go install github.com/blackkeyboard/zgenerate

After that it can generate valid (?) zcash addresses.

$ ~/.go/bin/zgenerate
2016/10/28 10:42:09 Wallet generated!
2016/10/28 10:42:09 Passphrase: afraid master w...
2016/10/28 10:42:09 Address                                Private key
2016/10/28 10:42:09 t1eTNgQHp7ei42ZtVRJ8jmUrsfu3rQqpXKt    cQM...

Now, generating vanity needs some bash tricks for now. And a lot of disk space, as long as nobody codes a proper vanity generator.

First, generate a lot of addresses and pipe the output to a file:

$ while true; do ~/.go/bin/zgenerate -n 99 >> keypairs.txt 2>&1; done

And in another shell, look for the results

$ grep -i t1 keypairs.txt | awk '{print $3}' | grep -i 5chd
t1MniMQux3755CHdMdVEtk71GzDkrLjmMbL
t1QMERYYnhCTdpreFwp5chdhqejr7NxRJvK
t1euq6Yg5chDcdEd9LCmwDPizqAU6uBF5Lt
t1PqrCEUW5ChDcaxe9qsQjPiCVt5qd727qH
t1h5ouE263Ccuo5ChDwWRn9HJCMrT3DR7gN
t1Qo5cHDbNBaoaFTKJLrWHBFPoqBZjRRLAS
t1W5cHDhrAnHERt9Tv3r6cgRh9hKybRbn7q
t1dViyc3SQatNZXnoMwcFLB1ELTHNwT5chD
t1e7D5qgdpbxNLoi5ChdTpLFauz8VrQJ2He
t1Va5cHdqLWmnHeAycS9y3qoP3rDAyPJubD
t1UszZECKVPgFpjkYKubyC5chduhSTQscPz
t1LjhytxXj9YLzeBikShm2kj78N5chdkJkm
t1MyW2vggvzHKjPCZDcd5cHdDPsvYMXCp8F
t1UMn4PpwnvPBH6hiunhoXbXRqBoJz5CHDo
t1aohPrSU7bFsC5CHDEPi5Ed7mVxvnNjeuq
t1cMAXhkVSaPcGmzVwN15cHduRKpbLtFJ1H
t1NZRXnKdACxU9xYH9P5chdTcNZfFQ6mT5L
t1QXXyYidirdW4KQz5ChDtYGestzDJ9FyiS
t1cHMeeWtGqnduj5chDFXka8krJMLtDoiJb
t1Pv4zxf5ChDXsCiKkajeJ1qpkQyv1MbSTd
t1KftUZAas3mAyKL5chd97nbDz8S2iF8PQF
t1WQYSvAWPLFHh9gyg6m635CHD3A49C9AvH
t1cuG5ChdTvE864hCKbM9tpToYNU4u8QWA6
t1bTuRMnbJMG1z2tRySoz5cHD1VB6mNFKAX
t1MX7GuYdMcKH9nWgc5chDj99qgd9H1186i
t1VvKMh2LRiTeUY3B5p5oa5CHDWhzK5ZMxB
t1Z34PDzF5CHDfnvJdRFUsQQCWTys2Wv4FE

Stop if you are satisfied.


It depends.

If you're concerned about disk fragmentation, you can run a disk defragmenter. In Windows Vista and later, this is done automatically if your PC is on overnight. If you're using a recent version of Linux, (if the filesystem uses ext2 or better) this isn't necessary either. If you're using a solid state drive, this won't help, because it doesn't have the long seeking times of spinning hard drives. This article tells you how to start the disk defragmenter on Windows manually.

In general, it doesn't matter very much.


Freelancer: billing my customers in bitcoin

In practice your invoice fee should be cited in the most stable and liquid of the currencies you support. Typically your national currency since you live with it anyway.

The contract would then stipulate that if the client pays in another currency that the amount that the client must pay is the going rate to sell that currency back into the primary contractual currency at the time of payment.

The client, if they don't have enough bitcoins at time of payment, may care more about the buy/bid exchange rate. But you care much more about the value of your work in the most stable and liquid currency, hence the sell/ask exchange rate at time of payment.

For example:

Contract stipulates a payment of $100 USD
Contract stipulates that payment in bitcoin is the amount of bitcoins if sold at the weighted global average at the time of transfer would be equivalent to $100 USD; rounded to the nearest desired fraction of a bitcoin (e.g. 0.001 BTC).

This should completely resolve currency volatility between the time of invoice and payment. I'm sure most modern bitcoin payment gateways auto-convert currency exchange rates, so the logistical burden to a client should be minor.


The normal way to get started in bitcoin is

1) Choose some free wallet software. Download it to your computer. Use the wallet software to generate a private key (cost so far: zero). Write down your recovery phrase or private key on a piece of paper and store it somewhere safe where no-one else can ever see it.

2) Either

Use traditional money to buy some bitcoins. There are exchanges that offer this service. Do some careful research to find a trustworthy exchange. Alternatively there are bitcoin ATMs which take traditional money and send bitcoins to your wallet's adddress. Make sure that they send your bitcoins to the address of your wallet on your computer, don't accept an online-wallet or cloud wallet run by someone else unless you fully understand the difference. Try this out with a small amount of money first - don't invest money you can't afford to lose completely.
Mine some bitcoins. This is now impractical for anyone new to bitcoin. At least, wait until you really fully understand bitcoin inside and out.

Some tricksters will try to trick people who are new to bitcoin,. They will make promises in return for money. They will give you a useless "watch-only" address saying that it contains your bitcoins, but a watch-only address does not give you ownership. Then they will invent further reasons for you to give them money until they have extracted everything you have or until you realise you have been tricked.

As bitcoin payments cannot be reversed, there is no way to get money back. There is no central bitcoin authority who can help.

Anyone who unexpectedly says you have to pay $700 for a private key is almost certainly a crook.


How does BIP9 handle expiration dates over retargeting periods?

As per BIP 9, the transition to FAILED takes precendence. Which means that the feature will not be activated via BIP09.
The relevant part of the code.

case STARTED:
            if (GetMedianTimePast(block.parent) >= timeout) {
                return FAILED;
            }
            int count = 0;
            walk = block;
            for (i = 0; i < 2016; i++) {
...


How do you create a wallet with MultiBit?

To create a wallet in MultiBit:

Open MultiBit.
Click on "New Wallet"

Enter a proper name for your wallet.

Wallah! A wallet!

It sounds to me like you're having connection troubles, though. Are you behind a firewall, proxy, or anything that could interfere with your connection? Consider trying a new internet connection.

Here is the MultiBit Help page: https://multibit.org/help.html


Will Bitcoin suffer from a mining Tragedy of the Commons when mining fees drop to zero?

There will definitely be a tragedy of the commons problem if things stand as they are now. This was discussed at some length here and elsewhere.

There are some proposed ways to address this and make transaction fees nonzero (block size limit, hardcoded fees, insurance entities, mining cartel, gentleman's agreements which are maintained for fear defection would beget more defection, etc.), but I don't think either results in the combination of competitive transaction fees and a level of hashrate which is enough to offer reasonable security.

This means that there must be some way to improve the network's security at a given hashrate. The only way I know to do that is by augmenting proof-of-work with proof-of-stake, discussed for example here. This is based on the observation that obtaining a majority of the bitcoins in existence is orders of magnitude more difficult than obtaining a majority of the hashrate.


64: non-mandatory-script-verify-flag (No error) (-26)

From the source code:

// Check whether the failure was caused by a
// non-mandatory script verification check, such as
// non-standard DER encodings or non-null dummy
// arguments; if so, don't trigger DoS protection to
// avoid splitting the network between upgraded and
// non-upgraded nodes.

It sounds like maybe your transaction signature isn't standard.


What does "Trailing Stop buy Order" on Bitstamp mean?

You might have been confused about what a "Trailing Stop Loss" really is. (Or I do missunderstood your question.)

The answer can be found on Bitstamp's website: https://www.bitstamp.net/article/stop-orders-and-trailing-stop-orders/

  What is Trailing Stop Order and how to use it?

  The trailing stop is more flexible than a fixed stop loss, since it
  automatically tracks the bitcoin’s price direction and does not have
  to be manually reset like the fixed stop loss.

  For example: Market price of bitcoin is $480 and you placed a Stop
  Sell Order at $450, which is in our case $30 below the current market
  price. Suppose price of bitcoins suddenly increases to $550. You are
  now in chance of “locking in” even bigger profit by manually
  repositioning your Stop Sell Order to higher price.

  Repositioning your Stop Order can be done automatically for you by
  enabling “Trailing Stop” function. In our case Trailing Stop Order
  will automatically reposition active Stop Order if price of bitcoin
  increases while maintaining spread of $30 between the bitcoins spot
  price and Stop Order.


Not sure where some of my transaction went

Nevermind. I found out that it is a 2 factor authentication fee. At first I just didn't expect it to be this much.


How do miners decide when to give up on a block?

You're right, miners can freely choose among the unconfirmed transactions when they're building their block template. However, miners are optimizing for revenue, so they'll be mostly selecting transactions in order of descending feerate.
Since transactions propagate quickly on the network, most miners will have a largely overlapping view of the queue, and their block templates should be almost the same.
Since each block commits to a specific predecessor, the best chain can only have one block at each height. Mining is progress-free in that each hash independently has a (tiny) chance of yielding a valid block. So, when a new block is found, miners do not have any sunk cost, they just update for the new predecessor, pick a new set of transactions, and go right back to mining at the new height.


Hot and cold in this case refer to if the private key is stored on a system connected to the internet or not. Hot wallets are stored on system connected directly to the internet. This can be on the client machine or on a centralized server. A cold wallet can be a HW wallet, an offline wallet or a paper wallet. You kind of create an air-gap that drastically reduce the attack surface on the wallet.


I’ve heard that the more bitcoins that are mined there is a direct increases in the level of difficulty and in resources, required to mine more bitcoins.

You have heard incorrectly. That is absolutely incorrect. The difficulty has nothing to do with how many Bitcoin have already been mined; all that matters for the difficulty is the average time between blocks for a sample of 2016 blocks.

  I’ve heard many estimates from 10 years to 100 years to mine all 21 million bitcoins.

It is estimated that the block subsidy (which is what creates new Bitcoin) will reach 0 in 2140. The block subsidy will effectively be 0 long before that. It is impossible for all Bitcoin to be mined within 10 years as the hashrate required for that is too great.

  With the unknown variable of future increases in processing power, how could anyone make a educated guess as to how long it will take?

Blocks are mined at a roughly fixed rate. The rate is fixed by the difficulty which adjusts every 2016 blocks. The difficulty adjusts so that it takes 10 minutes to find a block, on average. So if there is a massive increase in hashrate, the difficulty will increase as well so that blocks are still found 10 minutes apart.

Since we know how long it will take to mine blocks, on average, and we also know how many blocks it takes to mine all Bitcoin into existence (6,930,000 blocks), we can predict, roughly, when all Bitcoins will be mined.


What is the legal money range for a bitcoin transaction?

0 to 21 million BTC. (Yes, 0-BTC transactions are allowed as long as they have a fee.)


You can configure Bitcoin QT to use a specific data directory, but it only looks in that place for wallet.dat.

I would (1) close Bitcoin QT, (2) move the existing [data directory]\wallet.dat to another folder (3) copy your backup into the [data directory], and (4) reopen Bitcoin QT.

Don't overwrite your existing wallet.dat with the backup!  Step (2) is pretty important in case there's a problem with the backup file.


Bitcore.io Create a raw tx hex (signed) to push to the blockchain

The problem is on this line:

amount: 100000,

The amount is supposed to be in coins, not satoshis, according these comments in the code. To fix it, replace that line with

satoshis: 100000,

  And what is the deal with these large numbers:

Since the code was assuming an input with 100,000 coins in the inputs, the change address had a lot more coins in it than there should have been.


What's the advantage to requesting a higher difficulty when mining?

The higher difficulty means you will be reporting results less frequently to the pool.  This reduces network load on both your system and the pool.  It also reduces the restart delay for your mining hardware as it prepares for the next work unit.  Most pools base the rewards on the number of difficulty 2 shares accepted.  So they increase the reward based on the mining difficulty.  If you had four shares accepted at difficulty 4, you would be credited with the reward for 8 shares.  Similarly, four shares at difficulty 8 would yield a reward for 16 shares.

So it is to your benefit to set the difficulty high enough to reduce the network and mining delays but not so high that you get a lot of stale shares.  Some pools (such as BTC Guild) will automatically adjust the difficulty based on your hash rate.


Lost my phone with the wallet in it... Any way to recuperate my 5.178 bitcoins?

To spend bitcoins, you need the private keys that control your address(es). There is no other way to spend your coins, without the keys your coins will likely sit unspent forever. So that means you'll need:

a) your phone

b) a backup copy of the private keys, or (more likely) the wallet's mnemonic seed phrase

c) a digital backup of your phone

It sounds like a) and b) are not viable options for you, but perhaps you can recover some of your phone's data from a local backup/cloud storage. Normally I would recommend not storing wallet backup data in the cloud, but in this case it may be your only hope of recovery.

Sorry for your loss, best of luck.


You used a fee-rate of 6 sat/B. Even though fees have dropped drastically over the week, that's about factor ten too little to confirm. Additionally, one of your outputs will cost its own value to spend at 3 sat/B. Even at today's exchange rate it's only worth about 1.5¢, you should try to avoid creating outputs that small as they're unspendable burnt money. That's the output that triggered the dust categorization.


Buying Bitcoins without identity checks?

LocalBitcoins provides

In-person cash trades - can be done complete anonymous. Check "Buy bitcoins with cash" on the site.
Cash deposits - depending on the bank and the country you may be do cash deposit anonymously


Exchange rate of limit orders with a positive interval

It depends on who posts the order first.

If Alice posts first a sell at 90, then Bob posts a buy at 110, Bob will buy from Alice at 90, and any excess will be posted as a buy at 110 (if he wanted to buy more than Alice sold).

If Bob posted first a buy at 110, then Alice posted a sell at 90, the opposite would happen: Alice would sell to Bob at 110, and any excess would be posted as a sell at 90 (if she wanted to sell more than Bob wanted to buy).


Primary security risks of Bitcoin QT API use

Bitcoin-Cores RPC API is not meant to be available on the public internet. It's not hardened enough and the authentication (HTTP BASE AUTH) is not safe.

If you want to connect to the RPC-API over the internet, you have a couple of options...

use VPN (openVPN, etc.)
use stunnel
use Apache with a reverse proxy and enable SSL (probably most easy to setup)

Also have a look at the 0.12 release notes:
https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.12.0.md#rpc-ssl-support-dropped


possible to generate qr code using only bitcoin core?

QR Code creation is a GUI only thing. You cannot create a QR code without using the GUI. The JSON-RPC interface only works for text based things and cannot trigger GUI actions.


Question about extracting BCC from a paper wallet

Not every exchange or wallet supports import from private key, for example, coinbase explicitly says they don't support it. But if you find an exchange that supports it, then yes you can directly import to it instead of going to Electrum first.


What is the meaning of the "spent" attribute of a transaction output?

Or is that attribute added "later" by blockchain.info to give the reader a bit more context?

I'm pretty sure that is what is happening.
If you look at that transaction in a different explorer, for example https://blockchair.com/bitcoin/transaction/c52b5df64f10463fbe4f46d7b9da3464449849b7e542d533575a927366b52b09 and click "raw tx" you'll see it doesn't include that information in the JSON.


Not sure what you mean with Wallet Key but if you mean the password for access to your wallet in the exchange then this will only work in that exchange.

Please search for your address here to verify that your coins haven't been transfered somewhere else.

In case you were provided with a seed then you can use this seed in a wallet like Electrum or Mycelium (an Android app) to recover your funds :)

If you don't have the seed then you better remember where you purchased your bitcoins! :/ Maybe checking your search history or your inbox?


What is the format of the coinbase transaction?

A coinbase transaction follows the same format as a normal transaction, except:

It has exactly one txin
This txin's prevout hash is 0000...0000.
This txin's prevout index is 0xFFFFFFFF
The txin's prevout script is an arbitrary byte array (it doesn't have to be a valid script, though this is commonly done anyway) of 2 to 100 bytes. It has to start with a correct push of the block height (see BIP34).
The sum of the txout's values cannot exceed the subsidy (25 BTC for now, halves every 210000 blocks) plus the fees of the non-coinbase transactions in the same block.

About the scriptSig being an arbitrary byte array, there is one caveat: the checksig operations in it are counted towards the block sigop limit (20000), so you probably don't want to accidentally trigger this. Making it a list of just push operations (including of the extranonce) avoids that.


How does blockchain.info get its info? Is it via the RPC interface for bitcoind or by reading the raw blockchain directly?

They most likely have an advanced block chain indexing backend. Basically they run a node (most likely bitcoinj with custom code) that listens for blocks from all the connected nodes they have. And once they have a block they add all it's info into a database that they run queries on for results.


Are mastercoin transfers transparent on the blockchain?

Mastercoin (now called Omni) had an uneasy relationship with the bitcoin core team early on. Some of them objected to our injecting metadata into the bitcoin blockchain to do advanced transactions.

Because of their objections, we were concerned somebody might try to identify and censor our transactions. That didn't actually happen, thankfully.

I haven't heard any talk of censorship for a long time now, so I doubt that will be a concern going forward. Still, we had plans in place in case it became an issue. But it hasn't been used and hopefully won't need to be.


The euro value of the btc transacted does not affect the fee rate at all. What matters is the size in bytes of the raw transaction. Larger size = more fees, and vice versa.

What decides the size of a transaction? There are a few variables, but for basic transactions what will matter is the number of inputs, and the number of outputs.

You wallet software may provide a few different 'fee levels' to choose from, or it may allow you to choose a fee rate manually (this should be listed in satoshi/vbyte). At any given moment, the fee rate depends on how many other transactions are being processed, and what their fee rates are.

Think of it as a tour bus that only has room for a certain amount of people, when the demand is higher than there are number of seats, whoever pays most gets to take the bus trip first (where 'taking a trip' = having your tx confirmed in a block). Everyone else who offers to pay less will have to wait for the next trip (the next block, or longer, depending on how far back in the queue they are).

You can check to see what other people are currently willing to pay by looking at a website like Johoe's Mempool. The charts on that page show the number of txs currently in queue, and what the fee rate they are offering is. So to get your transaction confirmed right away, you will need to set a fee rate that is at the top of the chart (right now, it looks like 140+ sat/vbyte will work). Personally, I find looking at the mempool and manually estimating what the fee rate should be works better than the software solutions that just have a couple automatic options (I've tried a few different mobile wallets like this: usually they either give you an estimate that is probably higher than needed, or one so low that I know it won't confirm for days or more).

Keep in mind, if a lot of other people are looking at the graph and also submitting txs right now, there is a chance that what looks like a good fee rate now will not be enough in 10 minutes (because everyone else also sees 140 is the minimum right now, and so they all offer 200. Now your 140 is stuck in line behind them)!


How do virtual size, stripped size and raw size compare between legacy address formats and native segwit?

Let's compare a 2 input and 2 output transaction for variants of pay-to-pubkeyhash. (Full data below.)

P2PKH has no witness, so raw size is equal to stripped size is equal to virtual size. A P2PKH transaction with two inputs and two outputs has 374 bytes (= 374 vBytes).

P2SH-P2WPKH (wrapped segwit) locks funds to a P2SH output in which it redirects to a witness program. A P2SH-P2WPKH transaction with two inputs and two outputs has a raw size of 496 bytes, a stripped size (removing witness data) of 226 bytes and a virtual size of 293.5 vBytes.

P2WPKH (native segwit) does not need the P2SH indirection, but directly resolves a witness program. A P2WPKH transaction with two inputs and two outputs has a raw size of 372 bytes, a stripped size of 154 bytes and a virtual size of 208.5 vBytes.

The raw size corresponds to the data footprint of the transaction on disk or the bandwidth cost to transmit it. We see that P2SH-P2WPKH is actually the biggest in raw size by a margin. P2WPKH and P2PKH are very close in data size with the legacy format P2PKH being slightly smaller in input size, but slightly bigger in output size.
The virtual size corresponds to the blockweight which determines the fees and how many transactions can fit in a block. After applying the weighing that the witness is subject to, P2WPKH has the smallest weight followed by P2SH-P2WPKH and the legacy format P2PKH counts as the heaviest.

P2PKH
TxHeader: 10 bytes, 40 WU/10 vBytes
Input: 148 bytes, 592 WU/148 vBytes
Output: 34 bytes
For legacy formats, the raw size, stripped size and virtual size are all equal.
Tx with 2 inputs and 2 outputs: 374 bytes (raw, stripped and virtual size), 1,496 WU
P2SH-P2WPKH
TxHeader: 12 bytes, 10 bytes stripped size, 2 bytes witness, 42 WU/10.5 vBytes
Input: 210 bytes, 76 bytes stripped size, 134 bytes witness, 438 WU/109.5 vBytes
Output: 32 bytes (outputs have no witness data)
Tx with 2 inputs and 2 outputs: 496 bytes raw size, 226 bytes stripped size, 1,174 WU/294 vBytes virtual size
P2WPKH¹
TxHeader: 12 bytes, 10 bytes stripped size, 2 bytes witness, 42 WU/10.5 vBytes
Input: 149 bytes, 41 bytes stripped size, 108 bytes witness, 272 WU/68 vBytes
Output: 31 bytes
Tx with 2 inputs and 2 outputs: 372 bytes, 154 bytes stripped size, 834 WU/208.5 vBytes

¹ See What is the size and weight of a P2WPKH input? for a fully detailed calculation.


The official or standard names would be the ones built into the bitcoin JSON-RPC API. The developer reference section is a good place to start you can see example outputs from different calls.

For example the result to the gettransaction call:

{
    "amount" : 0.00000000,
    "fee" : 0.00000000,
    "confirmations" : 106670,
    "blockhash" : "000000008b630b3aae99b6fe215548168bed92167c47a2f7ad4df41e571bcb51",
    "blockindex" : 1,
    "blocktime" : 1396321351,
    "txid" : "5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589",
    "walletconflicts" : [
    ],
    "time" : 1396321351,
    "timereceived" : 1418924711,
    "bip125-replaceable" : "no",
    "details" : [
        {
            "account" : "",
            "address" : "mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
            "category" : "send",
            "amount" : -0.10000000,
            "vout" : 0,
            "fee" : 0.00000000
        },
        {
            "account" : "doc test",
            "address" : "mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
            "category" : "receive",
            "amount" : 0.10000000,
            "vout" : 0
        }
    ],
    "hex" : "0100000001cde58f2e37d000eabbb60d9cf0b79ddf67cede6dba58732539983fa341dd5e6c010000006a47304402201feaf12908260f666ab369bb8753cdc12f78d0c8bdfdef997da17acff502d321022049ba0b80945a7192e631c03bafd5c6dc3c7cb35ac5c1c0ffb9e22fec86dd311c01210321eeeb46fd878ce8e62d5e0f408a0eab41d7c3a7872dc836ce360439536e423dffffffff0180969800000000001976a9142b14950b8d31620c6cc923c5408a701b1ec0a02088ac00000000"
}

Source: https://bitcoin.org/en/developer-reference#gettransaction


Bitcoind running on external HDD trying to resolve cookie from default datadir

You need to pass the same -datadir option to bitcoin-cli as to bitcoind. This will enable it to find the cookie file, but also potential other relevant changes you could have made to bitcoin.conf like rpcport. (I know you haven't, but this approach is compatible with those).