text:
When/How did Eligius "indirectly cost MTGOX many thousands of bitcoins"?
From the forum:

Eligius already will accept any transaction, "standard" or not,
without bias.
...
Indeed, and Eligius' willingness to do so indirectly cost MTGOX many
thousands of bitcoins when a software bug caused them to send some
weird transactions that Eligius mined.

Can anyone provide a reference that explain this incident? When did it occur?

Good heavens, this is like blaming Linus Torvalds because you deleted all the data on your Linux machine with "rm -rf".  Have you no clue how bitcoin works?

Yeah, Mt Gox lost the Bitcoins because they issued transactions that spent the Bitcoins but had outputs nobody could claim. The spec is clear that a miner's sole responsibility is to make sure the transactions properly claim their inputs. In general, there is no way to tell if the outputs are claimable.

@eldentyrell - the title is a direct quote that I'm inquiring about. A legitimate answer would be "it is Mt. Gox's fault, not Eligius'". I have reverted your edit, please don't redo it.

And there he goes trying to revert my revert, claiming that his original edit was an "admin-approved edit". Lovely.

@eldentyrell - thanks for putting this on Meta and not linking to it from here. Luckily I picked today to open Meta. http://meta.bitcoin.stackexchange.com/questions/228/can-we-establish-some-sort-of-policy-about-slander

It refers to an occurrence in October 2011 when someone sent a lot of bitcoins to an incorrect public address: someone fucked up and lost ALOT of money . Casascius stated that he thinks it was done by Luke-Jr's Eligius mining pool: Re: someone fucked up and lost ALOT of money

The way I understand it, these transactions were nonstandard enough
  that normal miners and clients would already refuse to relay or
  process them (but will accept them in a mined block). And that the
  only way these got into a block was that he teamed up with Luke-Jr's
  Eligius mining pool which has been modified to explicitly allow these
  nonstandard transactions for a fee (or other negotiated arrangement).

Earlier from the same thread, Re: someone fucked up and lost ALOT of money:

Maybe this helps. It seems MtGox made a mistake somewhere.

MagicalTux: that's a problem, but not the worst problem we ever faced
MagicalTux: all the broken withdraws have been re-issued
MagicalTux: just spent one week of BTC-only income

Since only MtGox holds the private keys for their wallets, it is impossible for it to have been "done" by Eligius.  MtGox admits to having formed the erroneous transaction themselves.  Eligius cannot mine a transaction unless it was formed by the person holding the private keys for the outputs involved.

@eldentyrell: Of course mtgox messed up. But this mess up resulted in nonstandard transactions, and if Eligius (or whoever included them in a block) had rejected them (which may or may not have been the right thing to do), mtgox wouldn't have lost the coins.


text:
Why "Open Transactions cannot lie on your receipt"?
FellowTraveller claimed here that :

OT cannot lie on your receipt. It cannot change your balance or forge
  any of your transactions. (Bitcoin also is like this, but it's still
  worth mentioning.) Combined with an auditing protocol, this makes it
  possible to run low-trust servers.

Can anyone elaborate on this? What prevents the operator of an OT server from changing balances and forging transactions?

I guess I should just spend a few hours on the OT wiki, there seems to be a lot of info there to be digested - https://github.com/FellowTraveler/Open-Transactions/wiki

It is not possible for the OT server to forge your signature because you retain the private key. Sure, it could issue fakes but anyone actually checking the signature would immediately see that it is incorrect and reject the transaction.

Whenever you perform a transaction on OT, you must submit the signed transaction. After the server verifies your signed transaction, which includes your current balance, the server countersigns it, and this becomes your receipt.
The server is unable to forge your balance, and unable to forge any transactions, because the server is unable to forge your signature on the receipt.
(This "last signed receipt" actually constitutes your account. Your "account" is nothing more than the last receipt itself, signed by both you and the OT server, agreeing to a certain balance.)

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
How exactly does -rescan work?
-rescan is a command line argument that is passed to the bitcoin client after restoring wallet.dat from backup.

Which files get recalculated?
Which files does the rescan command read?
Why is it a good practice to first download all the blocks, then rescan, and not the other way around? (as a comment on this answer suggests)

The bitcoin client stores, in the wallet, the transactions that affect coins it manages. If it sees a new transaction, it checks to see if that transaction affects any accounts stored in the wallet. If so, the wallet is updated. Similarly, if the chain is reorganized, the wallet is updated.
However, the client doesn't check to make sure the wallet is synchronized to the current block chain. To fix this, the rescan command can be used. This causes the client, on startup, to go through every single block it has downloaded, search for transactions affecting accounts in the wallet, and update the wallet's transaction store and balances to reflect that transaction.
There are a few cases when you definitely need to rescan. For example:
If you restore a backed up wallet, it will be missing any transactions in blocks you downloaded after you backed up the wallet. Since the client won't receive those blocks (since it already has them) the normal wallet update logic won't fix this. You will need to rescan.
If you modify your wallet, say by adding keys to it or removing transactions from it, the wallet update logic won't see the transactions. So if you use a program other than the client to modify your wallet, you will need to rescan.
Theoretically, it shouldn't matter whether you download all the blocks and then rescan or vice-versa. The client won't download blocks while it's rescanning. And newly-downloaded blocks should update the wallet anyway. The logic is basically that this ensures the rescan process sees the blocks containing any missing transactions, rather than the regular block update logic. (They should both work. But if you need to rescan, we know something's wrong anyway.)

As-of v0.3.21 the client will automatically rescan if the last block the wallet knew about is not the last block in the blockchain:  http://bitcointalk.org/index.php?topic=6642.msg99812#msg99812

Also, using -checkblocks will verify the integrity of the entire blockchain: http://en.bitcoin.it/wiki/Running_Bitcoin

will it block generating addresses, sending coins ?

This is also useful if you are importing more than 1 private key into your wallet:
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind stop

# One of the following
bitcoind -rescan
bitcoin-qt -rescan

very clever. never thought about it.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
What are the perceived advantages of bitcoin as a store of value?
This complements What are the perceived advantages of bitcoin as a means of exchange?
To some, Bitcoin today is considered "better" than other stores of value. Why do some people think it's a good store of value, or even investment?

I "know" the answer, but I feel that this should be asked here nonetheless. It is different enough from other similar questions IMO. The difference from http://bitcoin.stackexchange.com/questions/237/does-the-bitcoin-design-make-bitcoins-suitable-as-a-medium-of-exchange-a-store is that that question does not explore the reasoning (the answer is Today, it primarily serves as a store of value...).

Bitcoin has several advantages over other means as a store of value.

They take no space. This means that you can store them in a USB as well as a backups online for example in an email.
You do not need to pay anything for storing the Bitcoins. There is no need to pay for a secure bank account since they can be stored online or in USB or even in your brain if you use a deterministic wallet. In this case you only need to remember the passwords.
This also means that you can bring them to any country easily without paying any fees.
They are easy to hide. Nobody will know how much you store or how to get them.
This will make them impossible to steal.
Your funds cannot be seized by any bank or government.

The downside is the fluctuation in value.
But if Bitcoins are here to stay they will increase in value over the years,
perhaps outperforming many other assets.
There is also a small risk that they might get replaced by a more efficient cryptocurrency though; so far several have tried but none have succeeded.

This is pretty much it. If anyone sees anything that @istar missed, please add it.

I think the "... they will increase in value over the years" deserve some more explainations. Specifically, we should explain just how much the upside potential is if, say, Bitcoin replaces 1% of USD trades, given the limited coin supply.

@ripper234 the difficulty there is that the upside potential is an unknown quantity. Every speculator has a guess and every guess is different. It's probably safe to say that the ratio of adoption to availability drives price (the old supply/demand bit) but anything more is likely to be pure speculation, and I'd rather not see Bitcoin.SE filled to bursting with speculative chatter - let's stick to the facts :)

The big downside is that they can become close to worthless overnight, should Bitcoin be replaced by some other system. (And you might sell out to cut your losses when you think that's happening only to miss a big appreciation.)

@DavidPerry - well, I meant an estimate of the "max theoretical upside", not an actual prediction of true values, certainly without any time frame.

@DavidSchwartz - of course there's a big downside as well. This questions is about the advantages, not the disadvantages :)

@ripper234, the risk of volatility due to speculation isn't an advantage for a currency— not as a store-of-value, unit-of-exchange, nor unit-of-account. To store value means liquidity at all times is the highest priority. This is why the US Treasuries & dollar will remain#1 until all confidence is lost when the entire global economy crashes 2017. The fear move into gold won't be pretty, it will coincide with scorched earth. Gold & Bitcoin both suffer too high M ÷ V in the Quantity Theory of Money.

A less poetic version, so as "to answer the question.".
Bitcoin has the advantages of gold in electronic transferable form.  It is really neither deflationary nor inflationary.  In today's bizarro world of hyper money printing (this time is no different), stability is in relative terms deflationary.
Printing money has for centuries been used as a weapon to accumulate vast wealth and power to a tiny group of people.  That power has been used to defeat governments, create wars, dictate social policy, create culture and on and on.  The trick of invading Iraq to install a regime bound to the US dollar, and leaving the cost to the American people in the form of debt bearing interest to the same beneficiaries of the war is as old as money printing itself.
This same small group controls most of the worlds money printing, trillions of dollars in assets and they own or influence every political process you can name.
Bitcoins store of value is all about that.  It is inherently inversely reflective of that system: limited quantity, not easy to expand supply, widespread control, politically neutral, open, etc.  The greater the inflationary forces of money expansion, or if ever there is contraction in money supply (globally coordinated in early 80s, 22% interest rates!!) and deflation, Bitcoins stay stable.  If the money printers were just to leave Bitcoin alone, Bitcoins store of value, once it reaches stability will be something like gold's, inherently stable in real terms.
Bitcoiners are asleep at the switch.  They need to start thinking in terms of protecting and developing immunization for a war.  There is clear direct evidence of the money printers taking great nations to war in order to print money.  Bitcoin will get wiped out  as a store of value legally, technologically, culturally etc, if Bitcoiners dont get serious about it.   Market value Bitcoin about $700M.  US Federal reserve prints that much in about 6 hours, every day.
Or we can just go back to being slaves.
Poetry is so much more succinct!  But not everybody gets it.

It does not have the attributes of gold, it has risen in value from $10 to $70 in 3 months, while gold has never risen that fast. It exhibits both deflation and inflation in a very volatile way. You can't provably assume that Bitcoin is not controlled by the power elite when it looks like they are in control. I agree there needs to be more serious design work on hardening, but still you are answering the wrong question. The question here is to give advantages, not talk about weaknesses.

Alot of rules...  Only advantages, not disadvantages.  Only price quality comparison to gold not other innate qualities of both...  Point is, BTC is a currency.  Currency production is a social and political weapon.  Value of currency is social, NOT technical features.

The parallels between Bitcoin and the most successful communications technologies are too great to be ignored. It gives you the opportunity to invest in a technology without any threat of being shut down by an individual. In fact, it opens up whole new range of technologies besides simple monetary value. I've missed enough opportunities in the last several decades to let this one get by. It's like having a piece of a patent on email. Sure someone could create a Bitcoin 2, but that would require herding the people that make things like the internet possible. They are not sheeple. They may not allow such a thing to happen without their blessing. If anyone knows a better store of value than what Bitcoin has to offer, I sure would like to see the prospective.

Spoken with proverbial blurry speculator vision. "herding the people that make things like the internet possible"– yeah such as myself and guess where I am not herding to? Another reference or two.


text:
Will Bitcoin suffer from a mining Tragedy of the Commons when mining fees drop to zero?
One issue that I haven't seen clearly addressed is the possible Tragedy of the Commons in Bitcoin's future (see this answer). 40 years into the future, the only significant direct benefit for honest miners is transaction fees, as the block reward is almost zero.
The potential problem here is Tragedy of the Commons - it is possible that while the entire network will benefit from miners, the financial incentive for any individual honest miner to mine will be too small, so fewer miners "than necessary" will mine, leaving the network open to 51% attacks. In this scenario, the Bitcoin network will fall pray to frequent attacks and will effectively disintegrate. Also consider extensions like Open Transactions, that might make conducting transactions on the real Bitcoin network unnecessary for most users, who will flock to 2nd level networks and reduce the miner's rewards from TX fees even more.
As Bitcoin is being designed and promoted as a Future Proof system, people have tried to analyse the system's economic behavior in this future.
What analysis has been done on this problem? Is the problem likely to happen (speculative question, I know ... but back up your arguments)? If there is a likely problem in the current implementation, what are some possible way to adjust the protocol in the future to combat this problem?
Update - please see here, I described a possible scenario that leads to network insecurity because of this issue.
Update 2 - linking to a recent thread I created on the forum about this.
Update 3 - Added a wiki entry.

This is very closely related: http://bitcoin.stackexchange.com/questions/1226/the-end-of-mining I like my version of the question better though, so I'm not voting to close as dup.

I think the answer you cite is still very accurate and as of now we've seen no changes in the way bitcoin works that could solve the problem.

This question is good due to poiting out the problem with 2nd level networks.

@Lohoris: Sure, but "yes" is still the answer.

Consider the TOR network. Now they discourage everyone to relay the TOR network and be more than a client only except if the user sets up a limited liability company at least to mitigate his legal exposure. And TOR is still faster and stronger than ever!

No, the difficulty has nothing to do with the progress of bitcoin, it increases to balance the hash rate of the network to make the network come up with one block per 10 minutes in average.

Mike Hearn just posted about how Network Assured Contracts handle this problem. I don't find an immediate flaw with this.
This is how I understand the proposed solution:

Anyone with an interest in a high hash rate (basically, anyone holding
  a large amount of coins), can initiate or cooperate on
  SIGHASH_ANYONECANPAY transactions. Those are an effective way for
  people to say stuff "I pledge 10 BTC for the next miner to mine a
  block, provided 100 total BTC is donated in this transaction ...
  otherwise, I'll get my money back in 5 blocks"?
So, if people or organizations holding a large amount of BTC see that
  the security is too low for their standard, they can chip in ...
  provided others do so as well.

Hey ripper234, could you try to explain the solution in your answer (instead of just having a link)? Would be great.

@D.H. - added a snippet that explains how I interpret Mike's answer.

That's a good approach in that it decouples mining compensation from transactions. But I don't think it solves the fundamental problem. If someone thinks the chance of passing the threshold is close to 100%, he'll have no incentive to offer his own funds. So if people offer funds it means the chance is not close to 100%, which means there is always a risk of the whole thing crumbling.

@MeniRosenfeld - see a response I made to a similar concern: https://bitcointalk.org/index.php?topic=67900.msg793820#msg793820

@ripper234: If you mean cunicula's point #5, it's similar but not the same. Vagueness makes sure there are probability estimates rather than waiting games; but the point remains that a player will contribute only if there's a positive probability of failure.

@ripper234: And I guess I'll need to think re the iterated game perspective. I have the feeling that the logic of iterated PD can't be perfectly applied.

@MeniRosenfeld - to make my point more explicit about the iterated version - if the assurance protocol is initiated several times, but nobody can get the required number of donations (or just too few overall donations are obtained) , people will realize they have to "selflessly" participate in order for it to work .. because it really is in their long term interest.

@ripper234 But the whole point of the tragedy of the commons is that people don't do things in their long term interest: if they did, we would have no problem in the first place.

@Lohoris - the situation is not identical. In classic TotC there's no efficient mechanism to declare "I will donate to the common good but only if 99 other people also do the same", and really mean it.

@ripper234 this is a fair point, but I wouldn't be so sure it would be enough.

Please do not move random discussions which are not backed up with some solid theory to this site.

@StéphaneGimenez - the question as asked can have an answer that's verifiable in game theory/economics models. Let's not start a debate here whether this question is a good fit or not (you can open up a meta post if you want).

It's already done.

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.

Wow, very long discussion - thanks! I'll look into that.

How about changing Bitcoin (or starting Bitcoin2) and canceling the halving of the block reward? Each block can generate 50 BTC forever. This is inflation ... but controlled inflation. Miners still have some motivation to mine regardless of transaction fees. I'm not convinced it's the right solution because there's no way to know a-priori if a 50 BTC block reward will be valuable enough to incentive miners in the future.

Accepting your answer because it's the best we have right now. It's amazing how the discussion you linked to is a year old, and yet nobody has come up with a convincing, laid out plan about this. See also http://bitcoin.stackexchange.com/questions/3125/is-proof-of-stake-a-viable-alternative-augmentation-to-proof-of-work

Unaccepted - see http://bitcoin.stackexchange.com/a/3129/78

@ripper234: Of course if there's perpetual inflation there will be much less of a problem. Personally I'm not necessarily against the idea, but most people are. Anyway, ideally inflation would be decided on economic principles, and security should be decoupled from it. The coupling of security and inflation in Bitcoin was never designed to be permanent.

Proof-of-stake is worse in every critically important way. It not only concentrates wealth letting the rich gain most of the mining. By the same point that the barrier to entry for the monopolist is higher, so is the barrier to removing the monopolist. The monopolist can harm the network without harming himself because it gives him the power to fork the system. Govts have deep pockets and hate anonymity. War on Terror is an example that majority are sheep and will follow the official forks. Once you lose decentralized control, you'll never be able to compete to get it back! THINK PLEASE!

@ripper234 That is actually decreasing inflation, percentage wise.

Proof of stake does not concentrate wealth in the rich. It moves wealth to those people that run software to process transactions (which is desirable). All else equal, if you own X% of all the coins in existence, you will continue to own X% of all the coins in existence as long as you are staking. Doesn't matter if the "reward" rate is 1% or 100%, This rate is effectively just the size of the penalty of holding without staking.

I've read some of the linked discussions, and it seems some of the participants fail to understand the basic economic theory of the marginal cost. In any high fixed-capital business, the net present value (NPV) determines the ROI (IRR) and determines the opportunity cost where investors apply their capital. Thus, in normal functioning markets, the lowest marginal cost provider does not expand their capacity to take all of the volume at their cost, rather the market price is set by the highest marginal cost provider and the lower marginal cost sell at that price to maximize ROI and thus investment. Realize that not all investors have the same opportunity cost (some have better competing opportunities than others), thus the supply of investors at any given ROI is finite.
However there is a risk. The fundamental change facing Bitcoin's future is the shift from a forced highest marginal cost price structure— because all miners get the same price for mining a block— to a free market transaction fee pricing structure where dumping or subsidies could be used to destroy the higher marginal cost miners and gain a monopoly, thus also compromising the security of the system. However, a monopoly strategy could be applied in the current Bitcoin by dumping or subsidy to force difficulty rates up thus destroying higher marginal cost miners, and/or simply being a greater proportion of the total system hash computing power.
A solution to this problem is simple and is necessary for another reason. A market-based transaction fee does not guarantee any level of hash computing power, unless the user is motivated to pay more for more security and/or transaction processing speed. Either this is incentivized by having the recipient pay the transaction fee (which is a good idea any way), or the transaction fee should be set globally by the system to maintain a desired level of hash computing power (which means transactions that don't need it are penalized but at least it is consistent). Thinking through this further, market-based fee even if incentivized as stated, may not guarantee enough profitable business to offset the determined monopoly strategy, thus a global system transaction fee is safer.
However, a sufficiently subsidized monopoly strategy can still drive the difficulty up and/or capture a larger proportion of total hash computing power.
One potential counter-measure is LiteCoin's Scrypt, as it should make it more expensive to monopolize and reward more CPUs to be miners thus decentralizing stake, although it does open the botnet risk. If debasement is paid back to users by encouraging them to run full nodes and leveling the playing field between ASICS and CPUs using Scrypt, then it is the world's processing power versus the monopolist. The user who is not gaining from mining and thinks they are running a full node, could be advised to run a test for presence of a botnet. This plays well with my conceptualization that perpetual debasement is necessary (of which some might disagree so this answer is not making that claim). Btw, I think Proof-of-Stake moves in the opposite direction by centralizing stake.
A potential means for someone without deep pockets to monopolize Bitcoin, would be if ever there was a way to borrow sufficient Bitcoin to purchase the necessary 51% computing power, then destroy Bitcoin forcing an inflationary spiral as holders stampede to sell out, then repaying the borrowed Bitcoin at a fractional of the original value.
The current block size transaction limit doesn't accomplish anything other than cap throughput, because it doesn't move even if hashing capacity expands by either of the simple mechanisms in the prior paragraph.
Given my prior two answers got negative votes, I am also expecting this answer to fly over the heads of some voters. Apparently some of the participants either don't have a very good grasp of economics (or have a vested interest or I am wrong and they didn't comment to tell me why). I would appreciate if downvoters would at least try to defend their logic with a comment below my answer. That gives me an opportunity to debate them and show them why I think they are wrong (or to admit my mistake). The point is to make sure we collectively have the correct logic.

Please humor me with more anonymous downvotes. Bitcoin going forward will require transaction fees. How will it compete against a no transaction fee model with perpetual debasement? Since current investment in Bitcoin hinges on expectation of rising demand from future transaction volume, such a competitor pops the ponzi bubble. Also due to lack of scrypt, it is no longer feasible to earn some Bitcoin with the excess CPU power idling wastefully on your PC to drive demand for transactions.

The bitcoin borrow and destroy option is an interesting one. Could also be used to leverage all of the crypto markets as it would affect confidence across all markets.

Public Service Mining seems quite plausible to me. In 40 years time one would hope that Bitcoin would have a large number of stakeholders who have a very strong incentive for the financial system to keep running smoothly. Those stakeholders I would expect to put non-zero effort into mining even for near-zero direct reward.

I now see a much more urgent and catastrophic threat vector potentially circa 2016.
Difficulty will tend to rise and fall such that the system-wide cost of mining is nearly the value of the coins mined (not perfectly but on a smoothed basis roughly true).
Thus the lowest-cost marginal miners will earn the highest profits and rates-of-return. Thus, as Satoshi Nakamoto anticipated, mining will become centralized among those with more capital who can buy the highest performance hardware.
This is more accentuated by the designed volatility in the price of Bitcoins, because a) marginal cost producers can go through periods of negative profits or no production, and b) more capital means more inertial reserve, economy-of-scale access to capital funding markets, and access to debt to delay insolvency so as to smooth volatility in market conditions.
EDIT: Relevant excerpt from linked question above which was deleted:

since Bitcoin is such a minuscule portion of the economy and can't create such global "network effects" on real productivity, appreciation in FX price is the main mechanism for evidence of the creation of value. Appreciation in price does create some value because it encourages the teaching, investment in, and thus spread of the currency. However, when the appreciation in FX price moves exponentially faster than any human calculable time-preference for opportunity cost, and exponentially faster than growth in spending for goods & services can (due to its connection to real world of profit & loss that adapts more slowly than speculation), then the price is dominated by wild guessing, i.e. emotional speculation.

So to capture a majority or maybe even most of the mining, an entity probably merely needs to subsidize on a large-scale.
The government or powerful elite has the funds to do this, either in public view using taxes (or deposit insurance on P2P currencies) or in documented black budgets.
Is there a scenario where the public would clamor for the government to fix a problem by doing this?
Imagine the public became heavily invested in wild "dot.com 2.0" run of Bitcoin price appreciation to say $1000, $10000, or $100000 (as some people expect). All bubbles eventually crash. Tangentially, the creator of Bitcoin would probably be a $billionaire.
So with an exponential crash in price, there could be a drastic reduction in miners, joined with a public wanting to blame something or someone. The government could probably find massive support for deposit insurance.
Thus I conclude that the computational Proof-of-Work design of Bitcoin is a serious threat to anyone who views Bitcoin as being independent of the control of the government. Noting that correlation isn't proof yet via Occam's Razor it is ostensibly designed for this outcome and thus to fall into the lap of the government.
And we are not talking about 2040. The pricing froth is building now so this could happen soon. And we also have another halving of the debasement payout rate in late 2016.
Which Btw, is when the repeating-throughout-all-recorded-history Economic Confidence Model expects this current bounce of capital flows into the USA dollar economy to turn hard down again a la 2008— exactly when we will need a P2P currency to help us avoid chaos of capital controls and liquidity collapse. Bitcoin could fail at precisely the time when we will need it most. That is what concerns me so much.
I would very, very much appreciate if any downvoters sign with a comment, in case this answer becomes prophetic we will be able to know how prescient you were.

this answer is very speculative, I think it'd be worthwhile improving this with some references.

The "40 years" time limit isn't relevant at all. Since the reward for mining gradually decreases, miners will have to adjust along the way much before that time; actually they'll have to adjust every time the reward halves, unless they are operating with profits so high they will still be gaining money after the drop.
Since most of the miners are part of a mining pool, the tragedy of the commons can be easily avoided: the problem with the tragedy of the commons is that many individuals do not coordinate and can only act short-term instead of long-term. However a pool is a group of many individuals, hence it is much easier for a pool to decide to accept only transactions with a relevant fee.

Please see my update for a detailed scenario. I'm trying to understand whether Bitcoin can have a steady state where mining rewards are essentially all from TX fees.

@ripper234 updated, considering mining pools

Adjust difficulty per transaction in the block?
As I understand it a big part of the problem is that the fees people are paying might turn out to be too low.
[UPDATED] As Nick mentions in the comments of this answer: The only reason a miner would exclude a non-zero fee transaction is to save space on the block, thereby hoping that in the event of a another miner finding the block at the same time their smaller block will reach more nodes faster and be accepted. Of the top of my head this seems like it might not be incentive enough, especially if communication technology keeps increasing.
My idea is to link the difficulty required for the solution of a specific block to both the current network difficulty as usual and to the number of transactions (or total size of) the transactions in the block. Meaning transactions now have to compete to be worthwhile to add to a block.
I have no idea on feasibility, or if it's redundant with existing mechanisms but I assume that a change could be made to the protocol to make it so that when checking a blocks validity it takes this rule into account? Probably only if the block reward has reached or neared zero and over a certain minimum threshold number/size of 'difficulty free' transactions (which could be variable based on the utilization over the previous time period?).
I haven't sat down and though this through or looked at the bitcoin source code however. :)

"Because any miner has nothing to lose by including every transaction with a non-zero fee" Not true. Having a larger block means that it will take longer to be relayed, and thus is more likely to be stale.

Ah true. This means there is some incentive for the sender to out-price other transactions on a per byte basis, I wonder if it's significant enough. I'll amend my answer, thanks for the correction.

There is always an incentive to mine honestly
At present every block comes with a built-in financial reward through the creation of bitcoins. Over time, through scarcity and use, these bitcoins can be expected to go up in value. Therefore it is possible that the act of mining can be somewhat sustained purely by the value of the reward (shared out through an efficient pool) until that last bitcoin is mined.
However, that is not guaranteed by any means so we have difficulty and transaction fees to act as safeguards. As miners shut down their loss-making equipment the difficulty reacts until it becomes profitable again. Remember, in the very early days bitcoins were almost valueless but people still mined effectively because of the very low difficulty.
Most importantly, there is the transaction fee that which is the final, and most reliable, safeguard of all. This ensures that if a Bitcoin transaction is important enough to the client then they will pay that fee to get it mined - probably paying more for faster mining. This is especially true of second level operations (like OT) that will rely on Bitcoin for efficient reconciliation. There are only so many "paper transactions" that can occur before a margin call is made.
Assuming that Bitcoin is successful due to it's utility, it is reasonable to further conjecture that high value transactions will mix in with low value ones in a fair manner. Distributed mining pools will continue to share out the work and the subsequent fee reward based on contribution.
Overall, the combination of these forces will always tilt the balance in favour of honest miners getting more reward than dishonest ones.
To that end it seems unlikely that a Tragedy of the Commons (where individual gain is paid for by the group until a resource is used up) will apply.

You seem to be forgetting that if the difficulty drops too low then the network is vulnerable to 51% attack. It seems entirely possible that the transaction fees offered voluntarily won't be enough to encourage miners to keep the difficulty high enough to avoid this attack. Ok, you're probably not forgetting, but your answer doesn't seem to explain how the difficulty can be kept high enough.

One way to counter such a problem might be a miner that would be forcing some fee from each transaction it puts in a block. When the reward for generating a block will be entirely gone, a miner might decide not to even start generating a block until some financial incentive appears. If most miners would follow the same reasoning, soon everyone would have an incentive to pay a fee to get their transactions into a block. If there wouldn't be sufficient coins to be earned, it might be more cost effective for a miner to "sit it out" and wait for the transactions to accumulate.
This situation would decrease the difficulty as the average amount of computing power would decrease. It might also encourage miners to continue mining for their own version of a block after another miner has already solved it just to earn those coins. Both of those things would make it easier for a 51% attack, but by then everyone will know if Bitcoin is here to stay. If the market is the size it is today after such a long time, one might not care to go after or protect Bitcoin. If there is sufficient money to be had, there will be people mining it
All in all, approach to mining probably will change by the time Bitcoin is scheduled to reach maturity and there will be new challenges to address, but there is also ample time to prepare for that.

Please see my update for a detailed scenario. I'm trying to understand whether Bitcoin can even have a steady state where mining rewards are essentially all from TX fees. People are investing in Bitcoin as a "currency to replace all currencies". If that is not the case, I think it's best to try to analyze and detect this now, rather than wait 40 years.

I propose that the payment processing activities shift away from miners and be placed on the retailers accepting bitcoin transactions. What if every retailer accepting bitcoin transactions for more than an average of approximately $5 USD was asked to run a small scale, highly efficient mining rig at their place of business? Or even a highly efficient raspberry pie miner at every retailer accepting bitcoin? The cost of the hardware and electricity for the retailers to dedicate hashing resources to the community would be much less than the current payment processing fees charged by centralized banking entities. This would keep payment processing decentralized, the hashrate acceptably high, and eliminate the need for miners. I do not see miners adding any value to the bitcoin project now or in the future. In fact, I think the entire project is at risk due to the current mining structure, and the power of the mining pools. Retailers would voluntarily participate knowing they are doing their part to keep the network safe, secure, and bitcoin transactions affordable.  The alternative is to pay whatever mining pools demand as transaction fees.

Your argument isn't sound: "and eliminate the need for miners" No it wouldn't. You yourself just proposed that merchants would become miners instead.  –– "The cost of the hardware and electricity for the retailers to dedicate hashing resources to the community would be much less than the current payment processing fees charged by centralized banking entities." ← citation needed. –– "Retailers would voluntarily participate" ← citation needed. –– "I do not see miners adding any value" see e.g. What Value does mining provide?

Since you presume that a 51% attack would become beneficial, this will incentivize everyone to attempt a 51% attack. This is similar to an arms race, only the results of anyone doing this in 40 years would be financially cataclysmic. I suspect there will be supercomputers waiting in storage ready for anyone attempting a first strike with a strong retributive response. There will probably also be other forms of retributive attacks on the network leaving nothing off the table.

Sorry, but I was hoping for some more serious analysis of the problem.

Your question begs an answer to problems 40 years in the future. I'm not sure how you expect a engineering answer to technologies that haven't been invented yet. Speculation at this point would be science fiction.

there is concrete analysis that can be, and has been made about this. Just like if I'd ask "how can Bitcoin scale to handle VISA like volume", this question also can have a good answer even at present day, proven by rational economic arguments. I'm not driving at speculation here.

@ripper234 Master Charge is 40+, a lot has changed in finance since then. It's likely Satoshi chose the 40 year curve for Bitcoin reward just for this reason. Technology will change beyond our current paradigms. Give me a hint as to what kind of analysis you would like to have? Autonomous agents? A new algorithm? Historically, war has been used for long term financial resolution. Bitcoin will dramatically change even before it gets released and will continuously evolve and adapt to our contemporary paradigms and technologies. Anything in 10 years, let alone 40 years would be pure speculation.

Simple answer: Society cannot survive without commons and they are always manageable. Because Bitcoin is decentralized, the free market will find a solution. Already FPGA and ASIC processors are solving the electricity cost factor of mining. Hopefully, we will not legislate a central bank to take over control of the network before then.


text:
Is there a list of established sites that have started accepting Bitcoin?
Cross posted to Reddit.
I believe the Trade page mostly has new sites, not a lot of existing ones. To me, any existing, established site that goes Bitcoin is worth more than ten new Bitcoin-accepting sites.

I don't know what the policy is here, but some SEs don't allow instant cross-posting.

@ArtemKaznatcheev - really? I wasn't aware.

Is this too local?  It seems like the answer would change with time, but I don't know if that's really what the "too local" close reason is getting at...

http://stuffexists.com/  has a good list.

spendabit.co lists millions of products from a growing number of Bitcoin-enabled merchants (including the usual list -- Overstock.com, TigerDirect, etc).


text:
How do I create an offline transaction in java to broadcast via blockchain.info?
Blockchain.info has a PushTX API.
How do I create & sign a raw transaction in Java for use in this API?
Should I use bitcoinj?
Are there any code samples?

Mike Hearn's WalletTool (included in the bitcoinj library) is a pretty good starting point.
If you have a look at the 'send' method in WalletTool you can see that it:
1) Creates a SendRequest
2) Decrypts the private key if necessary
3) Completes the tx to get the inputs and find the fee
4) Signs the tx
5) Starts up a PeerGroup
6) Broadcasts it
For an offline transaction you can do 1 to 4, serialize the tx and then call the blockchain pushtx.
There is a method on Transaction called bitcoinSerialize to convert it to the bytes that need transmitting. I think you just have to convert the bytes to hex for the blockchain pushtx but you would have to try it out.

Check out https://github.com/ValleZ/Paper-Wallet - it is android lite project what does this task. Start with createTransaction method in https://github.com/ValleZ/Paper-Wallet/blob/master/app/src/main/java/ru/valle/btc/BTCUtils.java


text:
What does a negative Ripple balance mean?
I just sold some BTC for XRP, and managed to get a negative balance. WTF?

Transaction ID - E2D1BBD7A602E9D5B16FD79819A0347E18DED7F988F2F4C9EA3854BFCB4D3664

I believe that this means that you offered to pay for some bitcoin with a self-issued IOU, then somebody accepted that.

@NickODell - how can I check this? I never intended to go to a negative balance. I think I'll open a bug report on this.

@NickODell - https://github.com/rippleFoundation/ripple-client/issues/359

For a general understanding of the ripple concept you may want to read the old wiki: http://archive.ripple-project.org/
I like this video a lot:
http://www.youtube.com/user/utunga#p/a/u/0/ySzqM5dpF7s
Negative balances are very normal in ripple, for every positive balance there's another negative one. For IOUs the total balances in the system are always zero.

@jtimon - of course, it makes sense. I saw the old Ripple material a while back.

Ripple address r3AWbdp2jQLXLywJypdoNwVSvr81xs3uhn and you set up a trust line for 1.0 BTC in each direction. As part of some previous payment (not a trade), Ripple made use of that trust line just as it was told it could. If you don't want a negative balance ask people not to trust you :-). [As an aside, previous ripple implementations like classic.ripplepay.com required you to approve and limit what trust others gave you, it's more complicated and there really isn't a downside to people trusting you so ripple.com doesn't support that, at least not yet).]
Looking at the Ripple Live Graph... you currently owe the above address 0.1 BTC and you have 0.096+ BTC from WeExchange. For small amounts it's generally easiest to just leave it alone in Ripple rather than trying to zero it. The friend that has your IOU can use it to make payments through you and anyone that accepts your IOUs or that accepts any IOUs you hold.
E.g. If your friend had a WeExchange account (they don't trust WeEx currently so they may not) they could pay WeExchange say 0.06 BTC. Your total balance would stay the same but you'd owe the friend only 0.04 BTC and hold 0.036+ BTC from WeExchange. Your friend could pay their Bitstamp account too. In that case the payment would go through you, to rfTXGr6j9ExwSQd9NwRaLBCCa4VETr4GYu (who trusts you) and from them to Bitstamp. In that case the first friend would effectively be exchanging your IOUs with the second friend in exchange for their Bitstamp IOUs :-).

Also see http://bitcoin.stackexchange.com/questions/8866/ripple-a-strange-send-i-dont-quite-understand for an example of how your IOUs can be exchanged or automatically issued in exchange for others.


text:
What would it take to track dollars like bitcoins?
Watching an ATM from a large US Bank accept a cash deposit makes me wonder - what would it take to track dollars like bitcoins?
Said another way, what would a blockchain for fiat cash look like?
When I deposit cash into this ATM, it scans each banknote.  It uses Optical Character Recognition to classify the banknotes by value.  I imagine that the ATM could recognize the serial number from the bill as well, and publish a corresponding transaction to a USD blockchain.

Can't Bitcoin be serialized as it's issued? Is this too simplistic?

Well, in a sense cash-notes ARE tracked!! You've seen that scene in the movies when the "bad guys" ask for "non-serialized" bank notes as ransom? That's the exact reason: knowing dollar bills from e.g. serial numbers "AAA0001" up to "AAA1000" were given out as such payment allows a number of gov. organizations (from a number of countries) to track the movements of such bills, whenever and wherever they pop up at a legit commerce or bank that accepts them. And, of course, that allows these organizations to more or less track the movements of said people.
By asking for notes that don't conform to an (easily recognizable) set, the ability to track the where-abouts of the money (and hence, of the original people who receive it) is much reduced.
There are trillions of dollars in the world nowadays, about 8% of which exists as physical bank notes, millions getting lost/burned/teared on any day, and millions more printed. So no gov. agency would attempt to try follow the movement of any coin or bill - just the very much reduced set of bills known for being given as payment to "bad guys".

Also, bills might change hands multiple times until they go back to a bank.


text:
How to get started with a Bitcoin wallet
Where should I go to start a wallet? I have downloaded the TOR browser and got online at WEUSECOINS.COM.  Is there another site, perhaps one with more information for beginners, that I should be using?

No need for Tor at all (unless you intend to buy drugs or weapons, but in that case you're better off using cash dollars or euros).
I'd recommend to read up on Bitcoin to understand what you're doing. Then you can find an overview of wallets on bitcoin.org, but for a quick start, the fastest way to get started is:

Desktop (Windows/Mac/Linux) : Electrum or MultiBit
Android : Bitcoin Wallet by Andreas Schildbach
iOS : Bread Wallet
Windows phone : Get an Android phone instead
Web wallet, accessible anywhere : Coinpunk

These are all fairly easy to use, and don't bother you with all kinds of advanced options.

In fact, using Tor is harmful for non-technical users as it subjects them to man-in-the-middle attacks: http://bitcoin.stackexchange.com/questions/30335/is-the-threat-of-computer-malware-to-steal-bitcoin-exaggerated


text:
Is the threat of computer malware to steal Bitcoin exaggerated?
Some months ago I put a small amount of Bitcoin into an account and wrote the address and private key into a text file. I have left on my computers and on those of a couple of friends. The money hasn’t been taken.
Where does the main danger come from? Screenshots, key-logging or what?
My main motive in asking this is that I use bitaddress.org offline to generate addresses, but without using Ubuntu or taking out my hard drive. I never copy my private key onto the clipboard, and I wonder whether the danger I face of having my coins taken - particularly if I store more in this way - is real or merely highly improbable?

Peter - that text file is surely a ticking time . Imagine your machine is a minefield. Every single wallet address,. Dat and encryption protocol you use is a loaded mine. The main threat is the fact that your compounding your vulnerability manyfold; 1st, you enter other human variables. 2nd, you exponentially increase the chances of a successful breech by multiplying the amount of machines store your same wallets. No,  not so much screenshots. Kelloggs are pretty easy to avoid but yes they are problematic. No hot wallet is safe.  Period.

Yes, but I should have made it clear that I am leaving it there as a test to see if it is stolen. I think there is one milibit in the wallet! My main interests are: (i) will it be taken (ii) and by which method.

Currently attacks against Bitcoin users can be categorized as

"Normal" keylogging malware which stoles credentials to Bitcoin sites and steals Bitcoins from your online wallet (unless you have two-factor authentication). These kind of malware infections generally steal all your passwords, including Facebook, PayPal, and they do not especially target Bitcoin users.
Password reuse attacks - if you have used the same password on some other sites, your username and password are stolen or taken from the site and then tried on all popular Bitcoin sites. This may especially happen with shady services like faucets which promise "free bitcoins" if you sign up.
Phishing attacks, both via email and Google advertisements. E.g. if you search BlockChain or LocalBitcoins on Google, the first "result" is an advertisement leading to a phishing site. The user gives his username and password on the phishing site, then the site will empty the wallet on the actual Bitcoin site the user thought he/she was logging in.
Malware and computer viruses targetting locally installed Bitcoin software. These steal wallet.dat or unencrypted copy of it from the memory when you unlock it.
Malicious browser addons (Chrome) targetting popular Bitcoin sites. These may modify Bitcoin receiving address on the page in-fly, so that they can get around two-factor authentication protections set up by Bitcoin sites.
Malicious Tor exit node attacks - if you want to hide your tracks using Tor network, there are malicious exit nodes which will do HTTPS man-in-the-middle attack using fake security credentials. The web browser warns about this, but an ordinary user may ignore the warning.
Social engineering attacks. If you are a "known Bitcoin celebrity" criminals might to attack your personally, by phone calling you and posing as a service operator, police etc. They might go after your ISP, email provider, etc. and try to social engineer access to your email.
Very difficult to pull attacks, like rerouting all Internet traffic just to gain access to Bitcoin mining pool IP addresses

There are already 100+ strains of malware targeting Bitcoin users. Because Bitcoins are easy to steal from careless users, it seems to be profitable to include Bitcoin-stealing capabilities in all malware kits. In the light of this, malware threat against Bitcoin users is not exaggerated.
Of course, to get your Bitcoins stolen by malware, you need to get your computer infected. The ways to protect yourself include

Do not install applications or browser extensions on your computer from non-trusted sources, especially pirated applications or random download sites which offer Microsoft Windows application downloads. Always download all Windows software from the webpage of the software author. For OSX or Linux use App Store or the Linux distribution package manager.
Always keep the software on your computer up-to-date. Nearly every vulnerability widely exploited by cyber criminals has already been patched by the software manufacturer.
Use safer operating systems like Ubuntu Linux and OSX instead of Microsoft Windows, to lower the risk to get infection on your computer
Use password management software, like KeePassX, and random password on every website
Keep most of your Bitcoin holdings offline, on a separate device not connected to Internet


text:
Accepting 0-confirmation transactions and detecting double-spends with open source solution
I would like to accept 0-confirmation bitcoin for very small amounts. I am happy to accept zero-confirmation spends and am aware of the risks. However, the tool needs the ability to "flag" the accepted transaction/s if a double-spend is detected. I can then decide what action to take.
I do not want to use a centralized third-party tool. I would like to use something locally on the server. It would simply display pre-generated public addresses. No need for private keys and/or seeds to be on the server.
Does such a tool exist?
Thank you.

I tried to clarify a title bit. Hopefully it is ok.

I would imagine you need to interact directly with bitcoind, but there are some wrappers.

Here is one: https://github.com/snitko/straight-server - you can try to fish out Bitcond wrappers for your favorite programming language on Github search. EDIT: Straight uses blockchain.info instead of Bitcoin network, so it is out of the question

You should not interact with bitcoind, because it (current versions at least) filteres double-spend transactions
You should have your own network-sniffer solutution - the program which connects to the network nodes (as many as possible) and listens for all transactions, checking do they have conflicts with particular ones.
(How much would you pay for such program? Just interesting :) )
This is also not 100% safe solution - a miner can place double-spending transaction in block and mine it himself. Look here: https://bitcointalk.org/index.php?topic=327767.0

You can send a question to an owner of http://respends.thinlink.com/ Hope it helps

Isn't this: http://bitcoin.stackexchange.com/a/32636/14319 a way to detect double-spending through bitcoind?

Check out Bitcoin XT which is an early release version of functions that are proposed for Bitcoin Core.  It relays double spends, and notifies the wallet of double-spend attempts that affect it.
You can hook up your own code to be run immediately when a double-spend is detected, using the -respendnotify option.

Yes bitcoind filters double-spends. I am not aware of anything that can listen and detect double-spends. I too would be interested in this. I would imagine that a simple tool would be needed which just detects double-spends. You could then do as you wish with the tx ID and notify an existing payment application.


text:
Can google steal my Bitcoins if I store the private key in Google Keep note
A while ago I put all my addresses with private keys (although they did not have that much money in them) onto a google keep note. I put it on a password protected notepad on my phone now, but could anyone have stolen them from my google keep note?

It'd be a huge violation of user trust if a Google employee looked at customer data and did something like that, so I'd say extremely unlikely.
That said, you shouldn't ever put your private keys on the internet.
Lastly, if this did happen and it involved any substantial amount of money, Google would be able to determine which employee accessed your data, which you could then very likely use in civil court to recover your stolen BTC.
Disclaimer: I work at Google.

So there can't be a middle man in between me and the server where the note was stored? Also how long does it take from when the time the clicked delete on that note and when it is actually deleted for real?

There cannot be middleman, because all Google connections are HTTPS encrypted nowadays. If you want to be sure you can always move coins to a different address, though. That is more safe than deleting the note, as you have 100% control over the operation.

The same argument goes for storing your money at a bank.

I agree with @MikkoOhtamaa about the man-in-the-middle attack. SSL should solve that problem for you.
Google also (now) encrypts even more due to that whole Prism thing: https://www.eff.org/deeplinks/2013/10/prism-is-not-enough

@RileyPotts: I don't think it's safe to say "how long it takes" for something to be fully deleted, as that's actually a really complicated question.
The general gist here is: it's a bad idea to put your private key anywhere on the internet (Google or not). If you did this already, just move your coins to a new address, and the problem goes away. If you want a safe back-up, consider a BIP38 encrypted paper wallet in a safety deposit box (https://bitcoinpaperwallet.com/bip38-password-encrypted-wallets/)

It is possible that someone at Google may use that information to steal your bitcoins, but it is extremely unlikely.


text:
Are there really messages in the blockchain?

Possible Duplicate:
How can one embed custom data in block headers?

Someone told me a hacker put messages in the blockchain. What does this mean?
Edit: related asked/answered question
How can one embed custom data in block headers?

Voting to close as duplicate so that it can be merged into the other one.


text:
Is there an easy way to give people a Bitcoin address?
I see that Bitcoin addresses have built in checksums that helps prevent typos (ie. it is highly unlikely that you can mistype a Bitcoin address and have it still be valid). However, I still think the addresses are too long to easily give to someone, publish on a business card, etc. Is there any way to shorten addresses or get specific addresses?

Here are a few tips to help you distribute your addresses on a more readable form:

Firstbits.net shortens your address to (usually) less than 7 characters. To get the full address just enter the firstbits at the website (ex: http://firstbits.net/?a=1kk5k)
Use vanity generator to create a more customized address. You can try to create an address that has your name on it or any other word that you like. Bear in mind that this will still be a long address with many 'strange' characters (ex: 1stDownqyMHHqnDPRSfiZ5GXJ8Gk9dbjL)
If you use an e-wallet service, there are usually shortcodes that allow users to transfer bitcoins instantaneously between users. You can only use this if the other person uses the same e-wallet as you (ex: check Flexcoin, TradeHill or CampBX)
If you want to print your address into a business card, I suggest using QR Codes. They can easily be scanned with a smart phone.

Payb.tc shortens your address too

It's also worth noting that combining the first two suggestions can create short vanity names - for example, my nick on the forum is "enmaku" and if you enter "1enmaku" into firstbits, you'll find my address. Firstbits makes any address shorter and easier to remember, but if your firstbits address IS your name, nick, email, etc. it's even easier.

And it should be pointed out that firstbits doesn't have its own database. It's just reporting to you information from the Bitcoin block chain. Anyone can calculate the correct firstbits for a Bitcoin address just by looking at the block chain.

+1 for mentioning QR codes. I don't think bitcoin addresses should ever be typed. NFC is also nice, one of the Android wallets supports this, just tap your phone against the person you want to exchange address with and voila.

@David Schwartz That's a good point. It also means that you can't use Firstbits with addresses that were never used before to send/receive bitcoins.

Wolfram Alpha now will generate QR Codes. Example given here: http://www.bitcoinmoney.com/post/9678390130

Firstbits and similar methods are dangerous, because they are vulnerable to typos.

Some wallet services (read: at least one, blockchain.info) have support for firstbits built in. If you enter a firstbits address, it will send the bitcoins to the relevant actual address.

@wump It'll be nice when you can get an NFC chip embedded in your skin which you can control. Until then, I recommend bumping your phone against the other person's phone, not the other person.

Check out btcans.org.
The BTCANS allows you to register an account and post associate a payment address with it. You can hand out your payment BTCANS address and other users can query your payment address by entering q.btcans.org/your-id-here into their browser.
The difference between btcans.org and an address shortener is that you can change your address at any time.  Subsequent queries will return the updated payment address.

It might be worth looking at https://paynym.is too, which is used by SamouraiWallet.

There is a fairly new service that links your public BTC address to your twitter username twitter.com/jfgi as well as a WordPress plugin that turns your domain.name/btc into a short Bitcoin address .

onename is a good service for this, it uses the Namecoin blockchain so you can easily lookup the data without the onename website too.


text:
Is there a reason pooled miners should revert to 0.7 due to the fork?
Can miners who mine in a pool ignore the request to revert their bitcoind to 0.7, and stay with 0.8? As far as I know, it's the pool that counts in this case.
(Except P2Pool, which behaves a bit differently)

Miners who use a pool don't necessarily even have bitcoind. They use separate mining software (which does not constitute a node, or build blocks or anything of the sort) and the bitcoins they receive are first credited to the pool eWallet, and can then be withdrawn to any wallet.
The pool is the one choosing the blocks and even if the miner's wallet happens to be bitcoind it has no influence on this process. So there is no reason to downgrade.


text:
What is the difference between bitcoinj and BitsOfProof?
bitcoinj is a bitcoin library, bitsofproof is a full server (standalone 'exe').
Beyond the above - can anyone elaborate on the difference between them? What problems they were designed to solve, their documentation, maturity level?
Is there an overlap between them (in intended usage)?

There are lots of differences in features supported, but the crucial difference is the architecture: Embedded vs. Client-Server Bitcoin Protocol Node and Wallet.
BitcoinJ is a Java library to embed a Simplified or Full Verifying Bitcoin Node and a Wallet into your application.
The Bits of Proof Enterprise Bitcoin Server is a configurable Full Verifying Bitcoin Node written in Java. The server process is accessible through a message bus for client applications and extensions. Several layers and flavors of client libraries are available, such as: STOMP, Java, REST. The Wallet is implemented in the client library, therefore a server process can serve several unrelated applications and distinct Wallets. Several server instances might run in a load balanced configuration serving clients through a common bus. The company Bits of Proof offers commercial support and hosts server instances.

As I understand it, BitsOfProof is an enterprise level implementation of the full bitcoind client, including downloading the full blockchain and supporting a full array of features from the main client.
BitcoinJ is a java library that supports building a thinner client (downloads headers instead of full block chain) allowing for building bitcoin features into a memory or storage restricted environment.

Doesn't bitcoinj support full mode as well?

I do believe there is experimental support for the full blockchain in bitcoinj.


text:
Is an Xcode project for the Mac Bitcoin client available?
If someone wants to mod the Mac Bitcoin client for their own purposes (e.g. reskinning or development of a client with extra features), is there somewhere they could download the existing Xcode project for the software to get started quickly? If not, why is it not available?

You might want to start with a GitHub fork of MultiBit (which has a dedicated Mac installer): http://multibit.org

I don't believe the project itself is distributed, but there is a step-by-step guide to creating an Xcode project for Bitcoin in the answers to "What are the steps in building bitcoind on Mac OS X 10.6?"


text:
Is there a chart of Bitcoin merchants over time?
Does there exist a chart documenting the number of bitcoin merchants over time, and if not, would it be possible to create one from any available data source?  (I'm thinking mostly of https://en.bitcoin.it/wiki/Trade for source material)

Should be easy enough to create a script that scans the history and charts this.

I went through the last 500 revisions of the wiki page, pulled the byte count into excel and graphed it. Line count would probably be a better metric but I didn't have a readily available data source for that. If someone wants to write a script that wget's each revision and counts the number of  tags that might be more accurate, but here's 500 revisions worth of data as a chart:

500 revisions goes back to Jul 8, 2011.
Also of interest, the earliest revision (Feb 10, 2011) of the Trade page has a scant 117 <li> tags while the current page has a whopping 785! I haven't taken the time to count all the revisions inbetween but that's quite a lot of growth - 668 new entries in 225 days for an average of almost 3 entries per day or about 1,084 per year! While some of these are bound to be non-merchant list items, that's still an impressive rate of growth.

thanks, as a result of this i went and looked quickly at the byte size over time - i didn't realise it had only been around since February - and the increase looks more gradual and steady than i had expected. is there any info on trade before 2011?

Perhaps over on the forums, but that data is likely to be widely dispersed and very difficult to scrape.

I have not seen a chart.  The only way I think it would be to go through the history of the wiki page and count the merchants at certain dates to get the data.


text:
How can I securely create a QR code from a bitcoin address?
My Problem
I am trying to generate a QR code for a public bitcoin address, preferably using command-line tools. The process poses a security risk because malicious software can generate a QR code that represents an address different than the one given as input.
What Have I Tried
Searching this site and Github. I only found some unmaintained repos with very low usage.
My Question
How can I securely generate a QR representation for a bitcoin address from the command, using open-source software I can trust?

Use any software you normally use to create QR codes. Ask it to create QR for text bitcoin:<address>.
That's all you need: a QR generation tool you trust.

A simple approach to this problem is simply to check each and every QR code that the software you want to use creates. You already know what the address you're supposed to be encoding is, so once you have the QR code, just scan it with a QR scanner and compare the output to your input. Of course, they should match.
A word of warning: there is a long history of scammers creating 'Bitcoin QR Code' making apps. As a naive user, this sounds great, but really its just the scammer's way of luring bitcoin users towards their fraudulent software. I would actively avoid any QR software which is marketed towards bitcoin users in this way - just your run of the mill QR code generating software should work just fine.

Having a similar problem, I tried:

as with:
nicholas@mordor:~/qr$
nicholas@mordor:~/qr$ qrencode -o wallet.png '1F63UTxXHi7Cff4aDFdMGzgLt1CKuHpRot'
nicholas@mordor:~/qr$
nicholas@mordor:~/qr$ uname -a
Linux mordor 5.11.0-41-generic #45-Ubuntu SMP Fri Nov 5 11:37:01 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
nicholas@mordor:~/qr$

I, at least, would interested in the inverse operation from the console.  I tried a website and it seemed to return what I expected.
Although, I'm not at all sure that's what is required.  Comments requested.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How to interact with bitcoind using C++?
I know that bitcoind is written in C++, but I cannot figure out how to use its API within my program. I have been using a Python wrapper effectively, but I need another process running that is as quick as possible. Is there a library somewhere for bitcoind? Thanks.
Or could you just point me to a good Json-rpc library?

http://jsonrpc-cpp.sourceforge.net/ unless you are going to take some MAJOR time to look into how bitcoin really works just use the jsonrpc lib which works perfectly. You will also likely not achieve much more speed as the json calls are so much slower than python or C it will not make a difference.

Thanks a lot. Really, I thought it would run faster in C++ than Python?

Unless you have a very specific use case it is not worth the time to rewrite or pick up a new language.

I already know C++ fairly well, so I wouldn't really be picking it up. I'm needing to log every transaction using walletnotify in bitcoin.conf and insert them into a database. Would you recommend doing this every time a new transaction is received, or doing it in batches every so often?

why? This is already done in the blockchain.

@T9b for example modeling blockchain data

Here's a JSON-RPC C++ library.

[A Newer Library]
There is a wrapper for Bitcoind JSON/RPC interface written in C++ here. It has tests & full coverage for calls.


text:
Building on Ubuntu 16, missing SSL during ./configure
I am trying to build bitcoind on Ubuntu 16 64-bit. I have installed the dependencies and have built it fine many times on other machines.
During ./configure, I am getting
checking whether the Boost::Unit_Test_Framework library is available... yes
checking for dynamic linked boost test... yes
checking for mismatched boost c++11 scoped enums... ok
checking for SSL... no
configure: error: openssl  not found.

I have run sudo apt-get install libssl-dev and tried it, also tried brew install openssl, still no dice.
Before, I was getting a missing pkg-config at this point, even though I had installed it. I installed pkgconf and also installed it via brew, and now it's complaining about openssl, which is definitely installed.
$ which openssl
/usr/bin/openssl

Any ideas? Frankly, I'm stumped.
UPDATE:
I built openssl from source, now I'm getting this:
checking for mismatched boost c++11 scoped enums... ok
checking for SSL... yes
checking for CRYPTO... yes
checking for EVENT... no
configure: error: libevent not found.

I'm not sure what is going on... it seems it cannot find packages installed via apt-get for some reason.

I didn't want to set this as an answer, because it's really not. I set up a new server with Ubuntu 14 and it worked the first time. Very strange. Did some directory paths change in Ubuntu 16?

I guess you didn't follow https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md (builds fine at ubuntu 16.04), Looks like you haven't installed libevent-dev and libssl-dev.

I absolutely did install both of them, multiple times I uninstalled and installed via apt-get and brew, I tried both. It only progressed past each package in the ./configure file once I built from source.

I fixed the issue by installing extra libraries, the whole list
sudo apt-get install -y autoconf g++ make openssl libssl-dev libcurl4-openssl-dev

sudo apt-get install -y libcurl4-openssl-dev pkg-config

sudo apt-get install -y libsasl2-dev

Source: https://github.com/mongodb/mongo-php-driver/issues/138#issuecomment-184749966

authors: Умирбек Абдулов


text:
Error compiling altcoin-qt for Windows, getting a GCC internal compiler error
I think I managed to get all my dependencies and libraries right (fingers crossed), but now when trying to build blackcoin-qt, the QTSdk compiler gives me this error while building qtipcserver.o:
In function 'bool boost::interprocess::winapi::unlink_file(const char*)':
internal compiler error: in gimple_rhs_has_side_effects, at gimple.c:2343
[build/qtipcserver.o] Error1

The unlink_file function is on line 1638 of win32_api.hpp in the boost library. This seems like a GCC error, any ideas?

Related: https://bitcointalk.org/index.php?topic=304389.0

Most likely cause: the compiler ran out of memory.

I agree with @Eldredge. It's a compiler bug or less likely a hardware problem.
The usual fix is to make sure you are using the latest gcc and boost. Be wary of the current gcc 4.9. Its reported to have bugs.

"Internal compiler error" indicates a bug in gcc (or possibly a fault in your hardware, especially if it's not reproducible). Check that you have the latest gcc version. Otherwise, report it to the gcc maintainers, and/or start debugging gcc yourself. There isn't really anything cryptocoin-specific here.

i don't know it helps you or not but there is a very good instructions for developing your coin on windows here:
https://bitcointalk.org/index.php?topic=225690.0

IIRC the issue is that BTCTalk's post (link you posted) is incomplete. I don't know what is missing but if you really need to bring ANOTHER altcoin to market just do it through CoinSource who do so for a fee


text:
Get a JavaScript notification when Bitcoin transaction arrives to a certain address
I'd like to implement a very simple address monitoring feature on a site I'm working on. I'd like to just be able to say "Listen to this address on the testnet for money to come in", and update the HTML on the page when BTC comes in. I realize Blockchain.info provides a websocket for precisely this, but doesn't provide it for use on testnet3.
I'm sure I'm overlooking something obvious. Any help is greatly appreciated.

Added info about SoChain - you might want to check it out.

Usually you do this on the wallet service you are using. They provide server-to-server notification callbacks when the address receives transactions. Then you parse this transaction  and let your on server to notify JavaScript clients.
EDIT: SoChain offers no-authentication, WebSockets, API to monitor Bitcoin addresses in real-time. You can use this on cliet-side JavaScript directly:
https://chain.so/api#realtime-balance-updates
I don't know if any pure client-side JavaScript APIs exist with notification feature - you always need to set up webhooks to some server, or be directly connected to bitcoind.
Also there is the issue of confirmation level - when you consider the transaction to be received, how many confirmations you demand for it. You'll usually end up getting several notifications per each new confirmation.
I have done this in my open source project Liberty Music Store using blockchain.info.
For inspiration, see the relevant blockchain.info webhook code which then forwards this information to JavaScript through Redis pub-sub listener pattern (though in this case it does using HTTP long poll instead of WebSockets for Android 2.3 compatibility):
https://github.com/miohtama/LibertyMusicStore/blob/master/tatianastore/blockchain.py#L110
https://github.com/miohtama/LibertyMusicStore/blob/master/tatianastore/static/main.js#L102
https://github.com/miohtama/LibertyMusicStore/blob/master/tatianastore/signals.py#L28
https://github.com/miohtama/LibertyMusicStore/blob/master/tatianastore/storefront.py#L253


text:
Bitcoin-qt and lost local blockchain files
For some reason I've lost all data in my .bitcoin directory except the wallet.dat file. Now bitcoin-qt shows 0 balance, and it's 5 years behind sync. Is this possible to restore coins in this case?

If the blockchain files are gone, then your Bitcoin client has no way to match up the keys in your wallet with the transactions in the blockchain. Remember the balance is not stored in the wallet, but the keys in the wallet can be matched with transactions in the blockchain to calculate your balance.
Fortunately, the blockchain files are public and the same for everybody so you now just have to wait for them to download. It may take quite some time (days or more). You could try downloading a torrent of the blockchain to speed up the process, but this is optional.

In other words, since you still have wallet.dat, you still have your coins, and once you have synced the blockchain you will be able to see them.  This would be an excellent time to make sure your wallet.dat is backed up.

I have moved wallet.dat and sync is completed. Though still balance is 0 coins...

Where did you move wallet.dat? That wasn't part of the answer. If you move wallet.dat somewhere else then your Bitcoin client won't read it and you will have 0 balance.


text:
Is Bitcoin a threat to Paypal and why one cannot buy bitcoins with PayPal?
Is Bitcoin a threat or competitor to Paypal? Is this the reason that very few websites support purchasing BTC via Paypal?

Unlike PayPal payments, Bitcoin payments are not reversible. PayPal payments are reversible up to 60 days.

Accepting PayPal payments to pay for bitcoins exposes your service to a stolen credit card fraud and PayPal friendly fraud
The fraudulent buyer makes the payment in PayPal, then the payment is disputed few days after the buyer received the bitcoins. When the PayPal payment is disputed, the seller of bitcoin is left without 1) bitcoins 2) fiat currency payment
Because PayPal is somewhat hostile towards using their payment service for selling virtual currencies, the bitcoin seller has little or no means to combat against fraudulent payments or disputed when accepting PayPal payments
Thus, the result is that running a profitable bitcoin selling business which accepts PayPal payments is difficult, though not outright impossible. Thus, all bitcoin sellers who accept PayPal have very high risk premiums.

Bitcoin is threat to the PayPal business in the sense that PayPal is global dominating online payment solution and bitcoin could replace PayPal payments in many scenarios, like ordering items online internationally or remittance (sending money to your foreign friends).

Thanks for the tip. Yes I think BC can be a very good replacement as Paypal greedily charge 4% per transaction without a maximum charge!

Bitcoin may be a threat to Paypal someday (hopefully soon!), but due to the current technical know-how, the majority of users are more comfortable with services like PP than they are BTC.
I don't know any service (outside of localbitcoins) that will sell you Bitcoins for Paypal directly, but there are some roundabout methods.  Virwox will let you exchange paypal for linden bucks, then lindens for Bitcoins (~30% premium).  Alternatively, you can buy an Amazon gift card from Gyft.com and then use that credit to buy wishlists from amz2bitcoin (~15% premium).  They're not direct, but they get the job done.


text:
java.lang.NoClassDefFoundError: org/spongycastle/util/encoders/Hex in Java when dealing with Bitcoin addresses
I have a private key bigInt of type bigInteger and I would like to generate the address corresponding to this private key. I implemented the following function
public String get_address () {
Address address = new Address(NetworkParameters.prodNet(), Utils.sha256hash160(new ECKey(bigInt).getPubKey()));
return address.toString();
}

When compiling, I have
Exception in thread "main" java.lang.NoClassDefFoundError: org/spongycastle/util/encoders/Hex
at com.google.bitcoin.core.NetworkParameters.<clinit>(NetworkParameters.java:49)
at bitcoin.get_address(bitcoin.java:40)
at main.main(main.java:11)
Caused by: java.lang.ClassNotFoundException: org.spongycastle.util.encoders.Hex
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 3 more

I guess that I need to import the library org.spongycastle but I don't know how to do that in Eclipse.
Who can help me with this?
Thanks a lot.

You need to resolve the dependency org.spongycastle.util.encoders.Hex, more than likely you need to add this dependency to your pom.xml file if you are using Maven. If you are not using maven, you will have download the JAR file from somewhere and I add it to your build path in Eclipse.
From a quick Google search this appears this is  the dependency that you want.

Thanks! The link is what I was looking for. In order to get it working, I downloaded the following dependencies: sc-light-jdk15on-1.47.0.3.jar, slf4j-simple-1.7.7.jar, slf4j-api-1.7.7.jar, guava-18.0.jar.


text:
Bitcoind and multiple users
I was wondering if anyone had advice for running bitcoind for multiple users. I obviously don't want users to get into other users transactions. As far as I can tell I'll need to run multiple instances of Bitcoind, but this is a terrible waste of bandwidth. Can I at least share the blockchain across users?

Bitcoind allows you to house multiple and separate accounts in a single instance of the bitcoin client. Using the accounts feature is probably what you're looking for.
https://en.bitcoin.it/wiki/Accounts_explained

This question doesn't make sense, but I will try to answer. You need some sort of user account app on top of bitcoind to manage user authentication, account management, send/receive transactions. This app needs  to communicate with bitcoind.

Depreciated there is really no other way now other then running your own db and listening for wallet changes.


text:
Does running an alternative full node implementation benefit the Bitcoin network?
I've seen discussions suggesting that
a monoculture of full nodes
is a risk to the security of Bitcoin.
The accepted answer
to the question
"What benefit does a non-mining client provide to the network?"
gives an explanation with regard to full nodes in general.
I'm interested in alternative full node implementations in particular,
ignoring any wallet or wallet API capabilities.
Let's assume that
one or more alternative full node implementations
can run the protocol reliably and accurately.
What are the short-term and long-term benefits of running such nodes
compared to running the Satoshi client?
Edit: See also "What's the status of alternative full node implementations?"

If all bitcoin nodes run the Satoshi client then they are all affected by the same bugs. So other implementations of the protocol will certainly help in this regard. Imagine that the Satoshi client was affected by a bug that when a certain date is reached or a certain event occurs, it somehow causes the blockchain data to be corrupted or even deleted. The bitcoin network could even grind to a halt. This is quite an extreme case but it's just to give you the idea.
If alternative implementations were widely used, only part of the network would go down.
All implementations only have to agree on the bitcoin protocol, so they would still be vulnerable to bugs in the bitcoin protocol itself, but there are hardly any bugs in it, and even those could be fixed by changing or extending the protocol.
There are some known bugs in the bitcoin protocol, like for example its inability to handle dates bigger than 2106, but it's not considered a serious problem and by the time that date approaches a solution will probably be found.


text:
Do some Bitcoin wallets fail to support sending to multi-signature addresses?
The Satoshi client has support for multi-signature transactions through the JSON-RPC API since version 0.6.1rc2.
My understanding is that a multi-signature transaction creates an address which is special only in that spending from it requires multiple signatures, and its prefix is '3' instead of '1'.
As Gavin said on bitcointalk.org, "you can then send funds into that 2-of-3 transaction using the normal sendtoaddress/sendmany RPC commands, or the GUI (or anything that's been updated to recognize multisig addresses)."
What I read from that is that all wallet clients and web wallets might not yet support sending to addresses with a '3' prefix. How wide is that support currently?

Sending to P2SH addresses (addresses starting with '3') seems to be directly supported by only Bitcoin-Qt/bitcoind and Electrum at the moment. EWallets using those clients might allow sending to P2SH addresses. It's not directly supported by BitcoinJ, so BitcoinJ-based clients like MultiBit and Bitcoin Wallet for Android probably won't support it until BitcoinJ does. It's also not directly supported by blockchain.info or Armory. Some clients allow you to create raw transactions, which could be used to send to P2SH addresses manually.

Some progress seems to be going on with BitcoinJ: http://code.google.com/p/bitcoinj/issues/detail?id=461

Yes, and they are online wallets.  At this late answering of your question, most online wallets now support multiple wallet sends as 1 transaction, but not all.  Some still have a limit to how many 'second sends' per transactions to increase the fees for sending.  The ' offline ' wallets ( the personal wallets not hosted online ) all seem to allow adding additional addresses by clicking a plus sign then entering the wallet/amount for the nTH wallet you want to send to with out having to code the transaction by hand.

Sorry if my question was unclear; it wasn't about multiple payments at once, but about multi-signature transactions - see e.g. http://bitcoin.stackexchange.com/questions/3718/


text:
How does a bitcoin transaction enter the network?
I am trying to understand Bitcoin at a more fundamental level. I'd like to know how a new transaction enters and propagates across the network? I've read many Bob and Alice type scenarios where it's said that "the transaction is broadcast to the network". If there are many nodes on the Bitcoin network, how does the wallet know which node to initially broadcast the transaction to?
EDIT
Just for clarification, I'm referring to the process of sending from the client wallet (e.g. Mycelium on Android) to Node 1, before it gets propagated to all other nodes. How does my wallet know which node to send to first, or does it just randomly pick one?

I'd suggest you read this blog post about using the raw Bitcoin protocol: http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html
To answer your question, you should specifically read the "How to find peers" section of that post. Specifically this part:

There's a chicken-and-egg problem, though, of how to find the first
  peer. Bitcoin clients solve this problem with several methods. Several
  reliable peers are registered in DNS under the name bitseed.xf2.org.
  By doing a nslookup, a client gets the IP addresses of these peers,
  and hopefully one of them will work. If that doesn't work, a seed list
  of peers is hardcoded into the client.

and

The hardcoded peer list in the Bitcoin client is in chainparams.cpp in
  the array pnseed. For more information on finding Bitcoin peers, see
  How Bitcoin clients find each other or Satoshi client node discovery.

A node learns about a new transaction, either from a peer or of it's own creation.
It announces to every one of it's peers (8+ typically) with an inventory message that it has learned about a transaction or block with a particular ID.
If the connected peer doesn't already know about the announced transaction, it sends a getdata request back asking for the contents of the transaction. If it already knows about the transaction, no getdata is made in response.

Within a few seconds (less than 5s on average currently) every peer in the network has the relayed transaction. This is possible because of the mesh layout of the network, every node connects to every other node through some degree of separation. The design makes it incredibly difficult to determine if a node created a transaction or is just relaying it, this is by design.

The type of structure is known as a "gossip network". Where nodes in network try to know as much as possible.

You mention it can know about a transaction "from a peer or of it's own creation", but what is meant by "of it's own creation"? I initiate a transaction from my Android wallet, how does that reach the first node? The node itself isn't creating the transaction? thanks!

I'm not sure how the android wallet works, but it's probably different to the normal network topography. In the case of other lite clients (see, spv client on the wiki), it will announce to normal peers on the network and ignore everything else going on. It's a bit different to how normal nodes work.


text:
CLI tool to sign a transaction using a private key in an offline computer
My Problem
Consider an offline computer that has a list of private keys for bitcoin addresses. The computer has some flavor of Linux installed on it, so it can run common CLI tools and Python scripts.
I would like to create a transaction from one of these private keys into a given bitcoin address, sign it, and securely transfer it to an online computer, possibly using a QR code and a phone QR reader that can publish the signed transaction.
What Have I Tried

Searching the site, but I only found old answers
STFW, giving me non-CLI tools or obsolete answers
Playing with bitcoin-cli sendtoaddress, but it does not seem to support any given private key, just its own wallet.

My Question
How can I securely create a signed transaction with a private key, a destination address, and an amount, from an offline computer using CLI tools?

I feel like some additional info is required to properly answer this: Is importing the private keys into bitcoind an option? How are you planning to let your offline computer know about the available UTXOs for those addresses?


text:
Which bitcoin documentation is the official one for bitcoin core?
English Google searches about bitcoind and bitcoin-cli often lead to two sites:

https://en.bitcoin.it
https://bitcoin.org

Any idea which one is the official one, endorsed by the maintainers?

The material on bitcoin.org doesn't seem to document Bitcoin Core (which is a specific software wallet), but rather the Bitcoin protocol in general.  The only material specific to Bitcoin Core is linked out to the bitcoin.it wiki.

I'm not sure there is a single documentation endorsed by the maintainers.  My guess is that it would depend on which maintainer you ask.  Perhaps your question is more like this one:  http://bitcoin.stackexchange.com/questions/46067/can-we-unravel-bitcoin-core/46068

The word "official" doesn't exist in decentralized free software like Bitcoin. Both links you mention are good sites. Make sure to stay away from bitcoin.com though. It's full of lies and scams.

@Jannes Clearly, there is no official documentation in a decentralized system, the same way there is no official bitcoin implementation. However, there is often a widely accepted, well maintained and maintainer-endorsed source of information for such projects.

@AdamMatan Correct. That's why I said both your links are good. https://bitcoincore.org is another good one with human readable summaries and FAQs of technical stuff.

As far as I know there is no official documentation.
The closest you can get to it is the combination of the GitHub:
https://github.com/bitcoin/bitcoin
With the whitepaper:
https://bitcoincore.org/bitcoin.pdf
Changelog appears with every version on the core site, e.g.:
https://bitcoincore.org/en/releases/0.12.1/
And lastly, while I already linked to GitHub it is probably worth mentioning that open and closed issues are documented there:
https://github.com/bitcoin/bitcoin/issues?utf8=%E2%9C%93&q=
Hope this helps.


text:
vout value in createrawtransaction
I have been following the Bitcoin Core tutorial on creating a simple raw transaction from an offline computer using the CLI.
The part on createrawtransaction indicates that the raw transaction should have a vout value:

The output index number (vout) of the outpoint; the first output in a
  transaction is index 0

Therefore, if there is only one outpoint, its vout value should be 0.
However, createrawtransaction only works with vout=1, even though I have only one txid in the command - what am I missing here?

Can you post the transaction id of the output you are trying to use to create the transaction? If the unspent output has a vout=0, it should work just fine with createrawtransaction '[{"txid":"6aeSomeTxId", "vout":0}]' '{"1SomeOtherAddress":0.01,"1changeAddress":0.05}'

Are you using the vout of the transaction you're spending or the transaction you're creating? It should be the vout of the outpoint you're spending.


text:
Set the number of keys/addresses in a wallet
Is there a way to configure the number of keypairs (or addresses) created by bitcoind or bitcoin-qt?
I've looked at the sample bitcoin.conf file, but failed to find the relevant parameter.

You get a new keypair for each address. There is nothing to configure.

Finally found it:
# Pre-generate this many public/private key pairs, so wallet backups will be valid for
# both prior transactions and several dozen future transactions.
#keypool=100


text:
Where can I get email notifications on any transactions to/from an address I do not control?
There was at least one site that did this I remember.

None of the below solutions work to get an email when a transaction is confirmed

http://www.Blockchain.info/wallet <-- add address as watch-only.
http://bitnotify.com
http://bitcoinwhoswho.com
http://txnotify.com

The only one that still works is  http://www.bitcoinmonitor.net/. I don't see an option for watch-only at blockchain.info.

Only blockchain.info is still up among these, and I could add a watch-only address but I never got the notification email for an incoming transaction on that address.

https://txnotify.com works as of february 2020. It's very simple as well. You can get email notifications every time your bitcoin address receives money. Or when a transaction reaches a specified number of confirmations. disclaimer: I made it.

http://bitcoinwhoswho.com/
you can set up free transaction alerts for any bitcoin address here

unfortunately they don't support segwit yet

@Ossip are you fucking serious?

http://bitping.net will send you email notifications on any transactions to/from a bitcoin address.

This site can’t be reached bitping.net’s server IP address could not be found. DNS_PROBE_FINISHED_NXDOMAIN

As of October 2015, the only services that still seem to offer email notifications (for free) for transactions on an address (for which they don't need the private key) appear to be:

http://blockchain.info/wallet with the option to add a wallet as watch-only. It doesn't seem 100% reliable (it missed a few transactions initially), but now it seems to work and gives a notification pretty much instantly.
http://blockonomics.co with which I had a temporary problem with validating the confirmation email, but seems to work otherwise. Notification emails arrive a bit later (maybe they wait for the transaction to be confirmed or something like that?).

Yes, blockonomics waits for two confirmations on blockchain before sending out email Source: https://en.bitcoin.it/wiki/Blockonomics

Try http://blockonomics.co  . I use it get email notifications and check balance, sends a nice formatted email

Registration on the site is broken, email verification fails with a Python traceback.

I was able to register and still using the site. Try clearing your browser cache before signup. If this doesn't work mail to webmaster@blockonomics.co

https://cryptocurrencyalerting.com might be what you're looking for.  They will monitor a BTC or ETH wallet address and notify you whenever a transaction occurs.
 Supports email/sms/telegram/slack/etc.  ERC-20 coins are accepted.
(Disclosure: I am affiliated with the creators of this service)

Are you affiliated with that site? If so, you must disclose your affiliation, or are considered spam.

I added my disclosure

You can add that address to blockchain.info/wallet, as watch-only if you prefer, and enable email notifications.
(didn't try that myself with watch-only addresses, so this might fail)

https://walletnotify.com/

unlimited notifications
very quick response time

http://bitnotify.com

Easy setup.
Sends crafted notifications.
Watch-only address monitoring service. Works without the private key.

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

I am trying this out:
https://cryptocurrencyalerting.com/my-alerts.html
It works for btc but also other currencies. It's free and online based, so no app to install.