Whether I have to scan all types of addresses to discover BIP44 wallet from mnemonic?

That depends on what kind of wallet you have.

The derivation path is designed to tell you which types of addresses you need to.

m/44 means just regular addresses
m/49 means segwit nested in P2SH.
m/84 means native segwit.

Wallets such as electrum allow you to select which address type to check, and then perform the account recovery process you linked in your post. Ledger and Trezor similarly expect you to select address type when opening the companion apps on the computer.

If you are building a wallet or tool, you should either prompt the user to select the address type, or iterate all three combinations (and give an option to enter a manual derivation path for non-compliant wallets).


Bitcoin hard disk replace to a solid disk

You have to copy your wallet files, which contains the private keys. In case of Bitcoin Core, you need to copy a file wallet.dat. In case of electrum, you just need a seed, unless you also care about transaction history labels and saved "contact" addresses, than you should backup your default_wallet file.


Can a cold storage bitcoin wallet become obsolete?

There's a page in the wiki dedicated to Bitcoin's weaknesses. Specifically there's a section which describes what would happen if the cryptography would break. Linked is a forum post by Satoshi:

  If the hash breakdown came gradually, we could transition to a new
  hash in an orderly way.  The software would be programmed to start
  using a new hash after a certain block number.  Everyone would have to
  upgrade by that time.  The software could save the new hash of all the
  old blocks to make sure a different block with the same old hash can't
  be used.

In any case I do think that eventually it will become obsolete and you will have to transfer your funds to more secure public/private key pairs. Like Satoshi said, SHA-256 is very strong and could take several decades to break.

On a positive note, the transition will be gradual and the community will have time to alert people about the change. This means that you'll have the time to eventually upgrade the keys in your cold storage.


If a miner normally has X hashrate so it takes Y time to find a block, and that miner is able to find a preimage attack that results in him finding block in Y/100 time, then it would be as if he had 100X hashrate. So the attacker would be able to do whatever anyone else with 100X hashrate can do. If this is more than 51%, then the attacker can modify the blockchain history and everything else that can be done with >51% of the hashrate.

  Is it easier to find pre-image for hash that has to start with 4 zeroes than excatly the same hash?

In terms of a preimage attack, it depends on the hash algorithm.

Via brute force, it is easier because there are more possible values that you can get a preimage for rather than just one specific value.


Get invoice amount from payment request - LND REST API

I just found the answer : https://api.lightning.community/rest/index.html?javascript#v1-payreq

Use the endpoint v1/payreq to decode the payment request.

Exemple :

var fs = require('fs');
var request = require('request');
var macaroon = fs.readFileSync('LND_DIR/data/chain/bitcoin/simnet/admin.macaroon').toString('hex');
var options = {
  url: 'https://localhost:8080/v1/payreq/{pay_req}',
  // Work-around for self-signed certificates.
  rejectUnauthorized: false,
  json: true,
  headers: {
    'Grpc-Metadata-macaroon': macaroon,
  },
};
request.get(options, function(error, response, body) {
  console.log(body);
});

And the response :

{
    "route_hints": <array RouteHint>,
    "num_satoshis": <string>,
    "expiry": <string>,
    "description_hash": <string>,
    "timestamp": <string>,
    "features": <object>,
    "destination": <string>,
    "num_msat": <string>,
    "payment_hash": <string>,
    "payment_addr": <byte>,
    "description": <string>,
    "cltv_expiry": <string>,
    "fallback_addr": <string>,
}


How to explore transaction chain via Original Bitcoin API as blockexplorer does it

You can get information on all transactions in the current chain with the "listsinceblock" RPC command.  By not including a blockhash, all transactions will be returned.

  ./bitcoind listsinceblock

From there, you can get further information on transactions with RPC calls like "gettxout", "gettransaction" and "listreceivedbyaddress" which can give you all the information that you typically see in blockchain explorers.  But there's no user friendly way to view transactions, trace coins etc in Bitcoin Core.  If you want something like that, you might check out open source blockchain explorers such as this:
https://github.com/bitcoin-blockexplorer/old-blockexplorer-php


It is De facto standard that address should not be reused.

Indeed.

and even Bitcoin officially emphasis address should not be reused.

There is nothing official, anywhere, in Bitcoin.

Does the same condition apply for Multi-signature address ?

Yes.

If Yes apart from privacy what is the need ?

Privacy - for you and those you interact with - is pretty much the only reason for discouraging reuse, multisig or not.


Is this an incoming or outgoing transaction

It depends on your perspective and which addresses you control.

If you are Y or Z, it's an outgoing transaction.

If you are A, then it's incoming,

If you are X, it could be both. If X also controls Y or Z, then it's outgoing as he is sending money to A and the output that sends to X is just a change output. If X does not also control Y or Z, it would be both as Y and Z are simultaneously paying him and A while X is simultaneously paying A and receiving money from Y and Z.


Blockchian.info is not really qualified to provide Bitcoin API's for business, 20 empty addresses are really cool and enough as a personal wallet but for business, it's not.

I suggest you find an alternative or use some payment gateways, or you can do the following but it's not really recommended.

Increase 20 address limit by getting more than blockchain wallet, When some user create an address check gap if it's over 18 change the xPub to the next xpub and go on.
15 min time limit, if the user didn't pay within 15 min, give it to another user. Note: You don't have to wait for confirmations. Once you receive a transaction mark those addresses so you don't give them to another user.
Before you reach address number 20, pay a small amount automatically to that address so you get another 20 address.

UPDATE:

You can't create an xpub Programmatically (using blockchain.info api), but a new wallet

https://blockchain.info/api/create_wallet

You don't really want to do that, you can create like 5 xpub's keys and store them in your database, and just sweep between them.

Settings --> Addresses --> + ADD. Click To create a new xpub key.

Manage --> Show xPub. To get your extended public key (xpub).


Are transactions verified before miner solves the block?

So are all transactions that will be included in the next block already determined before the block is found?

Yes. Once the block has been mined, the miner cannot change which transactions are in the block without redoing his work.


Known cases of block-withholding attacks

According to this article from 2016 it seems Slush pool had noticed or someone reported issues related to block withholding:
http://organofcorti.blogspot.com/2016/02/detecting-unintentional-block.html
Not sure if it works in 2021 and which mining pools are affected.
While researching about OP_CTV I read about trustless coordination free mining pools: https://utxos.org/uses/miningpools/ so we can assume OP_CTV fixes this however it's not activated yet.

This type of mining pool has no trusted operator and requires no coordination. This eliminates various types of mining pool attacks, such as block witholding.


Can you send bitcoins together from the same wallet if they have been received via various different addresses?

A bitcoin transaction can have one or more inputs, and one or more outputs. For example, here is a transaction with 1 input 3 outputs, and here is one with 3 inputs 1 output.

I think you are confusing the terms public key, and private key. A wallet is a collection of keypairs (private keys and public keys), and each one can be used to create a unique bitcoin address. So if you have three different input transactions to three different bitcoin addresses, each of these will be spendable using it's own private key.

Your wallet will sign the transaction with each of these three keys, and the rest of the network can validate the signature by comparing it to the public key associated with each input (despite never knowing the private key!). To learn more about how this works, look up some info on how public key cryptography works, it is a useful cryptographic tool employed in many systems, not just bitcoin.


What's p2sh in decodescript RPC method ouput?

It is the address you would have to give to someone in order for them to pay to that script.


How to properly combine PSBTs for CoinJoin?

I am very embarrassed, just circling back to share, the above workflow works perfectly. My problem was I had an incorrect vout value in one of my inputs. Basically I was trying to spend money I don't have (/facepalm). As soon as I corrected that, everything worked flawlessly.

Here's my multi-wallet.dat file Coinjoin :)
https://live.blockcypher.com/btc-testnet/tx/537d4f9c49e06916c8f74ad53e52c3389f1654f4dec1014e2335c7ad49e268ab/


The project Wiki on GitHub probably has the info you're looking for:

Technical Spec: https://github.com/BTCGPU/BTCGPU/wiki/Technical-Spec
Testnet v3: https://github.com/BTCGPU/BTCGPU/wiki/Testnet-v3


Why did Bitcoin transaction volume heavily increase in November and December of 2011?

Could it be Christmas shopping? People who have thick bitcoin wallets, needing dollars to buy Christmas presents? Many online retailers make half their money by selling Christmas presents.


Is it possible to identify mining pools?

We can make an educated guess about it.

We can look at the hashrate that various pools advertise. We can look at what IP address the mined block was first seen at. We can look at the coinbase of the block. (Eligius.st famously embedded bible quotes.) We can also guess at the size of a mining pool by looking at its Alexa rank.

But we don't know for sure.

This page uses the advertised hashrates of the pools: https://blockchain.info/pools


Wallets will only consider outputs to be theirs if it is something that it can spend from. This usually entails checking the output script against the set of scripts that your addresses will be used to generate. So even if you can sign for something, if the script does not match any of the scripts stored in your wallet, then it will not consider that output to be yours.

If the output was a P2SH output, then you would need to have the redeemScript in order to spend from it, so unless the sender shared that with you (and if they did, you could check for any nastiness), your wallet won't even know that you could spend that P2SH output.

Also, there is no "claiming the balance" or claiming of any sort except when you spend an output.


Why is "New Account" grayed out in Electrum?

The Electrum (even 2.*) is BIP32 compatible for standard Electrum wallets. But BIP32 standard describes only one account. BIP44 extends it to multi-accounts.

If you use hardware wallet (for example Bitcoin Trezor) in Electrum, in this case the Electrum works as BIP44 compatible and you will be able to create other account.


There is a standard for Bitcoin URI schemes, and it is defined by BIP 21.

However, that does not mean that every wallet application out there will support all the fields when it it opened from a link.  Most will, but don't be surprised if some fields don't fill in automatically.


You are correct, that is the scriptSig. I'm not sure if there exists a tool to add this to an unsigned tx, but you really just need to append it to the input you were signing. If you had multiple inputs, you need one of these for each input. Depending on your sighash flags, they may or may not be identical.


It's storing data on bitcoin blockchain is not a good practice but is possible to create a transaction with a special script.

The transaction name is Transaction null data, a little introduction on this type of the transaction is here


How can I see if my bitcoin core money is in my wallet?

If you haven't seen them appear you may be seeing one of two problems:

Your Bitcoin Core application is not synchronizing with the network properly
You deposited your Bitcoin to a wrong address

I would find out where the Bitcoin is on the blockchain to be sure; only if you remember the sender of the Bitcoin. You can read up on the technicality of Bitcoin here.


Projections for reductions in price of hardware wallets

This data on Ledger production costs seems relevant:

https://forum.daohub.org/t/ledger-proposal-for-the-dao-1-ethereum-hardware-wallet/1750

Significant price savings exist with orders as small as 6,000 units
Q: "Why 6,000 units?"
A: "This is our estimate of the best compromise of minimum order needed to get good prices, without having too much stock on hands if the market is going bearish"
120,000EUR/6,000 units = 20 Euro per unit compared to a retail selling price of 59 EUR (without tax). Based on this data, significant scaling has already occurred. Higher prices (compared to production costs) reflect revenue sharing agreements with partners (in this proposal the DAO would have been paid 25 EURper unit) and profits for the wallet makers themselves.
"When hardware wallet costs near the cost of flash drives, then usage and security for new bitcoin users (and minimal funds) should increase dramatically." Depending on what type of flash drive and hardware wallet you are referring to this has occurred already. The Ledger HW.1 retails for 18EUR:
https://www.ledgerwallet.com/products/3-ledger-hw-1


What are the differences and advantages of stratum to HTTP?

Stratum is an over-the-wire protocol that solves the headaches created by HTTP when used for mining. To understand why Stratum is necessary, you have realize the fact that HTTP is designed for serving web applications and web pages, it's main job is to return files and not to coordinate peers. But miners need to do more than receive information, they also need to send. The following are issues with HTTP:

Miner's request information

If a miner wants a new mining job, they have to send a request through HTTP. Why bother with having the miners request this information when the mining pool knows more efficiently what each individual miner should be doing? What happens if a new block appears on the network and the miner doesn't know about this? So Stratum flips this and has the mining pool sending information as it becomes available, not miners asking for available information periodically.

Long-polling

Long-polling is a very hacky solution to fix the one-sided nature of HTTP. It's done by setting a very high timeout limit (say 10 seconds) where the server purposely delays sending information until it has something to send. Imagine a URL address taking minutes to load because the server is simply waiting for something to happen on it's network. This creates a lot of inefficiency as miners are requesting data that simply isn't there and servers have to maintain those connections as well for as long as mining happens.

Ntime rolling

This is a more technical problem, and its fix is considered the biggest innovation of stratum. Miners are given the ability to modify 2 fields, the nonce and the time. This becomes a problem for large miners as they can run through all possible values of the two fields in search of the solution. If a miner runs out of unique possibilities, they have to send a new request. Newer and faster miners make this more easier to do by the month and bandwidth usage for a pool increases dramatically. Stratum solves this by giving the miners a few more fields which seriously increase the total possible solutions to a block.

TL;DR

Stratum makes it so that the miner and pool are freed from the inefficiencies of HTTP, which is not meant to support mining at all. It makes communication more efficient meaning future exohash mining equipment will have enough jobs to complete while the pool operator isn't being gutted by massive bandwidth and server fees.


Unconfirmated bitcoin transaction, 1 day ago. Need Help

your transaction will be confirmed soon. trust me :)


How would the Bitcoin protocol be impacted if nodes only stored the blocks they cared about?

There is proof of concept work in progress right now to solve this problem.  Basically by creating hub nodes capable of handling many thousands of connections.  These hub nodes are in fact a proxy backed by a real satoshi bitcoin daemon.  This will relieve standard bitcoin nodes from a lot of the connections being used up by these 'selfish' nodes and allow them to continue operating as do now.  Mining pools will have a strong incentive to run hub nodes as it will speed up propogation of their generated blocks as well as ensure they have the best chance of getting new blocks as quickly as possible.


"bitcoinrpc.authproxy.JSONRPCException: -342: non-JSON HTTP response with '401 Unauthorized' from server"

There are many things that can be wrong.  More details are required, like the code you mentioned.
There is a more thorough discussion on this matter here:
https://bitcoin.stackexchange.com/a/106601/113203


How profitable was GPU mining in 2011-12?

Question in title: similar to how profitable it is now.

The numbers he is giving you don't seem unlikely. Using the Bitcoin price of those days he probably could have gotten more Bitcoins than 31 by simply straight up buying them instead of the graphics cards. And if he accurately accounts for the electricity costs it was probably not profitable at all.

His luck (and the reason you are asking this question now) came when the price of Bitcoin went up.

  because he was in a "hard to access" mining pool.

That sounds like a bit of a misunderstanding tbh.


Soft forks are generally used to upgrade an existing protocol in a backward compatible way. If you were to create a new coin you would need to hard fork the Litecoin protocol. How you do that depends on your motivation. If you just want to create a new coin to make money I would strongly advise against it. There are thousands of altcoins that have no unique selling proposition. It sounds like any coin you would make would also have no unique selling proposition.
If you want to experiment with your own network I would recommend looking into Signet.


It is fairly common for exchanges to only provide a limited amount of historical data. Tradingview and  other sites that have more historical data store it themselves on a database. With 2 hours of data you could ping the exchange API once every 2 hours adding the new data to your database each time.


Is it "safe" to mine with your cpu on a laptop for a long time?

Unless it overheats there's no problem with nonstop mining. I'd suggest installing something like CoreTemp to view internal temperatures. You should adjust its number of cores used until all of the temperatures can be considered low enough. How low? 70°C should be fine. 100°C isn't very nice I think. There's no exact limit, but you can search online.

Overclocking? I can't comment if mining nonstop on an overclocked CPU is healthy for your computer. You might need to reduce the temperature by even more.


Optimizing fee payment for speed or zero fees/privacy? (Clients vs. e-wallets)

The amount of bitcoins transferred is not the scarce resource you are paying for, disk space is. The distributed ledger that keeps track of the balance of each address is replicated on all participating nodes. That means that each KB more in your transaction is replicated thousands of times.

For the speed: all transactions are treated equal (except if they are deemed invalid as they in the case of a double-spend) so they are distributed over the network with the same speed. The fee comes into play once many transactions are available to be included in a block, i.e., they are still unconfirmed. As blocks have a maximum size (currently 1MB) there is a limited number of transactions that will be confirmed by a block. Miners will try to optimize their revenue from transaction fees of transactions that are included in the block, filling up with transactions that do not include fees.

Adding a fee to your transaction will increase the probability of it being included in a block, i.e., being confirmed.

The transaction size is dependent mainly on the number of inputs that are claimed. As the number bitcoins from an output have no influence on its size the number of bitcoins transferred in a transaction does not influence the transaction size.

As for e-Wallet internal transactions: they are likely not handled by the Bitcoin network but internally, thus completely independent from the network rules.


Is it safe to show the QR code to his friends?

It is your wallet QR code, so no, there are no problems that they have seen it..

Only thing they can do with this QR code is they can scan it and send you money :)

This QR code works like copy/paste on computer, so that user don't have to type in that long wallet address characters he can scan your QR code and the scan will return your wallet address code :)


1) The easiest way within the protocol is probably to add that transaction hash to a bloom filter, send the bloom filter to a remote node with filterload, and request each filtered block. This will send you only the transaction you're interested in. (It will also send some extra transactions that match the bloom filter because they're false positives.) See BIP37 for more details about how this feature works. This is how BitcoinJ based light clients find transactions relevant to them.

Knowing the block height that this is included at would simplify this enormously, as you will only need to look at one block, instead of the entire chain.

2) No. They get the block headers for the entire best chain. This goes from the genesis block to the current tip. (This is currently 450000*80=36MB) They then check that the relevant block is somewhere in that chain.


Besides greater probablity of discovery, are there other **significant** optimizations a of mining pool?

Yes.

Usually if you would solo-mine you will need to update/download the entire blockchain, which as of right now, is 141GB.

If you join a pool, this isn't the case, You actually don't even need to be connected to any of the peers/nodes from the bitcoin network.

This could greatly decrease the money you would spend on bandwith in some countries, which could be another reason to join Pool-mining.

It also saves you a lot of time, depending on your internet speed.


Well, in a certain sense, electricity can be stored, if you're generating it via coal, natural gas, hydro, or nuclear power plants. (You store it by not generating it in the first place.)

You could define a unit of currency as being a note issued by a power company saying, "IOU one megajoule." Cross region commerce would be handled by finding a middleman to exchange, for example, an Xcel IOU for a GDF Suez IOU.

There would be some problems with this approach. First, Bitcoin has a reliability of 99% to 99.99%, depending on how you define it. That's not reliable enough in a lot of contexts. For example, imagine if a hospital was unable to buy power for an hour each year.

Second, the exchange rates between the various IOUs will change based on speculation and changes in the fuel markets, so what you can buy with your money wouldn't stay stable week-to-week. For example, imagine if you were paid in Delmarva IOU's because you worked for a corporation headquartered in Delaware, but you lived somewhere where you needed to pay your bills in Xcel IOU's.

Theoretically, you could do this. I'm not sure that you'd want to, though.


Decrypting Bitcoin Core wallet with password that contains special characters

There have previously been issues with entering passphrases that contain non-ascii characters, however these all were related to how the terminal processes those characters before Bitcoin Core does.
If you are receiving an error message that says something along the lines of "Some keys decrypt but not all", then the wallet has been corrupted. There are no known issues that would cause that other than wallet corruption.


Are my retrieved BCCs stolen from my Electron Cash wallet?

I would not trust the Electron Cash software. Unless you experience one of the wrong server selected bugs, as other people describe in the linked questions, I would guess that the wallet sent your coins to someone elses address.

There is a warning about Electron Cash from Electrum:

  The person who distributes the Electron Cash binaries has decided to
  remain anonymous, and uses the fake name "Jonald Fyookball" in order
  to sign Electron Cash binaries. Thus, if these binaries contain code
  that is designed to steal your bitcoins, the author of the theft will
  be anonymous and walk away safely with your funds.


There is a nice explanation on how it works in the bitcoin wiki, bitcoin.it :

A block chain is a transaction database shared by all nodes participating in a system based on the Bitcoin protocol. A full copy of a currency's block chain contains every transaction ever executed in the currency. With this information, one can find out how much value belonged to each address at any point in history.
Every block contains a hash of the previous block. This has the effect of creating a chain of blocks from the genesis block to the current block. Each block is guaranteed to come after the previous block chronologically because the previous block's hash would otherwise not be known. Each block is also computationally impractical to modify once it has been in the chain for a while because every block after it would also have to be regenerated. These properties are what make double-spending of bitcoins very difficult. The block chain is the main innovation of Bitcoin.
From https://en.bitcoin.it/wiki/Block_chain


#!/bin/bash

for i in testnet-seed.bitcoin.jonasschnelli.ch \
    seed.tbtc.petertodd.org \
    testnet-seed.bluematt.me \
    testnet-seed.bitcoin.schildbach.de
do
    nslookup $i 2>&1 | grep Address | cut -d' ' -f2
done

Testnet is port 18333 by default. Or run a testnet node and check what it connects to.


Is there an easy way to purchase Bitcoins?

Dwolla imposed a 30-day probationary period for new accounts.  After your first funds have been added to Dwolla from your bank account, you then cannot trade those funds with a Bitcoin exchange for 30 days.

Dwolla did that to prevent hackers or other scammers from getting cash out of an innocent person's bank account before there is time for the individual to notice.

There are a lot of individuals who are not considered bitcoin exchanges who will gladly trade their Mt. Gox USD funds for your Dwolla USD funds:

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

If you want an alternate method, there are numerous.  Since you are using Dwolla, then presumably you are in the U.S.

BitMe accepts cash deposited through Chase:

http://www.BitMe.com

The next fastest and convenient method is BitInstant:

http://www.BitInstant.com

But once you are through the 30-day Dwolla probationary period, then Dwolla works pretty well for moving funds to and from the exchanges.  Camp BX, Intersango, and Mt. Gox all accept Dwolla USDs for their market exhanges.   Bit-Instant accepts Dwolla for direct purchases of bitcoins.

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

If none of those options work well for you, you can also try doing an in-person trade:

http://www.LocalBitcoins.com


Do pool servers check for duplicate shares?

Yes, it is absolutely done. A well known exploit in early stratum mining pools was that they used string comparison when looking up duplicate submissions, where nonce aaaaaaaa and Aaaaaaaa are identical but weren’t caught by the duplicate submission check. You could submit a share up to 2**8 times if you were lucky and got an all alpha encoding nonce, and thefts from pools using this exploit did happen.

You only need to store the work ID and the nonce, and pools can tune the client to only be submitting a share every few minutes if they choose. It’s not a particularly intensive task to keep tack of submissions.


How does OpenBazaar differ from NXT decentralized marketplace?

The NXT Marketplace is for digital goods. If you want to sell physical goods, you should look at the NXT FreeMarket, which also lives on the NXT blockchain. You can read about it here:

http://www.nxtfreemarket.com/


You have to convert the xpub into p2wpkh or p2wpkh-p2sh format. You can use this script to do it.


This is a Unix date format. As I understand, you are using c#, so it will be look like:

public static DateTime FromUnixTime(uint time)
{
    return new DateTime(1970, 1, 1).AddSeconds(time);
}


Mining is a game of luck, only one miner ends up mining a block but they all compete. Its like buying a lotto ticket. If one person buys a lotto ticket (i.e. mining by themselves), they will get to keep all the winnings to themselves if they win, but there chances are very slim at winning. On the other hand, if 20 people all buy lotto tickets together and agree to share the winnings between all 20 if any of the people wins, they have 20x higher chance of winning together, but get only a 20th of what they would have got if they were alone. That is what is meant by a more consistent income, you get a lot less per block but its more likely that you will at least get something, not nothing.


Why importing private key from one HD wallet to another doesn't restore the balance?

do all HD wallets generate public keys from private in the same way?

No, the "derivation path" is an important additional piece of information. You should be prompted for this when importing / sweeping a private-key

See Default derivation paths


can i run a full node on a laptop without a 3rd party router?

This may be a good start.

https://bitcoin.org/en/full-node#configuring-dhcp

There may be more specific info about configuring a Verizon router on their website.

There are services that allow routing to your node and I believe Verizon routers support using dyn.com and other DNS services - it may be in an advanced configuration tab in the router UI.

https://dyn.com/remote-access/

It depends on what you are trying to do - but this should point you in the right direction.


Can I sell my BTC and still claim my BCH?

Because you owned Bitcoin (BTC) at the time of the fork, you also own Bitcoin Cash (BCH) with exactly the same addresses and private keys.

You need to:

Export the private keys from your BTC wallet.
Download and install a wallet that supports BCH. I recommend Coinomi via Bluestacks. It runs about 100 different alt coins side by side with your BTC and has exchange integration via Changelly and Shapeshift. (I have no affiliation with these services).
Sweep the private keys exported from your BTC wallet into your BCH wallet.
Consider sweeping those same BTC private keys to a new BTC address. There was some issue at the time of the fork with transaction replay (you transact on one coin and someone dupes the other to steal from you).

It's pretty easy, just keep track of what coin you're working with. A lot of people have sent their BTC to a BCH address they don't control. Then they lost their coin.

But wait, there's more

BTC was forked again in November into Bitcoin Gold (BTG). It's currently trading at $250. Do the same process with this new fork and claim even more coin.


What are seeds in the source code of bitcoin?

In order for a bitcoin node to start connections with other nodes, it first needs a seed node. A seed node can be any node (listening) connected to the bitcoin network. Once the node has connected to the initial seed node, it can then retrieve information about other nodes in the network and start connections with those ones as well.

The names you are seeing in the source code are the URLs of some of the bitcoin core developers that host seed nodes. If you don't trust these crazy cypherpunks, you can actually specify your own seed node in your bitcoin.conf under the option seednode=<your_seed_node>


Whats the difference in way you installing full nodes

The Bitcoin Core daemon is better-reviewed and faster (because of C++). Bitcore lib is a Javascript library and not a node, the node version is Bitcore Node. You should ask yourself what you're going to do with a node. If you're a miner, the you shouldn't take risk and choose Core. If you want to use Javascript API, use Bitcore.


When I use importmulti with an xprv it never imports the private keys. What am I doing wrong?

You aren't doing anything wrong. This behavior is expected for Bitcoin Core 0.18. The Pull Request allowing private keys to be derived from descriptors and imported with importmulti was merged recently. This functionality will be included in Bitcoin Core 0.19.


Confusion over 'change' when transferring funds from bitstamp to paper wallet

You are correct, the rest of your funds will be diverted. However, they will be diverted to a new "change" address that is also managed by your wallet. So, you will still own the change.

For example, suppose your wallet contains 10 BTC [1]. If you send 0.01 BTC to a paper wallet address, then your client will automatically send the remaining 9.99 BTC to a new address inside your wallet.

For more information, see the following questions:

Why do outputs need to be spent entirely?
Why does Bitcoin send the “change” to a different address?

This simplified explanation assumes that you originally had all 10 BTC sent to a single address. Normally, your wallet manages multiple addresses and adds up all the individual balances to show you the total wallet balance.


Get the slush stratum proxy working on a mac

So, while Mac includes python it does not include gcc by default, even once you've installed Xcode 4.2 or later. For now, grab that, go to preferences, downloads and get the command line tools.

Once a version of Xcode higher than 4.6 is out you'll have to find a new way to install gcc on your mac, as gcc will no longer be included, but I guess that's a question for another stackexchange, and likely a macports or homebrew solution.


How to instantly give people a pre-filled wallet to introduce them to Bitcoin?

I would suggest starting a wallet at My Wallet (blockchain.info).

It's dead simple, all you have to provide is a password
You don't have to enter any personal info about the person that you want to give the wallet to.
As opposed to e.g. Instawallet your friend can change that password so that you no longer have access to the wallet.
It is "mobile friendly" so you can do it from your phone, as you requested
It has a sleek and professional look so it won't scare away new users


I traded XRP for BTC. How do I withdraw my bitcoins from ripple.com?

If you traded on the Bitstamp/BTC exchange, then log into your Bitstamp account (create one if you don't have one), select 'Deposit' and then select 'Ripple'. Follow the instructions.


Resistance to malware really just comes down to the security practices of the hardware's operator.
Simply put, we might expect that the admin of a mining farm would be quite vigilant in terms of security, compared to your average person with a PC at home. Thus, we could expect that it is easier to infect and control the average PC, compared to a mining farm.


How do I protect my mining rig from brownouts and electrical surges?

You need whats called a Power Filter.

There are varying levels of filters, some cut the tops off of AC signals, others take dirty input current and consume it, then create a completely new AC signal for device use.

The C2 is a good intro, but if you want superior protection, look for something called a Power Conditioner.

Here are links to the current leading brand:
http://www.google.com/search?hl=en&tbm=shop&q=apc+power+filter

http://www.apc.com/products/category.cfm?id=15&subid=85


Why is there a finite amount of bitcoin addresses and how is the range of possible addresses determined

My first question is what the precise logical/theoretical reason is that there are only a fixed amount of possible bitcoin addresses.

Because physics doesn't allow us to do anything that is infinite.

But even though there are a finite number of addresses, the number of possible addresses is so large that it might as well be infinite. There's no way that we could exhaust all possible addresses; there's just too many of them.

  Secondly, I can generate a bitcoin address by using address(sha256("Passphrase")). If it is even possible to determine, what would be the "Passphrase" in order to calculate the first and last possible address?

That's not how addresses work. It's not an ordered list and addresses aren't generated in any order. Addresses are not generated by hashing some password; nor would they be ordered by that password.

Addresses are generated by hashing a public key with SHA256, then that hash with RIPEMD160. The resulting hash is then encoded with Base58 Check encoding. These hash functions are irreversible so given their output, you cannot find their input. So no, it would not be possible to find out what public key an address is the hash of given just the address.

If you really wanted to order addresses, then the first address is the Base58 check encoding of 0000000000000000000000000000000000000000 and the last address is the Base58 check encoding of ffffffffffffffffffffffffffffffffffffffff. The range of possible addresses is just the range of all possible 160 bit (20 byte) values. That is because that is the range of all possible values that RIPEMD160 can output.


Try the mainstream wallets like Coinbase, blockchain.info, etc and see if they look familiar and try to log in.

The hard part about your situation is that it's kind of the point of the Bitcoin system. Its like cash. So in a essence a few coins fell out of your pocket at the movie theater. It's online cash.


Is it possible to have a bitcoin private key (hex) with 34 length?

Private keys are always 256 bits long, that is 64 hexadecimals.
The printed string is usually longer then that because format labels and redundancy are added.

Anything shorter cannot itself be a private key, but may be used to derive one (preferably with stretching).

The string given looks too non-random to be used to derive a private key.

In general, 34 random hexadecimals are adequate to derive private keys.


Is the hash of the previous block included in the block header?

The block header is 80 bytes:

Version number: 4 bytes
Previous block header hash: 32 bytes
Merkle root: 32 bytes
Timestamp: 4 bytes
Bits: 4 bytes
Nonce: 4 bytes

The merkle tree hashes all the transactions in the block, the bits field is used to compute the target hash for the header, finally, the nonce is used as a counter to generate new block headers from a given merkle tree.


The blocks Bcash miners find are not compatible and are thus completely ignored by Bitcoin nodes. Might as well not exist at all.

Any node that tries to pass a Bcash block to a Bitcoin full node will immediately be banned.

Bcash software was also altered to ignore Bitcoin blocks, otherwise it would indeed still have a problem.


Can miner include non-broadcasted transaction in his block?

Since a miner can not hoard transactions and try to create block, they is a risk that while miner A tries to mine a block containing transaction TX1, some other minder B is quicker to mine a block that contains this transaction, thus putting all the work of miner A to waste.

If miner B miners a block before miner A, even if it doesn't contain the same TX1, the work of miner A is still put to waste. There can only be one next block in the blockchain, mining is a race to create that block and only the first one (usually) to find a valid block will have it included in the chain. As soon as one is found, everyone gives up working on that block and starts working on a new one on top of the one that was just found.

  So, it seems that miner has incentive to pad his block with transactions that are unknown to other miners. It's not hard to create a valid transaction that sends coins from one address to another address, both owned by the miner. So, if a miner puts such transaction in his block, there's now lower probability to lose the race for the next block. Heck, he could create block that contains only such "private" transactions, thus getting income only from the coinbase transaction.

There is absolutely no point in padding the block with transactions to himself because he will just lose transaction fees as you mention, at no advantage because of what I said above.


Problem solved. You can just copy the whole blockchain to default location i.e. /home/user_name/.bitcoin and run bitcoind and that's it. Your system will hardly take 3 4 minutes to verify and then your system will run as a full node.


bitcoin payment processing, using bitcoin uri

You should manage this in your app by generating a new bitcoin address for each payment from each customer, so that if BTC is received on a specific address, you know what it is for. This keeps specific transaction data private internally in your application rather than public on the blockchain too.


How can one sign a message to prove ownership of a BIP47 reusable payment code?

yes, sign with the bip47 notification private key


Which textbook provides the best introduction to Bitcoin?

REGARDING TEXTBOOKS ONLY:

The best one is Bitcoin and Cryptocurrency Technologies by Narayanan & Bonneau et al.
You can get a draft version for free from Arvind Narayanan's blog.

The one by Andreas M. Antonopoulos, Mastering Bitcoin is good too.

Roger Wattenhofer & Christian Decker et al also wrote a nice one called "The Science of the Blockchain" about blockchains in general.


About Selling the bitcoins for normal person

In the Philippines we have "coins.ph". I can easily transfer bitcoins to my bitcoin wallet at coins.ph then convert it to my local currency that is available for withdrawal on banks and remittance center. You should look for similar website that supports your local currency


Restricting transferability of Smart Contracts

Bitcoin script only allows the conditions under which an output can be spent to be controlled, it does not provide a method for dictating what can happen to the output once these conditions have been satisfied. The concept you are describing is called a coin covenant, the linked thread goes into some detail explaining why this is generally a bad idea.


Do all Crypto Coins use the same Wallet Format?

The wallet.dat is a Berkeley DB file.
You can parse it using following command (You need to install Berkeley DB on your unix environement first)

db_dump wallet.dat

I checked for Bitcoin and Litecoin and in both case the wallet.dat was using the same version of Berkeley DB.

VERSION=3
format=bytevalue
database=main
type=btree
db_pagesize=4096
HEADER=END

I haven't try pywallet.py but I guess it should work for all these Bitcoin derived altcoins.


BitCoin Linux Application / Proper method to set up

1 - Can I run the BitCoin daemon (before KDM is even started)?

You can run the non-graphical bitcoind daemon with or without starting KDM first.

  2 - Once I've started KDM, can I then run the GUI which will attach to the daemon, so only one BitCoin 'app' actually working?

No. You can stop bitcoind and start Bitcoin-Qt, though.

  3 - Can you get a status report from bitcoin-cli, similar to the qt-app (status of catching/caught up with blocks etc...)

Yes.

bitcoin-cli getblockchaininfo

(Source.)


Protocols for use between mining clients and mining pool servers

Stratum: the server gives the client templates that the client can use to generate its own work. Only the block header and first transaction (generation transaction) are included. Stratum uses the least bandwidth of all the protocols. Stratum also makes it very fast and efficient to switch to new work data when there is a block change, which can help keep down the reject ratio caused by stale work. Unlike the other protocols it is not HTTP, so it won't work over an HTTP proxy. There is no real specification. There is a document that explains the core features and for the rest you have to read the source code for "stratum mining proxy" and/or old posts on bitcointalk.org.

GBT (getblocktemplate): the server gives the client templates that the client can use to generate its own work. The client is given full block data and (if supported by server and client) this allows the client to modify the block. For instance the miner could choose which transactions to include in a block. Because of these features GBT needs to transfer more data than Stratum, so bandwidth usage is higher. These features are not supported anywhere yet, as far as I know. GBT is well documented through detailed specs.

Plain getwork: the way mining was done originally. The server gives the client a block header without any transactions or any way to modify the block except for the nonce value. The client is limited to trying all possible nonce values and will then need to request more work from the server. This causes massive bandwidth usage for modern mining hardware. Like Stratum it doesn't give the miner any control over what is mined. You get the worst of both worlds.

getwork with rollntime extension: allows the client a limited way to generate work by modifying the timestamp on the block header. If you process 10 nonce ranges per second (42.9 Ghps) you'd want to request 10 block headers from the server. As each second passes you update the timestamp on those block headers, allowing you to reuse the same work for the next second. Bandwidth usage goes up with hashrate. 429 Ghps would require 100 small request-response exchanges with the server to get enough work after every block change. Compare with GBT where bandwidth usage goes up with the size of the transactions (one big request-response exchange per block change). Which uses less bandwidth depends on your hashrate (getwork) and the size of the block you are hashing (GBT).

TL;DR: getwork is the old way. The rollntime extension gave it back some life, but it won't scale as mining devices get faster. There are two new protocols to improve mining: Stratum which focuses on low bandwidth usage and GBT which focuses on allowing the miner to control what goes in a block.


You are right, the only ones who should have access to that address is CoinsBit.io.

If they claim they are unable to recover the coins, there are only three possible scenarios:

They have lost all copies of the private keys, or the root key used to derive them - this would be extremely irresponsible of any exchange, but does not appear to be the case here since the coins have been spent, which requires access to the keys.
They have been hacked and the old address' keys are compromised - this would imply that the coins were spent by an attacker, and the exchange no longer has access to them.
They are simply exit scamming and taking funds from users.

In all three cases, no one here can help you. Bitcoin transactions are irreversible, and without the private keys the funds are immovable. You should consider engaging a lawyer and going after them via the legal system.


There's no problem with running out of addresses.  The identifying part of a bitcoin address is a 160-bit hash.  160 bits gives in the range of 10^48 addresses, or roughly 1 for every atom on the planet.


How basecoin transaction is added to a block?

It's called a "coinbase" transaction. It's added before the hashing work is done, just like all of the other transactions are.
If a miner tried to pay themselves any more than allowed in the coinbase transaction then the block they mine is considered invalid (since it contains an invalid coinbase transaction) and will not be accepted by the network, so they would have wasted any money spent mining it. This has happened before; for example, AntPool at block #584,802 submitted a block with too high of a coinbase transaction, and the block was rejected (see more).
Any amount above the block reward of 6.25 BTC paid in the coinbase is the sum of all of the transaction fees paid in that block, and this is how the miner claims their transaction fee reward.


Where and how is secp256k1 used within Bitcoin?

All of Bitcoin's public-key cryptography is done with secp256k1. Every sane transaction has at least one secp256k1 signature and at least one secp256k1 public key or public key hash (address). A complete overnight failure of ECDSA/secp256k1 is the only technical failure I can think of which could destroy Bitcoin. This is very unlikely, though.

  Bitcoin is unique that is uses secp256k to secure it's transactions

Secp256k1 is presumably used in other applications (though Bitcoin is certainly the largest). It's a standard curve published in 2000 by Certicom Research and included in OpenSSL and other crypto libraries. Satoshi didn't just make it up or anything.


But how to parse those files?

It is not too difficult to parse bitcoin blockchain if you have programming skills and know what you want to do. Have a look to my piece of code - this is just a working example that parsing is easy. Of course, you have to write code in your favorite language for your task

#include <QTimer>

#include "BlockChain.h"
#include "Util.h"
#include "MyByteArray.h"
#include "Target.h"

BlockChain::BlockChain ( QObject* parent ) : QFile ( parent ), blkFile ( START_BLOCK )
{
  connect ( this, SIGNAL ( block ( const QByteArray& ) ), parent, SLOT ( block ( const QByteArray& ) ) );
  connect ( this, SIGNAL ( doneFile ( ) ), parent, SLOT ( doneFile ( ) ) );
  QTimer::singleShot ( 0, this, SLOT ( start ( ) ) );
}

void BlockChain::start ( )
{
  setFileName ( blkFileName ( blkFile++ ) );
  if ( !open ( QIODevice::ReadOnly ) )
  {
    _trace ( QString ( "cant open [%1]" ).arg ( fileName ( ) ) )
    emit block ( QByteArray ( ) );
    deleteLater ( );
  }
  else
  {
    _trace ( QString ( "processing [%1]" ).arg ( fileName ( ) ) )
    QTimer::singleShot ( 0, this, SLOT ( next ( ) ) );
  }
}

void BlockChain::next ( )
{
  if ( pos ( ) < size ( ) )
  {
    quint32 magic;
    quint32 sz ( read ( (char*)&magic, 4 ) );
    while ( !magic && pos ( ) < size ( ) - 4 )
      read ( (char*)&magic, 4 );
    xassert ( ( ( magic == MAGIC_ID ) || !magic ) && ( sz == 4 ) )
    if ( magic )
    {
      read ( (char*)&sz, 4 );
      emit block ( read ( sz ) );
      QTimer::singleShot ( 0, this, SLOT ( next ( ) ) );
      return;
    }
  }
  close ( );
  emit doneFile ( );
  QTimer::singleShot ( 0, this, SLOT ( start ( ) ) );
}

const QString BlockChain::blkFileName ( const int i ) const
{
  return
    ( i < 10 ) ? QString ( DATA_ROOT "\\blk0000%1.dat" ).arg ( i ) :
    ( i < 100 ) ? QString ( DATA_ROOT "\\blk000%1.dat" ).arg ( i ) :
    ( i < 1000 ) ? QString ( DATA_ROOT "\\blk00%1.dat" ).arg ( i ) :
    QString ( DATA_ROOT "\\blk0%1.dat" ).arg ( i );
}


How do I know that the majority of bitcoin miners are not XYZ government's facilities?

Your answer is Incentives.

Let's imagine a bad guy, called Mallory, has an interest in attacking Bitcoin and has either created for himself, or desires to, 51% of the hashing power required to start shenanigans. (Start, because he has to maintain and grow that hashing power for sufficiently long to outpace the 'good guys'.)

To start with, there's no technical or legal way to prove that Mallory hasn't, or cannot, obtain that 51% any more than than there's a technical or legal way to prove Mallory hasn't, or cannot, obtain nuclear devices to hold the world to ransom like a James Bond villain.

Instead, you're relying on incentives. Assuming Mallory has spent $1 billion to marshal his forces, you have to wonder - would it make sense to destroy Bitcoin? If he does, his $1 billion is lost. True, perhaps he plans to make $1.1 billion from the chaos, and so the cost - to him - is "worth it". Or is the cost now so high that even Mallory stops and thinks "Hey - I'm making $0.1 billion a year from securing the network. It's actually more profitable to keep doing that, even though I'm a bad guy."

It's also worth pointing out his 51% only allows him to double-spend money he's already spent.

You specifically suggested that Mallory is a Government. We can look again at the incentives above: if his interest is to destroy Bitcoin as an alternative, then he'll quickly run into trouble: everyone will rapidly know that the 51% was achieved and so everyone will know that someone (Mallory will not likely reveal himself) has mining resources previously unknown. Perhaps a more efficient SHA-breaking algorithm. Even if Bitcoin itself is flown into the ground by him, alternate algorithms can be put into place such that a Bitcoin2 is immune to his attack. So: Mallory has now spent huge amounts of his resources, revealed something that would be of interest to his existing adversaries (that he has a means to break an encryption algorithm they use) AND has found himself back at step 1: Bitcoin2 is up and going without him. What attacker deliberately makes his own position worse?


Here is the solution that worked for me...

bictcoin.conf

txindex=1
server=1
rpcuser=username
rpcpassword=password
port=8444
rpcport=8332
rpcbind=127.0.0.1
rpcallowip=127.0.0.1

Bitcoin Daemon must be running
DOS CMD: netstat -a -n  must show listening for both ports 8444 and 8332

Good luck!


Is "Reclaiming Disk Space" already implemented? How effective will it be?

The blockchain already has reached nearly 1 GB to download and store,

The proposal in Satoshi's paper does not reduce the download requirements, only the storage requirements (see this post to the bitcoin-dev mailing list).  Unless you are able to rely on some trusted third party, you still need to download at least all of the block headers.

If you download only the headers and not the full blocks and treat "buried X blocks deep" as proof that a transaction is valid you are open to a new class of attacks that would not affect a normal full-chain client.  The normal client treats "buried X blocks deep" as proof that a transaction will not be reversed later on -- the check to ensure that the transaction's inputs are unspent is completely separate from this.  A thin client cannot check that a transaction's inputs are unspent because it has only the block headers -- it does not have a copy of the transactions themselves.

The most worrisome of these new attacks have to come from your ISP, but in this day of wi-fi cafes that isn't such a far-fetched scenario.  So, use at your own risk.

I've been picking away at a wiki page dealing with all these issues.


Is it possible to build mining reward pooling directly into Bitcoin?

I believe this would be very difficult to implement in Bitcoin.  Not only because of technical feasibility, but also because gaining concensus would be difficult.

  The mining reward could then be distributed in one transaction
  proportionally to all miners who have found hashes.

This appears to be making modifications to the coinbase transaction, which would almost certainly require a hard fork.  Also, what is preventing the miner who created the block at full difficulty from simply cutting out all the miners who submitted blocks at n-1, n-2, etc...?  How would other network participants know that other miners have been cut out, so know they should reject the block?  That trust model would have to be solved.

If a hard fork is necessary, you would need concensus from the mining pools...which are the entities your are attempting to disrupt.  Even though their hashing power comes from individual participants in the pools, it would be hard to push something through that isn't necessarily in their best interest.

Finally, what would prevent individual miners from banding together to "game" the new protocol, thus re-creating mining pools on top of this mining pool protocol?  Building pools into the protocol won't stop people from pooling together...it will just give them different goals for them to pool resources for.


In altcoins, why is it that sometimes the volume increases when the price stays relatively stable or even goes gown?

Volume is simply the amount of trades in a certain period of time. An increase in volume usually correlates with a change in price, however this does not necessarily imply an increase. Your observation mainly as a price increase is likely due to the current bullish market. A high volume can represent a lot of buyers demanding a coin like it can represent a lot of people selling. A sideway market could be seen simply as more people buy and selling thus increasing the volume without increasing the price.


MtGox http api "trades since" requests keep being timed out

MtGox uses CloudFlare for DDOS protection.  It's possible that your IP is being blocked.

Open a ticket with MtGox and tell them your IP... they may likely whitelist it.


signrawtransaction is not a function on bitcoin core V0.17.1

It looks like the new calls are not yet supported in btcClient.

https://github.com/ruimarinho/bitcoin-core/issues/77 refers generally to your issue.

v2.0.0 was released "a year ago" according to https://www.npmjs.com/package/bitcoin-core; v0.17 bitcoind, which made the change, four months ago.

If you're just tinkering, you might consider downgrading your bitcoind until the library catches up.


Bitcoin Client - How do I find the destination address of an incoming transaction?


Building libbitcoin libraries on Arch linux fails

Library modules provided by github/libbitcoin (incl. forked version of libsecp256k1) are by default installed using prefix /usr/local. configure script, that is run during build process, however, doesn't by default search for dependencies in /usr/local. So in order to make configure find other modules, one has to change the prefix for each module or tell the configure script where to look for the libraries - e. g. by setting variable PKG_CONFIG_PATH before running the script:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig.
pkgconfig directory contains configuration files with all needed information for those affected dependencies, so if the variable is set correctly, configure script will find them and compilation will be successful.

P. S. the compilation of libsecp256k1 needs to be done with flag --enable-module-recovery so as to be compatible with libbitcoin.


What makes the initial download of the blockchain so slow?

I found this post by Jeff Garzik (one of the developers):

  Initial blockchain download occurs from one peer at a time.  If that
  peer is slow, then your entire blockchain download is slow.
  Yes, it's stupid and yes it needs fixing (patches welcome).


Check if wallet is encrypted or not through RPC API

From the source code (rpcprotocol.h):

RPC_WALLET_ERROR                = -4,  // Unspecified problem with wallet (key not found etc.)

So you could check for a JSON-RPC return value of -4, or if you want to be absolutely sure, you can use:

bitcoind [...] -help | grep walletlock

The walletlock RPC command becomes only available (in the -help list) after encrypting your wallet.


If I was writing wallet software I would use BIP 39 for generating private keys from seed phrases.

Generally I would use standard algorithms (as defined in the BIPs) and standard libraries rather than invent my own.

You avoid generating duplicate keys by using sufficient numbers of words from carefully prepared lists of words and using publicly vetted algorithms carefully designed for the purpose. For example hashing algorithms are designed to minimise the chance of "collisions" (two different sources producing same result).

Choosing a large number of seed words using a properly initialized random number generator should minimise the chances of two users generating the same seed phrase.


Errors with `walletcreatefundedpsbt` & non-solvable UTXOs

Yes. Bitcoin Core will not be able to select for coins that are not solvable. This is because, for fee estimation, it must know how large the final transaction will be, but it cannot do this without knowing everything needed to construct the final transaction.

The outputs don't need to be spendable (i.e. you don't need to have the private keys for them) because Core knows how large a signature will be so it creates a dummy signature. But it needs to have everything else such as scripts and public keys. Without those, the output is not solvable and cannot be used in coin selection.


Tracing bitcoin cash address to bitcoin address

You can look up the related transactions for the BCC address at blockdozer.com


Can encrypted private keys (BIP-38) be generated from HD wallets (BIP-32)?

The private keys themselves can be generated with BIP 32 and then those private keys encrypted. Private keys generated with BIP 32 are not special private keys; they are just normal private keys and you can do exactly the same things to those private keys as you would to any other private key.


How can an output be spent while the transaction is in mempool

There is no rule requiring a transaction to have a confirmation before being spent.

Yes, the mempool matters. That's also how double-spends are detected. So it's crucial nodes check the mempool and not just previous blocks.
No it does not violate the rule, they are referring to double-spends being rejected if the SAME output exists in the mempool.
IDK, maybe ask the original poster what they meant?
Yes, no need for any confirmations to become an unspent transaction output.
Mempools from node-to-node are not always identical. For example, some nodes have different minimum relay rules that may include extremely low fee transactions. There is no central mempool.
Not really. I haven't done it recently but lets say you broadcast a transaction with a 0 fee. The transaction would likely get stuck in the mempool and not get confirmed. After 14 days if it doesn't get included in a block it "expires". Once expired/dropped I could craft a new transaction using the same UTXOs that I used in the original.

Here's a related question that you will probably find interesting:
What happens to transactions in the mempool when their parent transaction expires?


Apparently I do not have enough points yet to give your answer a vote, but your solution also worked for me! Adding -T to the command line command did the trick. Not only do I now get a neat output of what is happening; the -T parameter also made the entire mining process actually work!

Before adding the -T command:
Screen flashed with the "Started CGMiner 3.7.2" message.
No messages were shown until I pressed CTRL + C.
The report said that only one share had been submitted and accepted - every time I ran CGMiner.

After adding the -T command:
The screen doesn't flash any more.
Everything that happens is outputted line by line to my command prompt.
CGMiner is actually working and submitting shares. As we speak I'm on a total of 3616 accepted difficulty shares, contrary to 32 before.


Why is the blockchain called Distributed Public "Ledger" and not "Journal"?

You're right. The Bitcoin blockchain is not a ledger, but rather the network's transaction journal. It's actually the UTXO set that is the ledger of all Bitcoin balances.

(UTXO - Unspent Transactions Output - is optional)

If we take a step back and think about it, what are we more interested in? The compiled history of all payments, or the current state of the network's balances?
Obviously, the latter is more useful for anyone that wants to transact on the network. The UTXO set allows to check whether someone is able to pay, and upon update whether we were paid.
The blockchain is merely the means of converging on a common state of the UTXO set. We require the blockchain to compile the UTXO set, as the journal is used to derive the ledger. In fact, pruning full nodes throw away part of the blockchain after processing it, but they all keep the UTXO set. So, while it is conflating different aspects of the system, it seems to me that people speak about "Distributed Public Ledgers", because they care about the balances more than the transactions.


Why is the source code fee calculated higher than the current bitcoin fee amount?

OP_RETURN doesn't have any special fee rules. This looks like a result of the specific implementation in this library.
It looks like the library always pads out messages to 80 bytes. So when it does the fee calculation, it always uses the 80 byte maximum because that is how large the output will be when it is serialized.


If I offer a higher transaction fee, will my order get processed faster?

DannyHamilton from bitcointalk says

At a minimum.  0.0001 BTC per kilobyte.  That would put you ahead of all transactions that are considered "low priority" which don't include a fee by all miners (and pools) that choose to use the reference implementation.
Given how low the exchange rate has been lately, you might even consider a fee of 0.0005 BTC per kilobyte.  This would put your transaction ahead of everyone that is using the 0.8.3 reference implementation for fee calculation and even with everyone using the older versions.  At the moment this works out to about 3.5 cents for an average transaction.

So the answer is yes, offering a higher transaction fee does speed up your transaction. Heres a link to the bitcointalk discussion.


Fundamentals: Addresses don't hold coins, wallets do?

Bitcoin does not work on an account model but operates on an UTXO (unspent transaction output) model. When you send bitcoins to an address, what you are essentially doing is locking those bitcoins in a mathematical equation. Spending those coins requires that you provide the correct unlocking condition (most often signature and public key associated with that address). "Address balance" is a higher level abstraction that can be derived from this basic construct although that information does not explicitly exist in the blockchain.

  How would you send more coins than one address holds with just one transaction?

When you spend your bitcoins, you have to reference the transaction outpoint (txid and output number) from which you earned those coins and then provide the satisfactory unlocking condition. If you intend to spend more bitcoins than you earned from a single transaction, you will have to reference multiple transactions from where you control those bitcoins in the input field of your transaction until input value > output value.

  Is a wallet not just a keychain of all these addresses and private keys?

Yes, a wallet is just a bunch of keys. There are two types of wallets: (1) non-deterministic or random wallets and (2) deterministic or seeded wallets. The first wallet is just a collection of bunch of randomly generated private keys, while the second type of wallet follows a deterministic path of private key generation. The latter approach helps in better management in terms of backup and import. You can read more about HD wallets in BIP 32 and how mnemonics can be used to generate HD wallets here.

  What if I add a private key of an address to two different wallets?

Just consider that you have a normal key that open a lock. You create a duplicate of that key. Now, both of those keys will be able to open the lock. Similarly, both the wallets will be able to control the bitcoins locked in that address. You can spend your bitcoins from either one of the wallets.


Release A Bitcoin From Multi Sig Address?

So you made the multisig address through bitcoind? if you have all the private keys related to that multisigned address added and in your wallet it should be automatically included in your balance and spent.

Quote from Gavin Anderson (How does one make multisignature transactions with the bitcoin client?)
First answer there

spending of multisignature transactions-- if all of the private keys required to spend a multisignature transaction are in the wallet, then those coins are added to the wallet's total bitcoin balance and that transaction will be spent if the normal coin-selection code decides to use them for a spending transaction.

if you require instructions for a specific wallet or a middle-agent website then it would be useful if you mention what exactly it is.


I don't see any endpoint to get the whole transaction in Blockcypher API documentation, so I used blockstream.info API:

>https://blockstream.info/testnet/api/tx/2599dbe540a583ede3512fef9a0f26be718c039ffd4d04d85ff3b339f40e73b1
{
   "txid":"2599dbe540a583ede3512fef9a0f26be718c039ffd4d04d85ff3b339f40e73b1",
   "version":2,
   "locktime":0,
   "vin":[
      {
         "txid":"382bda6ee2bac22afd051104af16146436895ecca382a76c2d66535a837254bc",
         "vout":1,
         "prevout":{
            "scriptpubkey":"00144ecdb2867150ff16c7d6e3258adca9ed8bac3ac1",
            "scriptpubkey_asm":"OP_0 OP_PUSHBYTES_20 4ecdb2867150ff16c7d6e3258adca9ed8bac3ac1",
            "scriptpubkey_type":"v0_p2wpkh",
            "scriptpubkey_address":"tb1qfmxm9pn32rl3d37kuvjc4h9fak96cwkpjyyjmk",
            "value":2948920
         },
         "scriptsig":"",
         "scriptsig_asm":"",
         "witness":[
            "304402205e9b17758d1daf2a501a1fabe06bdbf15adaadfcf6ff80c4cfb34176bd988c0c02207450185bde5c20e06270b3b7e681e0042072c6af25fc10c62430df0f04ec5bf201",
            "023532fa6b866f37729719a3615ef3a776407048989736ac2b7fafa5678a519df3"
         ],
         "is_coinbase":false,
         "sequence":4294967295
      }
   ],
   "vout":[
      {
         "scriptpubkey":"6a0e3132372e302e302e313a38313831",
         "scriptpubkey_asm":"OP_RETURN OP_PUSHBYTES_14 3132372e302e302e313a38313831",
         "scriptpubkey_type":"op_return",
         "value":0
      },
      {
         "scriptpubkey":"a914171f697fe358f7d7238b6128930bb1fa7363b44d87",
         "scriptpubkey_asm":"OP_HASH160 OP_PUSHBYTES_20 171f697fe358f7d7238b6128930bb1fa7363b44d OP_EQUAL",
         "scriptpubkey_type":"p2sh",
         "scriptpubkey_address":"2MuMVAFK2gbTDNVBhLtpZfA4Xi62mWh6bU5",
         "value":948920
      },
      {
         "scriptpubkey":"0014af8abd63a00c40ad75e47870b1b0a1ddb2ba7e66",
         "scriptpubkey_asm":"OP_0 OP_PUSHBYTES_20 af8abd63a00c40ad75e47870b1b0a1ddb2ba7e66",
         "scriptpubkey_type":"v0_p2wpkh",
         "scriptpubkey_address":"tb1q479t6caqp3q26a0y0pctrv9pmket5lnx24twcx",
         "value":1500000
      }
   ],
   "size":248,
   "weight":665,
   "fee":500000,
   "status":{
      "confirmed":true,
      "block_height":1612110,
      "block_hash":"000000000000592589e55cda6e8a093998e8356ea770d4aaeb7c0f5439b147d7",
      "block_time":1576024567
   }
}

You can see here that the first output has the data is 3132372e302e302e313a38313831, which decoding to ASCII characters seems like a local URL:

hex = '3132372e302e302e313a38313831'
decoded = binascii.unhexlify(hex).decode('ascii')
print(decoded)

Prints: 127.0.0.1:8181

EDIT:

To get the transaction that interests you without using any external API you will need to run a full bitcoin node with the txindex=1 option. If this transaction is tracked by your wallet, a pruned node would suffice. Then you can get the information about the transaction with this command:

>bitcoin-cli getrawtransaction 2599dbe540a583ede3512fef9a0f26be718c039ffd4d04d85ff3b339f40e73b1 true

You should get something very similar to the answer from blockstream's API I pasted above


How to enumerate all blocks/transactions in order with bitcoind?

Yes there is a total order over all confirmed transactions, namely the order over all the blocks by blockchain height, and internally by the order in which transactions appear in the block message. This block-internal order by the way is the same order which is also used to calculate the merkle tree root.

I would suggest calling bitcoind getblockcount to get the blockchain height. Then use bitcoind getblockhash for each block from 0 to that blockcount to retrieve each block and then traverse the tx part of the result, which should give you the transactions in the order they appear in the serialized block form (which is agreed upon by all nodes). Whether you count the block before or after its transactions is a matter of taste, but I'd suggest counting it after the transactions as they had to exist before the block was found.

So if you want to stop the process somewhere, simply remember the height of the block you last processed and the number of transactions you processed for that block, and you'll be ready to continue right where you left off.

Notice that there is no way to enumerate non-confirmed transactions, and orphan blocks. This is due to the fact that there simply is no unique ordering among them, which all nodes in the network would agree upon.


The BCH chain shares all of the BTC history up until the point of the fork. If you're using the same address for BCH that you did for BTC in the past, any pre-fork BTC transactions will also appear as BCH transactions.


Most efficient way to store Segwit Address in a database

Is there a way to get to the hash160 address from bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c

Yes, you could use the reference implementations in various languages to encode and decode a bech32 address. For example, I have decoded the sample address you mentioned in the question, bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c, using python below. The decode function gives us the witness version (0 in this case) and a byte array.

import bech32

address = "bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c"
address_decoded = bech32.decode("bc", address)

address_decoded  # a tuple containing witness version and bytearray of the address
>>> (0, [141, 122, 10, 52, 97, 227, 137, 23, 35, 229, 253, 248, 18, 156, 170, 0, 117, 6, 12, 255])

bytes(address_decoded[1])
>>> b'\x8dz\n4a\xe3\x89\x17#\xe5\xfd\xf8\x12\x9c\xaa\x00u\x06\x0c\xff'

Couple of points to note:

The address you have mentioned here is a P2WPKH and has a length 20 bytes. However, P2WSH addresses are 32 bytes (they also begin with "bc1...") as we take the SHA256 of the witnessScript instead of HASH160.
Although version 0 addresses (P2PKH, P2WSH) will have a data payload of 1+20 or 1+32 bytes, BIP173 allows up to 40 bytes in a witness program, for a total of 1+40 bytes.


When will the official client support partial blockchain downloads?

Gavin has stated that he wishes to pull features in the version .5 release candidate this weeks.  He further states maybe the version .6 release will have it as a killer feature.

  Maybe the big feature for version 0.6 can be fast initial download (I'm thinking the best thing to do for brand-new, starting-with-an-empty-wallet installations is to download only block headers, function as a 'lightweight' client, and 'backfill' full blocks until you're caught up with the full chain-- then function as a 'full' client)

https://bitcointalk.org/index.php?topic=46493.msg553778#msg553778


How to import an extended public key into bitcoin core 0.16

It's not possible in bitcoin core right now. You can use electrum and import your xpub as a watch-only wallet.


Got bitcoin on generated address, now my wallet doesn't have the address anymore

How can I try to access my bitcoin just through the BTC address?

You cannot, you need the private key that controls the address to access any bitcoin stored on it. (Wallet software will control the private key)

  Or at least, can I find out to wich wallet this address is linked to?

Without any other info, there is no way to tell which wallet an address is linked to.

  Because if it is not linked to my wallet, which wallet is it linked then? Can a bitcoin address not be linked to a wallet?

It is possible to generate an address that is controlled by a private key no one know. For example see the 1BitcoinEater address.

  If so, can anyone retrieve the money then? I will be very thankful for any response that could be helpful. Thank you in advance

Unfortunately, no. If your wallet does not contain the private key for that address, the money is likely gone forever.

It is very strange that the wallet would display an address that it does not have the private key for, for any further help you'll likely need to continue with the bitcoin.com customer service reps. Sorry for your loss :(


Why is creating a bitcoin fork very difficult and a Ethereum fork easy?

Forks of both are equally hard. What you're describing as "Ethereum forks" are actually tokens/smart-contracts that run on the Ethereum network, which isn't very common on Bitcoin (but there's Omni)

EDIT: Remved Rootstock as per darosior's clarification. Its only to relation to Bitcoin is that it uses merged mining, just like Namecoin.


Transaction unconfirmed long time help me please

If you don't need a fast confirmation, just wait, it has sufficient fee to get confirmed by itself.

Otherwise you have to spend one of the outputs and add enough fee to cover both transactions.


What's the simplest way to deposit BTC into US Banking account with minimal fees?

[...] I'm looking for some way to deposit my BTC into my US bank
  account. Is there any service that can do this [...] ?

In short, no.

Your US bank account holds US dollars, not Bitcoins.

You can sell your Bitcoins for US dollars, and deposit the US dollars into your US bank account, but you can't deposit Bitcoins into US dollar bank accounts.

Edit: I just found the Bit-Pay Deposit Card which claims to allow you to "Receive Bitcoins into your US Bank Account!"  So perhaps that's what you are looking for.  There's also a video about it.  Apparently "the fees are 2.99% which includes the currency exchange and the next-day ACH".


Bitcoinjs-lib help with deterministc wallet

It looks like it is working. Go to https://www.coinomi.com/recovery-phrase-tool.html and make sure to enter the following:

BIP39 Recovery Phrase : eight better wealth display father cave suffer game sign health fit exchange noble tunnel poet remember owner letter submit illness cage calm dry noble

Coin : Bitcoin

BIP32 Derivation Path (In BIP32 Tab): m/0'/0

Result:

Derived Addresses

m/0'/0/0`   169zFhK1WTuxfhgY6bmzE9zP1godCfZr2V
m/0'/0/1    17tdSW83Vjw23TdQsmZDtBAupan9WiGGd5
m/0'/0/2    17bYSjEXwZxMgVkRRt9pJgDgExiX8Xht3b


Recover $220 Million Worth of Bitcoin Locked in a Self Destructing Hard Drive

I'm not sure on the specifics of this particular model, but usually the way these work is the encryption key is stored on a hardware security module, which is a physical chip that performs the encryption and decryption of the data given the right password.
To my knowledge you cannot make a copy of this physical chip, and once your attempts at entering the password run out, the chip will permanently wipe its copy of the encryption key. This chip is the thing that is checking your password, so it's this chip you would have to somehow duplicate.
With a lot of effort, you could probably desolder the flash memory chips and attempt to make a copy of the encrypted data itself. However, this encrypted data is generally protected with a 256-bit AES key (with has nothing to do with your password), of which the only copy was on the encryption chip, which the chip wiped when your password attempts ran out. So, this would be pointless.


How does the transaction signature prevent transaction duplication?

When Alice creates a transaction of 1 BTC to Bob, she is giving him a specific bitcoin, by using an unspent transaction output that she has the key to. The blockchain tracks the flow of coins from transaction to transaction, it does not have 'balances'. So when Alice makes a new transaction, she provides an input to the transaction of at least 1 BTC, and puts Bob's address in an output. This transaction then is mined into a block, and Bob can spend the output he holds the key to, in another transaction, and so forth. But after Alice broadcasts that first transaction, she has spent the outputs she used in it, she can not use them again in another transaction (double spend). Thus if Bob tried to 'replay' that transaction, he would just be resending the same thing as before, nothing would change because the network would already have seen and accepted the transaction and Bob would already 'have' the Bitcoin Alice sent him. In fact, no other node would be interested in the transaction as they can see that it is already written to the blockchain.


What caused CVE-2012-2459? How was it fixed?

The full disclosure post is here: https://bitcointalk.org/?topic=102395

You can find it from the Bitcoin CVE list: https://en.bitcoin.it/wiki/CVEs


How do Bitcoin clients know how many new bitcoins to mint when creating a block?

The mining reward is the sum of two parts: Transaction fees and block reward.

The transaction fees are the sum of the transaction fees of the transactions that the miner is trying to validate.

The block reward follows a predetermined schedule: It started with 50 BTC per block and halves every 210,000 blocks. According to the bitcoin.it-FAQ the last block to have a block reward will be block #6,929,999.

The protocol includes a check that will reject blocks which assign more than block reward + transaction fees in the coinbase transactions. Assigning less is valid, however, the difference will be lost.


What exactly happens when a node detects a double spend?

When a node hears about a new transaction, they try to accept it to their in-memory pool of transactions. If a node hears about a transaction that conflicts with one of the transactions that is already in their mem-pool, then they simply won't accept it to their mem-pool. The default client also won't forward the transaction on to any other nodes, either.

  The node drops the two transactions? The node choose one to keep?

So, essentially, if a node sees a double spend (two transactions trying to spend the same output) they keep the transaction that they saw first.

  Both transactions will be rejected by the network or one of them will be eventually accepted?

Assuming they pay the standard fee to get confirmed, a miner would likely include whichever transaction they saw first. So, if more miners see one transaction, it is more likely that one will get confirmed. It's possible miners will solve two blocks at the same time, with conflicting spends of a previous output. In the long run, though, only one spend of an output will stay in the main chain.


Does Bitcoin protocol define how miners do the selection from their set of txns?

No, the selection process of transactions to include in a block is not defined in the protocol. The only transaction that miners have to include in a block is the coinbase transaction, i.e the transaction that reward them with new bitcoin(s) if they successfully mine the block. But even if miners don't have to include other transactions in a block, they will because it allow them to collect the transaction fees.

Miners in general choose to include transactions with the higher fees. In the bitcoin core client, the transaction date also plays a role: older transactions are prioritized over newer ones, so that transaction with a lower transaction fees still get a chance to be included in a block, but later.

Edit: as per Pieter Wuille comment, older transactions arent prioritized anymore from v0.15.0


How to file bitcoin income to the IRS as a nonresident alien

The analysis is the same as for other property.

You only need to report income that is effectively connected to the US or that is fixed, determinable, annual, or periodic (FDAP).  So while you would need to report a US-sourced scholarship grant or wages from working in the US, you do not need to report a foreign transaction.

If the transaction was a foreign person abroad (your husband) buying and then selling from foreign people, and the property was not located in the US (this is mostly about real estate), then you should be quite safe not reporting it.  The fact that he sold it for USD does not make it reportable or taxable in the US.

Please review Publication 54 if you have further questions.


Unconfirmed transaction for 2 days despite network fees, rescans and redownload

There's a sort of hatred against satoshi dice lately.  The feeling is that satoshi dice clogs up the transaction record with lots of small transactions.  Some of the bigger mining pools have started to refuse the transactions.

Rescan and your other steps should have fixed everything, though.

Without including the sending address in your question, it's difficult to track the bitcoins.  My only thought is that you can try to re-spend the coins on yourself and maybe they'll return.  The easiest way to do this might be to extract the public and private key of the address that sent the coins and put those in a wallet in blockchain.info .

To do this, go to the console of your bitcoin client and type

walletpassphrase <your password> 20
dumpprivkey <the address that sent the coins>
walletlock

Open a new wallet at blockchain.info and use the Import/Export function to import that private key.  blockchain.info will show your new balance.

That private key is your coins.  Don't tell it to anyone.  The address, however, isn't a big secret.


How will a massive increase in hashpower affect orphan rates?

If the average time to find a block is T, and the typical time for a found block to propagate in the network is t, then the proportion of orphans among all blocks will be roughly 1/(1+T/t). As long as T>t there's not much risk for the network; however it could be a challenge for orphan-paying pools, for example If T=9t then 10% of the block rewards will need to be paid out of pocket.

If a PPS pool pays B/D per share, it is in fact using an artificially low difficulty - the difficulty metric measures how hard it is to find a block (orphan or not), when in fact what is relevant for calculating the due reward is how difficult it is to find a valid block.

If the network hashrate increases by a factor of X, then until difficulty catches up the average time for finding a block is (10 min)/X. I doubt the transition to ASIC will cause a discrepancy by a factor of over 10; this would give T = 1 min. With a conservative value of t=5 sec you will get about 7.7% loss for paying orphans. The actual numbers for both X and t will likely be much less (especially since concentrated hashrate lowers t), so I don't think the loss during the transition period will be prohibitive.


Where to find P2pool networks.py settings for altcoins?

You can download this fork https://github.com/Rav3nPL/p2pool-rav It has a lot of altcoins on it.


Possible to use BlockChain.info and Bitcoin-QT synced?

You aren't going to run into issues doing this, as wallets don't store transactions (technically), they look them up on the Bitcoin network blockchain. If you make a transaction on one wallet it will automatically update as long as both have downloaded the latest chain. For blockchain.info wallets this will be true and for Bitcoin-QT it takes a few hours to download the full chain.

If you're afraid of making a corrupt wallet accidentally, you can:

Print out the private key for your addresses. Keep it in a safe place. An addresses       private key does not change.
Create an encrypted backup. Both wallets let you do this, your wallet private keys will only be able to be read with a decryption key; the password you set for the wallet. Anyone who will have your encrypted backup won't be able to do much if they don't know your password for it and password strength.
Create a brain wallet and import it into both wallets. All your keys from the memory wallet will simply be memorized in your mind, where you can only forget it.

Check out these precautions as well.


How can I copy the blockchain from my working client for use with a live CD savings wallet?

You can find the blockchain in this directory:

C:\Documents and Settings\YourUserName\Application data\Bitcoin (XP)
or
C:\Users\YourUserName\Appdata\Roaming\Bitcoin (Vista and 7)

As blk0001.dat and blkindex.dat. Copying those files to a proper folder on your Ubundu (~/.bitcoin/) should spare you from redownloading the entire blockchain.


Why does bitcoin core need to download the blockchain

Certainly miners, and many other users, keep track of the block chain.

But if you don't download and verify the block chain yourself, what will you do when you want to know whether a transaction is valid?  You could ask a miner, but what if they decide to lie to you?  You would have to trust them to tell you the truth.

Part of the Bitcoin security model is that you don't have to trust anybody.  When you verify the block chain for yourself, nobody can trick you into believing that an invalid transaction is valid, or vice versa.


What would be a rational subkey depth to use so that my address is infeasible to locate via a systematic search?

It's a bit strange to use single digits for the entire HD path since the BIP32 spec allows you to pick numbers up to 2^31 (non-hardened). BIP32 key derivation is largely using SHA512. Current ASICS for SHA256 can calculate about 10 trillion SHA256's per second, so about 160 quintillion hash operations in about 6 months. Assuming an ASIC can be built with roughly the same hashing power, you would need to go about 20 levels deep to force a machine like that to find your address in about 6 months. Of course, more machines mean faster cracking.

A far simpler solution would be to use the entire space of each level instead of just 10. 3 levels then would be plenty (~10^28)


Increase transaction fee with Bitcoin Core client fails because of no change output. Why?

BIP125 RBF (Replace-by-fee) transactions in bitcoin-core 0.15.0.1 appear to require a change address with a balance in order to facilitate a future RBF-based fee increase.

By way of an example, consider the following transaction:

Input  - 1.00000 BTC
Output - 0.99998 BTC
Fee    - 0.00001 BTC
Change - 0.00001 BTC

Assume the fee is too low.  Now, we want to increase the fee for the transaction, so the RBF replaces the prior transaction with one like:

Input  - 1.00000 BTC
Output - 0.99998 BTC
Fee    - 0.00002 BTC
Change - 0.00000 BTC

Now the fee is enough that the transaction is confirmed.

Without "change" present in the first transaction, there is no source for the increased fee.  RBF could be implemented such that the output is reduced to allow for a greater fee; I'm not sure why that is not supported.  Line 2928 of the wallet.cpp source code in the bitcoin-core github repository states:

break; // Done, able to increase fee from change

The way around this problem for a transaction that has RBF enabled, but has no change address is to follow the directions contained in one of the answers in the canonical "transaction not getting confirmed" question.  I experienced the exact issue last week and was able to successfully recover using the -zapwallettxes option in the bitcoin-core wallet CLI.


Do any of the Bitcoin exchanges implement trading curbs?

Mt. Gox has stated that they now use "circuit breakers" to disable trading pending manual intervention if trading appears suspicious or unreasonable. They reported a few minor incidents where the breakers did trip in the initial implementation due to unusually high, but normal and innocuous, volatility.

My recollection is that TradeHill only has breakers on the movement of Bitcoins out of the exchange. So far as I know, they have no breakers on trading -- at least not that they've announced.


In NXT, which files store the contact addressbook data?

The contacts are stored in local browser database. You do not need migrate them.

Regarding upgrade, in most cases when using the zip file installation the best strategy is:
1. Stop the NRS
2. Delete the /lib library
3. Unzip the new version on top of the old version
When you start the NRS again it will migrate the database to the new structure, this can take a while, sometimes up to an hour.

If you need to install from fresh, copy over from your old installation:
1. The blockchain in the nxt_db folder, also the nxt_test_db forlder if you are using the testnet
2. The relevant properties in your nxt.properties


Can I convert BTC to USD without a bank account?

To my knowledge, Steam does not support BTC (at least yet). Moreover, Steam does not allow one to send another user money transfers, so you can't really exchange your funds with other people. You could, however, purchase a game gift for another person and sell that gift for Bitcoins, but that would probably be against Steam's policy.

If you generally want to exchange Bitcoins for any currency without having a bank account, you could always try finding another user that also wants to trade like that and exchange money with them, either in person or through services like Western Union. This way however, is less reliable than using a Bitcoin exchange.


Is there any method to extract transactions for an bitcoin address which is not in my wallet using bitcoin core?

You can use the scantxoutset command to scan for unspent outputs for a given address (or script).

Importing an address adds it to your wallet, and you will see transactions for imported addresses under the listreceivedbyaddress and listtransactions commands.


The generation transaction has an extraNonce value in the coinbase field, which is the default value to change to get a new getwork. This is generally done by the pool but can also be done by the miner if he gets the relevant Merkle branch.

The timestamp also can be changed by the miner, and the entire list of transactions changes occasionally on the pool's end.


Are minimal bitcoin fees nowadays enforced in bitcoin-core?

Bitcoin core does not anymore use the notion of priority, where a part of the block was reserved for transactions spending old UTXOs.

Further there is something called a "relayfee", which is simply a policy and default setting that you can check in your node when calling "getinfo". Any transaction with a fee/kb under that one is not propagated by the node. The default value currently 1000 satoshis per kilobyte.

But a miner can still choose to add any (valid) transaction to a block, irregardless of the fees it pays or amount it spends. But rational miners will always try to create blocks that maximize their profits, hence pays them the most in transaction fees.


You must add 'TREZOR' to your second line:

const seed = Bip39.mnemonicToSeed(MNEMONIC, 'TREZOR');

Then it should work.

You can see this in the BIP39 test cases in the BitcoinJS repo:

https://github.com/bitcoinjs/bip39/blob/4fce199e73f7ab68bdf9f7382dc10f7e1adaa499/test/index.js#L13-L33

function testVector (description, wordlist, password, v, i) {
  var ventropy = v[0]
  var vmnemonic = v[1]
  var vseedHex = v[2]

  test('for ' + description + '(' + i + '), ' + ventropy, function (t) {
    t.plan(5)

    t.equal(bip39.mnemonicToEntropy(vmnemonic, wordlist), ventropy, 'mnemonicToEntropy returns ' + ventropy.slice(0, 40) + '...')
    t.equal(bip39.mnemonicToSeedHex(vmnemonic, password), vseedHex, 'mnemonicToSeedHex returns ' + vseedHex.slice(0, 40) + '...')
    t.equal(bip39.entropyToMnemonic(ventropy, wordlist), vmnemonic, 'entropyToMnemonic returns ' + vmnemonic.slice(0, 40) + '...')

    function rng () { return Buffer.from(ventropy, 'hex') }
    t.equal(bip39.generateMnemonic(undefined, rng, wordlist), vmnemonic, 'generateMnemonic returns RNG entropy unmodified')
    t.equal(bip39.validateMnemonic(vmnemonic, wordlist), true, 'validateMnemonic returns true')
  })
}

vectors.english.forEach(function (v, i) { testVector('English', undefined, 'TREZOR', v, i) })
vectors.japanese.forEach(function (v, i) { testVector('Japanese', WORDLISTS.japanese, '㍍ガバヴァぱばぐゞちぢ十人十色', v, i) })
vectors.custom.forEach(function (v, i) { testVector('Custom', WORDLISTS.custom, undefined, v, i) })


How can you estimate the net amount of transactions? (deducting change)

The satoshi client always sends change to an address that has never been used before.

Often the amount being sent has less significant decimal digits than the change.  If you see 2 outputs, one for 1.235 and one for 1.19403995 then the change is probably the 2nd one.

The satoshi client will try to minimise the change.  Usually the change will be relatively small, and is often smaller than any of the inputs.


Bitcoin trade volume and trade transactions

These are all transactions that are recorded on-chain.

  In short: Is https://blockchain.info/nl/charts/n-transactions-excluding-chains-longer-than-100 the transaction volume? (Purchase real life goods etc)

Assuming that every transaction involving the trading of bitcoin for goods/services is done on-chain and not internally as might be possible by some sites, ( eg all trading on binance, bittrex etc.) then yes.

It certainly indeed does not represent "orders" that you make on exchanges such as bittrex ( to buy X coin or sell Y amount of bitcoin for $), all these transactions are performed internally on their platform, and are never actually recorded on the blockchain, unless you explicitely want to withdraw your "balance" in the form of bitcoins to your wallet. ( which is why you really shouldn't trust them with any of your coins)..


How would an Auditor ("m") of BIP32 audit the keys generated by the master?

Do they need to pre-generate a list of all possible public keys and watch new blocks for those transactions?

Essentially.

  Assuming that there is no limit to BIP32 keys, that means the auditor would need an infinite amount of resources to audit a key (pre generation, and then cross referencing each incoming Tx). What are some appropriate ways to constrain this auditing?

Deterministic keys are used sequentially. Currently a client will scan up until they hit a sequence of unused addresses in a row and assume none past this gap have been used.