How can Bitcoin solve societal problems caused by capitalism? While trying to explain Bitcoin to a friend, her response was:

  To me this sounds like just an other monetary system which can be
  speculated on while making some people rich and keeping others poor. How
  does it attempt to solve deep rooted problems in our society caused by
  globalisation and capitalism?

She was of course referring to geographic and social inequalities, exploitation of workers, political oppression, depletion of natural resources, etc.

What are some of the ways decentralised proof-of-work currencies (and their underlying protocols) can work to improve these aspects of our society?

Bitcoin itself, although conceived from an ideological background doesn't have an agenda. It is a tool. It will not solve societal problems by itself, but might help alleviate some issues, by providing competition to current solutions. Especially, wealth distribution in Bitcoin itself isn't better than in other currencies (see e.g. Business Insider on Wealth Distribution in Bitcoin, BitcoinTalk on Distribution of Bitcoin Wealth).

International Remittances

Bitcoin enables its users to send money for minuscule fees around the globe. This could be especially beneficial to foreign workers that want to send remittances to their families in developing countries.

Currently, they are dependent on expensive services such as Moneygram or Western Union and lose up to 15% of the sent money in fees. Additionally, the recipient needs to go to the next money transmitter shop to pick-up the money. In many instances this is a trip of hours.

The Unbanked

Bitcoin doesn't require its users to have a bank account, as any form of internet access is sufficient to send and receive Bitcoin. Today, there is an enormous number of people without bank accounts. For example there are about 10 million unbanked or underbanked households in the US. In developing countries more than 50% of the populations are unbanked, women more so than men.

Without a bank account, you are either unable to use or significantly disadvantaged regarding a wide-range of services, such as credits, saving, insurance, payment for contracts, and internet commerce. See for example: Guardian on mobile banking for the unbanked.

Bitcoin could provide an easy access and cheap payment system for many of these services. It could be significantly cheaper than current payment systems such as M-Pesa, and have additional advantages by not being centrally run.

Censorship

No user can be locked-out of Bitcoin. On the other hand, it is well known for such things to happen in centralized payment systems for various reasons: eBay and Paypal exports Embargo, Paypal blocks donations to Diaspora. This is especially important for protest movements that might be shut-down by their government, think Wikileaks, Occupy Wallstreet, or Social equality movements in repressive states.

If , as claimed, Bitcoins cannot be easily manipulated as fiat currencies are, and if they can be more or less anonymous, then they surely would be a major threat to the debt based world economy.  I would suppose that if Bitcoins should get the reputation of being free from artificial Inflation, they might well take over as a desirable currency, thus alarming governments and banks worldwide.  We could expect drastic efforts to sabotage Bitcoins, in the same way that the Internet is a threat to the "Establishment".


Broadcast raw transaction without input validation What tool/software can I use to broadcast a raw transaction, which would not reject a transaction because of invalid or double spend?

Bitcoind with RPC has a validation step which rejects any raw transaction where the inputs are not known, or if the inputs are double spending.

Also, I don't want to rely on a third party service like blockchain.info.

Turns out there are many ways to do this:

Node.js: Bitcore lets you broadcast a raw transaction to the network without any kind of validation, see the "broadcast a transaction through P2P" example.
Python: Protocoin is a library that can do that.
Java: BitcoinJ can do it.
C#: Bitcoincsharp, which is a port of BitcoinJ can also do it.

There is absolutely no reason trying to broadcast invalid transaction.
It is wasting your time and your traffic.
Your peer(s) will check it and throw it away. They will not relay it to network.
They also can ban your IP-address for some time (1 day?)

May be you want to send valid but non-standard transaction?
Or may be you want to have a custom tool, which sends transactions to a network?

    // [...]
    void NetSocket::pushTx ( const QByteArray& data )
    {
      const MyKey32 key ( data.constData ( ), data.size ( ) );  // calculate txid
      outTx.insert ( key, data );                               // store data
      write ( "inv", invPacket ( MSG_TX, key ) );               // send inv packet
    }
    //--------------------------------------------------------------
    void NetSocket::write ( const char* type, const QByteArray& data )
    {
      socket -> write ( packet ( type, data ) );
    }
    //--------------------------------------------------------------
    void NetSocket::procGetdataPacket ( const QByteArray& data )
    {
      Stream d ( data ); d.skip24 ( );               // i do not check header now
      const int count ( d.readVar ( ) );
      xassert ( count == 1 );
      const quint8* ss = d.readAdvance ( 36 );
      const quint32 tag ( *(quint32*)ss );
      const MyKey32 key ( ss + 4 );
      xassert ( tag == MSG_TX );
      xassert ( outTx.contains ( key ) );
      write ( "tx", txPacket ( outTx.value ( key ) ) );
    }
    // [...]


How do I get my Ravencoin wallet address on Ravencore? Very new to this, and couldn't find help on Google.

Click on receive on the left vertical bar. Below the input boxes you will see "Request Payment." There you will be able to see your address.


Who proposed the XBT ticker for Bitcoin and why is it used over the more logical XBC ticker? Some standard requires tickers for currencies to start with an X. So, the usual abbreviation of Bitcoin, BTC, cannot be used in contexts where this standard is applied.

Usually, the unofficial ticker/abbreviation XBT is used in those contexts. Why? Bitcoin consists of two words, bit and coin, it's logical to abbreviate that to BC. For this reason XBC sounds like a much more logical ticker than XBT.

What is the first reference of XBT and is a consideration made before using it that favoured it above XBC?

XBT is used because the ISO 4217 (the standard for currency codes) alphabetic code XBC is already in use.  It stands for the European Unit of Account.

Here's the Official table of ISO 4217 codes

The X indicates it's not a national currency, but rather a supranational currency (like the East Caribbean Dollar, XCD) or something else that isn't quite a currency, like IMF special drawing rights (XDR) or precious metals (XAU is gold, XAG is silver, etc.) for which exchange rates are of interest.

X is used for this because ISO 3166, the standard for country codes, never uses X as the first letter and the currency code is the 2 letter code and usually the first letter of the currency name.  For example, JP is the code for Japan, so the code for the Yen is JPY.  An exception example is the Mexican Peso, code MXN.  MX is the code for Mexico, and the N stands for New Peso.

XBC is used by a POS coin called bitcoinplus.


Why coinbase doesn't address callback? I am using PHP cURL to generate new address from coinbase. As per this documentation we get notification on the callback url when any transaction is made on the generated address. But I am not getting any callback from coinbase when I receive any payment.

I want to achieve the following:

Generate a bitcoin address
Store the the generated address & the amount with it's user who paid it.

I am facing the problem in getting callback. I get payment in the coinbase & email saying that you received this amount etc., but no callbacks.

Also please suggest me that whether the coinbase is secure or not.
If not, what should I go for? I want to get the above things done.

Give your website address in Merchant Settings then check by clicking Test


What is the point of Feathercoin The amount of bitcoin-like crypto currencies overwhelms me.

Just few minutes ago I came across FeatherCoin

The problem is that the information on the official site is scarce and the only thing I was able to understand is that the difference from litecoin is the block reward and the total amount of coins.

What is the point of this?

Most Bitcoin lookalikes are not really worth looking at. The two that are more or less accepted are Litecoin and Namecoin, of which the latter is not intended as a currency. Another more or less popular cryptocurrency that is not based on Bitcoin is Ripple.

I know that there are many more Bitcoin-based currencies. Most of them are not adopted and are thus insignificant. The value of such currencies is made by the willingness of people to exchange them for value, like objects or other money. As long as no one uses these alternative currencies, they are of no meaning at all.

And frankly, wouldn't it be better to first try to make one cryptocurrency succeed instead of spawning hundreds of others before the world knows what a cryptocurrency is?...

FeatherCoin unlike any other crypto has an incredible community behind it. You can learn more about it in the official forum: http://forum.feathercoin.com/index.php


Miner modifies unconfirmed transactions and put it into the block Is is possible that a miner modified a unconfirmed transaction (like changing the output of transaction to the miner himself) and put it into the local block, and after 10 mins the miner luckily solved the PoW, putting the block on the chain and broadcast it to others?

If a transaction was modified and finally linked onto the chain, how others check whether the tx was valid or not? (others only check if PoW answer was right or wrong, not checking tx, am I right?)

And If modified tx was on chain, how do affected people recover their assets from the loss in modified tx (in which output was modified to the miner himself)?
Could they ask to revoke the block or how could they do?

Thanks

Is is possible that a miner modified a unconfirmed transaction (like changing the output of transaction to the miner himself) and put it into the local block, and after 10 mins the miner luckily solved the PoW, putting the block on the chain and broadcast it to others?

No, because the transaction would be invalid. The vast majority of transactions contain digital signatures which signs the entire transaction. If the transaction is changed, the signatures will become invalid and thus the transaction will be invalid. And if a transaction is invalid, the block containing it is also invalid.

  If a transaction was modified and finally linked onto the chain, how others check whether the tx was valid or not? (others only check if PoW answer was right or wrong, not checking tx, am I right?)

No, this is completely incorrect. ALL full nodes verify all transactions in all blocks that they receive (as well as transactions received outside of blocks). Just because a block has a valid proof of work does not mean that the block is valid. It must still build upon a valid block and must only contain valid transactions. Full nodes still verify that transactions contained within a block are valid.

Contrary to popular belief, miners do not say what transactions are valid. Their job is to determine the order of transactions, within certain constraints. It is the job of full nodes to verify transactions, and all miners (or the mining pools) should be running full nodes.

It is possible, but not for regular transactions


Transfering Money From My Bank Account To Bitcoin? Im quite confused about this bitcoin software/system.

I have successfully sync'd to the network (took hours) and have recieved my address. Now, if someone is selling something for 5Bitcoins. What is the process that i have to do to remove money from my Barclays UK account and convert it bitcoins and send it to my wallet.

I really do not understand the process.

Thanks for anyone who can clear up this confusion i have.

If you don't want to deal with the hassle of an exchange you could try our new service for UK users:

https://blockchain.info/wallet/deposit-pingit

The fee is slightly higher at 3.49%

[--------------

Update: Apparently cash deposit at Barclays is no longer possible.

Fortunately, Mt. Gox has a cash deposit method using Barclay's.  It does require a physical trip to the bank, I believe, but at least you withdraw cash and then deposit cash in a single visit to your bank.

http://en.bitcoin.it/wiki/MtGox#UK_.28GBP.29

There is a fee of 1.5% for depositing cash.

-----------------]

If you are transferring a larger amount (e.g., maybe more than £300 or so) you may wish to do an electronic bank transfer and pay the bank transfer fee instead.

You could do that from Mt. Gox (Funding) as well.

Then once your funds are in Mt. Gox, you simply use those funds to place an order to purchase bitcoins, and then withdraw coins to your own wallet when you are done trading.

[Update: Also, BlockChain.info/wallet now offers the purchase of bitcoins using Barclay's Pingit:

https://blockchain.info/wallet/deposit-pingit ]


Which exchanges support U2F authentication? I got myself a nice security key (Yubico Fido) today, which utilises the U2F protocol. But to my surprise not a single Bitcoin exchange seems to support this yet, only Google itself.

So which Bitcoin exchanges (plan to) support U2F?

As you have correctly noticed none of the Bitcoin exchanges have implemented the FIDO standards there is not a large demand for this feature from what I gather.  If the standard were to gain mass adoption and many users began requesting it I'm sure it would become a greater priority for exchanges to implement.

As a side note the Ledger hardware wallet does support the U2F standard and would be a great way to improve the security of your wallet (as long as you don't connect the two to each other (i.e. same keychain)).


How should a node deal with a block that is not connected to the chain? Suppose I am a node in the Bitcoin protocol and I receive a block that does not point to any  block in my current chain. Should I keep it on the side, waiting for missing intermediate ones? Should I propagate it? Should I just erase it?

The Bitcoin client used to download blocks without necessarily knowing if they could connect it to their current chain. If it couldn't connect a block to the genesis block, it would just keep it in memory. This was a waste of memory (up to 750 MB could be used up before it started dropping blocks) and bandwidth (if you drop a block that you need, that wastes bandwidth)

It does something smarter now, though. It builds a chain of block headers to the current tip of the chain, then downloads the block contents. Not only is this simpler, and more resource efficient, it also allows you to download multiple blocks in parallel. Blocks are written to disk as soon as they're downloaded.

Since there's no way that you will receive a block that you didn't ask for, the current Bitcoin client will drop the block and permanently disconnect from the peer that sent it.

Blocks that are not yet confirmed look this way, so just wait a bit then try again.  Continue checking for x amount of time before declaring it an orphan.

There may even be other blocks that have not been assigned a place in the blockchain that are ahead of it.  Most blocks are confirmed pretty quickly, but others can take several minutes.

So far we haven't yet seen clearance times measured in hours.  And if the block size is increased simultaneously with the doubling of the work factor this summer (the first since 2012) we may well see ever longer clearance times.  So as  you encounter these blocks they may be in the pipeline for confirmation.

If you are operating as a full node you will notice them coming through.  If you can't confirm then your node won't answer at all.  If you are looking at the stream directly be sure to look at when your node chooses to confirm or not.

In other words, don't think you need to do anything manually.  Your node knows what to do.

Cheers


Preventing transaction fee collusion between large miners What would prevent the largest Bitcoin mining pools (top 3-4 have with 61-73% hash rate today according to link below) from colluding to demand much higher transaction fees to confirm transactions?

https://blockchain.info/pools

My question is somewhat theoretical and I am aware that many smaller pools would naturally oppose this. However even if transactions get confirmed by smaller pools eventually, when the majority of the hashing power is colluding to only accept high fee transactions, then the delay for confirmations of low fee transactions will be very significant.

Some countries have laws that may prevent this type of collusion, so please assume for the purposes of this question that the colluding parties are either in jurisdictions that do not regulate this or the pools operators cannot be identified.

In theory, preventing this problem is why miners exist in the first place. The sort of collusion you're describing can more generally be described as censorship: miners jointly deciding to delay certain transaction unreasonably long (up to indefinitely).

Ideally - and I'm well aware that reality is quite different now - the mining ecosystem is reasonably easy to enter for anyone, including people who feel they are being censored.

This is the difference - and the only difference - between using Proof-of-Work as a consensus mechanism and using a traditional (centralized) distributed consensus mechanism: anyone can enter, without asking anyone for permission (even anonymously). If we were fine with the set of existing mining pools to never change, we could replace it with a permissioned system.

As you stated the transactions would still eventually get confirmed by non colluding pools, so the situation is a matter of inconvenience of waiting versus cost.

In the short run the "mining cartel" you describe likely could extract more fees from those who desire fast transaction times. In the long run the damage to the reputation of the Bitcoin network in providing reasonably priced fast and reliable confirmations would probably do more harm than the extra fees gained. This is one of the reasons large miners generally do not attempt to double spend.


Bitcoin unconfirmed trasection to cancel I am new to bitcoin. i use blockchain. info.
i sent vtc to a purse on 15.12.17, but i am stuck still there after 20days.
i determined to cancel the reanection.
please help me.
Transection ID: https://blockchain.info/tx/2bd29e84967f6ee9c392b8bb8cb4cadb7e1560604f92dfbd57d88268b6c99714

please help me to cancel this. Thanks in advance

It is not possible to 'cancel' a published transaction. After you publish a transaction to the network, all of the nodes will relay your transaction, so that eventually they (should) all know of your transaction. If you tried to publish a 'cancel request', you would have no guarantee that every single node would hear about that request, and even if they did, they may not be incentivized to listen to it. So 'cancelling' a transaction is not part of the protocol.

Your transaction included a low fee, and so it has not yet confirmed. Eventually, the network's nodes may all 'forget' about your transaction, so you could then re-spend the coins to an address you control. Take a look at this question for more info on unconfirmed transactions.

You can not cancel transaction.

Next time do not put your funds in the technology you do not understand. 0.00561718 BTC - is not a significant amount paid for a knowledge.


Does bitcoin improve on "hard" currencies in any way? Question is in the title. Anyone who's toyed sufficiently long enough on the foreign exchange understands that currencies are largely driven by sentiment or manipulated on the odd occasion. Plus, there's the fact that money has no intrinsic value. Has bitcoin overcome any shortfalls and risks of conventional currencies ?

There are huge differences between FIAT and Bitcoin.

Fiat is created out of thin air "with fractional reserve banking" and other mechanisms, there is no stop on how many will be created.

Another problem is that every country is FORCED to create more of it.
Since otherwise the value of their money would increase to much, ending all export industry and tourism in that country.

So when the US prints an extreme amounts of FIAT they know that China must follow, which means that Japan must follow and the US must print more, and so it goes on.

Bitcoin can not be created out of thin air, and it takes an ever increasing energy cost to create one.

And since no country base their economy on it, its free from having to be endlessly printed. (It can´t even if it would be.)

Another very important difference is that Bitcoin is the only digital money you can own yourself with no one else having any access, and thus keep on your own computer or in your own cellphone or store on a USB the key to your money.

All other digital money, is money that is stuck in a bank and thus they might play around with it and go bankrupt.

But a Bitcoin is a Bitcoin and not simply a promise in their system.
This also means that you can send them any time of the day instantly to anyone you like now even on Facebook or in emails.

The limited amount also gives it a longterm backing in that if it picks up in any market, it cant stay this low and will have to go much much higher, a value of something like $50-$5000 would not be strange in 10-20 years IMO.

The idea that Bitcoin is superior to government-issued fiat is based on a few myths.

Myth #1: Bitcoin cannot be created "out of thin air"

This is not true. More coins can be created if a significant number of users (either the economic majority or the majority of the mining hash power) decide that it's good for the system. Given the history of all money, it is almost guaranteed that this will happen. It is the same as government-issued paper. Remember, the US dollar was once linked to gold, and apparently could not be created out of thin air. When rules are made by humans, the rules can be changed.

A separate but related point: nothing prevents Bitcoin from being levered like fractional reserve banking. See how gold ETFs work. Gold cannot be created out of thin air (even if everyone agrees!), but you can create paper on top of it.

Myth #2: Bitcoin is decentralized and not controlled by any single authority

Again, this is not true. Bitcoin does have an informal system of governance. A few people do make decisions on behalf of everyone else. This is just like a democratically elected government, except that it isn't democratically elected (so it's a "benevolent dictatorship"). It's very much like a central bank that decides which banks are bailed out and which banks are allowed to fail (see: 2008 financial crisis), who gets to keep their money and who loses theirs.

It's easier for the miners to tax your bitcoins than it is for the government to tax your dollars (see: Cyprus depositor tax).

Myth #3: Bitcoin cannot be counterfeited

It is trivial for anyone to create an implementation of the Bitcoin design (PDF) and call it "Bitcoin." For example, you could create an alternative version of the design with a upper limit of 42 million coins instead of the current 21 million, with faster transaction processing. Incidentally, this is exactly what Litecoin does. Litecoin could just call itself "Bitcoin" and it would be legitimate, because it does follow exactly the design laid out in the Bitcoin white paper. Therefore any number of Bitcoin clones can legitimately call themselves "Bitcoin" as long as they follow the white paper (this is how it's supposed to work), and therefore in a sense there can be any amount of "counterfeit" Bitcoin currency in circulation.

If you had an agreement with someone to pay you in bitcoins for a service you provided them, and they paid you in "counterfeit" bitcoins (which are as real as yours), there would be a dispute that would have to be settled in court. This is why Bitcoin is a caveat emptor system.

On the other hand, if you paid someone in bitcoins and they claimed them as fake, you couldn't prove it, because they could legitimately claim to have expected to receive a different kind of bitcoins. In this case you would lose your money and get nothing for it in return.


how do nodes verify that a block has been solved and can be added to the blockchain when a miner solves a block it gets sent out to the network, when other nodes receive it, how do they verify that the block received was indeed solved and can be added to the blockchain.

So you don't know what the answer is but if you got the answer you know what the question was.

StephenM wrote a good answer to that:

  The difficulty (or nBits as it is called in the code) is shorthand for how difficult it is to solve the block. Essentially, it encodes a target value, and the hash of the block (when treated as a 256 bit integer) must be below that target value to be considered solved.

Let's say block #396716 has been just mined. The participants verify:

Is the block really next? Simply look if the previous block is already accepted. Each block contains the ID of previous block.
Has miner performed enough work? Because difficulty is now 120 this means there should be 120÷8 = 15 zeroes in the block ID.

00000000000000000277e25b11ccc9dc44a8563de315c454507522dae5a0d204

000000000000000 <- 15 zeroes. Therefore miner spent enough work.

Is the timestamp correct? Just test if it's near current time.
Verify all transactions inside the block. This includes checking if miner sent himself the correct reward (currently 25 BTC). Next, all transactions are checked, if amounts match, signatures correct, etc..


when a miner solves the problem in less than one timestamp then what does it do with its extra capacity? If a miner solves the problem in less than one second then how does it use the extra capacity.

The resolution of the timestamp in a Bitcoin block header is one second.  However, if a miner should find a valid proof-of-work and create a valid block, they do not have to wait one second before starting work on a new block.  It is perfectly legal for two successive blocks to have identical timestamps.  In fact, it is legal for the succeeding block to have a timestamp that is earlier than that of the preceding block by up to 7200 seconds.  See Why is two hours the maximum acceptable offset for Bitcoin blocks?

So a miner can immediately start work on a new block, and this is normally what they actually would do.  Hence there is no "excess capacity" at all.

It will use it to solve the next problem.


How does Ripple's exchange work? In Advanced/Trade tab there is a "BTC/XRP" box, and a "change issuer" link.
I have no clue what should I do to post any buy or sell:

I can freely modify the exchange currencies, and only USD/XRP shows me an order form
it has a ripple address near "base currency" / "change issuer", so I guess this means that that address somehow takes care of the USD exchanges?

I'm still clueless about what am I supposed to do to either set up a Bitcoin exchange myself, or to fine an existing one, neither have any idea how this all works.

I am clueless as well but I think that it requires a consensus of people on the network for this to function properly through one accepted BTC address. When we create our own orders no one else can see it unless you are in their trust circle or ripple neighbourhood. So we would have to all use your posted address to trade in BTC. Maybe MtGox sets up a ripple wallet inside the ripple network then we would all flock to their address and use it as a trusted source for the exchange. I could be totally wrong but that is how I poorly understand it. Someone with more technical know how can explain it better I am sure.

Ripple FAQ - Limited Description of Distribute Exchange

Yes it seems you find the offers by being specific about the currency, specific as in who issues it. For example the WeExchange gateway deals in bitcoins, USD, CAD and Australian money so those are the most well known currencies so far probably. So you'd put their bitcoin-denominated account's number as issuer for bitcoins to see offers to deal in their bitcoin IOUs, their USD denominated account's number as issuer of USD to find offers to trade their USD IOUs and so on.

I do not know why they use a separate account for each type of currency, I am so far using one test account for all currencies, it is rpVft3wic2fZ2saY5BjEtL8R2NPrubxWG5

Because I run the Digitalis Open Transactions server I already have issued a lot of assets there, and am looking to issue a bunch on Ripple too. But I cannot do many offers yet until I get more ripples as most of my ripples got spent on testing the trading system to learn this much.

I have quite a bit of Devcoin (DVC) and Groupcoin (GRP), less (twenty thousand or less) I0coin (IOC, as Ripple currencies are alpha only not alphanumeric) and Ixcoin (IXC), very few Namecoin (NMC) and Coiledcoin (CLC). Other "altcoins" I have too few so far to get into market-making with them. I also have a slowly growing number of BBQcoins (BBQ).

Basically you should be able to type in pairs like BTC/DVC, if issuer of the BTC is not shown was weex then change issuer to weex; for DVC likely it will default to your own account as issuer, or if you already trust someone for DVC then their account; change issuer to my account shown above and if I have managed to place any DVC/BTC offers, or if anyone else makes any offers involving my DVC IOUs, you should see them.

SO far because the client only shows five decimals of price I only have an offer to sell DVC for 0.00002 BTC each, which is way higher even thatn the 200 or so satoshis they used to go for a couple of weeks ago. We need more decimals in the client to display reasonable "bitcoins per devcoin" prices.


Electrum seed words safety dumb question I am starting with bitcoin and even though I understand pretty well how the blockchain works, the seed words used by some wallets (MultiBit and Electrum) give me creeps and doubts.
The main question is: Why they are safe?
The base for the question: Humans are not good source from random data so we use seed words from a random-pc-time-based source. This seed words are a representation of a binary number and the phrase with 12 words makes a 128bit hash. Those words are drawn from a 4096 words dictionary. The dictionary from Electrum is saved in a python script, for example. So, we can say we know those 4096 words. I have a seed phrase (12 words) from my wallet. What protects all the network of someone who changes the last word of his own phrase 4096 times, to open 4096 bitcoin wallets?
I know with Electrum, again for example, that 128 of those 4096 generate valid addresses. What protect the network then of someone opening the bitcoin wallets of 128 mates and stealing all the money?
The last part is more simple, the validation is made online, how an wallet check of the words open the private key if they can work offline?

For the vast majority of possible 12-word combinations, the corresponding wallets were empty and never generated. The total number of the combinations is pretty huge so trying to brute-force them will not work out. In fact, words are just another (mnemonic) way to encode the entropy contained in the private key.

Please note that the order of these words must also be right so this 35 decimal digits of possibilities will increase to 44 decimal digits.
Even if you could check 1000.000.000 possibilities per second the time of the universe will not be enough.


Can bitcoin exist without miners? In the past year only, the bitcoin mining difficulty has increased fivefold. If in the coming years the difficulty increases so much that mining is no longer profitable (i.e. consumes more power than money is earned), can the bitcoin network exist without miners? Can bitcoin supporters or governments have data centers that handle transactions only and do not spend computational resources on mining new bitcoins?

if in the coming years the difficulty increases so much that mining is no longer profitable

That's not really possible. The mining power is set so that the miners need 10 minutes in average to mine a block. If 50% of the miners would disappear because it's not profitable any more, the difficulty would decrease so that it's profitable again.

  Can the bitcoin network exist without miners?

Yes and no. There is still the decentralized blockchain, so you can still check who has how many bitcoins, and you can view the whole history of transactions (they do still exist), but you could not spend them if nobody would mine the transactions.

  Can bitcoin supporters, or governments have data centers that handle transactions only and do not spend computational resources on mining new bitcoins?

Transactions can't be confirmed if nobody spends the necessary processing power to mine blocks. Confirming transactions requires mining.

IMHO it is important for the businesses accepting bitcoin and the people using bitcoin (everyone :))  in the future to each maintain a certain level of hashpower thereby keeping it decentralized and secure.


Can bitcoins be counterfeited? Traditional currencies have anti-counterfeiting features designed to make them hard to copy, but despite this attempt counterfeit money is a real threat.  Since bitcoins are digital, it's trivial to copy them.  Does this mean that bitcoins can be counterfeited?

There is no such thing as a "bitcoin" that can be copied. Rather, there is a list of all the transactions that have taken place on the bitcoin network and the order they have taken place. Every client has a copy of this list. Essentially, the only way to counterfeit bitcoins would be to spend them in more than one place. This is called a double-spend attack. However, because of the design of the bitcoin block chain (the list of all the transactions) and the way that list is secured by mining, this requires a tremendous amount of computer power.

http://en.bitcoin.it/wiki/How_bitcoin_works#Double_spending

See also the question about how mining works

What exactly is Mining?

Only Physical Bitcoins can be Counterfeited currently . It would be extremely expensive to counterfeit a Virtual coin .


DDoS on big mining pools: a quick way to 51%? Slush's Pool, the second biggest mining pool around, is currently down, allegedly due to a DDoS attack:

  News
  16.04.2013
  Pool is under DDoS attack. I'm working on recovering the service back to operation.

This means the entirety of its miners are currently offline, and this for sure lowers the difficulty of gaining 51% of the total network hashing power.

Now, I don't know anything about the hardware/software design of mining pools, how many servers do they employ to centrally manage all miners, how much bandwidth do they have, etc.; but I'm quite sure that nuking one of them would require a lot less computing power than actually obtaining more than 50% of the total Bitcoin network hashing power under its normal operation.

Thus, the question: aren't big mining pools a critical point of failure for the Bitcoin network? If a malicious attacker was to place several of them offline, all of their miners would be instantly disconnected, and then a not-even-so-big mining farm (or maybe a rival pool which engineered the attack in the first place...) could easily overcome the whole network.

How much likely is such a scenario?
How can it be avoided?
Should the Bitcoin community invest more into protecting pools, or, better, make a joint effort into moving from a "few big pools" model to a "many little pools" one, in order to be safer from similar attacks?

There's no cooperation involved in mining, and they won't be trying the same hashes because (for example) they have different transaction pools and (possibly) different destination addresses. Mining pooling is just like non-pooled mining, except that the revenue is spread over time instead of getting blocks of 25BTC.

Even when the pooled miners have a backup set that sends them to the largest pool (BTC Guild), that's acceptable for short periods of time. But miners are still people, and if something like that happens they'll quickly correct the issue.

It is possible to take down the pools but even if you took down 30% of all the pools you would still have only dented the hashrate very slightly. On top of that the DDOS power needed would be EXTREAME and with that power you might as well just mine bitcoins with all of those computers participating in the attack. Plus people solo mine if they have HUGE computing centers, and you could not ddos solo miners without knowing their IP's and even if you did they would probably have ddos protection.


When thinking about e-currency in a general sense, what features discourage black market usage, but promote anonymity? I'm interested in e-currency that discourages black market usage (child porn, meth deals, etc) but allows for anonymous operation (donations to charity, buying a pizza, viagra, or other health issues)

What pre-existing work exists that researches applicability of various "controls" into e-currency systems such as e-cash, Bitcoin, Open Transactions, etc.  And by "controls" I mean:

Psuedo anonymous user registration
Usage "escrow" allowing third party audits or reviews of transactions
Anything else that would be resisted by the Bitcoin purist.

I'm interested in any example you can think of, links to Bitcoin Talk, or any other whitepaper that discusses ways to legitimize e-currency to a moderate fiscal conservative.

The issuing of currency by a central authority discourages black market usage in a sense that all coins in the system can be tracked by the central authority - with AML and KYC policies.


How does a difficulty increase affect a miner's income? At the time I write this, there are a lot of people getting into Bitcoin mining for the first time. Many buy ASIC hardware and are later surprised that their mining income suddenly drops due to a difficulty increase.

If I mine X bitcoins per day, then the difficulty goes up Y percent, how many coins do I get per day after this?

For instance, if my hashrate brings 1 BTC per day and the difficulty rises 30%, what is my average daily mining income with the same hashrate after this change in difficulty?

Your profit relates to the amount of hashing power you contribute to the network. Since your mining power is constant, your share of the total hashing power decreases relatively when the network's hashing power increases. I.e. we can deduce the following formula:

newProfit = currentProfit * currentDiff/newDiff.

At a currentProfit of 1BTC/d and a 30% increase in difficulty, you get:

(1BTC/d)*100/(100+30)= (1BTC/d)/1.3 = 0.76923077 BTC/d

i.e. your profit decreases by ~23%.

With the increase in difficulty there is also a rise value of BTC that helps compensate for the decrease hash rate. Without miners Bitcoin would not see the completion of transactions therefore it seems unlikely for miners to go unpaid.


Are people incentivized with BTC to run nodes? Bitnodes shows everyone running nodes.

Are these people incentivized to run nodes? If not, why not? If so, do node operators make some BTC from transaction fees, etc.?

Are these people incentivized to run nodes?

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

  If not, why not?

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

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

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

I wanted to challenge the idea that we should not incentivise the running of nodes.

What I am not saying: I am not saying to write incentivising into the core.

I believe we do need to think about how node operation can be encouraged via financial incentive, this is because long term I believe that all things that provide value should be encouraged via micropayments.

Why?

Financial incentives create a feedback loop in which the market helps optimize. This creates more development and faster iterations and more collaboration on it.

How?

This could exist as a sidechain, alt-pegged coin, or even how p2pnodes work which is up to the node provider on how much the charge.

Conclusion

Just wanted to see more discussion on this! All of you have good points above, however, I see them as things we need to think about when thinking about how to provide incentive to running full nodes.


Get transaction that spent a transaction id The blockchain.info API allows for querying information about a particular Transaction by its ID. But if you want to follow the coins to the next transaction, I'm not seeing what the next query should be.

Each "out" of the transaction has an address associated with it, and you can query for details about a address' recent transactions. But if you're exploring deep in the past, the most recent 50 transactions for a given address won't have the spend for that particular "out".

So is there another API out there that allows you to query Transaction details based on "has transaction N as an 'in'"? Or do I need to go through the blockchain and make my own cache?

Edit: Blockchain.info clearly has the link to the transaction that spends a given output in their database, since the HTML view of a transaction now has "spent" tags after outputs that have been spent, which are links to the next transaction. However, that particular bit of data is not in the API view of the same transaction.

The raw transaction info includes the Unspent Transaction Out (UTXO) which is the link to each of the components of the spend:

http://blockchain.info/rawtx/$tx_index

You have to go through the blockchain and create your own cache. I don't know of any service available that allows you to run a query like this on their API. Too many people use blockchain.info anyway, so it would be valuable to have other entities providing their data to the network.


What is a bitcoin incoming transaction with value = 0.00000546? I wrote a script that downloads and parses blocks. I see a lot of incoming payments with value = 0.00000546. Any explanation?

Thanks!

This output value corresponds to the dust limit that is imposed on bitcoin transactions.

Many of these outputs may have been generated as a dust attack to de-anonymize users/ addresses.

I would say that a Dust Attack on Bitcoin is the most dangerous system that hackers use to steal Bitcoin. According to this article:
https://dust-attack.blogspot.com/2019/03/blog-post.html?m=1


I reused a previous deposit address and the recipient claims the address was invalid I sent bitcoins to Sportsbook.ag, my Bitcoin wallet saved an address that I'd previously used to send Sportsbook.ag. The problem is my bitcoins never showed up in my account. I e-mailed sportsbook.ag, they told me that the address I used to deposit bitcoins was invalid and I had to contact my bitcoin wallet. From what I've seen the bitcoins aren't lost, they're somewhere, how do I get them?

If you've used this address before to deposit money to Sportsbook.ag, the address will still be under control of Sportsbook.ag. If they don't directly manage their Bitcoin deposits, their payment processor will still have received the payment in proxy.

They may not have expected you to reuse that address, but they should be able to fix it on their end. Contact them again and clearly explain what has happened. Good luck.

If your Bitcoins left your address and arrive onto address you don't control - then, well, you don't control them. And if the address is invalid, then most probably noone ever will be able to spend them.


Make payments Lightning without Invoice? The Lightning-RFC defines, in BOLT #11, an invoice protocol for proof-of-payment. While this is a pretty cool feature, I was wondering if it would be possible to make a payment without such invoice. That is, with the origin node defining a payment hash etc.

With the current specification it is not possible to make a spontaneous payment to somebody on the network. However, this will likely change very soon, as it is one of the features on the roadmap and will be discussed in the specification group in November.

There are tricks on how to do a payment by delivering a large fee at the destination and continue routing to someone else (described in this video), but you have to write software to manipulate the route and the destination will not see an incoming payment, since it considers it a fee.

Some wallets will let you create 0 sat invoices, which the payer can then specify the amount they want to send.


CPU Solo Mining on ARM I am playing around with bitcoin mining. I have set up a full node on an ODroid C2 device. I am running Ubuntu 16.04 and Bitcoin core. That seems to be running find. It is keeping up with the block chain with no errors.

I downloaded the cpuminer source and built it without errors.

When I run it it starts up the 4 mining threads, but always gives and error that the host returned a 404 error.

I have the rpc set up and am using the correct username and password.

I am using the default ip address for localhost and the default port of 8882.

Can someone explain what I have done wrong that minerd won't connect to the local bitcoin node?

The ability to solo mine was removed some time ago. You have to set up a stratum proxy server.


Is the whole idea of proof of work or proof of stake quite unnecessary and superfluous for cyptocurrencies? I only have a vague idea of proof of stake, but I think I reasonably understand proof of work. In the case of bitcoin, the whole hash thing business has to be combined with a mechanism to increase the difficulty according a certain time calculation. Now this difficulty/time calculation is merely a matter of good faith, and hope that a majority abides by it. If you look a bit deeper, the whole hash function itself relies on good faith, also called the 51% risk/attack whatever.

And hence you have currencies like ripple, which are just faith (maybe one degree higher compared to bitcoin and ethereum) as far as I can see, without any hash or other garnishing. This does seem to be equally functional. So did Satoshi over-design bitcoin? Does this suggest that a whole new generation of minimalistic cryptos will completely sweep away bitcoin, ethereum and the likes?

Can you elaborate some of your statements a bit?

  Now this time calculation is merely a matter of good faith, and hope that a majority abides by it.

When you have a look here you will see that the average block times is 9m 4s. Not too far away from the ten minutes the protocol tries to enforce.

  If you look a bit deeper, the whole hash function itself relies on good faith, also called the 51% risk/attack whatever.

Why does the hash function rely on good faith?

You're example ripple is in no means a replacement for bitcoin or ethereum. It is a completely centralised currency / system. We could use SWIFT banking instead.


How to decrypt encrypted_privkey Background how I got here:
I have a very old wallet file in .dat format (from 2017)
The backup is as far as I remember just a copy of the wallet file from bitcoin-core's ~/.bitcoin directory.
I tried opening it in "modern" bitcoin-core by:

copying the wallet file into ~/.bitcoin/wallets/walletName/walletName.dat
adding the wallet name to list in ~/.bitcoin/settings.json

Now, upon starting bitcoin-core I get this message:
Error: Failed to load database path '/home/{redacted}/.bitcoin/wallets/OldWallet_1'. Data is not in recognized format.

So, having no meaningful results in google other than pywallet, I decided to try importing it to electron... and discovered that electron doesn't have an option to import bitcoin-core wallets (wtf?).
I did find some information about "pywallet", I tried using it to recover information from my .dat file, I had to modify it a bit since my encryption password is really long and has many weird characters in it so passing it as an argument for script execution is incredibly difficult.
I managed to get list of all addresses defined in this file and "encrypted_privkey" for each address.
I didn't manage to get it to decrypt anything, because the script crashes with "Segmentation Fault (core dumped)" (everyone loves C/C++).
The question:
So, my question is, given I know the password to this wallet (I think I also recovered the encryption salt) and I have "encrypted_privkey" list, how do I decrypt them so I can import them in electron?
[edit]
I just tried importing my dashcoin wallet to dash-core, I get the same error message, so it's very likely that something about the wallet file format has changed during the time I wasn't using cryptocurrencies.
If anyone knows how to "upgrade" the file format, please let me know, it'll also solve the problem.

there is command opton in bitcoin core, there you can type "upgradewallet"
check if something happens.


Would sidechains help Bitcoin scale? Are sidechains intended to help Bitcoin scale? Do they reduce load on Bitcoin's main chain?

If not, why not?

No. They can increase scale, but that is not what they are good at or intended for.

Before giving a longer answer, let me first talk briefly about the difference between scale and scalability.

Increasing scale means increasing the throughput or number of participants to the system. It's very easy to achieve (decreasing the time between blocks, or increasing the size of blocks), but it would come at a cost of higher centralization pressure for mining and increased validation cost to the system. Whether these increased costs are acceptable is controversial, but there are certainly costs involved.

Increasing scalability means changing the system in a way such that increased scale comes with less increased costs. Known mechanisms for better scalability include better peer to peer relay protocols, faster digital signature systems, software improvements, technology on top such as payment channels or lightning to reduce on-chain transaction need, ...

Sidechains don't improve scalability. If we want the same security level with sidechains, the same amount of people and miners need to be validating them. That is at least as costly as just increasing the block size of Bitcoin itself, and sidechains come with extra compromises on top of that.

So, sidechains may increase scale, but are not better at it than larger blocks would be.

What sidechains do bring is the ability to experiment. To be able to build networks that run on different - and possibly better-scaling - technology, but without needing to first beat bitcoin's (the currency's) network effect.

Sidechains are intended to improve scalability, but only indirectly: by enabling innovation. Not because they can just offload things from Bitcoin.

Yes. Check IOHK video about sidechains.
Sidechains creates the space for sharding..sidechains reduce the work from being done on the main chain.


What are some ways that the powerful elite can thwart cryptocurrencies? What are some ways that the powerful elite can thwart cryptocurrencies?

Cryptocurrencies appear to be not susceptible to most forms of power, regulation, or control. Due to their decentralized and anonymous nature, they are often touted as an antidote to government, Wall Street, etc manipulation through currency and money.

How accurate is this? What are some ways that an actor who has an interest in say the dominance of Wall Street or just any old reason for using their power to control otherwise free actors could do so through cryptocurrency economies?

Here are a few ways Bitcoin can be affected by the decisions of a wealthy investor:

Value manipulation: A wealthy investor can sell coins or purchase coins in such a rapid pace that the market sinks or rises to an unrecoverable level.  In real exchanges, the SEC protects investors from these hostile trades.  There is no SEC protection with Bitcoin.  Update: there apparently is now SEC prosecution for Bitcoin matters
Negative press / word of mouth: Part of the success of Bitcoin rests on it being freely exchanged for goods and services.  If Bitcoin becomes overly associated with the darker parts of the internet, then some businesses will become risk adverse and not want the additional scrutiny on their private ledgers (tax, audit, etc).  However if BTC is associated with "good" things then the inverse is likely to happen.
Protocol hacks: If an elite person discovered, or a team is funded to discover protocol issues with the Bitcoin network, and a flaw is found, that will undermine investor confidence in the system. (e.g. Malleable Transactions)
Laws on M1, M2, M3 transfers: Bitcoin is unique in that it can be purchased with USD and sold back to Bitcoin and back to USD.  This feature is different than other items such as a calling card, gift card, Amazon coins don't have this two way feature.  The less isolated a currency is, then the more likely it will have regulations apply to it.  Regulations are supposed to protect the merchant and consumer, and these regulations will likely be placed on all exchanges.  It has already started with the recent FinCEN announcement.
Manipulate or create a Internet outage, a massive sustained power outage, like the 2003 Northeast blackout, covering an area with a heavy miner concentration.
An over dependence on a single exchange, with no auditing or external oversight, could manipulate the currency value with a double set of books.

Any player in the Bitcoin system who also needs to use the value of Bitcoin in a local currency will likely have most regulations placed where the BTC ↔ currency conversion is done.  Identification "checkpoints" and other analysis will eventually be done on trades to identify the good guys from the bad.   Depending on which side you're on, this could be thwarting one's intentions.

Dirty Bomb

Pay an "anonymous troll" to steganographically copy child pornography into the block chain. Then get the mainstream media to publicize this fact. Then threaten anyone who is running a full node with CP charges.  Unwitting possession would not work as a defense because the fact that the block chain contains CP is already widely known.

A "nuclear option" like this could easily backfire though. The government itself would need to do something highly illegal first before it can use the law to its advantage.  Even the people working for three letter agencies are normal human beings, so many of them will oppose this out of disgust.

It would probably only cause a temporary disruption because bitcoin would quickly switch to a pruned block chain model that doesn't require a single node to store all the transactions.


Can the fee produced by estimatefee be artificially manipulated? Could a miner who wanted more transaction fees manipulate the fee produced by estimatefee? If so, what percentage of hashpower would it take, and how long would you need it?

No, estimatefee is calculated locally by bitcoind in function of some statistics done on mempool.


Why have prices fallen so drastically around October 2011? Any idea why bitcoin prices have fallen so in September and October of 2011?  It seems like back in August, one bitcoin cost about US$17, whereas in late October, it's just somewhat over US$2.

One thing a lot of people fail to notice is the decreasing volume at the exchanges. If we look at the USD volume - and not at the bitcoin volume, which is misleading because bitcoins are now worth much less - we can see a spike in June and a decrease afterwards:

The news reports in June attracted lots of people who were curious about bitcoin. A part of these people left and the market size is now coming back to April/May levels. As a consequence, there is much less money being traded. However, we still have 5 new coins being produced every minute and lots of miners who want their invested money back.
The current price is a natural consequence of high supply and low demand.

The BitCoin is made up currency and thus there is no trust in it.  The value will bop up and down based on whims and popularity.


Any statistics on usage of Bitcoins by region or country? I would like to know if there are any statistics on turnover of Bitcoins for each country in the world. A very rough way would be to get a statistic on which traffic to Bitcoin.org by country.

WebGL Globe shows bitcoin nodes seen during last 48 hours. Install Chrome Web browser if you have problem rendering WebGL.

Google Trends has countries, cities and languages sorted by number of bitcoin related search queries.

For a very rough guide you could look at transaction volumes on the exchanges for different currencies..

e.g. Exchange volume distribution


How to send BTC amount from one specific address in Bitcoin Core I canceled one transaction that was in the memory pool, now I would like to make sure that this transaction will not be sent anymore sending all BTC amount of the original address of this transaction to another address, but when I go to send BTC in Bitcoin Core, I can't choose one specific address to send the amount. So what Can I do to "empty" the bitcoins of this address using Bitcoin Core?

If you run Core with the command line flag -zapwallettxes it will forget transactions in its mempool.

Have you tried creating a new wallet and sending the funds to an address outside of your wallet because you can send them to an address outside of your wallet, right? And then, import the new wallet with the transferred funds.


Bitcoin -> prepaid VISA/Mastercard service (2014 edition)? I have read the answers in this question here... But it is incredibly outdated. OKPay no longer accepts Bitcoin to creditcard. bitcashretail.com is down. xmlgold.eu results into an error. Centregold results into a page not found. ecardone.com is seized by the "Global Illicit Financial Team"
Etc, etc, etc...

So I think it is time for a new edition of the bitcoin to virtual creditcard question.

There is not a single available solution to go to a general VISA/MC/AMEX card in the US today. Money Transmitter laws (and a host of other regulations) make this a very difficult proposition at the moment.

Some other countries don't have the same issues today, like Canada http://paymentweek.com/2013-11-4-canada-introduces-bitcoin-debit-card-services-238461/ but these solutions are also still in development.

You may want to try https://www.BuyBitcoins.com

They are a little more expensive than other bitcoin exchanges, but allow you buy bitcoins with prepaid credit cards. (Visa only)


Documenting bitcoin cash buys I've been trading BTC in the UK via bank transfer for a while now and may begin doing cash purchases soon. I've realised that it is critical I document the cash withdrawal as an expense so that I get taxed only on the profit and not the entire turnover of the bitcoin sale. Usually this is done via the means of keeping receipts - so I guess I could have some sort of receipt that documents the exchange but I'm not sure where to begin.

What kind of information do I put on it?
What is the bare minimum information I need on the seller?
Considering it is me issuing this document it's not exactly an invoice or a receipt, is there a word for it?

Begin by asking your local tax authority.
They would be the ones able to give you a proper definitive answer.


Lost my Bitcoin wallet and have only 11 out of 12 mnemonic seed phrase words. How can I get my Bitcoins? I am new to the whole Bitcoin thing, and I am having my first attempt almost going sour. I lost where I created my wallet. I have my Bitcoin address and only 11 of my mnemonic seed phrase words (of 12). I attempted using a word I thought was it and then recovered a wallet on bread wallet, but after sync in, it was still zero balance for hours. I contacted the support group and they told me that I had probably made a mistake.

What can I do?

If you are missing the first word and you know the rest of the 11 words, there are 2048 possible mnemonics but only ~128 of them are valid.
Using Python and this library you can print all the valid ones with this simple script:
from cryptotools.BTC.HD import check, WORDS

phrase = "{x} decrease enjoy credit fold prepare school midnight flower wrong false already"

for word in WORDS:
    mnemonic = phrase.format(x=word)
    if check(mnemonic):
        print(mnemonic)

The output is:
alcohol decrease enjoy credit fold prepare school midnight flower wrong false already
alien decrease enjoy credit fold prepare school midnight flower wrong false already
ancient decrease enjoy credit fold prepare school midnight flower wrong false already
animal decrease enjoy credit fold prepare school midnight flower wrong false already
apple decrease enjoy credit fold prepare school midnight flower wrong false already
baby decrease enjoy credit fold prepare school midnight flower wrong false already
bamboo decrease enjoy credit fold prepare school midnight flower wrong false already
become decrease enjoy credit fold prepare school midnight flower wrong false already
blanket decrease enjoy credit fold prepare school midnight flower wrong false already
body decrease enjoy credit fold prepare school midnight flower wrong false already
...

Then you can try them one by one to a wallet that support BIP39. Obviously change the last 11 words in my example with your words.
Good luck!

If you're referring to "11 Characters" of your Private Key- you are out of luck. Brute-forcing the missing characters is not possible, at least not in today's world.

If you're referring to "11 Words" from a Mnemonic Phrase, you are also out of luck. Factoring the astronomical number of possible combinations only a three, four, or five word Mnemonic can contain -, a dictionary attack to hash out the rest of the Mnemonic Phase would be very difficult, with each additional word needed (not sure if you had a 15, or 16 word Mnemonic), creating an massively exponential increase in solving using todays computing power.

Missing 1 Word of a Mnemonic, could be dictionary attacked on a modern PC workstation. Missing 2, nearly impossible unless you know how to dictionary attack, have your rainbow tables all ready to go, but 3 words or more? --There are simply to many possible words, not even including plurals, pre-fix changes, suffix changes, or the plethora of other linguistic alterations one can make to most words rendering it a completely different word altogether.


How to identify the owner of a Bitcoin address? My father's computer was infected with a CryptoWall virus. The virus attacker asks for Bitcoins to send me an app to decrypt my our files.

Is there any way to identify the Bitcoin address owner?

How can I identify his country? How can I let his local police know about this cyber crime?

I didn't send him Bitcoins.

See: http://www.bleepingcomputer.com/virus-removal/cryptowall-ransomware-information

First off, I'm glad you didn't send money as that often does not help in these situations. As for tracking the attacker through their bitcoin address, I'm sorry to say but most likely that is not possible. It's impossible to determine the location of a bitcoin address without some sort of identification tied in. They also most likely would tumble the bitcoins before sending them to any address actually tied to their identity.

You could give all the information you possess to your local police but most likely there is not much more they can do. These type of scams are pretty safe to commit sadly.

It's very difficult to know because Bitcoin addresses are hashes of the public key of a public/private key pair, and it's very difficult to guess the corresponding private key of a public key's hash. And even if you knew the private key, you'd have much difficulty finding who it's real-world owner is.


How is it possible that transactions can be added to a block currently being mined? It seems counter-intuitive that the current block can be hashed and transactions can be added to it, however that is what this thread indicates.

Can someone help me connect the dots (not necessarily regarding that linked network attack) and understand how something under active computation can have its underlying data (list of transactions) changed?

In other words, if a tx isn't "bound" to a block via hashing, how do they relate to each other?

You're thinking that mining a block is a single long computing process, like computing the trillionth digit of pi or something like that. This is wrong. Each attempt at solving a block takes almost no time at all, and each attempt is independent of the others. Miners make many attempts every second. Each attempt has a very small chance of solving the block. It's a lottery, not a race. Modifying the block between attempts isn't a problem.

Another common misconception related to this is that everyone is working on the same block. This is also false. Every miner works on a different block.

One small addition to the other answers:

When a new transaction shows up, the miner stops for a moment, adds it to the transaction list, and starts mining again.  This slows him down because for a short while, he isn't mining.  But, according to the protocol, a client is supposed to accept the transaction history that includes the most transactions.  So, if the miner doesn't stop to add new transactions, he's at risk of succeeding but then someone else succeeding with a longer transaction list.  And then he doesn't get paid.

Edit: Oops, I thought that I read this somewhere but looking again, I didn't.  So why does a miner have any incentive to pause his mining and recalculate the block's hash?  Unless a transaction has a fee.


Buy BTC without linking PAN card and aadhar card How can we buy bitcoins in India without linking our pan card and aadhar card?

Try localbitcoins.com, there is a quick buy option which doesn't require ID


Does getting shares when mining mean that I have earned a reward? So I have 13 Total Shares (Non Rejected) and my pool is Mining Pool Hub. It does not show that I have gained any Ethereum when I go to Dashboard (Under Ethereum) on Mining Pool Hub. Do accepted shares mean that I earned coin or no?

You probably have gained no Ethereum as of yet because even if your shares were accepted by the pool it doesn't mean they were accepted by the network. When your pool mines it's next block the percentage of your shares of the total network will be the percentage of the block reward you get.


Generating Bitcoin Public and Private Keys I managed to write the below code which will create public and private keys

Private Key

$input = "satoshinakamoto";
$sha256 = hash("sha256", ($input));
echo "Private Key: ".$sha256."
";

Public Key

    $step1 = hexStringToByteString("0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6");
    echo "
Step 1: ".$step1."
";
    $step2 = hash("sha256", $step1);
    echo "
Step 2: ".$step2."
";
    $step3 = hash('ripemd160', hexStringToByteString($step2));
    echo "
Step 3: ".$step3."
";
    $step4 = '00'.$step3;
    echo "
Step 4: ".$step4."
";
    $step5 = hash("sha256", hexStringToByteString($step4));
    echo "
Step 5: ".$step5."
";
    $step6 = hash("sha256",hexStringToByteString($step5));
    echo "
Step 6: ".$step6."
";
    $step7 = substr($step6,0,8);
    echo "
Step 7: ".$step7."
";
    $step8 = $step4.$step7;
    echo "
Step 8: ".$step8."
";
    $step9 = bc_hexdec($step8);
    echo "
Step 9: ".$step9."
";
    $step10 = bc_base58_encode($step9);
    echo "
Step 10: 1".$step10."
";
    return $step10;

To generate public key I took reference from https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

In that link they provided Step by Step process and I followed the same and if
I input from Step 1 in the link then I am able to convert the code to public key but I am not sure how to convert Step 0 to Step 1

i.e.

From:

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

To

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

Document says

Take the corresponding public key generated with it (65 bytes, 1 byte 0x04, 32 bytes corresponding to X coordinate, 32 bytes corresponding to Y coordinate)

What does that mean? How can I generate this value from Private Key.

Edit 1

This question says https://stackoverflow.com/questions/17672696/generating-bitcoin-address-from-ecdsa-public-key

Joining the Elliptic Public Key and I still don't understand what are they.

Bitcoin uses point multiplication on the Elliptic Curve secp256k1 to generate a public key from a private key. Basically, this curve has a defined Generator point G, and a method for 'adding' two points together in a way to get a new point (EC Point Addition).

Your private key is just a number, aka a Scalar, so to get your public key you just add the generator point to itself privkey number of times - basically scalar multiplication on the Elliptic curve. At the end, you'll end up with a point on the curve, with an X and Y coordinate, and this point is your public key. Those two coordinates of your point are what is referred to by the document you quoted, using 32 bytes for each coordinate plus a prefix.

The 0x04 prefix used is to denote the fact this is an uncompressed private key. You can also form a compressed version, by just using the X coordinate with either 0x02 or 0x03 prefix, because the Elliptic curve has only 2 values for Y coordinate for each X coordinate (one positive and one negative), so it's trivial to recover the Y coordinate if you know the X coordinate and the sign (based on your choice of prefix).


Is centralization in the Lightning network inevitable? Why (not)? Especially keeping in mind the possibility of single-funded channels (see Tadge's Google Doc Slides), buying from an exchange and concurrently opening a payment channel on the Lightning network would seem a particularly simple entry to the LN.

Exchanges and payment-providers would therefore seem to be in a natural position to become well-connected.

Is it fair to expect emergence of a network topology strongly centered around well-connected nodes such as the aforementioned and other liquidity providers?
What incentives are there for establishing additional connections with less well-connected nodes?
Is it reasonable to expect the network to "flesh out" with alternative connections around the center nodes?

“Centralization” is now a word constantly repeated but is one that, generally speaking,
   no one tries to define accurately.  ---Alexis de Tocqueville, Democracy in America, Vol.1, Part 1, ch.5.

Lightning Network channels will naturally tend to form along the paths of economic
activity.  If you assume (as I do) that most economic activity in
Bitcoin today is from individuals to large Bitcoin businesses (mostly
exchanges), then you should further assume that most channels will be
between users and those very same large businesses.

You can call the centralization if you wish---but it is not a
centralization of Lightning's making; it is a centralization that already
exists for Bitcoin users.

Moreover, even though Bitcoin commerce and trading is dominated by large
businesses, there are quite a few of those large business.  I haven't
looked up figures, but I would suspect that Bitcoin commerce has a much
less centralized distribution than mining at the present time---and with
new businesses offering Bitcoin-payable services all the time, Bitcoin
commerce would seem to be in a steady of progressively becoming more
decentralized.

Sad to see people downvoting this question.

Contrary to Harding's statement that "Lightning Network channels will naturally tend to form along the paths of economic activity", in LN channels... there are no such paths, there is no routing.. there are only channels with btc stuck between 2 parties.

So, yes, if one party is Amazon, you may be able to get an enormous amount of different goods.  And if it's your local tomato-farmer, you can only get tomatoes from them.

So centralisation becomes a certainty in LN, be it coinbase, bitpay, amazon, of whomever is big enough to attract inflows of btc... the only incentive is to get big, and get big fast.


Scrypt (Litecoin) memory / performance tradeoff For Litecoin, if memory size is increased in processing the Scrypt algorithm, for example to 384 kB instead of 128 kB (and assuming likewise an L2 cache size of 384 kB), would the typical CPU architecture (x86, PPC, etc) be likely to see a corresponding increase in performance?  And if increased memory size were used, would mining output remain 100% compatible with Litecoin (I believe the answer is yes, but also I note that almost all GPU miners are using fixed Scrypt parameters for N, r, and p).

I realize that increasing BlockMix memory sizee is not typically done on GPU architectures, for various reasons.  Also as a note my objective is not profitable Litecoin x86 CPU mining -- I just want to be sure I understand the  memory/performance tradeoff.

For Litecoin, if memory size is increased in processing the Scrypt
  algorithm, for example to 384 kB instead of 128 kB (...), would the typical CPU
  architecture (...) be likely to see a corresponding increase
  in performance?

No, it works the opposite. If you increase memory, which is used by the scrypt to generate a single hash, the time it takes to generate it, in theory, will increase. The time may not increase if the processing unit can fully use its fastest cash in a single data transfer call. However, you need standardised hardware and you would want to deliberately adjust scrypt memory size for it. Which is inconvenient on a global users scale.

Moreover, it's not up to you, personally, to decide the memory size of scrypt. This is a universal agreement of all litecoin users, that memory size of the scrypt algorithm has to be N bytes. If you want to use something else, any transaction you issue will never gets validated by any other users.

I believe that most people should try out mining, and then really think about why you are mining.  Curious?  Fun?  Money?  Do you believe in the cryptocurrency?

Personally I think that crytocurrencies are here to stay. Litecoin is second behind Bitcoin, but mining it can be super profitable if the price of what you mined shoots up like Bitcoin.  This stuff is like gold.  No government can de-value it by printing more paper money and diluted its value.  This fits the very description of a good currency.

What if litecoin goes from under 30 a coin to 800 a coin?  You don't care about the $6 /day in electricity that you had previous spent now do you?


What are the trade-offs between transacting on Lightning Network and Bitcoin mainchain? Lightning network's first prototype code is online, so it's about time we learn more about what it is. (At least I wish some people would…)

What are the expected trade-offs of Lightning Network to Bitcoin mainchain?
Some points that would be nice if they got covered:

privacy
confirmation speed
fees
time until spendable

And for the bonus: Will Lightning Network be centralized?

Below describes these points during what's planned to be normal operation. Once a channel needs to be torn down because of a problem with one of the nodes (evil or accidental) some of these answers are a little different.

privacy - Privacy is not a linear scale, but there are a few factors that clearly improve privacy:

Very few transactions actually end up on the permanent and public blockchain. And those are a payment from you to an LN node (or vice versa) and there is no record on the blockchain of the actual destinations (or sources) of the money.
Routing of messages (and LN transactions) will be done in a Tor like fashion (Onion routing) with encryption of the message such that intermediate nodes can't read the transactions nor do they know the true origin or destination (IP address) of the transaction.
To obfuscate your actions, you can pay to yourself from one channel to another, and I'd assume it's a lot easier to do quick and trustless mixing through LN.

confirmation speed - You don't need to wait for any confirmations at all, so transactions are truly instant. Network latency (multiple hops) will be the deciding factor as all encryption and other overhead is low even for relatively low end hardware (phones).
fees - Every hop will want a little bit of fee for the service of forwarding your transaction. This can be pretty tiny though, allowing for true micro payments. In some cases nodes might want to balance out their channels and give you negative fees depending on which direction the money is flowing. This will create an interesting market between all the nodes offering their services and keeping fees fair and low.
time until spendable - Immediate. Any money you receive on a channel you can immediately spend again (through the same channel). If you want to settle on the blockchain and then spend the bitcoins there, you'll first have to close the channel, which under normal conditions requires the standard 10 minutes confirmation time (you don't need more confirmations, although the person you are sending the Bitcoins to might still require 6 confirmations).
centralized - The software is fully open source. Any one can start up a node, put some Bitcoins in and start offering their service to the network and earn some fees for doing it. This low barrier to entry and ease of use should provide enough competition and enough nodes to make it decentralized.

There are some caveats: people will have to put some funds into the node that are at risk if the device gets hacked (initially possibly through bugs in LN, but in general through any malware or badly secured and outdated operating systems). This might be a slightly centralizing force as security is relatively cheaper to do at scale.

DOS protection might be something to think about too. Maybe have the option of using a 3G phone or other channel invisible to the attackers (even sneakernet!) when a true attack is underway and you need to close some channels before they expire. Very little bandwidth is necessary to do that, I'm not sure a DOS attack make uploading a few transactions impossible anyway.

Also I think it's required (or maybe just wise) to run a full Bitcoin node (possibly pruning) on the LN node. LN needs to have access to the blockchain data in a trustless way and need to be able to send transactions to the Bitcoin network reliably in case it's necessary to tear down a payment channel (within a certain timeout). A pruning full node is not that bad to run, but there's a bit of cost that would be lower in a centralized situation.

1.Privacy:
All are better than before.

2.Confirmation speed, Good and bad. It's complicated:

a) Good: If you already have a channel with other party, it's an instant transfer.

b) Bad: If you are new to each other, it takes minimum 1 block time (10 mins) to create a channel and you both need to drop funds into that channel. After the lightning transaction, you need at least another 1 block time to close the channel, so the fund can be spent again to others.

c) Worst: If another party transfer you the fund, but refuse to close the channel(or simply go offline before the channel close), your single-side application to close the channel will take 1.5 weeks or so, to make that fund re-spendable.

d) Special: The market may lead to a situation that a "Super Node" may show up who already have millions of pre-build channel with everyone. So everyone can transfer fund to each other fast. I will explain below.

3.Fees
Generally it will get lower, very close to 0.

4.The Centralize:

a) Sooner or later, the vendors (online market or local coffee shop etc.) will encourage people to create a channel with a "good node" in advance, for the always faster transaction experience. It costs almost nothing to users anyway.

The "super nodes" may start small like a "Sydney local transaction node". Everyone who linked to that node can transfer fund to each other without a delay. Easy for you to buy a cup of coffee in Sydney.

Eventually, some nodes may get bigger, like people will find that if we all join "Australian Super Node", we don't need the "sydney node" anymore.

At the end, There may be 2~6 "super nodes" alive in the world, who have pre-build channel with almost every bitcoin user (people link to them voluntarily) then everyone transfer to anyone will be lightning fast.

b) The "super nodes" doesn't have your funds. The bitcoins you deposit into a channel is moved to a virtual multi-sig address, and the flow of the fund is decided by the "smart contract", it means:

If the "Super nodes" got hacked, your money is still yours, since the "super node" doesn't have your signed contract saying you give up your money. Same as if you holding a signed contract saying you received the fund from another user B, the contract will still be valid and you will have that money.

So the "Super node" is behaving like a "Powerless Middleman" who help to pass the fund around, without the ability to modify anything, even it got hacked.

c) People don't need to care too much about who is the "Super nodes", since they are powerless and everyone can be a new super node.
The only thing that worries me is in that future, if 1~2 super nodes suddenly break down one day, there will be tons of "closing channel" and contract reset requests go back to the main blockchain (suddenly from millions of users). How the main blocks will handle that kinds of flood is still unknown.


can I create addresses based on what I want to look like? Hi I am completely new to bitcoin. I was wondering if it is possible to create addresses based on how the final outcome you would like to be. For example, I dont like something like that 1L5gu6zJHxtAiDM74heP7wW84PYQ5Ltc9o as it is extremely difficult to remember. Could it be possible to create something like that eg., 1L5a5a5a5a5a...c9o i.e. decide the final letters or an approximation?

Not really, a Bitcoin address is the result of applying multiple hash functions to a public key. Since you can't decide how the result of a hash function will look like depending on the input, you won't be able to do so with a Bitcoin address.

You can find the Bitcoin address creation process explained in the Bitcoin wiki.

However, as commented by @m1xolyd1an and @pieter-wuille, VanityGen can be used to create a more personalised address, instead of a purely random one. Since VanityGen is based on a probabilistic search, the pattern that you will be able to include in your address will be quite short. Trying to include long patters requires a lot of time, becoming infeasible.


What is wallet? How is it uniquely identified? What is wallet?
How is it uniquely identified?

What is a wallet?

Its software that stores your cryptocurrency, manages the keys to your wallet, and watches for transactions.

  How is it uniquely identified?

As jakob said above, it is made unique by the keys and addresses.

With the Bitcoin wallet addresses being 26-35 numerals and characters long, you can see how it is unique.

Hope this helped!

It's software that manages your keys, addresses, watches for incoming transactions and creates new transactions. What makes it unique are the keys and addresses. They are generated in pseudo random way.


Why doesn't Bitcoin return lost coins back into the block reward? The idea of putting back lost Bitcoins back onto block rewards seems like a great idea.

I acknowledge that there were quite a handful of early adopters who were generating blocks daily, but had no idea what they were doing. Time passes, they forget about Bitcoin and they format their hard drive or whatever. Their coins enter the nether, never to be seen again.

I wouldn't be surprised if >5% of the current coins in circulation were lost due to mishandling. My question is, why isn't there something implemented for this? I can't find any disadvantage for this feature, it would simple as invalidating coins that haven't been transferred in x amount of time, which is probable for only sorting lost coins.

As Stephen points out it would force people to spend coins. Age is not a proper measure of lostness. A common recommendation for savings accounts is to put them on physical backups such as printed QR codes that you add to while the account itself remains offline. People may even will their Bitcoin savings to their children. To force people to shuffle these coins around from time to time to keep them from being taken undoes one of the major safety features of Bitcoin. Namely that transactions can not be reversed, and your accounts can not be frozen or taken from you by any mechanism.

Also there is no reason. The entire Bitcoin economy could be run on a single bitcoin because of its divisibility. There simply is no reason to break other important Bitcoin features to regain those coins. It wouldn't even actually increase the miners' rewards because for every extra coin brought back the wealth is distributed over more coins reducing the value of each coin with inflation. A million dollars of value spread over 1000 bitcoins if there are 1000 bitcoins in circulation, is the same one million dollars of value spread over 1 bitcoin if there is only 1 bitcoin in circulation.

What about a 'keep alive' algorithm in the Bitcoin client which is setup to 'send coins to self' every 2 - 5 years (where the amount of time picked is a balance between time and the generation of unnecessary transactions). Anybody running the client and maintaining a wallet with coins would automatically have their coins kept 'fresh' with the appropriate refresh interval. The client would then be setup to 'cull the blockchain' by ignoring transactions that are 'stale'. Destroyed coins could then be added back as an extension of the mining rewards.

I suspect this proposal essentially parrots what @David Schwartz mentions in his answer.


Is there a (potential) "Blockchain size problem", and what solutions are available? As more and more Bitcoin transactions are produced, the growth of the Blockchain may well, one day, become a problem for systems which want (need?) to store the whole blockchain.

Storage usage
Client startup time
First-time synchronisation

This answer to "Are there any studies into the size of the blockchain scaling over time?" suggests that Simplified Payment Verification is a good solution, but SPV, as far as I understand it, requires a degree of trust in individual peers that may not be to everyone's taste.

Although I don't really understand the blockchain well enough even to know if this is sensible, the sort of thing that occurs to me might be a mixture of SPV with partial blockchain caching (least frequently used?), where the client keeps a small piece of the blockchain.

Is this really a problem, and is there any work in progress to solve it?

Alternatively, if this isn't a problem, please help me to understand why.

Currently, only full-nodes, i.e. nodes that have the complete blockchain inventorized relay blocks. Personally, I've recently encountered the first problem, when my Linux partition ran out of storage, yet if I had chosen a bigger partition size, I'd be able to even afford a multiple of the 50GiB easily.

Storage usage: Currently, the blockchain is about 50GiB. If it continues to grow at 1MiB per 10 minutes, storing the complete blockchain should remain affordable for those that want to.
For all the others, there now exists the option to run a pruning node. Once pruning nodes will be enabled to relay blocks, I would expect that the number of serving nodes will start to climb again.
There would need to be some nodes with the complete blockchain to secure history, though.
Client startup time: This may become a problem at some point, but the blockchain data doesn't get checked every start-up, rather synchronization only runs once for each block. So, with a current computer, I don't think it is an issue now or in the foreseeable future.
First-time synchronization: Synchronization has been dramatically improved with the release of Bitcoin Core 0.10. Now, only the block headers have to be processed in order and all other block data may be processed in any order. This and other tweaks have drastically reduced the time necessary to catch up with the network. My computer can now do initial synchronization within a few hours. As processing power will scale, I expect this to remain manageable for the foreseeable future.
Update: The coming 0.12 release will additionally increase synchronization speed by x5, due to validation of signatures being run through libsecp256k1, a library that has been specifically coded to run Bitcoin operations more efficiently.

It IS a problem - the synchronization time and size of the blockchain is too long and large, respectively.

But for many other business it may be OK because not too many transactions.

There needs to be a solution for bitcoin, blockchain size and synchronization times. It's the main reason I do not use bitcoin.


Why are negative fees not allowed? Why does Bitcoin consensus require blocks to contain only non negative fee transactions? Also why does the coinbase have to be the first transaction in a block with this rule lifted?

Instead of having those rules, which need to be special cases in the software, I suppose one could just have this rule:

  The sum of all outputs in a block minus the sum of all input values in the block must not exceed the block reward.

This rule is already in place to check the block reward, so the other two rules seem useless. A miner which includes a transaction with a negative fee will have to pay for it by the one rule, so nothing bad can happen.

If Bitcoin was using just this one rule I could imagine interesting things could be done with CPFP.

One possible reason I could think of was spam protection, however nothing prevents me from creating a huge amount of spam transactions with 0 or 1 satoshi/B anyway.

Very interesting brain teaser. I agree that this could be interesting in combination with CPFP. The sender could defer the transaction fees to the recipient which would probably be an interesting proposition for some services in the Bitcoin space.

There are a few problems with negative fees from an operational perspective, though:

The sender defers prioritization to the recipient. However, if the sender needs to access the funds that are assigned to the change output of the transaction, he'll either have to CPFP the transaction himself after all, or doublespend the transaction to add more outputs.

In the first case, he ends up paying the fees himself, in the second case, he creates a scenario where multiple valid conflicting transactions float about unconfirmed, and since he doesn't know which one will confirm first, he'd better also broadcast all alternative complementary transactions.

I.e.

tx1: S --> R1 + C

tx2: S --> R1 + R2 + (C-R2)
tx1b: C --> R2 + (C-R2)

This would quickly increase the amount of transaction combinations that could be accepted on the network, create unnecessary network traffic, and would create a headache for fee estimation: At the same negative feerate, it would be much cheaper for R1 to just purchase tx1, while R2 would have to come up with the fees for tx2 (which is cheaper than tx1+tx1b).

In general, if there are multiple recipients to the transaction, the first to spend from the transaction has to pay for everyone to receive their money.

Another problem is that it may further incentivize out of band payments for transactions which at a larger scale could cause unpredictability in transaction confirmation times, and may skew other incentives in the network.

A negative fee transaction is a transaction whose outputs' value is larger than its inputs. So that transaction is effectively creating money out of thin air.

The transaction creator is thus getting free money, that's why such transactions are not valid, even if the money created out of thin air would be compensated by a lower block reward for the miner.


Is there any party who is archiving all transactions that have been broadcast? There is a person claiming that Blockchain.info/wallet sent a transaction but for whatever reason that transaction never got included in a block.

If the transaction is valid today but perhaps just didn't get re-broadcast for whatever reason and has since expired from each node's memory pool, any party  with an archive of transactions could re-broadcast that transaction and it now might get included in a block.

Does anyone maintain an archive of all transactions, for instance, by archiving each OnTransaction event in BitcoinJ?

Anybody that has downloaded the blockchain has a log of all transactions. Blockchain.info should have it. In the future only accept confirmed transactions


Which VPS providers are the most popular or notable for hosting bitcoind instances? A lot of people wanting to create their own service communicating with a bitcoind instance use virtual servers for hosting due to the low associated costs. Which service providers are the most popular and notable in this field?

BitVPS offers a VPS with a pre-installed and synced bitcoind, and of course they accept payment in Bitcoin.  Email the owner (james@bitvps.com) for details.

http://www.yokucloud.com

YOKU Cloud is a bitcoin supported hosting provider.


Bitcoin cash with bicore and addressindex Bitcore runs a version of bitcoind where theres address index and we can search any addresses I have implemented the bitcoin insight block explorer and its working perfectly

I need to implement bitcoin cash (bitcoin ABC or Unlimited) but my question is can I search using addresses if I mix bitcore + bitcoin cash

I mean does bitcoin ABC comes with address index function ? thats compatible with bitcore ?

Bitcoin Cash client does not support address index like Bitcoin, so you need a patched client to use this feature. You can use https://github.com/bitprim/bitcoin-abc. I also forked bitcoin-abc with address index feature. This repo is in https://github.com/Sotatek-DucPham/bitcoin-abc. Follow the build guild and get your bitcoind, remember to add usecashaddr=0 in bitcoin.conf before run. Good luck.


Will there be 21 million bitcoins eventually? Every x blocks the mining reward is halved. Will the reward be halved forever such that we never quite reach 21 million bitcoins, or will we reach 21 million bitcoins at some point and will the reward cease to exist altogether?

Extra points for pointing to the relevant code!

People say the total will be 21000000 BTC.

... however:

The 1st 210000 blocks each allow creating 50 BTC.
The 2nd 210000 blocks each allow creating 25 BTC.
The 3rd 210000 blocks each allow creating 12.5 BTC.
...
The 10th 210000 blocks each allow creating 0.09765625 BTC.
The 11th 210000 blocks each allow creating 0.04882812 BTC, and not 0.048828125 BTC, because only 8 decimals of precision are supported.
...
The 33rd 210000 blocks each allow creating 0.00000001 BTC.

After that, the reward is 0.

If you sum all these numbers together, you get 20999999.9769 BTC.

... however, either due to an oversight or intentionally, the coins created in the genesis block cannot be spent.

This leaves us with 20999949.9769 BTC.

... however, due to an early problem in Bitcoin, fixed by BIP30, it was possible to create a coinbase transaction identical to a previous coinbase. This caused the coins created by that older coinbase to be irreversibly "overwritten". This happened in block 91842 (overwriting the coinbase of block 91812) and 91880 (overwriting the coinbase of block 91722). Each time, 50 BTC was lost.

This leaves us with 20999849.9769 BTC.

... however, the protocol rules allow creating up to the amounts listed above. Due to various bugs and miners experimenting with code, some blocks claim less than allowed. Those coins can never be recovered.

Block 124724 tried to intentionally claim 0.00000001 BTC less than allowed, but accidentally also failed to claim the fees, losing 0.01000001 BTC.
Between block 162705 and block 169899, 193 blocks claimed less than allowed due to a bug, resulting in a total loss of 9.66184623 BTC.
Between block 180324 and block 249185, another 836 blocks claimed less than allowed, resulting in a total loss of 0.52584193 BTC.
Block 501726 had no transaction outputs (except a 0-value commitment), losing the entire 12.5 BTC subsidy.
Block 526591 didn't claim half of the block reward, losing 6.25 BTC.

This leaves us with 20999821.02921183 BTC.

... however, since recently there is a concept of provably unspendable coins. Coins can be sent to an "address" which provably burns them (using OP_RETURN). Bitcoin Core tracks these and removes them from its database, so they are easily accounted for. At least 3.71612692 BTC were burned this way.

This leaves us with 20999817.31308491 BTC (taking everything up to block 528333 into account)

... However, various wallets have been lost or stolen, transactions have been sent to the wrong address, people forgot they owned bitcoin. The totals of this may well be millions. People have tried to tally known losses up here.

This leaves us with: ??? BTC.

20997107.88801356 once you remove the 2709.42507135 BTC “burn addresses” i.e. the bitcoin addresses with almost assuredly no earthly known private keys and therefore unspent lost forever. There are ~400 burn addresses with a total balance of 2759.42507135 as of Dec 2017 (2709.42507135 excluding the genesis block). Last year the burn addresses balance grew by 8.97 BTC