text:
Can someone saturate the network?
Suppose I have 2 wallets and 1 bitcoin and I write a program to make transfers of 1 satoshi from one wallet into the other.
Now suppose I have 100 bitcoins. Wouldn't that saturate the network?

Your transactions would be given the lowest priority as they are not paying fees, also if anyone is actually marginally successful in spamming the system it is entirely possible that the larger pools will simply not take their transactions, in fact some pools do filter out some transactions. This thread shows some of the restrictions that some mining pools already have.


text:
How would bitcoins "crash"?
The value of bitcoins has been fluctuating like crazy over the last week, experiencing exponential growth in the BTC to USD valuation. There is no way that that can be maintained longterm. What would make it crash?

If there are no more buyers at price X, then a seller has to lower his price by Y. If there are still no buyers, she will have to lower it more. If there a lot more sellers than there are buyers the price can drop very quickly, just as right now there are a lot more buyers than there are sellers and the price is rising very quickly.

A crash is a bit like an avalanche.
In an avalanche, snow falls and hits other snow; then that snow starts falling too.
People who invest under the greater fool theory will sell as soon as the price goes down. Obviously, when they sell, the price goes down more.

There many possibilities, all of which would lower the demand for BTC and, by extension, its value when compared to worldwide currencies. Off the top of my head I can think of:

A large swath of BTC being converted to government-backed monies (e.g., USD). This could be as simple as people "cashing in" on prior investments or as compounded as a run on BTC.
Negative press/hype generates speculative fears
Technological breakdowns (e.g., an exchange is hacked)
Mining stops (even if the current state of the protocol does not change, this is not likely for many years.)

source: Stack Exchange

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

sort: votes


text:
Help: Unable to connect using bitcoinrpc in python to my local bitcoin node
For the life of me I can't figure this out...
I was having trouble getting my machine to port forward 8332, but 8333 seemed fine, so I ended up moving my rpcport to 8334, which seems to connect now but I keep getting this error now on the following python script...
My Python Script(named bitcoin104.py)
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
# rpc_user and rpc_password are set in the bitcoin.conf file
#rpc_user = "myusername"
#rpc_password = "myuserpass"
rpc_connection = AuthServiceProxy("http://myusername:myuserpass@127.0.0.1:8334")
print(rpc_connection.get_info())

When i run it I get the following error...
PS D:\PROJECTS\python38_env_bitcoin\src\hellobitcoin101> python .\bitcoin104.py
Traceback (most recent call last):
  File ".\bitcoin104.py", line 8, in <module>
    print(rpc_connection.get_info())
  File "D:\PROJECTS\python38_env_bitcoin\.venv\lib\site-packages\bitcoinrpc\authproxy.py",
line 139, in __call__
    response = self._get_response()
  File "D:\PROJECTS\python38_env_bitcoin\.venv\lib\site-packages\bitcoinrpc\authproxy.py", line 179, in _get_response
    http_response = self.__conn.getresponse()
  File "c:\users\hanso\appdata\local\programs\python\python38\lib\http\client.py", line 1344, in getresponse
    response.begin()
  File "c:\users\hanso\appdata\local\programs\python\python38\lib\http\client.py", line 307, in begin
    version, status, reason = self._read_status()
  File "c:\users\hanso\appdata\local\programs\python\python38\lib\http\client.py", line 276, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"*
http.client.RemoteDisconnected: Remote end closed connection without response

Here are all the options i have set in my bitcoin.conf file in my local directory for bitcoin...
*port=8333
timeout=30
printtoconsole=1
chain=main
#rpcallowip=127.0.0.1
rpcpassword=myuserpass
rpcport=8334
rpcuser=myusername
server=1*

I ended up commenting out rpcallowip just to give it the best chance of working...
Should also note the node seems to be running fine otherwise, so it is definitely up and running, and when I was first playing around with setup I left the port open for a day and had outside connections happening... So i think that is setup ok. Other then possible something I am doing wrong with the bitcoin.conf file.
And since I switched to port 8334 from 8332 I am at least now not getting a machine/host blocked request message.  It seems to at least be communicating with the node now as well. But for some reason it doesn't seem to like the query?
I have no idea what I am doing wrong?  Any help would be greatly appreciated as have been banging my head against the monitor all day on this now....

What were the router settings when you forwarded 8333?

On what computer are you running the python-script?
Are you running the python script and your bitcoin-node on the same machine?

@user2880722 They were set for port forwarding on the ports i was attempting to connect through.  When i had that not setup, i got a 'connection refused by computer', but when I added the port forwarding it stopped giving that error, and now gives the error above about timing out.  Which makes me feel like it is actually not the portforwarding or firewall blocking issue now.....?

@Erik I was using the same machine the node is running on.  Hence connection using the 127.0.0.01 address.  Do you think I should try using my full address on my router instead?  ie for example 192.168.68.XX
Not sure if I mentioned but running on windows 11 machine.
I feel like it is connecting now, at least partially, only because when I got opening port wrong i get a different error talking about the computer refusing connection. Now at least I am getting the "Remote end closed connection without response". It really feels like I am connecting... thought, definitely could be wrong...

I wish I could see a working conf file, and matching python script using the rpc routines, then at least I could know how it is supposed to work. Right now I feel like I get only pieces, or examples setup on a cloud computer through one of those notebook sites, which I am sure don't have the same issues a real computer setup has like I am trying?
It's frustrating because I Have no idea what to try next.
Also I should mention I also can connect to my port using telnet just fine now, another reason I believe the port is available.

Should also mention telnet works on that port.
But when i use netstat -a I see port 8333 is listed as 'listening. But the port i set for listening for rpcport is not shown on the netstat -a list.  I am not sure if that shows the connection is not setup properly?
Are there any settings in the qt window that also need to be turned on, ie when I run bitcoin-qt.exe?

I am almost certain now the port is listening, and open...
But i have checked my password like a hundred times...
So frustrating.. is there a setting on the actually qt interface I may have accidently set wrong?

So first you want to make sure that Bitcoin core is running. May seem obvious but I've forgotten that sometimes.
Next is the port forwarding. This may be the source of your problem.
You're going to want to go into your ethernet settings and network connection details. In there you will see an IPv4 address, something like 192.168.0.xx. Save that number.
Now go into your router settings, setup a TCP service on 8333 and put the IPv4 into the internal IP section and save.
Now to call this in python I use bitcoinlib.
my code looks like this:
from bitcoinlib.services.authproxy import AuthServiceProxy, JSONRPCException

def rpcConnect():
    try:
        rpc_connection = AuthServiceProxy("http://user:pass@127.0.0.1:8332")
        return rpc_connection

My bitcoin conf looks like this. Some of these may not be relevant to you
coinstatsindex=1
daemon=1
txindex=1

server=1
prune=0
peerbloomfilters=1

rpcuser=***
rpcpassword=***
rpcport=8332

Thanks @user2880722. I have already done the port forwarding on my local mesh router system setup.  I added it specifically to my own machine.  For some reason I could not for the life of my get 8332 open.  I see 8333 is working fine when i run telnet or netstat -a. So I finally ended up trying 8334, and that worked it seems, at least I was able to telnet to it, where 8332 just would not work. Even after opening on myfirewall and router in as many ways as I could think to try...

But I never had several of the options you had... namely..
coinstatsindex=1
daemon=1
txindex=1
So I am going to try those again.  I will definitely try to see if my forwarding is working properly on my firewall and my router again, just to make sure.
At work now so will try this later this evening and post how it went. Really hoping to figure this out as so frustrating... ;)
Again thanks for the help!!!

I have tried everything.
I am certain my port is open, as when I telnet to it, it connects just fine.
And when i use netstat -a, it shows up as 'listening' which wasn't happening before I set that port, so i think it isn't port forwarding or firewall issues.
And when I run this...
rpc_connection = AuthServiceProxy("http://username:userpassword@127.0.0.1:8334")
It seems to run no problem,.. but then when i try this right after..
print(rpc_connection.get_info())
It fails with the error...
http.client.RemoteDisconnected: Remote end closed connection without response
So frustrating.

I am sure the connection is working now. it is the password I am now questioning..
But I dont' know what i could be wrong?
my password is set as follows...
rpcuser=one
rpcpassword=two
is there supposed to be quotes around the password and user id?  The example .conf files I have seen had none of that.
I am starting to think I might need to reopon this question and start again, and ask about how authorization, and what might be my issue on that front.  As everything I confirmed my ports are open, and listening, it is just the server that seems to have some issue granting my request

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


text:
What is a double spend?
What is a double spend?
As someone who uses Bitcoin, what do I need to know about how the Bitcoin system prevents double spends? Are there still circumstances where they can occur?

A double spend is an attack where the given set of coins is spent in more than one transaction. There are a couple main ways to perform a double spend:

Send two conflicting transactions in rapid succession into the Bitcoin network. This is called a race attack.
Pre-mine one transaction into a block and spend the same coins before releasing the block to invalidate that transaction. This is called a Finney attack.
Own 51+% of the total computing power of the Bitcoin network to reverse any transaction you feel like, as well as have total control of which transactions appear in blocks. This is called a 51% attack.

To prevent damages from the first attack - wait for one confirmation to appear on a given transaction. To prevent damage from the second attack - wait for 6 confirmations to appear on a transaction, or less if the transaction is small (but still require at least 1). Damage from the third attack can cripple the entire Bitcoin network, so don't worry about it - your business most likely won't be the main target (it's unlikely to happen without really big money getting involved).
For more information about all those attacks, you can check out my master thesis on Bitcoin security.

This answer could be improved by explaining that coins can only be spent once and how the double spend attack could be detrimental to the recipient.

"your business most likely won't be the main target (it's unlikely to happen without really big money getting involved)." That is not particularly true, because if you own a lot of mining power, cost of attack becomes really small to you, so you can wreck a lot of people with little cost. Also, you don't need big money to do that. All you need is to hack one the biggest mining pools.

As a merchant, you can reduce the likelihood of losses from a race attack double spend by having your node properly configured (no incoming transactions, explicit outgoing connections to well-connected nodes).  There still is a tiny risk of getting cheated even with this configuration but it is rare and relatively random.  Thus the disincentive to the attacker is that if success in double spending only rarely occurs, each failed attempt is a profitable sale to the merchant and thus in the long run it is unprofitable for the attacker and profitable for the merchant.
There are circumstances where a merchant is more vulnerable.  An unattended coin change machine at a laundromat, for instance, would be the worst case scenario for the merchant.  The attacker loses nothing for failed attempts (presuming the machine is not taking any profit from each "sale"), takes the gains on the occasional successful attempt, and is not likely to get caught for committing fraud as by the time the laundromat operator is aware anything happened the thief is long gone.  (Of course, countering this is the likelihood that blockchain monitoring would have identified the numerous double spend attempts and thus the laundromat operator can prevent even this from occurring.)
The Finney attack also has costs that make it less of a threat than it would seem.  Holding a block costs about a dollar a second.  So if once a block is mined but not broadcast and it then takes the thief forty seconds to complete the transaction with the merchant, there had better be a lot more than $40 worth of profit from doing so otherwise the attempt ends up being uneconomical over the long run. Again, the merchant would know eventually that the double spend had occurred (measured in seconds, if monitoring the blockchain), so this doesn't work well in circumstances where the thief risks getting caught.  So the prevention for this is to simply not make large value transactions (e.g., hundred dollars or more) on 0/unconfirmed without some delay where you are watching for double spending.
The 51% attack that would reverse confirmed transactions is so expensive and thus such a remote chance of it occurring, it is not even of concern for a typical merchant. (i.e., someone spending millions of dollars to double spend using this attack vector, if it ever happens, is going to go after trades where large exchanges of value which occur -- think gold bullion traded for bitcoins under a bridge at midnight.  They are not trying to buy your consumer electronics that you ship out via UPS nor are they meeting you at Starbucks hoping to defraud you of your $200.)

http://en.bitcoin.it/wiki/Double-spending

If everyone could spend the same Bitcoin twice, then the whole system would collapse because Bitcoins would not be scarce.

That isn't what "double spend" means though.  A double spend attack doesn't actually create new coins and has no effect on the money supply.  Rather, it lets you take back coins from someone you previously gave them to (so they don't have them anymore).  No offense, but I don't understand how this answer got to +4.

Double spend when a user able to spent his coins more than once. This normally happens when you able to create two different versions of blockchain ledger, and both were valid at different times.
To understand read this real-world example, where an attacker able to spent double-spent 807K ETC.
Attacker Stole 807K ETC in Ethereum Classic 51% Attack

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

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


text:
API for converting currency such as Euro/USD to BTC
Basically what I'm looking for is a reliable API that allows for the conversion of an imputed currency amount such as USD/Euro amount and a conversion would be made that would  convert the amount to BTC.
I want to also point out that I am not looking to convert hard cash for actual bitcoin. I am only looking to determine the current value conversion of a particular USD/Euro at that particular time period.
I am hoping to use this feature on a current website (HTML/PHP/ETC..) that I am working on.
If anyone can point me to a reliable API that can perform such a task please let me know. Also if you happen to have any guides in regards to implementing/using the API that would also be greatly appreciated.

EDIT:
I want to also point out that I have gathered a few API URLs from numerous websites which can be viewed at the comment section. Now my question is how do I go about choosing the most efficient API and is their any step to step guides, that guides someone in implementing a particular API?

Which exchange APIs have you looked at so far?

I have looked at the following: https://coinbase.com/api/doc/1.0/prices.html
https://coinbase.com/api/v1/prices/spot_rate
http://bitcoincharts.com/about/markets-api/
https://blockchain.info/api/exchange_rates_api
https://btc-e.com/api/documentation
https://bitpay.com/ and https://coinbase.com/api/doc/1.0/currencies/exchange_rates.html But I'm guessing that the last one my serve me better?

Well that's a pretty comprehensive list, I don't think there's anything to add really. Perhaps you could update your question to state what you would like to know, since finding an API doesn't seem to be the hard part.

Ok ill be updating my question. But my question for you is which link do you feel is more reliable in terms of conversions? And any resources that you are aware of that helps and guides first time API users?

See bitcoin-prices.js library for JavaScript (front end, no server-side components needed) that uses free bitcoinaverage.com API.

Check this API https://bitaps.com/api/#Market_API
ticker  for current exchange rates
history  for market history

http://www.xe.com/xecurrencydata/ but it will cost you, or some of the free services like: http://www.coindesk.com/api/ (but you'll have far less functions)

You can get multiple currencies in a single request with Blockchain.info (https://blockchain.info/ticker)

All the API's you've mentioned are reliable in the sense that they have very good uptime availability and have excellently calculated rates for their domains. You have to know why you need a particular rate. The data comes from independent exchanges and various algorithmic meshes of exchange data. But if you need to make the trade yourself, you want to know the likelihood you'll be able to buy or sell at any given price at the time of the rate quote. For this reason, you should pick an API that is relevant directly to where you exchange your funds.
This may seem nitpicky, but Bitcoin is a relatively small market, so a market price is a lot more difficult to determine with accuracy. Even the international foreign exchange market cannot guarantee a magic price you will settle at because fees and delivery mechanisms vary infinitely.

All of the other answers, containing proper API solutions, look good. If you're after a really lo-tech, no-fuss solution, submit an http request to google with the query "1 BTC in USD" (or whatever currency you want to convert to) and then scrape the answer given.
A complete hack compared to a proper API, but that may be easier if you want something quick and dirty.


text:
What does the IRS tax in terms of bitcoin practices
What of the following do I put on the tax form that I got money from a website for viewing ads, donating money, turning gift cards into bitcoin, buying gold, putting money into a bitcoin savings acount, buying miningsweden mining shares, or handing money to a scammer?
By the way I did not buy any bitcoins from an exchange.

They tax the exact same things as if you'd done those things in Thai Baht, or Nigerian Dollars, or British Pounds. If you view ads, that's income. If you buy gold, and it appreciates, that's capital gains. If you buy a mining contract, the income minus depreciation is capital gains.

So the other things are not taxed?

Which things? Paying money to a scammer? I suppose they'd have to pay income tax and possibly sales tax, but somehow I don't think they'd put that down on their 1040.

Ok and for donating money, turning gift cards into bitcoin, and putting money into a bitcoin savings acount?

Donating money could earn you a tax exemption, turning gift cards into bitcoin is income if you make money, and I'm not aware of any Bitcoin savings accounts that aren't thinly veiled high yield investment program scams.

If I instead lose money then I don't report it at all right?

If you gain money, then lose money, that can potentially be taxable.

The bitcoin savings account I use is magnr-2.18% AER Interest Rate. Also what is tax exemption?

There is one interesting Bitcoin tax loophole. It only works for individuals who have held Bitcoins for more than a year. If you acquired Bitcoin (either by buying it or mining it) a long time ago for a low price and donate it to charity today, you can claim a charitable deduction for the present value of the Bitcoins without having a taxable gain for the appreciation. You cannot sell the Bitcoins and then donate the proceeds, you must donate the Bitcoins. (And please, consult with a tax expert to make sure there isn't some reason this won't work for you.)

TaxHawk finally has cryptocurrency filing instructions for the 2018 tax year:

Cryptocurrency
Where you report the income from cryptocurrency depends on how you received it.
Wages: Menu Path: Income > Common Income > Wages (W-2)
Investment: Menu Path: Income > Common Income > Stocks or Investments Sold (1099-B)
Mining: Menu Path: Income > Business Income > Business Income (Schedule C)
Virtual currency, also known as cryptocurrency or altcoin, is a medium of exchange that only exists digitally. It has no centralized authority but uses a decentralized system to record transactions and relies on cryptography to prevent counterfeiting and fraudulent transactions. Examples of cryptocurrencies are Bitcoin, Zcash, Litecoin, and Ethereum, just to name a few.
Income paid in cryptocurrency or earned by buying, selling, or mining cryptocurrency is subject to taxation by the IRS. You can read the direction the IRS has given in Bulletin 2014-21.
Where you enter cryptocurrency income depends on how you earned the income. We'll give you an overview of the possible places below.
Wages paid in cryptocurrency should be converted to U.S. dollars on the date of each payment by your employer and reported on your Form W-2. The conversion to dollars should have already happened before you get your W-2.
Income paid to you in exchange for goods and services that wasn't wages (for example, you were paid for a service performed as part of your self-employed business in cryptocurrency) should be converted to U.S. dollars on the date of each payment and reported along with any other self-employment income.
If you held cryptocurrency for investment, it should to be treated as a capital gain or loss.
If you mined cryptocurrency, earnings from this activity should be converted to U.S. dollars as of the date you receive it and be included as income. If you were self-employed for the cryptocurrency mining, the income needs to be reported as self-employed income.


text:
Create a Bitcoin Core wallet from a recovery phrase
Is there a way to create a wallet from a Hierarchical Deterministic recovery phrase in Bitcoin Core 0.21.0?
I'm using the x64 Windows cli version, in case that matters.

No, bitcoin-core does not support bip39 mnemonic phrases.

There's no work-around? Convert the mnemonic phrase to a private key and use that to import in Bitcoin Core?

Yes, but you must use a wallet-client that supports your Seed Recovery data, which may include a passphrase as well as the mnemonic.
Electrum's can be different from the standard BIP39 version.
Once you have restored access to that account-wallet in that client, you then can get the addresses used and their corresponding privkeys.
However if you want to generate new address/keys in Core, the derivation path issues mean you are better off just creating a new account-wallet for Core to use, and transfer the existing coins over if you want just one wallet.


text:
Even though Blockchain is tagged as " Decentralized", wouldn't the organization actually implementing the Blockchain like Ethereum control it?
For example, If I were a business that would want to use the Ethereum Blockchain technology to shift my business to Blockchain, wouldn't Ethereum be in control of the actual underlying Blockchain technology? Wouldn't it have the power to for example change the consensus algorithm or change the underlying technology? If I am missing something here please explain.

If you are using Ethereum Smart contract, then yes, your business will be affected by changes in consensus algorithm or the underlying technology. However, if you use your own private blockchain based on Ethereum, you can upgrade or modify it as you like. The latter will likely lead to centralization.

"Decentralized" is really a hybrid of distributed and centralized:

For example, If I were a business that would want to use the Ethereum Blockchain technology to shift my business to Blockchain, wouldn't Ethereum be in control of the actual underlying Blockchain technology?

No. What determines the rules the blockchain follows is the software that the users of the blockchain run. Nobody has any special power to make anybody else run software in some particular way. They can only try to convince them to change.
For example, when the DAO was drained, proposals were made for ways to restore the stolen funds. Nobody had any authority to force people to make those changes, and so some people made them and some didn't. That is why you have both ETH and ETC today. Those who disagreed with the plans were not in any way compelled to accept the changes as nobody had the power to compel anyone.

That is true if the business is running on the main public Ethereum blockchain. Besides that, you would control the business. However, the application would not be running on a central server or a cluster owned by a single entity. The application would be installed and running in a decentralized environment, i.e. the Ethereum main chain.
On the other hand, many businesses might have their own "private" blockchain. In that case, the level of decentralization depends on how it is set up. However, the Ethereum Foundation would not be controlling the underlying technology because the business would control what software client and version is being used. Since Ethereum is open source, a business could even make their own changes to customize the Ethereum client that it runs on.

So the entity which has implemented the Blockchain could hypothetically change the ledgers if they wanted?

If they could, then it wouldn't be a blockchain. That immutability is one of the major desirable features of a blockchain so I don't see a reason an entity would want to do that. If the entity controls all the nodes of their own private blockchain and sneaked in a way for them to change the ledgers without the knowledge of the other parties interacting on it, it would be a major breach of trust and violation of their agreement with the other parties. Maybe someone more knowledgeable has a better answer to this. Have not thought about this scenario until now.


text:
How do I convert bitcoins into Brazilian currency?
I have a Bitcoin wallet for a mobile device. How can I convert bitcoins into Brazilian currency?

@Geremia no idea how to vote but I'm voting on that too!

To find an exchange in Brasil you can try buybitcoinworldwide.com. There are many exchanges, the site does not list all of them.
Most exchanges that let you buy bitcoins also let you sell (for a fee of course).

You can calculate that in mind easily!!
1 BTC equals $10,000. $10,000 equals 45346523136 BR.


text:
Making Bitcoin Core 0.12.0 maximize by bandwidth
Bitcoin Core 0.12.0 added many bandwidth (e.g., maxuploadtarget) and rate limiting (e.g., with maxmempool) features.
I have maxuploadtarget set to 0 (default; unlimited), yet I used to get several gigabytes of traffic each day. Now I only get a few hundred. Why?
What must I do to make Bitcoin core maximize my bandwidth?

The new option is called maxuploadtarget. It joins maxconnections and listen in the list of things that can be used to control the bandwidth and resource usage of your Bitcoin client. maxuploadtarget controls the bandwidth used in a much more precise way than was previously possible without external tools.
maxuploadtarget is off by default. You don't need to do anything. More documentation is available here.

Yes, but I used to have several gigabytes of traffic per day. Now I only get a few hundred, even with maxuploadtarget=0 (unlimited). Why?

Several gigabytes per day sounds like someone was downloading the blockchain from you. Perhaps they're done?


text:
How do I reconfigure a Mt. Gox Yubikey?
After following the instructions here, which suggested I use ykpers or the gui version, I discovered the Mt. Gox Yubikey is protected by a "configuration protection access code."
From the manual:

Protection of the key and configuration data
Given the symmetric nature of the AES encryption algorithm, the
  security of the Yubikey relies that the AES key is logically and
  physically protected both in the key and in the server that verifies
  the OTP.
The configuration data is updated via a configuration API, accessible
  via the USB interface. To prevent unauthorized update, the
  configuration can be protected by a 48-bit access code. If used, an
  exhaustive search of all combinations would typically take some
  100,000 years to perform. Furthermore, the Yubikey configuration data
  is write-only, i.e. configuration data and the key can only be written
  but not be read. This means that unauthorized update of the
  configuration is an act of sabotage rather than a security threat.
The configuration data is stored in a non-volatile storage integral to
  the microcontroller. A potential attack is to physically probe the
  silicon or analyze the hardware behavior to potentially gain full or
  partial knowledge of the stored secrets. However, such an attack would
  require a complete break-up of the Yubikey, involving dissolving the
  microcontroller chip encapsulation. Furthermore, very advanced
  equipment is needed to probe the chip internals. Given the effort and
  costs involved for such an attack, this is not considered a threat
  given that just a single device will be broken.

Yubikey wrote me:

In case, if you have forgotten the configuration protection code or do
  not find it in the log file, then you can not reconfigure the YubiKey
  slot again. This functionality is implemented to strengthen the
  security.

Also, he wrote:

In the context of the manual, an "unauthorized update of the
  configuration" would be changing the configuration settings on an
  unprotected YubiKey. Since you already have an access code in place,
  you cannot preform such an update.

But it should still be possible to "sabotage" a Mt. Gox Yubikey, no? If not, why? If so, how?
thanks
What is also strange is that when I try to create an account at forum.yubico.com or test my Yubikey at demo.yubico.com, they reject my OTP. Yubico Forum's registration says my OTP can't contain non alphanumeric characters, and it sometimes contains periods. [Update: this ended up being because I was using Dvorak keyboard layout for the Yubikey. I've changed it, and now my OTPs work on these sites.]
UPDATE #2: I found this: https://github.com/nezza/yubicrack
But there has to be a quicker way than doing a brute-force search of the code. I really wonder why it is so hard to flash a Yubikey? Is it so that others can't render it effectively "lost" or "stolen"?

Since Mt. Gox's bankruptcy the unlock codes were leaked, see What is Mt. Gox's YubiKeys' "configuration protection access code"?

As answered in a newer, strongly related question: You can now get the leaked keys from https://bitcointalk.org/index.php?topic=631044.0

Mt. Gox locks their Yubikeys with an access code. You cannot reprogram them without the code. If you're willing to wait a few months, you can brute force it.

And they wouldn't release the access code because it would render the Yubikey useless with Mt. Gox? Why did they opt to make their Yubikeys exclusive for Mt. Gox?

@Geremia: Doing it this way eliminates a number of potential vulnerabilities.

Do you know if Mt. Gox would release or has released the access code, now that they're belly-up? If so, we could reprogram the YubiKeys they sent us with a different access code and use them for other purposes. The YubiKey they sent me is just collecting dust…


text:
Keeping old blocks on an external hard drive and latest blocks on an SSD
I would like to keep the latest 512 MB of blocks on my SSD (using pruning?) and the rest of the blockchain on an external non-SSD hard-drive. Is there a way to do this already, or do I need to write a script to accomplish this?

Are you using Bitcoin Core or some other client?  Please add an appropriate tag.

Note that you might be able to achieve a similiar performance gain by putting all the blocks on the external hard drive (e.g. by making .bitcoin/blocks a symlink) and leaving the chainstate and other heavily-accessed databases on the SSD.

@NateEldredge Yes, Core. I've added that tag.

@NateEldredge Yes, performance-wise that would be good, but I don't want the external HD running constantly, as it would need to be if the latest blocks were stored on it. (I'm on a laptop, so there are energy limitations.)

I see.  But I would not be surprised if you get fairly frequent requests for old blocks, from nodes trying to sync for the first time.  Bitcoin Core would try to satisfy those requests and spin up the external drive.  So depending on your timeout settings, I expect you will either be running that drive a large fraction of the time, or spinning it up and down a lot (not good for its lifespan).

@NateEldredge Yeah, that's what I was wondering about: what percentage of nodes, on average, would be requesting old blocks anyways

you can remove the block serving service flag I think so that peers don't ask for historical blocks from you.

Or just set maxuploadtarget really low.

I wonder if running two instances of bitcoind would work, one with full blocks, the other pruned, and allow the full block instance to only serve to the pruned one.

Blocks are not accessed under normal operation, except:  When a peer fetches one (and the most recent block is usually served out of an in memory cache), when there is a reorginization that must undo the effect of a block (which is pretty rare), or when you use an RPC to look up a historic block.
With that in mind, perhaps you can just put your blocks directory on the other disk.
If you set your node to be pruned but set the pruned amount much larger than the amount of block data, you will avoid peers fetching large numbers of old blocks from you (but still keep the data around).
If you found high disk accesses while in this configuration, I think thats something that the project would like to fix.

https://statoshi.info/dashboard/db/unspent-transaction-output-set
the serialized UXTO set is 4GB as of April 2020.
You can put everything in the RAM and Hardisk. SSD has a limited life span especially if you have excessive write operation.

You could have two datadirs, one locally and one on the external hard drive where, every so often, you connect the external hard drive and start Bitcoin Core to use that as a datadir and sync it up. The local one could be pruned.
However if you wanted to have most blocks stored on the external hard drive and have Bitcoin Core automatically move them there and then be able to handle when it can't find those blocks, then that is not possible.

If you are already synced, you could call a simple script using blocknotify=script.sh in your bitcoin.conf to check for a higher numbered block file, and if one is found, move the lowest one out and the newest one in.
But a better way would probably be doing this at the block level with some fs/raid abstraction, or an inotify watcher if you have to do it at the file level.

I don't think this will work, as bitcoind may try to access the file afterwards. Even if you replace it with a symlink, it may be accessed in between deleting the old file and creating the link.

Yeah, you're probably right. I would just raid the ssd & hdd together, but if that's not possible and you have to do it by moving blk.dat files around, probably the safest bet is to (1) watch the blocks directory for new files with inotify; (2) stop the bitcoind service, (3) move the newest file to the ssd, (4) move the oldest file on the ssd to the hdd, (5) resymlink those two files to blocks, (6) restart bitcoind.


text:
Implementing Secret Sharing with an Encrypted Bitcoin Wallet
How would I implement Shamir's Secret Sharing Scheme with an encrypted Bitcoin wallet?

Can you explain in more detail what you are trying to achieve?  SSSS works in principle with any arbitrary data, so you could certainly use a Bitcoin wallet file as the secret to be shared.  You could also just use the wallet's encryption passphrase as the secret.

@NateEldredge See this. Someone also recommended Blind signatures. I'm not really sure what the best way of implementing either of these schemes is, though. I wouldn't want to use the wallet's passphrase because I don't want the user decrypting the wallet to know the passphrase.


text:
Node Discovery Issue
On my node's https://getaddr.bitnodes.io/ page, clicking the "Check Node" button on the bottom of the page reports that the node associated with this IP address is up; however, at the top of the page, "Node Status" says it isn't. It seems my node is having discoverability issues with the Bitcoin network, although https://getaddr.bitnodes.io/ can ping it just fine.
Why would this be?
I've even run the node on a different network (one even supporting IPv6), and I get the same issue.
I'm thinking it may have something to do with my running bitcoin-qt with a Tor proxy, although I am explicitly supplying the "--listen" flag to bitcoin-qt.
(I've asked about this on Github, but it doesn't seem to be a big in bitnodes but a configuration issue on my end; or perhaps the BTC network in my area just doesn't have need of more nodes?)

I'm confused - if you're running on Tor, presumably you don't want people to identify you, but you also are using --listen, which makes it substantially less anonymous. What are you trying to do?

@NickODell: I want to run Tor for outgoing connections only. This worked the first time I tried, but now Bitnodes.io says my node is down, and I haven't been discovered by the Bitcoin network since.

I just don't understand why Bitnodes.io can ping my node and detect it's there, but the Bitcoin network seems not to have discovered the node.

Very weird! Now it's working! It must've just taken a long, long time for someone to need my node, but it seems the BTC net discovered it now. I think the issue was my not opening IPv6 port 8333 (as a have an IPv6 and IPv4 firewall; only the IPv4 port 8333 was open…).

What solved it was toggling "Allow incoming connections" in bitcoin-qt GUI. For some reason the pref must've not been set properly…


text:
How do pools determine a pool-user's hashrate?
How do pools determine a pool-user's hashrate? It seems they would base it on the particular user's difficulty or rate of accepted shares.

@Murch: How so? I'm looking for a formula pools could use to calculate it.

It appears that your intended request is more specific than the question you have presented us, as the answer I linked gives an overview of what you appear to be asking here, and names four different methods of distributing the mining reward. Perhaps you should clarify what you already know, and what information on what you are looking for.

@Murch: Yes, my question is exactly a duplicate of your 2nd link.


text:
Open-source forensic analysis tools to analyze full-node's local copy of Bitcoin blockchain?
Are there any open source alternatives to Chainalysis Reactor for doing forensic analysis of a local copy of the full Bitcoin blockchain?

BlockSci might be relevant, though "As of November 2020", it "is no longer actively maintained".
Abstract of a paper by one of its devs:

Analysis of blockchain data is useful for both scientific research and commercial applications. We present BlockSci, an open-source software platform for blockchain analysis. BlockSci is versatile in its support for different blockchains and analysis tasks. It incorporates an in-memory, analytical (rather than transactional) database, making it orders of magnitudes faster than using general-purpose graph databases. We describe BlockSci's design and present four analyses that illustrate its capabilities, shedding light on the security, privacy, and economics of cryptocurrencies.


text:
How does Electrum's "send change to lightning" work?
In Electrum, when sending to a non-Lightning ₿ address, I can choose the "send change to lightning" option. How does this work?


text:
Is simplified payment validation (SPV) decentralized?
Is simplified payment validation (SPV) decentralized?
Viz., when an SPV client wants to verify a payment, does it connect to a central server or to several random peers, checking that their Merkle tree traversals for the transaction to be verified all agree?
"Choose your Bitcoin wallet" from Bitcoin.org says (e.g., for GreenAddress's Android wallet) "Decentralized validation," which it describes as:

This wallet connects to a random server from a list. This means some trust in third parties is required when verifying payments. However, it is not as secure as a full node like Bitcoin Core.

How is "connect[ing] to a random server from a list" decentralized?
However (e.g., for iOS's BreadWallet) it says "Simplified validation" instead, which it describes as:

This wallet uses SPV and the Bitcoin network. This means very little trust in third parties is required when verifying payments. However, it is not as secure as a full node like Bitcoin Core.

Did you mean to link bitcoin.com instead of bitcoin.org?

I'm not sure why the difference in those two wallet descriptions. That might be a case when the wording was changed for one and the other was forgotten about. That said I don't know the details on exactly how the wallets work, so there might be a slight difference. Maybe you should raise this with the bitcoin.org people (I think they work through github these days, you should be able to raise an issue there).

@Jannes A bit of discussion about it is here: https://github.com/bitcoin-dot-org/bitcoin.org/pull/601

If you assume you are not being attacked, in the sense that your internet connection is not being restricted in a way that it allows you to only connect to an attacker's nodes without you noticing (Sybil attack). And note that that's actually an assumption that doesn't always hold and you can't really prove you're NOT being attacked, so it is certainly a security concern.
If that assumption holds then you are really connecting to a random node of your chosing that is not run by a centralized organisation or even group of people. Centralized would imply that there is some center that is the authority to decide what is truth. That is not the case here, even using SPV. So yes, I'd say it's decentralized.
Note also that instead of connecting to just one random peer you can connect to multiple so you can doublecheck that one is not lying. Although depending on the situation it may be hard to judge which peer is lying and which is telling the truth, so you may end up having to trust "the majority".
Also, an upcoming update called Segregated Witness is going to make Fraud Proofs possible. That will allow a single honest node to simply prove a statement, so even if the majority is lying you can still know for sure.

dan91 wrote on BitcoinTalk.org:

I believe green address uses some of their own servers and some electrum servers for verification. BreadWallet does use full nodes as i have seen some userid's with BreadWallet connect to mine.


text:
Is there a way to create coinbase transactions with an RPC command?
Is there a way to create coinbase transactions with an RPC command?

Yep, it is partially possible with the getblocktemplate RPC command.
This is what miners routinely use to obtain the information necessary to begin mining a block.
The exact parameters and response has been specified by BIP 22 and BIP 23 (an extension for pooled mining).
These output values will provide the information you need:
"coinbaseaux" : {                 (json object) data that should be included in the coinbase's scriptSig content
      "flags" : "xx"                  (string) key name is to be ignored, and value included in scriptSig
  },
  "coinbasevalue" : n,              (numeric) maximum allowable input to coinbase transaction, including the generation award and transaction fees (in satoshis)
  "coinbasetxn" : { ... },          (json object) information for coinbase transaction

Unfortunately, although specified, it does not appear that Bitcoin core provides the "coinbasetxn" JSON object for you, so you'll have to create it manually. However, this will at minimum give you the coinbase value and transactions to include in the block.
You can create the coinbase transactions just like any other transaction, however it MUST abide by the following rules:

BIP 34 which requires you to prefix the input script with the serialized height of the block.

For example, the input script of block 549,322 is:
------ Original ------
03CA6108FABE6D6D15B0663A60E46473FBA0C15DBEDCC466A5B71C741D9FFE721E38E9D161BCE45201000000000000000C65070100FB9B000013D7EC00082F736C7573682F

------ Decoded ------
03 -> Push 3 bytes
CA6108F -> 549,322 (height in littleEndian)
------ Remaining data is arbitrary ------
ABE6D6D15B0663A60E46473FBA0C15DBEDCC466A5B71C741D9FFE721E38E9D161BCE45201000000000000000C65070100FB9B000013D7EC00082F736C7573682F

Must have one TX input
Previous hash =  0x0000000000000000000000000000000000000000000000000000000000000000 (since coinbase is the first TX in a block)
Previous output n = 0xFFFFFFFF (-1 decimal since coinbase is the 0th transaction)
Output does not exceed (block reward + fees) or the coinbasevalue if you're using the RPC command with the provided transactions.

In our example block (549,332), the coinbase transaction's raw hexadecimal (the output found in createrawtransaction RPC command) is:
010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff4503ca6108fabe6d6d15b0663a60e46473fba0c15dbedcc466a5b71c741d9ffe721e38e9d161bce45201000000000000000c65070100fb9b000013d7ec00082f736c7573682f0000000003b33eee4a000000001976a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac00000000000000002c6a4c2952534b424c4f434b3a8cca119e75a4d70a57346f0fb9facc55f00f150265095a92ca27a9b1b1ac6e000000000000000000266a24aa21a9edb8c0253a8b72023513b3f8c08591fb009e1b89d1651ee044d183a4c627399a710120000000000000000000000000000000000000000000000000000000000000000000000000

which decodes to:
01000000 -> txVersion
00 -> SegWit marker
01 -> SegWit flag
01 -> Input count (important that it is 1 for coinbase transactions!)
0000000000000000000000000000000000000000000000000000000000000000 -> Previous hash
ffffffff -> Previous output #
45 -> input script length
  03 -> Push 3 bytes
  ca6108 -> block height (littleEndian)
  -- arbitrary data --
  fabe6d6d15b0663a60e46473fba0c15dbedcc466a5b71c741d9ffe721e38e9d161bce45201000000000000000c65070100fb9b000013d7ec00082f736c7573682f
00000000 -> sequence
03 -> output count
  b33eee4a00000000 -> output 1 value
  19 -> output 1 script length
  76a9147c154ed1dc59609e3d26abb2df2ea3d587cd8c4188ac -> Pay-to-Public-Key-Hash script

  0000000000000000 -> output 2 value
  2c -> output 2 script length
  6a4c2952534b424c4f434b3a8cca119e75a4d70a57346f0fb9facc55f00f150265095a92ca27a9b1b1ac6e00 -> provably unspendable

  0000000000000000 -> output 3 value (witness commitment)
  26 -> output 3 length
  6a24aa21a9edb8c0253a8b72023513b3f8c08591fb009e1b89d1651ee044d183a4c627399a71

01 -> number of witnesses
20 -> witness length
0000000000000000000000000000000000000000000000000000000000000000 -> witness
00000000 -> locktime

For more information on how to actually utilize createrawtransaction with these values, see this and this.

Nice answer, esp. the references to the BIPs. thanks

@Geremia Glad I could help! :)

I'm not entirely sure if you can due to the specialized input script, and witness commitment in the output script. I'm referring to the output that any other createrawtransaction returns, which is just the raw hexadecimal of the transaction.

Also, createrawtransaction appears to make version 2 transactions (hex begins with 0200…). Does that change anything?

@Geremia Great question. From what I've read here version 2 transactions only add support for a new OP_ code. Specifically OP_CHECKSEQUENCEVERIFY. I've looked through many of the recent coinbase transactions and they mostly appear to use version 1 although I am unaware of any direct reason beyond that

Also, why does createrawtransaction '[{"txid":"0000000000000000000000000000000000000000000000000000000000000000","vout":0}]' '{"12Evb28oMpkP76HRS2CZ7VjNMD25B84VMv":12.5}' only return 85 bytes: 020000000100000000000000000000000000000000000000000000000000000000000000000000000000ffffffff01807c814a000000001976a9140d9a43dc5ffc3ea83ca7f95dd2daf2990865da7a88ac00000000? (source: this question)

Let us continue this discussion in chat.


text:
Does Utreexo work with a pruned node?
Does the Utreexo UTXO accumulator work with with a pruned node, or must the entire blockchain be present on my local drive before running Utreexo?

@RedGrittyBrick That's for the prompt to clarify. See my edits. Hopefully they're clearer now.

The docs seem to imply I must have the entire blockchain first:

If you want to run a server you will need the Bitcoin blockchain. Try testnet as it's smaller. (you can get Bitcoin Core from http://github.com/bitcoin/bitcoin or https://bitcoin.org/en/download)


text:
Title Agencies that Accept Bitcoin?
Are there any title agencies that explicitly accept bitcoin, such as for buying houses, land, cars, etc.?

This depends on the country you are in. In Brazil there is a company that does accept bitcoin. http://www.tecnisa.com.br/bitcoin


text:
Is SegWit a step in the direction toward implementing pegged sidechains into Bitcoin?
Is Segregated Witness a step in the direction toward implementing pegged sidechains into Bitcoin?

From what I understand, RSK for example, is a pegged sidechain and is implemented without segwit. However, its implementation requires additional trust (to 3rd parties like exchanges etc.). My understanding is that this would not be needed using segwit. So, no,segwit is not needed, but then additional trust on 3rd parties is required.

No.
Federated pegging solutions already exists, and some are being deployed in production. This approach relies on having a number of trusted parties that hold the pegged coins on the main chain side until they get pegged out from the sidechain again.
If you're talking about SPV merged-mined two-way pegged, SegWit does not matter. In this approach, the trusted federation is replaced with a hashrate majority signing off on transfers back. It requires support in the main chain for counting miner votes or support, and several proposals have been made. They are not part of SegWit, though.
The downside of the latter approach is that a hashrate majority on the main chain is always capable of stealing the sidechain's coins, as they could simply sign off on an unauthorized transfer. Technology exists (SNARKs) that could one day allow us to build a sidechain where the main chain can fully validate the sidechain's action, but right now, it is computationally infeasible to do so.


text:
Choosing a blockchain fork in Bitcoin Core
According to this, the BIP 148 UASF (user activated soft fork) goes into effect on August 1. Supposing it results in a substantial fork in the blockchain, is there a way users of Bitcoin Core can choose which chain to use (as opposed to whichever chain one's node receives first)? In other words: How do I tell Bitcoin Core to use an alternative chain?
Is this what preciousblock* is for?
*"Treats a block as if it were received before others with the same work."

From what you linked it seems to me that preciousblock doesn't supersede a longer chain, it just prioritizes one block over another at the same height.
You could call bitcoin-cli invalidateblock <blockhash> on the first block of the chain that you wish not to follow.


text:
Why is the block header 80 bytes, not 128 bytes (= two SHA-256 blocks)?
According to the Bitcoin Developer Reference, the block header is 80 bytes total:
BYTES   NAME
4       version
32      previous block header hash
32      merkle root hash
4       time
4       nonce

As I understand it, the midstate (1st SHA block) contains 64 bytes of the block header (which fields in particular I do not know, but I do know it doesn't contain the nonce), and the 2nd SHA block contains the rest, only 80-64 = 16 bytes. Does this mean the 2nd SHA block is padded with 64 - 16 = 48 bytes? If so, why not make the nonce field, for example, 48 - 4 = 42 bytes larger (i.e., 52 bytes instead of 4 bytes)?
That way, extranonce doesn't have to be in the generation transaction, thereby speeding up hashing, no?

What you are suggesting has been proposed on bitcointalk (can't seem to find the link). I think the problem with this is that it would cause a slight resign of ASICS, be a hard fork, and updating the extranonce once every 2^32 hashes is extremely negligible anyway.

@StephenM347 Hashing will have to get fast enough that recomputing the Merkle root for a change in extranonce would be a bottleneck, so why not just put extranonce straight in the midstate SHA block in the first place, for example?

Recalculating the merkle root will never be the bottle neck. Crunch the numbers, I've done it before. Bear in mind that recalculating the merkle root takes Log(N) hashes (N = # of transactions in the block), not N. Even if one CPU couldn't generate enough work for an ASIC farm, you'd just have to get a processor with more cores. You have to recalculate the merkle root periodically for new transactions anyway.

@StephenM347 Why is extranonce updated every 2³² hashes?

the nonce is a 32 bit integer, so there are 2^32 values you can try before you run out and need to change something else.

@StephenM347 Oh, yes, of course. For some reason I was thinking of extranonce, not nonce. thanks

@Geremia Your block header is missing the field <nBits> 4-bytes denoting the target threshold.

It could have been done that way, at the cost of increasing the amount of space it takes to store and send block headers. It seems like block header storage was a big concern for Satoshi, (there's even a section in the whitepaper about it) but it's turned out to not matter very much.

Does this mean the 2nd SHA block is padded with 64 - 16 = 48 bytes?

Yes, (source) but your reasoning is flawed. Even if the nonce space were so large that it extended into another block, that would just mean that midstate would represent the state after hashing all but the last block (block in the cryptography sense, not the Bitcoin sense.)
Also, if the block header were exactly 128 bytes, the padding would extend it to a third block. You only have 119 bytes before that happens.

That way, extranonce doesn't have to be in the generation transaction, thereby speeding up hashing, no?

Not really. You can check 2^32 hashes before incrementing extranonce, after which you only need to do ten or so hashes before you get back to mining.
Generally, in modern ASICs, even that part has been offloaded. There will be some sort of small processor within the ASIC, like an ARM core, which takes a block template as input and outputs block headers for the SHA256 cores to work on.
So the cost isn't one of speed, but complexity.
Like many things in Bitcoin, I think this is a technical decision that made sense at the time, but aged poorly.

The size of the block headers is going to matter more when we decrease the time between blocks.

@MeniRosenfeld Does it? I mean, we're talking about an extra 4-8 bytes per 80 bytes. That doesn't seem like a significant difference.

Right, if it's just a small change it won't matter much. But if you were to, say, double the header size, you'd double the resource requirement for SPV clients, which can be significant when you have GHOST-accelerated blocks and SPV on cellphones or even smaller devices. Though, probabilistic verification schemes might resolve that.

@MeniRosenfeld, you think the target block time will be changed? Given how hard it is to get everyone to agree to change a simple maximum block size parameter, I'm skeptical. Unless it is done by everyone moving over to a sidechain or something.

@StephenM347: I certainly hope so. It's just one of many things that will need to be sorted out eventually.


text:
Determining a Block's Extranonce Value
How do I determine a block's extranonce value? I know they are in the coinbase transaction, but where? How do I decode the part that is the extranonce?

In Bitcoin v0.1.5 to v0.3.24, the coinbase scriptSig contained:
txNew.vin[0].scriptSig << nBits << ++bnExtraNonce;

In Bitcoin v0.4.0 to v0.5.3, it changed to:
pblock->vtx[0].vin[0].scriptSig = CScript() << pblock->nTime << CBigNum(nExtraNonce);

Bitcoin v0.6.0 to v0.6.3:
pblock->vtx[0].vin[0].scriptSig = (CScript() << pblock->nTime << CBigNum(nExtraNonce)) + COINBASE_FLAGS;

Bitcoin v0.7.0 to current:
txCoinbase.vin[0].scriptSig = (CScript() << nHeight << CScriptNum(nExtraNonce)) + COINBASE_FLAGS;

So the coinbase scriptSig field has changed over time, but it has always placed the extranonce as the second item.
In Bitcoin v0.1.5, the size was unlimited, and in more current versions, it's 4 bytes or less. (This is caused by the switch from bnExtraNonce to nExtraNonce.)
There are some other odd details - in v0.1.5, it only resets when the client resets, but in later versions it resets on every new block.
Of course, this is just what the core client does. Other miners or pools might do something else.

From here:

The extranonce can be found in the coinbase data from a coinbase
  transaction. This data can be interpreted as a script pushing data
  onto the stack and the extranonce is the second value.
{
   ...
    "vin" : [
        {
            "coinbase" : "03443b0403858402062f503253482f",
            "sequence" : 4294967295
        }
    ],
   ...
}

can be interpreted as:
03 = push 3 bytes onto the stack
443b04 = 3 bytes pushed onto the stack <-- Block index
03 = push 3 bytes onto the stack
858402 = 3 bytes pushed onto the stack <-- The extranonce
06 = push 6 bytes onto the stack
2f503253482f = 6 bytes pushed onto the stack <-- arbitrary data

EDIT: This format was defined by BIP34 and applies to blocks with
  version >= 2. I'm not sure how the extranonce was managed before that.

This answer says extranonce is 3 bytes, yet it's 8 bytes…

Actually that last bit did use to have a meaning - it's a vote for P2SH.


text:
Do AntMiners comply with FCC Part 15?
Do AntMiners comply with Part 15 of the U.S. Federal Communication Commission's rules and regulations?
I tagged this question with "safety" because implicit in my question is what percentage of watts going into an AntMiner get converted to RF interference. If it's a lot, it could be a safety issue, especially since the cases of many AntMiners (e.g., S5s) are open and thus do not act as Faraday cages.

Why is this tagged safety? Part 15 regulates electronic interference.

@NickODell See ¶2 that I added to my question.

Yes. On their sales listing they note specifically that they have passed FCC and CE approval, and their products bear the markings for this accordingly.

I don't believe they are shooting straight - I have noticed strong emissions in the UHF and VHF ranges.

That is why semiconductor devices should be shielded - I am guessing they are intended to be arranged in a metallic case to keep emissions down. I have also had issues with one miner's spurious emissions disconnecting the adjacent miner's wifi by destroying the signal to noise ratio.

How strong of emissions, and how did you measure them?


text:
Exchanges whose websites use EV SSL certs?
What are all the Bitcoin exchanges whose websites have an Extended Validation (EV) SSL cert?
EV certs appear green in Firefox. This is what Circle's looks like:

The only exchanges that have EV certs that I know of are:

Coinbase
Circle

BlockChain.info also has one.
Are there others?

I know one personally in Israel, https://bit2c.co.il it's Israeli bitcoin exchange.


text:
Does every nonce really have an equal chance of winning?
I set out to test the claim: "Every nonce has an equal chance of winning."
Time Evolution
So, I plotted, with gnuplot, the nonce values vs. hashes for all the valid blocks in the blockchain:(Also, in the last plot, you can really visualize the change in the difficulty and even see where the difficulty was decreased.)
Histograms
It makes sense that the nonces found are skewed toward 0 because this is a selection effect: most everyone starts searching for nonces starting at 0, so the lower nonces are found first, even though there may be also higher nonces that could produce a winning block:

Why are the hashes distributed this way, though?:

2-D histogram of hashes and nonces (logarithmic color scale):

@Cryptognome Yes, silly me, I thought there were the same numbers of integers between equal intervals on a log graph…, viz., e.g.: log(100) - log(10) = log(1000) - log(100), but 100 - 10 < 1000 - 100.

Why is so much of this question struck out? If it's incorrect, just remove it. Striking it out makes it harder to read, and I can't even tell what the question is anymore.

I think the problem is that the initial question made no sense, as it was based on a false understanding of the presented graphs. However, as Chris already said: The question should either be edited to fit the answers it got, or deleted if it is not deemed useful. As it is I'd vote on "not useful".

Even if the graphs were correct, it wouldn't prove that nonces had an unequal chance of winning. If you look at the numbers on winning lottery tickets, 7 will be over-represented. But it's not because 7 comes up more as a winner, it's because people play 7 more. If, for example, many miners try nonces sequentially from zero and stop when they find a share, you'll see a lower incidence of higher nonces.

@DavidSchwartz But these graphs are of winning nonces (nonces that produce a block), not all nonces tried.

@Geremia Exactly. A chart of numbers on winning lottery tickets would show lots more 7's even though 7 is no more likely to win than any other number.

It's not unevenly distributed. The reason it appears that way in the graphs above is because the x-axis is plotted in logarithmic units. Here's what it looks like in linear units:

As you noted, the logarithmic scale skews it right, because the number of nonces within log(10, nonce) > 9 is 3 times larger than log(10, nonce) < 9
The other factor that might skew the nonces on your chart is that a pattern in the nonces on the blockchain doesn't necessarily mean that it's caused by a problem in the mining algorithm. As a trivial example, imagine if I wrote a mining program that never searched odd nonces. This wouldn't affect its mining power, but a person looking at the output might conclude that odd nonces never produced blocks.
As a more realistic example, mining clients spend more time searching low ranges of nonces than high ranges of nonces, simply because they start at 0, and reset every block. This effect becomes less pronounced over time as hashpower per mining client increases.

reminds me of this question here: "Looking for nonces of even numbers"

Whatever non-uniformity you see in the distribution of found nonces is because due to the fact that not every nonce has the same chance of being tried. Every tried hash, however, has exactly the same chance of winning.
Switching to a new proposed block is cheap. For example, if a 3GH/s mining chip increases the timestamp or modifies the extranonce every second, it will only ever find nonces in the range 0-3000000000.
If not every tried hash has the same chance of winning, SHA256 would be utterly broken.


text:
Are people incentivized with BTC to run nodes?
Bitnodes shows everyone running nodes.
Are these people incentivized to run nodes? If not, why not? If so, do node operators make some BTC from transaction fees, etc.?

Are these people incentivized to run nodes?

No. Their reasons for running a full node varies. Some of them want Bitcoin to succeed. Some of them are merchants and run a full node as part of their business. Some of them have spare computing power, and don't have a strong preference as to how it's used.  It's worked out reasonably well so far.

If not, why not?

It's extremely challenging to prove that you're running a full node. This code pretends to be a full node, though it really just forwards requests it can't answer to other nodes.

If so, do node operators make some BTC from transaction fees, etc.?

No. Miners receive transaction fees, although it's not a substantial part of the overall block reward. (Most node operators are not miners.)

Good answer, but if you look deeper there are actually incentives (and you hint at them already) : if you run a (big) company/bank/moneytransfer/exchange that depends on Bitcoin, you'd be silly to not bear the negligible cost of running at least one full node as the cost is. Another incentive is that anyone with a stake in Bitcoin should want to help make the network as robust and smooth as possible for everyone: that positively affects the usefulness and price of BTC. Another reason is to check that miners are being honest and have voting power when there's a fork or simply a new version.

No he's asking "incentivized". An incentive doesn't need to be money. "Subsidized" would be the word there. The more I think about it, the correct answer definitely needs to be along the lines of "Yes, but not in a directly monetary way." The incentives might be small, but that's fine, as long as they are big enough to persuade a decent amount of people/companies to run a full node. (For any definition of "decent amount".)

@Jannes Here's a quote from the question. Are people incentivized with BTC to run nodes?

Ah I see what you mean now. I read it as 'with/in the Bitcoin system'. Your interpretation makes more sense though, so your right. Although i don't think it hurts mentioning the non-monetary incentives, as it might lead readers to the wrong conclusion. This is also why David's answer is an important addition.

Subsidized Full Nodes Are A Bad Idea
Nick answers your other questions well, but I wanted to provide a more complete answer for this question:

If they're not subsidized, why not?

Subsidizing full nodes is a bad idea. If the value of the subsidy is substantial, it will likely attract people trying to scam the subsidy program by creating nodes designed to receive the subsidy rather than help the network.
Parallels With Mining
Mining is subsidized, and from about 2010 to about 2013 (and even some afterwards), hackers frequently installed CPU mining software on hacked computers to claim the subsidy using other people's resources.  It wasn't until CPU and GPU mining became useless – i.e. non-subsidized – that the hackers stopped.
Because full nodes provide the highest level of transaction security, we want them to be as accessible as possible to users – so we can't require specialized hardware or require users spend too much manual time setting them up.  And because Bitcoin is decentralized, we also can't do things like validate identities or use other centralized tools for reducing fraud.
That means we can't offer a subsidy for running full nodes without also allowing hackers to claim that subsidy for running full nodes on other people's computers.
Parallels With SMTP
You might think that other people's hacked computers shouldn't be our problem, but it does become our problem.  Either we stop people from abusing our system, or people who make security software will stop people from using our system.  For years now, my home ISP has blocked port 25 (the Simple Mail Transport Protocol, SMTP) because it is used by many botnets to send spam. If it becomes common for botnets to run full nodes, we'll likely see Bitcoin's port 8333 blocked as well.
Conclusion
Rather than paying random people on the Internet to manage our network security for us, we should make it easier to run a full node so more people can enjoy the security and privacy benefits that come from running their own node.
(To this end, the Bitcoin Core developers are working on improvements such as the headers-first sync included in 0.10.0 and the upcoming auto pruning, which will reduce the disk space requirements for full nodes, as well as several other improvements.)

Bitnodes is incentivizing node operators:
Bitnodes Project Issues First Incentives For Node Operators

I wanted to challenge the idea that we should not incentivise the running of nodes.
What I am not saying: I am not saying to write incentivising into the core.
I believe we do need to think about how node operation can be encouraged via financial incentive, this is because long term I believe that all things that provide value should be encouraged via micropayments.
Why?
Financial incentives create a feedback loop in which the market helps optimize. This creates more development and faster iterations and more collaboration on it.
How?
This could exist as a sidechain, alt-pegged coin, or even how p2pnodes work which is up to the node provider on how much the charge.
Conclusion
Just wanted to see more discussion on this! All of you have good points above, however, I see them as things we need to think about when thinking about how to provide incentive to running full nodes.

I don't find this answer useful because it only transitively responds to the question, but mainly discusses other answers instead. Also, it fails to address the main issue: The problem is to figure out who deserves an incentive, not how to distribute it. – Discussion is not something that works well on the Stackexchange platform, as answers shift about as they are up- and downvoted. Please only post answers to respond to the question. If you must discuss other answers, post comments on them. Instead define a new topic by asking a new question, e.g. "Should Bitcoin nodes be incentivized?".

Good point, on creating a new question. I have not discussed much dialog on stack exchange yet, so I do agree that it discusses other answers and should of been posted as a comment. However, as a comment it is useful as it provides contrast to your answer.

I found your discussion very helpful in explain why not, however, it seemed to shut the door on the option as making it a closed discussion. Until nodes are plentiful in bitcoin, the lack of nodes is still a problem. We need to encourage thinking of many options until the problem is solved.

nkdejong: Stackexchange was designed for Q&A, it doesn't work for discussions. If you want to discuss, you would probably prefer reddit or one of the numerous forums.


text:
What is the biggest bitcoin transaction ever performed so far?
What is the biggest bitcoin transaction ever performed so far (by value at the time of transaction)? And what was its transaction fee?

Are you asking by value or by number of bitcoins?

@Murch by BTC's value at the time of transaction


text:
How to file bitcoin income to the IRS
I want to check if there is any specific tips how to properly file income from speculation with BTC to the IRS.
Also is there any specific report from the Coinbase available?

According to CoinDesk, IRS finally announced guidance What the IRS Bitcoin Tax Guidelines Mean For You

The IRS has not ruled on this yet.  So I plan to treat Bitcoins as an asset for now.  This means keeping track of your cost basis (purchase price + fees) and deducting this from your net sell (sell price - fees) to determine the capital gain or loss.  Since you have no control over the specific coins you sell, you should probably use the FIFO (first-in first-out) accounting method.
Here are a some links to discussions on this subject:
Taxes on Bitcoin Transactions
Reporting bitcoin mining earnings to IRS

How does this compare for coins that are mined? The purchase price is zero obviously but as a miner you do have expenses, ie power and cost of the computers/GPU/asics etc.  Can those costs be deducted from the price you sold at?

I would think you could deduct equipment and electricity used for mining as an investment expense.  But this is really an unknown area and there is no telling how the IRS is going to rule on this.  If your mining nets you a significant amount of money, then you really need to consult an accountant.

The IRS just issued a preliminary ruling on this and it will be treated as property.  The Q&A portion is particularly useful.
SECTION 4. FREQUENTLY ASKED QUESTIONS
Q-1: How is virtual currency treated for federal tax purposes?
A-1: For federal tax purposes, virtual currency is treated as property. General tax principles applicable to property transactions apply to transactions using virtual currency.
Q-2: Is virtual currency treated as currency for purposes of determining whether a transaction results in foreign currency gain or loss under U.S. federal tax laws?
A-2: No. Under currently applicable law, virtual currency is not treated as currency that could generate foreign currency gain or loss for U.S. federal tax purposes.
Q-3: Must a taxpayer who receives virtual currency as payment for goods or services include in computing gross income the fair market value of the virtual currency?
A-3: Yes. A taxpayer who receives virtual currency as payment for goods or services must, in computing gross income, include the fair market value of the virtual currency, measured in U.S. dollars, as of the date that the virtual currency was received. See Publication 525, Taxable and Nontaxable Income, for more information on miscellaneous income from exchanges involving property or services.
Q-4: What is the basis of virtual currency received as payment for goods or services in Q&A-3?
A-4: The basis of virtual currency that a taxpayer receives as payment for goods or services in Q&A-3 is the fair market value of the virtual currency in U.S. dollars as of the date of receipt. See Publication 551, Basis of Assets, for more information on the computation of basis when property is received for goods or services.
Q-5: How is the fair market value of virtual currency determined?
A-5: For U.S. tax purposes, transactions using virtual currency must be reported in U.S. dollars. Therefore, taxpayers will be required to determine the fair market value of virtual currency in U.S. dollars as of the date of payment or receipt. If a virtual currency is listed on an exchange and the exchange rate is established by market supply and demand, the fair market value of the virtual currency is determined by converting the virtual currency into U.S. dollars (or into another real currency which in turn can be converted into U.S. dollars) at the exchange rate, in a reasonable manner that is consistently applied.
Q-6: Does a taxpayer have gain or loss upon an exchange of virtual currency for other property?
A-6: Yes. If the fair market value of property received in exchange for virtual currency exceeds the taxpayer's adjusted basis of the virtual currency, the taxpayer has taxable gain. The taxpayer has a loss if the fair market value of the property received is less than the adjusted basis of the virtual currency. See Publication 544, Sales and Other Dispositions of Assets, for information about the tax treatment of sales and exchanges, such as whether a loss is deductible.
Q-7: What type of gain or loss does a taxpayer realize on the sale or exchange of virtual currency?
A-7: The character of the gain or loss generally depends on whether the virtual currency is a capital asset in the hands of the taxpayer. A taxpayer generally realizes capital gain or loss on the sale or exchange of virtual currency that is a capital asset in the hands of the taxpayer. For example, stocks, bonds, and other investment property are generally capital assets. A taxpayer generally realizes ordinary gain or loss on the sale or exchange of virtual currency that is not a capital asset in the hands of the taxpayer. Inventory and other property held mainly for sale to customers in a trade or business are examples of property that is not a capital asset. See Publication 544 for more information about capital assets and the character of gain or loss.
Q-8: Does a taxpayer who "mines" virtual currency (for example, uses computer resources to validate Bitcoin transactions and maintain the public Bitcoin transaction ledger) realize gross income upon receipt of the virtual currency resulting from those activities?
A-8: Yes, when a taxpayer successfully "mines" virtual currency, the fair market value of the virtual currency as of the date of receipt is includible in gross income. See Publication 525, Taxable and Nontaxable Income, for more information on taxable income.
Q-9: Is an individual who "mines" virtual currency as a trade or business subject to self-employment tax on the income derived from those activities?
A-9: If a taxpayer's "mining" of virtual currency constitutes a trade or business, and the "mining" activity is not undertaken by the taxpayer as an employee, the net earnings from self-employment (generally, gross income derived from carrying on a trade or business less allowable deductions) resulting from those activities constitute self-employment income and are subject to the self-employment tax. See Chapter 10 of Publication 334, Tax Guide for Small Business, for more information on self-employment tax and Publication 535, Business Expenses, for more information on determining whether expenses are from a business activity carried on to make a profit.
Q-10: Does virtual currency received by an independent contractor for performing services constitute self‑employment income?
A-10: Yes. Generally, self‑employment income includes all gross income derived by an individual from any trade or business carried on by the individual as other than an employee. Consequently, the fair market value of virtual currency received for services performed as an independent contractor, measured in U.S. dollars as of the date of receipt, constitutes self‑employment income and is subject to the self-employment tax. See FS-2007-18, April 2007, Business or Hobby? Answer Has Implications for Deductions, for information on determining whether an activity is a business or a hobby.
Q-11: Does virtual currency paid by an employer as remuneration for services constitute wages for employment tax purposes?
A-11: Yes. Generally, the medium in which remuneration for services is paid is immaterial to the determination of whether the remuneration constitutes wages for employment tax purposes. Consequently, the fair market value of virtual currency paid as wages is subject to federal income tax withholding, Federal Insurance Contributions Act (FICA) tax, and Federal Unemployment Tax Act (FUTA) tax and must be reported on Form W-2, Wage and Tax Statement. See Publication 15 (Circular E), Employer's Tax Guide, for information on the withholding, depositing, reporting, and paying of employment taxes.
Q-12: Is a payment made using virtual currency subject to information reporting?
A-12: A payment made using virtual currency is subject to information reporting to the same extent as any other payment made in property. For example, a person who in the course of a trade or business makes a payment of fixed and determinable income using virtual currency with a value of $600 or more to a U.S. non-exempt recipient in a taxable year is required to report the payment to the IRS and to the payee. Examples of payments of fixed and determinable income include rent, salaries, wages, premiums, annuities, and compensation.
Q-13: Is a person who in the course of a trade or business makes a payment using virtual currency worth $600 or more to an independent contractor for performing services required to file an information return with the IRS?
A-13: Generally, a person who in the course of a trade or business makes a payment of $600 or more in a taxable year to an independent contractor for the performance of services is required to report that payment to the IRS and to the payee on Form 1099-MISC, Miscellaneous Income. Payments of virtual currency required to be reported on Form 1099-MISC should be reported using the fair market value of the virtual currency in U.S. dollars as of the date of payment. The payment recipient may have income even if the recipient does not receive a Form 1099-MISC. See the Instructions to Form 1099-MISC and the General Instructions for Certain Information Returns for more information. For payments to non-U.S. persons, see Publication 515, Withholding of Tax on Nonresident Aliens and Foreign Entities.
Q-14: Are payments made using virtual currency subject to backup withholding?
A-14: Payments made using virtual currency are subject to backup withholding to the same extent as other payments made in property. Therefore, payors making reportable payments using virtual currency must solicit a taxpayer identification number (TIN) from the payee. The payor must backup withhold from the payment if a TIN is not obtained prior to payment or if the payor receives notification from the IRS that backup withholding is required. See Publication 1281, Backup Withholding for Missing and Incorrect Name/TINs, for more information.
Q-15: Are there IRS information reporting requirements for a person who settles payments made in virtual currency on behalf of merchants that accept virtual currency from their customers?
A-15: Yes, if certain requirements are met. In general, a third party that contracts with a substantial number of unrelated merchants to settle payments between the merchants and their customers is a third party settlement organization (TPSO). A TPSO is required to report payments made to a merchant on a Form 1099-K, Payment Card and Third Party Network Transactions, if, for the calendar year, both (1) the number of transactions settled for the merchant exceeds 200, and (2) the gross amount of payments made to the merchant exceeds $20,000. When completing Boxes 1, 3, and 5a-1 on the Form 1099-K, transactions where the TPSO settles payments made with virtual currency are aggregated with transactions where the TPSO settles payments made with real currency to determine the total amounts to be reported in those boxes. When determining whether the transactions are reportable, the value of the virtual currency is the fair market value of the virtual currency in U.S. dollars on the date of payment.
See The Third Party Information Reporting Center, http://www.irs.gov/Tax-Profession..., for more information on reporting transactions on Form 1099-K.
Q-16: Will taxpayers be subject to penalties for having treated a virtual currency transaction in a manner that is inconsistent with this notice prior to March 25, 2014?
A-16: Taxpayers may be subject to penalties for failure to comply with tax laws. For example, underpayments attributable to virtual currency transactions may be subject to penalties, such as accuracy-related penalties under section 6662. In addition, failure to timely or correctly report virtual currency transactions when required to do so may be subject to information reporting penalties under section 6721 and 6722. However, penalty relief may be available to taxpayers and persons required to file an information return who are able to establish that the underpayment or failure to properly file information returns is due to reasonable cause.
source: http://www.businessinsider.com/irs-bitcoin-is-property-not-currency-full-release-2014-3?op=1

I think it works like stock profits or losses.  But consult your accountant.

While treating income from buying and selling bitcoins as investment income (i.e. like stocks) would be nice, it's not what I would recommend.  The advantage would be that capital gains taxes are cheaper than standard income.  The downside is that if the IRS rules that bitcoins are a currency instead of an asset, then the taxes are higher and if that's how they rule I'm certain they'll be performing audits on everyone that treated them as assets instead.
It means a higher tax bill, but I plan to treat it as a foreign currency while doing my taxes this year.  After all, that's the plan for bitcoin, isn't it, to be taken seriously as real money?  And if the IRS classifies bitcoins as an asset, I can always file an amended return later to recoup the over payment.

TaxHawk finally has cryptocurrency filing instructions for the 2018 tax year:

Cryptocurrency
Where you report the income from cryptocurrency depends on how you received it.
Wages: Menu Path: Income > Common Income > Wages (W-2)
Investment: Menu Path: Income > Common Income > Stocks or Investments Sold (1099-B)
Mining: Menu Path: Income > Business Income > Business Income (Schedule C)
Virtual currency, also known as cryptocurrency or altcoin, is a medium of exchange that only exists digitally. It has no centralized authority but uses a decentralized system to record transactions and relies on cryptography to prevent counterfeiting and fraudulent transactions. Examples of cryptocurrencies are Bitcoin, Zcash, Litecoin, and Ethereum, just to name a few.
Income paid in cryptocurrency or earned by buying, selling, or mining cryptocurrency is subject to taxation by the IRS. You can read the direction the IRS has given in Bulletin 2014-21.
Where you enter cryptocurrency income depends on how you earned the income. We'll give you an overview of the possible places below.
Wages paid in cryptocurrency should be converted to U.S. dollars on the date of each payment by your employer and reported on your Form W-2. The conversion to dollars should have already happened before you get your W-2.
Income paid to you in exchange for goods and services that wasn't wages (for example, you were paid for a service performed as part of your self-employed business in cryptocurrency) should be converted to U.S. dollars on the date of each payment and reported along with any other self-employment income.
If you held cryptocurrency for investment, it should to be treated as a capital gain or loss.
If you mined cryptocurrency, earnings from this activity should be converted to U.S. dollars as of the date you receive it and be included as income. If you were self-employed for the cryptocurrency mining, the income needs to be reported as self-employed income.


text:
How do I compute merkle root for genesis block?
I wanted to help out the community and create a pure C application independent of the reference client, that given a timestamp and a public key, will produce a merkle root for creation of a genesis block.
My knowledge of C++ is very little to none. After looking at the source code, this is the relevant code
    const char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
    CTransaction txNew;
    txNew.vin.resize(1);
    txNew.vout.resize(1);
    txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(4) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
    txNew.vout[0].nValue = 50 * COIN;
    txNew.vout[0].scriptPubKey = CScript() << ParseHex("04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f") << OP_CHECKSIG;

Which produces this merkle hash
 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b

I am not sure whether CScript() << 486604799 << CBigNum(4) <<... is bitshifting all of this, or simply writing it out to .scriptSig.
And I am going to assume that CScript() is the constructor that initializes .scriptSig.
As I delved into the source code and following what BuildMerkleTree calls I ended up in
template<typename T>
uint256 SerializeHash(const T& obj, int nType=SER_GETHASH, int     nVersion=PROTOCOL_VERSION)
{
    CHashWriter ss(nType, nVersion);
    ss << obj;
    return ss.GetHash();
}

So I started following ChashWriter, and ended up in
template<typename T>
CHashWriter& operator<<(const T& obj) {
    // Serialize to this stream
    ::Serialize(*this, obj, nType, nVersion);
    return (*this);
}

And I got lost there. But the closest I got was double SHA256-ing this
04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73 5000000000 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f OP_CHECKSIG after supposedly converting to a byte array.

And I was obviously wrong about it, as the result was not correct.
Apparently, Bitcoin uses something known as Serialization to serialize the object's variables, perhaps concatenate them, but unfortunately due to my inexperience with C++ I could not understand which variables, in what order and so on. Basically, the Bitcoin source code was more complex than I had imagined.
So my question is how I may produce a merkle hash for a genesis block, without using serialization and in C?

Instead of looking at the source code, take a look at the relevant wiki page.
As blockexplorer will reveal, the merkle root of the genesis block is equal to the hash of the transaction in it. This is because building a hash tree of one transaction will simply result in that one transaction, and the hash of that tree will be the same as the hash of that one transaction.
When dealing with more transactions, simply put them in a tree and hash them from bottom to top, as the wiki page mentions.

But I do not understand in what order they are placed. Like the order of concatenation and of which data exactly. Because in the source code, serialization of objects is used, and I am unfamiliar with that concept so I know not in what order, which variables etc.

The bottom level of the tree should be sorted by hash, ascending from left to right. The rest is (hopefully) obvious. Forget about the serialization, that's completely irrelevant.

Since I do not plan to work with anything else than a genesis block, I believe that I don't need any trees for this.

Correct. When only working with the genesis block, just take the SHA256(SHA256(tx)).

Well, while I am working on constructing a structure to contain the genesis block's transaction, how would I later SHA256 all of it? Serialization in Bitcoin in C++ is done to convert a few variables regardless of their datatype to a sequence of bytes, in C I've yet to find any standard way of doing it.

I'd say take a look at my own bitcoin relay, which happens to be written in C. The hash is taken of the entire transaction as sent over the network via the tx command. The tx command is described here. An example transaction is included there.


text:
Can't find Multibit wallet file after closing wallet
I closed a wallet in the 0.5.x version of Multibit for Mac.  Now I can't seem to open it. When I use Open Wallet in File the file name comes up, as does my home library, but I can't figure out where it is stored. Thank you for your help.

On a Mac the wallets are stored by default in the user data area:
/Users/"user name"/Library/Application Data/MultiBit
The default wallet file name is "multibit.wallet".

On Mac OSx 10.9.1 (Mavericks)
/Users/username/Library/Application Support/MultiBit/multibit.wallet
Remeber to replace "username" with your own.


text:
Is the synchronization process supposed to be downloading at less than 5kB/s?
I've been running the bitcoin-qt client for over a week now trying to catch up with the block chain (closer to three weeks if I count the first time I had to synchronize everything).  Looking at my bandwidth usage, I'm only getting 2-5 kB/s at any given time.
I did a ton of Googling and noticed a lot of others were complaining about the long synchronization process, but none of them seemed to be as long as mine (and no one made mention of their speeds).  Is it supposed to be this slow, or have I set something up incorrectly?
I should further clarify that this is not a new issue, this has been persistent since I started using bitcoin over a year ago.

Further information:
The client is always at or below 8 connections to the Bitcoin network (if that is at all relevant/useful information).  I have UPnP enabled.
Computer: I'm using a laptop (OS: Win7 64-bit) from a few years back, so inherently the  specs aren't tops (but by no means terrible) - the CPU is an AMD Athlon II M300 (2 cores / 2 threads, 2.0 GHz, 1MB cache).
CPU Usage: According to perfmon, bitcoin-qt averages 7% CPU consumption.
Blocks processed: 124 in an hour (I also made a list breaking it up into 10-minute increments and it averaged 1.8-2.0 blocks per minute of those increments, so it agrees with the hourly rate without much fluctuation).

I recently also have downloaded the complete block chain. It took me a few hours (close to 8 to 10 i believe).
But the complete BitCoin folder currently holds more than 8Gb. So maybe 1 Gb an hour...

The synchronization process may be slow on slow computers - it does not only rely on bandwidth. After downloading a chunk of blocks from various peers, the Client needs to verify every transaction in them, which is a very CPU intensive task. If you have a slow computer, this will be the bottleneck - you will spend a lot of time verifying the block and only a little downloading them, making the average download speed small.

What kind of computer are you using? It's not just downloading the blockchain, it is also verifying it and creating the databases locally. This can be fairly CPU intensive. 2-5KB seems very slow, but maybe you just caught it at a slow point.

Check your CPU using Activity Monitor/Perf Mon. If you are seeing high CPU, that's a good thing. You might just be downloading as fast as your CPU can process blocks.
Hover over the spinning icon in the bottom right. It will tell you the exact number of blocks processed. Write down the current block it has completed, come back in an hour and see how many you've progressed.

If you have a particularly slow/old computer, this might be normal. If you don't seem to be CPU limited, or you aren't making decent progress when you are looking at the actual block counts, then post a follow up to your question with some more specifics. (Such as what computer you are using, what you are seeing in terms of CPU usage, and how many blocks you have processed over what period of time.)
Update based on comments:
I'm starting to think that Lodewijk and his answer has the right idea here. I had originally thought that 8 connections probably wasn't the issue because even eight connections should be more than a few KB per second. But if they are poor connections they might be your issue. Did you open the open the Bitcoin port in your firewall and port forward it to you laptop?

Computer: I'm using a laptop (OS: Win7 64-bit) from a few years back, so inherently the  specs aren't tops (but by no means terrible) - the CPU is an AMD Athlon II M300 (2 cores / 2 threads, 2.0 GHz, 1MB cache).
CPU Usage: According to perfmon, bitcoin-qt averages 7% CPU consumption.
Blocks processed: 124 in an hour (I also made a list breaking it up into 10-minute increments and it averaged 1.8-2.0 blocks per minute of those increments, so it agrees with the hourly rate without much fluctuation).

I just saw your update.  I attempted to open the port but I'm unsure if I did it correctly (I noticed no difference after doing this): http://i.imgur.com/YesfB1q.png. /
The ports have always been open in my firewall, but I've always wondered why there were so many duplicates (not sure if that's an issue): http://i.imgur.com/ePojzmz.png

If you have not set up port forwarding correctly you will only be able to connect to 8 others. If those 8 others do not have a generous connection to you it could be very slow. (This is worth checking)
Aside from that your CPU should be hard at work compressing old blocks and verifying all blocks.
Aside from that your disk will have a lot of random access (also because of the compressing and verifying) and might be the bottleneck.
You might scour the Internet for a recent version of a downloaded blockchain, or resort to using a light client or webwallet.

authors: Александр Король