Ideal passphrase length: old diceware method (5 words) vs. your Bitcoin wallet.dat passphrase length (8 words) and doubling passwords? I made a cool 5 word passphrase back then using the old Diceware method and use it as a master password. The question is: as computing power increases, will we need to add more and more words to our passphrases which we will eventually forget? I'm in my mid 30s, will passphrases be enough in my lifetime? :) So back then, Diceware suggested just 5 words, not the original Bitcoin QT client recommends 8 words. Will the original 5 words from the Diceware age serve me in the Bitcoin age?

I don't really want to mess around with a Yubikey. Heck, I Googled it and didn't really managed to find out what it is, what it does. Maybe I'm not the target market. I'm just a simple user. Carrying around a Yubikey would also be a red flag in my eyes. He has secrets!

How effective is doubling a passphrase? Like I have now [passphrase] and simply doule it: [passphrase][passphrase]. So I don't really have more stuff to remember, just more stuff to type. That might serve me for a time.

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

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

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

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


I want to accept bitcoin on my raspberry pi I have a web server running on a raspberry pi and I want to accept bitcoins. I have very little disk space so I don't have room to install bitcoind. I don't trust any third party services to process my payments so that wont work. Is it possible to accept bitcoins with my setup?

Any special situation for you to want your wallet IN your rapberry?
A wallet doesn't need to be in a physical machine, actually it can be in a sheet of paper (cold wallet). So if you don't need your server to do anything special with those coins you can just create a paper wallet, and if what you really want is to check if you receive coins, you only have to check from your raspberry your wallet's public key in blockchain to see how many coins has it received.

If you want to create a wallet, you can use vanitygen. Keep the public and private keys in a safe place and you are ready to go. The day you need to move those coins you will need to install bitcoin-qt wherever you want and import your private key to the default wallet created by bitcoin-qt. Once you've done that you can operate with your coins from that place.


Are timestamps in transactions trustable? I need to properly segment transactions by time. Are timestamps in transactions trustable? Can these be forged?

I'm not sure if transaction timestamps are part of the protocol, but I'm particularly interested in the "Received Time" which shows up in blockchain.info . For example, this transaction (api url)

{
   time:1385506952,
   inputs:[
      {
         prev_out:{
            n:2,
            value:50000000,
            addr:"17BPmjqg7mbaWYdff2EjVxra1FBHG4VAN3",
            tx_index:97772745,
            type:0
         }
      }
   ],
   vout_sz:2,
   relayed_by:"127.0.0.1",
   hash:"4054f8170f7fc7c12229a116baead874f22478810b0a7e842aa28403c9b59927",
   vin_sz:1,
   tx_index:99131036,
   ver:1,
   out:[
      {
         n:0,
         value:40000000,
         addr:"1LwmnEn97jcANB68C5BVFQLJJLAm5UTJqW",
         tx_index:99131036,
         type:0
      },
      {
         n:1,
         value:9990000,
         addr:"17BPmjqg7mbaWYdff2EjVxra1FBHG4VAN3",
         tx_index:99131036,
         type:0
      }
   ],
   size:257
}

Transactions do not have timestamps, so the timestamp that blockchain.info displays is whatever time their node received the transaction. The time shown will also change to the time that it was included in a block. In general, it is not reliable to trust the timestamp given for an unconfirmed transaction on blockchain.info as it is entirely dependent on their node.


Why is Bitcoin-qt using my CPU at 100%? I am running Windows 7, and every time I open Bitcoin-Qt (v0.8.6-beta) during synchronization my CPU runs at around 95% according to the Windows Task Manager. As soon as synchronization is finished, the processor goes back to a normal 4-15% usage. What is Bitcoin-Qt doing that it needs so much processing power? Why is Bitcoin-Qt different from my other wallets, like elacoin, that do not use CPU when synchronizing?

When Bitcoin-qt synchronizes with the network, it is not only downloading blocks (lists of transactions) but also verifying them: checking cryptographic signatures, etc.  This gives you independent verification that the blocks you've received are true and correct, and that you're not being sent fake data by some malicious peer on the network.  However, it is computationally intensive, especially given the large volume of Bitcoin transactions, and I am not sure that Bitcoin-qt has highly optimized code.  Other clients may do a reduced amount of verification, saving time and CPU, but at the expense of some security.


Is there some kind of USB antenna I can buy to be able to use Bitcoin even when there is no Internet? Let's say they cut the Internet tomorrow. I will still have my private keys on my offline computer, but I won't be able to sync the blockchain (as won't anyone else) nor would i be able to make any transaction either.
But once I heard something about a satellite beaming down the blockchain at all times or something. And that was in like 2013. Did that ever go anywhere?
Is there some readily sold product which I can order which is like a little antenna which I attach via USB to my PC and which then can receive the blockchain and send coins via some kind of satellite or other form of radio communication in a decentralized manner?

Blockstream have multiple satellite circling around the earth and broadcasting the blockchain or receiving and sending transaction without interruption.
https://blockstream.com/satellite/
They have their own kit to use the service:
https://store.blockstream.com/product/blockstream-satellite-basic-kit/


namecoin name_firstupdate Hey I am trying to connect to my namecoin server. I have hosted and done the first name_firstupdate. I am using easybitcoin.php. I have stored the rnd and txid I need from the name_new step but when I execute the code the server doesn't respond with anything. I checked my namecoind name_list the domain that's being registered doesn't show up. Any help would be awesome, thank you.

http://allaboutbit.com/dotbitaddress for an example of the prior steps.

$d = 'd/';
$space = " ";
require_once('easybitcoin.php');
$bitcoin = new Bitcoin('username','password','159.206.21.47','8336');
$domainQuery = mysqli_query($conn, "SELECT domain_name from dotbitdomains WHERE status = '13'");
$domainLevel = mysqli_fetch_row($domainQuery);
            $url = $domainLevel[0];
//select rnd
$rndQuery = mysqli_query($conn, "SELECT rnd from dotbitdomains WHERE status = '13'");
$rndLevel = mysqli_fetch_row($rndQuery);
            $rnd = $rndLevel[0];
//select txid
$txidQuery = mysqli_query($conn, "SELECT txid from dotbitdomains WHERE status = '13'");
$txidLevel = mysqli_fetch_row($txidQuery);
            $txid = $txidLevel[0];
//select username
$userQuery = mysqli_query($conn, "SELECT username from dotbitdomains WHERE status = '13'");
$userLevel = mysqli_fetch_row($userQuery);
            $username = $userLevel[0];
$bitcoin->name_firstupdate($d.$url.$space.$rnd.$space.$txid);

Unfortunately you didn't provide enough information:

Which OS?
Version number of your Namecoin server?
Does this Namecoin server run on your local machine? If not, how is it connected physically?
Did you apply any command line params when starting the server?
What is the content of your namecoin.conf file?

Generally speaking, the most common causes for RPC connection problems are:

Mismatch of the provided data (rpcuser, rpcpassword, rpcport) with the contents of namecoin.conf
Command line parameter -server is missing


Which exchanges are good for altcoins? To trade Altcoins nowadays, which exchanges are good to use?

Bittrex and Bitfinex are both out of option due to their temporary block on new accounts.

"Bittrex ... out of option" ok, i noticed, but if you ask "Which exchanges are good for altcoins?" the answer i think is mainly:
binance, poloniex, bittrex, cryptopia, yobit


Miners dogpiling on one device I've built a mining rig running Ubuntu 11.10 with 3 Radeon 6850 GPUs.

When I run ./poclbm.py without any arguments, it returns the list of available devices as...

[0] Barts
[1] Barts
[2] Barts
[3] AMD Sempron(tm) 145 Processor

giving me the (possibly erroneous) idea that I seem to have the drivers setup correctly.

When I start up one miner and pass the argument to use device 0, the hash rate is reported at slightly over 200 Mhash/sec. However, when I start up another pointed at device 1 in a separate term window, the hash rate for both is reported at around 100 Mhash/sec. And when I fire up the third miner and point it at device 2, then all three miners report their rate at around 60-70 Mhash/sec.

This suggests to me that the miners are not honoring the device argument that I'm passing and all dogpiling on one of the devices (probably the freckle faced red-headed one).

This happens with both m0mchil's poclbm and with PhoenixMiner.  Below are the arugments I'm passing to each...

./poclbm.py http://username.worker:pw@host.com:port -d 1 -v

./phoenix.py -u http://username.worker:pw@host.com:port -k phatk2 DEVICE=2 VECTORS BFI_INT

Any ideas what I might be doing, or have done, wrong?

You could check the temperature on the devices, the one active should be running much hotter than the others.

If they're all running hot the bottleneck is elsewhere (CPU or memory/bandwidth). If none of them are running hot you've bought one hell of a CPU to get 200Mhash.

Else it's advisable to check whether or not you can use the non-default videocard at all.

I'm afraid I lack the videocards to test this myself :)


What's the use of not relaying non-standard transactions if anyone can still use them using P2SH? It seems that non-standard transactions are not normally relayed because there is a concern this might break the network or it might make future upgrades harder.

But anyone can use these non-standard transactions (and get them relayed!) using P2SH. So what good is this restriction on non-P2SH scripts?

As you say, there are two separate concerns here:

There are some scripts that might cause harm to the network.
There are some scripts that might make future upgrades harder.

For the case of harm to the network, the non-standard transaction check was first implemented by Nakamoto before P2SH existed, so it couldn't be so easily circumvented.  This gave developers time to better analyze the script language and fix problems with the remaining opcodes (e.g. see cases like this where it was possible to create transactions that would take a very long time to verify).

However, even if the scripting language is perfectly safe, each script has to be stored by every full node until it is spent as part of the Unspent Transaction Output (UTXO) database.  Since scriptPubKeys are limited to 10,000 bytes, this means that an attacker can add up to 10KB to the UTXO set for every output he creates, potentially quickly adding enough data to degrade performance enough that the rate of stale blocks (orphan blocks) mined increases, which would reduce miner profits and encourage them to centralize further to recover that lost revenue.

That'd be bad.  Happily, there's an easy solution: if we use P2SH or segwit P2WSH, we only see the full script at the point when the output is being spent---when we can remove the output from the UTXO set.  This is somewhat inferior with P2SH due to it limiting scripts to 520 bytes, but P2WSH fixes that problem and restores the earlier limit of 10,000 bytes.  So that's the security reason why we require complex scripts today use P2SH.

For the upgrade case, there are some opcodes we don't want people using.  Most notably these are opcodes that might be redefined in the future, e.g. the OP_NOPx opcodes that have been used for soft forks in the past (OP_NOP1 became OP_CHECKLOCKTIMEVERIFY and OP_NOP2 became OP_CHECKSEQUENCEVERIFY).  Lately, Bitcoin Core 0.16.1 has stopped relay of OP_CODESEPARATOR in non-segwit in preparation for another potential soft fork that will reduce some lingering problems with expensive verification.

In those cases, standard transactions forbid both the scriptPubKey and the redeemScript (P2SH) versions (and, when applicable, the segwit P2WSH version), so the easy circumvention isn't possible in that case.


As a miner, why would I forward transaction with high transaction fees to other miners? Miners receive transaction and broadcast it to other nodes. Node that solves the puzzle will add that transaction into the block it mined. But as a miner why would I broadcast a transaction with very high transaction fees. Miner would keep the transactions as such to itself and whenever miner get the nounce, miner will include it in it's block and enjoy high transaction fees.

Sure, they might. But the person who made the transaction wants to get it to as many miners as possible. And if it's a high fee transaction, all the miners want to get it. The nature of the Internet is that if Alice wants to get a message to Bill, and Bill wants to get that message from Alice, Charley can't easily stop them.


How come the lightning network creators believe the fees will be zero? In this article,  Joseph Poon and Tadge Dryja say that they believe the lightning-network-fees would be less than 1 satoshi per node you transmit through, in practice.

As far as I understand, you need to put two transactions on the blockchain in order to set up a single payment channel (one for opening and one for closing it), you need atleast two payment-channels to route a payment. That's four writes to the blockchain in total.

According to, this and this page, you need somewhere atleast 300 satoshis per byte or 76k satoshis per standard transaction, we all expect this to rise with increased adoption. That means that for running a node you need to make atleast 76*4=304k transactions just to break even.

I have seen suggestions that you might want to close your paymentchannels atleast once per month, I feel that 304k transactions per month in every single node is very much if we believe lightning network will be very distributed. However, I believe the Joseph and Tadge are smarter and more knowledgable than me, so what am I missing here?

For each payment channel there will be two transactions sent to the blockchain, as you say, for opening and closing it. I'm not sure of the exact specifics of the lightning network, but I don't know where you are getting four writes to the blockchain. It should just be two: open a channel, close a channel, and do as many LN transactions as you want in between.

The LN fee they are talking about is not the opening and closing writes to the blockchain. Those are just normal Bitcoin transaction fees, separate from LN fees.

From what I understand the LN will be a somewhat decentralized system of large nodes that process the transactions. Every time you send a transaction inside of a payment channel on the LN you have to pay a fee to these nodes that route the transactions through the LN, this is how the nodes make money. But because the LN is a more centralized network than the bitcoin network, and it doesn't involve computing incredibly expensive hashes to confirm transactions, the cost of routing payments through the LN is very cheap. It won't be free, but it should be very cheap. Credit Card companies take usually around 3% fee, I read Joseph Poon say at some point that LN transaction fee will be percent based (instead of data size based like blockchain) but the fee will be less than 1%, maybe even as cheap as 0.1%.

Additional thoughts:

Assuming merchants eat the transaction fee as they do for credit card fees, it will save merchants a lot of money (>2%). Note however that for large Bitcoin purchases just doing a standard blockchain transaction will be cheaper than using the LN. Even with current transaction fees, if you pay $1000 for something with Bitcoin with a $5 fee, if LN has a 0.5% fee then it'd also be a $5 LN fee, so using those hypothetical numbers that would be the break even point where $1000 use normal bitcoin transaction. LN is meant for many small purchases and will be much cheaper than Bitcoin when you use it for many small everyday purchases.


When and how did Bitcoin start? Exactly when was the first block mined and the first bitcoins generated? How many people knew about the project at this point? Had the project been publicly announced before the first block was mined or did that happen afterwards? Is there anything special about this first block or could anyone have mined it?

I realize that there are a number of questions included here but I don't think that it makes sense to ask them separately.

Bitcoin's design paper was published on cryptography@metzdowd.com on October 31, 2008, which is considered by most to be the official beginning of the project. On January 3, 2009 at 18:15:05 GMT the Genesis block was established. Six days later, Bitcoin 0.1 was released and announced on the Cryptography Mailing List.

It is hard to estimate the size of the community at any point, especially historically, but there is a decent timeline of the major events in Bitcoin history at the official wiki.


Which RPC may I use to query bitcoind for raw transactions coming through? I need to capture and store the raw transactions coming through my local full-node bitcoin instance. I read here that it is possible, but there is no mention of the particular RPC calls. I also see the raw transaction JSON-RPC API, but it is still not clear how to use this to periodically query the raw transactions.

It seems like bitcoin-sniffer (written in python) is what I am trying to do and need, and since I am using Java, it seems bitcoinj can actually listen for incoming transactions, but I don't see example codes on how to do this.

My question is, how do I use the HTTP POST JSON RPC API back to my local bitcoin instance to query for transactions? Is there a tutorial?

I'd imagine I would be running in a continuous thread and periodically query bitcoind (the daemon) for the latest batch of transactions. Is this possible?

My question is, how do I use the HTTP POST JSON RPC API back to my local bitcoin >instance to query for transactions? Is there a tutorial?

You can find information about bitcoin RPC in https://bitcoin.org/en/developer-reference#remote-procedure-calls-rpcs

Also you can actually execute bitcoin RPC calls in https://chainquery.com/bitcoin-cli. If you only want to see what they are returning

  I'd imagine I would be running in a continuous thread and periodically query >bitcoind (the daemon) for the latest batch of transactions. Is this possible?

That's the approach I'm using in my project, you can see the code in https://github.com/JRamosGarcia/bitcoindAdapter It uses many java technologies as spring (for many uses, but make RPC a breeze to implement) ,  or quartz for periodic jobs. It's a work in progress, but maybe you can find some code or technology that helps you.


How to modify dynamically the fee of a transaction? I want to modify dynamically the fee for each transaction made by the users who use my website. I calculate the fees dynamically but I don't know how can I apply that custom fee for each user. I am trying it in the following way:

$this->bitcoin->settxfee($fee);
$output = $this->bitcoin->sendtoaddress($toAddress, $amount);

If someone can point me in the right direction I'd be grateful

You can only do this if you set the RBF bit on the original transaction.


How to build Primecoin from source code on a mac? How should one build the client for the new cryptocoin Primecoin from source code on a mac?

The source can be found here: https://sourceforge.net/projects/primecoin/files/

https://github.com/bitcoin/bitcoin/blob/master/doc/build-osx.md should work for you as Joe White commented, note you'll have to install Xcode first of all, and in Xcode open preferences - downloads and install the command line tools. I recommend homebrew over macports as it's better maintained and a little more user friendly.

the only difference is that as you're downloading from sourceforge rather than github, you skip the git clone and just find makefile.osx in /src/src/ of the downloaded folder.

you then (assuming you installed homebrew as standard) open makefile.osx in textedit or xcode and change

DEPSDIR=/opt/local

to

DEPSDIR=/usr/local

and you'll probably have to change

 $(DEPSDIR)/lib/db48/libdb_cxx-4.8.a \
 $(DEPSDIR)/lib/libboost_system-mt.a \
 $(DEPSDIR)/lib/libboost_filesystem-mt.a \
 $(DEPSDIR)/lib/libboost_program_options-mt.a \
 $(DEPSDIR)/lib/libboost_thread-mt.a \
 $(DEPSDIR)/lib/libboost_chrono-mt.a \
 $(DEPSDIR)/lib/libssl.a \
 $(DEPSDIR)/lib/libcrypto.a \

to paths more like

 $(DEPSDIR)/Cellar/openssl/1.0.1e/lib/libssl.a \
 $(DEPSDIR)/Cellar/openssl/1.0.1e/lib/libcrypto.a \

Check in /usr/local for the Cellar folder and the libs folder, you could alternately alias each referenced file in /usr/local/libs


Are there really Bitcoin Core nodes running in space that were launched by Blockstream? I've read about Bitcoin core being powered in space inside a satellite and streaming down the bitcoin blockchain back down to earth. What has been discussed so far and timeline for this to go live for Blockstream?

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

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

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

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


i don't know if there is an error in the scriptsig generation method of input in p2psh I don't know if there is an error in the scriptsig generation method of input in P2PSH.

My address is a single signing address with one Private key，
I created a transaction that will generate hex string via Bitcoinj.

script = ScriptBuilder.createOutputScript(key.getAddress(params));
Sha256Hash hashForSign = transaction.hashForSignature(i, script, SigHash.ALL, false);
ECDSASignature signature = eckey.sign(hashForSign);
TransactionSignature tranSign = new TransactionSignature(signature, SigHash.ALL, false);
scriptSig = ScriptBuilder.createInputScript(tranSign, eckey);

But it is not the same as the hex string generated by the client RPC, but I don't know where it is wrong.

I will be very grateful if you can help me.

ECDSA signatures are not deterministic unless you are using a deterministic signature scheme. Meaning that signing the same data with the same key produce different (valid) signatures.

I don't know if Bitcoinj uses such a scheme so If only the signature bytes in the transaction are different it is probably  fine.


Why are some of my peers rejecting this CSV transaction? The CSV-redeeming TX I broadcast: https://www.blocktrail.com/tBTC/tx/807d464fff227ce98cfb5f1292069e2793e99f21b0539a1729cc460af32add77

The locktime was set for ten minutes, and the redeeming tx (linked above) was broadcast after twenty minutes.

I have 8 peers and 4-5 reject CSV txs every time for reason=non-BIP68-final Here's one example...

Log messages (running bcoin):

[W:2018-10-09T22:43:03Z] (net) Received reject (52.62.75.209:18333): msg=tx code=nonstandard reason=non-BIP68-final hash=807d464fff227ce98cfb5f1292069e2793e99f21b0539a1729cc460af32add77.

RPC getpeerinfo:

  {
    "id": 12,
    "addr": "52.62.75.209:18333",
    "addrlocal": "18.191.117.102:57474",
    "name": "ec2-52-62-75-209.ap-southeast-2.compute.amazonaws.com",
    "services": "0000040d",
    "relaytxes": true,
    "lastsend": 1539125540,
    "lastrecv": 1539125540,
    "bytessent": 445546,
    "bytesrecv": 465329,
    "conntime": 13977,
    "timeoffset": 0,
    "pingtime": 0.195,
    "minping": 0.194,
    "version": 70015,
    "subver": "/Satoshi:0.16.2/",
    "inbound": false,
    "startingheight": 1414448,
    "besthash": "00000000210004840364b52bc5e455d888f164e4264a4fec06a514b67e9d5722",
    "bestheight": 1414433,
    "banscore": 0,
    "inflight": [],
    "whitelisted": false
  },

The peer is running updated software and besides CSV has been locked in forever

First of all, the Bitcoin network does not have a time granularity of minutes. At best, you can expect things to be within hours of what you want the time to be. So timelocking something for 10 minutes is useless and not very helpful as the "network time" updates only every 10 minutes. The time that you set does not correspond to real time, it corresponds to "network time" which is nowhere near real time.

The "network time" is the median time stamp of the last 11 blocks which will generally be an hour or so behind real time. But it is based on the block timestamps so it does not increase at a fixed increment nor is it a consistent amount of time behind. Combined with the fact that blocks are not found on a consistent timing, the "network time" has a granularity of a few hours at best.

So your transaction has a locktime of 10 minutes in the future from real time. But for network time, that's at least an hour, probably an hour and a half, before "network time" catches up to your transaction's locktime. So your transaction will remain non-final until that time.


Pool mining through the TOR network? Is it possible to mine Bitcoins at a pool through the TOR network? If so, how would one configure the appropriate tools?

Eligius has a hidden service for Tor mining.


what prevents from address generation to accidentally use an existing one? How come bitcoin addresses are created in a split second on my wallet app? what promises the address doesn't override a current existing address? I guess the same question applies for a private key...

what promises the address doesn't override a current existing address?

Nothing does, the security comes in a different way.

There are 2^160 possible addresses. That number is HUGE. It is so big, that the chance of ever generating an address more than once is basically zero. No matter the power of your supercomputer, or the length of time you have, you will just keep generating new unique addresses.


Is there a Drupal shopping cart interface for Bitcoin? Is there any Drupal SCI for Bitcoin available? Either tied into Ubercart or, more preferably,  Drupal Commerce.

You could have a look at uc_bitcoin by Mike Gogulski that seems be what you are looking for. A word of caution though: The GitHub code has not been updated since November 2010, it is for Drupal 6.x (has not been tried on D7) and Mike states that "There’s probably not going to be an update for a long while, either, so fork and code away". Anyway, here's some info about it:

  A Bitcoin payment method for the Ubercart shopping cart for Drupal.

  Features

  Generates a new bitcoin address for every order
  Provides payment address to customer on site at checkout, plus in a
  subsequent email
  Configurable timeout after which unpaid transactions will be
  canceled automatically
  Configurable number of Bitcoin network confirmations after which an
  order is considered paid
  HTTP or HTTPS access to bitcoind

There is also a project by Darrell Duane that is based on Mike's project. There is no download available yet and the project page was updated in June 2011.


How does this time-stamping system work? There is an online tool called Proof of Existence which uses the bitcoin blockchain to time-stamp documents. I'm reading the documentation but I fail to see how it works. I understand that it adds some hash code to the blockchain, but I can't see how this is a provable proof of the existence of a file.
In particular, the documentation states:

The document is certified via embedding its SHA256 digest in the bitcoin blockchain. This is done by generating a special bitcoin transaction that encodes/contains the hash via an OP_RETURN script. This is a bitcoin scripting opcode that marks the transaction output as provably unspendable and allows a small amount of data to be inserted, which in our case is the document's hash, plus a marker to identify all of our transactions.
Once the transaction is confirmed, the document is permanently certified and proven to exist at least as early as the time the transaction was confirmed.

And then:

If anyone wants to manually confirm the document's existence at the timestamped time, they should just follow these steps:

Calculate the document's SHA256 digest.
Find a transaction in the bitcoin blockchain containing an OP_RETURN output with the document's hash prepended by our marker bytes, which are 0x444f4350524f4f46 (or 'DOCPROOF' in ascii).
Some online services like Coin Secrets or blockchain.info's list can help you locate OP_RETURN transactions more easily.
The existence of that transaction in the blockchain proves that the document existed at the time the transaction got included into a block.

But what if someone has a copy of (e.g. steals) the original file? How can I certify I was the original owner? I just cannot see how it works. There is no identity proof.
Compare with a more traditional certification process. If I go to a legal entity that can make a proof of the document with my identity and date, it doesn't matter that someone steals it from me, because the document is certified with my identity. Since the blockchain is anonymous, this does not work. Can anyone explain please?

But what if someone has a copy of (e.g. steals) the original file? How can I certify I was the original owner?

If you want to use the bitcoin blockchain as timestamped proof that you had the idea (document) first, then you’d need to be the first one to submit the document for a time stamp. A timestamp doesn’t prove ownership of an idea, just possession of it at that time.

  If I go to a legal entity that can make a proof of the document with my identity and date, it doesn't matter that someone steals it from me, because the document is certified with my identity. Since the blockchain is anonymous, this does not work. Can anyone explain please?

You could simply add your name to the document that is being timestamped to prove that you were the one that submitted the document at that time. Since only a document hash is stored, this wouldn’t sacrifice your privacy at all.

Alternatively, if you created the OP_RETURN transaction yourself, then you could sign a message using the private key of the bitcoin address that was used as input to the transaction. This would prove you have the private key that was used to sign the transaction that timestamped the data.


What are the chances that Nick Szabo is Satoshi? Wikipedia info on Nick Szabo.

Does his interest in Ethereum make it more or less likely it is him?

This article seems to support the suggestion: The man everyone thinks is the creator of bitcoin gave a speech discussing the history of the technology

He is one of the most likely candidates but for me his interest in Ethereum makes him less likely (than before) to be Satoshi

This article discusses some of the known plausible candidates:

http://www.coindesk.com/information/who-is-satoshi-nakamoto/


Bitcoin built with a newer Berkeley Database incompatible with a older wallet? Is a Bitcoin client built with a newer Berkeley Database incompatible with a wallet file from a older client? Or is it that a wallet made from a newer Berkeley Database not compatible with an older client?

EDIT: What I'm trying to figure out... If I have a wallet from years ago and I import it into a newer client that was built with a different Berkeley database unknowingly would I have any issues?

You can always open a wallet.dat file created with an older BDB using software using a newer BDB. However, when doing so, the file will be upgraded and not be compatible anymore with the older BDB version that created it. This is even the case for minor version upgrades (4.7 vs 4.8 for example).

Bitcoin Core release binaries have used BDB 4.8 since release 0.4 (September 2011), but self-compiled versions or versions shipped with Linux distributions may use other BDB versions.


Bitcoin Transactions Detailed distinction between TxHeader TxInput TxOuput Related to post Murch Explanation of Segwit Tx Fee Rate he breaks a TX down into:

TxHeader
TxInput
TxOutput

To calculate the weight and the final virtual size of a transaction (P2PKH,P2WPKH,P2SH-P2WPKH)
My question relates to what is the TxHeader in detail. I haven't heard about this classification in any articles.

When I look at the following Transaction Description Transactions I see the following distinction so I conclude:
TxHeader:

Field
Size (in bytes)

Version no
4

Flag
2 (optional only for segwit v0 right now)

In-counter
1 - 9 bytes (varint)

Out-counter
1 - 9 bytes (varint)

lock_time
4 bytes

TxInput:

Field
Size (in bytes)

list of inputs
(in-counter)-many inputs

TxOutput:

Field
Size (in bytes)

list of inputs
(out-counter)-many inputs


are checksums included in mnemonic seed phrases? say i have 24 words. Out of those 24 words, is the 24th one the checksum.

say i have:

a1 b2 c3 d4 e5 f6 g7 h8 i9 j10 k11 l12 m13 n14 o15 p16 q17 r18 s19 t20 u21 v22 w23 x24

is x24 the checksum? or is there a 25th word which is checksum?

I'd also want to know about how checksums work.

I am assuming that you are talking about BIP 39 here.

A BIP 39 mnemonic can have any number of words with the most common being 12, 18, and 24 words. There is a checksum encoded into this mnemonic. This checksum is actually just a "part of" the last word, i.e. the last word encodes some of the actual initial entropy, and some of the checksum, depending on the size of the entropy in bits.

The way that BIP 39 makes the mnemonic is by generating some initial entropy that is n bits in length. The checksum is then the first n / 32 bits of the SHA256 hash of the entropy. This is just concatenated to the end of the entropy. The mnemonic is then encoded by dividing the entropy into groups of 11 bits and using the resulting 11 bit number as an index into a list of 2048 words.

With a 12 word seed, there are 128 bits of entropy, which gives 128 / 32 = 4 bits of checksum. This gives 132 total bits to be encoded, and 132 / 11 = 12 words. You may have noticed that the checksum is only 4 bits in length, which is shorter than the 11 bits allocated for the last word. So the last word's index is actually composed of both the last 7 bits of the entropy and the entire 4 bit checksum.

With a 24 word seed, there are 256 bits of entropy, which gives 256 / 32 = 8 bits of checksum. This is also shorter than the 11 bits for the index of the last word, so this means that the 24th word of a 24 word seed "contains" the last 3 bits of the entropy and all 8 bits of the checksum.

BIP 39 itself has a table showing the number of entropy bits, the number of checksum bits, the total bit length, and the total word length for various entropy bit lengths.


python-bitcoinlib | Create Private Keys, Public Keys and Addresses - How to Do It? I'm trying to use the python-bitcoinlib library but its docs aren't entirely clear to me.
I'm a programmer but quite new to Python, and not very versed in the Bitcoin protocol.

What's the process, code-wise, with the library, for the following?

Generating a private key
Creating a public key
Creating an address from the public key

I tried various things and am not completely sure what arguments I supply to what functions, and what functions I'm supposed to use in the process.

I'd appreciate a lot, and I think it'd help me the most if I were provided code for achieving each step.

I was able to follow the Bitcoin protocol (specifically, the developer reference and the developer guide on bitcoin.org to do all of those things, and I'm looking specifically how to do it with the library, so I could have my code fully compatible with other functionality of it, since I'd like to use the library for additional purposes.

Sorry I am not familiar with python-bitcoinlib but if your goal is to just create keys/addresses you can use this library (disclosure: I wrote it) the following way:

  Generating a private key

private = PrivateKey.random()

or private = PrivateKey.from_hex('yourhexkeyhere')

or private = PrivateKey.from_wif('yourwifhere')

and then to get the hex representation use private.hex() of private.wif()

  Creating a public key

public = private.to_public()
public.hex()
'044cc549c65f4b0b7713d7a763a01221f85fd34602ac8ff0386995349c55de7111d16b5...'
public.hex(compressed=True)
'034cc549c65f4b0b7713d7a763a01221f85fd34602ac8ff0386995349c55de7111'

  Creating an address from the public key

public.to_address('P2PKH')
'16B2Ghyu5C1CofKfXF2Zi9JycqaAyaE8cd'
public.to_address('P2WPKH')
'bc1qtqshpjw8kr7jlk27gcvj7pvzt8lp6vn5dc2f24'

If you use this library please use it only as a learning tool and not to send real coins as there might still be some bugs.


Bitcoin is becoming CENTRALIZED and is INSECURE I'd like someone to tell me if I'm wrong:

More than 50% of the mining is done by Chinese pools.  That means that they control the network - who's transactions get in, who's transactions are left out. Since the block reward was reduced to 12.5BTC, they are completing it with transaction fees - the bigger the transaction you're sending - the bigger the fee you need to pay them.  Last time I've checked I've seen some transactions with fees of more than $1000 worth of BTC in them.  So in a sense, Bitcoin is starting to act like a traditional banking system - owned by Chinese people.
Blockchain size is increasing rapidly and soon to reach 200GB of storage - when the size will get ever larger, especially assuming that people that host the entire chain on their computer do not get rewarded for it and maintaining a full node requires electricity + storage + network uptime, it will soon be costly to run a full node.   200GB and even 1TB of storage is no problem for a central authority to run, and it seems to be going in that direction. How can the network continue to be P2P like that?  And especially what happends if that main storage will be taken over by the authorities and be shutdown?
Same issue as in #2 - Because downloading and installing a node is costly and difficult, most of the wallets being opened by people today are online wallets, most likely under the mainsite blockchain.com, and this site seems to be run by ghosts - there's no actual person there that you can contact in case of problems with your wallet, and the only way to contact them is through a Luxembourg court order (see "Legal" section on their site).  Same goes for the bitcoin.org domain - there's no person that can take responsibility for these operations.  What happends if tommorow blockchain.com gets shutdown for legal actions?   What will happend with people's wallets and their funds then?
There is no governance, and the only thing that governs the entire network is mathematics.  What happends if tommorow all Chinese pools collaborate together, make a Bitcoin transaction of 1M Bitcoins, and after 5 or 6 blocks (confirmation) they start to re-mine all the blocks again in order to erase that transaction from the chain?   Assuming that they outmine all the other competitors, I can't think of scenario where they won't catch up and even win over the honest chain, assuming the difficulty changes only every 2016 blocks.  If I was the owner of these pools, what can prevent me from deliberately ceasing all my mining power.. wait for the net difficulty to lower, and then do this attack?

Any expert thoughts on this?

More than 50% of the mining is done by Chinese pools. That means that they control the network - who's transactions get in, who's transactions are left out.

Sure. But electing to censor transactions is pretty much equal to you refusing to pick up some unwanted dollar bill on the ground. Last I checked, eventually someone would pick up free money.

  Since the block reward was reduced to 12.5BTC, they are completing it with transaction fees - the bigger the transaction you're sending - the bigger the fee you need to pay them. Last time I've checked I've seen some transactions with fees of more than $1000 worth of BTC in them. So in a sense, Bitcoin is starting to act like a traditional banking system - owned by Chinese people.

False. As a user, you are in complete control of how much fees you want to pay. You can pay the minimum fee rate so as long as you have the patience to wait for the transaction to be confirmed. Alternatively, if enough users elect to pay a fee rate that is homogeneous, miners are still incentivised to mine transactions that pay lower fee rates.

  How can the network continue to be P2P like that? And especially what happends if that main storage will be taken over by the authorities and be shutdown?

If storage is an issue, you can elect to run your bitcoin node in prune mode, which effectively removes the need to maintain the whole blockchain. AFAIK, there are enough full nodes with the blockchain out there to prevent a state attacker from shutting down all of them.

  What happends if tommorow blockchain.com gets shutdown for legal actions? What will happend with people's wallets and their funds then?

Users should never trust web-wallets nor hold coins in web services to begin with. It was an unintended usage scenario.

Instead, users with storage and computational constraints may elect to store their bitcoins in an SPV wallet, offline paper wallet or hardware wallet with varying privacy/usability tradeoffs.

  If I was the owner of these pools, what can prevent me from deliberately ceasing all my mining power.. wait for the net difficulty to lower, and then do this attack?

The net difficulty will not lower itself until a full epoch (2016 blocks) has been reached. So there is no incentive to cease mining operations for the above reason. In fact, there is a huge opportunity cost to be paid by a major pool that ceases mining operation, consider the lost revenue opportunity. That alone could potentially drive a major pool bankrupt.


Transaction Status: 0 / not confirmed, not in mempool Trying to send BTC, but fail. The transaction is not in mempool.

What to do with these and how to solve the problem?

I already returned BTC canceled the transaction

Is the software you're using Bitcoin Core?

Then you need to make your software forget your unconfirmed transaction that is not in the mempool, so that you can make it again with a higher fee.

When launching your Bitcoin Core, run it with -zapwallettxes. This'll make your wallet forget the unconfirmed transactions relevant to your wallet. You can learn how to add that on Andrew Chow's blog.

Then the balance in your wallet should become the balance before you made the payment.

I've learned this from here, but the other two methods aren't applicable as you need to change your transaction to increase the fee.


How do I properly shut down bitcoind on Windows? I get error: EnvShutdown exception: DB_RUNRECOVERY: Fatal error, run database recovery (-30974) I am running bitcoind in Windows (interactively) and pressed "control c".  The following error was displayed:

EnvShutdown exception: DB_RUNRECOVERY: Fatal error, run database recovery (-30974)

Is this a bogus error, or could it lead to serious issues?
Did this delay my restart time?

This is the output after I restarted bitcoind:

Bitcoin version v0.7.1-beta (2012-10-09 13:22:09 -0400)
Using OpenSSL version OpenSSL 1.0.1c 10 May 2012
Startup time: 12/09/12 02:35:45
Default data directory C:\Users\Administrator\AppData\Roaming\Bitcoin
Used data directory C:\Users\Administrator\AppData\Roaming\Bitcoin
dbenv.open LogDir=C:\Users\Administrator\AppData\Roaming\Bitcoin\database

ErrorFile=C:\Users\Administrator\AppData\Roaming\Bitcoin\db.log
Bound to [::]:8333
Bound to 0.0.0.0:8333
Loading block index...
LoadBlockIndex(): hashBestChain=0000000000000451ad20  height=193797  date=08/14/12 03:38:39
Verifying last 2500 blocks at level 1
 block index          158518ms
Loading wallet...
nFileVersion = 70100
 wallet                  858ms
Rescanning last 3 blocks (from block 193794)...
 rescan                   47ms
Loading addresses...
Loaded 12371 addresses from peers.dat  78ms
RandAddSeed() 164540 bytes
mapBlockIndex.size() = 193799
nBestHeight = 193797
setKeyPool.size() = 100
mapWallet.size() = 0
mapAddressBook.size() = 1
Done loading
send version message: version 60002, blocks=193797, us=0.0.0.0:0, them=0.0.0.0:0, peer=127.0.0.1:0
sending: version (100 bytes)
ThreadRPCServer started

Send the RPC Stop command:

cd "C:\Program Files (x86)\Bitcoin\daemon"
bitcoind stop

Output

ThreadRPCServer method=stop
Flush(false)
blkindex.dat refcount=0
blkindex.dat checkpoint
ThreadSocketHandler exited
blkindex.dat detach
ThreadMessageHandler exited
connection timeout
ThreadOpenConnections exited
ThreadDumpAddress exited

blkindex.dat closed
DBFlush(false) ended          219780ms
StopNode()
Flushed 12513 addresses to peers.dat  280ms
Flush(true)
DBFlush(true) ended               0ms
Bitcoin exited


How many addresses does my wallet.dat contain? Do I need to make a new backup every time I make a transaction? I'm having little problem here, trying to figure out the safest way to backup my wallet.dat to make sure that no BTC may be lost in case of recovery.

I'm not sure how the process of adding new addresses may affect a, say, a recently created backup.

So, basically, do I need to backup continuously to make sure that no BTC are lost? do I need to backup after each new address is created?

Can you provide me with some general golden rules when backing up wallet.dat?

By default, Bitcoin Core creates 100 addresses the first time it starts, and tries to keep 100 not-yet-used keys in wallet.dat 'keypool' (when you unlock the wallet to make a payment it will generate more).

So you do not need to backup continuously. The 'getinfo' RPC command will tell you the time when the oldest not-yet-used key was generated ('keypoololdest').

Any wallet backup created after the keypoololdest time will be good enough to recover all of the bitcoins sent to your wallet, but I'd suggest you figure out about how long it will take you to send and receive 100 transactions (e.g. two per day would be 50 days) and then backup about twice as often as that (maybe once a month if you're making 2 transactions per day).

Be sure your backups are encrypted with a strong passphrase, and make sure you store them someplace off-site that is safe.

And for long-term storage of more than one or two bitcoins, use a hardware or paper wallet.


Why is it important to manage your own private keys and are there any exchanges that allow you to do that? I was reading through the comments to this article at Seeking Alpha and a couple of them talk about the importance of choosing an exchange that allows you to manage the private keys for the cryptocurrency you have bought.

For example one comment says that

  GTFO of any exchange who claims they will "vault" your assets for you,
  and move your Bitcoin into a personal wallet.

What are the potential/hypothetical consequences if an exchange does not allow you to manage your own private keys?

Are there any exchanges that allow this option?

What are the potential/hypothetical consequences if an exchange does not allow you to manage your own private keys?

If an exchange is managing the private keys (i.e. you are not managing your own private keys), it means that the exchange controls your money. They are then like a bank; you deposited money in and got a promise that they will give you the money later when you ask for it. This means that you are trusting them to hold onto your money securely.

Because they control the private keys, they could steal your money by taking it and running away. Or if the exchange were to be hacked, the money could be stolen by hackers. Both of these scenarios have occurred in the past. In either case, your money would be gone and there would not be much that you could do about it.

  Are there any exchanges that allow this option?

In the traditional sense of an exchange where you have an account and login (e.g. Bitstamp, kraken, Bitfinex, etc.), no. No exchange allows that  for multiple reasons: controlling your own private keys means that during an actual trade, you may scam the other trader by taking their money and not releasing the amount you were to pay; it also means that the exchange will work less efficiently as instead of doing trades in an internal database, trades must occur on chain.

There are decentralized exchanges which allow you to control your own private keys such as Bisq. But few people use them and there is a bit more risk involved because the other party could scam you.


Bitcoin Best Practices by the Bitcoin Foundation The Bitcoin Foundation's Executive Director, Peter Vessenes, in his open letter states that the Foundation is aiming to

  Publish a set of best practices for businesses transacting in Bitcoin, covering topics from accounting to physical and digital security

Is there any information on how this set of best practices is being developed, who is working on it and whether any individual can contribute to the works?

I put together a Kindle book, Bitcoin Step by Step, that covers some best practices.  When I was writing I searched the web for what ever I could find trying to make sure what I suggested was indeed the current best practices.  You can find it on Kindle.


Resolve BTC long mem pool (many unconfirmed tx) I've started with Bitcoin exchange service, by creating rawtransaction and broadcast it. The problem which I must face to face is too long mempool chain (over 25 unconfirmed transaction).

Example:
64: too-long-mempool-chain

Using limitancestorcount and limitdescendantcount just resolve on local node, these late txs (transaction after first 25) must wait for a long period time to re-broadcast like this:
Transaction not found in Blockchain

Here is my testnet address has many unconfirmed txs and still pending hold, if I search on another explorer, I can't see 45 unconfirmed txs, same to getrawtransaction on node, response is No such mempool or blockchain transaction:

https://live.blockcypher.com/btc-testnet/address/mxHqrQBWuCndNaubTYUbcEVzeNPsT34TP6/

So, how can I avoid this issue, I just think few ways such as: Divide main address to few sub addresses which divides main UTXO to few UTXOs, create many-to-many transaction (currently is 1-2, 1 target and 1 changeAddress back), using high confirmation UTXO first,... Which options can bring better result and performance for a long time scaling up? Any advice is really appreciate. And last question, is there anyway to mark 1 UTXO that is used for 25 times (example I use UTXO X first, then it's returned Y, use Y is returned Z, total using X = 2, I don't have any related information to calculate it because node returns UTXO contains only txId).

Problem solved, make many sub UTXOs will resolve that well.


Handling "dead" (double-spent) transactions in my mempool Say I receive transaction A and it is in my node's mempool and unconfirmed.

Then a block gets mined directly, which spends one of transaction A's inputs, rendering transaction A invalid.

What can I expect my node to respond with, when I ask: getrawtransaction <transaction A's txid>?

A will be kicked out of the mempool when that block is received, and getrawtransaction will subsequently fail for it.


Processing multiple transactions very fast Let's say I run an automated script, with the main purpose to send transactions as fast as possible.

I want to send one transaction with 5 BTC to one address and a transaction with 2 BTC to another.

My own bitcoin wallet has 2 transaction inputs, one with 3 BTC and one with 7 BTC.
How do I spend the transactions the fastest way?

Spend the 5 BTC first having 7 BTC as input, get the change of 2 BTC returned and send this 2 BTC to another address.
Spend the 2 BTC first with 3 BTC input, spend 5 BTC with 7 BTC input.

Does order actually matter if I want to send transactions as fast as possible? I was assuming that due to the confirmation time, an optimized transaction order will have an impact on speed of the transactions.

I want to send one transaction with 5 BTC to one address and a transaction with 2 BTC to another.

The fastest (and cheapest) way to do this is with a single transaction.

Many transactions have 2 outputs, one being for change, but it doesn't need to be for change, and doesn't need to be limited to 1 or 2 outputs either.

Take this transaction for example, it has about 2 dozen outputs: https://blockchain.info/tx/df9ba42c44d25df13d3bdba0994b98b97d8c22293daf0c27e8e5d9b4e21c5906

Total fee, just 0.00483272 BTC


What are some good online Bitcoin wallets based on client-side security? I just found Bitventory, which seems to be an online wallet service that requires a minimal amount of trust (it's the major design goal, at least).

Are there other services with similar goals or functionality?

Yes there is such a service which provides exactly what your looking for it is called StrongCoin


Do blockchain.info wallets correspond to a single wallet on the blockchain? To learn about bitcoin in a hands-on way, I decided to buy some. I created a wallet with blockchain.info, and then used Bitonic (A Dutch bitcoin seller, not an exchange) to buy a small amount of bitcoin. Later, I added some more.

So far, so good, the money arrived in my wallet, and I've been enjoying the recent surge.

However, I decided to use the blockchain explorer to have a look at what was actually happening during these transactions, and when I look at my wallet's address (the one I give to Bitonic), it's empty and there are are no transactions to it. Looking at the actual transactions that blockchain.info points to, there are outputs with the right amount, but they have different addresses.

I was expecting to find my wallet on the blockchain, with the current amount of BTC I own and two transactions going in.

What's happening here? Is Bitonic actually sending blockchain.info the coins off-chain? Bitonic only gets the wallet address, so they shouldn't be able to tell who manages the keypair for me. On the other hand, if bitonic sends it to the address I gave them, why does a different address show up on the transaction output? Is there some mapping between addresses going on inside the blockchain that I'm not aware of?

It's normal . Your blockchain.info wallet change the address in every transaction. You can learn more by google " bitcoin hd wallet".


Bitcoin client 0.4.1.1 stuck at block 176947 Bitcoin client stuck. Tried to rebuild whole blockchain, but it went up to that number and got stuck again.

Here's a screenshot: http://vvcap.net/db/2IR75OWyJj5AsUW7eo_i.htp

Any suggestions?

I just downloaded version 4.4.1.1 to try to reproduce your problem, but couldn't.  Here's the beginning, and relevant mid-section of the debug.log file when I ran it on a machine which I hadn't used for a month or so:

Bitcoin version 0.4.1.1-beta
Default data directory /home/user/.bitcoin
Bound to port 8333
Loading addresses...
dbenv.open strLogDir=/home/user/.bitcoin/database strErrorFile=/home/user/.bitcoin/db.log
Loaded 19026 addresses
 addresses              1337ms
Loading block index...
LoadBlockIndex(): hashBestChain=000000000000052e27b6  height=173760
 block index           13603ms
Loading wallet...
[...]
SetBestChain: new best=0000000000000959beb5  height=176945  work=302325188992488282894
SetBestChain: new best=000000000000011c616f  height=176946  work=302331966182716897933
SetBestChain: new best=000000000000052c233f  height=176947  work=302338743372945512972
SetBestChain: new best=00000000000002c5eaa8  height=176948  work=302345520563174128011
SetBestChain: new best=000000000000089bf6dd  height=176949  work=302352297753402743050

Maybe you could show us yours?  I tend to agree with Stephen that it's likely a disk space problem.


Blockchain.info testnet payment APIs I have created a testnet wallet on testnet.blockchain.info and added some testnet bitcoins to it.

I want to test the payment APIs so I am following the documentation on how to Generate a receive address. Yet I do not see a way or an URI to register a testnet receive address.

I tried to use it as is and I've put my testnet xpub in the query but I get this error:

{
    "message": "Invalid xpub format",
    "description": "Ensure you provide an xpub key, rather than an address"
}

Anyone had success using blockchain's payment APIs with testnet before?

Blockchain.info doesn't support API for Testnet network.

That API Pages for Mainnet network. What you can use blockcypher as an alternative, they're supporting Testnet for bitcoin.


Pls help me stop this bitcoin https://blockchain.info/unspent?active=1AeRh3hBFCCouBukF3NrxtHjar1aBQToh4&format=html

help me stop it or tell me how i can stop it

Final Balance   $ 18.58

Please do note, you can not terminate any transactions on blockchain that has confirmations. As i can see there is 64 confirmations now. So it can not be stopped.


Manually create a transaction to spend the output of a P2SH tx I want to manually create a transaction to spend the output of a P2SH tx, but I don't know where the redeem script should be placed in the new transaction?  I followed an online tutorial Building a Transaction By Hand

In order to sign the transaction, you need to build this tx message as the picture shows. But when there is a redeem script, where should i put this redeem script?

The redeem script is part of the scriptSig for the input you are trying to spend. Here is the format for a P2SH transaction:

scriptPubKey: OP_HASH160 <scriptHash> OP_EQUAL
scriptSig: ..signatures... <serialized script>

The script is hashed and compared with the script hash in the scriptPubKey.


Can you use the same seed for normal BTC and Lightning wallets? If I generated 24 words from a Ledger Nano, can I import these to a lightning network wallet e.g. Eclair?

A lightning network wallet can be compatible with a Ledger Nano generated wallet, but doesn't have to be.

Ledger nano generates seeds (the 24 words) using BIP 32/BIP 39/BIP 44.

I checked to see what format eclair uses, and it seems to use BIP 49 instead of BIP 44. This seems to suggest that the seeds are incompatible, but I haven't confirmed this.

If you want to do so, you can try importing your Ledger seeds into eclair, which is a non-descructive action (i.e. it won't affect your wallet/funds).


Is bitcoin-qt using bitcoind? or bitcoind is already built in the bitcoin-qt wallet? When using bitcoin-qt wallet, all commands are executed externally with bitcoind?

I am asking because I saw an altcoin wallet-QT (DMD) which comes as a single file without any daemon file, does it mean the daemon is already built in the qt wallet?

Bitcoin-qt does not run bitcoind as a daemon. If you check the running processes after you launch bitcoin-qt, you will  not see bitcoind being launched.

They both utilize the same "Bitcoin Core" source code obviously, but bitcoind and bitcoin-qt are separate programs and one does not need the other to function. You can think of bitcoind as a GUI-less implementation of "Bitcoin Core" and bitcoin-qt as the GUI implementation of "Bitcoin Core".


Why does Bitcoin use the input/output system? Why don't we just use balances? The nodes would verify that balance > 0 before validating the transaction.

Outputs neatly solve a few problems you would encounter with a balance based system.

Transactions using outputs can not be replayed cross network, multiple times, or in different situations than when they were created. In an address based system you must keep a nonce or a record of all past transactions to ensure multiple executions of one transaction does not occur. You don't have the option of re-signing a transaction with a higher miners fee, because the transactions are not atomic and can both exist in the chain at once.

Transactions using outputs can be deployed even years after they have been signed, which is incompatible with an incremented nonce.
An output based system can forget about an output once it is spent, a nonce based system must keep track of all nonces forever.

Verifying that an output exists in a block is trivial by displaying the merkle path to it, and showing the block header is part of the main chain. In an address based system this is substantially harder to prove, if not impossible given the same constraints.


At what point is a new wallet known by the Bitcoin network? I was just showing a deterministic wallet to a friend who asked "At what point is the wallet known to the network?" and I could only guess by saying that it is known only when a transaction is broadcast and confirmed... But I don't think that is the whole story. I still have some unanswered questions. I think this is because I don't fully understand the cryptographic method in play.

So for arguments sake, we have User A and User B.
User B creates a brain wallet using an offline computer which
essentially provides User B with a public key and a private key.
User B tells User A to send Bitcoins to this address and provides her public key.
User A is online so he sends the coins with a signed transaction including fee using his favourite client.

What happens?

How does the network (by this I mean the nodes on the network who are relaying the transaction) know that this is a genuine address, User B is after all off-line?

If no coins are ever sent to this address, does the blockchain ever need to know if this wallet has been created?

TL;DR: The network is not made aware of address ownership, nor can anyone check if an address is owned unless it has been used previously (or is owned by himself). Anyone can send transactions to any valid (as in correctly shaped) address¹, the recipient doesn't have to be online for a transaction to take place.

Let me elaborate a little bit in order to explain:

Addresses are the public key of an asymmetric key pair

An address is the public key of an asymmetric key pair. The owner of the key pair can use the private key to sign transactions or messages (for example in order to prove ownership). Only by using the correct private key a valid signature may be created, which then anyone can verify as valid by using the associated address (which, again, is the public key).

Wallets are an abstraction

A wallet is an abstract construct, which contains a set of public and private key pairs randomly generated for the user. In a deterministic wallet, the keys are derived from a passphrase instead of a random seed.

The Bitcoin client software abstracts the wallet for the user such that it checks each of the addresses contained in the wallet, whether there are any balances (transaction outputs) associated in the blockchain with them. It sums the funds up and presents them as a single total balance. Underlying, however, these balances are stored publicly in the blockchain (that's right, the wallet doesn't contain your coins, it just allows you to spend them). They are split up to numerous addresses and transaction outputs:

  Address #15521³ has

  3 BTC in transaction output 1

  Address #23414 has

  1.2 BTC in transaction output 1
  0.7 BTC in transaction output 2

  ...

Everyone can see them, however, usually can't determine the identity of the owner.

Transactions are public notifications of change in ownership

Now, when someone sends a transaction, he basically puts up a notice for everyone in the network to see in which he signs over some of his transaction outputs to recipient addresses. He signs this notice with his private key, so that everybody can check that he is the rightful owner of the outgoing balance (as they can see what address the balance is being sent from they know which public key to use to verify the validity). This can happen regardless of the recipient being online: The bitcoins will be available to spend to the owner of the new address, because only he has the private key, whenever he choses to do so.

It cannot be determined if an address is owned by someone

The public keys (Bitcoin addresses) fulfil a specific pattern with checksums, so that bitcoin software can easily assess whether an address is valid. However, unless an address has been used before there is no way for anyone to check whether a valid address has actually been claimed by anyone.

At no point the network is ever made aware of the creation of new wallets, nor does it have to be. Balances are just signed over to a recipient address and subsequently can only be spent with the associated private key. If the new addresses private key hasn't been found yet, it is very unlikely that anyone ever will do so – the coins would likely be lost forever.

¹ By creating raw transactions one can actually send transactions to an invalid address. This is for example used to leave messages in the blockchain or to validate the authenticity of documents.

³ Of course addresses really are alphanumeric strings with up to 34 characters.


Projects built on the Tendermint platform? The Tendermint project sounds like a very promising  proof-of-stake implementation.  What public projects are being built on this platform?

CyberMiles is using it. They just got on the stage


Why did the Bitminter application ruin my GPU? I was trying out Bitcoin mining with my home GPU, a Radeon R9 290x, with the Bitminter program, on Windows. (I know it's not profitable, it was just mere curiosity) It instantly recognized my GPU, and when I clicked on start, the whole system crashed, like if I unplugged the power source. Since then, the PC doesn't recognize the GPU at all, like as if it wasn't plugged in, nor does my monitor receive any input. What could have been the problem? Could it be fixed?

Mining itself don't ruin the GPU, but the long usage. A GPU's lifespan is at least 3-5 years. When working continuously on high freq. it is decreased as well.
  Whoop in your case, your card just got 'burned'
It is not a the mining itself that caused the damage, but there is something else, or software, or the GPU was not quite on her place, or maybe some malicious software helped you for the achievement.


What is a fraud proof? In Pieter Wuille's presentation on Segregated Witness, he often mentioned "fraud proofs". What exactly are they? Do physical users actually have to go out of their way to manually produce these proofs to alert other nodes of misbehaviour? How do fraud proofs relate to witness scripts?

SPV clients don't fully validate blocks. Therefore, they are vulnerable to being fed a fake block from their full node peers. A fraud proof is a way to prove that a chain tip is invalid. As soon as any node would discover a block to be invalid, they'd create and relay a fraud proof to the network. As SPV clients receive the fraud proof they will know not to accept the invalid block.

As hinted above, fraud proofs can be created by any network participant that discovers an invalid block. As far as I know, this has nothing to do with Segregated Witness, but will rather be introduced as an independent softfork some time in the future.


How long does it take for an unconfirmed transaction to reverse? I have had an unconfirmed transaction for 1 week. Will this transaction automatically reverse or do I need to do something?

There is no estimated time, and in fact this transaction can potentially get confirmed at any moment, though the less likely the lower the transaction fee was.

To fully revoke it, create another transaction that overrides it, and put a higher transaction fee to make it more likely that it will get confirmed before the other one.


Accelerated block generation According to http://btc.blockr.io/ :

Height  Block created   Transactions    Block fee   Size (kb)   Days destroyed
318525  2 minutes ago   28              0.00370000  8.36 kB     2.00
318524  3 minutes ago   64              0.00746243  25.76 kB    527.97
318523  4 minutes ago   140             0.02336649  67.67 kB    1,666.43
318522  2 minutes ago   16              0.00130000  4.64 kB     10.19
318521  8 minutes ago   359             0.05072184  205.02 kB   4,148.84
318520  16 minutes ago  92              0.01266343  49.22 kB    112.75
318519  7 minutes ago   128             0.01682150  54.51 kB    2,146.34
318518  20 minutes ago  137             0.02128600  86.23 kB    1,213.50
318517  24 minutes ago  657             0.10664839  353.93 kB   6,502.12

So during the past 24 minutes, 9 blocks have been found. One would expect this time to be approximately an hour and a half (90 minutes).

How is this explained? Why is the block generation process currently running so fast?
Is it safe to assume that the 6 confirmations, which took less that 10 minutes, implies an irreversible transaction?

Block finding is random. The number of blocks in a period of time follows the Poisson distribution. If the average is 10 minutes per block, then the chance of at least 9 blocks in a given 24 minute period is roughly 0.086%. Not a lot but it can happen occasionally. Also, if momentarily the hashrate has increased without the difficulty catching up, the rate, and the probability, will be higher.
Yes, 6 confirmations that due to luck took, say, 30 minutes, are even safer than 6 confirmations that took 60 minutes, since the attacker would have had less time to find blocks in his alternative branch.


What bitcoin exchanges are based in the USA? What are the names and Web site addresses of popular bitcoin exchanges based in the USA?  These exchanges should support account funding via ACH transfers from US bank accounts.

I might have missed a few, but here are the main ones based in the USA:

Coinbase (not really an exchange)
GDAX (part of Coinbase)
Poloniex
Gemini

Mind you that many other exchanges based out of other countries are just as likely to accept funding via ACH.


Trying to open an old bitcoin core wallet.dat file fails I am trying to open an old (~2012) bitcoin core wallet.dat with a bitcoin.com wallet, and it says that my password is incorrect, although it works great on my bitcoin core wallet.

Was there any change in the protocol since 2012 that could explain such a problem? (If I understood correctly, the only wallet in 2012 was bitcoin core's)

There are probably other ways, but I tried this a while back with an old wallet.dat from ~2013 and it worked. You can download the Bitcoin Cash release of Bitcoin Unlimited and open that wallet. Bitcoin Unlimited is the reference implementation of the Bitcoin Cash client that is a fork of Bitcoin core so it works with those wallets. To do any transactions you'll have to let it download and verify the blockchain and that takes forever, but it will work.

Once you have it synced, you'll see your balance (assuming you had a Bitcoin/BTC balance before the fork) and you can then transfer your Bitcoin Cash (BCH) to another BCH wallet or exchange (e.g. Coinbase/GDAX is a simple way to exchange now).


Will MtGox accept a poor quality ID photo? An exchange I use (Mt. Gox) wants me to send a color scan of my ID.  The only camera I have access to is a grainy camera on my feature phone.  I don't know the camera resolution but it is not very high.

The ID is readable but doesn't fill even half the image.  If I try to get closer, the image is too out of focus.

Will this image be accepted or will my account end up getting locked ("under review") until I send in a scan with a better photo?

No, it will not. The information on the scanned image must be very clear and show a clear photograph.

It is best to scan the ID using a quality scanner. Even a picture taken on a smartphone and filtered with a "scanning" program was insufficient for their requirements.

Source: I lazily tried everything, getting rejected each time, then finally going and scanning the ID.


What is the best way to get notified of new payments received Using the daemon and not a 3rd party pinging service, what is the best way to get notified of new payments?
Do we need to constantly poll the server?

Bitcoin New transactions can be discovered by polling using the listsinceblock API command with the Bitcoin.org client.

Beginning with v0.8.2 of the Bitcoin-Qt/bitcoind client is -walletnotify option that can run a process when a transaction that affects the wallet is seen.

The BitsOfProof supernode will offer this as well I believe.

[Update: Thanks to Pelle's answer to a related question,

You can do this using BitcoinJ by implementing the PeerEventListener interface.

The OnTransaction will be called every time a new Transaction is broadcast out and received from a Peer ]


How do Bitcoin transactions work, and what does one need in order to send or receive one? I am trying to understand how Bitcoin works and whether it is possible to manage a bitcoin transaction anonymously.

If someone transfers a bitcoin, what do I need to sign it with?

Can it be signed using another bitcoin? What is the id that is used to sign the bitcoin over to me? Is that not an identifier?

How many identifiers can one have and how to do you get such an identifier/wallet?

Problem is that if you have one wallet then all related transactions can be found, so to stay anonymous you actually need many wallets. How do you get a wallet?

Can you create a wallet per bitcoin transaction?

You are using some Bitcoin vocabulary, but you are jumping to conclusions that aren't correct.

Quick vocab session:

Addresses can be used to receive payments.
Wallet is a term used for a collection of addresses.
The sender needs to sign a transaction using a private key

When you receive a Bitcoin transaction, you don't have to sign anything. In a transaction the recipient is passive, similarly to receiving a letter in the mail he doesn't have to do anything at all. Whenever he looks at his mailbox at a later point in time, the letter will wait for him; whenever you check the blockchain your address will have a balance associated with it.

The recipient of a Bitcoin transaction doesn't even have to be online at the time of the transaction. However, he does need to have a Bitcoin address, where the payment may be directed.

The identifier you are asking about seems to be such an address. The good news is, you can have as many addresses as you want.

Wallets are essentially an abstract construct to talk about a collection of addresses. It cannot be discerned from the addresses alone that they belong to the same wallet, so you don't necessarily give up a lot of information when you have several addresses in the same wallet.
However, by analysing interactions between addresses it is possible to guess that they are controlled by the same entity, e.g. guessing which transaction output is the change from a transaction, or funds being spend from different addresses in one transaction.

See What's the difference between a wallet and an address? for more information about that.

Concerning anonymity, I'd suggest having a look at How anonymous are Bitcoin transactions? and the tag anonymity.


Bitcoins send out after syncing wallet Good day,

can someone maybe help me.
I just opened my wallet today after I exported it to a private key and incrypted it (Multibit wallet) and more than half of my coins has been send out to an address I dnt know. According to what I can see in the transaction History of this transfer it has been used as transaction fees for someone els`s transfer of coins.
Can this be a problem on the blockchain side or was my wallet hacked.
Any help will be greatly appreciated.

Thank you

Assuming you are checking the balance using MultiBit perhaps your missing coins are sitting in a change address - when you send bitcoin often some coins are moved to a newly generated change address, so you would need to export more than just the one address.

Fire up bitcoincore again and check the other receive addresses in a blockchain explorer for balances.


How do mining pools protect their wallets? Since Slush took quite a hit due to the hacked Linode servers, I'm wondering how do mining pools protect their wallets from theft of file and theft of private keys in those files?

If a pool makes a payout, the mechanism that performs the payout must have use of a private key. Therefore I don't believe there can be any secret to securing this private key beyond good operational security best practises. This would include operating with a minimum of "cash-on-premises", so the wallet used by the payout mechanism would only have enough BTC to cover payouts for the next few days, relying on refills performed by an entirely separate, manual process.


How is the witness reserved value set in a coinbase transaction? In a coinbase transaction the second transaction output seems always to be a 32-byte witness reserved value. Is there any constraint on this value?

The only constraint on this value is that it must be 32 bytes. Otherwise there are no constraints. This is done to allow for a future soft fork to commit to new data and have non-upgraded nodes still be able to store something in the block that commits to the new data. As such, the witness reserved value must remain unconstrained to allow for a future soft fork to work.


How is the prioritization of Bitcoin Transactions done as of today? How does the Bitcoin Network as of today priotize Transactions. Is it:
A) [Bitcoin Days destroyed] * [Transaction fees / Size ]
B) [Transaction fees / Size ]

What i am NOT looking for is links to old answers to the questions, where no one answering seemed to be really sure or links to 5 years old (and pretty certainly wrong) bitcoinwiki entries.

Please no speculation and guessing about this. There is already enough confusion/contradiction. I would rather have some practical viewpoints on this. Does someone run a mining rigg - how did he handle this? Did someone send 2 Transactions with same size AND Fees, but different Bitcoin days destroyed? Does someone know for sure that most Miners work with prioritization X, or has a link from bitcoin core? Etc.

Input welcome thx to the forum.

The (close-to¹) highest block reward is achieved by including the transactions with the highest fee per weight. Deviating from that, miners are free to include any valid transactions at whim. They may for example choose to include their own transactions, transactions for their business partners, or transactions subsidized by out-of-band payments over other that would gain them higher revenue.

While a miner could still choose to select by coin-age-priority, this would neither be economically rational, nor supported by default by the latest versions of Bitcoin Core. Coin-age-priority was deprecated in Bitcoin Core 0.12.0.

¹ It's fathomable that a case could be constructed where selecting strictly the transactions with the highest fee rate would leave the block not completely full and selecting other transactions instead would increase the absolute revenue.


What computers are those in the picture? I'm totally new to crypto currency mining and I have a picture where there is a rack of computers mining cryptocurrencies (supposedly). I'd like to know what computers are those and maybe availability and pricing.

I tried to ask on meta about whether this question is suitable to Bitcoin SE, but I got a message saying that I need at least 5 points of reputation :(

This is the picture I'm talking about:

These are Application Specific Integrated Circuit(s), a computer that is designed for Bitcoin mining. PCs used to mine too, but when FPGAs released (later ASICs released), mining with a PC wouldn't be efficient because of competing ASICs (and electricity fees).

Currently Bitmain (shop.bitmain.com) is the most preferred ASIC manufacturer, but it looks like it may not stay so, in a 6-12 months. (The most popular ASIC is Antminer S9, $1500, currently.)


Stealing Bitcoin Private key using Man-in-the-Browser I was reading that Man-in-the-Browser (MITB) is able to steal credentials data, modify html, and modify out going data.
Indeed, MITB is one of the big threat of Bitcoin online wallets
usually, when using online wallet user's private key is encrypted and decrypted using Java script in the user's browser

Now, I am wondering how MITB is able to steal the private key after encrypted it in the browser ?

The idea behind a man-in-the-browser attack is that the attacker has access to everything that your browser does, at least for the site you are on.  This is usually accomplished by tricking your browser into running malicious javascript within the context of the domain you are browsing, but may also be the result of malicious or exploitable plugins.  If your browser runs the code that encrypts a key, or uses it to sign something, that means your browser has the unencrypted version of it.  In the case of a MITB attack, the attacker has the unencrypted version too.  This means it doesn't have to steal the private key after it gets encrypted.  It already had it before any encryption.

If your browser has been compromised, nothing you do with it can be considered safe.  From a web security standpoint, a MITB attack is about as bad as it gets.


What stops an attacker from crippling the Bitcoin network? An individual (or government) who wants to bring down the Bitcoin network could conceivably broadcast a ton of junk/illegitimate transactions to the network thereby consuming the bandwidth and processing power necessary for the network to deal with legitimate transactions.
I understand Bitcoin has two protocols in place to address this vector of attack:
1) First and foremost it has each node verify all information received before relaying it to its peers. As such, an attacker would barley get past first base (i.e, legitimate node 1) to be able to cause catastrophic damage to the network at large
2) banscore (which effectively computes how bad a node is behaving. Once it reaches a certain critical threshold a neighboring node will stop receiving connections from that node/IP for a period of time)
My main question is: considering the fact that the government (or a government run entity) controls IP allocation isn't this solution completely reliant/dependent on a centralized entity to work effectively?

...could conceivably broadcast a ton of junk/illegitimate transactions to the network thereby consuming the necessary bandwidth and processing power for the network to deal with legitimate ones.

If the transactions are invalid, then they would not be relayed by the network's nodes, making the attack somewhat ineffective. At best, the attacker could consume computational resources of peers they are directly connected to, though if they are spamming invalid transactions then they would probably be banned by their peers soon.
If the transactions are valid, then the attack becomes expensive, which is a disincentive over the long term. It would be extremely expensive to fill every block with 'spam' transactions, and there will still be other users that will compete (in terms of fees) to have their transactions confirmed first.
If some entity attacked bitcoin via IP/DNS blocks, this would not entirely shut down the network, though it would likely cause disruptions to some nodes. I believe that nodes which connect through Tor, or through other methods (such as by satellite) would still function without issue.


How to Create Wallet for Website I want to create a Wallet for website, i.e., for each individual user who register in the website.

How can i do this.

How to transfer coins from one wallet to another wallet

A good phrase for this is "If you need to ask, you shouldn't." because there is just so much that can go wrong and not to mention wallet services are vast and abundant. But if you really want to: http://coinpunk.org/


Bitcoin Transaction within source code I am messing with the Bitcoin sourcecode.

Normally when you want to send some BTC you type :

./bitcoind sendtoaddress 1ADRESSS 0.001

How would you do this in the sourcecode on a recurring basis?

So what code is needed to send a transaction to a specified address each time a block is created? Almost like a tax. and where would this code be placed?

I am learning the Inside of the Bitcoin protocol and C++ so any help would be great.

You can make use of the -blocknotify=<cmd> facility as described under: https://en.bitcoin.it/wiki/Running_Bitcoin.

This is a nice example of how to use -walletnotify: https://bitcoin.stackexchange.com/a/24483/11221, -blocknotify can be configured in exactly the same way.


Bitcoin qt synchronization problems! So bought my first Bitcoins the other day (27 & 28/11/13) on localcoins, then transferred them to a MultiBit wallet. No problems.

I decided to use a 'safer' wallet, therefore I moved the coins to a Bitcoin qt wallet. The last few days I've been waiting for the blockchain to sync..got to 97% then my comp crashed.

I reopened bitcoin qt, and now it's syncing from zero again...just as slowly.

What should I do? Is there a way to open a another wallet, get my coins there?

I sorted it out through Blockchain eventually and was able to move my BTCs somewhere else..phew..

Blockchain wouldn't let me import my qt wallet over Firefox but with Chrome, no probs. Then I had to import priv key (dunno why) aswell then bingo!


How to implement and use BIP 70? I have a server running bitcoind 9.x, how can I incorporate features such as return addresses to my customers using BIP 70? I have seen the GIT repo but is it something that I have to download or is it already implemented in the bitcoind daemon I'm running?

Thanks

It's neither part of the Bitcoin daemon nor something you can just download. It's code you are expected to write and integrate with your web commerce application. The code in the git repository is only a sample.

See my answer  https://bitcoin.stackexchange.com/a/24450/5757 for some further information.


Cryptocurrency with support for a shared wallet Consider a scenario where 5 cryptocurrency holders wish to create a partnership. All of them add an amount of money into a wallet to finance an idea. The wallet is shared between all of the partners to view and deposit into, but in order to withdraw, all 5 (or possibly the majority 4/5) must view the proposed transaction give some sort of permission.
Is there a cryptocurrency which could fit the above scenario?

Is there a cryptocurrency which could fit the above scenario?

yes, bitcoin: https://en.bitcoin.it/wiki/Multisignature


Correct use of the word Bitcoin I'm still unsure when to use Bitcoin and when bitcoin is more appropriate. Did anyone define when to use the word Bitcoin with a capital B? Is one used to talk about the currency as in "3 Bitcoin" and the other for the "bitcoin protocol"?

From Introduction on the Bitcoin wiki:

Capitalization / Nomenclature
Since Bitcoin is both a currency and a protocol, capitalization can be confusing. Accepted practice is to use Bitcoin (singular with an upper case letter B) to label the protocol, software, and community, and bitcoins (with a lower case b) to label units of the currency.

So, the accepted usage in your example would be "3 bitcoin" and the "Bitcoin protocol".


What is NXT's Genesis Account's Passphrase / Password? I remember there was a passphrase/password that gave you access to NXT's genesis account even though you can't do anything with it once you get in there.

Genesis Account Number
The genesis account number is 1739068987193023818 (NXT-MRCC-2YLS-8M54-3CMAJ).
Genesis Account Passphrase
The passphrase “It was a bright cold day in April, and the clocks were striking thirteen.” gives any user access to the genesis account. It is the opening line of George Orwell’s ‘1984’, which begins on the 4th April 1984.
Even if you got in, it would be a negative balance which means you wont be able to send anything out. People use it to use it as a blackhole to send their nxt or assets to, since anything that goes in wont be coming back out.


Transaction is not submitting using bitcore-explorers.js I'm submitting a transaction using bitcore-explorers library of js which also uses insight services of bitcoin node and here i'm receiving the error

Please help me out from this error, furthermore it was working fine before couple of days.

So, I've searched for the error on the Internet, and here's what I found.

  EAI_AGAIN means the DNS server replied that it cannot currently fulfill the request

In addition, I used the BitPay BCH testnet explorer yesterday, the previous day, and the previous day. The last three days except today, the server was down and I saw "CloudFlare server down" message on the explorer's page. So, I guess they are moving the IP address behind CloudFlare's proxy, and the transition is not perfect.

Summary: It's not your mistake, but you could try flushing DNS cache.


Compiling a statically linked binary for bitcoin core v0.12.0 I'm trying to compile a statically linked binary following https://github.com/bitcoin/bitcoin/tree/master/depends. But when I run make I got this error:

fcmatch.c:284:63: error: 'PRI_CHAR_WIDTH_STRONG' undeclared here (not in a function); did you mean 'PRI_CHAR_HEIGHT_STRONG'?
  284 | #define FC_OBJECT(NAME, Type, Cmp) { FC_##NAME##_OBJECT, Cmp, PRI_##NAME##_STRONG, PRI_##NAME##_WEAK },
      |                                                               ^~~~
fcobjs.h:54:1: note: in expansion of macro 'FC_OBJECT'
   54 | FC_OBJECT (CHAR_WIDTH,  FcTypeInteger, NULL)
      | ^~~~~~~~~
fcmatch.c:284:84: error: 'PRI_CHAR_WIDTH_WEAK' undeclared here (not in a function); did you mean 'PRI_CHAR_HEIGHT_WEAK'?
  284 | #define FC_OBJECT(NAME, Type, Cmp) { FC_##NAME##_OBJECT, Cmp, PRI_##NAME##_STRONG, PRI_##NAME##_WEAK },
      |                                                                                ^~~~
fcobjs.h:54:1: note: in expansion of macro 'FC_OBJECT'
   54 | FC_OBJECT (CHAR_WIDTH,  FcTypeInteger, NULL)
      | ^~~~~~~~~
make[4]: *** [Makefile:613: fcmatch.lo] Error 1
make[4]: Leaving directory '/usr/local/src/bitcoin-0.12.0/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.11.1-14f43f3a52a/src'
make[3]: *** [Makefile:474: all] Error 2
make[3]: Leaving directory '/usr/local/src/bitcoin-0.12.0/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.11.1-14f43f3a52a/src'
make[2]: *** [Makefile:561: all-recursive] Error 1
make[2]: Leaving directory '/usr/local/src/bitcoin-0.12.0/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.11.1-14f43f3a52a'
make[1]: *** [Makefile:444: all] Error 2
make[1]: Leaving directory '/usr/local/src/bitcoin-0.12.0/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.11.1-14f43f3a52a'
make: *** [funcs.mk:240: /usr/local/src/bitcoin-0.12.0/depends/work/build/x86_64-pc-linux-gnu/fontconfig/2.11.1-14f43f3a52a/./.stamp_built] Error 2

I'm doing this on ubuntu 20.04 LTS using the source code of bitcoin core v0.12.0. I already compiled the source code and because it is an old version it was necessary to install some old libraries. But I believe the problem is related to the C++ version and I don't know how to set the right C++ version. How can I fix that?

Apply these two commits in order to update fontconfig.
https://github.com/bitcoin/bitcoin/commit/86d410d91b2188405a56bba5f1a1f74694be886a#diff-7cec5704a9b80e0db0bdc569395a7e8f2584356138b37b6a70ff30ba38224516
https://github.com/bitcoin/bitcoin/commit/3498a8d018fa02de17e1f9c4cda49f4c7edb3c6c#diff-7cec5704a9b80e0db0bdc569395a7e8f2584356138b37b6a70ff30ba38224516


Why CBlockIndex does not store a vector of next blocks for forward iteration? CBlockIndex stores a pointer to previous block..

Is there any specific reason why it does not store a vector of "next" blocks for forward iteration?

If you think, a typical tree (as data structure) has "parent" (pprev) and a list of "children".

Memory usage. Adding a vector to each of the (now over 600000) CBlockIndex entries would be a significant memory usage increase (at least 48 bytes per entry, to be precise, on stdc++ 64-bit platforms).

For most operations it's also unnecessary. Instead, CChain stores a pointer to all CBlockIndex entries in the main chain, allowing O(1) access to any of those. Also, using the skiplist mechanism (see pskip) in CBlockIndex it's possible to efficiently find the height N ancestor of any given block (in O(log n) or O((log n)^2), IIRC).


Does Ripple give an advantage to early adopters? I really believed in the idea behind Bitcoins from the start, and because I was an early adopter, I made some nice profit.

Now I forecast a big future for Ripple too, but I don't see many ways to turn this into profit. I can start hoarding loads of XRP, but it doesn't seem likely they will become valuable in the future, because as soon as they do, transaction fees will be lowered. Another option is to start a new gateway, and because they're pretty scarce now, it may become one of the popular ones in the future.

Is there any other way I can profit as an early adopter?

Advantages to being an early Ripple adopter:

Being able to get a lot of free ripples during their first distribution
Being able to establish oneself as a reliable and reputable Gateway that will be a go-to place for everyone
Establishing oneself as the first business to do something with Ripple - be it selling something or offering some services. Other early adopters would be then inclined to spend their ripples on your service just for the sake of using the system

Generally, there is not that vast of an advantage for being an early Ripple adopter as compared to using Bitcoin. That doesn't mean, however, that the advantages are not there.


only getting 52khs on Litecoin mining with a Nvidia GTX670 I want to give mining a try with the current video card i have. I know its not good for mining but its a start. I use cgminer and link it with WeMineLTC. For some reason I only get 52 KHash/s. I saw my GPU is at 100% and it isn't overclocked. What should be the reason I only get this low hash per second? I saw on this page it should be around 112 000 KHash/s.

This is my bat file

cgminer.exe --scrypt -o stratum+tcp://global.wemineltc.com:3335 -u workIt -p totallymypsw -I 13

You shoud instead use cudaminer for this. I use the same card and I have a mining rate of 150khash.

The reason why you get a low mining rate is because Nvidia cards use CUDA cores to do most of their calculation and most of the miners do not use them since the best graphic cards for mining are AMD cards (and they do not have CUDA cores).

I dont know where you saw that 112 000 Khash/s (mostly because you forgot to give the link) but I doubt that a single card could do that with litecoins (but its possible with Bitcoins).


How to use both CUDA GPUs? I'm using rpcminer-cuda to have a play around mining some bitcoins.  I have 2 NVidia cards, and I understand this is not ideal for any profitable mining.  I would however like to have them both working at the same time.  Presently the output from rpcminer-cuda when it starts up is:

rpcminer-cuda.exe -url=myurl -user=myuser -password=password

Client will start 1 miner threads
2 CUDA GPU devices found
Setting CUDA device to first device found

How do I make it use both cards at the same time?  Do I need to tell it to start two threads or is there some other commandline switch I need to use?  I've tried adding -gpu=2 but it seems to be ignored.

The -gpu=X command line is telling it which of your CUDA devices it should use, not how many it should use. Like most things written by programmers, the index starts at zero.  If you have two video cards, run it once at the command line with -gpu=0 and then a second time again with -gpu=1.  Once you work out your ideal fine tuning on aggression, gpugrid and gputhreads (if you do at all), it's easiest if you make a batch file (unless you're using GUIMiner, in which case create a new CUDA miner for the second card, same extra flags on both other than gpu=0 or 1).

You can execute it twice without specifying the GPU and it will certainly run, but from the console output it appears it assigns both of them to the first device.


Difference between wallet and mining software? What's the core difference between the mining and wallet software out there? I haven't been able to find any information on this so anything - technical or non is appreciated. Though I'm talking about the wallets that make you download the block chain as well, not the light wallets. Thank you.

The main difference is that the wallet software does not mine or add onto the blockchain as the mining software does. Mining software attempts to find a valid Proof-of-Work, i.e., find an input to the hash function such that the hash is below the target, and has the ability to output a new block if the correct answer is found.  Wallet clients download the entire blockchain, but do not mine for blocks as the mining software does.

In the past when the difficulty was low, the mining software and wallet were in the same program, but they have since split and now many versions of both wallets and mining software exist.


Which currency (crypto & fiat) to use to measure profits? Lets say you have added enough USD to trade with so you pick BTC to trade altcoins with.

You buy Altcoin X for let's say order total 0.5 BTC
BTC goes up in value but Altcoin X in USD has jumped big time in value
In BTC terms you have lost as BTC's value increase is more than Altcoin X
You sell Altcoin X but you get less BTC, in USD terms you happy, profit both up
BTC drops in value to the USD, you got less than you started with now what?

Do you ignore the USD value and measure only in BTC to get your base currency/crypto currency to use for measuring profits trading Altcoins?

I just cannot get my head around it. Any advice and help/direction will be appreciated.

Companies measure their profits in currencies in which they keep the accounting.
In my opinion regular people should measure profits in currency which they earn and/or spend. Therefore you should ask yourself: Do you spend BTC? Do you spend USD?
You should measure profits in currency you can relate to in terms earning/spending money.