text:
Can multiple transactions transferring the same bitcoin be done in one block?
For example, one bitcoin from address A to address B, then from address B to address C,
Assuming that prior to the transfer from address A to address B, no bitcoin had been sent to address B.
If the above is broadcast in the same block, would address C receive the bitcoin?

Yes, this is possible. This is seen happening today in MtGox's green address implementation. The two transactions are not guaranteed to be included in the same block, because the second transaction has a lower priority for miners to include it; but it's possible, and seems to happen in a lot of cases.
Quoting from MagicalTux:

Actually if you look at : http://blockexplorer.com/address/1LNWw6yCxkUmkhArb2Nf2MPw6vG7u5WG7q
Look at transactions 597d00408b... and 557c87f205....
597d00408b... is "A to B"
  557c87f205... is "B to C"
Both happened in the same block, which is the expected behaviour.
Previous tests did not always end in the same block, so I believe some miners may consider the second transaction lower priority as it involves not yet confirmed coins. In the case of those two transactions it was as fast as a normal transaction, but it cannot be guaranteed in 100% of the cases.
If we look at the previous transactions we can see it was sometimes coming out with a difference of 1 block, or even more. If pools could put priority on green addresses it'd (mostly) solve this issue.

You can also pay a higher fee on the second transaction in order to compensate for the lower priority.

Interesting fact: transactions listed earlier in a block's transaction list are considered to exist chronologically earlier than later transactions in the same list, so transactions like these will always be in the expected ordering.

@theymos That is interesting, though how do the miners know in which order to include transactions in the block? So for this example, the two transactions are broadcasted at (or about) the same time. Some miners may receive the second transaction first. Wouldn't the same Byzantine Generals' Problem be present that the block chain tries to solve in the first place?

Transactions are put at the bottom of the block as soon as the miner decides that they're valid. If two unrelated transactions are received at the same time, then the ordering doesn't really matter. If dependent transactions are received out of order, then the dependent one will initially be an orphan (invalid) until its parent is received and included in the block. Then the orphan will become valid and will be put in immediately after its parent. (Parent-child transaction ordering is required by the network -- the other ordering is not.)

It should be pointed out that the standard client will never generate such transactions -- it will never spend coins that don't have at least one confirmation. This safety exists for a variety of reasons (that don't apply to the Mt. Gox implementation). One of them is to avoid accidentally spending coins that are subsequently revoked by a block reorganization.

@DavidSchwartz Bitcoin will spend 0-conf coins if you were the sender of the coins (from change or sends-to-self). It prefers to not do this, though.

source: Stack Exchange

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

sort: votes


text:
Creating a custom transaction?
I am trying to create a custom transaction. I am using c# and I will code the signature code myself since no library currently allows this. The transaction involves 3 players; a buyer, a seller and an escrow. The transaction must do the following.
Transaction skeleton:
1. The buyer will send 2BTC to the escrow.

2. The seller will sends 2BTC to the escrow.

3. At a later point in time, the buyer may choose to
        send 1BTC to the seller, or not.

4. If he does, the BTC placed in the escrow are
        returned (2BTC are kept by the escrow
        as commission).

5. If he does not, the BTC in the escrow are lost.

To implement this, it gets complicated. The escrow would need to run a daemon in a loop that would check to see which transaction are been placed in order to return the BTCs correctly.
Is there a way to use the advanced scripting and contract capabilities of bit coin to make it so the escrow doesn't have to run a daemon, and to simply the process as much as possible?

The prices you present are pretty steep, but hopefully this is just for clarity;).
If you don't want to run a daemon yourself in a loop, you can always try using Strongcoin's API:
https://strongcoin.com/blog/bitcoin_micropayments_with_strongcoin
It sends notification to your website when a transaction that you are interested in appears (whether it is to one of your addresses or anyone else's). It might not necessarily be exactly what you want (say, if you require 6 confirmations), but it definitely is a good place to start if you just want some notifications.

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


text:
What to save in a wallet?
I am programming a specialty wallet software. I am able to generate a EC_key and valid bitcoin addresses. I am not sure what to save to a wallet file in order to recover the EC_key in the future. Must I save both the private and the public key? Can I just save the private key?
What is the preferred format to save these keys and what openssl function should I use to restore the keys?

If you want to save your keys as a proper wallet.dat file, you would need to comply with its format.
If you want to store your keys for some other purposes, you only need to save the private keys (public ones can be recreated, you can check out my testing suite for that). You can save them in any format, but Wallet Import Format might be the best choice - it is compact and includes a checksum.


text:
How would the Bitcoin protocol be impacted if nodes only stored the blocks they cared about?
Right now, full clients of the Bitcoin network store every block ever generated (while "thin" clients instead rely on a node which does so).  This greatly increases first-time initialisation for the client, and also has significant implications for network overhead, amongst other things.  How would the network be impacted if nodes instead stored only the headers of most blocks in the blockchain until or unless they "needed" the actual block?
These situations are fairly common, such as:

verifying the validity of each new block as it is found and transmitted to the network
any time the client is sending or receiving bitcoins
etc.

so that in general clients would still download all blocks broadcast when they were online.  However they would be able to:

purge blocks they "don't care about" if storage space is limited
in the typical case, start sending and receiving bitcoins after downloading only the few most relevant blocks (and all the headers of course)
etc.

Note that there are usually several entities "invested in" the continued availability of a given block, such as the original miner, who wants their 50 btc earned to remain valid, and anyone who received bitcoins from transactions in that block.  However, one intriguing consequence of this scenario would be that miners are incentivised to include as many transactions in their blocks as possible (currently one can mine without including any transactions if one so desires).  What would the other impacts on functionality and security be?
Edit:
I'm looking for a better answer than "I think it would destabilize the network" here--I want to see some estimated impacts on block availability, network overhead up or down once the lower amount of downloading is contrasted with re-downloading later, etc.  Some statistics on how inter-dependent blocks are alone would go a long way towards a solid answer.
Edit 2:
Right now this bounty's going to Shadders in a couple of hours.  But if anyone had more detailed info on the information I asked for in my first edit, they could definitely snipe it.  Any takers?

This is relevant: https://gist.github.com/1059233

For those too lazy to click ^ Gavin is considering use of this technique to improve the start-up experience in the normal client.

There is proof of concept work in progress right now to solve this problem.  Basically by creating hub nodes capable of handling many thousands of connections.  These hub nodes are in fact a proxy backed by a real satoshi bitcoin daemon.  This will relieve standard bitcoin nodes from a lot of the connections being used up by these 'selfish' nodes and allow them to continue operating as do now.  Mining pools will have a strong incentive to run hub nodes as it will speed up propogation of their generated blocks as well as ensure they have the best chance of getting new blocks as quickly as possible.

I think if this became extensive, this would destabilize the entire network. Since nobody wants that, it won't become extensive.
The most fundamental thing the client does is decide what the current valid block chain is. Suppose I see two competing hash chains on the network. How can I know which one I should follow? The answer is to first make sure both chains are valid -- an invalid block chain can never win. How can I validate the hash chain if I can't make sure each transaction input in it validly claims a previous transaction's output? How can I do that without a full transaction table?
Suppose I see a transaction that claims someone sent me 50 Bitcoins. How can I determine those 50 Bitcoins are in fact valid? Well, I have to make sure that each input in that transaction validly claims an output from a previous transaction. How can I do that if I don't have the full transaction set?
In other words, a client cannot determine if it has received funds if it does not have access to a map of every unclaimed transaction output indexed by transaction ID.

It should be noted that the primary use for such "selfish clients" is in embedded device where not only storage but also network and CPU resources are at a premium. The current Android clients are all "selfish" and likely will be for some time to come. Since the folks running Bitcoin on their phone almost certainly have a full-blockchain node at home, they probably will not be a significant source of network problems.

I think for purposes of analyzing the Bitcoin network, you can treat it as if these clients don't exist. So they provide no benefit to the network (though they provide benefit to their users and to the currency as a whole) but do no harm. They are "selfish", but then their needs are pretty minimal as well. They are perfectly safe when they have a "known trusted" node to connect to.

The problem arises when those "selfish" nodes become such a majority that folks behind firewalls etc who are limited to 8 connections can't find a non-selfish client to connect to. Such clients can certainly addnode one or more of the fallbacks but that's a shoddy workaround at best.

Hopefully by that time there will be enough people running "generous" nodes to make up the slack. (I run several such nodes that can handle over 1,500 connections each. The busiest rarely see over 300.) Everyone has an interest in keeping the network stable and reliable.

BitcoinJ allows you to build such clients.
"How can I validate the hash chain if I can't make sure each transaction input in it validly claims a previous transaction's output? How can I do that without a full transaction table?"
Because BitcoinJ connects to a trusted node it knows that received blocks have been validated to only contain inputs for which there are outputs.

As long as difficulty stays at decent levels, checking the cumulative difficulty of a blockchain through its headers will be a pretty darn good indicator of where to start.  As far as validating blocks or transactions, you would have to spider back through their 'dependencies'.  I'm looking for a better answer than "I think it would destabilize the network" here--I want to see some estimated impacts on block availability, network overhead up or down once the lower amount of downloading is contrasted with re-downloading later, etc.

I.e. some statistics on how inter-dependent blocks are alone would go a long way towards a solid answer.

Is it possible that in the future, there will be a business in archive services?  Maybe people who wish to spend a very old Bitcoin that is more than x years old will need to wait a few minutes longer so that the archive servers will look it up.  I am using the analogy of present day banking.  My bank has 90 days of activity on-line.  If I want something older, then I have to request it and wait.


text:
What does -keypool=1 do?
I am doing some test, and am getting weird behavior with keypool.
In the 0.4.0rc1 bitcoin client:
If I set keypool=1, how many times should I be able to do getnewaddress?
Are there any resources where I can read about keypool, and how it works?

Presumably you are referring to the default Bitcoin client?  If so you should probably specify in the post, as it otherwise is devoid of context.

I have edited the question to show that I mean the 0.4.0rc1 client

Others have provided the explanation on what keypool=1 does.  I would strongly recommend not using a small kelpool unless you perform backs after each transaction.  When the client creates an address it does so randomly.  So if an address is created AFTER a backup then that address will be lost if wallet is lost.  With keypool of 100 (the default) you could make 100 new addresses (via new transactions) and the backup would still be valid.

You can do getnewaddress as many times as you want. The keypool parameter just sets how many extra keys the client creates when it needs to create keys. With keypool set to 1, the client will create one extra key every time it needs to create a key.
Setting keypool low will keep your wallet smaller. But it will mean you have to backup your wallet more often to avoid losing the keys to newly-created addresses.

The keypool is a collection of unused addresses in your wallet.  The keypool parameter tells the client how many unused addresses to keep in its pool.
Almost every time you send a Bitcoin payment, some change is generated and sent to a previously unused address.  If you have a keypool, then each time a new address is needed one of the keypool addresses is used, and a new address is created and placed in the keypool to replace the one that was just used.
The purpose of the keypool is to allow you to backup your wallet file less frequently and still have access to all your funds in the event of a hard drive failure.  If you didn't have a keypool, and made a backup of your wallet, then made a payment, and then suffered a disk crash, you would lose the change which came from that payment because it would have been sent to a new address that wasn't in the backup.
With a keypool of 100 addresses, you can make up to 100 payments between backups and still be able to access all your funds.
https://en.bitcoin.it/wiki/Key_pool


text:
How do I build Bitcoin from source in Linux?
I am running an Ubuntu Virtualbox, how do I build Bitcoin from source and run it in this environment?
I'm using the build notes from the bitcoin core github and I get the following errors when trying to do make -f makefile.unix bitcoind:
net.cpp:48:15: error: 'pnodeLocalHost' was declared 'extern' and later 'static'
net.h:476:15: error: previous declaration of 'pnodeLocalHost'
net.cpp:51:15: error: 'hListenSocket' was declared 'extern' and later 'static'
net.h:479:15: error: previous declaration of 'hListenSocket'
make: *** [obj/nogui/net.o] Error 1

Any recommendation for how to fix this?
I tried commenting out those lines of code in net.h and now I'm getting:
db.cpp:534: undefined reference to 'AddAddress(CAddress, long long)'
net.cpp:1363: undefined reference to 'AddAddress(CAddress, long long)'
main.cpp:1914: undefined reference to 'AddAddress(CAddress, long long)'
init.cpp:493:  undefined reference to 'AddAddress(CAddress, long long)'

could this be an issue with the libraries I've installed? I followed the doc pretty much verbatim.

I have added the issue to the github issue tracker: https://github.com/bitcoin/bitcoin/issues/485

Basically, you do this:

Download the distribution tarball or repository. You can use the link on the project's GitHub page.
If you used the distribution tarball, unpack it.
Obtain any needed prerequisites. Things you may need include the development packages or source builds of: OpenSSL, Boost, libZ, GLib2, and BerkeleyDB. You should be able to use your distribution's development packages for everything with the possible exception of OpenSSL. I don't know offhand if Ubuntu ships a version that will work with the Bitcoin client (including ECDSA support). If not, rebuild OpenSSL from the source with default options.
Make a copy of the supplied UNIX makefile (called makefile.unix) and call it Makefile.
Adjust the Makefile you created as needed. You may need to: Add include/library paths for the prerequisites if they're not in the usual places. Localize the name of the BerkeleyDB distribution, for example 'db_cxx-5.1' instead of 'db_cxx'. Localize the name of some Boost libraries (on some distributions, most will need '-mt' added to the end).
Type 'make' and hope for the best.
If it didn't work, figure out why and fix it.

One caution: If two builds of the Bitcoin client are linked against different versions of the BerkeleyDB package, they may not be able to read each other's database files (including the wallet.dat file). There is a process to convert the files (dump to text on one version, build from text on another) but it's cumbersome and perilous.
Update: To your two specific issues, the fix is to remove (or comment out) lines 476 and 479 in the net.h file, the extern declarations of pnodeLocalHost and hListenSocket. (Be careful, when you remove one, the line number of the other may change. Identify both changes before you make either.)

I'm using virtualbox to build test environments for commits - so no concern about two clients (yet) - thanks for the heads up and info!

I had this exact same problem building on Debian 6 "squeeze" and solved it using the exact procedure listed in Mr. Schwartz's update. I haven't tested in any other Linux - is this process specific to Debian-based distros or am I likely to see the problem follow me to Fedora, Arch etc.?

I don't know. The removal of those two lines fixes a genuine mistake in the client source. I'm not sure why it sometimes causes a build error and sometimes doesn't though. Frankly, it seems like it should always cause a fatal error.

If you're on Debian or Ubuntu, I wrote a script that will install all of the dependencies. Link


text:
How does tx fee calculation work when txin and txout are similar amounts?
This website has an example called "When Too Much is Not Enough" on its main page. I'll quote it an case this is changed in the future:

Suppose you have only two outputs in your wallet, worth 1 XBT and 2
  XBT. You want to buy something for 2.999 XBT. The coin selection code
  has no choice; it has to select both coins to get a big enough total
  to make the transaction. That means the change will be 0.001 XBT,
  which triggers the 0.0001 XBT fee for having an output that's less
  than 0.01 XBT. As a result your transaction will fail, because the
  amount you're sending plus the fee is more than you have.
What this means is that there's no way of spending 2.999 XBT when you
  have 3 XBT. You could send the full 3 XBT to the vendor without a fee
  (assuming the outputs are sufficiently old to satisfy step 3), but
  some vendors ask you to send the exact amount they specify.

Since the 1 BTC input and the 2 BTC input are interchangeable in this respect, let's (for the sake of simplicity) settle that the bitcoin client decides to send the 2 BTC input in full for this example.
Then it has to split the 1 BTC input into a 0.999 BTC output and a 0.001 BTC output. I assume that doing so requires a fee because one of the outputs is smaller than 0.01 BTC. So 0.0001 BTC have to be paid for this. This means that there now is a 0.999 BTC junk and a 0.0009 BTC. The 2 BTC junk and the 0.999 BTC junk are send away and the 0.0009 BTC junk remains at its owner.
Can you tell me what I did wrong to get an outcome different from the one of the authors of that website?

Obviously, the example is erroneous. They also neglect to consider that you could send 2.999 XBT and designate all of the remainder of 0.001 XBT as fee.


text:
What unique business models has Bitcoin enabled?
Are there specific, unique business models that have been made possible by the invention of Bitcoin?  And if so, what are they?
Edit:
I seem to be getting a lot of answers about the areas of industry that people hope and or predict Bitcoin will be great for.  That's all well and good, but it's not what I'm asking in this question.  What I'm curious to find are specific, unique-to-Bitcoin business models that did not and could not have existed before.  David Schwartz suggest there may be none (and he may be right), in which case there shouldn't be any answers here.  Please don't upvote answers which don't answer this question!
As a simple clarifying analogy, consider this question asked of the internet.  We can answer with things like "Pay per click advertising", MMO gaming, etc. because these things are specific, unique compared to anything that came before, and only possible due to the internet.  True, these have become entire industries, but they are industries that didn't exist in any form before the internet.  All I'm wondering is if anyone knows of any comparable things for Bitcoin.  I don't know of any, and I'm a fairly Bitcoin-aware guy.  That's why I asked.  Hopefully this clarifies the question.

Please don't upvote answers which don't answer this question! I'm downvoting your question because of how silly your criteria are.  MasterCard didn't "enable any new business models"; it just brought down the costs for business models that already existed -- in many cases bringing them down enough that it went from being a cottage industry to a serious business.  It's silly to expect any payment technology to make possible what was previously 100% impossible (rather than merely just-barely-profitable).  Also, your title does not match your question ("enabled" != "unique-to-bitcoin").

@eldentyrell you seem to misunderstand the question--perhaps as meaning to measure Bitcoin by the answers received or not received?  In actual fact, I can think of new business models enabled by the invention of credit cards, such as selling items over the phone.  As a unique, innovative technology, it occurred to me that there might be similar things for Bitcoin:  and after a little clarification, we now have some actual examples (Smart Property, an auditable lottery, and mine-per-view) of what I was looking for.  I imagine that's why 13 people found this question useful.

@eMansipater Are you talking about the BitCoin system as a whole or "parts" of the BitCoin system like the invention of the block chain?

I'm surprised that Ponzi schemes are not mentioned here. Bitcoin gave Ponzi a whole new dimension by combining the ease of construction due to it's widely-available nature and the anonymity of cash. It might not fall completely under the concept of a business model, but it kind of is.

Pretty sure Ponzi schemes existed before Bitcoin.

The only thing I can think of is Mike Hearn's idea for Smart Property. This would allow the ownership of physical assets to be digitally exchanged and stored in the block chain. Other than that, I think Bitcoin mainly improves the efficiency of many, mainly digital, business models.

Selling electricity over the Internet. I am operating a quite powerful solar array in a sunny region where the connection to the grid is rather poor and does not allow me to feed back much. By placing some mining rigs there, I'm able to simply "sell" my excess electricity over the DSL line.

@:Noah Brilliant.

This is just awesome example of new business model !!! Brilliant !!!

Nearly a decade later, solar has now reached the point where it's cheaper than coal, even for consumers. In the USA (New York state at least), tying excess solar energy back to the grid is difficult, costly or impossible, providing an incentive to build large solar arrays that can use their excess energy profitably for something other than selling back to the grid. Cryptocurrency mining is one of the few profitable applications that has relatively low setup cost, in my opinion.

bitlotto.com uses the blockchain to provide a cheat proof lottery which has never existed before.

Cheat proof lotteries could have existed before Bitcoin simply by publishing a salted hash of the winning numbers before selling tickets, then revealing the salt after the end of the game so people can check.

pre-determined results with a published hash would be vulnerable to the lottery owner letting his best buddy win, forcing any actual winner to cut his share of profit in half.

@Jim well "cheat proof" - you still have to trust bitlotto not to take the money for itself.

Any business model that requires micropayments is made a reality by Bitcoin (ie - tipping an artist for a song, buying an indy video game for $1, placing small bets on event prediction markets (betsofbitco.in), etc.
Furthermore, any business model that accepts high risk payments is helped by bitcoin, as chargebacks are impossible.
Various gambling systems can now occur without regard to arbitrary national laws.
Remittances are made vastly easier... send money without fees, forms, or time delay to any person anywhere in the world.

Hi Erik!  These are some general areas where we can predict Bitcoin might have an impact.  I'm looking more for specific and unique business models that have been concretely enabled.

@eMansipater By "enabled", do you mean "has been created due to Bitcoin" or "could be created due to Bitcoin". If you mean the latter, then I believe that the micropayments part of this is a good answer.

@eMansipater: It's too early for any significant business models to be enabled by Bitcoin. For example, the lack of long-term, proven reliability makes it almost impossible to build a business around Bitcoin .... yet.

@David and Erik: There are already functional micropayment systems though (like Flattr). I'm not sure bitcoin does much in that specific regard.

@David "have been made possible by the invention of Bitcoin." So business models which have not been possible before Bitcoin and (whether they have launched or not) are on track to actually exist because of it. If, as David Schwartz suggests, it's too early, then there shouldn't be any answers on this page. I'm scratching my head a little as to why answers that are general (not specific), not overly unique, and definitely not unique to Bitcoin are getting 6 upvotes. Perhaps people aren't reading carefully? We need to only upvote answers to the actual question asked, not just ones we like!

http://www.reddit.com/r/bitcointip

Business models which are prone to "chargeback fraud" or in which it is hard for merchants to know if the credit card being used for payment is stolen (if it is, the merchant loses out).
I have a friend who runs a VoIP origination/termination outfit that's pay-as-you-go (i.e. pay per minute) rather than monthly subscription.  That industry is absolutely inundated with chargeback/credit-card fraud; apparently one of the first things people do with stolen credit cards is make lots of VoIP calls.  The crazy (and often illogical) checks they have to put in place to minimize this are a gigantic inconvenience for their customers and a major expense for the company.  I think bitcoin will bring non-bulk-purchase per-minute VoIP rates down considerably.
Paypal was like this in the early days too -- a magnet for fraudsters.  The only way they brought it under control was to implement the (obnoxious) "security" measures that are in place now.
Basically any business where you aren't shipping a physical object to a physical street address is at risk of this kind of thing.  The steps that merchants need to take to minimize the level of fraud are byzantine, expensive, and cumbersome.  Bitcoin does not subject the merchant to these costs.  BitcoinTorrentz is another example; if they used credit cards it would be way too easy for somebody to pay for their service and then just issue a chargeback through their credit card company.  The sums of money involved are small and it's hard to prove to a bank that the service was actually delivered to the customer, so they'd likely lose every case (or spend more money fighting the case than it's worth).

Despite the fraud, though, people are still running VOIP companies.  So while Bitcoin might improve these businesses, there's no unique business model being created due to it.  BitcoinTorrentz is close, but it seems to me that torrent downloading services already existed before Bitcoin as well.

@eMansipater, most VOIP companies are monthly subscription.  Finding a pay-per-minute VOIP retail (not bulk) provider is not as easy as you think.  For a very long time there were exactly zero of them that supported fax-over-IP (many people complained about this).

Hmm, I think the new business models enabled by Bitcoins would be the following:

Providing paid content on a website in exchange for using the customer's computer to mine while he or she is on the website. Imagine mining during the countdown on sites like Rapidshare used to generate revenue.
Providing both hardware and support for certain businesses in exchange for running mining software on the provided machines. Imagine providing a restaurant with a computer that runs their menu system. It is a simple operation that can be done entirely on a CPU. If you provide them a normal computer to run that, you can always install a good mining GPU in there, or an FGPA module. Your software can then run the miner in the background and generate you revenue. They are connected to the internet anyway (credit card processing), and you probably can request them not to turn their computers off (for night maintenance), so you effectively have a 24/7 miner.

Since the first is actually in development/use you get an upvote--I had forgotten about that.  The second seems to be forgetting that the main cost of mining is electricity--or is this one also actually in use?

This needs to be upvoted, as it is the only answer that mentions the borrowing of idle processing power remotely as compensation for content.

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


text:
Can coloured coins be given to miners?
Does the coloured coins spec (or an informal convention amongst its implementers) track coloured coins left to the miner of a transaction's block in the standard manner?
Obviously the miner would have to be running a coloured-coin-friendly mining implementation, but I was wondering if anyone knows whether there is intended to be a way for a coloured-coin-recognising miner to do this.
The coloured coin spec document at
https://github.com/killerstorm/colored-coin-tools/blob/master/colors.md
Makes no mention of mining except to say that

Fee[s] should be paid using uncolored coins. If it is absolutely necessary to pay [a] fee with colored coins, that color should go...last.

Is it intended that in this scenario the miner can "collect" the coins while retaining their colour?

Although the standard way of dealing with colored coins left for fees is to uncolor them, it is possible to offer colored fees.
This has been recently discussed in the bitcoinx mailing list. I quote Alex Mizrahi (Killerstorm) for an explanation on how to do it:
"Pay a small amount of colored coins to output  OP_TRUE script. Anybody can spend it, but usually that would be miner who mines next block and can recognize OP_TRUE script. Thus miner can construct transaction which pays colored coins to himself and include both into block he mines."
This is the original thread: https://groups.google.com/d/topic/bitcoinx/JshJboR_vWc/discussion

Ingenious!  I forgot about OP_TRUE.  Currently this would require a custom-built client to build the transaction manually, correct?

It would require a specialized color kernel implementation (or a modification of the existing ones)

Although it's not covered by the specification, it seems logical to match all transaction fees (in the order in which the transactions appear in the block) against the block reward the same way other transactions are matched. The leaves only whether the block reward comes before or after the transaction fees. I think it makes the most sense to put the block reward after the transaction fees, since the block reward will always consist of uncolored coins (unless someone "pre-colors" them, which seems strange), and the convention is that uncolored coins go last.

I agree, but is this actually being done in any implementation of the coloured coin concept?


text:
Does a HD Wallet log my IP when i do a transaction?
Companies like BitPay and Electrum, can log my IP when I make a transaction, right? If so, should I use a Web Wallet (plus VPN) for transactions?

Electrum is not a company. This also has nothing to do with HD derivation.

I'm voting to close this question as off-topic because question has nothing to do with HD derivation as Pieter has pointed out.

HD vs non-deterministic:
"HD" means "hierarchical deterministic".
"deterministic" means: all your private keys are generated from a seed, "knowing your seed = knowing all your private keys", so that frequent backup is no longer needed.
"hierarchical" means: you can manage multiple coins/accounts/address types with only one seed. Watch-only wallets are supposed to import account extended public keys only, instead of the master public key, so that: even if there's a security breach, hardened parent nodes could still protect other accounts from being hacked, as long as the master private key is not leaked.
HD only affects how your private keys are generated and how you should backup your wallet. It has nothing to do with how you broadcast a transaction, nor with your IP address.
Bitcoin-QT was once a non-deterministic wallet: all private keys are independently generated. This might be true even if you are using a modern version of Bitcoin Core (which supports HD since 0.13), since Bitcoin Core won't upgrade a legacy non-deterministic wallet.dat to HD automatically. You can upgrade it manually by restarting Bitcoin Core with -upgradewallet command-line argument - of course, you must backup your wallet once again after this operation. BTW, if you enabled wallet encryption, or executed something like importprivkey or sethdseed in the console, you also need to backup it once again.
However, Bitcoin Core uses hardened address derivation, which means you cannot export any xpub extended public key to a watch-only wallet. Besides, Bitcoin Core doesn't provide any mnemonic.
Full node vs light-weight client
Full node wallets like Bitcoin Core reconstruct your wallet balance and transaction history by rescaning the whole blockchain locally, so that the receiving privacy is almost perfect - however, this is true only for 3rd party surveillance, your transacting counterparty obviously knows that the address which you gave him belongs to you, so that he can still try to track your transactions, which is exactly why the users are suggested to avoid address reuse (including both receiving and change address).
Light-weight clients like Electrum ask other people for your transaction history and wallet balance, so there are inevitably some privacy leaks. However, Electrum uses TLS to encrypt the traffic, so that your ISP/public WiFi provider/etc won't know your transaction history and wallet balance. You may use Tor to hide your IP address, but the Electrum server is still able to log which addresses have common owner.
BTW: Electrum servers are not controlled by the developers. Anyone is able to spin up his own server to join the network.
As for sending privacy, the Electrum server which you are using obviously knows both your IP address and what transaction you are broadcasting. However, since your connection to the Electrum server is encrypted by TLS, middlemen like your ISP cannot sniff what transaction you are sending.
Bitcoin Core relays other transactions by default, which makes traffic sniffing a little bit tricky, but not impossible still. Anyone who's able to monitor your Internet traffic, including your ISP/public WiFi provider/etc, is also able to find out which transaction is sent by you. Elipse attack is also likely to be a threat. Therefore, to protect your sending privacy, you may use Tor to broadcast your raw transaction (you may use Tor browser with an online block explorer service which supports transaction broadcasting, like this).
Using Tor with full node is still not enough
All bitcoin transactions are public information. For example, sending coins (UTXOs in other terms) which were received from different origins can reveal that they had a common owner (this was mentioned in Satoshi's whitepaper). You may learn some more advanced techniques to protect your privacy further: https://en.bitcoin.it/wiki/Privacy

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


text:
Vanity Mining Error?
Well after getting a new graphics card (7770) I can mine bitcoins at around 120 - 180 Mhash/s Depending if I run it at full power or not.
Now I thought I would try and mine myself an address using it but the miner just seems to not work.
Using Vanitygen (Linked below) oclvanitygen I set it off mining with reports of it mining at around 4MKeys/s but nothing was showing up after 5 mins worth of time(I tried a simple prefix of 1r).
I then tried using just vanitygen64 and in seconds it found an address.
Does anyone know why?
https://bitcointalk.org/index.php?topic=25804.0

Is it possible to get / post debug logs?  Perhaps OpenCL isn't installed /working correctly with your card.

The application starts and runs fine but then produces no keys, it don't error out at all.
Running it in safe mode generates the key but is lots slower.
http://pastebin.com/tYPnpJnn Is output with the -v flag

All you need to do is to add two lines to oclengine.c:
vg_ocl_device_getstr(vocp->voc_ocldid,
                           CL_DEVICE_NAME);
                           CL_DEVICE_NAME);
+           if (!strcmp(dvn, "Tahiti") || !strcmp(dvn, "Barts") || !strcmp(dvn, "Pitcairn"))
+               quirks &= ~VG_OCL_AMD_BFI_INT;
            if (!strcmp(dvn, "ATI RV710")) {
            if (!strcmp(dvn, "ATI RV710")) {
                quirks &= ~VG_OCL_OPTIMIZATIONS;
                quirks &= ~VG_OCL_OPTIMIZATIONS;
                quirks |= VG_OCL_NO_BINARIES;
                quirks |= VG_OCL_NO_BINARIES;

Add the lines starting with +, but don't copy the plus sign.
This code adds optimizations for AMD HD 68XX, 69XX, 7XXX
Thanks to Kevin Pan for his patch!


text:
How to completely empty wallets - problem with fees
I have some Bitcoin and Litecoin wallets with very small amount of BTC/LTC in them.
I want to completely empty these wallets - send all the BTC/LTC them to another address. This address can belong to me or to the others (donation etc.).
The Bitcoin-Qt doesn't allow to send from these wallets because transaction fees are higher than the amount in the wallets. It seems that I cannot "force" this client to use smaller fees or even no fee at all.
Can I use other wallets to do this? Which ones (Electrum?)?
What alternatives do I have with with Litecoins? There seems to be only one reasonable client (Litecoin-Qt).

What do you mean by transaction fees are higher than amounts in the wallets? You should be able to set it as very low, or set the config to set the transaction fee as 0.0001 or lower. What platform are you using? https://en.bitcoin.it/wiki/Running_Bitcoin

Two options, depending on your skill level and comfortability with command-line:

Try updating your settings in bitcoin.conf to allow a low (or none) transaction fee:
https://en.bitcoin.it/wiki/Running_Bitcoin#Bitcoin.conf_Configuration_File
Try running in ./bitcoind in command-line with the option -paytxfee=<amt> with whatever amount you can pay to transfer these balances out. https://en.bitcoin.it/wiki/Running_Bitcoin#Linux_Quickstart


text:
How to enable website users to trade bitcoins on my website?
How to enable website users to trade bitcoins on my website? I also want user wallets stored on my server. So users user can buy and purchase bitcoins on my website and they can completely use my website as their local wallet. Like they can gets all information regarding all transaction as history on my website.

By "bitcoind" do you mean "bitcoins"?  Or is this the actual name of an alt currency?

Why's this tagged with mining?

What you would probably want to do is just create one wallet for yourself which you encrypt, and then create some kind of data type on your server called wallet that you could create arbitrarily many of.
When people want to deposite money onto "their" wallet you would generate a new address for your wallet, which you can do as many times as you want. Once the bitcoins arrive you will credit them however many bitcoins they deposited on their fake wallet, which just lives on your server.
Then when they want to withdraw money you send bitcoins from your main wallet, making sure to never allow them to withdraw more then they have been credited.
When people want to make a purchase with bitcoins on your site you just give them whatever they paid for and deduct from however many bitcoins are currently being credited to their account.
While this is all possible, unless your making a heavily bitcoin centric service such as an exchange, I would recommend using a third party service which already has tools built for merchants such as coinbase or coinlab.


text:
Wallet problem and ASIC miner
I bought an ASIC miner but the wallet just cannot get synched. I am trying for days now and i am still 18 weeks back. Can i run my ASIC miner on a pool, while my wallet isn't fully synched and the blockchain isn't fully downloaded?

Yes you should be running something like cgminer or bfgminer which can join a pool and mine while your client is still downloading the blockchain.  You only need your own blockchain to do solo mining, and unless you are running a lot of very fast asics you will want to continue mining in the pool.


text:
share private key [blockchain]
What happend if I share my private key with my partner? Can we spend bitcoins together without collisons from the same wallet?
Me and my friend are using BlockChain.info - what will happend when we import same private key? Can this destroy this wallet?

Depending on the client you use, this could be a very bad idea, the reason being that some clients send change to new addresses while others send the change back to the sending address.
If you use an online wallet such as blockchain.info you should be fine as it sends change back to itself, and in this case you'll both be online so your clients will always have an up to date list of the transactions for that address.
The chance of having a collision (aka: Double spend) is very low as this requires you to both spend the same transactions within seconds of each other and if you are both using the same online wallet it would probably need to be done near simultaneously.
Remember that the private key fully controls ownership of the coins (hence being private) so you need to fully trust anyone with knowledge of it.

Not a good idea
If you get hacked, it may lead to distrust between you and your partner, since both of you may not believe that it wasn't the other person that misappropriated the funds.
Better to use a 2 of 3 multisig with a centralized provider holding the 3rd key, or otherwise manage the 3rd key in a way that prevents these types of issues.

Consider using a multi-signature wallet or a wallet that supports shared access without revealing the private keys. Multi-signature wallets require multiple private keys to authorize transactions, which can provide better security and control in shared ownership scenarios.


text:
Can a bitcoin transaction be reversed?
If I sent bitcoins to someone, but then want to cancel this transaction after it was already made (like a chargeback on a credit card), is this possible with Bitcoin?

There is the answer at http://bitcoin.stackexchange.com/questions/157/what-are-the-perceived-advantages-that-bitcoin-has-over-other-currencies-or-other.

Related/dup - http://bitcoin.stackexchange.com/questions/194/i-think-i-made-a-typo-what-do-i-do-now
Instead of creating a new question, let's edit that one to clarify/generify it if necessary.

I think it's worth having these separated out, because users will search for them with different phrases.  That question is about typos in addresses, whereas this question is about reversability of transactions.  They're both well worth answering, but I don't think they need to be in the same question.  Let's take it up on meta and see what people think.

meta topic at http://meta.bitcoin.stackexchange.com/questions/11/should-these-two-questions-be-combined

No, a bitcoin transaction which has already been included in a block on the longest chain cannot be reversed.  This is by design as Bitcoin is intended to behave much like cash, with recipients being assured that the money is now permanently in their possession after a transaction has been included in a block.

Bitcoin transactions cannot be reversed. However, there are escrow services that make sure that transactions are safe for both parties. For example, if you want to buy an item from someone, using an escrow service, you would first send the Bitcoins to the escrow service. The seller then knows their money is secured and sends you the item. Once you've received it, you give your "ok" to the escrow service and the seller receives the money. If there's trouble with the item (or you never receive it), the issue can be settled through the escrow service.
Aside from that, fraudulent transactions can also be settled through legal means (that might be more difficult, though).
One service (that's currently not available, unfortunately) is ClearCoin: https://clearcoin.appspot.com/
If you search for Bitcoin Escrow, you will find a couple of solutions (I'm not posting them here because I can't recommend any; maybe "What are reliable Bitcoin Escrow services?" would be a good question ;-) ).

It is indeed a good question, and it has been asked here: http://bitcoin.stackexchange.com/questions/241/which-bitcoin-escrow-services-are-available-and-reliable

Should we add a note here about reorgs?  Maybe "Bitcoin transactions that have been confirmed in the blockchain cannot be reversed".  Something about 1 hour, 6 blocks, etc.

Bitcoin transactions are not reversible. This is by design.
Whether it is a feature or a flaw depends on your point of view.
Many merchants consider it a feature as it eliminates counterparty risk.
However, some people, notably Wikileaks, have called for a cryptocurrency with time limited reversibility.

You might have posted this simultaneously, but in general try and avoid adding an answer that says pretty much the same thing.

It is not possible to reverse a transaction that has already been transmitted on the bitcoin network.  However if you can keep a transaction from being transmitted then you can close the client restore the wallet file from a backup.  When the client is restored with the -rescan flag the transaction will no longer be pending.

The only way to "reverse" the transaction is to immediately double-spend from the same set of UXTOs to a different address that you control (within a few seconds after your original transmission) and pray that the doublespend reaches enough nodes and wins.
But if your tx is already confirmed in a block, then no way.

You have on average, about five minutes to figure out you made a mistake and submit a double-spend (which should have a higher tip than the original transaction, to give the miner incentive to include it an not the original)

To be honest all has been already said about this topic and all the competent previous posters are right in that Bitcoin is by design not reversible.
But to have all the facts at hand, one needs to mention also the event of March 2013 where Bitcoin underwent a 24 block reorganisation. Before people start screaming this was a network issue/program issue and no one did intentionally try to reverse a transaction - I know, it is just so no one can say afterwords, no one told me that was possible, even if it is a remote possibility.
I think people need to know that it is in fact possible, but very very unlikely. As I do not want to scare people away (and hopefully comply with other opinions on this matter and prevent any outrage) the probability is low and there is no incentive from miners to try something.


text:
Is it true that Paypal banned Bitcoins, while Google Checkout did not (yet)?
Paypal claimed they were not allowed to sell Bitcoins, while currently it seems Google Checkout is a viable option.
So ... what's the story on this?  Is this true, and if so does anyone know why?

Hope you don't mind the extensive edit, ripper234, but this phrasing feels a lot more on topic for the site.  Let me know.

@eMansipater - no worries, thanks for the edit.

One main problem with Google Checkout - it divides its accounts to sellers and buyers, so you can only be paid in one type of account (unlike paypal). This only enables websites to sell you bitcoin, but not to buy them back from you.

I can't speak for why Google Checkout seems to have no problem, it may simply be that they are unaware of Bitcoin as of yet. Edit: A Google Checkout employee has replied that they explicitly allow virtual currencies - at least for the time being. PayPal, on the other hand explicitly bans "the sale of traveler’s checks or money orders, currency exchanges or check cashing" in section 3(f) their acceptable use policy.

It would be hilarious if someone followed Mt. Gox and sued PayPal on the grounds that Bitcoin is not a currency. https://bitcointalk.org/index.php?topic=41317.0

I've been arguing that it's more like a commodity than a currency for some time (based on the way it's held, traded and speculated in). I somehow managed to miss this post so thanks for the link, it was a good read.

@David for now they've explicitly allowed it.  I'm adding the link to the question and you probably want to update your answer.

Where can I buy bitcoins using google check out? I can easily move money from my US bank account and transfer that to my indonesian account this way.

We don't have any official word from PayPal about why they prohibit these kinds of transactions. The usual conspiracy theory is that these types of commodities could ultimately compete with PayPal so PayPal wants to hold them back. This really doesn't make all that much sense -- PayPal is not going to decide whether Bitcoin succeeds or fails.
The likely explanation is that these types of transactions have a very high fraud rate, particularly buyer fraud. The buyer simply claims he never got his Bitcoins, and PayPal then has to figure out how to verify the transaction.
You'll notice that most of these sites charge a huge premium (25% or so) over exchange rates. This tends to suggest that they're falling victim to a "fraud spiral". When an exchange has a high fraud rate because of its more liberal policies, they have to raise their rates. Legitimate users just use other exchanges because they prefer to comply with the more restrictive policies rather than paying a 25% premium. Of course, those trying to commit fraud don't care that the rates are terrible, they're not paying them anyway. So high fraud leads to bad rates which leads to legitimate users leaving and thus a higher percentage of fraud, and so on.

"PayPal is not going to decide whether Bitcoin succeeds or fails." - True, but they can slow down the adoption rate. Today it's still harder to buy BTC than it should be. Ah, the days where you could buy via Paypal from "Morpheus"...I don't think that high fraud rate is the reason - Mt. Gox would love to accept paypal deposits and deal with the fraud themselves.

Mt. Gox is asking for the impossible. There is no way for PayPal to not deal with the fraud. PayPal will either have to credit everyone or handle chargebacks. If they credit everyone, what is Mt. Gox going to do?

For example, Mt. Gox can sell only to users they've had a lot of prior successful business with. They will see a very very low fraud rate IMO.

I find that very, very hard to believe, since Mt. Gox specifically refuses to take credit cards saying: "No, just no. Credit card has no place for this type of trading. You can't even fund your regular stock brokerage account with CC." Why would they want to accept PayPal with all the fraud being their problem and not take credit cards at all, where the fraud would be even lower. (Since they can dispute chargebacks in that case and they have better ID through the bank info.)

well, I don't know about CC, but at the time they simply sent funds only 2 weeks after the PayPal transfer went through. There are people that would be willing to wait 4 weeks or whatnot for the paypal chargeback period to be over (I'm sure you can't charge back a year after making a PP transfer, right?)

PayPal can't allow that. We were talking about Mt. Gox handling the fraud. Waiting 4 weeks puts the fraud on the consumer. PayPal would, of course, never allow that.

I don't understand why, but I think this comment thread is long enough as it is.

let us continue this discussion in chat

I run http://accesscoin.com
Here is what I have found.
"Selling virtual currency via Google Checkout is allowed though." shamor - Google Employee - 7/31/11 --
http://www.google.com/support/forum/p/checkout-merchants/thread?tid=3dd3aaeb58f9fd94&hl=en

Paypal does not allow their service to be used as a currency exchange. They classified Bitcoin as such, so people are forbidden to trade bitcoins using PayPal (see this post about CoinPal)
Google Checkout either considers that bitcoins are Virtual Goods or simply hasn't made any decision yet. These users selling bitcoins with Google Checkout started their business just a few weeks ago.

Google built its own library to handle bitcoin. They also have the google wallet and nfc coming out. If you put all this together google could be positioning itself to become the best bitcoin ewallet.

The Bitcoin projects you are referring to were not written BY Google, they were written by Google employees "20% time." There may indeed be Bitcoin-related projects in the works at Google but if there are, they're keeping tight-lipped about them.

Presumably because Paypal is an arm of eBay which has to tread water on its own, making Bitcoin a fair threat, since it does away with the standard payment processing system.
Google Checkout is just a service of Google, which doesn't really factor into Google's overall earning strategy.
Also, google tries to appear nerd chic, which is easier if you don't anger your IT guys.


text:
Is it possible to send bitcoins without paying a fee?
I am using the 0.4.0 release. Is it possible to send bitcoins without paying a fee?
Who gets the fee ? Is it only miners discovering new blocks?

It would also be interesting to compare bitcoin with credit card fees, which are quoted 2/4%, in terms of speed/guarantees.

It is possible to send Bitcoins without paying any fee. The easiest way is if your transaction meets the following requirements:

The transaction only sends coins to one address, plus the return of change. (No more than two 'out' scripts.)
The transaction doesn't need to gather a large number of small transaction outputs. (You are spending funds you received in a sensible way, not as a large number of micro-transactions.)
The funds are stable. That is, you aren't spending funds you recently received.

Otherwise, the transaction fee goes to the miner who includes your transaction in a block.
Currently, it is possible to get any valid, standard transaction into a block without paying a fee if you are willing to be sufficiently patient. You may need to specifically configure your client to connect to a client known to accept such transactions and known to relay them to miners. (Luke Dash Jr. runs one such node, with IP address 173.242.112.53.)

Yesterday bitcoin client never send my bitcoins and today it seem to work perhaps is it required more than 50 confirmations to send bitcoins without fee?

The client tries periodically to send out the transaction. I won't retry too often because it's trying to disguise itself as the source of the transaction. As it tries over and over and as the transaction's priority increases, it will send the transaction to a client that's willing to relay it.

Ok but the problem yesterday was that the bitcoin client did not let me insert the trasaction , it show me a message asking for paying a fee of 0.005

By default, the Bitcoin client will not create a transaction it will not relay. This is because it provides no way to remove a transaction, so you could get stuck and wind up with unspendable coins. You can set MIN_RELAY_TX_FEE to 0 in main.h and recompile yourself, but be warned, you can get stuck transactions that can take days to process. (Make sure all transaction outputs are greater than .01 Bitcoins or it will get stuck forever.)

Those comments were really important, mind including them in the answer itself?

Regarding #2, would it be possible to "defragment" your funds by sending your entire wallet's worth to yourself? Seems like the only factor that one doesn't really have control over.

@lunboks: Yeah, but then your coins would be newer, so it wouldn't help all that much.

@DavidSchwartz That's true, if I wanted right-now results. I'm assuming it doesn't make a difference whether my coins are a year or a month old though.

Some wallets (such as Unowallet) allow you to send zero fee transactions at your own risk. If less than 0.1, those transactions mostly get returned back to the wallet after a couple of days (coins are not lost).

Can you be more specific about what "stable" means? Is this a particular number of confirmations, or an amount of time, or something else? Also, what number is the maximum number of "small" transaction outputs that doesn't trigger this behavior? And what is "small"? And is this an artificial constraint by the client, or is this something inherent in the bitcoin protocol?

If you're comfortable with putting your private key in JavaScript, you can go to brainwallet.org and under the transactions tab, you can hand craft a transaction message where you set the fee to whatever you want. Keep in mind that if it's nothing, brainwallet won't keep on retransmitting it. Also, it's possible that it will never be confirmed, but most clients will delete unconfirmed transactions after three days.

"Putting your private key in javascript" is meaningless. Javascript isn't some magical place you can put data. Its a programming langauge. What you need to be comfortable with exactly, when using brainwallet, is that their web application truely doesn't send your keys over the internet, and you need to be comfortable that your browser isn't compromised.

Sometimes Services provides Something that just work…
https://pro.coinbase.com/ pays miners fees for you.


text:
Is it possible to estimate the Gini coefficient for Bitcoins and if the trend is increasing or decreasing?
The Gini coefficient is a measure of the inequality of something's distribution, where a value of 0 represents total equality and a value of 1 maximal inequality.
Is it possible to perform this type of estimate on how bitcoins are distributed throughout the userbase? And/or is it possible to tell how this distribution is changing over time?

The Gini Coefficient doesn't seem like it would be very useful for such a small economy. Ask again when bitcoin has a significantly larger network and you might get a useful answer.

There is no real way to know. People might spread their holdings over several addresses, and one address can be a cold Mt. Gox store for a huge portion of the economy, and not owned by any single individual.

In its current form this question is not terribly constructive, since it is poorly phrased and has no real way of being answered.  I would encourage a rephrasing such as "Is it possible to estimate the Gini coefficient for Bitcoins?"  The answer to this would be no, but it would be constructive and helpful if answered well.

I re-phrased the question based on the feedback above.

The fact that some folks don't see how to do it now is no reason to close the question.  I suggest it be reopened.

I also think that the question is perfectly valid, and I would be very curious to read a good no answer, since I would naively expect it to be possible to at least approximate.

@dave-perry perhaps you could explain why. your comment is pretty flat without further explanation, which im sure the community would be happy to hear.

The owner of the Bitcoinica site has released some data from his site which may reflect the wider bitcoin economy. He gives a value for the Gini coefficient of:

Gini Coefficient = 0.87709

The Bitcoin Report site also releases a regular report on the number of bitcoins in the top 100 wallets. Although one person can own multiple wallets or a wallet of a exchange (e.g. MtGox) may contain coins with multiple owners so it is impossible to know for certain the real wealth distribution but it may have some correlation.
The Bitcoin Trader blog used the Bitcoin report data on the top 100 wallets and compared the data from May 1st and Oct. 29th 2011.
.
From the Bitcoin Trader:

The distribution of coins among the top 100 has evened out, as can be seen in the chart.
Even though 1,310,000 Bitcoins have been mined since May 1st, the top 100 have still managed to increase their relative wealth, and now hold 29.8% of all the Bitcoins ever created!

While  certainly not perfect these type of statistics may be give some indication of the trends in the wealth distribution in the bitcoin economy.

The plateau at 50,000BTC looks suspicious - I wonder if a big holder has multiple addresses with 50,000BTC in each?

@HighlyIrregular a big holder had multiple addresses with 50,000 BTC in each.  It was MtGox, and they combined 10 of them into a single 500,000 BTC address on 16th Nov 2011.  See the transaction blockexplorer:  http://blockexplorer.com/t/2aXLZLjoP6

Yes, BitCoin's high gini coefficient is one reason many people prefer DogeCoin :  http://www.businessinsider.com/bitcoin-inequality-2014-1

Once you have the relevent statistics this is easy. Collecting those statistics is hard though, due to bitcoins level of anonymity. You would probably need to do a survey.

I think this summarizes it entirely. There is no real way to track statistics of bitcoin users.

you can look at the Gini coefficient between wallets; that should be relatively straightforward? Technically a single user can have many wallets, but I am sure this is atleast a good starting approximation, no?

a question that peruses this approach is here: http://bitcoin.stackexchange.com/q/810/46

@ArtemKaznatcheev there is no way to identify wallets from the blockchain, only addresses. A single wallet can handle anywhere from a few dozen to hundreds of active addresses and those addresses can't be linked together.

It is possible, you will first need to collect statistics on bitcoin usage.


text:
What improvements could a next-generation cryptocurrency implement?
What would next generation cryptocurrency would look like? What are the major weaknesses that you think we could solve? How do you envision it could be implemented technically? For example:

How could tracing transaction be eliminated or reduced?
How could security be improved?
Etc.

This is a very open ended question. If you focus it, you could probably get better answers.

Actual decentralization. Making the 'mining' if there is any, be useful computation if possible.

What about the infastructure of next gen crypto currency, what about implementing mining capabilities with renewable energy sources. Are crypto-currencies sustainable? How can crypto-currencies be made more sustainable? How much electricity around the world is being used at the moment to mine bitcoins? whats the carbon foot print? What will it be in the future?

@PeterMichealLacey-Bordeaux: The mining is useful computation, it secures the blockchain.

But that is literally it. There is no reason it couldn't be folding proteins or something that the rest of humanity could do. It just needs to be hard to do and easy to check.

See the hardfork wishlist on the Bitcoin wiki.

Would prefer memory intensive rather than processor intensive proofs of work.  ASICs make too exclusive and small the number for who possible mining is.  51% attack real worry for bitcoin.
51% attack can destroy bitcoin value completely.  May not be profitable in bitcoin but possible do for reasons other.  Imagine Chinese gov't considering people bypassing currency controls, or worse funding "terrorists" who want free speech.  If is considered "Existential Threat", expect no hesitation on part of gov't to spend enough to destroy network, even when not profitable the destruction.
Also consider financial businesses eating whose lunch is bitcoin.  What problem has toll troll making $Trillions on transaction fees spending a few $Billion to protect business from impending destruction?
Proof of work amenable to custom ASICs is worrying like finding half a worm in remaining apple.


text:
How can I contribute to the open source Bitcoin project?
Generally speaking, how can:
A) A programmer contribute to Bitcoin?
B) A non-programmer contribute to Bitcoin?
Essentially; which areas are in most need of programming work / non-programming work?

As a Programmer
You can contribute by acquiring the bitcoin source code at github.  Fixing bugs, adding features and creating a "pull request".  Here are guidelines for creating pull requests.
Gavin Andresen, currently the lead developer of bitcoin, has suggested that testing is a bottleneck, so it would be helpful to compile the existing pull requests on github and test them.
It should be noted that it is possible to safely test bitcoin transactions without using real bitcoins by using the testnet (see the -testnet command line option).  You can even create your own self-contained testnet-in-a-box.
As a Non-Programmer
Learn more about bitcoin. Try using them. Learn proper ways to secure them. When you become better versed in bitcoin technology help by explaining it to others.  If you have a business, experiment with accepting bitcoin. If you are a customer, ask if a business accepts bitcoin. Help to dispel the myths and misunderstandings of bitcoin whenever you talk about them. However, be careful to get your facts straight.
If you have talents in other areas such as design, business, or blogging, etc. then look for ways to contribute using those skills. It has been suggested that the client needs better interface designs, businesses have expressed interest in advice on bitcoins, blogging can help address all the misinformation and rhetoric.
Everyone has something they could contribute, so give it a try.

Also, open source projects ALWAYS need documentation.

Developers
Join one of the many bitcoin library projects on Google Code or Github:

Multibit A Java based front end client
BitCoinJ A Java based support library to make developing Bitcoin based applications much easier
BitCoinSharp A C# based support library (sister project to BitCoinJ)

Marketers
Spread the word about Bitcoin to others. Download a copy of one of the many wallet applications to your phone and demonstrate using it to buy something from someone.
Speculators
Spend some of your coins to encourage merchants to adopt Bitcoin. Goods and services will be encouraged by demand. So buy stuff you need on a daily basis using bitcoins.

It would help if whoever downvoted this explained why so that edits can take place.

guessing that it was someone who disagrees that hoarding coins is bad

Good point since under close analysis hoarding may not be detrimental. I'll edit accordingly and see if it goes away.

Whether you are a programmer, or a non-programmer, Bitcoin needs talented minds to help make it easier to use, and more widely accepted.
For programmers, one key area needing help is the User Interface (for both the trading exchanges and the wallets).  Another area is helping the payment processors like http://bit-pay.com get written into all of the popular shopping carts.
For non-programmers, the key area needing help is marketing.  What is the most effective way to tell people about this great new invention called bitcoin?  It's very much like the invention of the internet.  It will change people's lives, once they discover it.  And they will, one person at a time.

It's important to note that since it's unbacked, network effect is the only thing that gives bitcoin value. If you want to add value to the system, add people.

The easiest thing to do is to try and start using it, and tell others about your experience.  The more people that know about bitcoin and are out there trying it.... the better off bitcoin will be.


text:
Formal security analysis of Bitcoin
I was wondering if there is any in depth (with formal theorems) analysis of the security of the Bitcoin system.
The analysis in the original paper by Nakamoto is quite empirical and not that formal. I would love to see a detailed statement of what the actual assumptions for Bitcoin security are and what these assumptions imply about the security related to the "corruption" of the block chain and double spending problems.
I can deduce the respective theorems from Nakamoto's security analysis but I am not an expert in this area and there could be some hidden assumptions/implications I could overlook.
So I am wondering if someone else already tried to do a formal and detailed analysis of the  security aspects of Bitcoin perhaps in the same manner as some textbook treat other cryptographic applications?

Currently I'm in the process of finishing my master thesis on the topic of Bitcoin security, and I know there is one more person making a similar master thesis. While it might not be as in-depth of an analysis as a professional cryptography expert might perform, it should be fairly extensive.
Over the course of working on the subject I haven't found any article more comprehensive than the Bitcoin wiki page on Weaknesses of Bitcoin. A lot of problems have been covered in depth on this Stackexchange, as well as some topics on the Bitcoin forum.
EDIT:
My master thesis is available to read in this thread on the Bitcoin forum. It covers a wide analysis of many aspects of Bitcoin, from its cryptography algorithms, through the protocol, the standard client, Bitcoin-related applications, and even users' behaviours. I hope that answers your question better.

I found those really reasonable papers, wish it will help:
https://sites.google.com/site/2ndbtcwpaper/2ndBitcoinWhitepaper.pdf
Reid, F., & Harrigan, M. (2011). An Analysis of Anonymity in the Bitcoin System. Network, 1318-1326.
Laurie, B. (2011). Decentralised Currencies Are Probably Impossible But Let ’ s At Least Make Them Efficient, 0100.
I am also doing my master degree to adapt Bitcoin in CO2 trading,security and privacy are my main focus in that perspective


text:
if the cap is 21 million bitcoin does this mean that there will be only 21 million transaction?
so as the tittle says , and if I got right , a bitcoin is given to the first miner who got the right hash , so with 21 million cap does this mean the limit of transactions is also 21 million transaction ?

No, this is not correct.

It is possible to spend tiny fractions of a bitcoin.
Coins can be passed on from person to person (just like any other kind of money).  So the same coins can be involved in many different transactions.

Incidentally, the reward for a valid block hash is currently 25 bitcoins, not 1, though this will decrease over time.  Even after this decreases to 0 (when the total number of bitcoins in circulation is 21 million), it will still be possible to have new transactions as people give each other bitcoins in exchange for goods and services.
There is no practical limit on the number of transactions.


text:
Is the merkle root random? (Crytographically secure?)
If I look at a block
000000000000000004f0cc322f551e39676f781186441614da3281bbc7d373e0
I can see the value of the merkel root: 9fe31d0d9d06d9da341a3ee757c57bb29af522796d5d9efa5efded8cda1684a4
Which is supposedly the hash of the hash of all transactions.
Is this value randomly? Could it be manipulated, through people spoofing transactions, or is it cryptographically improbable to know in advance?
I know that the block isn't cryptographically secure for the reason mentioned below, but I was wondering if the merkle tree itself was, thanks!

000000000000000004f0cc322f551e39676f781186441614da3281bbc7d373e0 is not the merkle root, it's the block hash. It seems that's what you are asking about, so I'll answer that.
It's not random, nor cryptographically secure random.
Not random: As you can see, it begins with many zeroes, which a random hash is VERY unlikely to have. The right-most bits are random for the most part, but the value as a whole is not random because of the requirement that the block hash begin with so many zeroes to be a valid block.
Not cryptographically secure: A miner could, although it would be expensive for them to do so, mine many blocks and only submit ones that end in 'FF' for example. So, miners have the option to publish or not publish any blocks they solve. As such, since miners are producing these blocks, it is not cryptographically secure random.

Whoops, sorry I actually did mean the merkle root but I copied the wrong thing! I've edited my answer above, thanks! @StephenM347


text:
bitcoind not booting, tons of output in debug.log file
running $ bitcoind -server just hangs, when I look at my debug.log file it's going really crazy:
2016-03-19 01:26:51 UpdateTip: new best=00000000000005f9ff6fe1e9e19f6f64dd9c1167077b7de4b93146df2e6f1004  height=192099  log2_work=68.48247  tx=5576861  date=2012-08-03 09:07:41 progress=0.022371  cache=46.6MiB(128445tx)

The docs show me that running bitcoind should have asked me to set a password, but I never got that. Is something going wrong? Thanks

The documentation on bitcoin.org is currently out of date.
As of Bitcoin Core 0.12, there is no need for the rpcuser and rpcpassword in bitcoin.conf anymore, as cookie authentication is now used when they are not present.

Thanks, I'm out of upvotes but will upvote you when I get the chance again in 6h. Where can I find the most up to date docs for Bitcoin?

Turns out that $ bitcoind is just downloading the blockchain, the docs here: https://bitcoin.org/en/full-node seem to be incorrect. :\


text:
What are the downsides of Hodl Invoices?
As far as I understand hodl invoices enable some interesting use cases. However, I heard that they can be detrimental to the network. Is that correct and in what way? Additionally, at a talk at the Lightning Conference 2019 it was mentioned that people should avoid relying on them in the future. Why?

I didn't attend the conference but here is my take on Hodl invoices. In a normal Lightning payment, the sender pays an invoice which contains the payment hash and the payee releases the pre-image to that payment hash for the successful resolution of the payment. In a hodl invoice the sender pays an invoice to the receiver, but the receiver does not release the pre-image instantly. Instead it waits for other conditions to be satisfied for the payment to be released. To cite an example, let us say you are in an apparel shop and you did not find a T-shirt of your size. The owner tells you that they need to check in their inventory to see if the item is available and they will courier it to you if it is available. But for they ask you to pay in advance. In this case, you pay the invoice, but the shop owner will only release the pre-image if the item is available.
This can possibly create some routing issues. Since hodl payments are identical to normal payments, intermediate nodes cannot tell the difference. So, by forwarding hodl payments the intermediate nodes are locking in their liquidity in invoices that will take long time to settle, thus hindering their ability to route more payments. Even if the amount is small, Lightning implementation allows only 483 concurrent HTLC payments to conform with the standard transaction size, which will take up the transaction number space. Although this might not be an issue now, but as Lightning gets more adoption it might have he potential to squeeze the liquidity out of the network.
Another issue that I see is that if the receiver does not cancel the payment or send the pre-image within the min_final_cltv_expiry, than the penultimate node will force close the channel with the receiver through an on-chain settlement. If the penultimate node had opened the channel, then under the current specs, it is liable to pay the fees associated with it (including the HTLCs). Moreover, with hodl invoices you are trusting the receiver to do the right thing in terms of releasing the pre-image or not, based on other physical/virtual conditions.

Thanks. Just to clarify, when you said that "intermediate nodes cannot tell the difference" I was first thinking that they should be distinguishable based on the ctlv_expiry. But apparently the default is on the order of hours, which is already way further down on the HODL scale than a normal lightning payment.

@nickler (1/2) What you are saying is the min_final_cltv_expiry which is specified by the recipient. Intermediate nodes are not aware of that when adding the HTLC. What they know is the cltv_expiry which is calculated by summing the cltv_expiry_delta of each intermediate node and min_final_ctlv_expiry of the recipient. Now, in a normal operation, if there are 19 intermediate nodes (max) in the path, then using 12 blocks (default suggested by the specs) that is equal to 228 blocks (1.5 days) + 9 (default for final node) = 237 blocks.

(2/2) Compare that to a hodl invoice add where the final node wants 1 day of time (144 blocks) and there is only one intermediate node that uses 12 blocks of cltv_expiry_delta. That comes to 156 blocks. Now, since the intermediate node does not know where it lies in the routing path, it does not know if the first case (237 blocks) is the normal invoice vs second case (156 blocks) which is a hodl invoice. So you cannot actually justify just based on the cltv_expiry.

HODL Invoices wld be a great way to get non-custodial escrow services onto ln. Is this still bad practice? There a better way to do it?
Any idea if PTLCs would enable more than 483 concurrent HODL invoices?
I'm imagining that a lot of apps on Nostr will require escrow (marketplaces, Amazon, etc..) and would be best to keep it non-custodial escrow for least amount of screw-ability. And best to keep it on L2 to keep it near free.
I'm just assuming 'escrow' lightning node services will spring up and will over time have to pay more for channels due to the illiquidity they cause


text:
Woo Commerce pubKey+publicIP (URI)?
I have integrated my bitcoin lightning network node with the Woo Commerce plugin available on the " https://github.com/ElementsProject/woocommerce-gateway-lightning" .
But facing trouble to get payment on my generated invoice .So somebody recommended to connect to WooCommerce Shopping Store.
Can anybody help in finding pubKey+publicIP (URI) for WooCommerce Shopping Store. I found it on Internet but could not find it.

You should only need to connect to any of the nodes in the Lightning network and it should take care of learning about the rest of the network. So my suggestion would be to take any node on https://lnmainnet.gaben.win/, look at its details, and if it has a public key and IP associated just connect to that one.


text:
Lightning Network `channel_update` message Flag clarification
This is a lnd.log line:
2019-01-11 12:20:13.904 [DBG] PEER: Sending ChannelUpdate(chain_hash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f, short_chan_id=601495532567724033, flag=256, update_time=2019-01-11 12:19:08 +0100 CET) to 46.229.165.136:9735

Since I cannot find a direct correlation with the spec at https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md
can someone clarify the "flag" value?
Where can I find the information below?
[1:message_flags]
[1:channel_flags]
[2:cltv_expiry_delta]
[8:htlc_minimum_msat]
[4:fee_base_msat]
[4:fee_proportional_millionths]
[8:htlc_maximum_msat] (option_channel_htlc_max)

Are they encoded in some way in this "flag"? How?

The flags field (2 bytes) has been split into two different (1 byte) fields, the message_flags (most significant bits) and the channel_flags field (least significant bits). Hence the flags value displayed in lnd has the message_flags byte set to 0x00 and the message_flags set to 0x01.
message_flags indicates that this channel_update has some optional fields appended to the end. In this case it has the 0th bit set, which corresponds to the option_channel_htlc_max option, hence the channel_update has an additional field htlc_maximum_msat appended.

So Basically the "Flag" is a 16 bits field [8 bit message_flag + 8 bit channel_flags].
Is it possible to find the others information [cltv_expiry_delta, htlc_minimum_msat, fee_base_msat, fee_proportional_millionths, htlc_maximum_msat] exploring the log or it is only possible by using the lncli getchainifo?
How can a Node, receiving a channel update message, understand and set the new channel policies?

Not too familiar with the lnd RPC interface, I mostly work on c-lightning. But I guess it should list those with peers as well. And you can set all of these parameters on startup using cli options.


text:
What forums or websites have an active bitcoin section?
Which websites have active bitcoin communities with discussion that is going on?

Bitcoin Talk is currently the most active.
The bitcoin reddit also has a fair amount of traffic and discussion.
After that, it falls off pretty significantly.
Talk Gold has some discussion, so does bitcoin.org.uk.
bitcoinforums.net and other forums are sparse. (See link to wiki in Chris Acheson's post for a list of all current forums)
There are of course often discussions about blog posts or news items on tech related blogs like Slashdot, Ars Technica, Wired, etc. The same is true of some sites dedicated to online gambling, and some Tor forums dedicated to the Silk Road and similar projects.
There have also been some longer threads that are especially useful for miners at the Overclockers Forum

Witcoin. They have an interesting concept to keep spam down: You have to pay to post (using Bitcoins). Revenue gets shared between the site and the poster your replied to.
However, it appears Witcoin is defunct now, though.

The bitcoin.it wiki has a list of forums.  BitcoinTalk and the Bitcoin Subreddit are currently the most active.  The bitcoin.org.uk forum has a fair amount of activity too.

Say what you will about how much of a bunch of jerks they are, but somethingawful has a huge bitcoin following. (Just not in the good sense!!)

For people looking for a new way to connect with the Bitcoin world check out CoinConnect
www.CoinConnect.org - a full featured Bitcoin social network.


text:
Hack/Use a Butterfly bitcoin miner as gaming pc
How can I hack & build upon (i.e. add DVD drive, USB reader, etc.) a BitCoin miner like (Butterfly Jalapeño).
Everyone tries to use their gaming computer as miner but I want to venture & try to get insane performance by using parts of a miner & build a PC from it.
Or it is impossible?

This is not possible.
ASIC mining devices like those sold by Butterfly contain hardware that is capable of computing SHA256 hashes at high speed, but nothing else.  They are not general purpose CPUs and cannot be reprogrammed to run other code.
They might contain a simple microprocessor or microcontroller to control the ASICs and interface with the host computer, and in principle you could run other code on that, but it would have to be your own custom code as these chips are presumably not x86, and the performance is probably too low to play anything more complex than Pong.  Moreover, these devices have no graphics hardware and no obvious way to connect it.  It would be like trying to play Call of Duty on your microwave oven.

Wow thanks, great explaination & 'It would be like trying to play Call of Duty on your microwave oven' stole my heart ;)


text:
Is it possible to mine with core duo cpu 2.4 ghz?
My PC details:
Processor:             Intel(R) Core(TM)2 Duo CPU T8300 @ 2.4GHz 2.4GHz
Installed Memory(RAM): 4GB DRAM
Video Card GPU: Mobile Intel(R) 965 Express Chipset Family
Could you please tell me what is the fastest btc miner I can use?
Thank you in advance
Joseph Omondi Odhiambo

Mine Bitcoin? Absolutely not.
At current difficulty you'd need almost 16 million years to mine a block.
The only profitable mining operations are using what are called ASICs (Application Specific Integrated Circuits). These devices use the SHA256 hash algorithm starting at 1Ghash/sec (compared to maybe 50000-100000 hash/sec on a CPU. Not kHash, but hash.
Some "Altcoins" utilise algorithms less amendable   To ASICs but still require high end GPU video cards. Even the Scrypt algorithm Litecoin uses is mined by ASICs now. There are algorithms which can be mined by CPU like Scrypt-n but even these use CPU/GPU combination mining I believe.


text:
Bitcoin Server won't connect, timeout error
I am trying to run/sync bitcoind -server for the first time on linux and it is not connecting
end of Debug log gives me this...
new
Added 14 addresses from ::: 0 tried, 91 new
93 addresses found from DNS seeds
dnsseed thread exit
trying connection 69.64.34.118:8333 lastseen=117.2hrs
connection timeout
trying connection 10.0.0.2:8333 lastseen=354419.7hrs
connect() failed after select(): Connection refused
connection timeout
trying connection 62.245.238.146:8333 lastseen=96.2hrs
connection timeout

Does anyone have any suggestions. Is it perhaps a server firewall issue?

Issue solved. Simple firewall issue, always unblock 8333


text:
Are Bitcoin transactions traceable?
I have a question after a silly discussion.
We discussed for the best way for terrorists to get money. I have offered bitcoins. My question is: is it possible to trace who has cashed out bitcoins into money if you know the bitcoin wallet address.
I think it should be possible to trace, but how to trace such a thing?
NOTE: I'm just talking about cashing out bitcoin into money, not buying some cheap stuff.

Bitcoins are only ever really anonymous if you mine them your self or were given them by a miner. Once bitcoins are exchanged on, well an exchange (especially one affiliated with the U.S.) then those bitcoins have been associated with you. You can transfer them to other wallet addresses, but it will be visible in the block chain.
You can cycle them through many different accounts, but unless you have hundreds or thousands of accounts, then any illicit activity could be traced back to your first transfer by a sufficiently savvy analyst.
I also think that in the current mining climate, it would not be a trivial feat to acquire enough computers to generate enough bitcoin to fund any significant endeavor.
It should be noted that any exchange operating in the U.S. is obligated to employ someone whose job description is to look for money laundering.

If bitcoins were traceable, then you would think that they could catch at least one of the recent exchange thefts but they haven't.

Well there are such things as mixers which make the task harder. But they can see which addresses the coins are in. Its just impossible to tie a physical identity to those address unless the thieves are foolish enough to sell them through an exchange which requires proof of identity.

http://bitcoinpolice.org/
You can try to get some information from the google cache: www.google.com/search?q=site%3Ahttp%3A%2F%2Fbitcoinpolice.org
blockchain.info contain great information about who/where/when/how.
But, probably no one, except Security Services, can get all of information about credits, who got bitcoin on one place, who spent bitcoin on other.
Plus, if we start to look at the distribution of the markets and popularity of bitcoin, and keep in mind, that Credit Card fraud are still alive, then anybody can get anonymously great amount of bitcoins and anonymously transfer it to any Earth's point.

We discussed for the best way for terrorists to get money.

Mining of bitcoin is not a best way for terrorists to get money, but to transfer, its looks like greatest one. (1 hour = 6 confirmations, and one terrorist have completely paying another for service)
Anyway google will help you to get more information.
And don't forget to looking for same question:
Can my transactions be traced back to me even if I do this?

Bitcoin transactions are perfectly traceable but of course not always the single users. If I have 201mBTC on address A and transfer 100mBTC to someone and offer 1mBTC as fees then we have two outputs with 100mBTC each, one is for the trade partner and one back to me as change. If both output addresses are new then it's not clear at all what of both belongs to me. This changes in case I co-spend the change money with other coins where analytics found alredy out that it belongs with high likelihood to me.
It's not easy to leave no traces.

Yes.
Not so much because you could find that out now, but rather because someone will find that out in the years to come.
So your suggestion is a bad proposition for someone who wants to remain unexposed forever.


text:
Is it possible for a decentralized currency to have untraceable transactions?
I have been reading a bit about Bitcoin recently and am fascinated with the project and think it has great potential.
However, one thing I think it needs in order to gain mass popularity is to make it so if you give someone your address they can't just go and see all of your previous transactions.
I know in Bitcoin one is supposed to create a new key for every transaction, but not many people will be willing to do that. I don't think most people care about having complete anonymity for every transaction they make - but in the case of Bitcoin if you don't care about that then the person can see your entire transaction log.
Would there be a way to have both? I am no expert in Crypto (obviously) but could you perhaps have one address (say your email address) and every time you use it the system generates a new hash-address automatically and sends that. So then if someone just knew your email address that you give people to pay you they could not see the transactions you made because your hash-adress that is in the blockchain is not directly linked to it.
This likely will not work but I am wondering if anyone else has thought about this? I think it is what is needed.
Any comments would be awesome!

This same question was asked on Crypto.SE and I answered it there.

You are quite right that there are some drawbacks to reusing a bitcoin address, while at the same time it can be inconvenient to generate a new address each time.
I think you'll find its not possible to make an untraceable payment system where the money supply is limited. If money creation is controlled (as with bitcoin), nodes need a way to trace the money back to a valid origin.
As for the limitations of bitcoin, read on.
You might be interested in BIP 21 (Bitcoin Improvement Proposal 21), which is an official URI extension which bitcoin clients or wallets can use to make payments easier. Basically a seller can present a bitcoin URI (i.e. a link) to the buyer, and if the buyer's bitcoin client is compatible, the bitcoin client shows a payment screen saying e.g., "Would you like to send Bob 20 bitcoins?". What you should note is the seller can put any bitcoin address in the URI, meaning if most bitcoin clients + sellers supported this scheme, many transactions could easily use one-off bitcoin addresses, which helps achieve the privacy you're after.
Note there is still the problem that in can be tricky to send bitcoins to e.g. a friend, and that like you said, being able to 'discover' someones bitcoin address by using e.g. their email address would be handy. I have a side project Bitcoin Payment Service which attempts to solve that problem. Basically its an open-source web app that allows anyone to initiate a bitcoin payment to the web site's owner. You can check out a demo of BPS.

And I meant to say with BPS, the point is that you could run a BPS on e.g. bps.jordan.com, and that way people only have to remember your domain name when they want to pay you.

The bitcoin client only know Bitcoin addresses.  There are no aliases, or anything like that.
An EWallet or third-party service allows you to receive coins using an alternate ID.  For instance, sending from one Coinbase account to another doesn't require that the sender send to a Bitcoin address.  The same goes for sending via Coinapult.
Here are some of the EWallet services:

http://en.bitcoin.it/wiki/Category:EWallets


text:
How can I send bitcoins to my coinbase.com account for conversion to USD?
First, I am not a merchant and I don't really care to become one (for now.)  Recently, I sent some BTC to Mt.Gox, sold them and then conveniently found out that I now have no way of withdrawing my USD to my bank account from gox.
After a bit of research, everyone is suggesting that I sell my BTC on Coinbase and then withdraw directly to my bank account.  My problem is that I can't find an easy way to deposit into my coinbase account that I just created and verified.
Is this an easy process that I've overlooked or will I need to setup a shell, merchant payment system and send myself my one-off BTC payment so that I can sell my bitcoins for USD?

I actually had this same issue today.
You can find your BTC deposit addresses on coinbase.com under...
Account Settings / Integrations tab / Bitcoin Addresses (scroll to bottom)
Here you can add new addresses as well as "view all"
I hope this helps!  :)

Thank you so much!  Wow, coinbase could certainly use a redesign of their account information to make this a bit more obvious.

To deposit coins to your Coinbase account, using the Coinbase website click Request money.  Leave the e-mail address blank and click the Request Money button.  It will then display a Bitcoin address and QR code.  Copy the Bitcoin address and then paste it as the withdrawal address from Mt. Gox.
But that's just how to move them there.
As far as automatically selling the coins, that's specifically limited to their merchant payment methods.  There's a configuration setting to tell Coinbase to automatically convert bitcoins you receive using a merchant payment method to dollars and send the dollars once-a0day to your bank.

https://coinbase.com/merchant_settings

To get a Bitcoin address for a merchant payment method, you can simply send yourself a Payment invoice and use that Bitcoin address (multiple times if you wish) for receiving bitcoins which will then get cashed out to fiat immediately.

https://coinbase.com/docs/merchant_tools/email_invoices

You can easily add money with a debit card to Coinbase but you will need a bank account for withdrawal.

With the new Coinbase design, these are the steps to follow in order to get your current BitCoin addresses or to generate new addresses. Note that you do not have the ability to remove addresses from you wallet, because if you did, future money sent to those addresses would be lost. This is a good thing for you.

Log in to Coinbase.
In the menus on the lefthand side of the page, under Wallet, select Account Settings.
The righthand side of the page will change / update. Notice at the top of that section, there are the following links: Account Settings, Bitcoin Addresses, and Apps.
Click Bitcoin Addresses and you'll be able to create new addresses and view your current addresses.