What is the format of a bitcoin wallet? I was wondering how bitcoin public and private keys are generated. E.g., a certain number of characters etc.  And how one could tell a litecoin address from a bitcoin address for instance.

the private key is only a (very big) integer-number. this number used as private key is all you need to generate a public key with some more or less complex mathematical operations and this private key is also the only thing which must be your secret. anyone can know your address and your public key, no problem. with the public key you can generate the address of the public key. (=>public key and address are not the same.)

a common used format to store a private key is the WIF-format. you can convert a private key to the wif-format and vice versa.

many people call a keypair (containing private- and public key) a "wallet". but technically you don't need any software to have a wallet. you can have a paper wallet for example as long as you do not want so send your funds to have full access to your funds.


Pool mining website need to be logged in? Do i need to be logged in on the website mining pool to mine coins? Can i log off the pool mining website and just leave cudaminer running and still mine coins in the mining pool?

You don't need to be logged in all the time. You just need to leave your miner (cudaminer) running.


How to dynamically generate bitcoin receive address with a Nano Ledger S? Is there a way for me to create an app for only my personal use, on my iPhone, that would create a valid receive address for my Nano Ledger S? I know that all of the address are derived from a master key, is there a way for me to determine what the master key is, and create software to create my own valid addresses?

I am looking for a way to easily accept BTC in person, with a new address, without having to carry a hardware wallet around.

You can export your extended public key from the ledger app, by finding the appropriate command in the settings menu. Using the xpub and appropriate software, you can generate many receiving addresses that can be stored on your phone.

Alternatively, you can create many new ‘accounts’ in the ledger bitcoin app, and each will show you a unique address that you could copy to a text file on your phone. (This is a workaround to ledger only showing one receiving address at a time otherwise).

(Originally a comment, but it kinda turned into an answer)


Gear/approach to legimitately mining (not buying) a single Bitcoin Background
I have a relative who has been trying to get into Bitcoin mining. He accidentally installed malware onto his home PC twice, thinking it was a mining tool. He understands mathematics but is not well versed with modern technology, PCs, etc.
Question
What sort of hardware/software/etc would I purchase if I want to have a standalone device sitting (quietly) in the corner of my office that would have a reasonable expectation (95%+ CI) of earning a single coin within, ideally, 6 months? The power/hydro bill isn't a problem, as I'll be paying it. It's to my understanding that I need to consider ASIC/FPGA-based boards to be remotely competitive.
Goal
My goal is to pre-mine a single coin, give him the box as a birthday present, and have a cron job add the coin to his wallet at a set date. I think it'd make his day (day he always felt lucky).
Additional info
How do I help him legitimately cash-out his single bitcoin, so that the bulk of the face-value is cashed out, and he has a receipt he can file properly at tax time?

Bitcoins aren't mined individually; they're awarded to miners who discover a block.  This process is like a race that restarts every ten minutes when a new block is mined (the miner gets a block reward plus transaction fees).

In order to have a shot at winning these races, mining operations use expensive arrays of custom hardware.  So, without that, you would have a pretty slim chance of discovering a block before one of them did.


Do banks control ripple and how? I would like to know how banks are controlling ripple. What are the implications with regards to transaction fees? If I sell my ripple, what do I stand to lose in terms of bank charges?

Banks don't control Ripple. Ripple is a corporation that is controlled by its stockholders. XRP is a cryptocurrency that trades on a public ledger. If you sell XRP on an exchange, you pay whatever the exchange charges, just like with bitcoin or Ethereum.


Are hardlinks responsible for the bitcoin data directory appearing larger than expected? I was running bitcoind from my Linux box. I stopped the command when ~/.bitcoin size was about 5.8GB.

Today I started the daemon again. ~/.bitcoin size is now 7.2GB. Here is says that the blockchain weight about 6GB: http://blockchain.info/charts/blocks-size.

Is that webpage wrong? Maybe bitcoind is downloading everything again and mixing both downloaded block, thus increasing the size to more than the stats at blockchain says.

A call to getblockcount returns: 225531

EDIT: I've found the total blocks count here: http://blockexplorer.com/q/getblockcount (228972). I guess blockchain.info is not updated.

The cumulative filesize of the bitcoind/bitcoin-qt directory has been a source of confusion since the introduction of v0.8 because it hardlinks multiple files within the directory. Briefly, two files point to the same data on the disk. So if you sum the size of the files, you don't get the total amount of data actually on the disk. In this manner, you can put 10GB of files on a 1GB USB, for example.

Can I resume a blockchain download?

Yes, absolutely

Is blockchain.info is updated?

Currently, yes.

Is the size of the bitcoin data directory easy to understand

Somewhat, you need to understand hardlinks. Your OS might double count some files, leading to confusion.


Where can I find altcoin inflation rates? I know I can use coincap.io and CoinMarketCap to see a lot of good information about altcoin relative values, and cryptocompare has good detailed information, but where can I access inflation rates for each currency?

I could find the info by reading white papers one by one, but I'm sure someone out there has already done this?

Maybe this sites will help this is from which ones I get all info normally
https://etherscan.io
or
https://www.blockchain.com/explorer
or
https://www.coinlore.com/


Do transactions happen globally synchronized? Since Bitcoin validates transactions by the majority of peers, and stacks ALL transaction history chain to some kind of hash, is then the following statement true?

  Only one transaction can happen at the same time. And only when it's
  processed completely, other transaction can be processed.

If yes, will that be very slow? Considering a transaction must be broadcasted to majority nodes to complete.

If not, how does Bitcoin achieved that? (I assume not)

No, that is not correct. Transactions can happen in parallel, asynchronously, and do not need to wait their turn.

When someone creates a transaction, they send the transaction statement to their peers. Those peers verify the validity of the transaction, i.e. they check whether it adheres to the rules of the protocol, then in turn will inform their peers about the transaction, so that the news of a new transaction cascades through the network quickly. The nodes will relay transactions as they get to know them, so a lot of transactions can be spread around the network at the same time.

As you can see, different nodes will know about different transactions at the same time. That's fine though, because order doesn't matter at that point unless transactions depend on each other. This uncertainty gets resolved, once a transaction gets included in a block, which we call "confirming a transaction".

As miners learn of a new transaction, they'll include it in their set of transactions that they are trying to confirm. When a miner succeeds and finds a new block, this block includes the list of transactions that they wrote into the block. All these transactions are considered confirmed by the block, the block represents an atomic increment of the network's state. Just as transactions before, the block will then get relayed through the network.

As other nodes receive the block, they verify that it is valid, and subsequently update their local representation of the network's state: They update their blockchain, remove consumed and add new transaction outputs to their "Unspent transaction outputs pool", and remove confirmed transactions from the "Unconfirmed transaction pool".


Do the leading zeros in the desired hash pattern for mining change? If I understood it well, miners collect transactions in temporary files on which they apply a cryptographic function. The result will be reviewed against a desired pattern.

Does this "desired pattern" always have the same leading zeros? Or does that change now and then?
If it changes now and then, what triggers this?

Q: does this "desired pattern" always have the same leading zeros?

No.

  Or does that change now and then?

It changes every ~14 days (2016 blocks). The change depends on the hashing power of the bitcoin network at that moment. The new required hash needs to have that many leading zeros so that it takes ~10 minutes to find that hash.

  Q: If it changes now and then, what triggers this?

An algorithm triggers it. It's built into the bitcoin protocol. Every 2016 blocks the difficulty of finding a new block is recalculated.


Transactions tree not list? I try to understand how Bitcoin handles change or the combination of multiple transactions to provide sufficient funds for a given price.

Bitcoin transactions contain an array for the input transactions and an array for the UTXO outputs (vout).

For example: If I'm Frank and I send Charlie 1 BTC with an input transaction which holds 1.2 BTC, does that mean, that my next TX using the 0.2 BTC and Charlies TX using the 1 BTC form two new TX chains?

Or would I just reference the latest TX in the chain of transactions, containing both parts of the 1.2 BTC and sometimes the 0.2 BTC is referenced as VIN element and sometimes the 1.0 BTC?

In your example, there will be two chains of transactions as different transactions are spending the outputs of one transaction. Because there are two distinct transactions spending from those two outputs, there are now two transaction chains coming from one transaction. However this does not mean that the transaction chains won't converge or meet. Calling it a transaction chain or a tree isn't really accurate. It's actually a directed acyclic graph.


outputScript in 78203a8f6b529693759e1917a1b9f05670d036fbb129110ed26be6a36de827f3:0 is PUSH {pubkey} OP_CHECKSIG (p2pk) so you should put only signature in final transaction without public key


Base58Check encoding: Using for Version 4 UUID? Can Base58Check encoding be used to encode a Version 4 UUID?

This would be handy for the same reasons as encoding Bitcoin public keys in Base58Check instead of Base64.

I've read the Bitcoin wiki pages on address encoding and the list of address prefixes, but it isn't clear whether Base58Check encoding can be used reliably for version 4 UUIDs without reserving a prefix somehow. For example, U for UUID.

Nothing is preventing any sort of data from using Base58Check encoding, but I'm not sure why you would want to. There's already a multitude of 'altcoins' using a variety of address prefixes though, so you might run into issues should one of them become a real-world success.

In reality, I'd just avoid having users typing a UUID-type string at all, then you don't need to worry about having the typing friendly characters and checksum.


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

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

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

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

* Shows only blocks, doesn't show transactions.

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


How to send a 100KB OP_RETURN? I'm trying to send an OP_RETURN transaction, and the program says that I can't do it because it is over 80 bytes. I would like to send a transaction using OP_RETURN that stores data. There is a site called https://bico.media/, but I can't use it because I want to use the testnet.

Note: I know that this is bordering on off-topic, but it makes sense and is related to bitcoin. I want to ask how to send an OP_RETURN that large easily, and I think it would be applicable to bitcoin SV too.

You will not be able to send a transaction with an OP_RETURN larger than 80 bytes unless you mine a block that includes the transaction. An OP_RETURN larger than 80 bytes is considered non-standard, but still valid, meaning nodes will not relay your transaction (on default settings) but will accept the transaction if it is included in a block.

An alternative would be to create multiple OP_RETURN outputs, each of 80 bytes, totaling to your 100KBs. This would require 1,280 OP_RETURN outputs which, again, would be non-standard as it is larger than the maximum relay transaction size for nodes (100KB). You would again need to contact a miner/mine it yourself in a block, or split the OP_RETURN values in half and include 640 OP_RETURNs in one transaction and 640 OP_RETURNs in another transaction.


How can I calculate how long it took a transaction to be confirmed? Is it possible to calculate - or even reasonably estimate - how long it took for a transaction to be included in a block after it was first created?

I'm asking about already confirmed transactions which are already included on the blockchain - and all transactions - not just ones that belong to me.

I am currently building a project which scrapes a given blockchain for whatever info/attributes a user desires. You can check it out here - be warned it's no where near ready for production and not even at version 1 yet - but the develop branch is getting close.

As I understand from the docs and the answer to this question the time received attribute is not, as some may think, the time a transaction was "received into a block" but rather the time when my client first noticed the transaction - this attribute is also not available when using getrawtransaction. So that's a no-go.

Ideally, I'm looking for the time that a transaction is created (sent) and the time it is included (confirmed) on a block.

Based on the above info my idea is:

for new (unconfirmed) transactions we record the time that my node
first notices the transaction
then we record the time that my node
notices it is confirmed

This would at least give me an indication as to how long it takes newly created transactions to be confirmed. Of course latency adds a huge amount of noise here, but it's at least a step in the right direction!

I would like to do this for existing, confirmed transactions if possible.

Thanks for your time.

Unfortunately, at least for bitcoin and litecoin (and likely most bitcoin derivative block chains), the only way to get this information is to have a node/client listening at the time the transaction appears on the network.

Otherwise your client will simply use the block's timestamp for each transaction.

This design means that getting this information is only possible if using a third party who was maintaining a copy of the blockchain at that time, or potentially getting a dump of a trusted source's blockchain which should (I believe, although I haven't tested it myself) maintain the original client's timestamps.

Would be great if someone could confirm this. I will myself if I get the chance to test it but that might not happen any time soon.


Blockchain-based polling/voting systems In a blockchain-based polling/voting system, what is the best way to ensure that nobody votes more than once, and what is the best way to keep votes secret (if that's a requirement)? The info available in the blockchain should be 1) who voted and 2) how many votes for each option.

You can use colored coins to do voting on the Blockchain.

You can start by creating "Vote coins", and issue as many of them as you have registered voters. Then you ask the voters to generate a Bitcoin address, and that they give it to you.

You then send 1 "vote coin" to each of those addresses. You designate two or more addresses, one for each candidate/proposition. Finally the voters have to send the vote coin to the address representing the proposition they want to vote for.

When the vote is closed, you simply look at the "vote coin" balance in each of the two addresses.

The votes are secret because nobody can tell which address belongs to which voter.

Coinprism is a web wallet that lets you issue, send and receive your own colored coins. It's quite simple to use.

For secrecy, the voters could go to the voting office, the officials verify that the voter is allowed to vote, the voter writes down his address on a piece of paper, and slide it into a sealed box. At the end of that registration process, the voting office has a box with 100 pieces of papers with each an address. They can then send the "vote coins" to those 100 addresses, without knowing which belongs to whom.

Of course, this is just an illustration, it's possible to achieve the same without requiring people to travel using the equivalent process implemented as open source software.


Test failure for Multibit on Windows I am trying to compile Multibit on Windows:

Windows 7,
IDEA 13.0.2,
Maven 3.0,
Multibit 0.5.16.

I am able to compile, but when I try to test there are always 2 failures:

Running org.multibit.file.ExportTransactionsSubmitActionTest
11:31:54.896 [main] DEBUG org.multibit.model.BaseModel - Initial view from properties file is 'WELCOME_VIEW'
11:31:55.671 [main] DEBUG o.m.model.bitcoin.WalletInfoData - The wallet version in the constructor was '3'. In the wallet info file it was '2'. Using the latter.
11:31:55.678 [main] DEBUG org.multibit.file.FileHandler - rememberFileSizesAndLastModified: Wallet filename C:\Projects\BCColors\multibit-master\.\.\src\test\resources\wallets\protobuf1.wallet , walletFileSize 986 ,walletFileLastModified 1393765318000 ,walletInfoFileSize 688 ,walletInfoFileLastModified 1393765318000
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.8 sec <<< FAILURE!
testExportTransactions(org.multibit.file.ExportTransactionsSubmitActionTest)  Time elapsed: 0.799 sec  <<< FAILURE!
junit.framework.ComparisonFailure: Row 1 incorrect expected:<29 Jul 2013 1[0]:23,"Sent to ""unenc...> but was:<29 Jul 2013 1[2]:23,"Sent to ""unenc...>

and

Running org.multibit.viewsystem.swing.action.CreateNewReceivingAddressSubmitActionTest
<......>

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 46.048 sec <<< FAILURE!
testAddReceivingAddressesWithEncryptedWallet(org.multibit.viewsystem.swing.action.CreateNewReceivingAddressSubmitActionTest)  Time elapsed: 46.047 sec  <<< FAILURE!
junit.framework.AssertionFailedError: Wrong number of keys after addition of 20 keys expected:<22> but was:<2>

And more common question. Multibit code is very poorly documented. Does anybody have any reference/tutorial/explanation about it?

The tests you mention are tests that drive the UI classes directly. They are a bit like robot tests and are a bit fiddly. If you don't run those specific tests you lose a bit of UI test coverage but no coverage of the deeper classes.

RE: the code being poorly documented: There are lots of Java doc comments, pretty much everywhere. You'll appreciate that the documentation effort has been much more on the end user side of things. MultiBit is a fairly typical MVC architecture, though of course it has accumulated a fair amount of cruft over time. Surprisingly code is almost always documented in line.


What advantage do Mt.Gox or Kraken have over Coinbase? I just verified at Mt. Gox and am pending verification at Kraken.  However, I quickly realized that there were hurdles that I needed to jump through in order to get my USD into BTC.  Coinbase was a much easier alternative.

What advantage do Mt. Gox or Kraken have over Coinbase?  I realize it's quite easy to move BTC into both Mt. Gox and Kraken hosted wallets.

Is it purely anonymity, pricing, or something that I'm missing, like trade execution features?

An important advantage they have over Coinbase is that they can offer a service to other people than U.S. inhabitants.

mtgoxUSD may be by far MtGox's largest market, but don't forget that mtgoxEUR and mtgoxJPY are still the 5th and 6th largest markets that exist. More trade volume means more robust and stable prices which is a good advantage as trader.

I'm not familiar with Kraken, so I can't speak for that.

Also, Coinbase does not support limit orders. This is very important. Read the link or search a little about limit order and you will understand.


Will a bitcoin miner work for other currencies? If I purchase a card (or similar device) that claims to mine Bitcoins at 10 GH/s, will that device also work for other currencies?  That is, would the device also work on a multi-pool for litecoins, dogecoins, etc?

ASICs (Application-specific integrated circuits) are especially manufactured for one specific hashing algorithm. Therefore, a Bitcoin ASIC using SHA-256 will not work for Litecoin or Dogecoin as they both use Scrypt. One example for ASICs are the Butterfly bitcoin miners.

There are altcoins that also use SHA-256, such as Freicoin, Peercoin or Namecoin. An overview can be found at altcoins.com.

CPU and GPU can be used for any Coin, but the number of hashes will be different. A card mining SHA-256 (Bitcoin) at 10GH/s will produce much fewer hashes in Scrypt (Litecoin, Dogecoin), because Scrypt is much more complex.


Bitcoin private key and address generator in golang I am looking for a golang alternative to https://github.com/richardkiss/pycoin . So far I have found https://github.com/btcsuite/btcd but have not figured out how to generate private keys and addresses using btcd. The Python pycoin has a very handy ku utility to generate private keys and addresses from integers.

Is it possible to generate private keys and addresses from integers using https://github.com/btcsuite/btcd ?

TIA.

btcd does no support this functionality by design, however you can use btcwallet which is written in golang and support what you want

https://github.com/btcsuite/btcwallet

here is a similar question https://github.com/btcsuite/btcd/issues/1308


How many bitcoins would it require for a sustained DOS attack on bitcoin network? How many bitcoins would it require for a sustained DOS attack on bitcoin network?

Without transaction fee, how many bitcoins would that be?

How many transactions could we generate with 1 BTC everyday (without fee)?

7 transactions per second times 60 equals per minute times 60 equals per hour times 24 equals per day = 604800 satoshis sent in individual transactions.

However, nodes filter such so-called "dust" transactions. The minimum output amount for a transaction to be relayed by the network is 546 satoshis. So: 330220800 satoshis = 3.302208 BTC to fill the network for a day.

(As explained in, http://www.reddit.com/r/Bitcoin/comments/37z9ln/how_much_btc_needed_to_fill_entire_1_mb_block/crqzv63)


Can you use BTC without mining? Question: Can I just buy/sell/trade to BTC and hold it and still be profitable? I mean with money you'd need to invest it in stocks, bonds, and etc to make more cash and simply holding on to cash over the long term means the same as losing money. Is this also true with BTC? Will I be losing money if lets say I buy 2 BTC coins and just leave it alone without investing it?

Yes, for most people it is an easier option to obtain bitcoins through an exchange (or a private trade perhaps) than through mining.

The current market price of Bitcoin is essentially based on a balance between 2 outcomes:

the anticipated probability of Bitcoin becoming completely worthless in future (eg if the encryption failed, or maybe if multiple countries outlawed it)
the anticipated probability of Bitcoin becoming far more popular (and more highly valued) than it is now

The first outcome would probably lead to a price of around zero, and the second outcome could lead to a very high price.

No matter what you believe, Bitcoin is dependent on many factors beyond the control of an individual.

If you hold on to bitcoins, you're essentially hoping for outcome number two.


Someone is using a bitcoin account to blackmail me Someone using a bitcoin account is trying to blackmail me. The account number is 1Mtsd3wXgkJnApaNpqaSSWLC6gCLBBxuaGG.
I still have the email they sent me. I can also provide that email if needed, or I can provide full detail.
I wasn't sure where to email or how to report this, can you direct me to the right place?

Blackmail should be reported to your local police.

This is a question and answer website where ordinary people like you and I share helpful information on a voluntary basis. We don't run bitcoin (no one does).

The number is not an account number, it is a bitcoin address. Those are not really traceable to any specific person, computer or place. People like the FBI may be able to eventually track down criminals using bitcoin on a large scale but we can't.


Blockchain.com wallet was compromised and btc stelon I lost some money in a ico scam and googled and found a reclainfund ltd to recover fund. They ask me to  set up a blockchain.com account and then share account wallet id and password so they can transfer stolen fund. I did that. then I transferred 0.51 btc to my account and then changed my password.  now it seems to be hacked and my btc is gone and all transaction history is gone.  The weird thing is the blockchain's account left panel is totally empty now once I login and I can't see any transactions. how could that happen ? I wonder if someone inside blockchain.com is associated with hacker or scammer. that is really some high level scam I have ever see.
my question is in my blockchain.com account, where is the private key that they can steal and copy and it can bypass my changed password ?

They only needed to have access to your account a single time to have exported your private key, then that wallet is compromised for good. Your password encrypts the private key as stored on Blockchain.com's server (so that Blockchain.com can't read the key) but it doesn't change the private key itself.


How many peers do you need to securely synchronize with the blockchain? What is the minimum number of peers required to securely synchronize my local blockchain copy?

One! Your full node will check every transaction and every block for validity while synchronizing. You therefore can be sure that whatever blockchain data your node accepts follows all rules of Bitcoin. If you are provided the correct blockchain, a single node will be able to provide all data for you to catch up with the network's blockchain tip.
That said, your node will accept any data that follows all rules of Bitcoin. If an attacker knew that you were going to synchronize from scratch, they managed to sybil your node, they could attack you in two ways. First, they could withhold data from you, i.e. not give you the complete blockchain. The attacker could use this to set you up for a doublespend, by sending you money that they've already sent somewhere else in a block that they didn't tell you about. This is easy to defend against, by requiring confirmation before accepting payments or by verifying your local blockchain tip against the network's via third party resources such as blockchain explorers.
The second attack would entail feeding you a series of blocks that are not part of the most-work blockchain. This would require an immense amount of work as the blocks would have to adhere to the current network's difficulty level to pass your full node's verification. These blocks would have to be tailored to an attack on you, to include one or more transactions that send money to you that the attacker wants you to be believe to be valid. Mining valid blocks that are not part of the most-work chain is an investment on par of finding the same number of blocks in the most-work chain. Unless you're routinely accepting very large payments with few confirmations, you are not a likely target to such an attack on the Bitcoin blockchain. Note that some altcoins have very low difficulty levels and the cost of creating valid blocks would therefore be significantly lower.
The latter two scenarios are why generally Bitcoin nodes will connect to eight peers (and SPV nodes usually to four) and compare all of these peers' information about their best blockchain tip. Your node will still only download each piece of blockchain data a single time (as it can verify that it is part of the most-work blockchain).


Method of spending LTC Litecoin from a paper cold wallet? I know mycellium has a feature for BTC where you can spend partial amounts from a Bitcoin cold paper wallet. Is there something like this for a LTC Litecoin cold paper wallet? I just want to spend a few ltc, but not sweep the entire paper wallet.

You can import the private key, spend part of it, send the change back to the same address, and delete the key. This would leave a lesser amount in the same paper wallet, but is generally not a good practice (address reuse).

Also, if the address has multiple inputs, you can just spend X if Y distinct inputs with exact change and that will work too.

litecoin-cli importprivkey 1LYourPrivateKeyThatIsWrittenOnThePaperThatYouWantToKeepForSomeReason


How is it possible that webservers with deterministic wallets can produce public keys without knowing the underlying private key? I came across this quote on bitcoin.it: BIP_0032

  elliptic curve mathematics permit schemes where one can calculate the
  public keys without revealing the private keys. This permits for
  example a webshop business to let its webserver generate fresh
  addresses (public key hashes) for each order or for each customer,
  without giving the webserver access to the corresponding private keys
  (which are required for spending the received funds).

This lead me to read more about some custom wallet implementations, namely pycoin. After looking through the code, I still can't understand how it is possible to generate public keys without giving the server access to the private key.

What i understand of this bip is that it uses a deterministic wallet (or a wallet that only needs the seed key to regenerate key pairs). An example of a deterministic wallet is electrum and also brain waller. These two services i know electrum more than brain wallet. Basically, what electrum does is gives you a 128bit root key in the form of a series of words.From this root key any public key can be hashed out. Part of the ease of refreshing these "old/lost" public keys is because you can not generate more public keys than have already been determined (deterministic) by the length of your seed.
How it works is described by Gmaxwell on bitcoin talk

https://bitcointalk.org/index.php?topic=19137.0
Introduction on what has been discussed on IRC

  I've discussed this enough on IRC that I thought I ought to put it someplace more lasting.

  Bitcoin really ought to offer and default to using deterministic wallets.   The additional security of the current pre-generated ones is fairly small considering how most people use bitcoin and the liability of harm due to insufficient backups and increased pressure to keep a single wallet online is enormous.

  What is a deterministic wallet?  It's a wallet which you can backup once and it stays backed up forever because all future addresses are determined in advance. It can also be stripped down to a very small size which could be easily backed up on paper (e.g. with a QR code). This is in contrast to the current non-determinstic wallets where the keys are random but are precomputed ahead so that you're safe only if you backup at least every 100 get addresses or sends, and which grow large and harder to backup on paper over time.

  I've found the backup behavior of the current wallets fairly difficulty to get even moderately technical people to understand. The current system provides enough safety to encourage complacency but not enough to make complacency acceptable.  The positive side of a non-determistic wallet is that it becomes "unstolen" over time but people are frequently reusing addresses and attackers will not act slowly regardless.

So the tl;dr, its hard to back up a current wallet.dat file  because there are way too many private root keys made (as infinite as can be). So the author proposed that a deterministic wallet can only make a certain number of keys because there is one set private key or seed. This deterministic wallet is possible because keys are all hashed the same way (they all use the same root, or base. Or same parent)

  There are two types of deterministic wallet I'd like to discuss. I'll call them type-1 and type-2.

  Type-1 is the most obvious kind:

  The wallet stores a large random seed  S (which can be encrypted if the user uses wallet encryption)

  Privatekey(type,n) is then simply set to H(n|S|type)  where H is an acceptable secure hash function and type can be set to different values for change addresses vs displayed addresses (so this distinction is preserved even if new wallet metadata is lost).

  The system would generate some (maybe 1000 of each type) addresses ahead of the furthest it has observed on the network but only bother to store the addresses. The keys can be regenerated as needed.

Tl;dr there are two known way discussed by gmaxwell to make sure you can keep a finite, and easily detected address.
Type 1 is where your long seed ( example: dhrhdjidgMdudyemrbyrkandurkur). it is the only base used to hash out keys. since (afaik)bitcoin naturally was built to only use each set of seed keys a few times for change wallets only, those extra associated and generated keys/seeds are only kept locally within the wallet.dat file that is on that local bitcoin instance. Dynamically the original client will assign an incoming address or if its a change address and soon start over again with a new seed.

Type 1 uses a long set of numbers/letters Which are all generated from that seed (dhrhdjidgMdudyemrbyrkandurkur). This seed will always be hashed with the same function (lets for ease say sha). This hash function can only generate a finite amount of keys (i believe this is because your seed key is not infinity characters long, the potential number addresses are limited to the key length of the seed ).
So for as long as both dynamic wallet clients are coded to  hash/check the key the same way, they will always find the addresses through process elimination. Which is not too hard. it will hash to find if any coins are available at those addresses. If the address was never used, that address is ignored and left to use later.
 (its like entering a vault with a key code and stored right on the floor is every last bitcoin you own. Those bitcoins are assorted in to plain old boxes. Since it is your vault, its tiny, and private you have only these number of boxes on the floor, they were premade boxes.
Where as you neighbors keeps creating a new vault for a new set of boxes. It sounds a little silly for them to create so many vaults with different entrance codes, and so many boxes that are never used. But thats how bitcoin works. It makes a vault and in that vault are boxes empty and ready to be filled with coins or anything left over.
It makes it harder though for a thief to break in because he needs to open every last and sort through these boxes.
 But anyway you take The seed (your valts keycode) and decrypt it(enter the vault password). That key It always tells you what boxes of bitcoin are in the vault (so say that  your vault password is JOESVAULT) well you know that there are only so many boxes that can fit inside that vault, and you know the name of each box (address) in there too. So, you can look in those boxes without having to guess which vault it is in. Since you only have one vault, you can eventually guess the names of the boxes in there. And thats because each box name(address) is derived from the vault key(seed)

  Type-2 is a bit less obvious and understanding it requires you to know about a property of ECC keys, roughly:

  A_public_key = A_private_key*point

  Which means you can do:

  B_public_key = A_public_key+B_secret*point
  and have a new key which has a private key:
  B_private_key = A_private_key+B_secret

  So a type2 wallet stores:
  Master_private_key
  A large Random_seed S.

  and keys are given by

  Privatekey(type,n) = Master_private_key + H(n|S|type)

  which works just like a type-1, the advantage of the type-2 is that you can separately secure the Master_private_key, but still generate new addresses with
  Publickey(type,n) = Master_public_key + H(n|S|type)*point

  This means that a e-commerce site could have the front end webserver with access to the public key and S, and someone who hacked the server could violate the confidentiality of the addresses in use (because he could enumerate all past and future addresses based on an infrequently changed public key) but couldn't actually steal any of they money sent to the addresses because he would have no access to the private keys.

  This could also be used to allow getaddress to work in the client without having to provide a key (access to the TXN data in the wallet means that access to the wallet, even with private key encryption, screws your confidentiality)  which would avoid the problem of backups being endangered due to address depletion from hitting getaddress a lot between entering in the key.

Type two:
So this is like running a bank,you have one vault that is enormous. In side of this bank vault are lock boxes. Since the banker knows the  bitcoins needs to go in to the vault(in his big master key wallet which is finite as well), he now knows there are only so many lock boxes inside. But, because you as the receiving hot wallet holder only have the key to the individual lock box("public" key) you wouldn't be able to get it out (that sucks you're stuck there to rot and get arrested).
 The vault keycode (the master key) is needed to get out of the vault with money and only the head banker knows what that code it is. However because you know that the lock box goes in to that bank, you use that lock box(once again the lock box is the server receiving the coins). your banker assigns you that lockbox and you use that lock box for all your addresses and funds. and put all your coins in to little  pockets(each address you own is a pocket inside this lock box) every thing is safe sound and secure.
These bank lock boxes are kinda magical though, as i said you can walk in to the vault at any time, you can walk through this vaults walls to put the lock box in the vault. But if someone else steals your lock box key (woopse, i forgot the key in my purse and now my purse was stolen!) they can get your lock box(your receiving server private key) and can sort around in to your lock box, but they don't have the key code to exit the vault with the lock box. So even though a "private" key exists on the remote hot wallet (lock box key you left in your purse) the banker wont give your attacker entry in to the vault because he does not recognize the attacker as the person who the lock box belongs to. So, unless the attacker gets the bankers vault password, they cant get your keycode... BUT remember the bankers keycode works on your lock box. As well as anyone else's. so if the bankers keycode (master key/master seed) is discovered its game over.

So basically you are putting your lock box in a valult. The vault and the lock box each only have finite space. But they both have different keys. As long as your bankers master key is not stolen. no one can really get your money (almost like a two step auth). But rhe banker always knows the keys to his lock boxes even if you forget.

Its kinda inceptionish/matrixy "box in a box", two finger print min, two keys to launch a nuke.... That kinda thing. But not...

Anyway, that is how i understand it. Please let me know if I'm right, wrong, not understandable or what not. I would rather edit an answer than make another

Thanks for your support and kindness. Thanks in advance for the respect of not flaming me


Removing Bitcoin from my phone to secure storage I am using the following Bitcoin wallet for Android:

https://github.com/bitcoin-wallet/bitcoin-wallet

My device is encrypted and I have encrypted backup files on Google Drive.

However, I'd like to get my coins off my phone altogether, just in case its stolen and the UI is still accessible. I'd like to keep a small amount on my phone, and top up that balance every now and then.

What's the best way to do this?

I think I need a separate "long term" wallet, but that's just moving the same problem to somewhere else.

Is a hardware wallet the only way to go here?

You are overthinking this.  The easiest way to move some of your bitcoin to a different wallet is simply to send it to an address belonging to the second wallet.  This works, regardless of what type of wallet the second wallet is.

For example, if you use Bitcoin Core on a desktop in your house, simply request a payment, which will show a QR code on your screen.  Scan it with your phone, and send whatever amount of bitcoin you want to your desktop wallet.  Yes, there will be a transaction fee, but it will be a lot less value than the time/risk associated with importing private keys into Bitcoin Core and then purging them from your phone wallet.

As for the most secure wallet for long term storage...there's some debate on that.  Here's an earlier answer I gave on the subject:  What options does one have to manage Bitcoins?


Is it possible to determine BIP39 keys are related Is it possible to determine if public or private keys generated with a single same BIP39 phrase are related to one another?

BIP 39 is only a mnemonic standard, it is BIP 32 which describes how the derivation actually works.

Unless you have the master public key or the master private key, no, you cannot know whether two keys were derived from the same BIP 32 master private-public keypair.


Bitcoin mining: internet connection status? How much bandwidth consumption can I expect per 13 Thash/s rig (Pooled). I'm Buying an s9 antminer, and i live in lebanon ( bad connection ).what do u guys advise me to do?
Does the internet speed affect ? What the speed required in order to mine correclty? How much data does it use monthly ?
Note: Assuming that i ll mine 24/7
Thank you so much!

To clarify, For solo mining a fast internet connection DOES matter, but in the case of a pool, it's a lot less.

  On Stratum with variable difficulty, you should need ~1kbps (0.125 KB/sec).  It doesn't matter how fast you are, which is why the new protocols were implemented.  1 GH/s, 1 TH/s, 1 PH/s, with proper server implementation it should all use the same bandwidth per connection.`

You should need barely any bandwidth for pool mining. If you watch packets between your rig and the server, they make up a very small amount of data
(1-10kb?) The requirements are extremely small for most of them. This would be ~10 MB per day.

It also depends on the pool you're going to mine on.


How to create random address from dogecoin? It's about dogecoin. I want to make a random address everytime my customer want to give me some donation. It's just like i have multiple address that point to my main address wallet, how to that?

For example my main address is
Drpwpskxxxxxxxxx

And evertytime my members want to give donation they have different address to pay but the coin will come to my main wallet.

Each address is an individual address. You can have multiple addresses in one wallet, but you cannot have multiple addresses pointing to the same key.

Whatever wallet system you are using should have an option to generate new addresses, either as part of an HD wallet or as individual keys. You should be able to use that to generate new addresses as required.

Remember to backup the wallet each time you generate an address if it is not an HD wallet, or remember to backup your seed words if it is.


How is the Leaf node weakness in Merkle Trees exploitable? Recently a weakness in leaf nodes of merkle trees was disclosed and it is claimed that this issue is exploitable to trick SPV nodes. How does the weakness make SPV nodes vulnerable to attack? What would an attacker do to exploit this attack?

In Bitcoin, inner nodes of the merkle tree are constructed by concatenating two 32 byte SHA256d hashes together. The resulting 64 byte value is hashed to get the next node in the tree. The leaf nodes are the transactions themselves. Merkle trees are used to prove that a transaction is part of a block as the merkle root is placed in the block header for the proof of work.

However, given just a merkle branch to prove a transaction's existence in a block (as SPV wallets need), it is impossible to distinguish which node in the branch is an inner node and which is a leaf node. Thus a special 64 byte transaction can be constructed which tricks SPV nodes into thinking it is actually an inner node of the tree and not a leaf node.

The last 32 bytes of that special transaction are constructed in such a way that it is also a valid hash of another fake transaction. Both the fake transaction and the last 32 bytes of the special transaction can be modified in order to brute force a transaction hash that is also valid as the last 32 bytes of the special transaction.

Once the special transaction is included in a block, the attacker can provide a fake proof to an SPV node that "proves" the fake transaction is part of the blockchain. This fake proof would be the legititmate merkle branch to the special transaction, but also includes the special transaction as if it were an inner node of the merkle tree and the fake transaction becomes the leaf node.

To protect against this attack, SPV nodes can simply verify that no inner nodes of a merkle branch are also valid transactions. Such an event is extremely unlikely, and such transactions are also non-standard so unlikely to be included in a block unless this specific attack were being performed.


Other than relying on "side-chains", is there any way that Bitcoin could solve "micro transactions"? I am very aware of the Lightning Network, and have repeatedly tried to gain a full understanding of it and start using it. I find that, whether it's due to it being too complex or me being too stupid, I just can't seem to start using it. Even though I have a high motivation to figure this out, I just "zone out" and give up due to all the complexity and how obscure it feels.
Maybe it will be a big thing, but I have my serious doubts. It seems too complicated and confusing, like the 32X add-on to the Mega Drive/Genesis video game console. Few bought it. Its power should've been included in the main console, or in the game cartridges.
What would it take for Bitcoin itself (no add-ons) to start supporting some kind of "microtransactions" with much smaller (or no) fees and a near-instant settlement period? Perhaps there could be a maximum value for such transactions, or something, but as long as you keep under that number, you can send as little as one (1) satoshi to somebody else for free and no waiting?
At least in theory, that sounds reasonable to me. Since the transactions are so small, it doesn't matter as much as a huge/large transaction, sent via the classic Bitcoin transaction mechanism with the high fee and minimum six confirmations, etc.
But would it be possible technically?

The main challenge is that any transaction that is transacted on the main chain will have to be stored on the blockchain in perpetuity, and processed by all full validating Bitcoin nodes. To my knowledge, all cryptocurrencies have the same property... they just aren't large enough where this is a real problem yet.
The other thing you should consider is that the actual value of a transaction to the Bitcoin network as a whole is irrelevant. A 1 satoshi transaction takes up the same blockspace as a 1 BTC transaction.
Hopefully this explains why small transactions must take place off-chain to achieve the cheap and quick settlement you mention.
The goal of a project like Lightning Network is to have microtransactions take place so they aren't taking up block space and needing to be stored and processed by all Bitcoin nodes forever. It will hopefully become easier to use as time goes on.


Why bitcoin protocol does not use JSON instead of low level data structures? Wouldn't be easier for the nodes to just build the messages with JSON, then encode it to bytes so it can be transmitted over TCP/IP? I'm not talking about JSON-RPC, but the communication between nodes.

It would:

Use significantly more CPU to parse the incoming data (and running a node is already intensive, especially when processing an incoming block).
Use significantly more bandwidth.

It would not:

Remove the need for nodes to know about the binary format, as that is used for defining the (protocol-defined) hashes of transactions, blocks, and other structures.

So if you're going to need to implement the binary format anyway for hashing, why bother implementing another more expensive, less efficient layer on top, and incur the complexity of the conversion?


importprivkey in bitgold-cli not importing the expected address I'm in the process of trying to import an existing paper wallet BTC private key into a Bitcoin Gold node I setup so that I can grab the BTG that was airdropped there, however whenever I try to importprivkey the public address associated doesn't match what I had generated, and there are no funds there (they are there if I have the right address in the BTG block chain explorer) I tried:

Generating a random new address on bitaddress.org
1MiXQPkKZersaFrPmteiUexGbyLEATxD8x / Ky324ikVv9HAjeoz7CVWQN2zA8bVY3aDU1gJq8tJjpEQRmUgJXCK
Importing that address in the cli - ./bgold-cli importprivkey "Ky324ikVv9HAjeoz7CVWQN2zA8bVY3aDU1gJq8tJjpEQRmUgJXCK" "test" true
Get the address for the private key I just imported bgold-cli getaddressesbyaccount

I'd expect to get 1MiXQPkKZersaFrPmteiUexGbyLEATxD8x but instead get:

bgold-cli getaddressesbyaccount test
[
  "GeZSpX5GYWUAej9ghqJpuRJAX985Ayn99A"
]

What am I doing wrong here?  Why is my public address getting morphed?

Bitcoin Gold uses a different address format than Bitcoin. Even though the private keys can be used across coins, the addresses calculated from them will look different from each other but still encode the same data.


How does blockchain.info get the addressbalance / seen date? I am trying to figure out how blockchain.info gets the following API functions and is there any way to do these calls on a server (without using their API) perhaps through bitcoind?

https://blockchain.info/q/addressfirstseen/
https://blockchain.info/q/addressbalance/

Thanks.

I'm actually working on doing this. To get the balance of an address you have to scan the entire blockchain. This can take a while but blockchain.info returns the balance instantly, which means they've already scanned the entire blockchain and are tracking all addresses. That's a lot of data to store, several gigabytes worth.


Bitcoin Wallet is downloaded I think. What next? Please excuse me if I use the wrong vocab - as I am unfamiliar with this and so will probably explain myself like a foot.
Here goes. I am on a Mac and I think I have downloaded the block chain and I now have a window called Bitcoin - Wallet showing Balance: 0.00 BTC and Unconfirmed: 0.00 BTC and Number of transactions: 0.

Now what?
1) I thought I should be getting an address or something that I need to copy and keep safe - and
2) I should create a Password.

I don't want to close the Bitcoin-Wallet window in case I make it disappear for ever ..
3) Should I be getting a little picture of a wallet on my desktop?

Thank you

Addresses are not private information. If you ever want to receive bitcoins you will have to give one of your addresses to the sender.

The information that you keep private is what is known as the "private key". Each addresses has its own private key. The private key is what allows you to spend the coins sent to the corresponding address.

Usually you don't see the private key in your bitcoin-qt window. The private key is stored in a file called wallet.dat in your bitcoin-qt folder. If you decide to encrypt your wallet by setting a password it is the wallet.dat that is encrypted. So the best way to keep it safe is to a) set a password and b) routinely backup the wallet.dat file.


Why does Coinbase block SatoshiDice transactions? I noticed that Coinbase won't allow you to make transactions to SatoshiDice. Is this due to SatoshiDice being blocked in the US due to online gambling regulations, or are there additional reasons for this restriction?

What other transactions have Coinbase known to have blocked, if any?

I think its because you are not supposed to play blockchain spam type dice games with online wallets. Since when you win, the winnings goto whatever address it was sent from. Therefore, it may not end up back in your wallet.

All the games are like this, most even have a list of "compatible wallets". I think the only online one that will work is the one ar blockchain.info

another rule of thumb, if you don't have access to the private key, you shouldn't use the address to gamble with


What is the oldest Bitcoin Core Client that can in theory sync to the chain tip? I've seen this question regarding the original Satoshi Client being able to sync to the chain tip. The main issues why it doesn't work were:

Change in protocol messages
IRC Node discovery is now disabled
Number of BDB locks too low

When have these issues been resolved? What is the oldest bitcoin core client that can sync to the chain tip (disregarding any problems with the client itself being very slow).

The oldest version that can sync is 0.8.6. This is the version that first used LevelDB instead of BDB. Both the IRC node discovery and the protocol message changes occurred several versions prior.


What happens if Gavin and the other developers get hit by a truck? I know this is an open-source project, but what happens if the core contributors are gone? How will the community decide the future of the client?

If the entire core development team would be gone, a new team would need to take their place. I assume that the process might get political (some people wanting to push their agenda onto the project), and before the new devs would fully understand the system the innovation in the client might get stifled. It might also be likely that the Bitcoin Foundation would need to hire a few people to work on the project (just as they pay Gavin now). However, as there are already a lot of people that have contributed to the project, I don't think we couldn't handle the change in the long run.


Given the probability of finding a block, and time taken, can I infer hashrate? I'm trying to externally calculate the hashrate of a given miner based only on an arbitrarily defined target that I assign, then calculate probability it will be found.  Once this probability is calculated I want to estimate how long it should (on average) take to find a block.

Is this a feasible thing to do?

What is the math required to determine hashrate?

Example: Given that target is 1, and the miner submitted the block in 10 minutes.

As I understand your question it has two parts. One is how to calculate an approximation of someone's hash rate externally, like from a server or proxy that can see their mining results but not their actual hashing process or hash rate. The other part is how to calculate the probability that a block would be found after a given amount of work, or a given amount of time and hash rate.

I will write the formulas as javascript code, with X to the power of Y written as Math.pow(X, Y). You could run them in your browser by typing them into the address bar like for example javascript:alert((Math.pow(2, 32) * 27939) / 600).

Approximation of hash rate:

With an arbitrary target, count one share at difficulty X the same as X shares at difficulty 1. That's how pools deal with variable difficulty.

  hashrate = (Math.pow(2, 32) * shares) / seconds-elapsed

An average of one share (at difficulty 1) is found for every Math.pow(2,32) hashes. This is only an average and that is why the hash rates displayed at pool web sites are only approximations.

Block solution probability:

The probability of one or more blocks being generated from a given number of shares (proofs of work):

  prob = 1 - Math.pow(1 - 1.0 / difficulty, shares)

That's from 0 to 1. Multiply by 100 if you want a percentage.

Let's say the difficulty is 4367876 and someone has been mining with a hashrate of 200 Ghps for 10 minutes. That's 200 * Math.pow(10, 9) hashes per second for 600 seconds, with an average of one share (at difficulty 1) found for every Math.pow(2,32) hashes. This gives us the following:

  shares = (200 * Math.pow(10, 9) * 600) / Math.pow(2,32) = 27939
  shares

  prob = 1 - Math.pow(1 - 1.0 / difficulty, shares) = 1 - Math.pow(1 -
  1.0 / 4367876, 27939) = 0.00637...

In other words the chance that someone would make one or more blocks with the given hash rate and difficulty within 10 minutes is about 0.64%

Note: if you see how many shares (proofs of work) they send in, of course you don't first calculate their hash rate only to calculate it back into a number of shares. Just plug it into the formula.


Tronix cryptocurrency How can I create a tronix (trx) cold wallet? I see no info on the Internet. Both a link to a key generator script and website with wallet creation would be ok. Thanks.

TRX is an ERC20 token so you can use https://www.myetherwallet.com/ offline to create a cold wallet. As of now TRX don't have any official wallet.

Here is a how-to Using MyEtherWallet For Cold Storage


Where can I see my Bitcoin address? I use the original client, but I don't know where can I find my Bitcoin address. Can someone help me?

Open the standard client
Go to "Receive coins" tab
You will have a list of addresses you can use

If you want to create a new address, just click "New Address..." on the bottom of the window.


How do block explorer sites show information that is not available on Bitcoin Core? As I understood in the following post How to get unspents for a specified bitcoin address?, we should use listunspent only on addresses that belong to our own wallet otherwise will return blank.

But let's take an example of blockchain.info or block.io. Once we type in an address - any address, even if we generate it manually (paper wallet, or algorithmically) - and transfer some BTCs, a search of the address in one of those explorers shows me the funds.

How can they possibly have information from this newly generated address?
How can they list the unspent transactions and the current amount of an address which "is not in their wallet"?

How can they list the unspent transactions and the current amount of an address which "is not in their wallet"?

Block explorer sites maintain a separate database of information which is built by continuously scanning the Bitcoin blockchain. If block explorer sites see a standard locking script in the outputs of the transactions, they scrape the addresses out of those locking script and the amount associated with that output. This information is added to their database. Also, when a user spends bitcoins, he has to reference the txid and the output index in the input of the transaction. The block explorer sites uses this information to locate that output and check the output locking script, from which they derive the 'input address'. All of this information and continuous lookups allows block explorer sites to associate funds with addresses and show whether the bitcoins sent from a transaction have been spent or not. However, if you lock a transaction in a custom script, the block explorer sites won't be able to decode this information.

  How can they possibly have information from this newly generated address?

They continuously scan the blockchain from which they can get transactions included in blocks. Also block explorer sites run full nodes that helps them collect transactions relayed by other nodes in the mempool that haven't been confirmed in blocks yet.


Why is Bitcoin Core not asking me to enter the decryption key for my allegedly "encrypted" wallet.dat? I created a wallet.dat with Bitcoin Core on a new PC. Then I encrypted it with the GUI menu.
When I reloaded that computer, I was shocked to see that Bitcoin Core did NOT ask me to decrypt/unlock the wallet.dat -- it just loaded it right back up. The only indication I got that it was encrypted was that the "Encrypt wallet" menu item was disabled/greyed out. Not even a small text saying: "This wallet is encrypted."
Obviously, this made me feel as if it was not encrypted at all. So, assuming that Bitcoin Core had saved some kind of decryption file on my other computer from which it auto-decrypts it or something, I transferred the wallet.dat over to my current computer, also running Bitcoin Core. Same thing there: the only indication that it's encrypted is that disabled menu item.
Nothing else. I'm able to read the labels and see all the receive addresses and everything. Since the wallet has no actual Bitcoins in it yet, I can't test to make a transaction, but hopefully, at least that will prompt for the decryption passphrase.
Is there something I'm missing? Why isn't encrypting a wallet.dat actually encrypting its data? Is this like that idiotic practice that WinZip/ZIP format used to do where you could see all the files and the filenames but just couldn't read the file contents without the password? I never understood the point of that, and I certainly don't understand the point of Bitcoin's encryption if all it does is prevent you from sending coins away, but still allow you to snoop on the labels and receive addresses and all that.

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


bitcoind and bitcoin-cli and bitcoin-qt following the hackernoon for full node btc, https://hackernoon.com/a-complete-beginners-guide-to-installing-a-bitcoin-full-node-on-linux-2018-edition-cb8e384479ea
i have some small questions,
is there's any control for any service on that wallet ? the developers of it ? is that's the way the online exchanges and ledgers create our online wallets and their offline wallets or there's still a deeper way?
after making getnewaddress, how can i create/view its private key?
from the bitcoin-qt setting>encrypt wallet, what is it about exactly ? is that creating a password for the whole wallet to open it on other pc, or creates custom private key, or 12 words like blockchain.com?
if its just a password for the wallet on the pc or another pc usage
where can i get the private key for every getnewaddress?
also how can i create 12 words that can work on http://blockchain.com when i enter them ? or it cant be as long as this 12 not from blockchain.com directly ?
last and not least i didnt find any online documentation that includes all bitcoinq / bitcoin-cli command lines with their explanations and usage, do you have any link including that ?

Bitcoin Core is the name of the software you are referring to, and it is the software that runs Bitcoin. Computers that run Bitcoin Core are usually called nodes on the Bitcoin network. It is open source, and there are hundreds of developers around the world that have and are contributing to it over the last 10+ years.

The software can be run by anyone, and so the wallet that is included with the software must be secured by you. Online exchanges may or may not use Bitcoin Core, but likely have their own wallet implementation. You do not need to run your own node to transact in bitcoin, the wallet software will submit transactions to a node, however.

To create and view a private key for an address in bitcoin core, use:

$ bitcoin-cli getnewaddress
<your new address>

$ bitcoin-cli dumpprivkey <your new address>
<your private key in WIF format>

Encrypting your wallet just makes it so if someone opens your Bitcoin node, they must have your password in order to be able to spend your bitcoin. It is highly recommended to do so. This password is unrelated to the private keys for your bitcoin addresses. The 12 word mnemonics you are referring to is not implemented in Bitcoin Core, and not generally recommended.

Docs for the RPC commands can be found here: https://bitcoincore.org/en/doc/0.18.0/


How to overcome the 21M limit of Bitcoins as adoption increases? Are there any ways to increase the Bitcoin maximum coin limit, as a wider adoption would mean there would be a lot of real money chasing fewer number of coins? Also can one hold a fraction of a coin?

A single Bitcoin is currently divisible up to 8 decimal places (giving you 21*10^14 units of money, or about 2.1 quadrillion units), nothing stops it from being divided further with small protocol change. In order to change the limit of Bitcoins created, one needs to change the protocol and force most of the Bitcoin network to adopt the change, which can be quite hard to do. This hard limit of the amount of Bitcoins is one of the features of the system, not a flaw - it is meant to fight against inflation. If for some reason you want a cryptocurrency without a limit (hint from Lohoris: you don't), try browsing for alternatives.

All in all, there will be enough Bitcoins to go around for everyone for a long while.


why can't i push this transaction? Why can't I push this transaction using blockchain.info but a transaction just like mine was broadcasted and mined?

My transaction:

0100000001f15c0393d76d26632f9416040a8205da1ff2e294e3ab793425fc95f51a249d3600000000020151ffffffff01301b0f000000000017a9143dbbda49ccc09591516be148dd966610f254e4bc8700000000

Similar/Same transaction:

01000000017742f03fc00dc2ef74a01b62cf1eabcad12f408497d04f2db256c0a9e4b8a93d00000000020151ffffffff0120402c00000000001976a914d19518b71f7603304c81b69dfb8757bb72d117b788ac00000000

Your transaction input has no signature, and it's spending an output sent to address 1BitcoinEaterAddressDontSendf59kuE. Spending such an output requires an input that contains a signature created with the corresponding private key for that address.

In contrast, the other transaction you're referring to sends to a P2SH address 3MaB7QVq3k4pQx3BhsvEADgzQonLSBwMdj. This address is a hash of the script "OP_TRUE", which doesn't require any signatures (or anything at all; anyone can spend coins send to that address).


Why so many warnings about importing private keys? Blockchain.info and other products make you read dire (but vague) warnings that "you must be an expert" before you can import private keys.  What's that all about?

Importing a private key can lead to non-intuitive behaviour, and that can be exploited by an attacker.

Imagine I'm evil. I give you a paper wallet with 1 mBTC on it. You're happy and import it. I keep the private key and wait. Depending on the client/user, maybe someday you'll put some real money on there as change/received funds. Then I can swipe them right off from you. If you don't bother moving the original money off the key, I can also steal that back.

If not, then at the very least I can trick you next time into thinking you were paid by sending funds to that address. Then I can steal them right back.

Importing also tends to break backups, especially deterministic key schemes. Armory gives you one line of text for all your keys, and then 1 line per imported key. Every time you import, you'll need to redo all your backups.

Because most users don't understand these implications, wallets tend to discourage importing, and instead offer sweeping (moving the funds to an address that was generated by the wallet itself). Supports 90% of the use cases with none of the issues.


Bitcoind fails to start on Centos 5.8 When I try to start bitcoind on Centos 5.8 I immediately receive the following error:

bitcoind: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by bitcoind)
bitcoind: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by bitcoind)
bitcoind: /lib/libc.so.6: version `GLIBC_2.7' not found (required by bitcoind)

This is the version of glibc I have:

$ strings /usr/lib/libstdc++.so.6|grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_FORCE_NEW

About my operating system:

OS: CentOS release 5.8 (Final) i686
Glibc version: glibc-2.5-123
libstdc++ version: libstdc++-4.1.2-55.el5

You can't run Bitcoin on CentOS 5. It's too old.

You can't run the binaries because they are compiled against much newer versions of glibc and other critical libraries.
You can't compile the source code because it requires much newer versions of libraries than are present in CentOS 5.

I ran into these issues when putting together my Bitcoin yum repository for RHEL/Fedora. As you'll note, only EL 6 and 7 (and of course Fedora) are viable targets.

That's not to say that it's impossible; it's merely very difficult and a whole lot of work. And you shouldn't use old operating systems for new projects anyway.


Read failed error while wallet transfer I run ubuntu 12.04 and had to reinstall the OS so I copied wallet.dat and saved them into another computer, now that I am done installing the OS and then installed dogecoind and replaced wallet.dat file but it says

message":"ReserveKeyFromKeyPool() : read failed"}

This error occurred because my blockchain was not synchronized, I waited for it to sync and then repeated the process and it worked


I'm trying to find out if I invested in bitcoin years ago, how can I find my bitcoin? For whatever reason I remember investing in bitcoin when it first got started, unfortunately I don't have my old computer or old files anymore. If there is anything you could do to help that would be wonderful. Thank and have a great day.

If you purchased bitcoin in the past, there are likely only two ways you were storing it.

First, you may have been storing it on some web wallet, where the keys to use the bitcoin are managed for you.  If this is the case, you will likely have registered for the wallet with an email address.  If you think you know which email address this was, and you still have access to it, I recommend searching through your email history.  If the wallet company still exists (and hasn't lost/stolen your money), and you can prove your identity to them, then they could give you access to your bitcoin.

Second, you could have stored the bitcoin in your own wallet.  If this is the case, and you truly don't have your wallet file...you are out of luck.  You probably bought this bitcoin from some company, and again registered with an email, so it doesn't hurt to search for a record of your purchase.  However, if you took on the responsibility of holding onto your keys yourself, and you failed to do so, there is no way to retrieve your money.


How/where is the informatioin regarding the mapping of a transaction to a particular block stored? According to the bitcoin white paper a block contains Previous Hash, Nonce and Root Hash. The root hash is a merkle tree root node of all the transactions that have been confirmed to that particular block.
I read here in the fifth paragraph of the top answer that "a transaction that claims to have been from block #234133 we can get the transactions for that block, verify the Merkle tree, and know that the transaction is valid."
So say a block m somewhere in the blockchain holds n transactions. Where and how is the mapping of a particular set of transaction to a particular block stored? Because the blockchain itself only contains the root hash of all transactions to save space. So are there other hidden components that haven't been published in the white paper and are there resources to get a comprehensive idea about them?
Thanks.

The merkle tree is dynamically recreated to validate it in a block, the order of transactions in the block implicitly describe what the merkle tree should look like when reconstructed. The transactions are stored as part of the block, quite literally the header, a number stating the number of transactions to follow, and then a list of all the transactions follows.


Testnet addresses fail in explorers I've generated a testnet address like this:

const btc = require('bitcoinjs-lib');
const bip32 = require('bip32');
const bip39 = require('bip39');

var root = bip32.fromSeed(
    bip39.mnemonicToSeedSync('my-twelve-word-seed...'),
    btc.networks.testnet
);
var pubkey = root.derivePath("m/44'/1'/0'/0/0").publicKey;
console.log(btc.payments.p2pkh({pubkey}).address);

and for my troubles I end up with this value: 14kwGTShacA5hT4uAes7dkNvreuHXuRRf7

however, when I test that with BlockCypher (or Blockchain.com or some other explorer), it doesn't seem to recognise it:

curl https://api.blockcypher.com/v1/btc/test3/addrs/14kwGTShacA5hT4uAes7dkNvreuHXuRRf7/balance

yields

  {"error": "Address 14kwGTShacA5hT4uAes7dkNvreuHXuRRf7 incompatible
  with current block chain: BTC.test3"}

notice that according to BIP44 the derivation path for testnet coins is m/44'/1' vs. m/44/0' for mainnet

so what is wrong here?

You are on the right track. The address is derived correctly, it is just not encoded with the right version.

You need to add the testnet network version to the btc.payments.p2pkh call as well.

Something like this should work:

console.log(btc.payments.p2pkh({pubkey, network: btc.networks.testnet}).address);

The address should then start with m... instead of 1....

More information about the available parameters can be found here: https://github.com/bitcoinjs/bitcoinjs-lib/blob/master/src/payments/p2pkh.js


communicate programically Dash coin core wallet I have installed dash coin wallet in my amazon server by using instruction from the below url

https://planetcrypton.com/install-dash-daemon

I want to communicate coin wallet via php programme. i just tried the below plugin to connect to the coin wallet from my server. But i coudnt connect to the coin wallet and it says "Empty reply from server0". i added the cofiguration details in the dash.conf file.

i give corresponding values in below configuration set up

rpcuser=<some_reallY_long_really_random_username>
rpcpassword=<some_really_long_really_random_password>
alertnotify=echo %s | mail -s "DASH Alert" <your@email-address.com>
server=1
daemon=1
addnode=23.23.186.131
listen=1
logtimestamps=1
maxconnections=256
masternode=0
masternodeaddr=<ip.add.re.ss>:9999
externalip=<ip.add.re.ss>

I only set the master node settings in my server because i dont want to connect the master node from the local system.I need to connect the wallet via programically. Can anyone please help me?

You should add

rpcport=8666
rpcallowip=0.0.0.0/0

Working config file example:

rpcuser=username
rpcpassword=strong_pass
rpcallowip=0.0.0.0/0
listen=0
daemon=1
server=1
txindex=1
timestampindex=1
rpcthreads=4
rpcport=8666

and make sure the port is already open from your internet provider side and your system firewall.


multibit - my wallet is not reopening the guidebook says that "when you open MultiBit, the wallets that were open in the previous use of MultiBit are reopened", but I've stored some money in a wallet that I created in a USB key. Now I am opening again multibit and I can't see this wallet. The .wallet and .info files are in the flash and I know its address so the problem is, how to do in order to see the wallet in multibit again? there is not an explanation of it in this short guidebook. Thanks for your help.

You can use the "File | Open" menu option to open an existing wallet.
A file chooser opens and you can navigate to where your wallet is stored to open it.

Note that in the older code (v0.4.23 and before) your wallet does not automatically resync when you open it. You have to do this manually with a 'Tools | Reset blockchain and transactions'.

The current version (v0.5.9 or later) automatically resyncs wallets when you open them.


How to close debug window (qt client on linux) I have the same problem with the Litecoin and Dogecoin client. Once I open the window in the menu Help > Debug window there is no way of closing it (no X in the corner of the window).

I'm using Debian and Gnome 3.

The following image contains the Dogecoin client (downloaded from Github and compiled), Litecoin client looks just the same.

Just right-click on the top bar, and it will bring up a menu that allows you to close it.


Using CryptoCurrencies as a transfer method throughout Australia and Europe I have read both this questions:

Can I easily use Bitcoin as a inexpensive way to transfer my money into another currency?

Does it make sense to use BitCoin to transfer money to yourself internationally?

Which both do answer yes to the questions, both answered by @Murch and others ofcourse.

Those questions where done a long time ago, and I'm sure things have changed and improved.

The situation is: I have my cousin in Australia, where he has money there. We would like to transfer it to Euro and I thought we could do it using Coinbase.

Could we just exchange the money to ETH or BTC with AUD and then once in Europe transfer it to a Bank here.

Would that be cheaper than using transferWise or throughout bank transaction? (As far as I can think of, it would be only Coinbase fees on deposit and currency exchange which might differ... Or maybe something else)

We don't actually care about the amount of time that we spend with the transaction.

The most "profitable" way i can think of doing this is:

1) Your cousin buy BTC with AUD in Australia in some local exchange (preferrable) or at LocalBitcoins.com

2) You sell the BTC in Europe using LocalBitcoins (your cousin will give you the password for his LBC account or transfer the BTCs to your account there). They have a 1% fee for sellers, but you could just advertise with a 1% profit, or even more, because prices in LBC are usually higher than at local exchanges. In my country i can easily sell with up to 3% profit.

No expensive international bank fees
You receive the money directly in your bank account

I don't know if using Stable coins would be a good idea, as you'd probably have to pay some convertion fee to redeem them in Europe.

Anyways, it will mostly depend on the volume you're dealing with and the time you've available.

For example, i don't think it will be easy to sell ~300 BTC in LocalBitcoins.

I think the most sensitive part is selling the coins (it's the part the fees are usually higher). If you're dealing with higher volumes you should probably look for a local OTC desk (exchanges have that and the fees are negotiable).


Would replace by fee increase the fee on my transaction? I have a transaction with a $0.01 fee that has been unconfirmed for almost a day now, I got searching and found the replace-by-fee tools by Peter Todd.

I set up a full node with Bitcoin 0.12.0 and it's downloading the blocks right now.

Would the tools work to increase the fee? Is it safe?

The transaction is a deposit into some website, would I still get the deposit?

You can only increase the fee with BIP125 (opt in replace by fee) if your original transaction did already signal that it can be replaced.

If you made your transaction with Bitcoin Core 0.12, your transaction doesn't signal replicability.

Since Bitcoin Core 0.14 there is a global option called -walletrbf that makes sure, all your transactions do signal replaceability.

What you can do in your case is...

CPFP (child-pays-for-parent).You can try to create a follow-up transaction with your change output of your original transaction that hasn't confirmed. The follow-up transaction should have a high fee. If a miner wants to mine your follow-up transaction with high fees, he must also pick your original transaction (an unconfirmed transaction chain).
If it doesn't confirm, try abandoning the transaction (since Core 0.13) and re-spend your input
Try to use -zapwallettxns (google)


What qualifies a valid private key? The title pretty much sums up the question - say (for instance) I have a string of letters or numbers committed to memory, how hard would it be to convert that into a private key? Or similarly, how hard would it be to construct a private key based upon a sentence, mnemonic or otherwise?

Check out http://brainwallet.org/ for an example.

A bitcoin private key is just a 256-bit number. Any algorithm that can convert arbitrary text to a number of that size ought to do.

A rather simple algorithm would be to consider your string as a base 63 number (a-z, A-Z, 0-9 and spaces) and write in binary, take the number modulo 2256, and write in hex.

Or, you take the base 63-to-binary number, raise it to the power ten, bit shift left 20 times, multiply by 8, add 4, bit shift right 50 times, take modulo 2256, convert to hex, and you have a private key.

Or whatever. Try to make it so that the number generated before you calculate it modulo 2256 is much larger than 2256. Otherwise, many of your generated addresses will just be a bunch of zeroes followed by a relatively short hex string.


Information about incoming transactions for a number of addresses For a website I need to watch (read-only) a number of bitcoin addresses (like about 100) and to retrieve information about all incoming transaction (within the last week). I need for each incoming transaction the number of confirmations, the amount send, the time and from which address the transaction came.

Actually blockchain.info looks what I need, but the number of API calls seems to be limited to 1 every 10 secs. Also I do not see how I can read the senders addresses. So I think what I have to look into is JSON RPC and communicate with bitcoin demon. Is this the right direction?

Thanks, Marco

I'm not an expert here, but it looks like you're on the right track. See:

Bitcoin API (JSON RPC)
API Calls List

I'm guessing you can use the JSON RPC format to make the calls you need (i.e. "getbalance" and "getaccount" calls).

As for reading the sender's address, perhaps "listtransactions" helps?


Is blockchain really secure to store sensitive data? Plenty of developers these days trying to decentralise everything.

I noticed some developers claim that they are gonna replace email with blockchain technology. johnmcafeeswiftmail, CryptaMail, Lemon Email to name a few.

If I'm not wrong, blockchain is more like a public database where anyone can access the data. And these data are getting stored for eternity.

Sure, these developers can encrypt the data before storing it. But what guarantee they can give us that these data never gonna get decrypted 50 years from now with the help of advanced technology of that time.

I'm really concerned about these users data. Please correct me if i'm wrong.

some developers claim that they are gonna replace email with blockchain technology.

Blockchain is just a popular marketing buzzword. Its use is largely meaningless. You can safely ignore the marketing output of any person or business that are overly liberal with their use of buzzwords.

Wherever you see "blockchain" just substitute any of "nanotech", "quantum", "solid-state", "transistorised" or "aviation-grade" and see if it materially affects what is being said.

  what guarantee they can give us that these data never gonna get decrypted 50 years from now

Generally speaking, you wouldn't choose to store data on the Bitcoin blockchain - that would be too expensive. What you might store is a hash of your data. If done correctly, that proves that your data existed at a point in time. Anyone who subsequently knows the private-keys involved can prove that they currently know the private key that was previously used. I don't think there is anything else that can be reasonably deduced or proven.

This relies on being able to check that a reasonably large number of accessible and diverse copies of the blockchain, which contain the hash, can be fully verified and agree with one another.

In this case there is no possibility† of discovering the original data from the hash. Assuming you choose your hashing algorithm well and assuming that quantum computers have not destroyed all security on the planet and plunged the world into a post-apocalyptic chaos.

† speaking in general terms. That is - the probability is perhaps not too dissimilar to that of your constituent atoms spontaneously rearranging themselves into the form of a bowl of petunias


Recovering My BitCoin Core Account/Wallet My name is Patrick and I need assistance recovering my account.  My brother sent me some bitcoin to my bitcoin core wallet.  I am unable to access this due to my laptop becoming infected with a virus and needing to be restored.  I have my wallet ID where the transaction took place, but I do not know how to access my bitcoin core wallet.  (My original laptop hard drive was fully corrupt and replaced.) I would be extremely grateful for any assistance in recovering my bitcoin core wallet.

Sincerely,
Patrick Moore

Access to wallets can be recovered by means of a recovery phrase, private key (string or QR code) or backup file (in this case a copy of wallet.dat).

If you have none of these you will not be able to prove ownership of the wallet and will not have access to the funds.


Reward in case of fork Hi I would like to ask you guys for some details about getting reward from minning block when there is a fork - two miners get different blocks at the same time. Both of these block will have the coinbase transaction. Does it means that both of users wallets will have information about this transaction? If yes what will happen when both users will quickly go to bitcoin's ATM and take fiat currency from this reward?

Does it means that both of users wallets will have information about this transaction?

Both miners will see their own coinbase outputs in their wallet software, yes. However, the two coinbase transactions will be separate.

  If yes what will happen when both users will quickly go to bitcoin's ATM and take fiat currency from this reward?

They cannot do this. Coinbase outputs are immature, and unspendable, for 100 blocks. After 100 blocks, a fork should ideally be resolved already. If it is not resolved, then only the miner on the same side of the fork as the ATM operator will be able to access his coins, as the ATM will not be aware of the coins on the other side of the fork.


What are the drawbacks of using a web based wallet and how to overcome that? Can anyone tell me why many prefer to use application when compared to web based wallets.

What are the drawbacks of using a web based wallet and how to overcome that?

The chance of a "known" website to have various attacks and compromising schemes done to it are attempted all the time.  So if you wallet on online and that site is compromised, your coins are gone... However if the wallet was on your computer, then the chance that some hacker is attempting to hack into your network is so small.  Using your own computer, you just want to regularly create backups or your wallet.dat file from your wallet and encrypt it with a strong password and put it somewhere like a thumb drive that you put in a fireproof safe, or maybe online in google drive, skydrive, dropbox.  The chance that an encrypted file is discovered by someone is so unlikely relative in comparison to the many hackers knowing about the mass storage of a given online wallet.

You could always diversify.... depending on your strategy for assets and asset management, you could always do like 10-25% of your coins in online wallet, I personally would not do any more value than that.


What is the impact of purposely sending a signed message with zero fee? Would it be appropriate use of me to send a message with 0 fee on purpose if I have no need for the message to remain on the blockchain after it is seen by the recipient?

I could sign a transaction with 0 fee and provide the recipient with the txid. It would not hurt me if the transaction was confirmed but it would also provide me with no benefit once the (pending transaction) is seen by the other party.

Would I be helping the network by providing no permanent bloat of no value (assuming my txid is never confirmed) more than I am hurting it by adding no miners fee?

The underlying motivation behind transaction fees is to compensate for resource utilisation as there is always an inherent cost when validating transactions (Electricity - CPU usage) and relaying transactions (Internet Bandwidth). Another reason why there's transaction fees is also to deter spam.

By purposefully sending a signed message (with no fees) to the Bitcoin network, what you're effectively trying to do is use these scarce resources for free and therefore it is perfectly possible for participating nodes to refuse to relay/process your transaction.

However, you may use a signed message with zero fees to prove that you're in control of a unspent transaction output for example. Instead of broadcasting this directly to the Bitcoin network, what you might do instead is send this to one party who requires this "proof" privately and so as long as the UTXO is valid (i.e. committed in the Blockchain already), then your signed message with zero fee is as convincing as it gets to sufficiently prove that you have the funds to do whatever it is you want to do.


Where can I set the fee value for accepting transactions? If I run a miner where can I set the fee value to accept transactions in the bitcoin client?

Note that the transactions are chosen by the client you issue your getwork requests to. If you're mining in a pool, the pool chooses the transactions.

The key settings are in the main.h file. Look at MIN_TX_FEE and MIN_RELAY_TX_FEE.

To accept non-standard transactions, comment out these lines in main.cpp:

// Rather not work on nonstandard transactions (unless -testnet)
if (!fTestNet && !IsStandard())
    return error("AcceptToMemoryPool() : nonstandard transaction type")

Note that if you accept transactions with less than the normal transaction fees, you should connect to Luke Dash Jr.'s node to make sure you get such transactions, since most clients won't relay them to you. Add -addnode=173.242.112.53 to the command line you use to start your client.


If I import/restore a deterministic wallet into Bitcoin Armory, how far into the dynamic addresses does it look for transactions? I see that in Armory, I can click on "receive bitcoins" any number of times, and it generates a new as-yet unused address every time. So I could potentially send coins to address 1000, and have 999 unused addresses before it.

I'm wondering, when you import a deterministic wallet,  how many of the addresses does it check to see if they have activity?

By default, Armory will check 100 addresses, but this can be changed with --keypool command-line option.


At most two outputs according to Bitcoin whitepaper. Multiple outputs in real transactions. How come? The original Bitcoin whitepaper mentions that there can be at most two outputs:

  Normally there will be either a single input from a larger previous
  transaction or multiple inputs combining smaller amounts, and at most
  two outputs: one for the payment, and one returning the change, if
  any, back to the sender.

However, I see transactions like this:

https://blockchain.info/tx/c18ff55d09c596ffbad30321719171c0d5b4d677d3554fc6ab3d12167ea8b9d6

that has many outputs.

Is this contradicting the Bitcoin paper or is there something I'm not getting?

Note the word normally at the beginning of the sentence.  This isn't imposing a restriction but merely describing a common use case.

It's obviously useful to allow more than two outputs, and there's no particular reason to impose any arbitrary limit on the number.  I don't think such a limit was ever contemplated.

In any case, the whitepaper isn't considered to be an authoritative description of the protocol; that would be the reference client.  For instance, the whitepaper describes a scheme for reclaiming disk space that I don't believe was ever implemented (the "pruning" feature came much later and is somewhat different).


Is the fastest Bitcoin ASIC miner available today still profitable after block halving? As the title says, I was wondering if the fastest Bitcoin ASIC miner will be profitable after block halving?

The s7 miner is still a bit profitable (25% profit).
The s9 miner is the fastest and most efficiënt miner i know of and is way more proffitable of course.

edit/explaination:
Hashnest has a percentage monitor of profit/costs. Thats where the s7 number comes from. S9 is way more efficiënt following the specsheet on the antminer website. You can calc your profit over at coinwarz too, there you can edit power costs/usage and even the ROI is calculated there. Take a look i should say (its indication tho)


I am not able to send BTC in Blockchain I have 0.98 BTC confirmed, but my wallet only lets me send 0.1 BTC. My wallet has received a lot of small payments, what can I do? Thanks

It's possible you've hit the limit on number of transaction inputs for the wallet software (or total tx size).

Some wallets have a feature to "sweep dust", meaning consolidating all of those small UTXOs (unspent tx outputs). Note this will cost a small amount for tx fees. If it doesn't have this option, you can just make a few large transfers to an address you own using the same wallet (this will also cost tx fees).


What software should I use to mine alt coins? I downloaded MUE wallet.

I have GTX 1060 in one of my computer and I want to mine. It's the same GTX I used to play overwatch.

However, I am confused.

How do I mine MUE?

Is there a software for that?

How do I mine quark or x11 based tools?

I check https://bitcointalk.org/index.php?topic=778322.0

I downloaded the wallet. But how to mine?

If there is a miner that will switch to whatever currency or pool generate most money it would be awesome.

You will need to download some mining software, cgminer was what I used to use, there are others out there to. But find yourself a pool that has the altcoins u want to mine, most pools work on pointing your port at a different values for the different coins. Most good pools have guides for setting up the different miners software for their pool.  Coinotron was always one of my favourite pools and it is still going :) hope this helps


Why am I receiving an email from Blockchain about receiving a payment? I do not own bitcoin and do not belong to Blockchain but received an email from Blockchain about receiving payment...

Incoming Payment
You just received 3.86655869 BTC from an external Bitcoin account.

Authorize 3 network confirmations to add incoming  3.86655869 BTC to your Bitcoin balance.

What does this mean?

Why am I receiving an email from Blockchain about receiving a payment?

You aren't. It just looks that way, superficially.

received an email from Blockchain

It is easy to fake the "from" address in an email.
If your email app lets you view the full raw email headers you can probably see that this email followed an unusual path to reach you. But you don't need to do this. Businesses like Blockchain don't send emails to people who are not already their customers.

Authorize 3 network confirmations to add incoming 3.86655869 BTC to your Bitcoin balance.
What does this mean?

It is nonsense. It looks like a phishing email where someone is attempting to trick you into some sort of scam. Either getting you to divulge account details which will allow them to steal money or getting you roped into some kind of advance-fee fraud where they persuade you to pay them a release-fee or some other invented nonsense that is plausible to the inexperienced.
I would delete that email and forget about it.


Lightning network: Open a channel with a peer that is not a full node? Is it possible to open a channel with a peer that is not a full node? Or to exchange lightning payments between two peers that are not full nodes, they both have to open a channel with full lightning node(s)?

I saw this map
 https://lnmainnet.gaben.win/ and I was wondering if all the graph nodes were full nodes.

Whether you run a full node or a lightweight node is a first layer question. It is a question about how you keep track about what happens on the blockchain. And even though this is important for you, the Lightning nodes that are communicating with your Lightning node do actually not care about it and in fact they don't even (have to) know about your Bitcoin node.

So do not confuse Layer 1 (Bitcoin / Blockchain) with Layer 2 (off-chain payments / Lightning). On Layer 2 there are no "full nodes".

What we do have on Layer 2 however, are channels that you announce to the network and private channels (that you don't announce).
So if Alice and Bob have a private channel, they can use it to pay each other, but they will not route any third party payments through it.

Yes, the channels that you will see on any Lightning network graph are only announced ones, they private cannot be seen. This is also the reason for why it is difficult to estimate the real size of the Lightning Network.


Move the blockchain to a different location I am using the Bitcoin-Qt application on Ubuntu, but the blockchain is very large and is wasting space on my SSD drive. Is there a way that I can move it to a hard disk drive?

There doesn't seem to be a setting for this. Is it possible?

First close your client down and then copy the .bitcoin folder that was created in your home directory to the new location where you wish to store the data.  Second create a symbolic link using the new path:

  ln -s /new/path/to/.bitcoin .bitcoin

Finally restart the bitcoin client and it will use the blockchain stored at /new/path/to/.bitcoin (or wherever you put it)