Some Core developers work for Blockstream. Some people say they want small blocks so that you will be forced to use Blockstream products (sidechains) to use bitcoin.

Some say Bitmain uses ASICboost for a 20% benefit on their mining operations - a huge advantage in the mining world of thin margins. Some say they don't want segwit because it would hinder ASICboost.

At the time of writing, mining fees constitute about 20% extra income on top of the new coins that miners mint. However, several companies have already switched from Bitcoin to Ethereum because of the high fees. Higher prices is good for business, but losing customers not so much. Miners may want just the right amount of scaling, to maximize income.

People also don't agree on what Bitcoin should be. Some want every human being (and computer) to be able to use Bitcoin directly. Others want Bitcoin to be a settlement network used only by big financial institutions, while regular people use something else. For everyone to be able to use Bitcoin we'd need scaling in a huge way. For a settlement network you don't need further scaling, which is what we are seeing so far. You may think that since individuals and small companies are leaving bitcoin, this means the settlement supporters are winning. However, noone is using bitcoin for settlements and there are no signs that this will change.

Then there are people who want bitcoin to fail. Whether it is because they invested heavily in an alt coin or because they benefit greatly from the status quo of the economy. As long as bitcoin is unable to support a growing user base, these are the people who are winning.

There is also the possibility that many of these people are just idiots who don't understand the benefits of cooperation. As the saying goes, don't attribute to malice what can be attributed to incompetence.


How much space needed to run Bitcoin daemon in amazon AMI?

The relevant space used is the one needed to store the blockchain, the public registry where all the bitcoin transaction are recorded. It's currently about 16GB, you can have a look of the growing rate here https://blockchain.info/charts/blocks-size


Bitcoind Testnet time/timereceived constantly changing?

"time" is a Unix epoch time when the transaction was added to the wallet

"receivedtime" is A Unix epoch time when the transaction was detected by the local node or the time of the block on the local best blockchain that included the transaction. Not returned to move category payments


How do I get my purchsed bitcoins from a old bitcoin wallet?

Go to your backup file of %appdata%/bitcoin/wallet.dat
Go to your local file of %appdata%/bitcoin/ and delete the wallet.dat
Replace the old Wallet.Dat

You should have all your bitcoins back now.


While solo-mining the miner falls back to attempting to create real-difficulty shares, a.k.a. blocks. Hence you won't see a share until you actually find a block. The only reason that pools use lower difficulty shares is in order to determine which miners are actively attempting to mine a block. Since you are the only miner there is no need to keep tabs on the miner, it's already clear who's going to get the reward.

tl;dr: this is perfectly fine, as long as the miner is showing a hashrate you'll find a block eventually, although with your current hashrate it'll take 193 years in expectation for you to find a block.


Get input addresses of a transaction using electrum

The hashed refer to the previous tx the input is consuming, and its vout position in that tx.

You will need to use the electrum API to fetch that transaction's details, and look at the outputs[vin] value for the locking script, and then convert that to an address by encoding it for base58check/bech32.


Getting multiple OHLCV candles with API with one request

You can do this with ClueDex. By default, all Bittrex markets are returned in a single query. You can specify how many candle data you wish to get with the "periodqty" parameter. In your case, you make periodqty equal to 1 for the last period.

Additionally, you can create your own period, you aren't limited to the standard periods. For example, if you wanted 30-second periods, you just specify the "period" parameter as 30S.

If you had a need to go back in time Cluedex also has the capability to do that, too.

The only drawback is, if it even is one, is that it's not a free API, it's premium. However, the prices are reasonable and the data isn't cached.


Privacy concerns for a publicly displayed Bitcoin address

This is the design of Bitcoin; you can use multiple wallets to obfuscate the transactions (or third parties etc.), but ultimately there is always a paper trail that anyone can access; the privacy comes from not being able to tell who is operating any wallet.

If this public-ledger is a concern for you, you should look at various privacy coins such as Monero (here's a guide to the most common ones I just Googled), as this is the whole reason they exists instead of their users just using Bitcoin.


Cryptocurrency wallet passphrase 10 word?

It is possible to have a nine word mnemonic + 1 passphrase word, although it is unusual - you'd probably remember if you specifically chose that combination.

Electrum in BIP39 mode should be able to work with it.

It could also be some random wallet's passphrase system which does not conform to BIP39, in which case electrum will give you a checksum error when you try. If this is the case, you're out of luck unless you can locate the original wallet software.


https://github.com/bitpay/copay

  Copay is a secure Bitcoin and Bitcoin Cash wallet platform for both desktop and mobile devices.

Copay supports Bitcoin and Bitcoin Cash only.  No other currencies are supported.


Where can I find early posts about Bitcoin where trolls are arguing over distribution?

Try searching BitCoinTalk.org, it has messages from Satoshi going back to late 2009, so I would assume if these messages existed they would be there.


What are the legal processes that someone would have to go through in order to get a Bitcoin exchange operational?

At the present moment, no country recognizes bitcoin as actual "currency" so the laws for exchanging, buying, selling or trading in bitcoin are exactly as they would be for simply setting up a shop. For legal purposes, pretend bitcoins are any other object, let's say a chair...

If you set up a web site that exchanges chairs for USD and you sell enough chairs, you'll probably need a business license, it would probably be smart to incorporate your chair-selling business at some point as well. If you "mine" (assemble?) chairs then you have a cost of production and you make a profit. If the profit exceeds some amount which your state/country has established then you must pay taxes on those profits. Transactions which take place using bitcoin are essentially barter transactions: whatever laws would apply if you traded an equally-valued number of chairs for that XBox 360 apply to purchasing it with bitcoins as well.

I qualify all of this with "at the present moment" because it's all quite likely to change at some point. Bitcoin is only unregulated at the present time because lawmakers are, for the most part, unaware of its presence. Once they become aware, wheels turn slowly but eventually new legalities will inevitably spring up around the bitcoin community. If you intend for your exchange to last for more than a few years it may be worthwhile to set up shop offshore in a country like Panama, where the laws are more favorable to exchanging currency.

Edit: I must also mention that bitcoins may be recognized as a "value store" without being recognized as a currency. I am not a lawyer so this should not be taken as legal advice. If you have concerns about the legality of any service you wish to run, you should contact a lawyer - though even this is of questionably little help since at present there is not (to my knowledge) any precedent for just about anything we do with Bitcoin. As with all young technologies, expect legislation to spring up around it and expect things to change soon and often.


Each OP_CHECKSIG and OP_CHECKSIGVERIFY is counted as 1 sigop.

Each OP_CHECKMULTISIG or OP_CHECKMULTISIGVERIFY, is counted as 20 sigops if they are found in an output or scriptSig and not part of a redeemScript, i.e. not P2SH.

If OP_CHECKMULTISIG or OP_CHECKMULTISIGVERIFY are in a redeemScript (i.e. it's P2SH), then the number of sigops is the number of public keys in the multisig redeemScript.

For non-segwit inputs, these numbers are multiplied by 4, so 4 sigops for OP_CHECKSIG and OP_CHECKSIGVERIFY, and 80 sigops forOP_CHECKMULTISIGand OP_CHECKMULTISIGVERIFY.

However segwit inputs don't use these scripts explicitly. So a segwit input where the witness program is version 0 and the program is 20 bytes (i.e. P2WPKH), the number of sigops is 1. If the witness program is version 0 and the program is 32 bytes (i.e. P2WSH), the witnessScript is interpreted and its sigop count is as above as that uses the opcodes explicitly.

So in your example transaction, the input spends a P2SH-P2WPKH and the output has an OP_CHECKSIG. Since the input is P2WPKH, it is counted as 1 sigop. The output as an OP_CHECKSIG, so that's another 1 sigop. However because that output is not a segwit output, its number of sigops is multiplied by 4. Thus the output is actually 4 sigops. Summing those is 1 + 4 = 5 sigops in the entire transaction.


Personal computer to use for bitcoin client

A full copy of the blockchain is needed by "full node" clients such as Bitcoin Core, correct.  (The current size is now over 109 GiB.) But Bitcoin Core now supports pruning, where it downloads and validates the entire blockchain but discards most of it. In that case you can use it with less than 1 GB of disk space.

There are also many "thin" clients that do not need to download the entire blockchain at all.  See the wallet list on Bitcoin.org and look for those marked "simplified validation".  These clients need only a small amount of disk space.  This approach slightly reduces the security, as it is theoretically possible to trick such a client into accepting an invalid transaction, but for average users it is likely sufficient.

In short, there are plenty of ways for anyone to use Bitcoin on a personal computer without needing 100 GB of disk space.


How accessible is Bitcoin to blind people?

The short of it is Bitcoin already has a subpar reputation for user experience, and it doesn't get better as you dig into accessibility. Hopefully the Bitcoin community can draw on accessibility solutions as general standards to improve UX as things evolve.

More specifically, the frequent use of QR codes by wallets is the biggest non-blind-friendly user flow that comes to mind. I did some searching around and it looks like there is work being done on the non-Bitcoin specific task of improving accessibility for QR codes. It seems like individual Bitcoin wallet companies in the past have taken a stab at addressing the issue, but I don't know of universal standards that have emerged.

On the flip side, the question asks about mining and confirming transactions, which I believe would not really be much more difficult. Mining has nothing to do with user interaction. Setting up the hardware seems like the biggest hurdle, and I imagine if you are already comfortable setting up building towers and putting together hardware, Bitcoin specific hardware would not be significantly worse... but I am definitely not an expert there.


What is the standard deviation of block generation times?

Excluding complications like difficulty changes and temporary blockchain splits, you can model the block generation time as an exponential distribution.

An exponential distribution has a standard deviation equal to the expectancy value. This predicts a 10 minute standard deviation for Bitcoin.

Measuring the actual distribution isn't that easy. While each block contains a timestamp, that timestamp isn't very accurate, and sometimes the time difference between blocks is even negative.
The timestamp doesn't change over the course of a single share, and some miners deliberately use timestamps deviating from the actual time


Is it possible that one knows how much BTC is in wallet.dat without knowing password?

is he [or she] trying to cheat me out of money?

Yes.

Even if you had a copy of their wallet, they have the private-key and can control any funds that appear in your copy of the wallet, now or in future. Even after they give you the password and even after you change the password.

What they are probably giving you is a "watch-only" wallet - often used by conmen to deceive people. The password to a watch-only wallet does not let you spend the money in it.

There's no need for a genuine seller to use this convoluted method of selling a wallet.dat file.

If they really wanted to sell Bitcoins they would  have you set up your own wallet without their help and have you tell them your bitcoin-address so they can send the bitcoins from their wallet to yours (note that the underlying reality is more complex, wallets hold private-keys not bitcoins, but this is the normal way to sell Bitcoins).

There is never a good reason to exchange wallet-passwords or private keys. You should never get involved in any arrangement that involves doing this.

You should do your own research on Bitcoin first and never accept advice or assistance from people who show such deceitful intent or appear to be trying to confuse you.


I want withdraw from BitPay and send USD to bank account in Puerto Rico. I reside in Argentina. Is that possible?

You might need to list them for sale on a site like Coinbase (?) to convert them to USD. Then you would use your PR account to deposit the funds into. From there its a regular bank transaction of USD to Argentina or wherever.


Bitcoin is becoming CENTRALIZED and is INSECURE

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.


Negate the need for blockchain explores and full blockchain syncing for simple queries

That's exactly what your bitcoind client does. It asks for specific blocks in network calls and if you wanted to, you can create a simple client that asks only for certain tx's and blocks like you said.

That is in fact what most SPV wallets (phone-based wallets and some others) are doing. They ask for block headers only and then ask for transactions related to those blocks to prove that certain transactions exist.


You should be able to just stop the old version, download the new binaries, unpack them, and run them. On the first start lightningd will take care of updating the database if necessary and

Alternatively you can also compile the binaries yourself, like you did before the release:

git clone https://github.com/ElementsProject/lightning.git /opt/lightning
cd /opt/lightning
./configure --disable-developer --disable-valgrind
make
sudo make install

Afterwards lightningd and lightning-cli will be in your $PATH and available from everywhere.


How to transfer BTC between paper wallet and an exchange?

Paper wallets are often a very secure way of storing bitcoins for the long-term but not for two-way transactions.

You can easily transfer bitcoins into your paper wallet from GDAX by going to WITHDRAW FUNDS and putting in the public address part of the paper wallet.

Sending bitcoins to GDAX from a paper wallet is more complicated.
You will need to import your private key into a real client.

Once you imported the private key into your client wallet it will allow you to spend your bitcoin and send it to the address provided on GDAX.

Current fees for bitcoin transaction can be found on miningfees.com


What are the realistic system requirements to run bitcoin core for generating wallets, signing and verifying messages on a laptop?

You can just use the pruning, which lowers the required storage size to 550 MB. Other than that, you don't need a strong computer. It can run on a Raspberry Pi 3 B+ without any problems (but it won't be able to keep a full mempool).


Can I find a bitcoin wallet from an address directly from blockchain data? (not website)

How do they do that?

See https://www.walletexplorer.com/info

What is on this site?
WalletExplorer.com is Bitcoin blockchain explorer, with two additional features:

it merges addresses together, if WalletExplorer thinks that they are part of the same wallet
wallet can have name

How wallets are computed? When are addresses merged together?
Just a basic algorithm is used to determine wallet addresses. Addresses are merged together, if they are co-spent in one transaction. So if addresses A and B are co-spent in transaction T1, and addresses B and C are co-spent in transaction T2, all addresses A, B and C will be part of one wallet.
Sometimes, an address belongs to some service but it was never co-spent with others. Then that address stays unnamed. It is typically more often at addresses with higher amount (as there is no need to co-spending).
How are names discovered?
In most of the cases, I registered to service, made transaction(s) and saw which wallet bitcoins were merged with, or from which wallet it was withdrawn.
There is probably no easier way how to discover names other than this.
Please note that the name database is not updated, so it does not contain newer exchanges (or newer wallets of existing exchanges)


This is precisely what federated byzantine agreement algorithms like that used by XRP and Avalanche do. But this is a such a huge change that you can't really consider the algorithm to be proof-of-work anymore.
What happens is that a block is not accepted when it is mined but some subsequent process that can only happen once the block is public is required. So if the block is not made public, it will never be accepted.
The scheme Arthur Britto, Jed McCaleb and myself developed for the XRP Ledger in 2011 allows each participant to choose whose signatures they will require before they locally consider the block valid. Only when you collect sufficient signatures do you accept the block. There is no way to obtain the signatures unless the block is made public.
A somewhat complex algorithm handles the case where a chain is built privately and then revealed later. That chain may have more work but it will have fewer signatures in the intermediary blocks. There's "preferred ledger by branch" code that detects this and heavily discourages adoption of the one with the fewer intermediary signatures.
Again, this is such a radical change that the result is not really proof-of-work but a different algorithm. In the case of the XRP Ledger's algorithm, it doesn't use any proof-of-work at all. But you could use this "preferred chain by branch" logic and the signatures as proof of the chain being made public in connection with proof-of-work if you wanted to.


Possible error in the white paper Calculations section?

One way to interpret this is that there is, indeed, a mistake.

A more charitable interpretation is that there are two unstated assumptions:

The attacker is performing a Finney-like attack - that is, he has already pre-mined a block before even attempting the transaction. So while z=0 means the honest network has 1 block, so does the attacker.
The attacker wins propagation races. So if there is a leaf attacker block with the double-spending transaction, and a same-height leaf honest block with the original transaction, the attacker's transaction will be accepted.

Together, these give a 100% chance of success for the attacker if there is only 1 confirmation.

In my own paper on the subject, I have explicitly stated the assumption that the attacker already has one block (while removing a different simplifying assumption).


Why do some wallets advice me not using internal address to receive funds?

From this article on HD Wallets

  Then we have the chain node, derived to a path of either 0 or 1. 0 is the external key pair chain, and is used for generating new public addresses. 1 is the internal keychain and is used for things like change addresses (in Bitcoin every transaction must have an address to send the excess funds to. The “change” of the transaction)...It’s because this is a derivation path that’s been formally agreed upon by the different crypto communities. This is significant because if I wanted to, I could create my own tree following any made up standard I want and create and sign valid transactions from the public/private keys. But could any other wallet ever regenerate that structure? What happens if my app goes off the market? The user’s money is locked into a completely arbitrary private/public key tree. Not the best situation to be in. Therefore, we hold on to these artifacts of the past because an extra derivation or two is a small price to pay for consensus.

TLDR: It is for organizational purposes. Wallet developers follow BIP44's derivation path regardless of currency for consensus reasons. It doesn't make a lot of sense for Ethereum HD wallets to utilize the account field since addresses are already accounts in ethereum, but some wallets do.


Where is the Signature stored in a SegWit transaction?

That's not accurate. The witness is stored in the blockchain.
In the segwit format, the signature is part of the witness, the witness is part of the transaction and the transaction is written to the block in full. Nodes that understand segwit will download and store the complete transaction including the signature.
However, segwit is constructed in a forwards compatible manner. It's made so that it is possible to produce a "stripped version" of a segwit transaction that omits the "witness". This stripped version is a non-standard valid transaction according to pre-segwit rules. This means that pre-segwit nodes will not propagate it when it is unconfirmed, but accept it when it is included in a block. Segwit-enabled nodes would consider the stripped version incomplete and therefore depend on receiving the complete version of the transaction from another segwit-enabled node.
Since the transaction outputs are part of the stripped transaction (because they are not part of the witness), pre-segwit nodes will come to the same conclusion regarding the ownership of funds by following the stripped blocks as segwit-capable nodes that read the complete blocks.
Part of the criticism of segwit is that pre-segwit nodes will not verify the signature of segwit transactions, as they do not receive the witness and wouldn't know what to do with it. This means that a legacy node might accept an segwit-invalid block until that block is no longer part of the most-work chain-tip. However, such a block would not propagate well on the network, as about 89% of the nodes on the network are segwit-capable. If you're receiving a significant amount of funds from a segwit transaction and are running a segwit-incapable node, you might want to wait for  additional confirmations before taking it at face value. However, for significant amounts that would be a great idea regardless.


What would happen if every miner adds a transaction to his block that did not occur?

Only the wallet holder can create a valid transaction. That's what makes them the wallet holder. The holder of a wallet is the person who can create valid transactions to claim the funds in that wallet.

So the transaction is not valid. Any block containing an invalid transaction is itself invalid. So everyone else (exchanges, wallets, etcetera) would ignore that block and any blocks mined on top of it. So all these miners would lose out on the money they could have made by mining valid blocks.


Yes, since blacklisting a set of UTXOs would be done by adding more rules and thus restricting the set of allowed transactions, technically such a change could be introduced as a soft fork by the miners.

However, I would sincerely doubt that censoring Satoshi from spending her coins would find broad community support. I suspect that such an endeavour would quickly escalate the already existing tensions between community and miners.


Using maxuploadtarget in Node Window Console

You can make changes in bitcoin.conf file

Bitcoin Core Config Generator (compatible with Bitcoin Core 0.20)


The seeds produce the addresses, not the balances.  Consider that you can have multiple wallets that contain the same address.  The balance doesn't exist in both addresses, because there's two copies ... it's like you said at the end.

Your wallet looks up the addresses in the blockchain that's copied on your system, and they contain the balance ... well, actually, the balance isn't actually an entity.  The transactions are.  Your wallet scans the blockchain for your addresses, and any transactions that involved it, and calculates the balance based on the inputs and outputs.


How to read a transaction from a block? Who paid whom?

When you send a Bitcoin transaction, your wallet software will use one or more existing Unspent Transaction Outputs (UTXO) to fund the transaction. The transaction will then specify the new owners of the consumed balance in the outputs. If the amount spent in the inputs does not match the amount in the outputs plus fees perfectly, the remainder will be sent back to the sending wallet in a change output. This particular transaction appears to have spent four UTXO to pay a single recipient, sending back the remainder of the input balance to the sender. Alternatively, this transaction may have paid two recipients, but that is not the most common pattern on the blockchain today.

Anyway, while multiparty transactions exist on the network (e.g. look at coinjoin here on the site), they are fairly uncommon today.


Is there a website that compares the features of different cryptocoins?

I think the closest you get is this list of all cryptocoins on Bitcointalk. There is a very brief summery of features there, but you can click further to the corresponding official thread, which should contain all information available on the altcoin.

Sadly, almost none have a thorough explanation of the algorithms involved and are hard to access without looking through the entire code (if available at all). I'm even a bit disappointed in Bitcoin in this case. I have yet to see a javadoc like thorough code documentation for any cryptocoin.


Double spend attempts examples on testnet?

Invalid transactions are not kept as part of the blockchain; they are, after all, invalid. Your best bet might be to listen to the chatter on the network (you'd require a custom-written client for this, I would imagine).


The number of transactions in the header is always zero, per the specification. The -gen option has no effect on the getwork RPC call.

I'm not sure what you think is wrong with that information, but if it's just the zero transaction count, that's always that way. If it's the fact that you only get the headers you need to hash, it's always that way. Of course the nonce is 0 because the client has no idea what the nonce should be. (That's the point of mining.)


Is it possible to have multiple wallets which send money and/or multiple wallets which receive money in a SINGLE transaction?

A transaction is composed of inputs and outputs.
The inputs are the funds that go into the transaction, they can be from multiple wallets as long as every input (an input is an output from some previous transaction) is signed for by its owner.
On the output side we can send funds to any number of addresses (we are limited only by transaction size in KB)
So yes, it is possible to do just that.
As a practical example look at CoinJoin which is a way to combine inputs from different wallets together.
Hope this helps.


Fiat money is money that has no entity backing it other than the issuer, usually a government. When the United States dollar finally disconnected from the gold standard in 1971 it became a fiat currency. Basically the USA declared, "The dollar has value because we are 'Murica" and the world said, "OK". In actuality, the US dollar has no intrinsic value other than the fact it is issued by the United States. Most modern currencies are fiat money.

Bitcoin follows the same principle, in that its value is determined by perception. Instead of the trust of some government entity being evaluated to determine the value of Bitcoin, other factors (the technology, widespread acceptance, understanding of e-money, etc.) are taken into consideration. When magazines and online entities write intriguing articles about Bitcoin, people take interest in it, the demand goes up and so does its value v. government-back currencies. Likewise when Mt. Gox is DDoSed, a bitcoin service shutters, or $250,000 worth of BTC is stolen, people get nervous, demand drops, and so does BTC's value.


How do I write a script such that my funds are locked in a 2-of-2 multisig that converts into a 1-of-2 multisig after 365 days?

To construct the script you could use Pieter Wuille's Miniscript site.
If you go to the Policy to Miniscript compiler section there is an example in Policy for a 2-of-2 multisig that turns into a 1-of-2 multisig after 90 days.
and(pk(key_user),or(99@pk(key_service),older(12960)))

You would need to adjust it for your desired example. A Policy that fits your needs would be:
and(pk(key_1),or(99@pk(key_2),older(52560)))

Once you have the Policy you can copy and paste this into the Policy to Miniscript compiler section and get the Miniscript equivalent of this Policy. The Miniscript output is:
and_v(v:pk(key_1),or_d(pk(key_2),older(52560)))

Further down you can copy and paste this Miniscript in, press Analyze and you will get the size of the resulting Script (78 bytes) as well as the actual Script:
<key_1> OP_CHECKSIGVERIFY <key_2> OP_CHECKSIG OP_IFDUP OP_NOTIF
    <50cd00> OP_CHECKSEQUENCEVERIFY
OP_ENDIF

It is worth noting that this example assumes you are more concerned with losing one particular key (key_2 in this example) and you assume will still have access to key 1. If you are just as likely to lose either key (key_1 or key_2) you would want a different script.
I recommend you try this on testnet or Signet first where coins aren't worth anything. Alternatively with a small amount of funds on mainnet that you can afford to lose. You don't want to be losing all your funds due to a mistake or a misunderstanding.


Calculating the witness size of a transaction

Will a loop through the "txinwitness" array of hex and do a byte length calculation on every one be enough?

That is not enough as there are extra data in witnesses that is not included in the txinwitness.

You can get the number of witness bytes and the number of non-witness bytes by solving a system of equations. The getrawtransaction RPC gives you two fields, size and weight. size is the total size in bytes as received over the wire. weight is the weight of the transaction as defined by BIP 141.

If you let x be the number of non-witness bytes, and y be the number of witness bytes, the definitions of size and weight gives you:

4x + 1y = weight
x + y = size

By plugging in the weight and size from the RPC, you can solve the system of equations for x and y to get the number of non-witness bytes and number of witness bytes respectively.


Verify that WIF corresponds with bip32 extended public key

This is for a multi sig 2 of 2 wallet. One of the keys is bip39 which I have the mnemonic seed for, the other is the bip38 which I do not. What do I do with this decrypted private key in order to validate that I used the correct password during decryption?

A couple things.
Your encrypted bip38 private key will not decrypt with an incorrect password, so you'll know you are using the correct password if the decryption is successful.
Additionally, for multisig wallets it is very important that you save the redeemscript after initial creation. If you didn't you can re-create it, but you need to know the public keys that were used to create the wallet AND the order they were used in the multisig wallet.
If you are able to decrypt your bip38 key you can take the resulting WIF and calculate the public key and then you recreate the multisig address and it's redeemscript to see if it matches. If not trying switching the order of public keys.


What is 'spendability of coinbase transaction after 100 blocks' in Mastering Bitcoin referring to?

This part of the book is referencing blockchain reorgs (reorganization). This occurs when a node determines that it is no longer validating the longest chain.  When a node sees that there is a new longest chain on the network it moves over and begins verifying the blocks.  This can cause previously mined blocks to be orphaned.  Often times this only occurs at the tip (the last couple of blocks) of the blockchain.  When a block is a 100 deep into the blockchain, the risk of a reorganization that goes back that far is very unlikely, and, therefore, it is very unlikely that the block will become invalidated (orphaned).


Why is the target stored in compact form in the block header?

Your rendition is longer if nothing else, the entire header is only 80 bytes long. The encoding of "bits" is historical and is left over from the pre-release 0.1.0 client. There's other things in the header which could have been encoded better (the nonce should have been longer, and the version read as a bitfield not an int, and an aux merkle root would have been nice), but as it is there's no really great reason to change anything due to the amount of inertia behind the current formation.


You cannot do anything aside from trying to seek legal action. Transactions on the bitcoin network cannot be undone.


Bitcoin is attacked by China miners by screwing with the network, what will Bitcoin do?

One may speculate on this, but this was already taken into account in the design of Bitcoin. Essentially an attacker would not choose to attack the network because it would hurt their own investment. In the whitepaper, Satoshi states:

  if a greedy attacker is able to assemble more CPU power
  than all the honest nodes, he would have to choose between using it to
  defraud people by stealing back his payments, or using it to generate
  new coins.  He ought to find it more profitable to play by the rules,
  such rules that favour him with more new coins than everyone else
  combined, than to undermine the system and the validity of his own
  wealth.

Now to speculate, if there was another reason which made it more profitable to attack the network than to support it, those who support the valid chain could hard fork and put a new consensus rule that would put the attacker at a disadvantage. A potential solution commonly discussed is using a different proof of work algorithm, which would make their current mining hardware basically useless.


1 - If you don't want to use third party systems, you will need a server to host bitcoind.

2 - Install Bitcoin-QT. In your data directory, create bitcoin.conf with the following attributes (you will need more if you are trying to connect to bitcoind from outside of localhost):

server=1
rpcuser=username
rpcpassword=password

3 - Use the Bitcoin API to access any data you need. You will most likely need to use accounts in order to ensure proper money handling.

If you need further assistance, feel free to ask here, or contact me for more direct help at a reasonable price ;).


First of, each node on the network maintains an UTXO-set. Not only miners.

to 1. The UTXO-set is created by applying all transactions in each block in the chain from the beginning. All transactions that remain unspent when reaching the chain tip are in the UTXO-set. The older a block, the higher the probability that the whole network has a equal block. Equal blocks result in an equal UTXO-set.

to 2. Each node validates blocks, not only miners. A block is deemed valid, if it follows the consensus rules. One consensus rule is, that each spend transaction (TXO) must be in the current (pre-acceptance) UTXO-set or a TXO created early in the same block. Block validation does not interfere with the actual mining (only for a short time, when the block is accepted and a new blocktemplate has to be pushed to the ASIC). Validation happens on the host CPU and the actual mining part happens in the ASIC. If a miner doesn't validate an invalid block, he wastes his time/electricity/money with mining an invalid block on top of the previous invalid block.


Can a node broadcast a valid signed raw transaction while still syncing?

You can only broadcast transactions if your node has synced to the point that it knows the outputs that were spent. This is because your node will always validate a transaction before it broadcasts it. If it has not synced to the point that it knows the outputs that your transaction spent, then it won't have the information necessary in order to validate the transaction.

So if your transaction spends outputs that were recently confirmed, then you will have to wait until it is basically fully synced before you can broadcast. But if your transaction spends very old outputs that are deep in the blockchain, then you can broadcast before it has synced.


Yes, if you have an unencrypted wallet.dat then this is a very real possibility. Even an encrypted wallet.dat is vulnerable without a strong password and good security practices. It's simply a list of private keys encrypted with AES. AES can't be hacked, but a weak password can. FWIW, people who've lost their password for the wallet.dat have not been able to retrieve their funds, so an encrypted wallet.dat stands the test of encryption.


Can I modify the source code of Bitcoin to generate addresses people have already used?

No, because you need the private key to spend the bitcoins. The chance you guess a private key is really, really, really small.

The amount of private keys is 64^16, which is 7.9228163*10^28. Written down this number looks this way:

79,228,163,000,000,000,000,000,000,000

Just to put this number into perspective, the US debt at this moment is:

17,193,871,000,000 $

If you would be able to guess and check 100 million private keys every day, it would take you (64^16)/100,000,000=7.9228163*10^20 days, which is 2.1706346*10^18 years. That is 2,170,634,600,000,000,000 years.

The approximate age of the earth is estimated at about 4.54*10^9 years, which is 4,540,000,000 years.


Miners are competing to find valid blocks because each block allows the successful miner to collect a mining reward. The mining reward consists of an amount of newly generated coins as defined by the reward schedule (currently 25 BTC per block) as well as any transaction fees attached to transactions they confirmed with the block.

At ~$400 per BTC, this values a block reward at approximately $10,000. Blocks are found at about 10 minute intervals, valuing the block rewards each day at about $1.4 million.
 As the hashpower of your equipment in relation to the network's total hashpower determines the likelihood of you succeeding at finding the next block, miners invest in better equipment, which in turn creates a market for manufacturers to produce such.

Over the past years, mining hardware has progressed from CPU, to GPU, to application specific chips (ASIC) that can exclusively perform the computations required in Bitcoin mining. Back in 2015 this specialized mining equipment pretty much caught up to the technological state of the art, as the first 14nm chips were produced.

Altogether, the race of ASIC manufacturers to provide the fastest mining equipment and the miners to deploy the same has built up the networks hashrate to an impressive 1.4 exahashes per second, which is about a 50,000x increase since the about 21.6 terahashes per second when the first ASICs were delivered in January 2013.


cgminer api-allow using dns instead of IP address

cgminer accepts domain names for me, It's all I have used, never have I used an IP. I would check and make sure your URI is correct if DNS is working for you in your web browser and such.

Here is an example of a URI for stratum
stratum+tcp://[serveraddress/domain]:[port]

The cgminer command would be:
./cgminer -o stratum+tcp://[serveraddress/domain]:[port] -u [username] -p [password]

If you want to test it on another pool, try this command below and try mining a couple shares on Eligius, there's no registration, just use your btc address as username and "x" for password
cgminer -o stratum+tcp://stratum.mining.eligius.st:3334 -u YourBitcoinAddress -p x

Maybe you could copy and paste some of the error messages you were getting to help further diagnose this?


How was FORKID used in Bitcoin Cash at the original fork point and in all upgrades since?

The purpose for "after certain time, set FORKID to 0xSMTHNG" is to keep the old chain alive but separate, in case of a bug in hard fork. After a Bitcoin Cash hardfork, let's say November 2018, if you're using an incompatible client, a client that complies with May 2018, it'll make transactions with a FORKID that starts with 0xFF00, and those transactions will be invalid in the new chain. Wallets shouldn't enforce this rule, as it is assumed that they're not nodes and they are not interested in (some of) the new consensus rules, which are usually little changes, like new opcodes.

Trivia: Bitcoin SV was derived from Bitcoin ABC complying with May 2018. If they didn't commit this, there would be replay protection.


What OpenCart plugins are available or in the works for Bitcoin transactions?

There is an extension for bitpay (bit-pay.com) that can be found here.

Bitpay allows merchants to accept bitcoins but to be paid in dollars which can be very convenient for merchants who are interested in trying out Bitcoin but might not yet be convinced of its greatness.


Do forum or website exist where can buy things not usually sold with bitcoin?

The Marketplace on BitcoinTalk can be used.  Simply prefix your post's title with "[WTB]" which means "Want To Buy".

Discussion:

http://bitcointalk.org/index.php?topic=64607.0

Marketplace board:

http://bitcointalk.org/index.php?board=5.0

Also, the Bitcoin-otc marketplace can be used to place requests, if you are looking to buy.

http://bitcoin-otc.com/vieworderbook.php


Which Namecoin block was the first one to be generated by merged mining?

Yes, block 19200 was mined using MM, by slush's pool. AFAIK first Bitcoin block with merged-mining information was 00000000000002c727047296ee20b628599031c6ea5c09292513fddbb11d34df (block 148557), also mined by slush's pool.


What indexes does a Bitcoin Core node maintain to serve Bloom-filtered requests and SPV peers?

Bitcoin Core maintains an index of blocks and their locations on disk. When someone requests a block, it pulls the block from disk, and if they used BIP 37, it will run the block through the filter. The block index is required for normal node operation; there are no other indexes created. The only "index" like thing is the mempool, and that is maintained solely in memory. That is where transactions come from if they are requested; confirmed transactions will not be in the mempool and cannot be relayed.

For BIP 37, things are only tested against the filter prior to being relayed to a node that had set a filter. The only things that will ever be relayed are unconfirmed transactions and entire blocks.

  If none are created and transactions are filtered on the fly, how can this statement in the linked question above be true?

The statement is true because a node can set a filter and request blocks and unconfirmed transactions from the node. The node will then pass those blocks and transactions through the filter before relaying them.


Compiled version of bitcoind 0.18.1. "Could not connect to the server 127.0.0.1:8332"

The problem was in libevent 2.0.22. It spoiled HTTP response from bitcoind every time. libevent 2.1.11 fixed this issue.


As the number of Public keys available in BlockChain increases, does it cause extra risks for private key's security?

Any bitcoin address eventually use its public key when spending its BTC. And as we all know, bitcoin address is produced from a public key by utilizing one way function. What is advantage of using bitcoin address ?

A bitcoin address is not technically broadcast and included in the blockchain database until it is funded. So spending is irrellevant, because it would become public the moment it is funded.

Simply put, it's not "live" until it is funded. It's just a place card, if you have the private key, any funds sent to that account can be later spent, and upon funding, it would be public, regardless of whether there have been outbound transaction.

Does it make any address anonymous till spending BTCs ?

Spending, or Receiving, broadcasts the address with any transaction made through nodes, which confirm the transaction as valid and not duplicate. For each block that is found where the transaction you made is included, given you have included a fee which the nodes accept as "fair", is called a confirmation.

While the block-chain size increases over the time, there are lots of public keys available, and some fraudulent person maybe try to estimate private key by enabling brute-force method. Does it make any disadvantage or cause extra risks the whole system ?

No. There is no way, currently, for anyone to brute-force an address's private key. There are statistics and charts, but if you used the worlds fastest super computer, you would need millions, millions of years. It simply, is not feasible. Quantum computing could change that, but the reality is, quantum computing is not even yet in its infancy. (Not that we know of). It is way off in the distance, if ever.

That said. The reason cracking a private key from a public key is "impossible", is this:

Think of your Private Key as the Question.

Your Public Key, is the Answer.

It is not the other way around.

So if your public key is 100 (Shortened for this example) you know the answer. That is public.

To crack, you need to now figure out the question.

Is the question What is 10x10?  Or 1x100? Or 101-1?

Simply, there are far too many possibilities, in terms of questions, to any "answer". Cracking, brute-force, I don't think so.


Can an attacker flood the Bitcoin network with fake transactions?

It seems like one of the basic assumptions you are making is that all transactions ("fake" or not) are added to the blockchain. But that is not the case. Only valid transactions can be included in a block and thus added to the blockchain. So even if some bad actor spams invalid transactions, these won't get added to the blockchain and force new nodes to sync them.
Furthermore, nodes will only relay blocks and transactions that are valid. If they are invalid, then they will not be forwarded on to the node's peers. Additionally, nodes have local Denial of Service protections. If a particular node is sending multiple invalid transactions and blocks, then the node will disconnect them and even refuse to accept a connection from/to that node (aka the malicious node is banned by the local node).
So a bad actor could make nodes that connect to many other nodes and try to spam them, but they will find themselves quickly peerless as everyone disconnects and bans them. Of course the way around this would be to change their IP address, but this means they constantly have to do that, just in order to get disconnected and banned. It would be essentially impossible to maintain a sustained attack on the network in this manner.
Lastly, the bad actor would only be able to do this to nodes that accept incoming connections. Nodes that only make outgoing connections would be unlikely to connect to the bad actors nodes, at least after they have changed their IP address once. This is because nodes that only make outbound connections only connect to nodes that are considered "good", which includes things like long uptime. So the bad actor would have to maintain a node for a while (so it has a long uptime) in order to get incoming connections from outbound only nodes. But once they start spamming, they get disconnected and banned as they would for nodes that accept incoming connections. From that point on, nodes will not make outbound connections to it because it has misbehaved or because it has changed IP addresses and the new IP address does not have a long uptime.


PoW is being used in two different ways here. It is perhaps better to say "chain with the most work" instead of "highest PoW".

The valid chain with the most work is the chain that nodes choose as their main chain. The "most work" is quantified by summing the expected number of hashes required to mine each block in that chain. E.g. a chain which has 2 blocks with block 1 expecting 3 hashes to find and block 2 expecting 5 hashes to find would have a chain work of 8.


How to get a balance from the network directly?

Bitcoin nodes have no idea of what a "balance" is, that's a concept that wallets have. The Bitcoin peer to peer network allows for the communication of transactions or blocks (neither of which contain "balance" information), and nothing else. There is also no portion of the private RPC API which will tell you the "balance" of an arbitrary address either (it can tell you detail about a locally running wallet with getbalance however), and these interfaces are never made public because they allow almost complete control of the nodes wallet and operation.

Does my Trezor depend on Trezor.com running a node?

With their software as supplied, absolutely. If you use it with another piece of software locally it is usually the case that you're trusting a remote party, but there's the possibility of setting it up in such a way that it does not. For example, Electrum, but only when connected to Personal Electrum Server, which runs locally as a middle man between a Bitcoin node you operate and Electrum.


Bitcoin difficulty as per today is 6,379,265,451,411 which is calculated on March 24th
. It is said
that the difficulty of hashing in bitcoin is calculated every 2 weeks and each block will take 10
minutes to get generated (which is 9.9 as per the given link). So, the next hash will only be
calculated on April 7 i.e., 2 weeks from the previous difficulty. Hence, the current difficulty will be
continuing until April 1st, 2019 and it will be the same. The formula for calculating bitcoin difficulty
is Next difficulty = (previous difficulty*20160)/(time in minutes to mine last 2016 blocks). But the calculating difficulty for a year is not possible as the difficulty can only be estimated for every 2
week


Recovering wallet using BIP32/wordlist/.priv file

The derivation paths for BIP32 will be different. The easiest way to migrate is to sync mSIGNA and send all the coins to an address generated by the other wallet.


Script_sig for coinbase transaction afbff1130b6fcbdceebbadfc48a842af1f03ee08a79e042b37fc467518b49a0f

Scripts are not parsed. From the protocol perspective they are byte arrays, and their contents is irrelevant for transaction deserialization.

Scripts are executed however, at the time they participate in spending. For outputs, that is when they are (attempted to be) spent. For non-coinbase inputs, that is immediately. Coinbases never participate in spending, so for almost(*) all purposes, they are just byte arrays.

(*) There are two partial exceptions to this. BIP34 requires the coinbase to start with a push of the block height. The 80000 vsigops limit also counts CHECKSIG operations in coinbases (treating them as scripts, but it stops counting at the first invalid opcode).


Is it true that two thirds of available bitcoins have already been mined?

Indeed it is true, as seen here: http://www.bitcoinblockhalf.com/

As of writing this answer, just over 16.6 million BTC has been mined, out of a total of just under 21 million, which is around 79% of the total amount of bitcoin ever going to be created.


Storing scripts (smart contracts) outside the blockchain

First, yes you are correct in that each time you spend from the same p2sh address, you're specifying the script that hashes to that address. And yes, if you spend multiple times from that same address, you would be correct, this would be highly inefficient since you'd have to reveal the script each time and the script could be very long.

However, in bitcoin, it's not considered safe to re-use addresses. Each p2sh address should be used once, not many times like in your scenario above. In that case, it's not inefficient or suboptimal at all. That said, I suppose something like segwit could be used to store scripts off-band, but that would be a significant and complicated change for not much gain.


Are there any super nodes in the network?

There is a node that will relay all transactions, regardless of whether a fee is paid:

http://en.bitcoin.it/wiki/Free_transaction_relay_policy

There are well-connected nodes that are recommended for use by merchants to avoid risk to a race attack.  Some of them have inbound connection whitelists so as to lessen the risk of intentional address list poisoning.


What are the key differences between regtest and the proposed signet?

The main difference between signet and regtest is that signet is an actual network, as opposed to a sandboxed environment.
In regtest, the network topology is entirely manual. You spin up nodes, and manually establish connections between them. You have exact control over what blocks are mined and when. This is great for testing things like consensus logic, but it's inconvenient and artificial to use it for testing actual large-scale network effects.
In signet, there is an actual network, with public nodes, operating in a way that's similar to the mainnet network. It doesn't just let you test consensus logic, but also peer discovery, transaction and block propagation, how transactions get selected, ...
Signet doesn't replace regtest; regtest was designed for use in Bitcoin Core automated integration tests and it will continue to be used there. But for other larger-scale tests, of Core and other software, signet(s) may turn out to be a better choice.


Bidirectional channel opening in c-lightning

There seems to be a mix in notation. Payment channels on lightning are bidirectional by design. However that does not mean that funds can always flow on both directions. Currently channels are funded by one party an as such can not receive funds after opening. As was mentioned in the comment what you mean is called a dual funded channel.

As soon as you use a channel to make a payment the balance changes and you will be able to receive funds. Since the lightning network is in use it is fair to assume that most channels by now are somewhat balanced in the sense they can send and receive. So at this time it might just be a matter of opening one channel t be able to pay some party on the network and thus have the ability to receive money again. There are services that reimburse you onchain once you pay their invoice. This can be used to have a balanced channel.

In deed in the very beginning with the channel design there was the cold start problem. But apparently this has been overcome. Though I agree with you it is hard to imagine that we have been able to do so without dual funded channels.

BTW lisa neigut is pretty far of implementing the dual funded channel protocol for c Lightning. So clightning will probably be the first implementation supporting dual funded channels.


Can one receiving address from my Wallet be linked to another from the same Wallet?

I'm not 100% sure, but as far as I know this is not (easily?) possible. The addresses used for sending/receiving payments are created using your initial private key (THe 20 word long seed) in a deterministic way. When creating a new wallet with this pivate key, the same addresses are generated.

It is not possible to guess your private key having one or more of your addresses. I think it's also not possible to guess which private key has generated the addresses.

You should use an address only for one transaction.


False error notifcation (double spent) 'code' => -4, 'message'

The reason for this could be that you spend a long chain of unconfirmed transactions. In 0.14, Core has improved this behaviour and added an startup option called -walletrejectlongchains (needs to be enabled, default is off).

Otherwise your wallet might spend long chains of unconfirmed coins but your node/mempool won't accept them.
Also, have a look at the -limitancestorcount settings and consider reading the pull request here


Can I force my wallet to only have news keys, post-encryption?

Seems to me that the easiest way would be to create a brand new, encrypted wallet using the new client, then send all your coins to that one and forget about the old one.

(You can force a new wallet by simply deleting wallet.dat before launching the client)


Can the dollar value of a transaction be different at different times?

Amounts in a Bitcoin transaction are set in bitcoin. That is, if you want to receive $5, when the current bitcoin price is $234.97/bitcoin, then you might make a request for 0.0212 bitcoin inside the QR code.

If the price changes between you making the request and the other person sending bitcoin, then you will still receive 0.0212 bitcoin, but it might be worth $4.50 or $5.50, depending on if the price went up or down.

However, if you wanted the other person to send you $5 worth of bitcoin at the time that they send it, you could just send the address you want to receive with and a note saying "Please send $5 worth of bitcoin". The other person would have to calculate the current price (and you would have to trust their evaluation, but they can send whatever amount they want).


MtGox withdrawal transaction not in blockchain

Unfortunately Mt.gox has tendency to delay BTC withdrawals from time to time. Happened to me couple of days ago too. I tried to withdraw 1.8 BTC to another address but the transaction didn't show up in the block chain. Eventually it did, something like 12 hours later. I heard other people have waited for days for their withdrawal to complete.

I recommend to open a ticket just in case, but realize that this is not uncommon.
Hope this helps ;)


Mac OS 10.7.5 compatible with Bitcoin-Qt.app?

Apple 10.7 hides the Users Library folder (where bitcoins saves its stuff), it's there, just not visible. Open terminal and enter
chflags nohidden ~/Library
to make it visible.


Deposit Litecoin into bitstamp from coinbase

Make sure you taken off enough for the transfer fee when sending the coins. That's a common reason for a 'not enough funds' warning.


Can I have multiple working public keys per wallet?

Your wallet keeps all private and public keys it ever used indefinitely. You do not lose coins on old private keys when you give out new addresses.

It is just a privacy measure to give out new addresses for each transaction. It prevents your business partners from knowing about other transactions you have received and sent.

All addresses can be used multiple times, so you can use any of your addresses as a donation address. It will continue to work even when you give out other addresses later.

Be sure to keep a backup of your wallet separate from your phone if you are going to manage significant funds with it.


Can a trade offer be the last leg of a Ripple transaction path? If so, do transit fees apply?

You have a slight misunderstanding about payment paths that is confusing your reasoning. When a payment path ripples through an account, that account receives an asset from the previous link in the path and issues an asset to the next link in the path, not the sender.

So the answer to your first question is that no trust is needed since Alice never holds the currency. An asset, other than XRP, can only be delivered to a person who created a trust line or an offer that agreed to accept that asset. But she never holds it.

And the answer to your second question is that there is no second transit. Alice never holds the asset because she never agreed to. The asset is delivered to the next link in the payment path.

To use a more realistic payment path, consider a case where Alice holds USD issued by Snapswap and wants to pay Bob a Bitcoin. Bob must have a trust line or this is not possible, so let's say he has a trust line to Bitstamp with a limit above his balance. The full payment path could be:

Alice/USD -> Snapswap/USD -> Order book -> Bitstamp/BTC -> Bob/BTC

Notice that only an order book can change the currency. Alice returns USD to Snapswap, and in exchange Snapswap issues USD to whoever placed offers in the order book. The offer owner in turn sends BTC back to Bitstamp who in turn issues them to Bob. Nobody ever holds an asset they didn't agree to hold.

This makes it easier to understand how transfer fees apply. If Bitstamp charges .2%, then the market maker must send 1.002 BTC back to Bitstamp in order to deliver 1 BTC to Bob.


How is the lightning network secured against hacking and double spends?

All transactions that are sent between the two parties in a channel are valid bitcoin transactions, and they can be used to close the channel at any time by either party.

When a channel is opened, those bitcoins are locked up in that channel until it is closed with a spending transaction, sending an agreed amount of bitcoin to each party in the channel. Initially this spending transaction is created to return the same amount of bitcoin that each party put in to the channel. But 'transactions' are made, which is really just each party agreeing to create new spending transactions to replace the old one, giving each party a different amount.

If each party, for example, locks in 1 BTC to a channel, they will also create a spending transaction at the same time returning that 1 BTC to each person. Then let's say person A wants to send 0.2 BTC to person B. To do this, they simply work together to create a new valid spending transaction to replace the old one, the new one would pay A 0.8 BTC and B 1.2 BTC, effectively transferring that 0.2 BTC from A to B. New transactions like this are continually created every time either person wants to send coins, until finally one of the two participants wishes to close the channel and actually get their BTC back. This also happens if one party stops responding/cooperating. The final transaction they agreed upon is broadcast to the actual blockchain, closing the channel and paying both participants.

Thus, at all times, the transactions are valid and the actual bitcoins being exchanged are locked up in the blockchain, so there is no way for anyone to double-spend the transactions.


What is the supply for Bitcoin Cash (BCH), how is supply being regulated?

Bitcoin Cash has the same hard limit as Bitcoin, almost 21 million. In terms of supply, it is identical to Bitcoin, with the same halving of supply, at the same block heights.

However, there is a difference in the difficulty adjustment algorithm. Difficulty is the variable that ensures that there is one block mined every 10 minutes. It increases as the number of miners/hashpower in the network increases. In Bitcoin, the difficulty is adjusted every 2016 blocks, based on how long it took for those 2016 blocks to get mined. So every 2 weeks (approximately) the difficulty is adjusted based on how much hashpower was added to the network in that time.

Initially, Bitcoin cash had the same difficulty adjustment algorithm with one addition, which was called Emergency Difficulty Adjustement (EDA). If no blocks had been found for 12 hours, then the difficulty would reduce by 20%. This was put in place to prevent the chain from stagnating  and dying due to lack of hashpower as it was unknown as to how much support BCH would receive from miners.

This algorithm, however, was susceptible to being gamed by the miners. Miners would intentionally abandon mining BCH for a period of time. This would trigger EDA multiple times, and then when the difficulty was low enough to be profitable, they would start mining BCH, and mine 2016 blocks in 3-4 days (instead of 2 weeks). After 2016 low-difficulty blocks are mined, the difficulty would be readjusted to a sufficiently high amount, and the miners would abandon the BCH chain again.

If you compare the supply of BTC and BCH, in the 4 months since the fork, there is a difference in approximately 120,000 coins. This was problematic as BCH blocks were no longer predictable. The block times varied from 12+ hours to less than a minute.

On November 13th, Bitcoin Cash underwent a hard fork to change the difficulty adjustment algorithm. Now the difficulty is readjusted every block based on the previous 144 blocks, to try and keep block times as close to 10 minutes as possible.


Bitcoin full node - how to run a pruned node, explaining pruning?

Running a pruning node simply means enabling the prune setting.

In Bitcoin Core, that can be done either in the bitcoin.conf file by adding a line "prune=N" (where N is a number in megabytes), or through the Qt GUI in the settings screen.

Electrum is not a full node, and never downloads or verifies blocks at all, so there is nothing to prune.

There is no difference in security, only in features. A pruned node cannot serve old blocks to other peers, and can't be used to rescan old wallets (because the block data is not available).


Why does the Satoshi client not use blocking synchronous communication with peers?

If all clients in a network used blocking synchronous communications, then a single bad client could potentially bring down the entire network.

In a distributed untrusted network, asynchronous communications are required for robustness and reliability.


How does Bitcoin respond to the introduction of GDPR?

Bitcoin is not a person or legal entity that is subject to law. Only people or businesses using bitcoin have to comply with GDPR.
So far as I know, storage of personal information is not a part of the specifications of the protocols or algorithms that comprise Bitcoin.
Specific pieces of software might allow you to store personal information. For example, wallet software might enable you to keep a list of people, addresses of their bitcoin wallets and your text notes about them. The users are responsible for complying with GDPR. The software writers are only responsible for enabling this compliance (e.g. providing a delete function or something else GDPR compliance needs). The prime reposbility is with the user, if the software they use cannot be used in a way that complies with GDPR they must find other software.


Is it possible to fly with AntMiner in a hand luggage?

These questions are much better posed to the TSA.

  Computer Parts

  You may transport this item in carry-on or checked baggage. For items
  you wish to carry on, you should check with the airline to ensure that
  the item will fit in the overhead bin or underneath the seat of the
  airplane.

  To help officers get a clear look at your bag and reduce the need for
  additional screening, we suggest you pack your bag in neat layers
  (layer of clothes, layer of electronics, layer of clothes, layer of
  shoes, etc.) and wrap cords tightly around electronics items.

  Even if an item is generally permitted, it may be subject to
  additional screening or not allowed through the checkpoint if it
  triggers an alarm during the screening process, appears to have been
  tampered with, or poses other security concerns. The final decision
  rests with TSA on whether to allow any items on the plane.

See: http://apps.tsa.dhs.gov/mytsa/cib_results.aspx?search=computer%20parts


Does mining power of different miners add up in mining pools?

Mining is a lottery, not a race.

The fastest miner doesn't always win. In general, if you have X% of the hashrate, you will find X% of the blocks.

This is because not just all pools, but every every, every chip, ... is attempting to solve a different block proposal. Every attempt has an independent chance of winning. There are an infinite number of potentially valid blocks, but they're still only a tiny fraction of all possible blocks. Everyone is not trying to find the next block - they're trying to find a next block.

So:

  Can I add up my hashpower and make it work like a single processor of 1000H/s

Yes. You can't distinguish the different processors - more hashpower just tries more block proposals at the same time.

  Both both miners would be acting independently?

Yes. Everything always acts independently.

  So this means a mining pool has combined power of all the associated miners and working on one block?

Yes.

  All miner are working on different block of their own ??

Yes.


Get bitcoins to self created Bitcoin address

I suppose you are using an HD wallet which all modern wallet apps use, the fact that a new address is created for you each time you want to receive bitcoin is in fact designed to improve privacy and security.

All of the address generated by your wallet which is called an HD wallet are derived from a seed and you are supposed to have a "Mnemonic phrase" (a list of words) which kind of act as your private key and must have been generated at the creation of your wallet.

You can still access the individual private key of each address, keep in mind that exposing them is not secure see @Chris Chen comment the procedure depend on each wallet software, accessing those are usually not necessary.

Here is more information about HD wallet and Mnemonic phrase


How are past transactions validated (when there have been softforks)?

Four methods have been used to decide whether a softfork should apply:

The softfork applies to all blocks, past and future.
Example: The softfork to remove the integer overflow bug.
The softfork applies to all blocks with a timestamp after a flag day.
Example: The initial form of BIP30 was applied to all blocks with a timestamp later than 1331769600. (March 15, 2012, 00:00 UTC)
The softfork applies to all blocks except some grandfathered-in blocks.
Example: The current form of BIP30 is applied to all blocks, except two that violate it.
The softfork applies to all blocks created after a successful miner vote. A Bitcoin client can determine if a softfork applies purely by looking at the blockchain.
Example: BIP34, which required block height to be placed in the coinbase in all new blocks.


It goes to the Bitcoin miners.

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


Do you own the wallet in your computer or is it in the clouds (p.ex., Blockchain)? If so, what is the version, model (Blockchain.info, Bitcoin.org core 0.140.)?
.
For now, export your wallet and encrypt it!
Also, check these steps: https://bitcoin.stackexchange.com/a/41972/47329

Why is it taking so long for my transaction to confirm?
If you have sent a transaction
without (or with an exceptionally small) transaction fee
expect it to be ignored for an unknown amount of time until a miner decides >to process it and solves the block; this could be several days to several weeks, possibly never. Your wallet and any Bitcoin node will show it as unconfirmed, your transaction is stuck in limbo.
Block sizes are limited, which means that only a limited number of transactions can be processed in a certain timeframe. In the beginning of bitcoin, there was lots of free space in each block because there were not many transactions. However, now that Bitcoin is quite popular there are more transactions than can be processed into the current block. This is why transaction fees have increased, and as long as someone is still willing to pay more they will keep increasing.
What can I do to speed-up the transaction’s confirmation?
Nothing. The next best thing is to cancel and resend the transaction.

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


Are there any mining pools that allow a specified amount of bitcoins to be sent to a chosen address?

You can use an online wallet to handle all of your Bitcoins.

The reason you don't want such an option in a pool, is that in case someone steals your password, they can drain your account. This is the reason most pools have a 24h waiting period between when you change your receiving address and being able to send any Bitcoins.

In the future someone could potentially make a joined pool and wallet service that will allow you to manage your earned Bitcoins easier, but that is not yet an option (I'm slowly working on it though;) ).


What does OP_CHECKSEQUENCEVERIFY (OP_CSV) do?

OP_CHECKSEQUENCEVERIFY (a.k.a OP_RELATIVECHECKLOCKTIMEVERIFY) can do relative lock times (used for sidechains and lightning).
It basically checks, if an input's sequence number is smaller than the sequence threshold (1 << 31 = 2147483648), and if so, it will compare the nLockTime against the sequence number of the input.
More info:

https://github.com/ElementsProject/elementsproject.github.io/tree/master#relative-lock-time
https://github.com/maaku/bitcoin/commit/fd9864c3a3c6f2942bc0775c6c725aa379f9d616
https://lightning.network/lightning-network-paper.pdf


Will there be a testnet4? Or do we not need a testnet reset once we have Signet?

I don't think there is a clear answer to this yet. I suspect many are waiting to see whether Signet proves an effective replacement for testnet. (Signet is not yet merged into Bitcoin Core as of the time of writing in August 2020.)
There has been discussion on the Bitcoin dev mailing list and in the Bitcoin Core repo about a testnet reset at multiple points.
There are various problems with testnet of which many are addressed with the introduction of Signet. Testnet coins are supposed to be for testing and are not supposed to have any value. However, the hash rate directed towards the testnet chain fluctuates and at some points the difficulty of mining a block is much higher than you would expect for a coin that is supposed to have no value. This also means that the variance of block discovery time is wildly different to the average ten minutes on mainnet. (At one point 16,000 blocks were found in one day.) It is difficult to know what is happening during these fluctuations. It may just be that the testing of one application (e.g. a new ASIC manufacturer) is inadvertently disrupting the testing of other applications.
Signet resolves this by introducing centralized control over when and how regularly blocks are mined. Newly mined blocks need to be signed by at least one authority to be added to the blockchain. For some use cases (e.g. testing the latest Taproot scripts) it will be a relief to not have to deal with wildly fluctuating block times. However, for other use cases such as mining, IBD (initial block download), P2P etc this artificial stability may not provide the desired staging ground before moving to mainnet.
It is possible to simulate a block generation policy similar to mainnet on Signet or combine proof of work with centralized signing. However, I suspect that for a limited set of use cases a totally unrestrained, open and permissionless testnet will still be required. Hence once the dust settles, Signet is merged into Bitcoin Core and we have explored to what degree Signet meets the testing needs of all the various applications I think we will still require a new testnet reset. But I can't predict the future and others may disagree!


This calculator and this chart are fairy useful for estimating fees. When creating a transaction with X amount of Bitcoin being spent and Y Bitcoin received, the difference (X-Y) will be the fees sent to miners. The far left column of the chart will display the amount of satoshis/byte per transaction in the mempool and the far right column will display an estimate of processing time. (Higher Satoshi/byte = more appealing to miners)

For example, this transaction is 257 bytes and was charged $3.25 in TX fees or roughly ~194 Satoshi/byte. Looking at the chart, this transaction had a much higher priority than a transaction with 10 Satoshi/byte.

A quick reminder: Fees are not dependent on how much Bitcoin you send, but rather how much space the transaction takes in bytes. A simple transaction between you (1 input) and another person (2 outputs, 1 change address, and 1 recipient) will have less fees than for example, a transaction with 20 outputs.


Bitcoin can be configured to handle any port for both peer-to-peer communication, as well as JSON RPCs. However, as Bitcoin clients do not encrypt their messages, it would still be fairly easy to filter out Bitcoin-related activities. One could then switch to using Bitcoin through TOR, or the developers could implement message encryption if needed be.


CScript to CPubKey or derive CPubKey from CScript

If I understand the question, I believe you can construct a CPubKey from a byte vector extracted from the CScript script like:

CScript::const_iterator it = script.begin(); // or specifically, the location of the pubkey in the CScript object
opcodetype opcode;
valtype data;

script.GetOp(iterator, opcode, data); // data now contains the byte vector
CPubKey pubKey = CPubKey(data);


What are the risks of using Strongcoin.com as an online wallet?

I am the operator of My Wallet which is a similar javascript based wallet service. I will try and keep this answer as impartial as possible.

The Website Owner is Malicious

The website operator is free to change the javascript code at any time so if they are so inclined can change the code to uploaded your unencrypted keys or intercept your password. If you do not trust the site owner it is therefore not recommended you use such a service.

The website database is leaked

Assuming the site has been programmed correctly in the event of a database leak only your encrypted keys will be leaked. The attacker maybe able to brute force your password if it is not secure enough, but as long as users are made aware of the leak they will have enough time to move their coins to new addresses.

The website server is compromised

In the event of a full server breach the attacker may be able to alter the javascript code or website code to send him an unencrypted copy of the keys next time you login. This type of attack is generally less common than database leaks and to have any significant effect would need to go unnoticed by the site operator.

You forget your password

As your password is never sent to the server the site owner cannot offer a password recovery procedure. In the event of a lost password your key(s) will be unusable. Paper wallet backups can help with this.

Key logger or virus

If you have a key logger or virus on your computer it is possible to that it could intercept your password which the attacker can then use to login to your wallet and spend your coins. Traditional desktop wallets are also vulnerable to this. My Wallet is less vulnerable to this as the site supports yubikey two factor authentication.

One final note: Using My Wallet you can add your Bitcoin address only without the associated private key. If you then keep a paper wallet backup of your private key even in the event your account is compromised there is nothing to steal.


International shipping times for Butterfly Labs ASIC hardware

I am in London, United Kingdom. I selected the standard shipping option, which came to $38.00 (hardware was $149.00). I made my order back in April 2013, and they shipped in October 2013. ButterflyLabs used USPS (United States Postal Service) shipping option. I could track the order via the USPS site, although it says it got to the UK, and then was held - for about a month (presume they were working out import tax on the product) and then returned to Butterfly Labs, without informing me. Butterfly labs are now ignoring any communication from me, as I  try and resolve the issue.

My advise would be to look for another option, as the issue appears to be with USPS, and if you get any issues Butterfly Labs will blank you, as they already have your money, and there is not much you can do about it.


What is the safest method managing a large number of receiving Bitcoin addresses?

You don't want to be storing any funded keys server side, there's an almost constant steam of hosts being compromised to steal funds. Most Bitcoin systems use something called a "hot wallet", and move the rest onto individual paper wallets outside of the servers control. It's then the administrators role to move funds back and forth to keep the hot wallet funded. This significantly reduces risk, and means that an attacker can gain at most the amount of funds in the hot wallet.

  Is bitcoind capable of monitoring thousands of addresses in real-time?

Yes, but you really don't want to be storing anything more than a small hot wallet on a server. If your security isn't perfect then it's just going to be stolen. If it was used to

  what is the safest method to automatically unlock the wallet, move funds and then lock it again without the password being possibly compromised?

You can't be sure. Even if the wallet is "encrypted", an attacker can just sit on the server and wait for you to unlock. Again this is why you need to be using offline storage and hot wallets to mitigate the damage of the server being compromised.

  Will bitcoind generate a new “change address” every time I move funds from the receiving address to payouts and cold storage?

Yes. This is why all addresses presented to the client are single-use. You make a new receiving address each time for the hot wallet bitcoind, and never show it to the client again. They don't need to, their funds aren't restricted to any particular Bitcoin outputs. Their balance is just an external value in your database that you happen to hold the funds for.

Ideally the setup looks like this:

Server:

A bitcoind hot wallet, makes new receiving addresses and presents them to a client. Using walletnotify or blocknotify it updates the received balances for each user to an external database like Postgres or Redis.
A check script makes sure the bitcoind never stores more than 50 BTC in it's wallet, if the balance goes above 50BTC a script runs that generates a new key with a deterministic public key (the server never has to know the private key to do this) or uses a pre-generated list. It sends the excess off to this address to keep it safe.
If the wallet doesn't have the funds to pay a user when they make a withdrawal request, show a soft effort and notify the administrator that the hot wallet needs to be refilled. Explain this is for the protection of the user.

Offline:

An Armory wallet that holds the private keys of the cold wallet. Ideally this would be completely offline, with a paper backup in a safety deposit box.
The control is only to the administrator, who knows the address of the hot-wallet refill on the server. When needed they move funds back up to the server as per notifications

Very involved, but it's roughly how other systems work, and it's got to be that way unless you want to end up like http://inputs.io/ who lost an entire 4000 BTC hot wallet due to negligence. You can never be too paranoid in situations like this. Your maximum loss in this case would be the 50BTC hot wallet, which is better than losing everything.

Play safe.


Isn't an encrypted wallet.dat automatically a "watch-only" wallet?

An encrypted wallet may be cracked if its password is weak with enough budget and computing power, while a watch-only wallet doesn't give any information other than the address and what can be derived from the address.


How can a DAO seek enforcement of a contract?

The DAO's service provider would hire the person, not the DAO. The contract would be with the service provider, and the service provider could then sue the agent if the task wasn't completed as the specified.

The DAO does have to carefully arrange things so its service providers can't betray it. One way to do that is to have the DAO pay the service provider only when work is completed, as certified by a vote of the DAO.

There's some risk to the service provider that the DAO won't be able to vote them their money for some reason even if they complete the job satisfactorily. The DAO could choose to pay the service provider at a high enough rate to justify them taking this risk. Or the DAO could pay the service provider up front and assume the risk that the service provider defaults. Various escrow solutions could also be used between the DAO and the service provider.

The basic idea is that the DAO only does business directly with agents who are willing to do whatever is need to do business with the DAO, whether that's accepting delayed payment, using escrow, or whatever. Then others can enter into normal contracts with the DAO's service providers without having to deal with any legal oddities of dealing with the DAO directly.

One can imagine companies whose sole purpose is to act as service providers for DAOs. They would lose all the trust they had built if they ever betrayed a DAO that trusted them. Also, contracts could exist between these service providers and the members of a DAO, possibly even giving them standing to sue if the service provider failed to do what it promised.


Fiat money is money that derives its value from government regulation or law. The term fiat currency is used when the fiat money is used as the main currency of the country. The term derives from the Latin fiat ("let it be done", "it shall be").


Is there any full node software for bitcoin with serious wallet functionality?

You can connect your Electrum wallet to your own Electrum server to preserve privacy. There are different Electrum server implementations:

Electrum Personal Server

  Electrum Personal Server aims to make using Electrum bitcoin wallet more secure and more private. It makes it easy to connect your Electrum wallet to your own full node.

ElectrumX - Reimplementation of electrum-server

  A reimplementation of Electrum-Server for a future with bigger blocks.

electrs - Electrum Server in Rust

  The motivation behind this project is to enable a user to run his own Electrum server, with required hardware resources not much beyond those of a full node.


Repeated error synchronizing Bitcoin client

If your computer is overclocked, this may fail repeatedly. Even overclocks that are stable in other situations can fail during this CPU/memory intensive sync process. Go back to stock settings and try again.


Will the proof-of-work system end when all bitcoins have been mined?

No, mining will not come to an end at that point. The article is incorrect.

Mining will continue once the block rewards are no longer available, as transaction fees will continue to be offered. As the block rewards tend towards zero, the total value of transaction fees in each block will start to exceed the block reward. This will happen long before the block reward reaches zero if Bitcoin continues to be grow at the current rate.

Mining is required to provide the confirmation that each transaction is valid. If mining was to end, it would be because nobody was submitting transactions any more. This isn't anticipated any time soon!

This chart shows the value of transaction fees per day, in BTC. Currently, about 50BTC per day is paid in fees, which works out to be about 0.34BTC per block (50 divided by 144, which is the number of blocks per day).

If Bitcoin remains at it's currently level of popularity, transaction fees will be larger than the block reward by the year 2040. By the year 2064, more than 99% of miner's rewards would come from transaction fees. After 2140, there will be no more block rewards given.

Related questions:

The End of Mining
How much will transaction fees eventually be?


Is there a service providing historical data for crypto exchanges?

This is supplied by bitcoincharts.

http://api.bitcoincharts.com/v1/csv/


Bitcoins are like tangible cash in a sense that you can't overdraft. If you want to spend more Bitcoins than you have, you have to get more Bitcoins first. To achieve that either B has to send A some Bitcoins, or A and B have to create a transaction together (A created one input, signs it, B creates another input, signs it, and then someone needs to do some balancing of how much Bitcoins go where).

Alternatively, one can expect to see some Bitcoin banks in the future that allow you to overdraft from their shared address, and later charge you for it. This solution is not hard to implement, but I don't know if something like this is available anywhere currently (maybe through IBB). The main problem with this solution is trust between parties and how effective debt collecting would be.


Why does Bitcoin make my computer lag/freeze?

When you use the Bitcoin client for the first time, the client has to download the whole Bitcoin blockchain from the network. This can really (really!) take a while and because it is stored in your homefolder and therefore has to be encrypted, this take some CPU power as well.

Apart from this, while your client runs, it helps verifying new transactions offered to the network, just like every connected Bitcoin client does, these calculations can take CPU power as well.

What CPU does your machine have?
You can try to use clients like MultiBit that do not download the whole blockchain, but only the part that is relevant to your coins.


What is/Is there the relation between the value of a bitcoin and the prices of video cards?

Price comes from ratio of supply and demand. Bitcoin supply rate doesn't change, about 300 bitcoin per hour. So the price changes only when demand changes, and the difficulty to mine bitcoins adjusts to the new price, in another words price change would affect network difficulty, but not the other way around. Therefore video card price would affect difficulty, but it wouldn't change bitcoin market price.


How do I calculate the value of some amount of bitcoins in my native currency?

I will explain how to calculate the value of some amount of bitcoins in terms of USD, but obviously the USD can be replaced by any other currency, and the corresponding exchange rate.

There are three figures involved in this calculation:

The value in USD.
The exchange rate, which gives you the relation of USD to BTC.
The amount of bitcoins.

If you look at the units of the figures, you can figure out the following formula:

value in USD = exchange rate * amount of bitcoins

Or expressed in the units of the terms:

[USD] = [USD/BTC] * [BTC]

As you can see, if you multiply the exchange rate [USD/BTC] with the amount of bitcoins [BTC], the units of the right side will be reduced to [USD], which is what we are looking for.

Example:

We have 0.005 BTC and the exchange rate is 200 USD/BTC.

exchange rate * amount of bitcoins = 200 USD/BTC * 0.005 BTC = 200 USD * 0.005 = 1 USD

You can also turn the equation around to calculate any of the other terms:

To calculate the exchange rate, you take the amount of USD you paid, and divide by the amount of bitcoins you received.

exchange rate = 'value in USD' / 'number of bitcoins'

To calculate the number of bitcoins you might buy with a given amount of USD at a specific exchange rate, you divide the amount of USD by the exchange rate:

number of bitcoins = 'value in USD' / 'exchange rate'


How does the transfer between the payer and payee's wallet actually happen if both nodes are offline?

From the paper:

  Because both, the payerX and the payeeY, have no on-line connection during the payment, the offline transaction τo is sent via local interfaces (e.g., Near Field Communication (NFC) or Bluetooth Low Energy (LTE)), in contrast to regular (online) Bitcoin transactions which are transferred via the Bitcoin peer-to-peer network.

So basically, whatever way the two devices can communicate will work just fine to communicate the transaction.

  Does the offline wallet operate as a Layer 2 protocol somewhat allowing for deferred settlement like LN?

I would not say it is analogous to LN, the function and trust model is different. From the paper:

  These  mechanisms achieve probabilistic security to guarantee that the attack probability is lower than the desired threshold.


Yes its doable, but you'd have to write your own custom implementation for scrypt and pbkdf2 hashing as warp wallet uses these 2 algorithms. If you can find a brute force tool for scrypt and pbkdf2 separately, you'd have to combine them somehow. Regardless, you'd have to code this up custom. That 20 BTC reward is worth 80k usd today.


Answer provided by @Andrew Chow:

  The benefit is that each signature commits to the inputs and outputs
  of the transaction so that they cannot be changed. If each input only
  commit to one input, then more inputs could be added and malleate the
  transaction. However, there is a sighash type that allows this: sighash
  ANYONECANPAY.


Calculate the amount of Primecoin(XPM) mined/created so far

Yes, unlike Bitcoin you can't deduce the total number of coins in circulation from the current block height, you need historic difficulty data. Of course, there should be services that have already computed this and present it publicly.


An explanation of the meaning of the fields given by 'getinfo' :

version - The version number of this bitcoin-qt or bitcoind program itself. Both of are equivalent. -qt is simply the graphical user interface version

protocolversion: The version of the bitcoin network protocol supported by this client (user agent software).

walletversion: The version of the wallet.dat file. Wallet.dat contains bitcoin addresses and public & private key pairs for these addresses. There is additional data on the wallet. Care must be taken to not restore from an old wallet backup. New addresses generated in the wallet since the old backup was made will not exist in the old backup! Source: https://en.bitcoin.it/wiki/Wallet

balance: The total number of bitcoins held in the wallet.dat file.

blocks: The total number of blocks which constitute the shared block chain.

timeoffset: Seconds of difference between this node's "wall clock time" and the median reported by our network peers.

connections: the number of peers on the bitcoin P2P network that this node is connected to.

proxy: If using a proxy to connect to the network, listed here, otherwise blank.

difficulty: the current mining difficulty factor. Difficulty is increased as more miners and more hash compute power compete to be the next one to have a block of transactions added to the blockchain.

testnet: Boolean value (true OR false). There is a parallel bitcoin network, the testnet, where trials and experiments may be carried out without impacting the official, live bitcoin P2P network

keypoololdest: timestamp (UNIX epoch) of the oldest key in the keypool

keypoolsize: A number of addresses are kept in reserve by the client. This is the size of that reserve.

paytxfee: Specifies what fee the client is willing to pay to expedite transactions. Miners may choose to ignore transactions that do not pay a fee, and these fee-less transactions will have low priority on queue of pending transaction and may linger there for hours.

errors: This field may inform of different status conditions. Full list of error codes in source file bitcoinrpc.h (https://dev.visucore.com/bitcoin/doxygen/bitcoinrpc_8h_source.html) (Examples: "Bitcoin not connected", "database error", "Keypool ran out"...)


Each non-pruning full node (peer) stores a complete copy of the blockchain - pruned nodes store a complete copy of the current state, but may not have all historical blocks available.

When a node validates a transaction or a block, it is only validating it against its local view of the blockchain - this means that looking up data is pretty fast, since all of it is available locally.

As the blockchain grows, access time for most data still remains mostly the same due to the nature of the key-value store used by bitcoind - look up times for a key value store are roughly constant, although data that is cached in memory can naturally be accessed faster.