Should I increase my mempool size to accomodate temporary crisis?

You can increase the mempool size, if you have an interest in seeing transactions that likely won't confirm for a very long time, but you certainly don't have to. The mempool is sorted by feerate, and when the limiter kicks in, it removes the lowest feerate transactions. Since miners sort by feerate, and can include only a limited number of transactions per block, the mempool effectively works as a queue.

By design, you will not always be able to store all unconfirmed transactions. If your goal would be to have all, and crank up your memory pool to accomodate this, someone could just start creating an infinite stream of transactions sending back and forth, until your node goes out of memory. This is the reason why the mempool size is limited in the first place: protection against a denial of service on the network.


How to buy bitcoins with amex debit card?

Coinbase has options for both debit and credit.


What was the price of Bitcoin in USD when bitcoin cash forked?

The price of Bitcoin was around $2900 USD on August 1st. The price slightly went down to around $2600 the same day.


Multibit is not accepting the correct password any idea or possible bugs that i could fix

That is certainly weird and it's most likely that you simply are typing a different password. To test this hypothesis, install MultiBit on another computer and import your wallet to see if it works. Perhaps your local MultiBit instance is corrupted.

Another option would be to try different versions of the client, although the wallet encryption algorithm hasn't changed. From the source code it seems to be using the Bouncy Castle Crypto APIs for Java: https://github.com/jim618/multibit/blob/master/src/main/java/org/multibit/crypto/KeyCrypterOpenSSL.java

Perhaps what you could also try is download that Bouncy Castle library and try decrypting your wallet directly using the raw library.


The second parameter of the RPC call is a boolean for decoding the results or not.

Setting this to False will return the hex encoded block.

hash = "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"
print rpc_connection.getblock(hash, False)


Why does Crypto Street have backwards pairs?

The problem is the notation is inconsistent with, well, math. If you say 98 USD/JPY, it looks like 98 USD per 1 JPY.

That said, this is also an issue on Bloomberg or Yahoo or any financial reporting site that I know of.


What is happening when a channel is pending?

Opening a channel involves sending an on-chain transaction (with a multisig output controlled by the channel’s participants), so when the channel is ‘pending’ it simply means this transaction is not yet confirmed. How long it takes the transaction to confirm depends on the same factors as any other transaction.

Further, the participants will often wait for a certain number of transaction confirmations before starting to make channel payments. The number of confirmations required is negotiated in the minimum_depth parameter of the accept_channel message. From BOLT 2:

  The funding_locked message indicates that the funding transaction has reached the minimum_depth asked for in accept_channel. Once both nodes have sent this, the channel enters normal operating mode

(thanks to @jnewbery for the added info)


Which mobile apps support swiping/importing private keys via QR code?

These wallets do:

Bitcoin Wallet
Mycelium


How does Bitcoin Core's Coin Selection prevent change to be a dust output?

See these lines:

// We do not move dust-change to fees, because the sender would end up paying more than requested.
// This would be against the purpose of the all-inclusive feature.
// So instead we raise the change and deduct from the recipient.
if (nSubtractFeeFromAmount > 0 && newTxOut.IsDust(::minRelayTxFee))
{
    CAmount nDust = newTxOut.GetDustThreshold(::minRelayTxFee) - newTxOut.nValue;
    newTxOut.nValue += nDust; // raise change until no more dust
    for (unsigned int i = 0; i < vecSend.size(); i++) // subtract from first recipient
    {
        if (vecSend[i].fSubtractFeeFromAmount)
        {
            txNew.vout[i].nValue -= nDust;
            if (txNew.vout[i].IsDust(::minRelayTxFee))
            {
                strFailReason = _("The transaction amount is too small to send after the fee has been deducted");
                return false;
            }
            break;
        }
    }
}

So Bitcoin core will give slightly less to the recipient rather than spend more than the payer originally requested, in the case of a dust-change output.


I will take the suggestion above and post the answer for others.

As mentioned I am a noob at looking into the bitcoin and blockchain.  My interest is the programming code behind the cryptocurrencies and the various blockchain implementations.

When I was backtesting the correctness of my code, which I did in Python and Ruby, I discovered that it wasn't working at a certain point.  I wasn't sure at which block #, where it was failing until I tightened up the test and discovered it was at that block #410000.  A simple look at the data, I realized that either the mining algorithm changed slightly for difficulty or something in the inputs wasn't correct, so I isolated all the inputs and realized that it was the VERSION field that changed.

Of course, I know nothing about the different versions of the blocks, nor the forking behaviors yet... it wasn't clear until the poster provided the link that confirmed to me that the versions had changed, thus throwing off my program.  But I can easily tweek it to adapt to the version field, now that I realize it is not as hardcoded as the other fields.

One thing that I noticed, and I am not a probabilities expert, but the nonce values seem to land in the 9 or 10-digit range... so when a miner is searching for the nonce, I would assume that the miner does not need to start the search at 0.... but rather 100000000 and increment, it seems the time to calculate is reduced substantially.

My next step is I'd like to analyze the range of nonce values and see if they fall within a certain spectrum of values and where they cluster, whether 9 or 10-digit lengths. It's all just curious analysis.

My goal to all of this is the create a fully running program that pulls all of the blockchain, and dynamically confirm the blocks(merkle roots and header hashes), store the info in a csv file.  The point is for me to learn to scrape, process and analyze the results just to find any irregularities, or randomness if that's the case... just from curiousity sakes.

As a pet project, I am going to create a blockchain-distributed ledger for a friend who has a PhD in food safety and security, and see where it goes from there.


How exactly does "CoinDance" determine the current number of public Bitcoin nodes?

Does the Bitcoin network send around an integer saying how many nodes there are to each other as part of the protocol,

No.
See https://en.bitcoin.it/wiki/Protocol_documentation
So far as I can see, total counts of active nodes are not part of any message but there are potentially useful messages such as:

getaddr
The getaddr message sends a request to a node asking for information about known active peers to help with finding potential nodes in the network.

By sending this message to all known but previously uncontacted nodes, it is possible to discover more previously uncontacted nodes you can send this message to until the responses only contain previously contacted nodes and all the nodes you know of are either contacted nodes or unresponsive nodes.

I'd like to know how exactly they determine this,

CoinDance don't say.

As Davidson Souza's later answer reports, at least one website (Bitnodes) uses the getaddr message to approximate the number of all currently accessible nodes.


is transaction malleability a threat to my local wallet?

No. It can not under any circumstances be used to steal funds from a Bitcoin-QT wallet.


Byte sequences have no endianness, numbers do. Satoshi didn't say that clients must send that number, but the byte sequence. Arbitrarily, he chose to use the little-endian byte sequence, corresponding to his number. He didn't disobey RFC1700 because he didn't say that is derived by serializing his number.


Where can I find my 12 Recovery Passphrase

You can find it wherever you wrote it down when you first created the wallet... otherwise you're unfortunately SOL.


Firstly, you have a name conflict; hash is both the std::string argument passed to calcHash(), and also the name of your CryptoPP::SHA256 object. This code won't even compile, so are you sure this is the code you're using?
The code itself is somewhat difficult to read, too, because you pass around anonymous objects to nested constructors in an attempt to be concise, but this just makes things needlessly confusing to the reader. Perhaps you have copy-pasted one-liners from other places?
Anyway, here's the approach you should take:

Use HexDecoder (not HexEncoder) to convert your input string (let's call it headerString) to a byte array of the data represented by that hexadecimal string (call the result headerData).

Hash headerData using SHA-256 twice using the CalculateDigest() method of a CryptoPP::SHA256 object, storing the result in a byte array (call it hash2, because we call the first hash hash1).

Use HexEncoder to convert hash2 into a string which is a hexadecimal representation of the hash (call it hashString).

Here's that in code:
#include <iostream>

using namespace std;
using namespace CryptoPP;

static void printHash(std::string headerString) {
    // Convert hex string to byte array
    string headerData;
    HexDecoder decoder = new HexDecoder(new StringSink(headerData));
    decoder.Put((byte*)headerString.data(), headerString.size());
    decoder.MessageEnd();

    // Hash the byte array twice
    SHA256 hasher;

    byte hash1[SHA256::DIGESTSIZE];
    hasher.calculateDigest(hash1, (byte*)headerData.data(), headerData.size());

    byte hash2[SHA256::DIGESTSIZE];
    hasher.calculateDigest(hash2, hash1, hash1.length);

    // Convert result to hex string
    string hashString;
    HexEncoder encoder = new HexEncoder(new StringSink(hashString));
    encoder.Put(hash2, sizeof(hash2));
    encoder.MessageEnd();

    // Print the hash
    cout << asLowerCase(hashString) << endl;
}


How to transfer bitcoins from old wallet to new wallet? Have no wallet.dat info

If you were using the Bitcoin QT (aka Bitcoin Core) client, then the private keys you need are in the wallet.dat file.

If you can't get that file, and you don't have any other record of the private keys, I'm sorry to say your funds are lost.

If you had used the Electrum wallet instead, you could recover your keys using the 12 word "seed", if you had that.

There were other wallets in use too; if you think you used something else as a wallet, let us know.


How can I find out which wallet belongs to which cryptocoin?

Take a look at the wallet address, if it starts with 1 it is a Bitcoin wallet, if it starts with an L it is a litecoin wallet and so on, google to know how to identify the starting of the rest of the crypto wallets (blockchains are the first places to go).


TL;DR: No. The argument is basically that hoarding will make Bitcoins so valuable that nobody will be willing to offer people enough to part with them. Does that pass the giggle test? Another way of stating the argument is this, "If gold is $2,000/oz today but people think it will be $5,000/oz next year, nobody will trade any gold today." Again, think about it. Does that pass the giggle test either?

Hoarding increases the value of Bitcoins, increasing the profits from mining. This encourages more people to mine, increasing the total hashing power and thus the security of the system.

It also makes holding Bitcoins more profitable. This helps to encourage people to accept them in trade because they are less worried about them decreasing in value while they are holding them. Using Bitcoins as a currency inevitably means people sometimes have to hold them and having them drop in value while you hold them is a risk. Hoarding reduces this risk. But it also makes it harder to price things in Bitcoins because the value will tend to change more. Merchants don't like to change their prices twice a day.

Contrary to claims, it should not affect the trading volume or the willingness of people to use Bitcoins to pay for things.

The argument that increasing value means people would prefer to hold Bitcoins rather than spend them is specious. While it will make people want to have Bitcoins more, it will also make people want to convince others to give them Bitcoins more so they can have them.

Think about it, do people prefer to pay for goods in dollars or garbage? By the reasoning of this argument, they should prefer to pay for goods in garbage, since they'd rather hold their dollars and get rid of their garbage. But, of course, people don't like paying in garbage because nobody wants garbage. If you can pay with the currency others want, you can get a better deal. So you actually prefer to spend the currencies sellers most want.

If Bitcoins are valuable because inflation doesn't deprive them of value, then a merchant would rather get my Bitcoins than my dollars, so he'll accept fewer of them. This will cancel out the effect of me preferring to pay in dollars rather than Bitcoins. So it should be a wash.

Or, put another way, whatever the present and future prospects, there should always be some equivalence between dollars and Bitcoins that people roughly agree on. So whether I pay X dollars or Y bitcoins, where X and Y are in this ratio, will purely depend on whether I prefer the characteristics of dollars or Bitcoins for the transaction.

A consequence of this is that hoarding won't negatively affect the trading volume either because that's only dependent on people's use of Bitcoins to buy and sell things. If hoarding makes Bitcoins worth twice as much, only half as many will be used to buy and sell things and the volume (the total value traded) will be the same.

I don't believe it's lost opportunity either. It's not like people who want to trade Bitcoins can't get them because they're all being hoarded. (Nor will it ever be likely to be an issue, since that would just raise the price and thus fewer would be needed. Bitcoins have effectively unlimited divisibility.)

So why do so many people think currency hoarding is bad? Because it usually is, and empiric studies even show that it is. But the logic of why currency hoarding is bad doesn't apply to Bitcoins, especially when it's a minority currency.

Bitcoins are different enough from physical fiat currencies that empirical studies don't apply unless the suspected mechanisms for the observed effects are believed to apply to Bitcoins too. For example, if a penny were enough money to buy a car, how useful would dollars be?


Doest 'coinbasevalue' in GBT call include fees, or just the total block value?

Judging from the output of a GBT call to bitcoind  (2505616072), it must include fees.


What server-side Bitcoin clients are available to serve information?

It depends on what information you require. Bitcoind can provide you with information through its API, but you'd need to be running it yourself and it only works through HTTP JSON RPC. There are other sources of similar information, like blockchain.info's API, which can also handle other formats.


Wallet programming, search transactions by address

You do need to keep a separately indexed database of the blockchain,

insight.is is a good place to start,

bitcoind would have to do an extensive rescan to answer that query.


Please i have an Account with BlockChain but i notice my account has a withdrawal of all my BTC which was not done by me. It has Replace-By-Fee
  What might have happened?

If you did not initiate this transaction, then it looks as if your account was somehow compromised. Have you ever shared login details for the wallet with anyone else, or did someone create the wallet for you? There are common scams which employ these tactics.

Otherwise, without more information, it isn't really possible to discern how your account was compromised. In any case, that wallet (and possibly compute you used to access it) should be considered compromised, and should not be used for any further BTC transactions.

  How can i get my Money Back?

You likely cannot. Bitcoin transactions are not reversible, your only hope would be to find the person who stole your coins, and ask for them back.

Sorry for your loss :(


Are there really Bitcoin Core nodes running in space that were launched by Blockstream?

Blockstream launched a satellite service. It did not launch a satellite.

Bitcoin blocks are being broadcast by Blockstream, by contracting with several existing several satellite systems. These satellites are primarily designed for broadcasting  TV signals, and thus don't run their own full nodes; the broadcast is dependent on ground stations that uplink the data.

The data is freely available from (nearly) every place on earth (excluding oceans and polar regions). You do need your own satellite dish and some other hardware, but the system is designed to keep the costs as low as possible.

For more information, see https://blockstream.com/satellite/


It's likely that only used the address internally, so it was not assigned to a customer. I would expect that from here on out until forever, whenever coins are sent to this address, it will credit your account.


In which order does the leveldb iterator iterate over utxos?

The LevelDB iterator iterates through the keys in lexicographic order. From the docs:

  The preceding examples used the default ordering function for key, which orders bytes lexicographically. You can however supply a custom comparator when opening a database. For example, suppose each database key consists of two numbers and we should sort by the first number, breaking ties by the second number.

However, I am not sure that relying on the iteration order of one particular DB is what you should be using, since every other implementation would have to reproduce that iteration order for compatibility. So you would need to require a canonical ordering anyway, which can be implemented using comparators.


How do I download specific blocks directly from peers, without downloading the entire chain?

You could use the pruning mode to only store blocks after the height you are interested in. I think you'll still have to download it to verify the past history, but you won't have to store it all on disk.

See this RPC call for more information.


Very hard to sync Core Client from scratch

Database corruption means the state of your node is corrupted, not just data it downloaded.  Resuming after state corruption would be like resuming your life after having a lobotomy.

During synchronization your node operates at hundreds of times its normal load: Consider, Bitcoin has existed for over 3000 days yet sync will complete in a day. This tends to expose marginal hardware. "suboptimal" would not be a very accurate way to describe it, "totally broken" would be better.

USB drive in general are notorious for causing corruption. Not only are the drives themselves often unreliable, but many people often suffer issues from their USB controllers and even cables.

At the expense of several more gigabytes of space usage Bitcoin nodes could periodically back up their state so that they could recover more gracefully from corruption... but the cost of doing that is great enough that the gains aren't completely clear. Especially since hardware that is messing up is also probably likely to corrupt the backups.


How can I compile bitcoin on debian 7.x Wheezy? Missing libmemenv.a

As per: https://bitcointalk.org/index.php?topic=270852.380

Try:

make -f makefile.unix "USE_UPNP=-"

UPNP is not enabled by default anyway, so compiling without it shouldn't be a problem for normal operation.


A nonce is just a value that you keep changing in the hope that after you hash all the data the hash will be less than the target value. See https://en.bitcoin.it/wiki/Block_hashing_algorithm (litecoin is similar only uses scrypt instead of sha256 hash function.)


Why transactions' average confirmation times becoming more chaotic?

Bitcoin has been in the news a lot, recently. There have been talks about a Bitcoin ETF: http://www.cnbc.com/2017/02/24/bitcoin-hits-record-high-above-1200-on-talk-of-etf-approval.html

There haven have been articles (e.g. http://www.pantagraph.com/business/investment/markets-and-stocks/is-bitcoin-finally-a-serious-currency----or/article_2c5e9474-e135-5e85-906b-308149fac218.html) about Bitcoin becoming a means of investment, a lot of them saying that Bitcoin is digital gold (e.g. https://www.cryptocoinsnews.com/german-tv-calls-bitcoin-digital-gold/).

Every time this happens, 2 things happen:

The price of Bitcoin goes up.
The transaction rate go up.

The transactions rate goes up as people buy Bitcoin and others move their money in Bitcoin to exchanges to sell their funds as Bitcoin's price went up.

Usually, this is canceled out fairly quickly by China banning Bitcoin for about the 10'000th time (and them then soon after declaring that they won't do it). However, this time, it didn't happen, so Bitcoin's price and the transaction rate both went as high as never before.

Bitcoin has a very limiting block size of just 1 MB, meaning that a block can at most take 1 MB of storage space. Because every transaction has a certain size and virtually no transaction is smaller than 226 Byte (because almost all transactions have at least 2 outputs), this limits the number of useful transactions to 7.37 per second, even if they all just have 1 input and 2 outputs (in reality, there are a lot which are bigger, of course).

If the transaction rate exceeds the rate at which the transactions can be added to the blockchain, there is a lot of competition between people who want to get transactions through fast, meaning that transactions fees go up and the transactions which only pay usual fee are unattractive to miners so they won't include them.

It then can take quite a few days for those transactions to go through as the transaction rate goes down and the backlog of transactions which accumulated during the peak slowly is processed.


if bitcoin plunges to $0 will altcoins be affected?

Yes, for the reason you gave firstly (because most exchanges only have BTC/alt markets not alt/fiat markets), but also because Bitcoin is the first, most well known, and longest standing currency. If its value dropped to near 0, that would be a reflection of public loss of faith in cryptocurrencies in general, not just bitcoin, Bitcoin basically represents all cryptocurrencies to laypeople and its death would likely coincide with the death of all other currencies.


Not really. According to the Bitcoin Wiki:

  Namecoin is an alternative distributed Domain Name System (DNS) on the
  basis of Bitcoin software.

In contrast to a currency, according to Wikipedia

  A much more general use of the word currency is anything that is used
  in any circumstances, as a medium of exchange. In this use, "currency"
  is a synonym for the concept of money.

It is clear that Namecoin is not primarily intended as a medium of exchange, but with a more specific design in mind. The fact that it can be exchanged does not mean that it is used as a medium to exchange value.

For a more detailed explanation about what Namecoin really is, check out the Bitcoin wiki.


Failed to start lnd.service: Unit bitcoind.service not found. (lnd installation)

Starting a service by hand doesn't mean that it has the proper init.d or systemd config files in place that it could be started with the service command.  In this case it looks like lnd was setup to assume that bitcoind was also a systemd service so it can make sure it is started first.  If you can't start bitcoind with the service command then something is missing.

Maybe you didn't install bitcoind correctly and didn't realize it.  Look at the files that were installed and see if anything got put into /usr/lib/systemd/system/unit or /etc/systemd/system/unit.d/ directories.
Or lnd has expectations that have drifted from what bitcoind is providing over some period of time.  The "easy" work around is to modify the systemd config for lnd to no longer try to start bitcoind.


How many zeroes does the current target have?

17 judging by the latest blocks published on blockchain.info:
https://blockchain.info/block/0000000000000000057fcc708cf0130d95e27c5819203e9f967ac56e4df598ee


Is there a way to set the aggression for the OS X Diablo Minor?

There's really no point in mining on a MacBook. It'll get super hot and the GPU will be totally bogged down. If you reduce the aggression, then you kill the point of mining altogether on your machine.


I must have written my 24 seed words incorrectly, options?

If your old wallet supports the default BIP-0039, you could look up all the words and check them here: https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt

Maybe you wrote "odd" instead of "add" or smth. like this down.


Can google steal my Bitcoins if I store the private key in Google Keep note

It'd be a huge violation of user trust if a Google employee looked at customer data and did something like that, so I'd say extremely unlikely.

That said, you shouldn't ever put your private keys on the internet.

Lastly, if this did happen and it involved any substantial amount of money, Google would be able to determine which employee accessed your data, which you could then very likely use in civil court to recover your stolen BTC.

Disclaimer: I work at Google.


What is the easiest way to associate an utxo to a specific account?

The long and short of it is that you can't associate UTXOs with accounts, you can only associate addresses. From the bitcoin wiki accounts page:

  When you receive bitcoins, they are always assigned to one of your accounts, and you can change which account is credited based on which bitcoin address receives the coins, just like you tell a bank teller which account to credit when you deposit cash in your bank. However, sending bitcoins is like withdrawing cash from the bank; the coins that are sent out and debited from an account are almost always not the same coins that were deposited into that account.

If you haven't already, you should see this post about why the accounts portion of the tab isn't really scalable.

  I thought I'd be able to use getaccount with the returned corresponding addresses, but I'm returned an empty string. Is that because the transaction originated from the wallet 'global' account?

Yes, that is exactly, why. The default account is named "".

So, you can associate UTXOs with accounts through associating addresses with accounts, but when spending, there's no guarantee about where you're spending from.

As a possible work around, you might look at using this rpc call:

listreceivedbyaddress ( minconf includeempty )


How to build Bitcoin from source on Ubuntu 11.04 Natty Narwhal?

Wolciph over on the Bitcoin forums wrote a bash script specifically for 11.04. You haven't posted your specific build errors, but I'm guessing that the problem is with the wxWidgets lib and you'll probably have less issues when the main Bitcoin client eventually moves over to Qt (which I believe is in the works, correct me if I'm wrong). In case the link to the script eventually goes down, here it is:

#!/bin/bash
echo "DISCLAIMER: you are using this script at your own discretion! By typing 'c', you agree that you have read the script yourself and have understood it and that you will thus take full responsabilty in the eventuality that this script leads to any harm to you or your property. If you do not agree type 'n'"
read -n 1 r
[ "$r" = 'c' ] || exit 0

set -e

echo "You will be prompted to enter your password in order to install necessary dependencies."

sudo apt-get install build-essential libgtk2.0-dev libssl-dev libdb4.7-dev libdb4.7++-dev libboost-all-dev
sudo apt-get build-dep libwxgtk2.8-dev

mkdir bitcoin || true
cd bitcoin

[ -e wxWidgets.tar.gz ] || wget "http://biolpc22.york.ac.uk/pub/Daily_HEAD/wxWidgets.tar.gz"
[ -e wxWidgets ] || tar -xvzf wxWidgets.tar.gz
cd wxWidgets
./configure
make -j3
sudo make install
sudo ldconfig
cd ..

[ -e miniupnpc*.tar.gz ] || wget "http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.5.tar.gz"
[ -e miniupnpc*/ ] || tar -xvzf *miniupnpc*.tar.gz
cd *miniupnpc*/
make
sudo make install
cd ..

#for some reason, github's certificate doesn't work:
[ -e bitcoin*.tar.gz ] || wget --no-check-certificate "https://www.github.com/bitcoin/bitcoin/tarball/v0.3.21"
[ -e bitcoin*/ ] || tar -xvzf "v0.3.21"
cd bitcoin*/
make -f makefile.unix
#optional:
strip bitcoin
echo "Bitcoin is now compiled : '$PWD/bitcoin'"
echo "Launch bitcoin now? (y/n)"
read -n1 r
[[ "$r" = y ]] && ./bitcoin
cd ..


Will calling "walletpassphrase" twice in a short amount of time increase the time the wallet stays unlocked?

After doing some experiments it appears that as calling the function results in an error, it is not processed, and thus the unlock time is not extended.


The Ripple Wiki has a section on running a Gateway.

Basic summary:

Determine what you will be a gateway for (e.g. bitcoin, alt-coin, fiat, collector coins, etc)
Accept those items outside of Ripple (via a website, in person, via mail, etc)
Issue IOU in Ripple for items received (make a Ripple payment)
Publish and follow a redemption agreement; what you promise to do when sent back your IOUs
When sent a payment in your own IOU, you return/send the items outside of Ripple as per your redemption agreement (via a website, in person, etc)

There is a good example of a private party starting and running a gateway for trading DYM (pre-1964 silver US dimes).

Depending on what you are a gateway for, you can do the Ripple interaction manually (e.g. for the US dimes above it's all manual since the person needs to evaluate and handle incoming dimes anyway) or you can automate it (e.g. there is a TRC and LTC gateway that uses a web interface to configure a Ripple address to TRC and/or LTC address mapping and then automatically passes funds into and out of Ripple.


Does OP_HASH160 consume the top stack element?

Yes, OP_HASH160 consumes the top stack element and replaces it with its hash.

  So how does P2SH work, if the script is consumed after HASH160 runs?

Here's how P2SH transactions are processed:

Execute the input script (from this transaction)
This is the transaction that only contains push-data-onto-stack commands.
AKA scriptSig
Execute the output script (from the previous transaction)
AKA scriptPubKey
Does the output script error out? If so, this transaction's invalid.
Does the output script end with a truthy value at the top of the stack? If not, this transaction's invalid.
Does this output script :

Start with OP_HASH160,
have 20 bytes of data,
and end with OP_EQUAL?

If so, this is P2SH. (source)
If P2SH, erase the stack and run the input script again.
If P2SH, pop the top element of the stack off, and run it as a script. (source)
If that script errors out, then this transactions is invalid.


Unless you have the private key or seed words leading to that address saved somewhere, there is no feasible way to recreate it.


In discussions on the intrinsic value of BTC, when people write about scarcity I think they just mean that the supply is capped, that the difficulty of finding new bitcoins is increasing.


Why do large blocks increase the probability of chain reorgs?

This shows the inherent flaw with the idea of increasing block sizes if the network cannot handle them propagating in a timely manner.

If the block sizes are huge and the mempools of the connected nodes are way out of sync, the full node will basically have to download almost entire block before adding to its chain and then transmitting this block to the nodes that are connected to it. This can consume a lot of time. If a miner mines a block h, they will generally try to build block h+1 on top of the block that they found. It is only after they receive block h+1 (before they mined it) will it know that they lost the 'race' for h+1. The miners will then reorganize its chain to the best height h+1 that they just received and mine on top of that.

When block sizes are huge, the miner in above example, might receive block h+1 only after he has mined h+1. So the miner will start building on top of the block he has mined, being deceived that he was the first to find the solution to the block h+1. If block sizes are huge, this can extend for multiple heights, until the miner receives say a block at height h+6 before he mined the block at that height. So the miner will now have his chain reorganized based on the blocks he has received in the past. The full nodes that are closely connected to the miners, will also have to reorganize their chain for that to happen.


bitcoind deamon create new account for every user

Bitcoin-Core can manage different 'accounts'.
You can can create a new account by using 'getnewaddress':

bitcoin-cli getnewaddress "accountname"

If the account name exists, the address will be added to that account,
otherwise it will create a new account with that name.
You can see what accounts you have by using 'listaccounts'

For other options see: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

Note that these accounts are still considered part of a same "wallet", as it they belong to the same user.

If you want to separate them completely, you can run different instances by using different data folders.
Use the '-datadir=/path/to/data' option when running bitcoin (and again everytime you use 'bitcoin-cli') to tell bitcoin which "account" it has to use.

E.g.:

bitcoind -datadir=/home/user/btc1/ -daemon
bitcoind -datadir=/home/user/btc2/ -daemon
bitcoin-cli -datadir=/home/user/btc1/ sendtoaddress <address-of-btc2> <amount>

Note that you can also use different configurations by placing different bitcoin.conf files inside each data folder.


Is the index db downloaded from peers or generated locally?

The only data exchanged over the Bitcoin peer-to-peer network are the raw blocks and transactions.  Everything else has to be generated locally from that data.

Litecoin and other forks work the same, as far as I know.

Of course, there could be some client implementations that get other data from other sources (not via the main peer-to-peer network), such as a dedicated server provided by the vendor.  Bread Wallet has an example of this.  But the Bitcoin Core reference client does not do that.


How do I create a shopping cart that accepts Bitcoin?

I have same needs, and i found Stripe that accepts bitcoins payment similar like paypal do, then i planned too to use CMSs and i found a solid plugin for opencart on GitHub.
Simply googling i found alot of results, the bitcoin shopping cart plugins are around .. :D
I Also Found interesting bitcoinpay.com,
I can use Api to accept Bitcoin and send to a bitcoin address
...
 even if i not understood if i can operate as Anonymous or i have to link a bank account.
(Obviously i wannot)

The most for all is to find a way to collect bitcoins without to be forced to link a  Bank account.
Tms


Ideal passphrase length: old diceware method (5 words) vs. your Bitcoin wallet.dat passphrase length (8 words) and doubling passwords?

It is all a matter of how many bits of entropy your passphrase has (how hard it would be to guess). Using a couple words provides a lot more randomness than a couple random characters.

As far as I remember, the algorithm used to encrypt the private keys that is used by BitcoinQT has about 100 bits of security (which is a lot). You would want to attain a similar amount of security with your passphrase.

The english language has about 171000 words in it. But lets face it, most people won't use more than 60000. Assuming that your phrase would consist of lets say only the 10000 most popular words, you would need log_10000(2^100) words to achieve 100 bits of security, or about 7.5.

So using 8 words should be enough to secure your coins for a couple decades at least (assuming the current rate of computational speed growth). However, once the quantum computers enter the picture and become powerful enough, all guesses made now can be tossed out.


Antimer L3+ - Approximately How Many Coins In 30 days

An Antimer L3+ could be making about 32 USD per Antminer per day. But the total over 30 days depends on a lot of things. If you take an average of 30$ over 30 days and bitcoin price average of 11,000, then you could make 900$.

Also, you need to include other things like a power outage, internet connection down, and hardware issues to be on safer side.

Let us know if this answers your question.


Does the entire blockchain have to be recomputed to validate a transaction?

No.  The blockchain must be queried, but not recomputed.  If you see a transaction that has two inputs, you will need to query to check if those outputs have been spent.  You will also need their encumbrance scripts in order to check the spending transaction meets the required criteria.  In essence, this is just a database lookup.


Do transactions reference the containing block of the previous transaction?

If it were not this way, transaction generation would be slow and fragile. First, you couldn't form a transaction unless you knew which block all its outputs were in, which would mean you'd have to wait until they get in a block. Worse, if there were a blockchain reorganization, it would be impossible to recover many transactions because recovering their parents would change what block they're in, invalidating their children.

This means that nodes generally keep an efficient table of all unspent outputs, indexed by transaction ID.


BIP91 is activated, why BIP141 is still dormant?

BIP9 only describes a new deployment method of softforks to the Bitcoin network. I therefore assume that you mean the deployment of BIP141 by method of BIP9.

The deployment of segwit requires 95% of the blocks of a difficulty period to signal readiness for it by setting bit1 in the version field. Since the difficulty period was already in the middle when segwit got such levels of support, it can only lock in during the next difficulty period at the earliest. The next difficulty reset will happen on the ~28th (from the top of my head, you can check on bitcoinclock.org). If it has 95% support in the difficulty period it will then lock in on the next difficulty reset ~Aug 11th, and then activate another difficulty reset later on ~Aug 24th.


Not sure but I think those guys started working on the Ripple project instead. They are skilled JS developers and they want to do something of their own with Ripple.


Current hash rate required for one block

Firstly, new blocks are published every 10 minutes on average, not every hour.

There is no 'required' amount of hash power to mine a block. It is all a game of luck, a race against the rest of the network. To mine a valid block roughly once per hour, you would be mining a sixth of the total blocks (~6 blocks mined per hour), so in theory you would need around a sixth of the total hashpower on the bitcoin network. You can see the current network hash rate here:
https://blockchain.info/charts/hash-rate

At the time of this post, that's roughly 1.4 exahashes per second (million terahashes per second).


Are transactions with an insufficient value marked as "failure"?

Are transactions with an insufficient value marked as “failure”?

No.

The blockchain, other nodes and miners have no idea how much the recipient is expecting to receive.

If your wallet and blockchain explorers show the transaction as being confirmed then the recipient has received your money. It is now under their exclusive control.

  the site owner says he didn't receive any payment

Either they are confused or they are trying to deceive you.


Loosing your bitcoins due to a glitch on your mycelium app, and how do you get the back without a backup?

If you do not have a backup of the wallet, either in the form of seed words or a exported file from Mycelium, then your coins are permanently lost.

Ideally, one should be backing up and restoring their wallet to make sure they've got all the necessary information before sending a significant amount of coins to it.


Does Bitcoin ensure all messages will be broadcast?

What you're describing is a push mechanism where each node automatically pushes whatever data it gets. This is not how the networking part of bitcoin works. The network protocol of bitcoin works as a pull mechanism. As a node, you request an inventory of blocks and transactions from other nodes. Usually, you request an inventory of what blocks and transactions other nodes have and then request specifically for the blocks and transactions you don't have. Other nodes you are connected to do the same thing.

As such, the upload bandwidth is only as much as other nodes request from you and given that you only need to receive each transaction or block once, in general, your upload bandwidth will be roughly equal to your download bandwidth.

That said, if you're one of the nodes that has a block first (like a miner), you're going to be uploading the block data to a lot more nodes than you download. If you're running a normal full node and not mining, you'll most likely be downloading more data than uploading.

That said, if your mempool gets flooded with transactions, the bitcoind behavior is to randomly discard transactions so that it's under a certain limit.


What GPU-APU configuration should I buy for mining Bitcoins?

It's essentially too late to be worthwhile GPU mining because FPGA's are much more energy efficient, and cheaper to buy per unit of output. This has meant the difficulty has risen high enough that you won't cover the cost of your electricity (or your hardware) with GPUs. ASICs are likely to be shipped soon, which will largely make FPGA's obsolete. You can pre order ASICs from multiple manufacturers; Butterfly Labs is one.


Blockchain length by number of blocks or transactions?

The longest blockchain is measured by the number of blocks, not the number of transactions. This is because the proof-of-work is linked to the creation of blocks, not transactions.


Bitcoin Gold is a new hard fork planned by Jack Liao (CEO of LightningASIC), that will happen on October 25. It's main aim is to decentralize mining by changing the Proof-of-Work algorithm to ZCash's Equihash algorithm, and they promise it'll switch to a different PoW when ASICs are launched.

Its addresses will start with G (P2PKH) or A (P2SH), and it has replay protection. Source

The official website is bitcoingold.org

Also These can be used to contact them:

https://github.com/BTCGPU/BTCGPU
https://twitter.com/btcgpu


What does malleable mean in "transaction malleability"?

Malleability is ability to change the binary contents of transaction (that also includes its TXID) without invalidating it, by someone else after broadcast and before the confirmation in block.


json-rpc api works locally but getting "Connection Refused" remotely

Make sure to set

rpcallowip=<ip>

for each of your remote IPs, to whitelist them.

You can also use a netmask instead of IP. If you have a dynamic IP, use this feature!

For example, if your laptop's IP always starts with 237.94, you can set it to

rpcallowip=237.94.0.0/255.255.0.0

Then it'll allow all IPs that start with those numbers. Make sure to set a really strong password, though.


The bip39 algorithm is badly designed and that is why it is dependent on a specific wordlists. Each time you want to add a new language you have to update the BIP!

Electrum has it's own seed mnemonic format that does not depend on specific wordlists so it's definitely possible to create a format like that.


You don't have to use all the optional variables in your request link, specially when you have not set a second password, etc...

this suffice the request to send your transaction:

$json_url = "https://blockchain.info/merchant/$guid/payment?password=$firstpassword&to=$addressa&amount=$amounta&fee=$fee";

even if you remove "fee" variable, it would still work but you should consider 0.0001 miners fee that is there by default for minimum miners fee.

also you can get these values from the response:

$json_feed = json_decode($json_data);

$message = $json_feed->message;
$txid = $json_feed->tx_hash;
$notice = $json_feed->error;


What is the rationale for the Lightning network's path length limit (20 hops)?

The onion routing in Lightning is based on the Sphinx Mix Format described in this paper. The situation is different from Tor

We don't have entry and exit nodes in Lightning as all nodes are inside the Network.
In Tor a new connection along the path is as easy as creating a TCP socket between the tor routing nodes. In Lightning a payment channel with enough liquidity would have to be available and can't be spawn instantaneously.

The latter argument already calls for longer paths as nodes cannot just ask routing nodes to make certain hops. (That might change though if the trampoline network is coming to Lightning with which your Tor argument might hold.) Let us additionally assume I would always have paths of length 3 in Lightning. A routing node would basically see who paid whom as there are the incoming and outgoing HTLCs.

The main reasons for the Sphinx packet to be 20 hops are - as far as I understand - the following:

The per hop data is 65 Byte and with 20 hops it will always fit into a small TCP/IP package giving no clues for traffic analysis and timing attacks.
We assume that the Lightning Network will still somehow be a small world network with a rather small diameter, so 20 hops should be sufficient.


How is the transaction malleability issue being fixed?

Transaction malleability is a consequence of the features of Bitcoin. The input data (scriptSig) for claiming outputs is purposely malleable to allow for useful scenarios where one would want to claim outputs in different ways.

The consequence of these features is that the hash of the transaction changes and shouldn't be considered as a useful piece of information other than referencing outputs of transactions that have been confirmed.

With that being said, I'm not sure what changes the client could implement to prevent the hash from changing. Perhaps it can enforce specific rules, like making non-canonical data pushes non standard, however that may interfere with later extensions to Bitcoin.


How does a bitcoin wallet incorporate UTXOs for payment?

Early versions of Bitcoin used a simple knapsack solver to optimize for the least number of inputs possible given the available UTXOs in the wallet.

Modern versions have much more complicated selection logic, additionally attempting to not combine change from many unrelated transactions for the sake of privacy.

Other wallets have different selection criteria with differing payoffs. Historically many simple wallets attempted to just add the largest possible outputs until they satisfied the amount, however this optimized for low fees and transaction sizes at the expense of maximizing the amount of small dust UTXOs produced. These all have different trade offs, but the simple ones tend to be horrifically inefficient or lacking in even basic privacy.


Can Lightning Network be used for individual small transactions?

Yes, LN would help you directly.

Suppose you have an open LN channel with Shapeshift or are able to route a payment through LN (i.e. you have a channel open with someone else who has channels to other people). Suppose that IOTA also has implemented LN and you have an open payment channel on IOTA. Now when you want to exchange BTC for IOTA with Shapeshift, you would route your payment through LN to Shapeshift and they would then route a payment on IOTA through IOTA's LN to you.

In fact, this could be done as one route with the guarantee that you will get your money and not have to rely on Shapeshift or any other third party. This is known as an atomic swap. LN allows for atomic swaps like this for coins that have LN implemented.

So in this scenario, you don't have to pay a transaction fee to send money to Shapeshift. Instead you paid a transaction fee to open the payment channel which you are using for transacting with many different people, not just Shapeshift.


You can simply send the signed transaction to the other entity (e.g. via Bluetooth) who then can send it to the Bitcoin network. The transaction doesn't need to be sent to the Bitcoin network by you, it just needs to somehow get to a miner to be included in a block. Even if you print it out, send someone a letter via snail mail, they type it in, and send it to the Bitcoin network, it'll still work.


This question may be opinion based in some ways, but I'm going to attempt to answer it as it is an important concept, and somewhat unlike traditional systems.

Bitcoin is governed by math, in some places. At the end of the day, it's software, and even the math rules can be updated to use different rules, or removed altogether by means of a soft or hard fork (depending on how drastic the change is).

As for the math, there are primarily three sections where it is in play.

The first is mining - the hash function is used to calculate a value, which is compared against the mining target.

The second is signatures - elliptic curve signatures are used to enforce utxo ownership (for standard outputs anyways).

The third is the block reward - The Bitcoin block reward halves every 210,000 blocks, lea

That said, none of these are particularly math-y. As with any computer program, math is used to enforce certain functionality.

It may be more appropriate to say that Bitcoin is governed by code - The code is ultimately what decides things such as block reward halving, signature technicalities, and mining process. As the abundance of altcoins shows, there are many permutations and combinations on all of these parameters that still result in valid and functional networks. Even Bitcoin has gone through a series of network upgrades that have altered some of these rules, such as moving from an infinite supply to a fixed supply.

As chytrik mentioned in the comments, the infinite supply fix was actually a bug fix (the infinite supply was a side effect of C++ behaviour, and would not have occurred for equivalent code in many other languages).

Bitcoin can indeed be looked at as a model of social governance governing the code, and the code governing the network.


How can I make my old wallet.dat work in a newer client?

You may need to export the private key of your old wallet in the old QT client, and import it into the wallet in your new QT client. The steps to do this are:

Exporting the private key of your old wallet, containg the funds. To do this, in your old QT client, click Help > Debug window and go to Console
There, you can use the command dumpprivkey command to export your private key. KEEP THIS SAFE, anyone with access to this key can do whatever they want with your wallet.

Now we import the private key into the new wallet and up-to-date QT client. To do this, repeat the previous steps: click Help > Debug window, and go to Console again. Then use the importprivkey "KEYHERE" command, where KEYHERE stands for the private key you exported.

The client will then scan the blockchain and, if it finds transactions pertaining to your old address/wallet, it will replay them, and you should dispose of your old funds.


This problem is not solved by the blockchain or the Bitcoin protocol. By "cryptovoting" I'm assuming that you mean that an individual signs his or her vote with his or her private key. The problem is that anybody can generate a new private key on a whim. The private key would have to be verifiably tied to one individual's identity, and that individual's identity would have to be exclusive to all other entities in the voting network. (DNAcoin maybe? kinda cool, kinda scary)

Note: I just googled DNAcoin and obviously found a thread on Bitcoin talk: https://bitcointalk.org/index.php?topic=187991.0

While a Bitcoin-based voting system could implement a "1 vote per 1 private key" rule, the pseudo-anonymous nature of the Bitcoin network makes it nearly impossible to know if an individual has generated two private keys (unless the transactions make it apparent that it is the same individual). Generating a private key is as easy as flipping a coin 256 times and recording the results as 1 or 0, then converting that into hex (or tonal if you're Luke-jr).


Add a transaction generated offline to the official client

In version 0.7 you will be able to send it to bitcoind through a "sendrawtransaction" JSON API call.


https://en.bitcoin.it/wiki/Trade

There's enough places to spend your coins and there are job boards where you can advertise your services. Bitcointalk is also a good place check out.


What percent of recently mined coins being actively traded vs saved?

That's the thing with a pseudonymous digital currency.

It is not knowable to you and me.  The larger pool operators might be able to look at their withdrawals to see if they are being re-spent but there's no way to tell definitively if the withdrawal was for a hosted (shared) EWallet (e.g., Mt. Gox) or to the miner's local wallet.

With ASIC hardware, the bulk of the production cost has already been spent to acquire the hardware.   Very little of the production cost will be electricity.   This varied from GPUs where the inverse was mostly true.

If miners are indebted they will be needing to sell their production to repay the debt.  It seems likely most ASIC purchases were not purchased with debt so it then seems likely most ASIC mining operators aren't really  being forced to sell their mined BTCs whatsoever.


Why invest in mining hardware if the difficulty continues to climb at an exponential rate?

The mining difficulty is going up very fast. You are correct. But the mining industry is also stimulating the Bitcoin economy significantly. See this news story, for instance: KnCminer sells $3M of bitcoin mining equipment in 4 days

My best answer to your chart is another chart:

From: https://blockchain.info/charts/miners-revenue

Even with the bitcoin difficulty skyrocketing and the hash rate of the network steadily climbing, the math says it all.

  (number of bitcoins mined per day + transaction fees) * market price

Now mining at that scale is not for everyone, that is where hashing data centers come in to the picture.  If someone wants to mine some of this currency but cannot afford to buy the expensive gear that is required to keep pace with all of these numbers, cloud services will allow little guys to play ball at whatever prices they can afford to pay.


You have it installed already. That's why it's saying you have the requirements met and don't need to download it again.


Firstly, correct me if I'm wrong.

When a miner finds a solution for the block and broadcasts it to the other node, all the other nodes verify if it is a correct solution or not.

It's very trivial to validate the PoW, just hash the block header and then count how many "leading zeros" that hash contains (note that such description is theoretical. The actual implementation allowing "fractional leading zeros" is somewhat complex or even weird).
Validating the whole block is much more complex and "costy" than validating the header only. The CVE-2018-17144 inflation/DoS vulnerability was actually caused by improper optimization of the validation code in order to further improve block propagation.
However, theoretically no matter how many miners are in a pool, they are just one single full node (as the identity of the pool) in the Bitcoin P2P network.
It's the pool who constructs the block to be mined. Pooled miners using the stratum protocol don't download the full block data at all. They only download minimal data required (like the block header, coinbase transaction etc) to do the SHA256d mining. They therefore don't validate the block because it's not even downloaded at all.
So we can see, currently pooled miners (who do not run their own full nodes) blindly follows the pool, so that it's possible for an evil pool operator to abuse the hashpower provided by miners in that pool. Actually some miners are even happy with such situation, because some pools promotes features like "automated switching for maximum profit". We may see improvement/relief on this issue in the future if BetterHash/StratumV2 protocol could be widely adopted.
Besides, pooled miners can indeedly attack the pool (or other miners in the pool, depending on the pool's payout mode, PPS or something other) by withholding the solution, albeit it's very trivial for the pool to validate the solution (PoW).

Can we check if a miner has validated the solution?

To my knowledge it's currently not possible to know whether a miner (mining pool) had validated the whole block.
It's just the miners' own interest to fully validate the previous block once again on their own, so that they would be completely confident that they won't waste their hashpower/electricity costs on an invalid branch of blockchain.

I read somewhere that if mining pools find a solution, then peer miners in that pool don't verify the solution and straight away go for the mining of next block on top of it. This is kinda unfair for the other miners. Do we have any system to check if a miner has validated the solution or not?

You seem to describe a kind of validationless mining called "SPV mining".
However, it's not "peer miners in that pool", but other pools (or solo miners) can possibly do that.
It indeedly once caused problems, like the 2015 chain-fork incident related to BIP66.
Theoretically there's also a variant of selfish mining attack called "Blockchain Denial-of-Service (BDoS)", which aims to push victim miners under profitable line.
There's also a controversial argument that SegWit also has an issue similar to BDoS, because developers had once pointed out that SegWit allows the miner to mine atop previous block without downloading & validating the witness data (mostly digital signatures, only SegWit transactions have such data), so that that miner could then collect transaction fees with higher confidence (because, with the non-witness part of the previous block it's already enough to update the UTXO set, which is the "global account balance database" of Bitcoin maintained by each full node on its own).

On the other side of it, not sure how often does this happen on the network but a pool of miners can share wrong solutions to keep the other miners busy and get an advantage.

In selfish mining, it's not really a "wrong" solution to be shared, but stale branch of the blockchain which the victim "honest" miners have no choice but to mine atop it, because the longer branch is withheld by "selfish" miners.


Lightning Network conf listen & externalip values

Listen: This specifies the interfaces to listen to for incoming connections to your node. This will allow other nodes to establish inbound connections to your lnd node. If you want to listen to all ipv4 connections on port 9735, you can use listen = 0.0.0.0:9735

External IP: Adding an external IP advertises your node to the network. If you'd like to signal to other nodes on the network that you'll accept incoming channels (as peers need to connect inbound to initiate a channel funding workflow), then the externalip flag should be set to your publicly reachable IP address.


Why is Bitcoin Core not asking me to enter the decryption key for my allegedly "encrypted" wallet.dat?

Only the private keys are encrypted if you have an encrypted wallet.dat. The passphrase is only asked when those are needed, i.e. when you try to send coins.


Can you help me see if I have an old Bitcoin account?

Do you remember writing down any kind of information, like 12 or 24 random looking words (or any other information regarding your bitcoin/crypto accounts)?
As @chytrik mentioned, there was no bitcoin or "crypto" (in the sense which the word is used nowadays) before 2009, and wallets that were able to store other cryptos besides bitcoin came into existence only a few years after that.
So what happened in 98/99 shouldn't be of any importance. Perhaps you are conflating something else with "crypto"?
In any case, if you think you might have had a bitcoin wallet, figuring out what kind of wallet/account you used would be a first step, and if you have any other kind of written down information would be very helpful as well (DO NOT SHARE THE ACTUAL CONTENT OF SUCH INFORMATION WITH ANYONE, in case you find it).


Derivation of parent private key from non-hardened child

First we must understand how BIP 32 derives non-hardened private and public keys.
From BIP 32, deriving a child private key from an extended parent private key:

let I = HMAC-SHA512(Key = cpar, Data = serP(point(kpar))) || ser32(i)).
Split I into two 32-byte sequences, IL and IR.
The returned child key Ki is parse256(IL) + kpar (mod n).

The private key is thus the parent private key plus the first 256 bits of the HMAC-SHA512 function where the key is the chaincode of the parent private key and the hashed data is the concatenation of the serialization of the public key that corresponds to the extended private key and the child key index. The important thing here to note is that the HMAC-SHA512 hash is a hash of the public key, not the private key.
From BIP 32, deriving a child public key from an extended parent public key:

let I = HMAC-SHA512(Key = cpar, Data = serP(Kpar) || ser32(i)).
Split I into two 32-byte sequences, IL and IR.
The returned child key Ki is point(parse256(IL)) + Kpar.

The child public key is the parent public key added with the public key generated from the first 256 bits of the HMAC-SHA512 function where the key is the chaincode of the parent key and data is the concatenation of the parent public key with the index of the child public key.
Notice how when deriving the child private key and the child public key you are actually hashing the same thing? You are performing the HMAC-SHA512 function with the same key (the chaincode of the parent keys) and the same data (the concatenation of the parent public key and the index of the child key). The first 256 bits of that hash become a private key of sorts, and that private key is added to the master private key to become the actual child private key. Its public key is calculated and added with the parent public key to become the child public key.
So to get the master private key, all we need to do is take the child private key that we now have, and subtract from it the private key produced by the HMAC-SHA512 function. To do that, we need three things, the chaincode, the parent public key, and the child key index.
The chaincode and parent public key come from the extended parent public key (xpub) as it encodes both the chaincode and the public key in it.
The child key index can be trivially found by deriving child public keys from the parent public key until we get the public key which corresponds to the child private key that we have and save the key index.
With these three things, we can perform the HMAC-SHA512 function and get the 512 bit hash. Now we can take the child private key and subtract from it the integer that is the first 256 bits of the hash we just generated. Our result is the parent private key. Combine that with the chaincode that we retrieved from the extended parent public key and we have ourselves the extended parent private key.

This technique only applies to non-hardened derivation. Hardened derivation protects against this because it generates the child private key by hashing the parent private key. However this also means that you cannot generate the child public key from the parent public key.


Currently, it seems, most of Bitcoin-related published research are of technical and legal nature (according to Google Scholar, Mendeley, Bitcoin Wiki).
While there is some economical analysis performed by community (wiki, this question), I haven't managed to find any papers in peer-reviewed journals.

This discission on Quora explains some of possible reasons for this. Excerpt from top answer by Erik Madsen:

  Overall, Bitcoin is a fine example of a currency market, but it hasn’t
  (so far) told economists anything new about how the world works. It’s
  not surprising that most research on Bitcoin is from a cryptography
  standpoint, because that’s really the interesting part of the whole
  endeavor.

and his comment on another answer:

  Private currencies are no longer common, but they have existed.  And
  the intentional opaqueness of the market, and it IS quite opaque,
  means that its utility as a data source is severely limited.


Bitcoins transactions over 1000 confirmations, but amount remains red

In the "Amount (BTC)" column on the right side of your window, a red number means money that you are sending out, and a black number means money that you are receiving in.

(The second row should have the amount in red too, but it is in black merely because the low is highlighted/selected with the cursor.)

The transaction pictured in the screenshot is indeed confirmed: txhash 90d43acff8c70d8ad2e8d09a6457b76caafc521501d71b573e9927939df8978c.


Download single and specific block for study purposes

However this is JSON, I imagine I can't use it to verify the nonce.

You can. You can build the block header using the data at the beginning of the JSON object and then hash that. Of course it would be easier to get the block hex, which you can get by going to the block hash on blockchain.info and appending ?format=hex to the url. For example, for the block height you linked, the hex of that block can be found here: https://blockchain.info/block/000000000000000000ff265a641721e79bbc559d8b0e4894332732109f1a3383?format=hex

  How can I download a block?

Get the block hex. That is the raw data for the block itself. You could make it a file by putting the hex in a hex editor or just save the hex as a string in a text file.

  What is the file format of such block?

Blocks don't have a file format. They are just blobs of binary data which you will need to understand how to parse. https://bitcoin.org/en/developer-reference#serialized-blocks explains the block serialization.

  At what bytes start the nonce field I can increment, for example with a Python script?

The part that is hashed is the block header, the first 80 bytes of the block. The nonce is the last 4 bytes of that header. You can read about the format of the block header here: https://bitcoin.org/en/developer-reference#block-headers

  Once I get to put the right (and known :) ) nonce how can verify that the block is solved? I mean, its hash should starts with lots of zeros, could I treat the block as a string and pass directly to the python hashlib function?

No. The block header is not a string. It is a blob of binary data. In python, the easiest thing to do is to make it a bytes object and then pass it in to hashlib.

If a block's proof of work is valid (note that does not mean the block itself is valid), then after you hash it with SHA256 Double, you treat the output as an integer and compare it to the nBits field of the header. The nBits field a 4 byte field beginning 8 bytes from the end of the header and is a compact representation of the target. You can read about how to interpret it here: https://bitcoin.org/en/developer-reference#target-nbits. The block hash (treated as a large integer) must be less than the target specified by the nBits field.


Can Bitcoin full nodes pinpoint the true source of a transaction which they've relayed?

In the bitcoin data directory there is a file called debug.log.
This file as noted in the bitcoin documentation:

  May contain IP addresses and transaction ID's.

This does not indicate that a transaction originated from a specific IP address but it does indicate that your node received a transaction from that IP address.  If someone were to have a wide enough view of the network and controlled enough nodes then it could be inferred that the creator of a specific transaction was using a specific IP at the time.  This is not always considered conclusive evidence at this time.


What is the Default Rounding for 8 digits in Binance,tradingview,etc

There should not be any rounding because all operations are integer operations. The 8 digits is because they calculate using the base unit of Bitcoin, the satoshi, which is 0.00000001 Bitcoin (8 digits). It is calculated as an integer (i.e. calculation uses satoshis, not Bitcoin) multiplied by an integer for the number of bytes, thus the result will also be an integer. The decimal then comes back as they shift the decimal point to represent the value in Bitcoin. There is no rounding involved, if there is, you are doing something wrong.


How is wallet at official client encrypted? What encryption it use?

Both bitcoind and bitcoinj use AES-256 encryption for the private keys in their wallets (this does not mean that the wallet formats are compatible though).

Bitcoin-Qt is just a GUI on top of bitcoind and Multibit is using bitcoinj internally, so the same should apply to them.

References:

comment in the bitcoind source code
bitcoinj documentation


The result returned from that API is a compound JSON object containing:

Address basic information and summary
List of transactions associated with that address

The transactions are included in a JSON-encoded list under the txs key. Every transaction itself is a dictionary-like object holding pertinent information.

It should be pretty clear when you visualize it into a tree structure. You can use JSONView plugin for Firefox or Chrome - it'll render all application/json responses in a nice hierarchical and clickable tree and help you understand it.


ie: notably one where I don't specify things like rpcuser, rpcpassword - is this insecure?

No, Bitcoin Core by default creates a RPC cookie file in the data directory on startup which is used in place of static authentication. Specifying a rpcuser and rpcpassword is deprecated, and they can't be blank regardless.


Bitcoin Cash - How to get estimated fee and send transaction

The fees for Bitcoin and Bitcoin Cash are not fixed, but are driven by supply (block space) and demand (transaction volume) in their respective markets.  They are independent of each other, so prevailing fees for Bitcoin are not likely to be representative of Bitcoin Cash fees.

I don't know of any sites that track Bitcoin Cash fees in the same way as Bitcoin.  However you can see some historical data at sites like this one.


In rippled.cfg, what to use for [node_db] on Windows?

At the time only SQLite is available on Windows platform, so the correct configuration is:

[node_db]
type=Sqlite
path=hashnode.db


According to the BNB whitepaper, written by Binance, the Binance project started on 2017/06/14, the ICO started on 2017/07/01 and the ICO finished on 2017/07/21.


Stuck Transaction for almost 2 days, have paid fees

Hi I had the same problem and was at the mercy of too low of a fee I sent.
I'd been waiting 36 hours and then tried this: https://www.viabtc.com/tools/txaccelerator/        I have no idea it might be a coincidence but it confirmed within the hour. Could just be coincidence. So I put your transaction in there for ya. let me know if anything changes!!!! :)


Do I have to pay Fees on the Lightning Network if there is a Payment Failure?

Short answer: No.

Explanation: The fees are part of the onion routing package within the HTLCs. So a routing node accepts an incoming HTLCs and forwards it if there is a difference in value that can be collected as fees. The HTLCs are conditional payments on the condition that the preimage is delivered in return. This will only happen after a path of HTLCs is successfully established. If a payment fails some node can't forward the HTLC which means that noone along the path will be able to settle the HTLCs. This in turn means no fees are being paid.


Mining on a cpu at all is a bad idea, it can and will wear the cpu down, and is ridiculously slow compared to a gpu. Also mining with an Nvidia card isn't the smartest thing either as they are much slower than AMD cards. Regardless you will make next to no money mining with this kind of hardware given that there are thousands of people with ASIC miners that pump out 2TH/s +. My advice would be save up some money and purchase a high-end ASIC miner and refrain from mining with your current computer.


Dont understand how to buy Bitcoin. Looked at sites but makes no sense to me

Think of it like dollars and cents, pounds and pence.

Current exchange rate is US$350/BTC = $0.35/mBTC

So $1 buys ~3 mBTC (ie ฿0.0003) . Likewise $100 buys ฿0.2895.

Use this formula:

Bitcoins bought = (purchase amount) / (exchange rate)

This is no different than any exchange rate. Check out XBT @ xe.com


Do all private keys that are resolved to the same address give access to the bitcoins on this address?

Yes. And it's pretty easy to understand why, without even mentioning anything about the underlying technologies.

A bitcoin: URL only contains the address of the recipient. The address does not need any previous transactions in the blockchain to resolve to a public key, so we can deduct that a bitcoin URL has the full public key.

When you spend bitcoins from an address, all that is publicly known is the public key for that address. And since we just established that the address is basically the public key, we can conclude that any private key that resolves to a certain public key will have access to that address.

In other words: when you send BTC to an address, all the client knows is the address where it's going, which means that it cannot store anything else about the recipient (since it doesn't know anything else). Since only the address is stored, any private key that resolves to that address will have access to the bitcoins.

It should be pointed out that not all transactions are sent directly to an address, and there are exceptions to my logic here. But for 99% of all transactions the above applies


What prevents Bitcoins for being used to avoid taxation?

What prevents Bitcoins for being used by criminals to avoid
  taxation?

nothing.  thats the price of anonymity:  it can be used for good and for bad.

  In a Bitcoin world, how can a state tax its citizens when it's
  impossible to check their transactions?

in a hypothetical purely bitcoin world, the state would have to find different ways of funding itself, if it existed at all.


When a Ripple-Gateway charges a fee for third parties exchanging their IOU, how is it determined who pays the fee?

When a Ripple user sends funds, he sets the amount that he wants the recipient to receive and the system will offer a proposition on how much the input for the transaction needs to be.

Upon execution the transaction is atomical (either it happens completely or not at all). The system will use the ledger to find the optimal path and the sender pays all transit fees occurring along the path.


What happens to off chain transactions when the blockchain is reorganised?

You answered your own question.  Rephrasing as a statement:

  [Some companies] detect that Block 1 no longer exists and then reverse the transaction to A and B's wallet.  [Other companies] take the hit and lose the 10 BTC from their profits.

Which solution to implement is a choice that's up to the company---neither solution is inherently better or worse.  (Reversing the transaction is better for short-term profits, but taking the hit (if you can prevent most fraud) may make your customers happy and increase long-term profits.)

Bitcoin payments are push-based: Alice pays Bob.  An alternative solution to this problem is requiring depositors to provide a backup payment method that is pull-based. In the event of a double-spend, this will allow Bob to charge Alice's debit card.  Although expensive, time-consuming, and not guaranteed to work, the ultimate pull-based payment method is going to court and suing the double-spender.


Why was/is Bitcoin written in C++ instead of C?

Maybe yes or maybe not, that is, there is no specific reason sometimes for choosing the programming language (This in general) especially in open source projects the language depends a lot on who is part of the project.

Surely C ++ is a ubiquitous language nowadays, just think that java and python were born from this language.
In my opinion, in first the choice of C ++ has been given a lot since the presentation of the idiom to objects, we say that C does not have the classes it is not possible to realize many techniques that are in the everyday reality for current programmers.

Then just think that in 2009 all these "Go" languages were not present.

So my definitive answer is:
"I think that in the periods when bitcoin core was released and in the previous one in which C ++ was developed it was a reference language for object-oriented programming and it was probably better to use an object-oriented language for technical reasons. as hereditary polymorphism.

I believe that this code cannot be written in C above all the transactions
look here in my fork where I'm studying bitcoin core Click me

This is just my thought, I may be wrong.

Sorry for my terrible English but I'm learning


Measuring total amount of Bitcoin in circulation

The concept of a money multiplier is meaningless in an unregulated environment. The money multiplier is, by definition, a legal limit imposed on the reserves banks must have.


If the adress that the seed belongs to held any bitcoin at the time of the split,
then yes,

BCH should have been credited to the adress with that seed phrase, since they use the same adress format.

For absolute security, yes, you should. See https://electrum.org/bcc2.txt


How to physically configure graphic card for higher yields?

A single instance of cgminer handles multiple GPUs, so there is no need to run separate processes.  Enabling SLI(You aren't using NVIDIA cards, right...) or Crossfire will decrease mining performance, so leave it off.

There is no overhead associated with running multiple GPUs on a single system, unless the cards are physically spaced so close together that they overheat and throttle. 7 1.2 Mh/s cards would be expected to produce 8.4 Mh/s total.

At this point, investing in new GPUs for mining is questionable, and you should only consider GPU mining for scrypt-based altcoins such as Litecoin, as ASICs have made GPUs unviable for bitcoin mining.


Would moving a transaction from an old block to a new one allow more pruning?

This seems a lot of effort for absolutely no benefit.

In the Bitcoin pruning model you discard ALL those old blocks anyway, and JUST keep the utxo set. It doesn't matter whether a utxo is in an old block or a new block, you're still keeping it in the utxoset. Any blocks you keep around is merely for convenience and to assist other nodes that request those blocks.


Is Butterfly Labs reputable / Should I preorder the SC Jalepeno?

EDIT:

My original answer may have made sense back when the question was asked, but now it is clear that Butterfly Labs cannot be trusted.

As they say, "fool me once, shame on you; fool me twice, shame on me". After all the delays and controversies with their FPGA line, they have given their word that with the experience gained they really will be able to deliver their ASIC line on October 2012. 10 months later (and 20-fold difficulty increase later), even the first pre-orderers didn't get their orders in full. This didn't stop them from announcing a new line, with pre-orders and the same empty promises. Which, if they deliver, will be better performing than their first ASIC line, without any compensation to their loyal customers who have waited more than a year.

The fact that their CEO was shown to be a convicted felon doesn't help.


What is the longest blockchain fork that has been orphaned to date?

Short answer: 4 [Prior to the March 12, 2013 fork]

The Value Overflow incident seems to be the longest ever blockchain split. The problem with blockchain forks is that once they are resolved the only trace they leave is a log entry.

To reconstruct the following I used the printblocktree output that theymos gave me in this question and the information from Blockchain.info.

As far as I can see from the printblocktree there have been 90 blockchain forks observed by theymos in the blockchainrange [90392-189512].
This dataset has the following forks:

1x block length 4 (starting from block 174161)
1x block length 3 (starting from block 174120)
4x block length 2 (starting from blocks 93669, 174233, 179217 and 179639)
87x block length 1 (starting from blocks 90392, 90676, 90858, 91405, 92094, 93047, 93088, 93619, 93642, 93669, 93670, 93671, 93855, 94671, 98529, 99365, 100740, 101902, 102674, 105401, 109912, 117103, 118553, 120406, 123583, 128501, 130077, 130200, 155180, 157929, 161673, 162257, 163959, 165439, 165519, 166890, 167283, 167620, 167742, 167863, 168920, 169517, 171064, 173494, 174102, 174104, 174121, 174174, 174182, 174185, 174187, 174232, 174242, 174291, 174307, 174313, 174330, 174343, 174414, 174452, 174531, 174593, 174605, 175998, 176210, 176478, 177854, 178119, 178293, 179791, 179890, 180143, 181230, 181591, 181618, 182210, 182321, 183193, 183405, 183500, 183519, 184932, 186561, 187866, 188347, 188682 and 189512)

Blockchain.info does have quite a few more orphans in their database, apparently because they connect to a lot more nodes, but their history does not go back as far as theymos' printblocktree.
The first blockchain fork that bitcoin.info observed was based on block 142257 since then we observed 540 forks:

2x block length 4 (starting from blocks 174161 and 173927)
4x block length 3 (starting from blocks 174120, 174056, 174050 and 173956)
14x block length 2 (starting from blocks 183873, 179639, 179217, 176924, 175847, 175226, 174233, 174093, 173988, 173985, 173691, 170059, 165518 and 155180)
520x block length 1 (far too many to put them here...)

The problem is quite evident: while both see forks, theymos' set has a smaller view of the network and misses or misinterprets forks (the one starting from 155180 is marked as a length 1 fork in the first results and as a length 2 in the second). We cannot be sure that blockchain.info catches all of the forks but we can be pretty certain that there was no fork longer than 4, as the fork would survive longer and would be seen by more nodes.


Is this money at work for me here or do I need to do something else.

I believe Poloniex is a currency exchange. If you want to earn money simply by trading currencies back and forth, I believe you need to be an active manager of your trades.

Poloniex seem to offer margin trading - In general I suspect this is a good way to lose money if you are new to finance.

If you don't know whether your money is at work for you then it almost certainly is not.

  is this deposit safe where it is

Storing money on an exchange when you are not actively trading is one of the least safe places to hold money.

The safest would be an offline wallet with well backed up keys and/or recovery seed phrase in multiple locations, with rehearsed recovery and with instructions to your heirs in case of bus.


As @Anonymous said Electrum servers listen on port 50002 so that's what you are seeing here. Your phone is connecting from a random local port to remote 50002 on the servers.

Electrum gets blockchain data from electrum servers run by volunteers. These servers see your addresses + transactions but they don't see your private keys or seed. So you lose privacy compared to using a full node like bitcoin core but you still have exclusive control of the secrets that let you spend your bitcoins. The upside of using electrum over a full node is that you don't have to download the 200GB blockchain. You can get up and running straight away.


Incentives against selfish miners with 51% power

The minting of bitcoins is constant and a 51% miner can't change the supply of it and cause inflation. Changing the supply can only be done by developers, resulting in a chain split, which wouldn't be called Bitcoin (unless it gains the support of various companies and users)
You can't just mine loads of coins, double spend them and cash out. To spent the reward of a block, its miner has to wait 100 blocks (144 blocks = 1 day) If you're double-spending coins that aren't newly minted, you can do that, but economics says while you own 51% of the network, you would be devoting lots of hashpower (=electricity) and would earn lots of block reward, so you wouldn't want to forget to cash out the block reward. On the other hand, to cash out the block reward, you'll wait 100 blocks, by when the price of bitcoins will drop, and you'll be at a massive loss. In addition, if you have that much of a hashpower you'd want to continue mining for a long time. That means even more loss due to the change in the value of bitcoins.


I accidentally used BTC xpub key to generate HD wallet addresses for BCH, can I recover funds?

The answer, surprisingly, is yes. You need to change the derivation path of your BCH wallet to that of a BTC wallet m/0'/0'/0 and it will generate the necessary private keys.


where do the timestamps on blocks come from?

A miner applies their own timestamp to a block.

Nodes add the first block they receive to the top their chain. They will not replace the current tip of their chain with a newly received block just because it has an earlier timestamp.

Therefore, you can think timestamp is a rough indicator of when the block was formed by the miner.

From bitcoin.it/wiki/Block_timestamp:

  A timestamp is accepted as valid if it is greater than the median timestamp of previous 11 blocks, and less than the network-adjusted time + 2 hours.

So I suppose a miner can insert a "fake" timestamp, insomuch that it is between these two bounds. Nonetheless, a "fake" timestamp will not influence its position in the blockchain.


How to generate html with coverage data?

Okay, I figured that out.

After you run tests, you will see a bunch of *.gcno files. Then, do:

# better to work in a separate dir
mkdir cov && cd cov
lcov -c -d ../src -o cov.info
genhtml cov.info

And open index.html cov dir.


How can I run Bitcoin Core with the -zapwallettxes option in Windows OS

First always backup your wallet.dat prior to actions then

Try running

"C:\Program Files (x86)\Bitcoin\bitcoin-qt" --zapwallettxes=1

or

"C:\Program Files\Bitcoin\bitcoin-qt" --zapwallettxes=1


How to setup testnet-in-a-box on Mac OSX?

Yes, run bitcoind instead of bitcoin.

If bitcoind isn't working, but bitcoin-qt is working, then do this instead:

bitcoin-qt -server -datadir=1
bitcoin-qt -server -datadir=2

This will only work if you run the commands from inside the testnet-box folder.  Alternatively specify full path names to the 1 and 2 folders: datadir=/home/chris/testnet-box/1 etc.

You need to download the testnet-box.zip file and extract it.  That will make you the two folders 1 and 2.  Both folders have testnet blockchain files, a wallet, and a bitcoin.conf.

Folder 1's bitcoin.conf says:

rpcpassword=123   # Set this yourself.
noirc=1
testnet=1

so it will run a testnet instance, not connect to IRC, and set the password to '123' for RPC connections.

Folder 2's bitcoin.conf says:

rpcpassword=123   # Set this yourself.
noirc=1
testnet=1
rpcport=19332
nolisten=1
connect=127.0.0.1:18333

which is the same as the other except that it listens for RPC connections on a different port, doesn't listen for incoming P2P connections at all, and only connects to the other instance.

There shouldn't be a port conflict.  The first will be listening on port 8332 for RPC connections and port 18333 for P2P connections.  The second will be listening on port 19332 for RPC connections, and not listening for P2P connections at all.

Note: if you're running the 0.6.0 release candidate, the nolisten=1 in node 2's bitcoin.conf won't work.  You'll need to change it to listen=0 due to a bug I found and reported while researching this answer.


Please help me to solve unconfirmed transaction

Patience grasshopper!  According to 21's block confirmation estimator with your 10.21 sat/byte fee your tx will likely confirm in the next ~3-32 blocks.  For future reference though, if you would like to add a higher fee check into using recently added RBF (Replace By Fee) functionality that was recently added to bitcoin core and multiple wallets.  Here is a bitcointalk thread that discusses this at length for numerous wallet clients:
https://bitcointalk.org/index.php?topic=1802212.0


How to know the destination address of a multisig?

The website displays the scriptPubKey of the first output as if it was a P2SH (more commonly used for multisig), but it's not.
This is a bare multisig. As another explorer example, Esplora displays it more accurately (there is no address for this Script type).
The addresses field of getrawtransaction (and a few other commands) output will for bare multisig outputs give you the P2PKH address of each of the key used in the multisig.


How to setup bitcoind 10.2 for solo mining on LAN with Bitmain S3

Bitcoin Core doesn't directly allow for stratum miners to connect, you need a middleman proxy to translate the two mining methods used by Bitcoin Core and cgminer on the Antminer S3. This is simplest with bfgminer.

Run BFGminer on the same computer as Bitcoin Core with the following configuation, it won't need any further settings altered or configured (it gets the RPC password automatically on launch).

bfgminer --stratum-port=3333

BFGminer will launch, and retrieve the information needed for solo mining.

Now using coinbase address 1PkNBPBGEmvoMFbwRT5ky3XXVNstJnJ4c1, provided by pool 0
Network difficulty changed to 49.4G (353.6P)
Pool 0 http://localhost:8332/#getcbaddr#allblocks alive
Long-polling activated for http://localhost:8332/#getcbaddr#allblocks (getblocktemplate)
Added local bitcoin RPC server on port 8332 as pool 0
Probing for an alive pool
Pool 0 http://localhost:8332/#getcbaddr#allblocks alive

You're now ready to solo mine against Bitcoin Core, you just have to point your antminer at the IP address of the computer running BFGminer, and the miner should show up in the top section of BFGminer with its hashrate showing as "PXY" (stratum proxy). Any blocks will be paid out to the coinbase address shown in BFGminer, which is a new one generated from your wallet.


Does Satoshidice benefit the wider Bitcoin ecosystem?

There is value added by this service:

  Over the past 15 years, downtown Las Vegas has seen its slot machines
  tighten from a 1996 average of 4.8 percent to 2010’s 6.4, a “cost”
  increase of almost 32 percent. That means, on average, players see
  fewer jackpots and spent less time on their machines. In short,
  they’re not getting a lot of bang for their slot buck.

http://weeklyseven.com/news/2011/march/17/loosening

Online wagering can be a little lower house edge, but rarely will you find a house edge of just 1.5% like SatoshiDICE offers and the 1% that BitLotto offers.  Here's some background:

http://www.beatingbonuses.com/slotgames.htm

To play SatoshiDICE you need bitcoins, so that means there will be additional activity at the exchanges (both in purchases of bitcoins and cashing out by those who lady luck was nice to).  The player base won't be just existing bitcoiners as this payout level is such an attraction it will spread by word of mouth -- or virally even.

Most Bitcoin software, websites, documentation and media or press has been for an English-speaking audience.  With translations for multiple languages, Bitcoin will reach for the first time many users who would not otherwise learn of it.

Of course, every bitcoin that is held by a SatoshiDICE gambler is a bitcoin that is not sitting in a trader's wallet, waiting for the first hint of a selloff before it gets dumped (i.e., volatility is lower when the coins are not concentrated as much primarily with those speculating.)

After reaching a level where using Bitcoin becomes comfortable, those gambling at SatoshiDICE might find other goods and services that their bitcoins are useful for instead of just cashing out.

Additionally, with this unprecedented success for a Bitcoin startup there will be competition.  The technique employed by SatoshiDICE (payouts using same coins as the wager, thus can be paid out using 0/unconfirmed) is novel but easily replicated.

SatoshiDICE is a for-profit venture, and a chunk of those profits will likely be reinvested back into that business (perhaps building a mobile app for it, as an example), and/or other Bitcoin-related endeavors.

The blockchain pruning feature was something Bitcoin's developers hadn't had as top priority but with this level of growth and added data to the blockchain that may become top-of-mind.  This may be a feature that will help Bitcoin and SatoshiDICE might be responsible for having it occur sooner than it might otherwise have.

For Bitcoin, SatoshiDICE has win written all over it!


How Crypto Payment Processors Handle Wallet Balance Privacy?

First of all the initial assumption is incorrect. Just because you sent coins to one of my addresses doesn't mean you will see my whole wallet. My wallet software may incorporate those coins in a transaction but it may or may not include all the other unspent coins in my wallet. It'll select unspent coins according the amount I wish to send and incorporate only the ones needed to meet that amount.

The second thing is that it's hard to tell from the blockchain which addresses are part of my wallet and which ones aren't. So for example you may not be able to tell which outputs are change and which are intended for the recipient.

As for bitpay they generate their own addresses and don't ask you for your MPK. To get paid you have to initiate a withdrawal. They pay you in fiat if that's what you request or they send bitcoin to your wallet. They don't pay you after every transaction. Only the total amount when you ask for it.

Bitpay is totally regulated so you will have to comply with anti money laundering and know your customer laws.

There are no originating addresses in bitcoin. You certainly can't safely assume that sending money to the address where the transaction's inputs were previously sent is the same as refunding the sender. To refund the sender you ask them for their address.


Why does merely having Windows Media Player open double my GPU hashrate?

poclbm has not been set to alter the clock rate of your GPU. Windows media player is doing this when open and adjusts the system to what it requires.

If you specify clock speeds for your GPU via parameters or a separate application you can overcome this.

Theres a number of applications which effect clock rates on windows machines, flash player open within a browser reduces a single card of mine down from 400 m/hash to 350 m/hash.

cgminer is very easy to specify clock speeds and mine with, it adjusts them when you start the application (not when closing though).


How do hierarchical deterministic wallets work transaction-wise?

how does the system associate the balance from several transactions (allocated to different derived public keys) to the same bitcoin "account" or master public key?

The system must known the XPUB (often the master public key) for it to generate all of the addresses to 'watch'.
While we're on the subject of master public keys and privacy, there are many things that you can do wrong. Sharing your master public key (XPUB) is a bad idea, as the other party will be able to see all of your addresses. I've seen a lot of projects doing this, destroying your privacy basically.
BIP47, still a draft and not implemented, aims to solve this privacy issue and still offers the infinity addresses benefit of HD wallets.
But what you describe, the act of sharing a master public key and letting the CLIENT derive the addresses is bad and isn't the case in most systems. It's a lot more likely that the SERVER derives the addresses and keeps the master public key secret.
So, let's assume the following:

We have the public key through which all other new public keys (and thus new addresses) can be derived.

We have received one transaction on address 15.

We're bootstrapping a new node and doing an initial block download, and thus have processed 0 blocks.

We lost our previous wallet.dat file, so we don't have a single clue on which addresses we've received any money. We recover our wallet through the public key as described in 1.
At this moment the HD wallet doesn't really know on which addresses it has received any money, but to check if transactions belong to us it has regenerated a "LOOKAHEAD" of the first 20 addresses. Those 20 potentially used addresses get added to the keypool, all new transactions to these addresses belong to us.

A block gets processed with a transaction to address 15, this falls within our lookahead of 20 so we're able to pick it up. We regenerate more lookahead addresses once we've found a transaction to one of our addresses.
This lookahead is important, let's assume we took a lookahead of 10, we wouldn't be watching on address 15, only up to address 10. We wouldn't see our transaction. (note: this only applies if you've lost your wallet.dat, and recovered from seed)
BIP44 specifies the "address gap limit" to be 20.

Address gap limit is currently set to 20. If the software hits 20 unused addresses in a row, it expects there are no used addresses beyond this point and stops searching the address chain.


Generate cryptocurrency addresses on server

yes you will need a bitcoin core installed and fully synced and after you have that, you can use this php library to help you (i used this before i recommended to you):

https://github.com/aceat64/EasyBitcoin-PHP