What happens when NameCoins stop being generated? When Bitcoins stop being generated it won't be a problem: prices can gradually be lower. Namecoins, however, have a more-or-less set price, which is the domain register price. If Namecoins stop being generated, but people of course still want to register domains, what happens?

The Namecoin block reward is to be halved every 4 years, similar to Bitcoins. The fee to register a domain in Namecoin is set to decrease by the factor of 2 every two months, and later by a factor of 4.

As the price of registering a domain go down way faster than the block reward, there won't be a shortage of opportunities for registering domains. On the contrary, soon the price of a domain might be so cheap as to make them almost free. As Namecoins are destroyed though, eventually in the far future one might expect to run out of Namecoins, but with the price/reward ratio decreasing so fast, the project can become obsolete by then.

This seems to create a lack of balance of the Namecoin protocol that can be addressed in the future.

Probably the same thing will happen as with Bitcoin. So far about 3% of the generated coins have been destroyed. By now the price for name operations is fixed at 0.01NMC so the percentage of destroyed coins should decrease for a while. If there is a problem the system could be modified. IMHO the destroyed coins will be completely neglectable for a long time.


How can one embed custom data in block headers? Some mining pool admins put custom data in block headers, like prayers. How do they do that? Where can I see that data for myself?

When you generate a block, the generation transaction (the one that creates new coins) has an attribute called coinbase. It's a special value you can put anything you want in to make the block unpredictable to others (and this is good).

So, naturally, you can put text in this attribute, although most just put mining-related information that is not human-readable (nonce and extra-nonce).

You can read this coinbase by using a patched bitcoin node that can dump blocks, for example with the "dumpblock" or "getblockbyhash" patches.

Or you can just print every string in the blockchain database directly :
strings -n 20 blk0001.dat

Example for the 1st block:

Coinbase: 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

ASCII-translation:
ᝣᝣᝣᝣᝣᝣᝣEThe Times 03/Jan/2009 Chancellor on brink of second bailout for banks

This is what is used by the Eligius pool ; it puts prayers in this field.

The hacker was Dan Kaminsky, and he embedded this image in the blockchain.

This is right now just a technological curiosity, it has no known implication on the legal or technical aspects of Bitcoin. I haven't read his paper, but he must have used a modified miner that searches for hashes that begin with a preset prefix.

Let's clarify: Mining is the process of finding solutions (or hashes) to a cryptography equation. The first to find a solution gets to have his solution added to the blockchain - the permanent transaction record. What Kaminsky did was look for a particular kind of hash instead of just any random hash, that contains the embedded test. Once this was found (just a matter of running a miner for a long enough period), this specific solution, with the embedded text, was added to the blockchain.


Sendrawtransaction error on Bitcoin Core Version 0.16.0 I updated my bitcoin core to version 0.16.0, previously I was using v0.15.1.
I created an application to send some BTC using listunspent -> createrawtransaction-> signrawtransaction -> sendrawtransaction
I got this error on v.0.16.0 while using sendrawtransaction :

  64: non-mandatory-script-verify-flag (Signature must be zero for
  failed CHECK(MULTI)SIG operation)

But my app working normaly on version 0.15.1
What is actually going on on version 0.16.0 that makes my transaction error

I decoded my raw transaction, to see if anything is wrong, I am using BTC testnet

array:2 [
  "status" => true
  "result" => array:8 [
    "txid" => "261c30c9c167b079c45c5ea706617635eb477b9cb601b7c7addbd6fedc2c14d9"
    "hash" => "261c30c9c167b079c45c5ea706617635eb477b9cb601b7c7addbd6fedc2c14d9"
    "version" => 2
    "size" => 197
    "vsize" => 197
    "locktime" => 0
    "vin" => array:3 [
      0 => array:4 [
        "txid" => "d4fcae2238c7edde389c3e1d28ddd67570931c72982312fbae3292c6eb7b7620"
        "vout" => 0
        "scriptSig" => array:2 [
          "asm" => ""
          "hex" => ""
        ]
        "sequence" => 4294967295
      ]
      1 => array:4 [
        "txid" => "5e759bcccc5123e9fbad740b57a1571a5950e867619dfd4cbbe6786dd50ab054"
        "vout" => 0
        "scriptSig" => array:2 [
          "asm" => ""
          "hex" => ""
        ]
        "sequence" => 4294967295
      ]
      2 => array:4 [
        "txid" => "d1be0d65d5338c9bc4b51b14f6adee7f88e56d0f9625c92646e16aa86e7c6a71"
        "vout" => 1
        "scriptSig" => array:2 [
          "asm" => ""
          "hex" => ""
        ]
        "sequence" => 4294967295
      ]
    ]
    "vout" => array:2 [
      0 => array:3 [
        "value" => 1.0
        "n" => 0
        "scriptPubKey" => array:5 [
          "asm" => "OP_HASH160 7ba3562975f6203987c03b40dd84e010948af2e4 OP_EQUAL"
          "hex" => "a9147ba3562975f6203987c03b40dd84e010948af2e487"
          "reqSigs" => 1
          "type" => "scripthash"
          "addresses" => array:1 [
            0 => "2N4WxmhixnDF6x2gmJSjgoX28RMSd6oCaMr"
          ]
        ]
      ]
      1 => array:3 [
        "value" => 6.01032205
        "n" => 1
        "scriptPubKey" => array:5 [
          "asm" => "OP_HASH160 b449a4b595e856c16eba7d7168ac5fdcc552fbbf OP_EQUAL"
          "hex" => "a914b449a4b595e856c16eba7d7168ac5fdcc552fbbf87"
          "reqSigs" => 1
          "type" => "scripthash"
          "addresses" => array:1 [
            0 => "2N9gVqeSJnLKPGRJJa2gKXUPy5bT331sxNo"
          ]
        ]
      ]
    ]
  ]
]

I encountered the same issue, to resolve I resorted to starting the bitcoind daemon using the following flag:

  -deprecatedrpc=signrawtransaction

I am now looking for a better solution.


How can I get my node listed on Blockchain.info's connected nodes list? We are running bitcoind on our server and its blockchain is synchronized with the network. Do we automatically become a node and get listed on http://blockchain.info/connected-nodes, or is there something we have to do to be seen by the network?

Running BitcoinQT or bitcoind you are a full node in the Bitcoin Network - you receive and transmit Blocks and Transactions. Even better, if you have port 8333 open on your router and machine, other peers can connect to you which is also very useful for the Network.

To be listed as a node connected to blockchain.info, you need to connect to their client (with a specific runtime parameter for example, or by chance). I am not aware as to what IP they are using. However, you don't need to be connected to blockchain.info to be a node - being connected to anyone else on the Network using the standard client makes you a node.

A Swiss University became a supernode, and I think that was by actively connecting to a number of sources that also ran BitcoinQT on their servers. However I don't know how many connections would classify you as supernode. I don't think there is a specific definition. Just actively connect to a number of sources and it should show you as supernode in the stats.


What would happen if two public keys had the same Base58 hash? If two different public keys had the same Base 58 hash, what would happen?

Could one key spend money in the other account?

What would happen to the monies received by the shared base58 hash?

Then both of the people could spend the same coins if they were sent to their Address, rather than public key. If they instead received the money to the public keys, they couldn't spend eachother's coins.

All in all, the most important thing that would happen is that they would show RIPEMD-160 collision, which would most likely be the first one ever. A pretty improbable sight.

what about base58decode check of these 2 public key:

1KomSnwag47Eo6WKudN8YUbXyzPL1k5pzV
mzKijr2ZV5YVaCywdCLWNPorqyz2uZquRr

which is:

ce4a7fb892a72619d0f86fa33bff65f1057edef5


What date does the 2016 halving happen at? When does the 2016 halving happen? Is it a predicted date or could it be when network load is achieved?

The first block with the halved block subsidy is 420,000. However, blocks are discovered in a random process – whereas the protocol aims to have blocks found approximately every ten minutes, in effect blocks are currently found about every 8.94 minutes. Therefore, one can only estimate the precise arrival of the Halving:

thehalvening.com estimates 2016-07-10 – 10:24 UTC
bitcoinclock.com estimates 2016-07-10 – 05:39 UTC
bitcoinblockhalf.com estimates 2016-07-10 – 10:10 UTC

It's not clear from the sites whether they rely on the current measured block interval or the theoretical ten minutes for their estimates. So far, it seems to me that the time has mostly been overestimated, earlier predictions were for later in July.

It seems therefore likely to me that the halving will occur on the 8th, 9th or the 10th of July. Naturally, any predictions will increase in accuracy as the halving draws nearer.

Approximately 10 Jul 2016 13:00:33.

The Bitcoin block mining reward halves every 210,000 blocks, the coin reward will decrease from 25 to 12.5 coins.

Total Bitcoins in circulation:  15,649,450

Total Bitcoins to ever be produced: 21,000,000

Percentage of total Bitcoins mined: 74.52%

Total Bitcoins left to mine:    5,350,550

Total Bitcoins left to mine until next blockhalf:   100,550

Bitcoin price (USD):    $644.48

Market capitilzation (USD): $10,085,757,536.00

Bitcoins generated per day: 3,600

Bitcoin inflation rate per annum:   8.76%

Bitcoin inflation rate per annum at next block halving event:   4.09%

Bitcoin inflation per day (USD):    $2,320,128

Bitcoin inflation until next blockhalf event based on current price (USD):  $64,802,464

Total blocks:   415,978

Blocks until mining reward is halved:   4,022

Approximate block generation time:  10.00 minutes

Approximate blocks generated per day:   144

Difficulty: 196,061,423,940

Hash rate:  1.47 Exahashes/s

Keep up-to-date here:-

http://www.bitcoinblockhalf.com/


What portion of the mining process does an ASIC perform? If ASICs were described as a black box, what would their inputs be?

Obviously, the actual hashing, the churning of the SHA-256 function is performed by the ASIC. Also, they must of course be able to tell when they have succeeded, so they must have a mechanism to store and compare the target to their result.

Yet, how much of the pre-processing steps do ASICs perform? I would assume that they increment the nonce, as it is raced through in less than a second and perhaps the extra nonce? Can they change the timestamp? Do they manage the complete block header? How much of the block header do ASICs vary by themselves?

Do ASICs assemble their own blocks?

TL;DR: ASIC input/output is the bold text below.

No, the ASIC does not assemble a block.

The block is assembled by a mining pool server. If you are solo mining you could let bitcoind assemble the block but you'd still need mining pool or proxy software in between to make a modern ASIC machine (stratum only) and bitcoind (getblocktemplate only) communicate.

Modern ASIC miners have a small computer built-in, acting as a controller. Some use a beaglebone. This is a low-performance computer which handles the stratum protocol, generating work, pushing work to the ASIC chips in the machine, and receiving results from them. The ASIC chips only handle the part of the number crunching that must be repeated many billions of times.

When the miner receives data over the stratum protocol it is allowed to change the nonce, the timestamp and part of the coinbase (often called the extra nonce). An ASIC chip goes through all possible nonce values pretty quickly, so the controller needs to be able to make more work using the extra nonce.

When the controller changes the extra nonce it needs to generate a new hash for the coinbase transaction (which has now been modified) and use this hash together with a merkle branch received from the pool server to generate a new merkle root. This merkle root goes in the block header.

After a merkle root is generated the controller can now calculate the midstate. The bitcoin block header is 80 bytes. SHA-256 hashing is done in chunks of 64 bytes. Since the interesting parts which we are going to change are not in the first chunk the controller will hash the first chunk once and then the ASIC chip will do the rest billions of times while changing the nonce in the second chunk each time. The midstate is the state of the SHA-256 hashing engine after the first chunk has been processed.

So the input for the ASIC chip is the midstate (32 bytes) and the 16 bytes of the second chunk (last 16 bytes of our bitcoin block header). The outputs are nonces (4 bytes) that resulted in hashes below the target. These nonces are retrieved by the controller and passed on to the pool server.

So what are those 16 bytes of data the ASIC chip needs in addition to the midstate? These 16 last bytes of the bitcoin block header are the 4 last bytes of the merkle root, 4 bytes of timestamp, 4 bytes of "bits" indicating current bitcoin target/difficulty, and 4 bytes of nonce.

In reality the ASIC doesn't need to receive a 4 byte nonce from the controller. It is going to try different nonce values on its own. So we are left with this:

The inputs to the ASIC chips are a 32 byte midstate, the last 4 bytes of the merkle root, a 4 byte timestamp, and 4 byte "bits" (target/difficulty).

If I managed to explain the above properly then you should now see why the ASIC chip is focused on this specific part of the work. For each time the work up to completing the midstate is done, the work after that point is repeated billions of times.

You can also see that generating a new midstate (which also entails generating a new merkle root) is a lot more work than just incrementing the timestamp. So once you have enough midstates to keep the ASIC chips happy for one second, you can reuse the same midstates over and over every second just by incrementing the timestamp. If the controller is slow enough and the ASICs fast enough then this "time rolling" may be necessary for the machine to work.

The slowness of the controller can also mean that the ASIC machine has a minimum difficulty it can operate on. Otherwise it will get more results (nonces) than it can handle. But the same thing goes for the mining pool server which would also not want to be spammed to death.

For maximum efficiency the ASIC is designed to only handle a limited area where expensive specialization really pays off, while the rest is handled by a tiny computer that is very cheap and very energy efficient.

Note: there are of course some differences between manufacturers. For instance some ASIC chips do not scan the entire nonce range. But the above should be the gist of it.

ASIC only does the most performance-expensive thing. It solves the block.

Everything else like preparing the block, checking payments, sending the solution to others, can be done by a standard computer.


Proof for "Is an immutable, decentralized blockchain possible without economical incentives?" Bitcoin is immutable because of economical incentives. Those who are able to 51% the network can't do it, because it'll result in the value of the currency to drop tremendously, which causes waste of a lot of money as there's a 100-block limit to spend coinbase transactions. Those who aren't miners having large capital to attack the network can't turn on a considerable amount of miners at once as it's not a PoS coin.

What I'm asking is "Is there any proof that a decentralized consensual blockchain can't be immutable without economical incentives?"

Bitcoin is immutable because of economical incentives.

Behind every full-node and miner is a human operator making a decision or choice to carry the cost of running such an operation.

Security from decentralisation can only exist if users wish to use and validate Bitcoin, because it cannot be easily censored as centralised systems. Security (Immutability) from confirmation (PoW) can only exist, if it is paid for (by fees).

Individuals will make choices which improve their situation. The system can only work if it supports this and is reflected in the incentives for all participants.

  Those who are able to 51% the network can't do it, because it'll
  result in the value of the currency to drop tremendously, which causes
  waste of a lot of money as there's a 100-block limit to spend coinbase
  transactions.

There is no clear incentives that prevent a 51% miner from double-spending or censorship. A double-spend may reduce the value of Bitcoin, but whether it is profitable for the miner (in let's say USD terms) will also depend on the double-spent amount. A 51% selfish miner who censors blocks, may benefit financially from doing so by diverting Bitcoin transactions to another domain which can be taxed by the miner.

However, user's can offer higher fees if their transactions are being censored, thus incentivising new mining hash rate to join the network and dilute the previous 51% miner.

  Those who aren't miners having large capital to attack the network
  can't turn on a considerable amount of miners at once as it's not a
  PoS coin.

Capital can always be reallocated to mining, but they need an incentive to do so. If users pay higher fees, this can incentivise new hash-power to come online, and dilute the former 51% miner. Users will only pay higher fee's if their transactions are not being confirmed (being censored by 51% miner).

Is there any proof that a decentralized consensual blockchain can't be
  immutable without economical incentives?

https://en.wikipedia.org/wiki/Conservation_of_energy


Why is my transaction not getting confirmed and what can I do about it? I sent a transaction

without (or with an exceptionally small) transaction fee
using extremely small or unconfirmed inputs
while the stars were not standing right.

For whatever reason, I have been waiting forever for my transaction to confirm.

Why is it taking so long for my transaction to confirm? What can I do to speed-up the transaction’s confirmation?

This is a canonical question serving as a lightning rod for the flood of "unconfirmed transaction" questions we are experiencing lately. Please provide a detailed and broad answer to serve a wide range of these questions.

How Bitcoin Mining Works

Bitcoin transactions are mined (processed) by Miners, and Miners want to benefit from their work. By mining transactions with higher fees, they make more money. Some miners can decide to mine all transactions no matter the fee but they still must compete with every other financially motivated miner.

Why is it taking so long for my transaction to confirm?

If you have sent a transaction

  without (or with an exceptionally small) transaction fee

expect it to be ignored for an unknown amount of time until a miner decides to process it and solves the block; this could be several days to several weeks, possibly never. Your wallet and any Bitcoin node will show it as unconfirmed, your transaction is stuck in limbo.

Block sizes are limited, which means that only a limited number of transactions can be processed in a certain timeframe. In the beginning of bitcoin, there was lots of free space in each block because there were not many transactions. However, now that Bitcoin is quite popular there are more transactions than can be processed into the current block. This is why transaction fees have increased, and as long as someone is still willing to pay more they will keep increasing.

What can I do to speed-up the transaction’s confirmation?

Nothing. The next best thing is to cancel and resend the transaction.

Make a note of the individual bitcoin address(es) that the unconfirmed transaction was sent from.
Run Bitcoin Core with the -zapwallettxes option (or wait a few days until your wallet stops broadcasting the transaction and it falls out of the global transaction mempool). (Issue with mempool.dat resolved by #10330 in 0.15.0).
Send all your bitcoins from the addresses recorded in step 1 to a new address with the recommended or higher than recommended fee.
Make original transaction again using the recommended fee.

What to watch out for

Sites that claim to "speed up your unconfirmed bitcoin transaction". From personal experience, these sites are either scams or just don't work.
DOUBLE PAYMENTS. If the addresses used in the original transaction have sufficient bitcoin in them to cover the transaction, it can always be completed at a later date. To avoid this, follow step 3 to empty the associated addresses and do not reuse them.

What is the recommended fee?

Transaction fees vary by the size of your transaction, and not all transactions are the same size. The fee for same sized transactions also depends on how busy the bitcoin network is at the moment.
An estimate (at the time of original post) was between 11-20 satoshi/byte (0.00011-0.00020BTC/kB) but now can be much higher.
Most wallets have a feature which dynamically calculates the rate based on network congestion.

See https://bitcoinfees.earn.com/ for a live chart of suggested transaction fees

There is currently a backlog of unconfirmed Bitcoin transactions and typically only the transactions with the highest fees will be confirmed until the backlog clears.

  Any Help????

You have a few options:

Submit your transaction to the ViaBTC Transaction Accelerator
If you control either of the receiving addresses, send a new transaction from one of them with a much larger fee, encouraging a miner to pick up the whole chain of transactions (Child-Pays-For-Parent).
Wait. The transaction should be either confirmed or removed from the memory pool within about 72 hours.

Here is a good fee estimator for future transactions: https://bitcoinfees.earn.com/


Trezor Custom Mnemonic How do I go about using words I pick in a trezor seed? I only want words that I select and in an order I select.

I'm not worried about this being a less secure way to generate a seed. I will be doing all this off line with a disposable computer if necessary. I want to use a custom word list in conjunction with some custom math that with generate the correct order of my seed.

I have yet to find a way to do this with my trezor. I personally think that my backup seeds are safer in my head then on a piece of paper.

I tried generating public/private keys with a custom mnemonic with custom words. Didn't work.

I tried generating public/private keys with a custom mnemonic with a word list generated from myTrezor.com (A-Z, excluding X, approximately 10 words to choose from per letter)[I did this by typing in each letter and copying the choices from the drop down] Didn't work. [Error: Action was interrupted Invalid mnemonic, are words in correct order?]

Shouldn't a valid public/private key pair be generated regardless of the words I pick and the order I put them in?

That's pretty easy! Just try the steps here:

Open the wordlist.
Choose 24 words
Go to mytrezor.com, press "Trezor recovery" and type the words you chose.
Don't forget to write down your words to somewhere.

If you simply need to seed your trezor with your own mnemonic seed then here is a simple walkthrough on how to do it:

https://doc.satoshilabs.com/trezor-user/recovery.html


How to remove unconfirmed, non-existent transaction from QT wallet I transferred 10 btc from my Coinbase acct to my wallet.  The transaction appears twice in my wallet, one went right through and confirmed within minutes, the other has 0 confirmations (after 2 weeks), and the transaction ID does not show up on blockchain.  So I got my bitcoins, but now I have this "phantom" unconfirmed transaction in my wallet.  How do I get rid if it?

The command line option is -zapwallettxes

This will clear unconfirmed transactions from your wallet.

See https://en.bitcoin.it/wiki/Running_Bitcoin

Try doing a rescan. start the client with -rescan

That parameter will tell the software to scan the block chain for missing wallet transactions.


Why does my wallet say that I have 0.00BTC and 8.91 unconfirmed, when I had done nothing with them? Here is my BTC wallet page. Is it normal that I have 0.00 ?

Once your client finishes downloading the block chain then everything should show as confirmed.

When you first received some coins, especially if they were mined rather than transfered, you cannot go and immediately spend them - for security reasons, you're foced to wait for a number of blocks. Once your coins have appeared in all those blocks then you can indeed go and spend them.

E.g. for Primecoin, should you receive some coins you just mined, you have to wait for 2 days before spending them. If they were transferred to you by someone else, you just have to wait for 3 mins (3 blocks). Likewise with other coins.


I ran out of space while synchronizing, how do I get my private keys & find my balance? OK, my most immediate concern is that I made three ~$500 bitcoin purchases this weekend and downloaded the Bitcoin-Qt client, but ran out of HDD space just before it finished synchronizing the BlockChain, and now I don't even know what my BTC balance is, if my value is lost, or what.

Now I don't know what to do.

I was at least bright enough to have made a screen print of the three bitcoin addresses from the client and also of my BitInstant orders (while they show the destination address and $ amounts paid/recieved, they don't list the amount of bitcoin I assume and hope that I received), but I can't find my private keys in the client, though it appears that I am able to Send Coins from the tab of that name.

I don't even know what my total amount of bitcoin is since Bitcoin-Qt hasn't finished synch-ing up, and I'm just sort of stuck without either bitcoin or fiat since my HDD is down to only ~200MB left with 1,746 blocks remaining.

What should I do?

I read that the Multibit and Electrum wallets seem to need less computer resources, so I was thinking/hoping that I could maybe transfer my bitcoin to one of those wallets, or maybe to the StrongCoin online wallet or other secure recommendation as an interim step, but I don't even know the precise quantity of bitcoin that I should have in my bitcoin addresses, or if I can even send them without knowing my private keys.

If you know what bitcoin address your bitcoins are coming to (and you should know if you expect to get your bitcoins), you can lookup balance on blockchain.info like this:

http://blockchain.info/address/your-address

replace your-address with your actual bitcoin address, for example here some random address i found:

http://blockchain.info/address/1LNx3azmdKyH43UsJ6DK9oUrTbkPUr6UJg

So you bought $1500 worth of Bitcoins, before you had a place to store them? I think most exchanges require a wallet address before exchanging USD/BTC, so not sure how you did that.

If somehow you have BTC coming to the Qt wallet that has/can not downloaded the blockchain, your S.O.L. until you get that blockchain. You need that chain for your wallet to even realize it has BTC in it. I don't think it will generate addresses before it has the blockchain... (might be wrong).

So it looks like you need to start deleting stuff from your HDD to make room or loose $1500....

Or you can have the BTC sent to me, I am a great escrow until that wallet gets the chain....


Validation methods beside POW etc Are there other concepts for the validation of the next added block to the blockchain beside POW, POS etc.?

Of cource there are, but is there a methode that is shining out of the mass?
A methode that can be a future mechanismen better than the current ones? That needs alot less electricity etc. to validate blocks?

None that is secure in a decentralized environment. Only PoW is secure.


What percentage of Bitcoin use is legitimate? I wasn't able to find actual data on this. I'm under the impression that

the majority of transactions represent ownership transfer between investors, traders and exchanges
the majority of remaining transactions represent purchases of goods and services
the majority of purchases made with Bitcoin are for something illegal

It's very easy to see why someone would want to buy drugs with Bitcoin. It's not easy to see why someone would want to buy coffee with Bitcoin. If I want to buy coffee with Bitcoin, isn't it easier to first exchange that Bitcoin into fiat currency, and pay for coffee with that?

Does anyone have any data regarding what percentage of Bitcoin use is legitimate?

Silk road wallet hold 144,000 Bitcoins. It had 1,2B USD in annual volume. This was 2014.

Since then darknet markets have flourished. See Measuring the Longitudinal Evolution of the Online Anonymous Marketplace Ecosystem.

This is mostly for illegal drug related and other purely criminal activity like payment fraud (stolen credit card). This does not include ransomware bitcoins (1B USD). This does not include e.g. bitcoins involved in tax evasion and asset hiding. This does include bitcoins lost in exchange hacks or stolen from exchanges. Furthermore, most peer-to-peer and remittance trading could be accounted as money transmitting business and against local regulations.

Bitcoin transactions are not very useful in casual purchases, thus there has been little mainstream consumer adoption. Bitcoin shines in anonymous online payments and most day-to-day and/or point-of-sale payments don't require this level of anonymity or the complexity it brings along with it.

Legitimacy is subjective, and varies legally from place to place.  Even if we establish a clear and agreed upon definition, blockchain analysis is not good at telling us what was purchased with a transaction or why a transaction was made.  A transaction paying for drugs online will look the same as a transaction paying a friend back for lunch.

I do not think that it is simple, or perhaps even possible, to determine how much Bitcoin usage is for illegal purposes.  Perhaps you should look into how studies are performed on the size of black markets using traditional currencies.  I don't see why it would be different for Bitcoin.


Why is the nonce bruteforced from 0 to n while mining? bitcoin noob here.

I was wondering why is the nonce increased from 0 to n while searching for a blockhash?

Why not start at some other integer > 0 for example?

My background is in ethereum-dev, so I know why the nonce needs to change, but I don't get why from 0 to n?

Thanks in advance.

It doesn't matter which nonces you test or in what order that other than you need to avoid testing the exact same block header twice (since that would obviously be a waste of time).

It's useful to test all the nonce values since if you don't test them all you will need to update extranonce more often, though not critical.

Even though miners increment their nonces in similar ways this doesn't result in the duplication of work between miners: there are a myriad number of differences between the candidate blocks miners attempt, foremost being where their reward is paid. (And pooled miners that happen to pay to the same place get different extranonce ranges assigned by the pool).  As a result there is never any work duplication across miners unless something is embarrassingly broken.

Starting at 0 and incrementing until the maximum value is simply a convenient way to change the nonce that cannot duplicate and minimizes extranonce updates. Many devices assign distinct ranges to different chips, and so don't simply increment in a simple 0 to 2^32-1 manner.

A mining device could save a negligible amount of power by changing using a linear feedback shift register instead of an adder, but no one seems to have bothered with that optimization.

Why not start at some other integer > 0 for example?

Why would you? Going from 0 to n where n is the maximum possible value means that the miner will search through all possible values for the nonce. Starting anywhere else and going to n means that some nonce values will be skipped, which means that it is possible to miss the nonce value that will get you a block.

If you wrap around back to 0 when you reach n, then that is no different from going from 0 to n. It's just harder to implement. Going from 0 to n is the simplest to implement and guarantees that you will search through all possible nonces.


GUI miner not working properly (slush's pool) I'm trying to mine for slush's pool with GUIminer. The miner says that I am mining, and gives me a mhash number, but says that no matter how long I mine, I still have 0 shares.

The pool says that I have no mhash input to the pool.

Thanks in advance, bark

I agree that you really don't want to be mining with your cpu.  If this was with your gpu and this was happening, your debug output would probably involve a "check your hardware" error like the one many people got from the newest AMD SDK.  That is fixed by rolling back drivers to the best compatible set.

You should look at the console by going to the menu bar: View > Show Console.  Click the tab that pops up named Console and perhaps post a screenshot of that.

Try setting the server as "other" and typing in stratum.bitcoin.cz as the host and 3333 as the port.


What is the difference between a miner and a full node? I have trouble finding the difference between a full node and a miner. It looks like these two names are used interchangeably which I think is not entirely correct. Miners do process blocks and full nodes verify if transactions which has been packed in the block by miners are all valid. Some can run a full node without running the mining software.

I know a lot of people who think that miners and full nodes are one and the same.

Thank you for your help.

A 'full node' is a participant on the network that has independently validated the complete copy of the blockchain, and thus has verified all transactions since the beginning.  This requires about 350GB of drive space (currently).
A pruning node is one that has verified all prior transactions; however, it has deleted all blocks below a certain space requirement, but still has a copy of the UXTO set.  It's less useful to the community, but is useful to the node's owner, and takes less resources on the computer (can be under 1GB of drive space).
A miner on the other hand creates blocks in the blockchain which the nodes keep.  Basically, the miner adds transactions to a block, with the goal of creating a new block with a valid hash that will be accepted by the network.    Miners spend about 10 minutes working on a problem, but nodes keep that result forever after in the database and verify it with others.  Miners don't need to know about prior blocks (except for the prior one) with very few exceptions.
So, a miner is completely different than a full node.  It's not comparing the same like things.  Full vs Light is comparing two like things - fruit (apple and orange).  Miner vs FullNode is comparing two totally different things (apple and fence).

The difference between full-node and pool-/mining-node is the same as between bald and hairy man. Bald has zero hairs. Full-node has zero hashrate.

For me - there is no difference. Both bald and hairy are humans.


Can I "duplicate" a wallet using a backup phrase (12 words)? My understanding is that a wallet isn't a wallet at all*, it doesn't hold my coins, but its a key store; my coins are of course "stored" as records of the events on the blockchain.
Imagine I have bitcoins with Cloud Wallet Company (A), but I then setup Wallet Company (B)'s app. And let's assume they both use the same crypto algos to compute the seed from the 12-word recovery key, as per this answer.
Is the "recovery phrase" generated by a wallet app platform independent?
If I login to (B) and choose to import/recover my wallet and punch in the 12 words I got from (A), would I effectively now have two wallets? i.e. both (A) and (B) are setup with the same wallet.
Where is my balance stored? After entering my 12-words into (B) would their servers have to "run a query" on the blockchain to aggregate all the transactions and arrive at my balance??
And if I send from (A) to a friend's wallet (Z), would my reduced balance also show on (B)? Or would (B) cache my balance to avoid expensive query/compute from the blockchain, and so it would become out of sync?
Thanks!!
*Maybe I'm wrong but I think the wallet analogy only confuses noobs, since it sets up a mental model that's the opposite of the whole point of a blockchain.

Can I “duplicate” a wallet using a backup phrase (12 words)?

Yes

Where is my balance stored?

Both wallets will scan the relevant parts of the public  transaction-journal ("blockchain") to add up the amount of money controlled by the keys derived from your backup phrase - this total is your balance.
Wallets are very likely to store this total locally, as a convenience, so they don't have to re-scan the blockchain and add up the total all over again every time the wallet is opened. Exactly where and how this number is stored is likely to vary depending on the software used. The storage of this total is of no real consequence.

if I send from (A) to a friend's wallet (Z), would my reduced balance also show on (B)?

Yes, both wallets will learn about new confirmed transactions that affect your balance.
Wallet A might show the transaction amount as pending until it receives a confirmation, a confirmation is just a new block appearing in the public transaction journal that either contains the transaction in question or which builds on top of such a block. Wallet B learns about the confirmation in the same way and will similarly notice that the block contains a transaction that affects an amount associated with an address derived from your backup phrase. The mechanism is the same for both wallets, Wallet A has no special privileges.
To elaborate a little:
As Murch noted in a comment, wallet A might have some additional information that doesnt get transmitted to wallet B. This is information which isn't transmitted to the rest of the Bitcoin network and which has no effect on validation of a transaction or on the mining process by which payments are considered to be confirmed. One example is if you choose to add a memo "payment for new trinket" to the transaction, this memo is not transmitted to anyone else and so is not known to Wallet B (or anyone else). It is also lost if you destroy wallet A and re-create it (e.g. by deleting an app and associated data and then reinstalling the app and using the old backup phrase). If your wallet A allows you to organise transactions into accounts, wallet B wouldn't automatically know about those accounts. Similarly, if wallet A is a Lightning-capable wallet, Wallet B wouldn't normally know about the lightning transactions that Wallet A made, only about the final on-chain settlements made e.g. when a lightning channel is closed.
However Wallet B should still normally show that same total as Wallet A for total amount of Bitcoins that the basic Bitcoin network and it's public replicated transaction-journal ("blockchain") consider to be controlled by private keys which are in your wallets A and B.

Not long ago by accident I noticed that I have the same wallet address with metamask open on two different browsers (chrome and firefox). I have not experimented anything in this direction but for a moment I had a few questions to which I would like to know the answer. Maybe it will add to your reflections. I only know that when someone from my metamask wallet was making a transfer of tokens to his wallet, in his metamask, nothing was visible in the activity, only after logging into etherscan I saw what was happening but it was too late. If it hadn't been for the etherscan email, I would probably have found out much later about the theft. Also, you probably will not change the synchronization with two wallets open at the same time, but try with two browsers or virtualbox.


How can I enable more GPUs in Ubuntu for poclbm? I have an Ubuntu set up (11.10) and 2 ATI Radeon HD 6870 cards. It detects one, but not the other for some reason when I try to run poclbm.

When I run lspci, it finds both cards.

Any help?

lspci lists PCI devices. ./poclbm.py lists OpenCL devices. If the former finds the device but the latter does not, your second GPU must not be registering as an OpenCL device.

Ubuntu 11.10 has a notorious reputation for multiple-GPU bugs. (See here and here.) I personally have had issues with 11.10 mining that were resolved simply by switching to another release. I would suggest you instead use Ubuntu 11.04 (Natty Narwhal); it is generally regarded to be the most reliable Ubuntu version for mining.

If that is not an option, or installing 11.04 doesn't fix the problem, try the following steps:

Uninstall whatever version of Catalyst/SDK you have (make sure to remove all configuration files) and install
Catalyst 11.6 and SDK 2.4.
Run aticonfig -f --initial --adapter=all again. Make sure it runs without errors.
Run aticonfig --list-adapters. You should see two.

Those steps should fix any configuration issues. If your problem persists, it's either a hardware issue (or an Ubuntu 11.10 issue).

Try not booting into graphical mode at all, just command line. Leaving compiz/gnome/gdm/drivers off should alleviate most confusion, as the cards should both be in default modes (and one in VESA/VGA) and for the most part will be untouched by system specifics (more like normal PCI devices)


Can double-spends be automated by malicious custom bitcoin clients? Say a malicious mobile bitcoin client is created, programmed to quickly send two or more double-send transactions whenever a payment is made.

Is this an attack vector we should be concerned of?
What could be done in order protect against such an attack?

What could be done in order protect against such an attack?

Wait for N confirmations before accepting a payment as successful.

If you try to spend the same coins twice, proper clients won't accept the block as valid.  Read rules 9 and 14 here:

https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages

Double-spend could occur if the transaction history forks, but forks don't usually last very long.  Having 6 confirmations after the transaction should be sufficient.


What would happen if the BTC price collapsed and the reward for mining dropped below the cost of mining? Miners will only mine bitcoins if the reward they get from mining outweighs the cost of mining it.
The network difficulty is adjusted every 2016 blocks (approximately every 2 weeks).
If the price suddenly collapsed by a large percentage such that the new minted bitcoins would be worth less than the electricity it costs to mint them, what would would happen?
The network difficulty rate would be stuck at the unprofitable rate until 2016 blocks are minted before it gets adjusted.

The block reward is composed of two parts, the block subsidy and the transaction fees. While the block subsidy is fixed respective to the height of a block, the transaction fees are a product of the blockspace market. If Bitcoin's exchange rate dropped precipitously, the profitability for miners would drop of course. Since each miner has a different situation, it would not be just one spot at which every operation suddenly becomes unprofitable, but rather a range, though.
As the exchange rate drops, some miners would stop mining. This would reduce the block cadence. Then, as transactions get processed more slowly, we'd see feerates of unconfirmed transactions go up as users vie to be included in the next block. Between the added revenue from transaction fees and the immense hardware investment miners have fronted, hopefully there would be enough incentive for some miners to continue mining. Then with the next difficulty adjustment, the difficulty would drop and mining profitability would increase again, likely causing some of the miners that had paused their operations to return.
Note that it would not take 2016 blocks for the first difficulty adjustment in most cases, as the exchange rate could drop at any point in a difficulty epoch. If the hashrate dropped significantly in the middle of an epoch, the first difficulty adjustment would likely not reflect the full drop, though.
You can see a similar effect around halvings: after the block subsidy dropped from 12.5 BTC to 6.25 BTC on May 12 2020, the difficulty dropped by 6.0% and 9.3%  in the two following adjustments.

In a world as it was initially (many independent decentralized miners) many miners competed against each other who would solve proof of work first. In that world to bring cost of reward down what was sufficient was just some miners stop mining that currency. That works for many crypto now, miners switch from one to another in response to "market" price.
But for Bitcoin as I understand there is one main pool controlling like 50% miners, such cost reduction way is not very efficient. So as I see in such circumstances cost of each transaction in BTC would go up.


Can a 51% attack be detected and dealt with? If someone got 51% hash power and started rewriting the blockchain from scratch (building a longer chain with a completely different history), could this be detected? Could "the honest users" revert such attacks?

Can such attacks be detected? Yes.

What you would see is a chain reorganization that invalidates a large (greater than three) number of previously-accepted blocks. The standard client will actually log this -- you'll see a REORGANIZE in the client's debug.log file. The client doesn't currently log the number of blocks invalidated by the reorganization, but that's a simple enhancement.

Can honest users revert such attacks? Sort of.

If a transaction you care about is in the set of blocks that was invalidated, you can always resubmit that transaction. Unless the sender issued a conflicting transaction as part of a double-spend attack, the transaction will still be valid. (The network will actually do this for you automatically. Miners don't want to miss out on the chance to grab the transaction fees associated with the undone transactions.)

As a longer-term solution, there have been proposals discussed to reject reorganizations that invalidate suspiciously large numbers of blocks such as four or more. The problem with these proposals is that under unusual circumstances (such as if a disaster partitions the Internet for half an hour), the network can permanently split with each side rejecting the other side's block chain as a suspicious reorganization.

Essentially, the client would have to go to a "lockout" mode if this happened and reject all transactions until some mechanism to find the real block chain could be implemented. (It could submit all transactions to both chains and consider only transactions accepted in both as confirmed!) One proposal uses a central authority to pick the real chain. This is an area where there is room for innovation.

One important point to keep in mind though: If the sender is not attempting a double-spend attack, you have nothing to worry about (other than the reduced usefulness of an unstable exchange network). You can submit the transaction to the block chain as many times as you need to until some block containing the transaction finally does win. Only the sender can create a conflicting transaction that would make you unable to get the transaction you care about into the chain.

Update: In fact, you can lose coins even if the sender wasn't attempting a double-spend attack. Suppose A sends B money and then B sends C money, if A successfully uses a double-spend attack to invalidate the transaction that sent the coins to B, the send from B to C can fail (because a conflicting transactions means B will never have the funds to spend) even though B was not attempting a double-spend attack.

There has to be consequence to the attacker, large enough for him to feel the blow of his own attack.

To create the consequence for him: The voter (trusted Node/Full Node) has to have bitcoin, and the more bitcoin the node has, the more voting power (more trusted they are). Example, if the attacker really wants to kill the whole bitcoin network, he has to have at least 51% of bitcoin in circulation. If a bitcoin network is worth $100 billion. He has to buy $50 billion worth of it. Try killing the network and he will lose his $50 billion. Yes, others will lose some little value, but he'll lose much more value, and we can start another cryptocurrency.

It doesn't have to be a linear 1 bitcoin = 1 voting power. It can be a function. like voting power = root2(bitcoin), or other functions.

The only problem with this is that most people will use a centralized node (because they're either using a light node and do not want to waste resources for full node), so their voting power may be centralized somewhere and can be used by the attacker to attack (assuming that more bitcoin = more voting power). The solution to this is probably applying a slowing function (like the root function) to limit their voting power. But then the attacker may use many small value wallet to undermine the big centralized wallet. (Everything in moderation tactic, too much or too little is not good) So we should as well lower the voting power of those who has very little bitcoin in their node - see picture.

So what happens to the node that doesn't have a bitcoin? It's going to be useless anyway because they will leech from the network. I'd say to assign no bandwidth and voting power at all to them since they're not using bitcoin anyway and only wasting network resources. perhaps let them be a low priority reference, just to make them a bit useful.

Same goes to the miners. we should assign similar function as in the picture. We don't want big miners to make the network centralized and in the end having too much power to ruin the network. Since the bitcoin community is by the people and for the people; That is the point of the whole decentralization thing, isn't it? So that we don't get bullied by the big power who wants to centralize everything. We definitely should limit the big power, as well as the useless people who don't use bitcoin and leeching from the network and slowing the real community as a whole.

See the picture below:

Can this help dealing with the DDOS attack as well?


How to answer to whether Bitcoin is a Ponzi scheme? I was asked whether Bitcoin is a Ponzi scheme as I was explaining Bitcoin. In support of the question I was presented with the following scenario. I didn't know what to answer.

  Let's assume Bitcoin started today and had no transactions and no customers. Tomorrow, the first 10 people ever buy into Bitcoin. The price at that time for one bitcoin is $100. So, 10 people bought in at $100 thus there is $1000 in the Bitcoin economy.
  The next day, the price of a Bitcoin doubles and goes to $200 per coin. Now again hypothetically, let's say ALL 10 of these people want to sell their Bitcoin and cash out. The math now says $2000 will have to be paid out.

How will this be handled as there was only $1000 in the system? I don't believe Bitcoin is a Ponzi scheme, but this particular equation does not add up. What am I missing here?

The Scenario is confused, because it assumes that there is only one side to a trade.
The scenario assumes that the money goes "into the Bitcoin economy" when people buy bitcoins. This is confusing, because it sounds as if there were only one side to the trade. You will find that the scenario doesn’t imply Bitcoin to be a Ponzi scheme, once you take a closer look at how trades happen.
People own bitcoins:
When Alice pays Bob $100 to buy one bitcoin, Bob is the new owner of the $100 and Alice is the new owner of one bitcoin. The money didn’t "go into the Bitcoin economy" – it went to Bob.
What changed was the Total Dollar Value or Purchasing Power of Bitcoin: People see that someone was willing to pay $100 for one bitcoin.
So, in your scenario that should rather be: There are currently 10 bitcoins in the system, and the spot price is $100. This gives Bitcoin a Total Dollar Value, or Total Purchasing Power of $1000.
There is no problem the next day either: When the spot-price increases to $200 per bitcoin, that means that one person, say Alice, was willing to sell for $200, while another, say Carol, was willing to pay $200 for a bitcoin. Apparently, Carol thought that bitcoin was undervalued at $100 and was willing to go higher with her bid. And who would blame Alice for selling her coin for a 100% markup in one day?
Now as described in your scenario, the other nine owners of bitcoins offer their bitcoins as well for $200 each. The question then is, whether there are enough buyers to support the price at $200. This boils down to a balancing of supply and demand: Perhaps, Carol wanted only one bitcoin. Then there will be nine offers to sell a bitcoin each at $200, but no buyers. In order to cash out, the sellers have to find someone that wants to buy though. There is no "bitcoin economy" that stores the value and pays them out when they want to exit their positions.
What's a Ponzi scheme?
In a Ponzi scheme, investors are enticed by promise of fixed returns. The operator manages all funds and uses investments by later investors to pay off earlier investors. As no value is generated, the operator must constantly attract more investors to keep the scheme running.
In contrast, Bitcoin doesn’t pay any returns or dividends, nor is there a central operator that could make any such promises. Each individual manages their own funds. Bitcoin's exchange rate is established by supply and demand. Much like a commodity, its current spot-price is that of the last trade between individuals.

Related reading:

Is Bitcoin a scam? further elaborates on the differences between various fraud schemes, high-risk investments, commodities, and currencies.
How do buy and sell orders work? explores how Bitcoin's exchange rate is established.
What happens to cash used to buy bitcoins? looks at the role of Bitcoin exchanges in people's buying and selling of Bitcoin.

People seem pretty confused based on their answers but you're asking the billion dollar question aren't you

A Buyer gets matched up with a Seller through an online exchange. The buyer needs to "fund" their account with "$" to trade to the Seller for crypto.

So the buyer gives the online exchange real actual money from their credit card. All that money goes to the exchange and stays with the exchange (forever... yes. forever. sorry guys, keep reading for explanation). In return the exchange gives the buyer "simulated USD/EUR/etc. $" but it's actually a form of crypto that remains on the exchange to be traded with buyers. It's treated like it's real USD/EUR/etc. but it isn't and it actually has no value but people keep buying it to buy crypto with all the while money continues to pool in the basements of exchanges

We treat the value of simulated USD/EUR/etc. $ as though it were actual $ based on the confidence that any number of us at any given time could make a withdrawal on it as if the exchange platforms have been keeping it safe for us all this time in good faith.. as if the first commandment of bitcoin cult school isn't to trust online exchange only for as long as you absolutely have to

Bitcoin isn't a ponzi scheme, the online exchange platforms are. The illusion of liquidity they're providing is responsible for meteoric rise in speculated value. But no real money will ever leave the Exchange, if too much of an attempt is made the Exchange will Mt.Gox

Whoever asked you this question is on the right track... What does this really mean? Right now it doesn't matter at all how much crypto is valued or how much anyone owns. 99.9% of us will have massive returns on our crypto investments but none of those returns are ever going to be getting spent on anything...


How long does it take to earn back the investment of a miner? I was strongly considering buying one of the 25 GHash/s miners and hooking it up to my laptop or desktop when not using them, as in, leave the miner running overnight or while I'm at work.

The mining profitability calculators confuse me. If I join a pool and mine the way described above, would it be profitable?

How long would it take to earn that c. $800 back?

You can run the miner all the time, not just overnight or while you're at work.  It doesn't use hardly any resources on the laptop... all the heavy lifting is done on the miner.

It's very risky to buy a miner.  The miner manufacturers often take a long time (i.e. several months) to deliver your order.  While you are waiting the mining difficulty is going up and the manufacturers move on to new more powerful models.  As a result, by the time you get your hardware it could be well on its way to becoming obsolete.  Keep in mind that a mining rig is not useful for any other purpose.

It is a very real possibility that you will never make back your investment unless the bitcoin price goes up a lot.  And if you want to bet on the bitcoin price going up, you can simply buy bitcoin and save yourself the whole mining hassle.

You could mine altcoins that are easier to get (like PrimeCoins), and then exchange those for bitcoins on an exchange.


Bitcoin Cash: how to check address balance / transactions? BlockExplorer (https://blockexplorer.com) provides a way to check bitcoin balances.

What is the alternative to check for transactions in Bitcoin Cash addresses?

Bitcoin Cash block explorers are (sorted by usefulness and features):

✯ BlockTrail: www.blocktrail.com/BCC
✯ BlockChair: blockchair.com/bitcoin-cash/blocks
✯ BTC.com: bch.btc.com
✯ ViaBTC: www.viabtc.com
✯ Bitcoin.com: explorer.bitcoin.com
*✯Coin Dance: cash.coin.dance/blocks
✯ BitInfoCharts: bitinfocharts.com/bitcoin%20cash/
✯ BitBox: explore.bitbox.earth
BlockDozer: blockdozer.com
Blockexplorer: bitcoincash.blockexplorer.com
CoinSpace: bch.coin.space
BitPay: bch-insight.bitpay.com
Yours: insight.yours.org/insight

* Shows only blocks, doesn't show transactions.

✯ The ones without star use the same Insight UI, so that websites may not show interesting data.

I provide a "raw" explorer here https://hashes.download/#api


What is the age of the oldest known Bitcoin core developer? I am trying to compile some demographic data on who has contributed to Bitcoin so far and track how the demographics are changing over time.

Since GitHut does not show me demographic data I have attempted to use Google with limited success.

What is the age of the oldest known Bitcoin person to submit a pull request to Bitcoin core? I asked the same question about the youngest person the other day and the answers were helpful to me.

Eventually I want to try to compare the mean and median ages (and sex) of users and developers and track the changing demographic trends of each group.

I am unsure of how old these core developers, but 2 that come to mind are Gavin Andresen and Mike Hearn. Hearn left recently  due to personal conflicts. (story here)


Why is my withdrawal from the 50BTC pool not visible in the blockchain yet? I did a bitcoin transaction of 216 BTC from the 50BTC mining-pool to my wallet (Bitcoin-Qt).

It has been 3 days now and I have not received anything yet.

I've tried to search my address on blockchain.info and it doesn't come up.

50btc was hacked some time ago and the hacker completely messed up all account balances. If you actually have mined over 200 BTC there, I suggest you contact the administrators. But I assume you're just one of the people who woke up one day and saw that your 0.001 mining profit had been replaced with a completely arbitrary number of coins, in which case no, "your" Bitcoins were not lost since they never existed in the first place.

I would recommend contacting an administrator immediately. One thing is certain: they didn't just disappear into thin air. Most transactions take place under 24 hours, so it is highly unlikely that they will just show up in a week; however, don't be too disappointed about not getting them right away because they have been going up in value over the last few days


Bitcoin Source Code genesisOutputScript I am checking bitcoin source code to learn forking a coin better,

in this link

https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp

Line 52 has scratched my mind, what is that for? Should that be changed while forking a coin?

I know lines 124 and 125 are set after the first genesis block is mined, can someone explain me what line 52 does, and how it affects the blockchain?

You can use this code for genesis block:
https://github.com/nasa8x/genesis-block


Which exchanges are Tor-friendly? Mt. Gox's sign-up page states:

  Please be advised that accessing your account via the Tor network
  and/or public proxies may result in a temporary suspension of your
  account, and having to submit AML documents.

Are there other exchanges which do not have such a restriction (e.g. for transfers and account balances below $1K USD for instance?)

BitInstant seems like a nice Tor-friendly option (they even accept deposits in cash): https://www.bitinstant.com/

Hitbtc also allows to use it's services via TOR


Analysis on the Block Chain for Dead Bitcoins My understanding is that the blockchain is currently 6.5 GB in size and will continue growing at a fairly hefty rate. Has anyone attempted to analyze the blockchain to attempt to determine dead bitcoins? I'm interested in developing a probabilistic measure to label certain transactions as dead.

What's a good way of getting the raw data from the blockchain? I'd like to batter it with some R and Sage magic.

No Bitcoin is dead by definition - it may just be impossible to spend them, because e.g. you lost the private key. So you will never be able to distinguish between dead addresses and just untouched paper wallets.

I was also thinking about it and came up with a proposal for a protocol change: If it is well known and communicated through every news, and everybody would agree in that change of course, it would allow miners to 'take' money from transactions which are unspent more than (let's say) 2 years. This means they can transfer the coins to another address without providing the signature and the network accepts this. This sounds scary, but it wouldn't mean you steal somebody when everybody knows. You just have to move coins every two years. Unfortunately long-term paper wallets would be less convenient.

Of course details are missing, e.g. you shouldn't get all the money of a big transaction in one block just because you are lucky. Anyway, I think this "using of dead coins" idea wont make it, as everybody is interested in a rising bitcoin value, and this happens when some are lost!


What is Open Transactions? I discovered that there are some questions that discuss finer points of the Open Transactions Software, however the project itself could use a proper definition.

Please explain concisely what the Open Transactions is:
How does Open Transactions work, what problems does it solve and how does money get into the open transactions network?

Open-Transactions is a free software library of financial cryptography primitives, used for implementing cryptographically secure financial transactions.

Open-Transactions also includes a server and client API.

Open-Transactions can be used for issuing currencies/stock, paying dividends, creating asset accounts, sending/receiving digital cash, writing/depositing cheques, cashier's cheques, creating basket currencies, trading on markets, scripting custom agreements, recurring payments, escrow, etc.

Open-Transactions uses strong crypto. The balances are unchangeable (even by a malicious server.) The receipts are destructible and redundant. The transactions are unforgeable. The cash is untraceable. The cheques are non-repudiable. Etc.

Open-Transactions is able to prove all balances, as well as which instruments are still valid, and which transactions are closed, without storing any transaction history (other than the last signed receipt.)

OT can be used to build wallets, market exchanges, and many other things. Basically anywhere you want to build secure transactions, you can use OT.

  how does money get into the open transactions network?

Any user choosing to act as an issuer can issue his currency onto OT servers by uploading a signed currency contract and then issuing a number of units. Then any other user can use the same currency contract to open asset accounts denominated in that same currency. (In practice, most users will not issue their own currencies, but simply use existing ones.)

Upcoming additions will enable currency units based on blockchain-based currencies to be issued on OT without an issuer, since the backing reserves will be stored in a multisig voting pool on the blockchain itself. For details on how this will work, see: https://bitcoin.stackexchange.com/a/834/6473

You may also be interested in this: How can Open Transactions benefit Bitcoin?

Open Transactions are transactions that have been started by one wallet to another and have not been processed by the network.  They are ' in ' the network, but have not actually been mined in to a block.  Once it has been processed, barring the block it is submitted in to being ' Orphaned ' by chance, it is considered by some as processed until there have been enough other mining pools, wallets, and such as to make that block the transaction is in a valid block.  If you look in a list of transactions, the status will change after each successive block until it is Confirmed.

The ' money ' gets in to the open transaction network when one wallet sends payments from it's holdings ( and will be confirmed that THAT wallet has that to spend plus the transaction fee, if any ) to the connected wallets and network nodes.  It is this list that pools draw from for the information to make a block.  The more open transactions, the more potential blocks, the more to mine so that pools, individuals and the network get payment.  Bitcoin and other virtual currencies is a transaction based economy where instead of turning on a printer to make new currency, the system of processing the transactions adds to the total available currency.  That per Block base amount lessons over time making it more and more difficult to get the same value per block submitted and is suplimented by the volume of transaction fees within the block.


Send Bitcoin payments to any bank via API I am looking into paying our overseas suppliers via bitcoin to speed up the process of settling invoices. The issue is that I don't want them to have to deal with bitcoin themselves.

My question is - is there an API available that I can use to build my app that will allow me to deposit BTC to any bank account number that I choose?

Thanks!

The closest solution to this is setting up your supplier with a payments processor like Coinbase or Bitpay, who will convert your BTC to fiat instantly. However, there's no way to send BTC to a bank account directly without some action by the other party.

You can use Bitpay to do it. What you can do is create a bitpay account and input their bank details to send the money to. Then you can send the amount for a transaction to the account related with that account and it will be transferred to their account.


What are the limits of m and n in m-of-n multisig addresses? This method describes how to create a 2-of-3 multisig.

I heard that there is an inherent limit with the number of multisig parts, limiting them to 3.

Does the standard method described above of generating and spending multisig addresses work with more than 3 parts? What is the limit? How to work around that and create/spend larger multisigs using bitcoind (practical 'how to' would be appreciated)

We need to distinguish the limitations for validity and standardness. The first is determined by the consensus rules (which cannot change without a hard fork). The second ones are determined by local relay and mining policies implemented in the reference client, and can change from version to version.

In addition, we need to distinguish raw multisig (a simple OP_CHECKMULTISIG based script), and P2SH multisig (where the OP_CHECKMULTISIG script is only revealed upon spending).

Finally, because scripts include public keys, their sizes depend on their lengths. Both compressed (33 bytes) and uncompressed (65 bytes) keys exist, depending on which version of a wallet was used to generate them.

Raw multisig

Every m-of-n combination is valid (up to n=20), but standardness rules only allow up to n=3.

This limitation is enforced when sending (i.e., sending to a 2-of-4 multisig will not be considered standard).

P2SH multisig

validity rules require that the P2SH redeem script is at most 520 bytes. As the redeem script is [m pubkey1 pubkey2 ... n OP_CHECKMULTISIG], it follows that the length of all public keys together plus the number of public keys must not be over 517.

For compressed public keys, this means up to n=15
For uncompressed ones, up to n=7.

For standardness, it depends on the version. Up to v0.9.*, the reference client required the total spending script to be at most 500 bytes.

For compressed keys, this means m*73 + n*34 <= 496 (up to 1-of-12, 2-of-10, 3-of-8 or 4-of-6).
For uncompressed keys, this means m*73 + n*66 <= 496 (up to 1-of-6, 2-of-5, 3-of-4).

In 0.10, these standardness rules will likely be relaxed, allowing to go up to the validity limits (15-of-15 for compressed keys, 7-of-7 for uncompressed keys).

Also, for P2SH, standardness and validity restrictions are only applied when spending (as the spending script is only revealed at that time). This may mean that sending your coins to a P2SH script may make them irrecoverably lost (especially when violating a validity rule).

As per the below article by Vitalik Buterin, theoretically, you can have one-of-three, five-of-five, or six-of-eleven multisig addresses, it just happens that two-of-three is the most useful combination.

http://bitcoinmagazine.com/11108/multisig-future-bitcoin/


How can I create and distribute my own private blockchains in a scalable way? I would like to experiment with blockchains in a controlled environment for fun and/or development purposes. Is there a way to do this easily?

Yes there is:
https://github.com/coinclone/cloner

You can mine genesis blocks, configure common settings for nodes on your network and ship them easily using this opensource project.


Transaction never confirmed over 2 days I did a transaction from my bitcoin core wallet.  The transaction 6263452f635713e60f83d45fe41b1c9ba3b5f5e3af664778bf18a05b15cfde06 has not confirmed, and it is now over 48 hours since I made the transaction.   Although blockchain.info will show the transaction (as unconfirmed) if I enter the transaction ID directly, it no longer shows it on the "unconfirmed transactions" page, https://blockchain.info/unconfirmed-transactions.

What should I do now?  I am a complete newbie - this is my first transaction, and this has been very frustrating.

Thanks.

Your transaction should be confirming shrtly(within 1 day)You did not send the appropriate miner fee which is why the transaction is slower to confirm. Do not worry tho it will confirm at some point tody:)


Is proof-of-stake a viable alternative / augmentation to proof-of-work? Meni mentioned Proof of Stake as a possible way to augment Proof of Work as the underlying mechanism powering Bitcoin confirmations.

Is it viable? What are its downsides? Who has analyzed it? (I don't see a lot of people on this thread)

This answer might be enough to make proof-of-stake not needed.


I'm mainly on a Windows system. What are some advantages and disadvantages of setting up Bitcoin-Qt in a Linux virtual machine? I'm on Windows. Would it be a good idea to load up Bitcoin-Qt in a virtual machine running Ubuntu? What are some disadvantages I might run into?

I was thinking it would be secure as everything is in the virtual machine, and I can easily copy that virtual machine out to another computer if it ever crashed.

I also plan to run other crypto currencies as well.

Duckx, I think you have a good idea.

Well for one thing -- using a linux VM is much better for security.
You are essentially using your windows machine for browsing the internet / email and your linux machine for only bitcoin banking.

All it takes is someone to compromise a bitcoin related website and you could be out of your bitcoin holdings.  With your wallet.dat running in a Linux VM if someone compromises your windows machine they won't be able to easily steal your wallet.dat and keylog your password, etc.

If you're not using the Linux VM for Bitcoin banking, you can have it turned off!

It's trivial to encrypt your entire linux HD.

Linux is inherently more secure out of the box than Windows, and with a few tweaks, extremely secure.

Technically though, if someone compromises your Windows machine they could gain control of your vm and get to your bitcoin assets.  This type of attack though is extremely rare and would have to be personally targeted rather than some worm looking for wallet.dat files.

Almost all major Bitcoin applications are developed on linux/osx so you will be in good shape.

As for a performance hit... you won't even notice it.  Linux doesn't take much overhead to run at all.

Finally, when you transfer the BTC to your linux machine, do not transfer the wallet.dat just create a new wallet on the VM and send your BTC/LTC whatever via the network.  This way you don't have an unsecured copy that could be stolen.

There shouldn't be any problem.

But I think it is a waste of memory/disk/processor time. You may just store the blockchain on some external drive, if you want that to be portable.


Why there's no bank or institution lending Bitcoins? To the best of my knowledge, there's no bank lending in bitcoins, yet, which surprises me. Now that Bitcoin has stabilized to circa USD $100, I think it could be reasonable for an institution to start lending in this currency. By using Bitcoins instead of a national currency, the number of potential lenders goes way up than the number of banks in most countries, and the interest rates could potentially be way lower.

I thought of a way to make it even less risky for a potential lender to someone they don't know in a remote country: they could ask the potential client to ask for a loan in their national currency to a big, recognized bank. The bank would do the job of assessing the client's capability of payment, do the background checking, etc. and lend (in national currency) the amount they believe the client is capable of paying off, in the selected time period.

This amount would be transferred (via the traditional banking system) to the Bitcoin bank, and the documents for the loan would be scanned and faxed/e-mailed as well (with validated-transaltion attached, of course). The Bitcoin bank could then take the risk-assessment of the local bank at face-value, return aprox. 95% of the amount transferred in the very same national currency to the client so it can pay the loan to the bank almost immediately (thus paying a very small amount in interest to the local bank) and then loan 90% of the original amount but in Bitcoins - at hopefully a lower interest rate. Of course, the difference in the amounts plus the interest would be the profit.

In effect, grabbing the money from a recognized, traditional institution would be a way of saying "hey, look, other guys think I'm worthy of a credit up to aprox. this amount for this time-period". I for one would be happy to give it a try, taking a loan on Bitcoins!

Could this be feasible?

My co-founder and I just started a Bitbond.net where we connect borrowers and lenders and offer an online wallet. Our goal is to make banks obsolete by such a service.

You can borrow Bitcoins by issuing a Bitbond. Before that, we perfom a credit rating to assess the creditworthiness of the issuer. We also do an identity check so if a borrower is late on his or her payments this can hurt their credit score.

The good thing about it is that by connecting borrowers and lenders directly you match the maturities of bith sides. One big problem with banks is that they give out long term loans and refinance them with very short term money, i.e. their client's deposits or overnight loans from other banks. Since Bitcoin wants to be a better and more stable currency we believe that banking as such also needs to improve. That is why we built Bitbond.net

I am not sure lending is a good idea for bitcoin, or at least not if the amount to be paid back was to be paid in bitcoins.

Many of the problems with the current banking system of how "the small people" get into trouble is due to lending and the very immoral interest system, that also increase to a higher % depending on how little funds you have available.
Interest would be an even bigger problem in a currency with a fixed amount.

An example would be:
Person A want to borrow 10.5 million bitcoins .
AND
person B also wants to borrow 10.5 million Bitcoins.
Both person A and Person B promise to pay the lender 10% interest, yet there is only every going to exist 21 million bitcoins.
However person A and person B have made a promise to pay back a total of 23.2 million bitcoins..... one of them is not going to have a good time!
Ultimately the bank is not going to receive all the interest they were relying upon and will eventually need bailing out by our governments, so they can continue to trade and pay their staff high wages.....

Of course there is more people than just person A and person B and they will never be able to borrow half of the economy on their own. There is also more than 1 bank that will be lending.
However on paper the calculations are the same, but as more people and more banks are thrown into the equation the time scales increase to cover many years, yet the inevitable will still happen as no matter how much good intention there is to repay the loans the fact is there is more owed than exists.

This is just the same with Fiat, although more money can be printed to cover this short fall, but that only serves to decrease the value of the money in our pockets unless our country can manage to take money from another country. BUT again the inevitable will happen and a country will soon no longer be able to afford to pay its own debts so it now having to borrow to cover its short falls... and eventually they will not be able to reply the loan that they have taken from your/our country.

No matter how you work out the calculations the inevitable will always == FUCKED!
The best result possible is to postpone the inevitable for a few more years or past our generation...

I think Bitcoin could well be the answer to our broken financial systems, but if all bitcoin tries to do is imitate an already broken system, it will make it no different from the dollar or pound, as 110% of it will be controlled by large institutions.

loans and interest are NOT a good thing and while banks say they offer us these loans owing to them being good people and wanting to help "the small people" they are in fact doing it to help themselves only, and intend to postpone the inevitable past the point of their pay day!

"The Monkey may very well have got it right with bitcoin, dont break it now!"

Ford


Do some Bitcoin wallets fail to support sending to multi-signature addresses? The Satoshi client has support for multi-signature transactions through the JSON-RPC API since version 0.6.1rc2.

My understanding is that a multi-signature transaction creates an address which is special only in that spending from it requires multiple signatures, and its prefix is '3' instead of '1'.

As Gavin said on bitcointalk.org, "you can then send funds into that 2-of-3 transaction using the normal sendtoaddress/sendmany RPC commands, or the GUI (or anything that's been updated to recognize multisig addresses)."

What I read from that is that all wallet clients and web wallets might not yet support sending to addresses with a '3' prefix. How wide is that support currently?

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

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


How long does it take to go from 51% hash power to 100% hash power? Once an attacker has acquired 51% hash power, is it possible to quickly get to 100% hash power by simply refusing to build on blocks created by other mining nodes and therefore discouraging mining entirely?

If 51% guarantees 100%, how quickly can this transition (from majority to total control) be expected to occur?

From What can an attacker with 51% of hash power do?

  Prevent some or all other generators from getting any generations

So, yes. However, it doesn't immediately give him more mining income. Once the block readjustment happens two to six weeks or so after the attack, the bitcoin network will notice that far fewer blocks were made, and the difficulty will go down.

Remember that one would have to gain over 400 petaflops of processing power to gain 51% of the network. The top ten supercomputers in the world combined aren't even powerful enough:

http://bitcoinwatch.com/

http://www.top500.org/lists/2012/11/


how does dash solve the scaling issues? I heard dash has some extra features compared to bitcoin like masternodes etc, can someone explain the subtle differences especially regarding the scaling debate

The biggest reason why Dash can scale is incentive alignment. Dash splits the block reward between the miners (45%), masternodes (45%) and the treasury (10%).

Masternodes are a special type of node with some extra requirements. In exchange for that, they get paid by the network. Because they get paid, the network can require them to run powerful machines that can handle bigger blocks than what would be possible with volunteer nodes (like what happens with Bitcoin, Bitcoin Cash or Litecoin).

Also, thanks to the masternode layer, Dash is about to release a decentralized API that will allow light wallets to connect to that layer as a class, not an individual (trusted) server. With that, it will be possible to use Dash in a completely trustless way without the need to download the blockchain, reducing the pressure to keep it small because only very specific use cases will require to have your own copy.

There are a few more improvements in the works that will all contribute towards scalability. Arizona State University recently released a paper analyzing Dash scalability:
https://blockchain.asu.edu/block-propagation-applied-to-nakamoto-networks/

As a side note, Dash also has a governance system in place that facilitates decisions around the protocol. That is not technically an advantage towards scalability, but because decisions can be made easily, roadblocks are only temporary. The decisions to go from 1MB blocks to 2MB ones was agreed by the network in less than 48h, saving a lot of time in discussions between parties claiming to represent the best interest of the network but without a real way to prove that.


Will we ever need smaller amounts of Bitcoin than a Satoshi? Will there ever be a need to create a unit of Bitcoin smaller than a Satoshi?

See also: What is a 'Satoshi'?

TL;DR: If transaction volume explodes, Bitcoin is adopted for micro-payments, and the value of bitcoins increases sufficiently, we will need greater divisibility.

First of all, since there are 100,000,000 satoshi to a bitcoin, obviously one satoshi would be worth $0.01 if one bitcoin were valued at $1 million.

Beside the questionable math in tysat's answer, his answer is based on the assumption that there are no use-cases for payments smaller than a cent.

I don't believe that it is a valid assumption to make:
Next to there being other currencies with subunits of smaller value than $0.01, when one satoshi is worth $0.01, that would also be the smallest possible transaction fee one could attach! This would be prohibitively expensive for any micro-payment based business scheme, such as for example Bitcoin based content paywalls, direct internet traffic payments to ISPs, or other automated micro-payment driven schemes: Paying five cents to read an article, you'd have to add a 20% fee.

Now, such services could possibly move off-chain where further precision could be added, yet that would require users to have accounts for each of those services, and to tie up their resources unnecessarily, while reintroducing counter-party risk; essentially reverting a lot of the key selling points of Bitcoin!

Assuming that the Bitcoin protocol will develop to scale even beyond the transaction capacity of today's credit card systems as recently suggested by Gavin Andresen, it seems plausible that business ideas will appear to challenge even such transaction capacity. As those would though be prohibited by a minimal transaction fee of $0.01, we could see a push towards even smaller fees.

Should the above lead to a scenario where somebody finds uses for payments with a value of a tenth of a cent ($0.001), and transaction fees for that should be less than 10% of the payment's value, we'd need smaller subunits if one bitcoin becomes more valuable than $10,000. Since we already have breached $1,000 once, that doesn't sound impossible.

Update 2017-03-23: AFAIU, adding further divisibility to Bitcoin would require a hard fork, and therefore is not something that will simply manifest. If necessary, it would require a massive overhaul of all software currently used in the Bitcoin ecosphere. On the other hand, Lightning actually already implemented support for probabilistic sub-satoshi payments.

Update 2018-05-17: Lightning uses millisatoshi to account for channel balances, adding another three magnitudes of precision. Payouts on the blockchain are rounded as the precision there is only to the satoshi.

Be serious, if bitcoin reaches $100,000/bitcoin then the developers need to develop a hard fork to add at least another 3 digits below a satoshi for mining and transaction fees to become reasonable again. When Bitcoin reached over the $10,000 level, the transaction fee costs became over $10 regardless of the size of the coin transfer amount. The level of usage and asset appreciation of the cryptocurrency will determine what level of technology needs to be applied to make the asset viable in the future.


Can private keys be securely stored on blockchain? Ok, I know that blockchain is public knowledge. But, than, there are experiments like zcash which encrypt sender receiver and amount information and they still work.

I'm considering whether p2p blockchain arbitration service is possible. For example, you want to exchange ETH for BTC. A blockchain generates 2 addresses, one of which is for BTC, other is for ETH. Once both addresses are funded, funds of both are forwarded to the recipients. To do this via blockchain, there should be a secure way to store and use private keys on blockchain.

Is this completely impossible, or are there any indications that one could do something like that?

There is no encryption involved anywhere in a blockchain. There are no keys to encrypt with, as every node has the same information as all others. Cryptography is involved, but for signing/proving. Not for encrypting.

Even in the zcash case, encryption is not involved. All wallets do is prove to the rest of the network that they had the funds they're spending. The only difference compared to Bitcoin is that it reveals less information in doing so, and as a result, the proofs are much more complex.

blockchains don't generate private keys - that doesn't make sense, as the chain can be seen by everyone.

Wallets do have private keys. They're never shared with anyone. They hand out the corresponding public keys in order to be paid, and use the private key to later prove to others they own certain coins.

The example you're describing with an exchange occurring between two chains is possible using a technique called cross-chain atomic swap. It relies on a hashlocked transaction where the first wallet that moves its money out on one chain reveals a random value that hashes to a value that is known ahead of time. The other party then uses this preimage to unlock funds on the other side.

It is not recommended to send a private asymmetric key as a blockchain transaction (which is a communication channel) in this manner.

There is a good paper on key exchanges here:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.216.6107&rep=rep1&type=pdf

In this paper the author makes also makes it clear that sending a private key over a channel is not good design:

"When a key is sent in a message, only the public key is used, to be
explicit... None of the protocols studied in this paper ever
send a secret key over the wire"

https://dominictarr.github.io/secret-handshake-paper/shs.pdf

Public keys are designed for sending over a channel. Not the private key. Encryption can be broken by brute force. Once someone has the private key they can decrypt everything that was encrypted with that key.


Is bitcoin-gold more ASIC-resistant than Litecoin? Bitcoin Gold's main point for existence has claimed to be ASIC-resistant in order to have mining power more distributed.

But wasn't this tried already with Litecoin via Scrypt mining algorithm? I've heard there are already Scrypt-capable ASICs, so is Bitcoin Gold now a better alternative?

What's Bitcoin Gold algorithm? Can it become minable by ASICs at some point too? Could Litecoin switch to this algorithm to be ASIC resistant again?

This appears to be old but to correct the above answer, Bitcoin Gold used to use the Equihash algorithm but recently forked to the Equihash-BTG proof of work algorithm in order to keep in line with the protocol's main objective, ASIC resistance.

As for which protocol is better? I suppose for some that is a matter of opinion but if you ask me (and the majority of the ecosystem as evidenced by the price), LTC has it all over BTG in terms of developer interest, liquidity/volume, price, propagation, potential use cases, etc.

The GPU-mining ship sailed long ago for LTC.

I just started reading The Definitive Guide to Gold, a free 65-page ebook that talks about how gold is an important part of financial success. It’s pretty interesting to see how technology is changing the gold industry.


What is the advantage of a market-specific cryptocurrency? Reading this article, http://nakamotoinstitute.org/mempool/the-coming-demise-of-altcoins/, I wonder why there would be a separate coin for each market, like a coin just for buying bananas, marijuana, disk space or photh-sharing instead of using a general purpose coin for those things?

I'm not asking why coins are technically different; having different hash-functions, mining hardware, proof of work vs. stake, virtual machines, privacy, how the coin is governed, etc.

I am asking why there are coins for each particular purpose.  I think it would be better to only use one coin for everything because there would be less middle-man in the exchange from BTN to STORJ and vice versa therefore lowering fees.

Why is there more than one fast-food service? Why is there more than one internet browser? The competitive altcoin economy encourages other coins to surge with better implementations. Bitcoin has very high transaction fees as of early 2018, this is why a fork came off as Bitcoin Cash a few months ago, but Bitcoin Cash is not the only coin fighting for low fees. We have seen RaiBlocks (No fees) and many other altcoins surge recently due to low fees. Some coins are created not only to solve a problem, but to simply be better than the current coin. NAV wants to surpass Monero, by not only being a privacy coin, but also allowing anonymous Dapps and more.

A lot of coins have lucrative companies behind them, the answer to this question is not really different from the one of the question "Why is there more than one company in sector X"? People want to make money, so they will innovate and try to outperform the others with a better product.

Sometimes, companies will issue a token usually from an ICO to raise money on their platform. There's usually little reason for the purpose of their custom token/coin other than raising capital. A normal company would have to attract angel investors which is a lot harder than creating a coin and selling it while cryptocurrency is a hot asset. Doing an ICO also does not require to lose a share in the company. This is why we are seeing a massive influx in new coins.

I disagree with the other explanations provided and think they are wrong.

The use case is simple. In cases where the entity cannot issue equity (e.g., open-source projects) issuing a token provides a similar equity-like incentive. The value of the token vs. an alternative compensation scheme (e.g., annual cash salary or cash bonuses driven by performance targets) are basically the same benefits that equity-linked compensation would have.

Bitcoin is a good example of why its a good idea to issue an equity-like financial product for open-source projects. Before bitcoin, if you made an open source project you lived like a peasant because you couldn't monetize your creation (e.g., consider linux / wikipedia / SSL). Satoshi is a billionaire now and rightfully so, because he created something that changed the world. More importantly, he created competition for these protocols because other people wanted to become billionaires too. This desire to become a billionaire through tokens is brand new and only exists because creators of tokens have the ability to own a large portion of their token at the time of creation and thereby enjoy the financial upside of their protocol being used.


Is it more dangerous when 51% attack happens than just having a pool with >50% hashrate? Many people told me that, if a mining pool performs a 51% attack, the price of the coin will drop.

But I disagree.

There are pools with >50% hash power already for a long time. Flypool is an example. (On the ZCASH network)

If one day these pools start to mine only on their own blocks, but not double spending or refusing any transactions, they performed a 51% attack. However, I think the security risks didn't become higher.

Yes, they can revert a transaction at any time so it is a security risk, but they already have had this ability for months!

For these two situations:

there is a pool with >50% hashrate
this pool mines only on their own blocks

I think the second is not more dangerous than the first one.

So my question is, is it becoming more dangerous when a pool with >50% hashrate starts to mine only on their own blocks? Will the coin price drop and why? Why didn't pools like Flypool mine only on their own blocks?

One can't say what's more or less dangerous for a cryptocurrency value. You don't have a control group. You would need a parallel universe where Flypool had no more than 51% to compare prices there to prices in our universe.

Saying that, being decentralized it's the very point of a cryptocurrency, and very few people will invest in one of them that's actually centralized. I can only speculate what's in their minds, but maybe people invest in ZCash today hoping it will become less centralized in the future. Flypool, despite having more than 50% hashpower, like you said, probably don't mine only on their own blocks because they would make people sure the thing it's centralized. Or maybe because they sincerely want the security of ZCash against a double-spend, so the accept the smaller pools help. Both things must probably increase an overall reputation of the ZCash in people's mind and must probably keep the price a little high.

Mining pools besides ASIC manufactures are extremely dangerous for every PoW based cryptocurrency. A mining pool or a group of pools with >51% hashing power can destroy the network in minutes. The fact you wonder why Flypool doesn't double spend on ZCash is a bad thing per se. You shouldn't ever be in a position you have to be surprised a pool doesn't do any harm.

There ARE solutions to discourage or even completely block pools in PoW based blockchains but in my opinion there is no will to face the problem. Bitcoin and other developers are millionaires while crypto investors are computer illiterates and this is the combination that will lead to disaster.