text:
After sending some bitcoins, why do I have zero available to spend when I clearly didn't send my entire balance?
With some of the clients I use regularly (Multibit, Bitcoin for Android), I've noticed that, after I send bitcoins to an address, I have 0 BTC available to spend despite having perhaps a several bitcoin balance.
Looking more closely at the transaction details on Blockchain.info or Blockexplorer.com, I observe that the client sent my entire balance back to myself in the same transaction.
For example, my balance in my wallet before the transaction is 1 BTC. I send 0.5 BTC to address C from my wallet, plus 0.0005 BTC for transaction fees. I should have 0.4995 available immediately to spend on another transaction. However, the clients show 0 BTC available, but a balance of 0.4995 BTC.
When I look at the transaction, I see two input addresses, addresses A and B. The outputs are 0.5 BTC to address C, the destination of my payment, and 0.4995 to address B.
Why then do I have 0 BTC available when I clearly should have 0.4995 BTC available?

In this scenario, neither address A nor address B had a sufficient balance to pay 0.5 BTC by itself. The two together did have enough. So, the clients are intelligent enough combine the amounts of two addresses together in order to meet the desired transaction amount.
Unfortunately, the combination has the effect of sending bitcoins to yourself as "change" in the transaction. In this scenario, all of the available balance was split between address A and address B. In combining those in order to satisfy the payment to C, some was consolidated as "change" into address B.
Think of it mathematically, as well. This shows the equilibrium, from the point of view of the accounts you control.
balance(A) + balance(B) = payment_to(B) + payment_to(C) + transaction_fee(0.0005)

This is the transaction.
balance(A) + balance(B) - payment_to(C) - transaction_fee(0.0005) = payment_to(B)

That payment_to(B) is the change.
Unfortunately, because of the number of confirmations the clients wait before allowing one to spend incoming transactions, the balance is present but unavailable to spend for several minutes, or as much as hour or more.
Clients should handle this better by warning if transaction about to be sent will create this confusing situation.

Bitcoin-Qt doesn't have this problem because it allows you to send 0-confirmation change coins.

Say your 1 BTC balance was the output of a single transaction. To pay someone .5 BTC, you have to claim the output of that transaction. Then you have to pay the .0005 BTC fee. That leaves .4995 BTC which need to be left as an unclaimed transaction output for you to spend later.
To perform another transaction, you need to claim that .4995 BTC output from that previous transaction. But that .4995 BTC hasn't been confirmed yet. So it's not spendable.
The Bitcoin system deals with transactions which have inputs and outputs. Things like "accounts" and "balances" are just ways the client makes the system easier for humans to understand. They're not part of the protocol and aren't how the system works internally.
There is no way to leave part of an output. Either a transaction claims it or it doesn't. And transactions you sent to yourself are no different from transactions others sent you. (In fact, in general, it's impossible for outsiders to tell which is the change coming back to you and which is the payment to someone else. They're both just transaction outputs.)

This is the explanation I have in the MultiBit help:
What does "Available to spend" mean ?
When someone sends you bitcoin you receive a notification within a few seconds. You cannot however spend this money immediately. The computers in the bitcoin network group transactions together and confirm them in 'blocks'. These are produced on average every ten minutes. Once a block is produced with your transaction in it the bitcoin is then available to spend. You can see this on the transactions screen once the status icon is no longer empty.
Also, when you send a payment to someone, you often end up being sent change back. This is like giving someone a 'twenty' and getting 'ten' in return in a shop. Change is sent back to you when the next block is produced and until then you cannot spend the change.
The total balance shown (the large number next to the gold coins) is the total amount of bitcoin you have in your wallet INCLUDING unconfirmed receipts and your change. The amount 'Available to spend' is the amount in your wallet that is confirmed and not involved in a current spend. At any given moment, you can only spend up to the 'Available to spend' amount.


text:
How to use Bitcoin software
I just downloaded Bitcoin on ubuntu and started as per the instructions in the README file. But, cannot understand the terms "Label", "Address" or any other for adding a new address or sending bitcoins or anything.
Can anyone help ??
Thank You !!!

Bitcoin transaction has three important parts:

from address A
to address B
amount of bitcoins

If Bitcoin client broadcasts correctly formed transaction then the network knows that certain amount of bitcoins were sent from address A to address B.
If the owner of address B wants to send bitcoins to someone else he formes transaction that looks like this:

from address B
to address C
amount of bitcoins

You can have as many addresses as you want, but newly created address has zero bitcoins. You can buy bitcoins from someone e.g. Bitinstant or MtGox, and ask to send them to the newly created address. Once you have the bitcoins you can sell them or exchange for goods and services.
Label is just a description of an address that you can enter to help you remember, it won't be broadcasted to the network. For example, if you plan to receive bitcoins from MtGox and created a new address for that, then in label field you can enter "Bitcoins from MtGox".

source: Stack Exchange

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

sort: votes


text:
What are the quicker ways to use my bitcoins for paying in usual shops (off- or online)?
I have some bitcoins which I want to use for payments in the "usual" shops around me (not accepting bitcoins, but accepting plastic cards), and in a quicker way.
Previously, I used http://metabank.ru to transfer the money to my cards (they used to promise max. 48 hours delay, but often it happened faster), but now the transfers from Mt.Gox (done by metabank.ru) take longer (and the delay is not predictable).
Are there quicker ways to use the bitcoins for payments?
Just to know that in case I need to pay for something, there is a way with a predictable short delay to use the bitcoins. For example, the delay before 6 confirmations for a transaction is not so long and predictable.
Can I load a plastic card with bitcoins or buy a "virtual" ("digital") card, and wait a predicatble short period of time before the money is available?
(I'm located in Russia, so primarily I'm looking for cards that I can use in Russia, but the question is intended to be more general.)
What will the commissions and exchange rates be for the ways suggested in the answers? What the delay will be?
Can I trust the service suggested in an answer? Are there any experience reports about these services?

Different answers are there at StackExchange, so that the participants of StackExchange can assess the different variants and collectively select the better ones. I don't have the knowledge and experience with bitcoin to write a good review as an answer to my question, but I can put the answers I was able to find for the assessment by the community. The community can add more info and promote the better answers, so that we have good answers ready for this question.

You can find a less automated exchange (like that one (in Russian)) and negotiate a transfer to WebMoney, and a WebMoney account can be associated with a Qiwi account, and you can reload your plastic cards through Qiwi.
(The reloading of one of my cards, issued by Tinkoff Credit Systems bank, through Qiwi is instantaneous. So, there can remain delay with the exchange to WebMoney, and with negotiating the exchange with the person running the exchange, since it's not automated..)

Another similar exchange to WebMoney: http://www.btcwm.ru/?p=1#comments (in Russian; at work days from 8-00 till 17-00)
One more (in Russian).

There are several services offering to buy a digital card for bitcoins (listed in a comment at bitcointalk).

http://www.btcinstant.com: offers digital cards with different prepaid values; each card can be used only at a single merchant (specified when ordering the card);
http://bitcashretail.com/visa.php:

Visa For Bitcoins BitCashLotto.com accepts Bitcoins for a digital Visa
  card! These are a great way to convert your Bitcoins into cash you can
  use today!
We will provovide you a digital Visa card for the spot price of Mtgox
  for a Bitcoin equivalent of a $7usd service charge. Available to
  registed users only! Buy a $25USD valued card below:

But there is very little information about this offer. And there is no contact information at their website! Are there any experience reports?

(http://bitcoincashout.com: seems permanently out of stock)
(http://bitporium.com/: no such offers any more)

Since it's a digital card, there is probably no delivery delay involved in this solution.
(And I can use the digital card at online shops, and also I can probably load another plastic card of mine paying with that virtual card, through a payment service like http://qiwi.ru, though there might be problems, because they do more verification for a card: they block a random amount, and ask to report that amount.)

physical debit cards
bitcoindebit

http://bitcoindebit.net offers a physical debit card for your bitcoins.

One stores bitcoins in his account, and they are spent when one uses the card. (The account is in bitcoins.)
So, one time you will have to wait before their plastic card arrives, and then either deposit a larger amount of bitcoins to your account and spend them instantaneously at shops, or transfer your bitcoins to your account whenever you need to spend them, and probably wait for the not-so-long delay before the standard 6 confirmations of the bitcoin network (or the like).
(Open questions: What exchange rate is used then? Will there be a commission for using the card for payments in shops in Russia? What will the exchange rate from USD to Russian rubles be? Are there any experience reports about this service?)
I'm not sure they ship cards internationally... (http://www.bitcoindebit.net/order.php expects only addresses in the U.S.)
OkPay
You can open a wallet at http://okpay.com, and load it with bitcoins (Mt.Gox rate with 3% commission), order their plastic card and use it. (The wallet is in USD, or EUR, or RUR, i.e. not in bitcoins, the bitcoins are exchanged at the moment of deposit.)
There is a one-time delay for the delivery of the plastic card (and your ID and address confirmation).
Other withdrawal methods from OkPay:
Also, perhaps, it's possible to transfer from OkPay through Contact electronic money transfers to one of your existing plastic cards (I hope it's quick). (Even though my TCS bank has such an instantaneous reloading method (through Contact) and OkPay has such a withdrawal method, it seems not be possible to transfer directly from OkPay to the bank account via Contact without coming to an office and receiving cash first from OkPay, and then depositing it again. So, it's not very convenient.)
Also it's possible to transfer the money from OkPay to another system like Qiwi (which would allow to load my bank's card instantaneously) through an exchange like http://cash4wm.com (it has quite many bad reviews though 1 (in Russian), 2 (in Russian), 3 (in Russian); still, it worked for me for a small amount of money. I couldn't find other OkPay->Qiwi transfer services.)
(And there are experience reports with OkPay: 1 (in Russian).)
AurumXchange

AurumXchange (a service often mentioned together with bitcoin) offers debit cards (but one cannot pay directly with bitcoins to load them, one has to trade somewhere else to exchange bitcoins into some USD-like e-currency):

At this time we offer our Instant Load AurumXchange MasterCard for
free to our premium members. The card is shipped worldwide for free by
regular airmail, and for those users wanting a speedier delivery,
there are shipping upgrade options for an additional fee.

So, there is a one time delivery delay before you can use the card.
Western Union prepaid cards
In a thread at bitcointalk.org, they suggest to load a Western Union prepaid card with bitcoins through http://cheaperinbitcoins.com.
So you will have to wait one time for the delivery of the WU plastic card, and then you could load it with bitcoins whenever you need this.
But http://cheaperinbitcoins.com doesn't seem to work anymore.

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


text:
How to make Bitcoin-Qt or other client run off of a flash drive (Mac)
I work in an office with lots of computers, and I am on a different workstation every day. Is there a bitcoin client I can keep on a FireWire/USB drive?
Bitcoin-Qt on Mac leaves all the files in the home directory - the block chain, the wallet, etc. Someone else is going to be using this computer tomorrow! I want to keep all those files, and even the application itself, on a portable drive.

Asking about how to change the default storage location has been posted many, many times. The future canonical question is probably Bitcoin-Qt setup: Change block-chain file location, settings? documentation?. Possible duplicate of Bitcoin-Qt setup: Change block-chain file location, settings? documentation?.

Somebody posted a portable client, but I don't trust them, so I'll show you how to make your own.
Windows guide

Download the windows .zip from bitcoin.org

Unpack it. Go into that directory.

Make a file called launch.txt
Put this in it:
 start bitcoin-qt.exe -datadir=data

Rename it to launch.bat

Make a folder called data

It should look like this. Double-click launch.bat to start it. If files show up in the data folder you made, then you've done things correctly.
Macintosh guide
Download the Mac .dmg from bitcoin.org
Find the Bitcoin-Qt.app file, and copy it to to your flash drive.
Go to Launchpad, type in 'terminal'. Hit enter.
When the terminal comes up, type:
cd /path/to/flash/drive
mkdir data
cd Bitcoin-Qt.app/Content/MacOS
nano start.sh; chmod +x start.sh

Type in:
#!/bin/bash
dir1=$(cd "$(dirname "$0")"; pwd)
dir=`echo $dir1 | sed 's/"/\\"/g' | tr -d '\n'`
data="$dir/../../data"
"$dir"/bitcoin -datadir="$data"

Now hit Ctrl-O, enter, Ctrl-X. You should be back at the terminal.
cd ..
nano Info.plist

Find the lines that look like this:
    <key>CFBundleExecutable</key>
    <string>Bitcoin-Qt</string>

Change it to:
    <key>CFBundleExecutable</key>
    <string>start.sh</string>

Now hit Ctrl-O, enter, Ctrl-X. You should be back at the terminal. Now we just need to give it a better name.
cd ../..
mv Bitcoin-Qt.app BitcoinPortable.app

Try running your BitcoinPortable.app. If you see files show up in the data directory next to it, then you've done things correctly!
Thanks to Pygy for the script
Note: I don't have a Mac, so this is untested.

cd Bitcoin-Qt.app/Content/Resources cd ../MacOS why not just cd Bitcoin-Qt.app/Content/MacOS?

Works for Dogecoin too. Had to point the installer to the external drive and then follow your instructions (on Windows). Thanks!

Doesn't work for me. After the 'nano Info.plist' it creates a new file, so it's not possible to change those lines...

This is what worked for me on MAC OS 10.6.8 with Bitcoin-Qt 0.8.1-beta.
I'm combining and editing the Pygmy script and Nick ODells answer, there were a few typos.
Also note, I opened the application with right-click >> "Show Package Contents" and then edited the files with the finder, and TextWrangler. No Terminal required!
1) Create new directory in Bitcoin-Qt.app/Contents/Resources and name it data
2) Navigate up a level and then open the MacOS folder
3) In that folder, create a new file called start.sh
4) open that new file in a text editor and write:
#! /bin/sh
dir1=$(cd "$(dirname "$0")"; pwd)
dir=`echo $dir1 | sed 's/"/\\"/g' | tr -d '\n'`
data="$dir/../Resources/data"
"$dir"/Bitcoin-Qt -datadir="$data"

note that the last line contains the name of the only other file in the MacOS folder (Bitcoin-Qt). That's important! Because that is the program that will be executed a the end of the script you just wrote. Also, that fourth line has to link to the 'data' folder we created in step #1
5) Navigate back up a level to Bitcoin-Qt.app/Contents/ and open the file called Info.plist
6) Find the lines that look like this:
<key>CFBundleExecutable</key>
<string>Bitcoin-Qt</string>

Change it to:
<key>CFBundleExecutable</key>
<string>start.sh</string>


text:
Is it doable to supplant the current Bitcoin Core implementation with another rewritten in a different language?
Can Bitcoin Core be rewritten in another language, let's say Rust, and could such an implementation supplant the current one in C++ without the users of Bitcoin experiencing some sort of reset/lost of funds?
Languages come and go and I was thinking that decades ahead the world may be in the similar situation with respect to C++ as it is today with respect to Fortran.

There are many implementations of the Bitcoin protocol written in other languages, e.g., Bcoin in JavaScript, btcd in Go, bitcoin-s in Scala, etc.
Bitcoin Core is widely considered as the "reference implementation" and it is certainly the most widely used implementation on the network. Without a written specification, the authoritative resource, if consensus diverges between implementations, would generally be considered the Bitcoin Core codebase.
In terms of Rust, there is a Bitcoin library called rust-bitcoin, but as it says in the rust-bitcoin README:

This library must not be used for consensus code (i.e. fully validating blockchain data). It technically supports doing this, but doing so is very ill-advised because there are many deviations, known and unknown, between this library and the Bitcoin Core reference implementation. In a consensus based cryptocurrency such as Bitcoin it is critical that all parties are using the same rules to validate data, and this library is simply unable to implement the same rules as Core.

Given the complexity of both C++ and Rust, it is unlikely that this will ever be fixed, and there are no plans to do so. Of course, patches to fix specific consensus incompatibilities are welcome.

There would be two possible ways a Rust implementation could "supplant" the C++ Bitcoin Core implementation (assuming supplanting is a healthy goal which is disputed).
One would be more and more users running a full node written in Rust, perhaps based on rust-bitcoin, until it became the most widely run implementation on the network. Arguably this would be a path to supplanting Bitcoin Core as the "reference implementation." (Some would argue that Bitcoin Core is the reference implementation because it is based on Satoshi's original client and a new implementation should never be considered the "reference implementation.")
The alternative would be Rust code is introduced into Bitcoin Core, gradually replacing the C++ code in Bitcoin Core. The latter has been discussed to a greater extent than the former although if this was to ever happen it would be a long term project.
There are arguments against introducing Rust code to the Bitcoin Core codebase and they were discussed in this Sydney Socratic Seminar in May 2020. With permission I include this quote from Rusty Russell:

I really like Rust. It is going from strength to strength and it has got definite merit. But you have got an existing expertise who have tooled up in a certain language. Some of that is self selected but whether that is true or not they exist. Now you are asking people to learn two languages. If you want to broadly read the codebase you have to know two languages and that is a significant burden. Perhaps in five years time when Rust is perhaps an obvious successor to C++ then that intersection… Arguing that we will get more contributors for Rust is probably not true. You might get some different contributors but C++ is pretty well known now. There is the sexy argument. “Work on this, it is in Rust” Unfortunately that will become less compelling too over time. As Rust gets bigger and more projects are using it and there are other cool things you could be doing with Rust anyway. It would be better to do stuff in Rust as far as security. I am cautiously hopeful that the size of bitcoind is going down not up. Stuff should be farmed out to the wallet etc with better RPCs and better library calls so it is not this monolithic project anymore. The argument that we are going to be introducing all these security holes if we don’t use Rust is probably weaker. As you said the last thing that will change is the consensus code. That said I like projects that stick to two languages. It is really common to have projects where you have to know multiple languages to deal with them. Working around the edges and reworking some of the tooling in Rust, building up those skills slowly is definitely the way forward. It will take longer than you want and you hope but it is a pretty clear direction to head in. But head in in terms of a decade we will be talking about finally rewriting the core in Rust. It is not going to happen overnight.

As Prayank says in an above comment, Bitcoin Core functional tests (not unit tests; they are in C++) are written in Python. So you already need to know C++ and Python to contribute to and review the entire Core codebase. If Rust was introduced that would be introducing a third language.

// , I always thought that a protocol could not be considered robust without supporting multiple implementations. But this does make a good case for having a go-to reference implementation.

It is extremely difficult to write a specification for a complex format that is 100% watertight and has no poorly defined corner cases. Further even if the specification itself is watertight it's extremely difficult to implement it without making any mistakes. I can't find a link right now but I remember a study posted recently about differences in validation behavior between different implementations of a common signature scheme.
This leads to a problem in consensus-based protocols like bitcoin, if there are multiple implementations then they might disagree about whether a given block is valid, either because someone accidentally ran into a corner case or because a malicious actor is submitting blocks deliberately crafted to run into corner cases.
If a minority implementation accepts a block that the implementation used by the majority of miners rejects, then little harm is done, the "strongest chain" rules mean that everyone follows the rules set by the majority implementation.
But if the minority implementation rejects a block and the majority implementation accepts it then there will be a fork. Users of the minority implementation will stop seeing new blocks from the main chain and (if the minority implementation has mining support) may start to form their own chain with conflicting history.
So using a new implementation for "full validation" bitcoin chain processing is risky, even if the implementer has gone through the whole history so-far and checked it validates with their new implementation, users of that implementation could find themselves cut off from the rest of the network at any time.

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


text:
I tried to recover the public key from the signature, but I failed
I used data that comes from https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki#p2sh-p2wpkh. It is easy to know how to get sigHash. But when I try to recover public key, everything out off my expected.
And my question is

The message to be signed was not 64f3b0f4dd2bb3aa1ce8566d220cc74dda9df97d8490cc81d89d735c92e59fb6?
If the message is 64f3b0f4dd2bb3a...59fb6, is anything wrong to my code?

My code
import ecdsa

from ecdsa.ecdsa import int_to_string, string_to_int
from binascii import hexlify

prik = "eb696a065ef48a2192da5b28b694f87544b30fae8327c4510137a922f32c6dcf"
prik = bytes.fromhex(prik)

pubk = "03ad1d8e89212f0b92c74d23bb710c00662ad1470198ac48c43f7d6f93a2a26873"

sig = '3044022047ac8e878352d3ebbde1c94ce3a10d057c24175747116f8288e5d794d12d482f0220217f36a485cae903c713331d877c1f64677e3622ad4010726870540656fe9dcb'
sig = bytes.fromhex(sig)

raw_msg = "64f3b0f4dd2bb3aa1ce8566d220cc74dda9df97d8490cc81d89d735c92e59fb6"
raw_msg = bytes.fromhex(raw_msg)

try:
    pubkey = ecdsa.VerifyingKey.from_public_key_recovery(
        signature=sig, data=raw_msg, curve=ecdsa.curves.SECP256k1, sigdecode=ecdsa.util.sigdecode_der)
    print([hexlify(pub.to_string()) for pub in pubkey])

except Exception as e:
    raise e

def check_recovery(pub):

    padx = (b'\0'*32 + int_to_string(pub.pubkey.point.x()))[-32:]
    if pub.pubkey.point.y() & 1:
        ck = b'\3'+padx
    else:
        ck = b'\2'+padx

    return hexlify(ck)

lists = [check_recovery(p) for p in pubkey]
print(lists)
print([l == pubk for l in lists])

What I got was:
    [b'519e33c6b146628b4010ae2b56aa9127ae9b795c82df021979436296daf4cceac17eb495101c3c15011e9d5a08163122054ad375730ee2e219504540eb658211', b'd28ba1b718b542f52fe42b51635850b5900f111affbbdcbb63465e9a3dd79ffb80251268ba8d5b5ba4aaec8a682145af51b87bd7c7ab9e956895d31db24c4d4b']
    [b'03519e33c6b146628b4010ae2b56aa9127ae9b795c82df021979436296daf4ccea', b'03d28ba1b718b542f52fe42b51635850b5900f111affbbdcbb63465e9a3dd79ffb']
    [False, False]
What did I miss?

What i missed?

You are hashing sigHash (ie. the already hashed message) with SHA1 and then recover public key using that result which will give you 03519e33c6b146628b4010ae2b56aa9127ae9b795c82df021979436296daf4ccea as the recovered public key (can't re-calculate the second one with my c# code)! I believe that this is the source code of the from_public_key_recovery function you are using. You probably have to use another function like from_public_key_recovery_with_digest

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


text:
Locating transactions by the relayed by IP in blockchain.info
I'm working on some stats and I was wondering if the relayed by IP on Blockchain.info can be used to get an approximate (country level) origin of the transaction. Would it be reasonable to assume that this transaction has been originated somewhere in Wisconsin?
The reason I ask is that, yes, the network creates a random topology, but due to verification overhead first few relay points are bound to be within a few hops from the origin.

Are you thinking the few milliseconds latency gives a clue that a node is near versus far away?

Well that's what I'm wondering: can I infer something about the origin of the transaction by looking at how it propagated through the network (by sampling at a subset of the nodes)? I'm questioning the validity of such an argument.

It is possible, but it is also quite easy to hide your activity from such inquiries. For example, lets check Address 15VjRaDX9zpbA8LVnbrCAFzrVzN7ixHNsC:
http://blockchain.info/address-relayed-ips/15VjRaDX9zpbA8LVnbrCAFzrVzN7ixHNsC
We can see that most often it appears in the USA, with a dominant IP being 69.164.218.197 . If we check that IP with another tool, we can see that it was owned by Linode. And indeed, this is the address of the Bitcoin Faucet, that used to be hosted on Linode.
However, if you were to say, start your Bitcoin with -connect flag and specify an IP that you know will be running Bitcoin most of the time and not be malicious (such as a trusted pool, the Faucet, or the like), your transactions will appear to come from that IP. Switch the IPs every now and then, and you have a total control of what other people can see the origins as.
So yes, it is possible to infer some information about what IP owns which Bitcoin Address, but it is also possible to hide such data if there are any trusted nodes on the Bitcoin network.

By "not malicious" do you also mean "does not collect or share 'relayed by' data with monitoring service"?

@StephenGornick Yes.

we can assume most people dont do that.   So we can also assume that such a topology will be accurate for the majority of transactions.

Since signed blocks come with Relayed by: IP address  field
There exist IP address resolution topology database, assigning names of mining pools to respective IP adresses.
Blockchain.info recently ceased publishing names of mining pools relaying signed blocks and started calling every party Unknown, however you can still access a database of IP addresses relaying signed blocks and database of IP assigned mining pools from and by third parties to get your stats to work.


text:
How to convert my bitcoins to another currency
I'm a merchant, and I'm looking for a complementary method of payment.
How can I exchange bitcoins for my local currency?

David has already edited out the offending part, but - bitcoins are real money, and you'll receive less sympathy if you imply that they're not.

Bitcoins can be sold for other currencies at Bitcoin exchanges and exchange services. There are many exchanges all over the world (listed here), but the largest exchange with the greatest depth is Mt. Gox.
You can also use a merchant services provider such as Bit-Pay which will automatically handle for you both receiving Bitcoin payments and immediately converting them to other currencies.


text:
How to view Bitcoin Cash (BCC) on Trezor Wallet
I'm on beta-wallet.trezor.io and I've updated the Firmware to 1.5.1 and still can't see any Bitcoin Cash listed (BTC).  Perhaps I'm being impatient?

BCH (Bcash) as Trezor refer to it, is now available on https://beta-wallet.trezor.io after applying 1.5.1 firmware upgrade. Go to https://beta-wallet.trezor.io
You can also use tool to claim your BCC, read more on this blog page

Trezor is busy updating their software. There is no predetermined date that your BCC will become available. They have suggested to check the coin dropdown menu consistently on your web wallet where "Bitcoin cash" will appear automatically when ready.


text:
How can coinbase charge less than the average transaction fee?
As of this writing, the average bitcoin transaction fee is over $30, according to this chart.  However, I just bought $20 worth of bitcoin on coinbase, and they charged me a fee of $1.49.
My understanding of the fee for a transaction is that it is a function of market forces, the number of bytes in the transaction, and the time you are willing to wait for your transaction to be added to the blockchain.  Overall however, I had the impression that at a given time these fees are relatively constant per transaction.  So I would expect that coinbase would have to spend something around $30 in fees to give me my $18.51.
What don't I understand?

The $1.49 is a conversion fee between FIAT and BTC, if you try to send BTC from Coinbase to other exchanges/wallet, you will be charged a moderate hefty network fee

Coinbase holds a large amount of Bitcoins. When you buy Bitcoin on Coinbase, they do not need to actually send it to your wallet, they just need to say on their servers that you own X amount of Bitcoins. They charged you $1.49 because of the payment you used and/or to take a small profit. If you were to move your Bitcoins to a wallet you actually own at home, you would have to pay the miners.


text:
I mistakenly deposit my BTC to my BCC address. How can i get it back?
I intended to withdraw BTC from my Yobit.net account, and send it to my BTC address of HitBTC.com account.
But, unfortunately, by my critical mistake, I sent it to my BCC address of HitBTC.com account. This transaction already went through 6 confirms, and the message in Yobit.net indicates that transaction was completed, but there is no deposit in my BTC as well as BCC account in HitBTC.com
Because it's an address of HitBTC.com, I don't have a private key for that BCC address.
I sent e-mails to Yobit.net, and HitBTC.com, but haven't received any response yet. Is there anyone who know I can get my BTC back? Please help me.

You will need to contact HitBTC and ask them to correct it. In theory they have the private keys and can recover these coins in a way similar to splitting Bcash and Bitcoin in the first place, but prudent security practices may make this difficult for them to do.
You might also want to contact the creators of BCash and point out to them how this decision to use addresses which are indistinguishable from Bitcoin has caused you problems. This was a conscious choice on their part and has resulted in funds losses for a number of people, just as Litcoin's similar mistake years ago with P2SH addresses caused.

Thank you for comment. I e-mailed to HitBTC, but still waiting for response.


text:
Why does the age of the coin in my wallet matter?
When a new transaction is made, the client seems to prefer older coins in the wallet.
What is the rationale for this?   Are there any cases where it doesn't make sense to strictly collect coins by age?

The Bitcoin.org client only cares about age when a coin is real recent (like in the last day).  Any coins older than about a day are all treated equally.
The reason recent coins matter is because the client wants to lessen the chance that legitimate spending would be considered as being spam or a denial of service attack.
If coins were recently received and then are being spent fairly quickly right after the network can't know if that is someone trying to grief the network or if that is a legitimate transaction.   But a transaction made with older coins is almost certainly not being used for the purpose of griefing the Bitcoin network.
So then by requiring fees for "spam-like" transactions, if an attacker is griefing the Bitcoin network it is going to have a cost.
That's the extent of it -- a way to make attacking bitcoin expensive while allowing normal, legitimate use to remain low cost or free.

I think the client only prefers coins with 6 or more confirmations, which means roughly "an hour or more".  In my opinion the client should priorities older coins, but doesn't in fact other than checking for 6 confirmations.  It does penalise the use of newer coins by imposing a fee, but doesn't try to avoid the use of such new coins.  See the calls of SelectCoinsMinConf() in src/wallet.cpp.

The older a coin is, the less its ownership is disputed.

It's important to note that the notion of a coin as a physical object doesn't really exist. The ownership of a balance is less disputable as the age of the transactions which built it increases.


text:
Can I recover funds where the wrong destination tag was used while transferring ripple to bittrex?
Is a refund possible if i entered the wrong Destination tag and the right address while transferring XRP to my bittrex wallet.

Contact Bittrex immediately. They may be able to return the funds if the destination address doesn't map to a valid customer. But if it does, they probably already credited that customer and there is likely nothing that they can do.

Ripple asks for a destination tag and an address while transferring it, i entered the right address and the wrong destination tag. I contacted them they said they might be able to give it back in 30 days

@Sumit: in the end did you get your ripples back? I just did the same mistake now, sending from bitstamp to cex.io (address correct, just the tag I mistakenly inverted a digit with another: 32140 instead of 31240). I contacted the supported and also tweeted them, I really hope it's gonna work, after all an exchange is regulated, and ripple centralized. This is very similar to a banking scenario and in such cases a refund should be possible.

@firepol yeah i got them back in 15 days


text:
What are the pros/cons of this strategy
I would like to buy 10 crypto currencies ($100~$150) each and leave it for a long period.
What are the pros/cons of such approach?
Some things I can think of

Coins disappear with time and some might be erased over time...?
Holding them?
Creating a paper wallet for each (I do not want it to be in an exchange, I do not trust them)?
Transaction fees might be too high?

I don't know what I don't know, so I am not sure what to be careful of, so I am asking from your experience.
Thanks!

I believe if you buy those coins under a BTC base and when they are very low price would be better.
But considering BTC is growing fast every year, I would just keep my holdings in BTC. Much safer.


text:
A Bitcoin alternative with non decreasing reward
Understanding the motivations for the 21 million BC limit and halving reward rate, I still think it dis-proportionally rewards early adopters. My ideal system would be one where the mining reward is a factor of the work done which would mean as the system increases in popularity (i.e more miners) the corresponding mining reward would increase. This would have a stabilising effect on the price and provide people a reason to spend coins rather than hoard them. Anyone who has tried to work or sell goods in BC's would see the problems it is facing as a currency rather than a commodity. Does anyone know of a Bitcoin alternative with these properties?

don't mind downvotes but would also like a productive discussion to go with it.

If such a coin caught on, more and more resources would go to mining, which seems kind of inefficient. One can argue that the Bitcoin reward actually doesn't drop off fast enough.

You are getting downvotes because you want a discussion. This is a Q&A site, if you want to discuss you should go to a forum instead.

@DavidSchwartz this is true but as the whole system is secured by proof of work encouraging mining increases the security of the whole system.

@Lohoris not really - the question can be answered pretty simply and was done so. Maybe substitute 'rationale' for 'discussion' on my above comment but thanks for your input.

If you want mining reward to increase as popularity increases, then transaction fees are probably the way to go...

@HighlyIrregular thanks for the suggestion but transaction fees only happen with transactions. If you view bitcoin as deflationary then the incentive to spend is reducing so transactions will eventually drop away. (People won't buy things in a currency thats doubling month on month)

That would be true if Bitcoin was just another physical currency. It is however also a payment method, and a very good one at that. I believe that this will be enough to keep it going, though belief obviously isn't enough by itself; time will tell!

@HighlyIrregular - the problem is it's behaving (and being used) more like a commodity with some currency properties at the moment. Like you say, time will tell.

PPCoin appears to have a non-reducing block reward, so that might be what you're looking for.
Other alternative cryptocurrencies are listed, with some info on their properties, here:
https://en.bitcoin.it/wiki/List_of_alternative_cryptocurrencies

Freicoin also accomplishes this but in a round about way. Rather than adding new coins to the system to pay miners, it removes coins from each account to pay miners.
http://freico.in/how/


text:
What happens under the hood when I use BTC to buy an Altcoin on an exchange?
What happens under the hood when I use BTC to buy an Altcoin on an exchange?
I recently used Binance to buy an Altcoin using BTC. After making the trade I was expecting to obtain a transaction identifier which I could use to look up the history using blockchain.info.

Nothing will happen "under the hood" in the blockchain of a cryptocurrency when you trade on an exchange. The exchange has many wallets where the funds of the user are stored. The exchange has also a database where they store the information about the assets of the user, their trades and their resulting balance. Example:
A person A deposits 1 btc to exchange XY. Person B deposits 10 eth to exchange XY (these are transactions which you can see in the public blockchain of the respective blockchain).
Now the exchange has 1 btc and 10 eth and in their database they write analogous: "A has 1 btc; B has 10 eth".
Now person A wants to exchange his 1 btc into eth. So he buys 10 eth from person B and pays with 1 btc. This trade will not cause any transaction which will be added to the blockchain, because it is an exchange-specific process. When the trade is executed, exchange XY write in his database something like "A has 10 eth; B has 1 btc". (When person A, for example, now wants to withdraw his 10 eth to his ethereum-cold-wallet this would cause a transaction in the ethereum-blockchain.)

On the Bitcoin blockchain, you can only send Bitcoin. You cannot trade USD or any other coin on the Bitcoin blockchain. The way centralized exchanges such as Binance work is by owning a lot of coins and storing the data in a centralized database. When you trade 1 BTC for X altcoin they deduct what they owe you in BTC and increment what they owe you in the altcoin. They do the opposite for the person you traded with.Binance also takes a cut off of that. The only transactions that happen on the Bitcoin blockchain are when you deposit or withdraw coins.

So when I initially transferred BTC from coinbase to binance to fund my trading account, does the coin go to my own personal binance wallet or binances's wallet?

You don't have a "personal binance wallet". You do not have access to the private keys of the address that Binance gives, therefore you do not own the wallet. The deposit address that they give only to you is so they can register how much coins they owe you in their centralized database. They then display how much that they owe you in your Binance dashboard.


text:
Should I deposit 0.01 bitcoins?
I recently won 0.32 in bitcoins as I have been getting into NFT. I wanted to sell the bitcoins that I won, but in order for me to withdraw the bitcoins it’s asking me to deposit 0.01 bitcoins. Is this process usually like this?
The website is www.recrypto.com. Would it be smart if I invest in the 0.01 bitcoin to be able to withdraw it all (as the 0.01 deposit is just a verification step)? I would then withdraw 0.33 bitcoins.

I'm sorry to say this is a scam.  Put it in dollar terms.  Someone is telling you that you've won a surprise $20,000 (not very believable in the first place).  But to get it, you have to send $600 for "verification" -- what possible reason could there be for this except to enrich the scammer?  They'll never send the $20,000, and you'll be out the $600.   (If you send the $600, they may try to  finagle more money from you until you eventually give up on ever getting the non-existent "prize  money".)

"what possible reason could there be for this except to enrich the scammer" - It would verify that the address is controlled by OP.  So the .33 bitcoin is sure to go to the correct receipient.
Of course 1 Satoshi would be sufficient if that was the actual goal.

@Taemyr it is possible to prove ownership of an address, for free, by signing a message with the address's private key. Most bitcoin wallets come with this feature as standard.

AKA the advance-fee scam AKA the Nigerian prince scam.

No, you should not deposit .01 bitcoins. This is well known fraud


text:
Why doesn't the Bitcoin core team develop official Bitcoin mining software?
If I am right, the Bitcoin Core just maintains the software necessary to run a full node. Essentially it's the code for the Bitcoin wallet, which just verifies blocks, but doesn't mine. But mining is an important part of the Bitcoin network, and the most widely used software is the unofficial BFG miner written by Luke DashJr.
So why is it that the Bitcoin Core team does not develop an official Bitcoin miner as well? Also I believe the first version of Bitcoin core released by Satoshi was full node software as well? How did mining happen then?

Bitcoin Core does have mining components in it. In fact most available mining software actually rely on Core (or something abstracting Core's services) in order to get the block built before it attempts to mine it. Bitcoin Core has the capability to serve the information to other software so that they can mine blocks. Furthermore, Bitcoin Core does have the logic necessary to mine blocks. However it only does this via CPU mining, and because CPU mining is no longer viable, this has been disabled on the main Bitcoin network. It is still there in order to mine blocks on testnet and in the regtest networks.
Having a fully fledged mining software (i.e. one that supports all of the various ASIC miners and can connect to mining pools) is outside of the scope of the project. This would enable functionality that the vast majority of Bitcoin Core users never even use and thus would be a waste of time to develop.
Lastly, there is no official node software. There is no official anything in Bitcoin; it is decentralized, official would mean that there is some central authority dictating what is "official" and not.

Thanks for this. I didnt know that Bitcoin core could mine as well...


text:
Which RPC method is used to mine bitcoin?
Which of the following RPC methods is used to mine bitcoin and receive its reward?

generateblock
submitblock
submitheader

What is the difference between these methods?

Which of the following rpc methods is used to mine bitcoin and receive its reward?

None, really.
The primary way of interfacing with Bitcoin Core for mining is through the getblocktemplate (GBT) RPC, which provides all information mining software needs about the current best block to build upon, and what transactions to include. The rest is up to the user.
Bitcoin Core is not involved in "receiving" a reward for a block; rather, the miner constructs a block that pays themselves. If that block is valid and gets accepted by the network, then they get paid; if it doesn't, they don't.
This is important: Bitcoin mining rewards aren't decided after mining by submitting it somewhere; they're decided ahead of time, before mining is attempted. A miner (or its software stack, or pool) will call GBT, build a candidate block that uses the GBT result's transactions + a coinbase transaction that pays the miner/pool, and then hand it to the mining hardware to solve. Changing the payout after finding a block would invalidate it.

generateblock

This is a test-only RPC, which does actually mine a block, but with a user-specified set of transactions to include. It also uses mining logic in Bitcoin Core itself, which is slow and unoptimized, and cannot use ASICs or other specialized mining hardware. For anything but test networks, it is unusably slow.

submitblock

This RPC can be used to provide a block out of band to Bitcoin Core. It is used when mining hardware has found a block, to get it to propagate across the network.
As noted above however, it is not involved in getting a payout from mining; the block itself already contains its payout information, and can be submitted anywhere on the network.

submitheader

This is to inform Bitcoin Core about a block header out of band. It's unrelated to mining.

Pieter Wuille, Thanks for your answer, Suppose I use a cpu and c++ language for mining, and by chance I have been able to extract a block whose hash value is less than the nBits, now if I use the submitblock method to send the block to the network, and Other nodes confirm the authenticity of this block, will I receive the mining reward?

@Ali Yes, if you produce a valid block, you can submit it to the network by invoking submitblock on any number of Bitcoin nodes, which will then propagate the block through the network. If the block gets accepted, then whatever the block does will take effect - including paying out the reward, if that's what it does. Of course, with just a CPU you will never ever find a mainnet block.


text:
Why is the default LN channel limit set to 16777215 sats?
I assume this default limit of 2^24 is set by some purpose in BOLT #2. But what's the meaning of that? Or is there any test/experiment to support this number?

The goal was to limit the amount any individual adopter would lose due to bugs in the software. As explained by LN developer Rusty Russell in #bitcoin-lightning FAQ: Why the 0.042 bitcoin limit?:

I guarantee that early releases of lightning clients will have bugs
and people will lose money because of them. […] I sleep better at
night knowing that, if you lose money because of my bug, I can buy you
a beer/coffee in exchange for your story and we’re about even. (emphasis in original)

This answer was sourced entirely from Bitcoin Optech: Large Channels where you can find even more resources on this topic.


text:
How to set the language/localization in the standard client?
Version 0.6 introduced automatic client localizations. Personally, I hate using programs in Hebrew, and prefer English, but the client didn't ask for my preferences on this matter and just switched to Hebrew.
How can I change the interface language back to English?

Sorry for that.

PS localizations existed since at least the introduction of QT as standard in 0.5, but the Hebrew translation didn't yet exist at the time.

Close the Bitcoin client and add this line:
lang=en

On a line by itself to the end of the file:
C:\Users\YourUserName\AppData\Roaming\Bitcoin\bitcoin.conf
(Replace "YourUserName" with your windows user name.)
Now restart the Bitcoin client.  Done!

EDIT: The correct solution was provided by Matt Corallo but was somewhy deleted. Use the command line argument -lang=en_US.
As far as I know, QT chooses which language to use based on the OS settings. So I think the first thing to try is to configure your OS not to use a Hebrew interface.
If that fails, you should try to figure out how to disable localization in QT circles, since bitcoin-qt's localization inherits completely from QT.
If all else fails, you can recompile without the language in question.

My OS is not Hebrew, obviously. We need a setting for this.

@ripper234: Just as clearly, something in your OS is configured for Hebrew/Israel, otherwise bitcoin-qt would not use Hebrew. I don't know if this can be changed without side effects, but the research in Chris Moore's answer could be useful. Anyway, you can force a particular language with bitcoin-qt's -lang parameter.

I did some more testing. On Windows, the default language is controlled by the dates format. I've been using US format so far (didn't bother to change it), but when I switch to Israel bitcoin-qt defaults to Hebrew. This is consistent with Chris's observations on Linux. I reverted to US, but while I'm at it, I switched just the day/month order to the Israel standard.

I have no idea why Matt Corallo's answer was deleted. I have undeleted it so that people may give credit to what seems to be the correct answer.

Start bitcoin with the -lang option ie bitcoin-qt -lang=en_US

Maybe this should be added to https://en.bitcoin.it/wiki/Running_Bitcoin ? In any case, can you comment on whether anything in my own answer is correct?

I experimented a little in Linux to see what environment variables were affecting the choice of language:
$ env | grep -e LANG -e LC_ALL
LC_ALL=en_CA.UTF-8
LANG=en_CA.UTF-8
LANGUAGE=en_CA:en
$ LANG=de_DE ./bitcoin-qt --help 2>&1 | tail -1
  -?                 This help message
$ unset LC_ALL
$ LANG=de_DE ./bitcoin-qt --help 2>&1 | tail -1
  -?                 Dieser Hilfetext
$ LC_ALL=C LANG=de_DE ./bitcoin-qt --help 2>&1 | tail -1
  -?                 This help message
$ LANG=de_DE.UTF8 ./bitcoin-qt --help 2>&1 | tail -1
  -?                 Dieser Hilfetext
$ LANG=en_US.UTF8 ./bitcoin-qt --help 2>&1 | tail -1
  -?                 This help message

So it seems that making sure LC_ALL isn't set, and having an environment variable LANG=en_US.UTF8 will cause it to use English.
Alternatively, set LC_ALL=en_US.UTF8, but then everything will be USA-ish - you'll see American date formats, dots instead of commas for decimal points, etc.
The last time I used Windows you could set environment variables by going to the Control Panel, opening the System control, going to the Advanced tab, and clicking on Environment Variables.  I don't know if that's changed in recent years though.


text:
How can one download the bitcoin client securely?
What is the correct procedure to download the official bitcoin client, and validate it was signed by the developers, and not infected with any malware by a man in the middle?

It just occured to me after upgrading the client right now to 0.3.24 that I don't take any verification steps. There might be trojans in my system now, and I wouldn't even know it!

see similar thread here: https://bitcointalk.org/index.php?topic=49889  howto verify bitcoin archive authenticity

Jeff Garzik signs every release with his GPG key (also here). You can find release announcements (such as this one) on the SourceForge.net Bitcoin development list.
To verify the signature on a release, obtain the key from the link above. Obtain the release announcement from the link above. Obtain the download from any source. Then point GPG at the release annoucement (or the signature block from it, including the BEGIN and END lines). GPG will ask what file you want to verify, pick any of the ones listed in the signature certificate. It will then tell you if the release is identical to the release Jeff Garzik signed.

and while you are at it... you should also take some steps to verify that the gpg key indeed belongs to whom it appears to belong. /anyone/ can make a key with "jeff garzik" in the uid.

@nanotube: Good point. The fingerprint of the release key is 60B0 0235 B335 5D84 BF2A  4E35 DA1D C20F 2DBF 0CA8.

and assuming we can all trust that you have properly checked that this key indeed belongs to jeff before posting that fingerprint... that's a good first step :) we should probably make an effort to improve the gpg web of trust between the core devs and the rest of the community.

I am no longer able to edit that comment. If it is incorrect, one would hope someone would say so. So you actually don't have to trust me. (Plus, if that was incorrect, I would be publicly vouching for incorrect information, knowing it's security sensitive. I would deserve a good shaming.)

Intructions for Linux:
You need to have the following files:

Download the file you want to check:
wget -c https://bitcoin.org/bin/bitcoin-core-0.13.2/bitcoin-0.13.2-x86_64-linux-gnu.tar.gz

Download the hash sums containing file:
wget -c https://bitcoin.org/bin/bitcoin-core-0.13.2/SHA256SUMS.asc

Download the release signing key:
wget -c https://bitcoin.org/laanwj-releases.asc

You check the file as follows:

The signing key needs to be imported:
gpg --import laanwj-releases.asc

Check the hash sum file signature:
gpg --verify-files SHA256SUMS.asc laanwj-releases.asc

It should say:

Good signature from "Wladimir J. van der Laan.

So now we know that the hash sum file is signed with the provided key we trust.
Finally, check the file of interest:
 gpg --verify-files bitcoin-0.12.1-linux64.tar.gz SHA256SUMS.asc

It should say:

Good signature from "Wladimir J. van der Laan (Bitcoin Core binary release signing key) "

So now we know that the tarred file is signed with the provided key we trust.
Check that the hash sum matches:
 sha256sum --ignore-missing -c SHA256SUMS.asc

It should say:

bitcoin-0.13.2-x86_64-linux-gnu.tar.gz: OK

I was going to upvote this because it seems the best answer, but when going through the steps I find the following: for version 0.12.1 the "release signatures" linked are https://bitcoin.org/bin/bitcoin-core-0.12.1/SHA256SUMS.asc, however you link to laanwj-releases.asc file, and that file is in a link titled v0.11.0+, not 0.12.1. Does the + character here mean "or later"? As in "0.11.0 or later"?

@knocte Yes, it means "or later".

step 4 produces: sha256sum: WARNING: 20 lines are improperly formatted
sha256sum: SHA256SUMS.asc: no file was verified

I would grab this script from bitcoin-core's repository, then comment out the line where it calls the clean_up function at the end. Then when you call it, it not only downloads the binaries in /tmp/bitcoin/, it also verifies the hashes.

Visit http://sourceforge.net/projects/bitcoin/files/Bitcoin/
Pick the latest version folder.
Download one of the SHA...SUMS files and examine it in your favorite text editor.
Download the installation file you want to use.
If you don't know how to get your computer to tell you the checksum of a file, you'll have to go figure that out.  Compare the checksum with the one in the file.  If they match, then you've determined one thing that is important: The file you downloaded is the same as the file used by whoever created that checksum.

Now you want to know if you can trust that person.  He has an account at Sourceforge and he has made a file available to you and you now have that file, and what you proved in step 5 is that you got the same file he made available, as opposed to a fake from someone on the Internet between you and Sourceforge.
I just did this with version 0.7.1, and that person is Gavin Andresen.  I have Kleopatra for Windows, so I looked up "Gavin Andresen" on the pgp.mit.edu certificate server, and found a certificate for him with "(CODE SIGNING KEY)" in the name.  I imported it to Kleopatra and then verified that the checksum file I downloaded in step 3 was signed by the person who made that key (Anybody can make a key and pretend to be Gavin).
But let's be paranoid...
I could still have bad code because I might have downloaded an imposter's certificate, and had my connection hijacked for the download.  So I Googled "Gavin Andresen certificate fingerprint" (without quotes) and found a page at https://bitcointalk.org/index.php?action=printpage;topic=69355.0 that displays the fingerprint of "Gavin"'s certificate, and it matches.  With all this information, I assume I'm ok.  If I didn't, I'd have to get the source and examine it, as Evil Spork explained.

Here is an easy walk through on how to authenticate bitcoin-qt on GNU/Linux systems (Like Trisquel, Fedora, Ubuntu, Debian, etc):

Open a terminal
Download the core developers PGP key (https://bitcoin.org/en/development)

(Gavin Andresen)

Import the core developers PGP key with GPG:

gpg --import gavinandresen.asc

From the https://bitcoin.org/en/download page click on the "Linux (tgz)" file to download.
From the bitcoin download page click on the "Verify release signatures" link to download the signature.
Authenticate the file release was compiled by the core developer:

gpg --verify SHA256SUMS.asc
The most important line to make sure you see is:
gpg: Good signature from "Gavin Andresen (CODE SIGNING KEY) "
A 2nd line you will see is:
gpg: WARNING: This key is not certified with a trusted signature!
This line means that you don't know if you can trust the signature that you imported. Short of meeting the core developer Gavin Andresen in person or at least getting his public key from somebody you trust who has met him you won't ever be able to truly trust the download. However you can at least be confident that all future releases are at least being compiled by the same person. If you don't see "Good signature" you know you have a problem.
While you are at it you may want to import the keys of other core developers just in case. It may be at some point another core developer signs. You'll have more confidence its from a trusted party than if you have to import the key at the time of the download.

Q: How can one download the bitcoin client securely?
A: https://github.com/bitcoin/bitcoin/downloads

Unless github's SSL certificate is compromised ;-)

@nmat: or if any public root CA whatsoever is compromised

github downloads do not go over https either. though the download area is https, once you click on an individual file to download it, it comes from http://cloud.github.com - no https in sight. it is at any rate irrelevant to the question at hand, since https doesn't protect you from server compromise. you really should just verify the gpg sig.

outdated link now

Generally if you want it really secure you go to the official source, download it, inspect the code, then compile it yourself.
Otherwise just check it versus the md5 hash or sha hash.

I would like the answer to this question to be phrased in a way non tech savvy users will be able to do it.

If you use in Windows, install Summer Properties. It will add a checksum tab to the file properties window. So download the client, right-click, properties and check that the sha1 hash is the same. Of course that your system must also be clean from virus/spyware or else this is useles...

A tech savvy user will generally not be able to verify a program easily. There are tools for it, but they are not built in to windows. Summer Properties is an example of course. Go ahead and edit my answer as you see fit, but I have not used the software so I can't really vote for or against.

The "official source" is GitHub?  I see that the "official" distribution site, sourceforge, does not use SSL.

From bitcoin.org I get to SourceForge, which includes a page with a signed SHA1. So with Summer Properties I can check that sha1, but i have to check that it is properly signed as well (an attacker can spoof the sha1 as well). So, how do I check the PGP signature? Vs which key?

pgp signing, leaves a complex hash at the bottom that you can test to 'prove' that the document was signed by a trusted key. Essentially, the private key can sign publicly, and the public key can sign privately, so if you sign with your private key, anyone who knows your public key, can verify that this truly comes from you... However in the first place you need to have the creator's public key. which again comes back to the same problem.

-1 This is a non-answer. No one, not even a developer, is supposed to have to inspect the whole sources of a program for every release and magically spot any eventual exploit.

There is no other way to be sure a bit of code isn't malicious other than checking it yourself. :P so hardly a non-answer, just far more than most people are willing to do.

But what if someone has compromised your compiler? ;-)

then yer just screwed :P


text:
How exactly is Rucoin different than Bitcoin?
Rucoin is a "Russian Bitcoin clone" (see announcement thread).
Besides the fact the website is in Russian, what other characteristics does this coin have?
Is it just a 1-to-1 Bitcoin clone? Is mining limited to clients from Russia? This post claims that

Rucoin provides some tools functionally similar to central bank and
  the stabilization fund, whose main task - to make the course of
  crypto-currency stable, predictable and guaranteed.

Does anyone know how they claim this is achieved ... or in other words, how exactly is Rucoin different than Bitcoin?

Hmm, looks like a centralized crypto-currency. Probably it is close-source and only the owner can generate the coins, while also running the only exchange.

The "author" (if you can call a blatant 1:1 copy of Bitcoin authoring) has not backed up those claims.
The website provides no further explanation and a lot of vague nonsensical "answers"
A crude but human translated English version of Russian homepage is here:
https://bitcointalk.org/index.php?topic=48582.msg586451#msg586451

What is the specifics of the Rucoin?
  In short - more stable course
It is difficult to talk about stability when the system is at the forefront of the struggle of interests.
  Constant fierce struggle of interests causes course instability, which creates a number of disadvantages for practical use of such currency.
  Another thing - Rucoin.
  This project was not born on the battlefields. At the heart of Rucoin - ready, proven solutions and lessons learned.

Those "solutions" and "lessons" are never explained except with vague double speak.

Conceptually, Rucoin - this is a layer of stability and security, when, instead of blind hope for "the invisible hand of market" principles are used strict currency regulations. Instead, to give the exchange rate at the games speculators, who for the sake of their earnings will generate most unpredictable chatter in the system, Rucoin provides some tools functionally similar to central bank and the stabilization fund, whose main task - to make the course of crypto-currency stable, predictable and guaranteed .
Rucoin, unlike Bitcoin, totally unsuitable for currency speculators, but it is very suitable for the conservation and savings to ensure a stable and reliable infrastructure of payment systems new generation.
In addition, Rucoin towards Bitcoin may well serve as a reserve currency, into which can be converted part of the funds for the insurance of all kinds of surprises.

So the author claims to implement a central bank and stabilization fund but makes no mention on how that is possible or how it will be implemented.  Given that exchange and a direct to cash mining pool were launch prior to the actual block chain my suspicion is this is merely a poorly designed pump and dump.
Since the launch the author has not provided any further information on how the claims will be implemented.  Based on the volatility seen at http://btc-e.com (largest exchange offering RUC trades) there has been no "currency regulation", "central bank" action or effective use of this so far unseen "stabilization fund".


text:
Do you need XRP reserves to receive trust lines?
As far as I understand, you need to keep some XRP in reserve for each trust line and for each open offer.
Does that apply only for outgoing trust, or for incoming trust too?
In the latter case, what does it happen if you try to trust someone who doesn't have enough XRPs?
And, are you somehow notified you have exhausted your XRPs, or you have to manually check somehow?

The Ripple account reserves are documented on the Ripple wiki.
The trust line reserves are only for trust that you set. Others cannot cause your reserves to increase by adding a trust line to you.
The client warns you when you are bellow twice your current XRP reserve limit by placing a warning symbol beside your XRP summary (located at the top right of the client). Wheather the warning is shown or not, hovering the pointer over the XRP summary will provide a "tool tip" with the current reserve requirements.*
If an action would put you under the reserve requirements (such as sending too much XRP, creating a trade offer, setting a new trust line) the action is refused with an error. When below the reserve requirements you can still do other transactions so long as you have enough XRP to pay the 0.000010 XRP transaction fee.

Note:There is currently a client bug that causes the reserve requirements shown to be twice the old levels, about eight times the current reserve requirements.

It began complaining I needed to have 400XRP reserves, but the tooltip (both before and now) said "reserve: 100XRP". Is that because of that bug, it assumes 100 extra + 300 base?

@Lohoris I'd guess the 400 you saw was just the 50XRP account reserve (8x too high). Sadly until they fix the client bug it's best to calculate the reserve your self. As per the wiki: 50 + (#outgoing_trust + #trade_offers)*12.5. E.g. with two lines of trust and one trade offer it would be 87.5 XRP.


text:
Can't pay with Electrum - invalid password?
Update

Well, it was my bad, dreadfully sorry guys. My bad with the password
  and seed, mixed some things up :(  Everything restored successfully.

I use Electrum 1.8.1 (portable edition) and have some mBTCs in my wallet (electrum.dat). I tried to send a payment and was asked to type the password which I had set before. The password is kept in KeePass, I pasted it from KeePass and... "invalid password". But it is correct for sure.
I have the seed (12 words) well kept. I tried to restore the wallet with the seed, after backuping my electrum.dat and deleting it, but if I paste the seed words and the wallet is created and synchronized, I'm told the wallet has no transaction history (therefore, no money there).
I tried these ideas as you can see above: https://bitcointalk.org/index.php?topic=261777.0 and https://bitcointalk.org/index.php?topic=170610.0
Questions:
1) How could it happen that Electrum says the password is invalid when trying to send the money?
2) How could it happen that no transaction history is detected after using the seed (12 words) to restore the wallet?
3) Does it have anything to do with the list of Electrum servers? It is shown when I try to restore the wallet using the seed. If yes, do I have to try every server from the list to understand which one keeps the data about my wallet?
4) How do I recover my mBTCs from the Electrum wallet? I see the number I have, but can't send because of the password issue.
The first experience with Bitcoins and kind of frustrating... I hope I've explained the situation more or less well.

Glad that you find it out.

As it turns out this was user error and the premise for the question is gone.

Be sure that you are entering the correct password you've set (be careful with added blank spaces, keyboard localization...). You can try to crack your own password if you remember most of it.
Maybe the transactions that you remember were on imported keys? If so, they are only in that encrypted wallet file. Your seed can only restore the keys derived from it.
Electrum servers are all the same and give the same information (they only differ from hardware).


text:
How to solo-mine bitcoins with bfgminer?
I'm completely new to Bitcoin, so my understanding of mining is still improving.
I downloaded BFGMiner, and now I would like to perform some solo mining.
(I would rather have it use my GPU, but if a CPU is noticeably easier than I'll go that route first.)
How can I use BFGMiner to perform solo mining?

What arguments do I give to bfgminer on the command line?

What information do I need, aside from my BitCoin wallet address?

What other program(s), if any, do I need?

Again, I know very little about mining at this point, so please assume no prior knowledge -- all I know is basically my wallet address. :)

This article seems useful:
http://www.newslobster.com/random/how-to-get-started-using-your-gpu-to-mine-for-bitcoins-on-windows
Start with that and maybe later switch to using a pool.

That led me in the right direction to figure out how to use bfgminer, thanks!

I realize that there's a lot to summarize in the linked article, but if the link breaks - this loses all context and value. Consider moving at least the most important take-aways from the linked article here? Otherwise, this is probably going to be removed (I hate coming off as 'thanks for giving us something, now please give us even more!' and that's not my intent. I'd do it myself, but I'm not sure how to do it compactly without copying it all over).

downvoted - link is dead. i would remove this as right answer too if i could as Eyal did not listen to comments above

This is covered in the included README document.

Please post the relevant part (or a summary) of the link to avoid link rot.

I would think avoiding StackExchange rot is a more likely problem here.

in the readme, search for solo mining


text:
How Long to Verify Payment?
I wish to allow people to purchase items at my shop using bitcoin.  I've heard however that blocks take 10 minutes on average to process and transactions may not even be processed in the next block if the transaction fee isn't high enough.
So does this mean that my customers will need to wait at least 10 minutes before I can verify they have made a payment and I can allow them to take their item?

To put it simply, it depends on the value of the transaction. There's little incentive for someone to try ripping you off with a low value transaction, but there is a strong incentive to do so with a high value one.
This has been raised before, but the answer that I found easiest to understand is quite old: https://bitcoin.stackexchange.com/a/832/516
Note that waiting for 1 confirmation isn't a wait of "at least 10 minutes", as half the time it will be faster than 10 minutes. For high value transactions more confirmations may be prudent.
There is good info here too: https://en.bitcoin.it/wiki/Confirmation

Thanks, this is concerning as a business owner where I aim to serve customers as quickly as possible and most of my customers wouldn't be too happy waiting even 5 minutes (when they could simply use VISA instantly).

@Kenshin Yes, I think most retail businesses would have that concern for in-store sales. There have been attempts to resolve that issue, but I don't see a lot of recent info on it in Bitcoin.SE, perhaps because of low adoption or a lack of success.


text:
How does mining pool ensure the miner works on the problem?
I understand that the header given to some miner contains hash of Coinbase that goes to servers address. Thus the miner cannot take the reward.
Also in the simplest setup the server gives miner a range of nonces to check and the range that miner checks is proportional to his hashing power and proportional to the reward.
How does server ensure miner checked that range?

Possible duplicate of How do mining pools work?

That question is an overview of mining pools. My question is specific, not answered within the scope of that question. The only thing I found there is "To do this there's specific software installed on the admin's server that takes care of making sure each miner is doing the work requested." I'm interested in how that "software" works.

Miners regularly send "shares" to the pool server. The shares are solution to a low-difficulty bitcoin puzzle. Each share stands some chance of being a solution to the current bitcoin puzzle, of much higher difficulty.
By sending shares, miners show that they are working on the problem, and may potentially reveal its solution to the pool server. They are often remunerated based on the number of shares they find, and of their difficulty.

Can you elaborate more on the answer. Solo miner calculates SHA-256 of block header, this is the 'normal puzzle'.  What is the low-difficulty puzzle?

The low difficulty "puzzle" is just like the normal "puzzle" except the target is much higher so the difficulty is lower (it's an inverse relationship). This means that a miner is more likely to find a share and the pool can track that the miner is actually doing work. By the randomness property of hashes, a miner will eventually find a hash that is also less than the actual network target (and thus be less than the pool target) and that block is what the pool submits to the network.

You should perhaps post this as an answer.

rephrasing, let say that the current difficulty is to find a hash of transaction starting with 17 zeros, if a miner finds a hash starting with 8 zeros then it is a share proving that the miner did some work. If this is the case, the miner could also do the minimum amount of work to solve these kind of puzzles. But perhaps you are rewarded based on the difficulty of your shares (if you find hash starting with 10 zeros, you might get a bigger part of the reward because it proves that you worked more). No idea if this is what is implemented though.

these explanations also do not say how the pool prevents a miner who finds a solution from not sharing it. EDIT: of course, the transaction that everyone is trying to mine uses the pool's address as recipient of the coinbase

The pool probably only sends the header to the miner. That way, even if the miner finds the solution, it only has the header and has no clue about the block contents required for publishing it.


text:
Question on Coin Trading and valuation
If I wanted to create a digital coin (asset) and wanted to keep the value of that coin steady (Think a dollar. It's worth a dollar today and a dollar tomorrow and a dollar every day.) What would be the best way to go about trading that coin? I am not looking to increase or decrease the value of the coin, I am looking more for a way that the coin could be cashed in by the holder. I figured I would come here because you all are way smarter than I am. :)
TIA

You would need to create some guarantee that someone would be willing to exchange this token for exactly a dollar.  This means that the value of the token would in no way be market driven, except that it is pegged to an existing currency and its value fluctuations.  I don't believe there is a way to do this in a decentralized manner, but since that's not what you asked, I'll assume that's okay.
You would need to create a company/organization that issues the token, and guarantees that they will buy it back for the price you peg it to.  For example, you would always exchange one token for one dollar.  This would have to be a legally binding agreement, so that if your organization ever refused to exchange at that rate, holders of the token would have legal recourse against you.  You would also need to be able to prove your solvency, and thus hold enough assets in dollars that holders of the token can be assured that you have the dollars to exchange if there was ever a run.  If a question of your solvency ever arose, your token would drop in value, so you'd have to allow regular audits of your organization's asset holdings.
Likely, much of this probably negates many of the advantages you are attempting to seek by creating a digital currency in the first place.  The trust in your system would be based on the legal system and the government that enforces that system...just like government issued fiat currencies.  Your organization would more or less be a bank, but a bank that issues its own token, and therefore is locked out of the existing financial infrastructure.  You would be subject to regulation, and therefore won't be able to offer anything more than a bank does.
In the modern age, nearly all money is digital.  You've basically just asked how to start a bank.

Jestin, Thank you for your answer. This is basically what I thought but I was looking for the possibility that there was a different answer. I appreciate you taking the time to answer.

There still might be another solution, but if so, it's beyond me :)  Pegging means issuing a guarantee, and that guarantee has to be trusted.  Tying a decentralized currency to a centralized currency will likely always cause the trust model of the centralized currency to be inherited by the decentralized one.


text:
Block validation files?
Which part of the code is responsible for validating blocks? I'm working on a BIP to modify the structure of block.h, and I think that would definitely affect the validation process. Can anyone point me in the right direction for the files I would need to change to update the validation process?

Conveniently, the file is called validation.cpp.  You probably want to look at the function CheckBlock.


text:
Coins sent without downloading the full wallet
i sent bit-connect tokens to my desktop wallet and now i cant seem to see them can you please help me it says on the block explorer that it is already there but the network is updated. after that transaction i sent another one which came to the address can you please help? Are my coins gone?

Presumably you are talking about this altcoin.Was your wallet of a type specifically designed for BitConnect coins? If not, then it won't detect them, but if you can get the private key from that wallet then they may still be recoverable.

Yes the wallet it is specifically for this altcoin and i can see the confermation in the blockchain https://www.blockexperts.com/bcc/address/8Y7D6YfD7htnQ7uYaDHZzQSHtjiXRZfsZ9

Has the wallet fully synchronised?

yes it has but i dont see my tokens

Have you double checked that the address exactly matches? If so, then perhaps there's a bug in the wallet. If it's a type of wallet that relies on 3rd party blockchain data, it could also be worth restarting the wallet or otherwise forcing it to connect to a different server.

how may i be able to do that i think the BCC blockchain only has 1 wallet. how can i connect to a diffrent server

is therea way i can contact you via direct msg or dm?

Without knowing more about it, I can't say. As an example, in Electrum, there is a Tools > Network window that indicates the server in use. When Electrum is restarted, a different random selection of server is made.

Best to keep details in this question, as someone else might be able to help.

What's the name of the wallet you're using? (Even if there's only one wallet available now, there may be more over time, and this question will be around for a long time)

Ultimately, if you:

have the private key for the receiving address the funds have been sent to
can still see the expected balance for the receiving address in the appropriate block explorer for BitConnect
can confirm the receiving address was correctly generated from the private key (eg by importing the private key to a freshly installed wallet, and checking the receiving address)

Then your funds should be retrievable, somehow (but you may need to resolve an issue with the wallet).
Firstly, I'd recommend ensuring you have a safely stored backup of the private key(s) for your funds.
Then, you may like to try re-installing the wallet, or deleting some of its data so that it re-sync's from the network.

but there is one error I sent another amount and the wallet received that but the weird thing is the first one didn't come


text:
Does the api_code of Blockchain.info's Create Wallet API expire?
Does the api_code of Blockchain.info's Create Wallet API expire?

There is nothing on the Blockchain Wallet API information page or the API signup page to suggest that the key would expire, so I would imagine it does not.


text:
How to create a receiving address using the Bitcoin Core client?
Im new on bitcoin 1-2 years ago I used bitpay and coinbase but now Im trying to get the wallet directly on my macbook.Downloaded the bitcoin core from bitcoin.com

So, Im registered on https://gourl.io to use a plugin for the wordpress but in their site, a field in the form is asking me for the external wallet address.
Any one is selling digital products using edd and gourl.io ?
Can some one explain what should I do and where can I find my wallet address?
Thank you!

no idea of gourl.io, but your wallet address is in the menu -> file -> receive addresses ...

So I have to create an address there? Because in that section I have empty fields https://preview.ibb.co/fwawHb/Schermata_2017_11_02_alle_21_30_13.png

no, you are in the bitcoin window. The top menu line (next to the apple in the top left corner) says Bitcoin Core, then File, ... not sure what it is in Italian. See here: https://ibb.co/gn4sOG

If you want your question about selling digital products answered, you should ask it as a separate question.

@pebwindkraft thankyou very much I understood all and I found what I was looking for looking on your screenshot.

Click "Receive" tab >>> Click "Request payment" button
Note: "Label", "Amount" and "Message" fields are optional

View Receiving Addresses: "File" >>> "Receiving addresses..."


text:
First bitcoin payment, sent X BTC, but transaction amount on blockchain.info shows as more than 2X?
I sent 0.01047 BTC through coinpayments.net using electrum.
First I selected minimum fee option, then I went back and selected one level higher as the fee tier.
My electrum wallet and blockexplorer.com show different wallet balances after the transaction. This is how the transaction and wallet look like in electrum:

However online blockchain explorers tell otherwise:
Wallet: https://blockexplorer.com/address/1HNN4AZkeupaTT5675k8s7XT4YCLUDpybK
Transaction: https://blockexplorer.com/tx/3437ff74196c8f5b4b348c636a88f84773577c47979a6941ef378b79044abe76
I also recognized at the above transaction link that one of the outputs is "unspent" and the other one "spent".
Also under blockchain.info link (https://blockchain.info/tx/3437ff74196c8f5b4b348c636a88f84773577c47979a6941ef378b79044abe76) it says "Estimated BTC Transacted     0.01047 BTC" although a few lines above the transaction amount shows as: 0.02217459 BTC
Can someone explain to me what this is? Have I lost some of my bitcoins?

Possible duplicate of https://bitcoin.stackexchange.com/questions/736/how-does-change-work-in-a-bitcoin-transaction

The amount you sent (0.01047) plus transaction fee (0.00054597) totals 0.01101597. This is how much was spent from your wallet balance (0.09079308) leaving you with 0.07977711.

You wallet balance consists of multiple bitcoin addresses. What you are seeing on Block Explorer is that one of the addresses in your wallet containing 0.02272056 was used, from which the transaction amount 0.01101597 was deducted, leaving 0.01170459, which was transferred to a different address back into your wallet. 1Gntc8EwpUXEhc7yAJsD25Y9YEBYTn6TnQ is a change address for your wallet - that balance is still yours.
The main difference is that Electrum is showing you the total balance of your wallet, but Block Explorer is showing you only the balance of the individual bitcoin addresses from your wallet that were used to make the transaction, including the change going back into your wallet.

It is also important to note that a transaction must always spend all bitcoin on an address used as an input. If you have an address X with 1 btc on it, you can't spend only 0.7 of that. You will spend 1 btc, sending 0.7 to your intended target, and 0.3 to another bitcoin address in your own wallet.

@BlackBeltBob an address can be valued by multiple unspent outputs, so that's not true. It is possible to spend only a portion of an address if only a subset of its unspent outputs are used as inputs. Additionally a transaction can use the same address as an input and output. Both of these operations result in a spending address with a balance after the transaction. But since the OP didn't know what change was, getting into inputs and outputs is probably too much information.

Thanks a lot for the explanations everyone!
Also, I realize that I overreacted in my question sorry for that :)


text:
Where is the incentive to update the Merkle root
I've just read the following question
Does block size effect Miner's Hashing speed?
and it appears that the answer is no - since miners only need to hash the Merkle root.
However, updating the Merkle root will take a lot of CPU power if/when bitcoin transactions reach a rate of 4000 tps.
What is the incentive for miners/pools to expend effort maintaining the merkle root at this rate?  Obviously if they do not expend this effort the result will be an ever growing backlog of unverified transactions.

The merkle root ensures that transactions were part of the block that is being found. It links the block header to the set of transactions in the block.
So if you don't update the merkle root you are not actually confirming the transactions, and you won't be able to collect the fee of the transactions. So the incentive to update the merkle root is the same as for including transactions into a block: you get transaction fees for doing so.

Thanks, that makes perfect sense.  I think the thing that confused me was that when I read the paper I got the impression that "transaction fees" were a thing of the future, and that for now the incentive comes from the fact you are allowed to introduce a new coin - owned by the miner - as the first transaction in a block.

But, aren't there transaction without fees?  In those cases, what is the incentive?

While there are no direct incentives to include free transactions, there is an indirect one: as the miners profit from an overall healthy Bitcoin ecosystem they are likely to also include them.

There are two reasons for updating the root. Typically, only the second one is the reason for updating it.

The 32-bit nonce for the current Merkle root has already been exhausted, a new root must be calculated by permuting the transaction order to continue the PoW problem.
More transactions with better fees have been collected in the mempool. Calculating a new Merkle tree means more potential profit with less potential loss.

Receiving more transactions typically happens much more than exhausting the entire 32-bit nonce, and is done to include as many transactions as possible to receive the highest fee reward.

well, when you run through the whole 32 bit nonce value and cannot get the hash with the difficulty level required, you may as well included additional transactions which will indirectly change the merkle root value and hopefully a new set of nonce value will enable miner to get the hash value matching the difficulty level.it just one of their strategies.


text:
Has anyone here used bitcoins to swap dollars for pesos in Argentina?
I've seen some chatter online about using bitcoins as a workaround for Argentinian currency controls (see below) and I'd like to speak to people who have actually done that, whether it means converting pesos to bitcoins to dollars or vice-versa. Was it cumbersome? Did you save money?
Can I use bitcoin as a means of bypassing Argentine Dollar restrictions?

I had not tried pesos/bitcoins exchange in Argentina (yet), but from my experience living in other countries with similar currency exchange restrictions, you'll unlikely save money this way. Generally speaking, most bitcoin sellers (most of thise are reselers) are buying btc abroad from international exchanges, so their expenses will be included to the rate. But if someone has another experience, it will be very interesting to hear success stories)


text:
How can anonymity and uniqueness be achieved in the blockchain?

How We Use Elliptic Curve Cryptography
At Follow My Vote, we use this technology to create votes. During the registration process, voters create two ECC key-pairs. The voter reveals her identity to a verifier, who certifies the first key-pair (the identity key-pair) as belonging to that voter, then the voter anonymously registers her second key-pair (the voting key-pair) as belonging to one of the identity keys, but the way this is done, no one can determine which identity key owns her voting key. She can then create transactions which state her votes on the contests in an election, and use her voting private key to sign those transactions. Once these are published, everyone participating in the Follow My Vote network can verify that the signature is valid and adjust the tally accordingly. This way the votes are public and anonymous, but each voter can verify that her vote was correctly recorded and counted. Furthermore, all participants can verify that none of the votes were tampered with by validating the signatures. In this way, Follow My Vote software performs transparent, end-to-end verifiable online elections without compromising on security or voter anonymity.

In particular, my doubt is about the selected phrase: "no one can determine which identity key owns her voting key."

I think the best way to interpret the sentence is that the voter can cast her vote anonymously and she can also verify that her vote was tallied.
This has less to do with the blockchain than just end-to-end verifiable elections. A simple example of such an election is the ThreeBallot system.

Nice reference!


text:
Why does Bitcoin use two rounds of SHA256?
Each blocked is hashed twice. Why isn't one application of SHA256 enough?

From Zooko's answer provided in Crypto StackExchange:

SHA-256(SHA-256(x)) was proposed by Ferguson and Schneier in their
  excellent book "Practical Cryptography" (later updated by Ferguson,
  Schneier, and Kohno and renamed "Cryptography Engineering") as a way
  to make SHA-256 invulnerable to "length-extension" attack. They called
  it "SHA-256d".

Length extension attacks are impossible in Bitcoin because length extension attacks only apply where the hashed data is secret. This answer is incorrect.

My conjecture is the double hashing everywhere was a red-herring to make us think Satoshi was sloppy, lame and take our focus away from a posited valid use case for the RIPEMD160(SHA256).
My lengthy and elaborate rationale is in my answer on the related question.


text:
Does using Ripple to accept Bitcoin reduce risk of Bitcoin fraud?
Does Ripple reduce the risk of double-spending, or other types of issues that may crop up when using Bitcoin natively?

Yes in the sense that any possible security problem that the Bitcoin system might have cannot affect your payment. But in exchange, any security problem that Ripple might have can affect your payment.
While it's true that with Ripple you also have counterparty risk, in exchange you have a counterparty guarantee. When you have Bitcoins on the Bitcoin network, "all" you have are numbers in other people's computers. You can't sue them or enforce any contract you have with them if something causes your Bitcoins to somehow become lost, and you can't choose your counterparties. With Ripple, you have a counterparty that you chose who is legally responsible for your Bitcoins in accord with whatever contract you have with them.
If the Bitcoin network were to somehow fail to deliver or hold your Bitcoins, you'd be out of luck. If the Ripple system were to somehow fail to deliver or hold your Bitcoins, your chosen gateway would still owe them to you and you would still be able to enforce your redemption agreement with them.
As a practical matter, I don't think it really makes any difference.

With Bitcoin there are various ways to mitigate the risks and issues you mention to allow some use of payments with zero confirmations instead of waiting for sufficient confirmations to be sure the payment is irreversible.
With Ripple, once a transaction is validated it is irreversible. Ripple transactions usually validate within seconds (5-20 seconds depending on various things). So no such mitigation is required and double spends and related issues are not a problem.
However, within Ripple for any currency other than native XRP, the balance/asset that is irreversibly transferred is a balance with another party. Until you redeem that balance (or spend/trade it within Ripple) you have counter-party risks that bitcoin doesn't have (at least bitcoin in wallet/address you directly control). Although the risks are explicitly limited by "trust lines" you've setup in Ripple (e.g. you may trust Bitstamp for 10 BTC and DividendRippler for 2 BTC) and require no trust in the payment sender.
This risk is analogous to receiving PayPal or BitPay payments. Until they transfer your funds to your bank (and possibly even after that depending on your bank) you're relying on them to make good on their balance to you. Also analogous to using a hosted Bitcoin wallet or other intermediary service where you rely on that party to hold your funds temporarily.

Ripple only has XRP as a native currency. Everything else on Ripple is an IOU, i.e. a promissory note. You can accept promissory notes denominated in virtually anything, but that doesn't change it being a promissory note. The only exception to this is the Bitcoin bridge where an IOU is immediately redeemed to an address as part of the transaction by a Ripple user implementing the Bitcoin bridge protocol such as Bitstamp.

No, you have added another 2 layers of counterparty risk compared to straight bitcoin transactions.
So instead of just having to manage risk for a 2 party relationship (customer:vendor) or 3 party (customer:processor:vendor) a business is required to manage a minimum of 4 parties (customer:ripple:btc-conversion:vendor) in a single transaction.
Given that any of these parties could be dishonest (until you have vetted them to a level consistent with your risk tolerance) you have at least 2x the number of opportunities for fraud.

Right, but that risk also comes with an enforceable guarantee. It's not clear which is worth more. For example, the blockchain split caused some people to lose Bitcoins on the bockchain, but Bitcoins held by counterparties were safe. You can't make a blanket assertion that one set of risks is better or worse than the others. It depends on your choice of counterparties and what you think the Bitcoin/Ripple network security risks are.


text:
g++ problem compiling litecoind on Ubuntu Server i386
I am trying to compile litecoind on Ubuntu 11.10 i386 server.
I used this recipe I found:
git clone https://github.com/coblee/litecoin.git
cd ~/litecoin/src/
make -f makefile.unix litecoind
mkdir ~/.litecoin/

But I am stuck there:
make -f makefile.unix litecoind

I get:
# make -f makefile.unix litecoind
makefile.unix:138: warning: overriding commands for target `obj/nogui/scrypt.o'
makefile.unix:135: warning: ignoring old commands for target `obj/nogui/scrypt.o'
g++ -c -pthread -Wno-invalid-offsetof -Wformat -g -DNOPCH  -DUSE_UPNP=0 -DUSE_SSL -fno-stack-protector -fstack-protector-all -Wstack-protector -Wl,-z,relro -Wl,-z,now -D_FORTIFY_SOURCE=2 -O2 -MMD -o obj/nogui/checkpoints.o checkpoints.cpp
checkpoints.cpp:5:59: fatal error: boost/assign/list_of.hpp: No such file or directory
compilation terminated.
make: *** [obj/nogui/checkpoints.o] Error 1

Anyone know what is going wrong? Seem like a file missing or a problem with the compiler. Also failed on Ubuntu server 11.10 x64...

In that case the solution is:
sudo apt-get install libboost-all-dev

Thank's to David Schwartz for his help.

Do you have the Boost libraries installed? Did you install whatever package provides "list_of.hpp"? (It may be boost-devel. Use your distribution's package management tools to find out.)

Thank's for your help needed the boost library to compile.

The file ~/litecoin/doc/build-unix.txt contains build instructions.  The one you're missing is on line 61:
sudo apt-get install libboost-all-dev

It worked for me after typing:
sudo apt-get install libboost-all-dev libdb++-dev libminiupnpc-dev


text:
Closed wallet on MultiBit, found it in AppData, but when I click "open" nothing happens
I have clicked on "close wallet" by mistake, and thought it was lost, and then found it in C:\user\<my name>\AppData\Roaming... but, when I click to open the wallet nothing happens.
I have saved my private keys to a USB stick, and my public address is written down (this wallet is in MultiBit). I have Windows 8.
Is it possible to recover my wallet?

There is a bug in v0.5.15 where if you close a wallet and then reopen it straight away the screen does not refresh. If you shut down multibit and then start it up again you should see it.