Chainpoint is a standard for maximizing the scalability of recording data in the blockchain and generating blockchain receipts. Each receipt contains all the information needed to verify the data without relying on a trusted third party.

You can read our white paper and download a Python implementation of a Chainpoint server at http://github.com/chainpoint.

Tierion and Storj are the first to implement this new standard.


Where, in the code, in the Satoshi client is 21 million cap implemented?

There are 3 places where GetBlockValue is called. One is on incoming blocks, one is on blocks we're mining, and one is an error message. This is the one for incoming blocks:

if (vtx[0].GetValueOut() > GetBlockValue(pindex->nHeight, nFees))
    return state.DoS(100, error("ConnectBlock() : coinbase pays too much (actual=%"PRI64d" vs limit=%"PRI64d")", vtx[0].GetValueOut(), GetBlockValue(pindex->nHeight, nFees)));

Source

This looks at the first transaction (the coinbase transaction) and checks the value. If it is larger than the subsidy plus the fees, then the block is rejected and the node that sent the block is blacklisted.


How to calculate block generation time from block's data?

Block generation time for block#n= (timestamp of block#n+1) - (timestamp of block#n)

I'd say the block generation time for block#n should be:

genTime(block#n) = timestamp(block#n) - timestamp(block#n-1)

However, this doesn't explain the huge discrepancy.

If you're sure that 1) you're using the same dataset, i.e. the same window of blocks!, and 2) calculating exactly the same quantity as they are, and still arrive at different results, you might want to get in touch with the authors of the paper to compare notes and see where your calculations differ.


How can I use the vanity name generator to look for an address?

Proper syntax for VanityGen is:

Usage: vanitygen [-vqrikNT] [-t <threads>] [-f <filename>|-] [<pattern>...]
Generates a bitcoin receiving address matching <pattern>, and outputs the
address and associated private key.  The private key may be stored in a safe
location or imported into a bitcoin client to spend any balance received on
the address.
By default, <pattern> is interpreted as an exact prefix.

Options:
-v            Verbose output
-q            Quiet output
-r            Use regular expression match instead of prefix
              (Feasibility of expression is not checked)
-i            Case-insensitive prefix search
-k            Keep pattern and continue search after finding a match
-N            Generate namecoin address
-T            Generate bitcoin testnet address
-X <version>  Generate address with the given version
-t <threads>  Set number of worker threads (Default: number of CPUs)
-f <file>     File containing list of patterns, one per line
              (Use "-" as the file name for stdin)
-o <file>     Write pattern matches to <file>
-s <file>     Seed random number generator from <file>

The important options to know are -i and -r which cause the search to be case-insensitive and use regex, repsectively. In its simplest format, you issue a command like:

vanitygen.exe 1david

Which tells vanity gen to look for an address with the exact prefix "1david." On a single core of my core i5 this runs at about 325,000 keys per second as shown by the status display (which does show a time estimation.):

[324.43 Kkey/s][total 15166208][Prob 0.1%][50% in 9.1h]

Using the -i option drastically decreases generation time. vanitygen.exe -i 1david produced the following results in just a few seconds:

Difficulty: 36384905
Pattern: 1david
Address: 1DAVid3iW7XhDBzdoj8FbnaSaqWCjeTgUP
Privkey: 5JvtXtpUbwbNNqRoQjF3w2nyXHhphJk6LX1pWkPYEkBr4nnnBeL

The -r option allows the specification of a regex value instead of the default pattern option. If, for example, I demanded that my address contain all lowercase letters but I don't care if the "D" in "David" is uppercase or not, I could use vanitygen.exe -r 1[Dd]avid. One downside to specifying a regex prefix is that you will not be given any estimated time or probability data since such calculations are not as trivial as matching a simple prefix.

The more specific your matching criteria (and the longer the pattern) the longer it will take to generate your address(es). This can be sped up considerably if you have an ATI/AMD video card since there is also an OpenCL version of VanityGen which can try millions of keys per second on a decent GPU.


If your profits were sent to a watch only address then you are in trouble.

Ordinarily, a private key is created first and then the address is created from that private key.

Your wallet makes new private keys for new addresses.

Please contact the person who gave you the watch only address.

If you do get the private keys then you should immediately move any bitcoin to a new address where only you own the private keys and nobody else knows them, so that the bitcoin cannot be taken.

  https://bitcoin.org/en/glossary/watch-only-address

  Watch-Only Address

  An address or pubkey script stored in the wallet without the corresponding private key, allowing the wallet to watch for outputs but not spend them.


How would the OpenBazaar or NXT decentralized marketplace / eBay / Craigslist work?

One solution is to use Nash equilibrium in order to force people to cooperate.

The concept is quite simple. Both the seller and the buyer make a deposit.

If the entire buy/sell process goes fine they can recover their deposit, if it don't they both lose their deposit.

So it isn't profitable to go away with the money without sending the good nor to get the good without releasing the payment to the seller.

This solution has already been discussed. If you google bitcoin+nash+equilibrium you will find more informations.


Difficulty in verifying bitcoin-core signing keys

With the .asc file, you can do

gpg --import <asc filename>


You can export private keys from Electrum and BitcoinCore. You can export private keys from Electrum as "words" format (There's a website to convert it to private key(s): https://iancoleman.github.io/bip39/), while Core doesn't have this feature. See the steps in question Using dumpprivkey to make a paper backup to use dumpprivkey in Core to export the private key.


MultiBit with multiple addresses to Electrum

go to Tools-> Export Private Keys
After you find the .key file, open it in a text editor. The key file should start with the line: “KEEP YOUR PRIVATE KEYS SAFE !”
The keys start at the last # line


He suspended sales because the original print run ran out. The merchants that accept paypal/credit cards are only accepting preorders.

He posts availability info on his website:

https://www.bitcoinbook.info/

In the meantime, he's published the book online.


Is the bicoin: URI scheme an URL scheme as well?

I took a look this. Bitcoin doesn't reply fit any of these perfectly, but I think it is a URI in that it uniquely identifies a Bitcoin account. The issue is that Bitcoin doesn't really have a location function. I suppose you could say that you can locate Bitcoin address history, but that's not really the purpose of a bitcoin: link. I'm going to say no, it is not a URL. It is however a URN.

EDIT: mailto: is a URL the same way a HTTP URL is. It has a domain name and states the location for sending something. Given this example, I'll change my answer to yes.


how to fix mining software make error? bfgminer bitcoin

error in miner file, something to do with cpus
./configure with enable cpu mining fixed this
now able to make bfgminer
note similar issue from other users:
https://github.com/luke-jr/bfgminer/issues/787


Can someone explain why I only received 1 output (24 cents) from my transaction ($3,253.29)

My friend,
I'm sad to tell you you might have been robbed of your money....
Cryptonator has a 2,5 stars rating. The reviews say it should not be trusted.
It seems it was split into 2 different addresses. The one where you received your cash (20 cents) and another one where they received the whole rest. This address has received well over 588 000 $ USD already. So this isn't the first time it happened. it's as if they sent you the minimum they could just to get the transaction going.
If I'm correct this address is your coinbase wallet: (value 0,20 cents)
This is the robbers wallet: (value: 588k) 163y4H32GbQSM8qgKwsDfyhmmvDnHKKaaa
In the future, use trusted exchanges such as binance, crypto.com, kraken and coinbase....
So sorry for you, sincerely...
(https://i.stack.imgur.com/JPx8W.png)


Bitcoin miners find a random number (called a "Nonce") that when inserted into the current block makes the hash be below the current target. They then send that current block around the network and everyone checks their work (the proof-of-work) by hashing the block and checking if the result is below the current target. In mining pools, miners do the same thing, but the current target is much higher (so it's easier). When they find one of these, it's called "mining a share". A small percentage of the "shares" will actually have a hash below the actual target, and the pool will make it's 25BTC profit, then distribute it out to the miners who found a share (normally using some über-complicated method to prevent cheating/pool hopping)


You hit the nail on the head my friend...You get less money/fiat per btc because they are all competing together for price so market efficiency is lower - usually withtin the scope of 20 percent lower.  However for this loss in premium, you can be guaranteed to receive a deposit in two weeks or less in most cases.

However the volume on Gox is higher I believe because of the history large players probably continue to use their services because AML verification limits already occurred and those cost money.  Plus, if the money is simply there to be traded and appreciated upon then it makes sense to keep the credits available such that you buy in low and sell out high.


Is it safest to double check my new bitcoin address never showed up in the Ledger (the blockchain) before?

would it be safest to double check

Yes but the difference in safety, although not exactly zero, is approximately zero.

is it true that when there is a collision of address, both that person's private key and mine can move this bitcoin amount to else where

Yes.
Statistically that will not happen in any timespan you or I can properly comprehend. See related topics in right hand margin of this web-page. Especially Is a bitcoin address collision possible if generating 90 million addresses every 4 hours?


Transaction fees and transactions with bitcoin-cli. Wallet address balance negative

How to do #1? i.e. How to calculate the size of the transaction (in bytes) + transaction fee in advance?

You can use the recently-introduced fundrawtransaction RPC:

First create a transaction with just the outputs you want but no inputs, using createrawtransaction.
Then call fundrawtransaction on it (which will compute fee, and add inputs and change).
Observe the fee, and do balance checks for your user.
If acceptable, sign the transaction (using signrawtransaction) and broadcast it (using sendrawtransaction).

  Using bitcoin-cli settxfee  seems to return true but the actual transaction fee that is applied to me was much higher. Why was this the case?

settxfee sets the fee per 1000 bytes, not the total. If your transaction ends up being larger than 1000 bytes, the fee will be higher.

  I need to know more details about how the move command works. Is move an actual transaction that will incur transaction fees?

Read up on how the account system works. There is no transaction involved, as account balances are simply local bean counters. All coins in your wallet are shared across all accounts. Account balances just keep track how much of them belong to whom (but not which specific coins belong to whom). Move simply updates the balances without any transaction on the network.

  Is option 2 a good option to hide/solve my problem?
  What are other options / correct implementation for implementing a withdraw button?

No, because the account system is deprecated and will be removed in a future version. Reasons for this is that it is very hard to understand (as this question shows!), and makes backups nearly impossible (as the account information for sendfrom cannot be recovered from the blockchain, restoring a wallet backup will mess up your accounting).

Instead, use the fundrawtransaction mechanism described above, and implement user balances in a higher-level layer (which does for example stores the account information in a database with proper backups).

  Can sendfrom take out money from other accounts other than the "" account?

By definition, no. It creates a transaction using all coins in the entire wallet to fund it, and then subtracts the amount sent plus fee from the specified account.


You're correct, they're valid addresses, just that nobody will ever have the private key that corresponds to them.
As for why people send money to them... sometimes just for fun, and sometimes to encode data on the blockchain. This particular transaction might be a dust attack, of which the goal is to uncover which addresses are owned by the same owner, in case the owner attempts to spend the dust along with other coins in their wallet together.


When the network rejoins, the chain with more proof of work wins. Servers on the losing chain will switch to the winning chain. Transactions from the losing chain will be recovered and mined into new blocks on the winning chain.

There are three types of transactions that can't be recovered:

Any transaction that claims a block reward cannot be recovered.
Any transaction that uses an input that is already consumed by a transaction in the winning chain cannot be recovered.
Any transaction that uses an input from a transaction that falls into either class above cannot be recovered.


A previous draft of BIP0032 did this, actually. (Sorry about linking to the bitcoin wiki - that change was made before we switched over to git for BIP tracking.)

According to the changelog, it was done for speed reasons.

  [30 Apr 2013] Switched from multiplication by IL to addition of IL (faster, easier implementation)

It's much faster when deriving a child private key from a parent private key. The new method requires only a normal addition (mod n) rather than an ECDSA point multiplication.

It's not faster when deriving a child public key from a parent public key. That still requires an ECDSA multiplication followed by an ECDSA addition. (In fact, it's about 2% slower.)

Using addition does not add any security issues. It's possible to get a parent private key from a child private key and an extended public key, but that would also be true if multiplication was used.


Not without help of a BCH miner.  Basically there is no way to claim these coins under Bitcoin Cash since they unpicked all the SegWit changes prior to forking.

These coins are actually seen as "anyone can spend" coins on the BCH network (unlike in Bitcoin, someone claiming these is breaking no rules so the transaction would be accepted as valid), so a miner can claim these for themselves, if you find a good one, then you could politely ask them to claim them and forward them onto you.


How can I pick up the blockchain download where it left off on another computer using an EHD?

Even if you transfer all the data from a fully synced client, the bitcoin client still needs to validate those blocks. It will still take a while, but should be quicker than downloading all the data and verifying.

ANSWER IS NOT ACCURATE.
EDIT: If you copy the chainstate, there shouldn't be any work the receiving system should perform anymore - the software wouldn't even know it was moved. It's possible the wrong directory was used.


I have/had 31 bitcoins on MtGox; What are my options now?

This is generally called counterparty risk - if your resources are in custody of someone else, there is a risk that they go bankrupt and you lose it. And in that case it is too late and your options are limited to making a sadface :( and writing it off as a loss - do note that you can get x% of the loss back from your income tax in most places.

There are options to limit that risk before it materializes - it might be too late for MtGox, but important for the future. All the lessons are pretty the same as historically for 'normal' banks before modern regulation.

Diversify the risk - if your funds are spread out among multiple institutions, then there is less chance in losing it all than putting it all in one basket;
Insure the risk - your bank deposits are insured in most countries, i.e., if the bank can't return them then the insurer pays up to a certain amount. Bitcoin companies currently aren't insured that way, however it means that when some of them get deposit insurance then that would be a serious selling point for their trustworthiness; and if (when?) regulated banks start offering bitcoin services, then you'd get that protection as well. Also, you can purchase insurance for yourself, although it might be unpleasantly expensive.
Reduce the risk - choose the company properly. Reputation certainly didn't help in MtGox case and it's not a guarantee, however, you should be looking at solid evidence that the company is solvent. I.e., you want periodic, publicly visible financial statements that are seen and analyzed by many people and that show that they really can afford to pay all the depositors back even if they have a bad day or a bad year. At the very minimum you need this to be (a) according to common accounting standards; (b) expressed by a company officer in a manner that means jail for him if (s)he lies in these statements; (c) audited by a third party - otherwise these statements are worthless, as if there will be real problems, then they will lie always. Regulators of financial institutions do much of that job for banks; not eliminating those problems but reducing them - for unregulated entities you'll have to check everything yourself.


What is the relationship between the Minsc language and Policy language?

This is a work in progress in answer based on a conversation between the creator of Minsc (shesek) and me. I am paraphrasing so any errors are my own.
Minsc has a runtime environment with a Policy data type that gets constructed as the result of evaluating the program. The program evaluation could be considered part of the compilation process, in which case you could say that Minsc compiles to Policy but it is also possible to consider this evaluation as the runtime and say that Minsc doesn't compile at all, but is rather an interpreted scripting language with a runtime Policy datatype that could be produced by it. Functions/programs can return different data types too, but the high-level API catches when the main program does that and considers it an error.


How propagation delay depends on the block size?

The y axis of the plot shows the delay/size, that is, the number of seconds of delay produced by each kilobyte of data of the block.

Therefore, as blocks get bigger, the overall delay of the block also gets bigger. However, the delay per kilobyte of data approaches a constant value. This is produced because the overhead generated by the bitcoin protocol when sending blocks (anounce the block via an inv message, send getdata to retrieve content, etc.) is less significant as the block gets bigger.


Your steps sound just fine. You won't need to worry about the private keys at the back end as your online wallet stores these keys for you (and uses them to create the transaction to move the coins from one wallet to another).

Hopefully it goes without saying that you should store your blockchain.info wallet private keys somewhere as well just in case you somehow lose access to blockchain.info.


There are really only two things driving the increase in price you are talking about.

Supply and Demand
Greed and Fear

Supply and demand is simple, there is a virtuous cycle at work here:

Increasing demand drives price increase due to limited supply
Increasing price drives increasing demand as knowledge spreads in the media
Repeat

Greed and Fear are basic human emotions, but the interesting thing is that the Greed and Fear is a community measure not an individuals, this can be considered as the "wisdom" of the crowd.

Large price increases increases greed
Increasing greed increases prices
Decreasing prices increases fear
Increasing fear decreases prices

When you boil it down to just these things and nothing else (such as cost of mining) you have something like a measure of the psychology involved in these simple concepts applied to the crowd rather than the individual.


But, to which data I have to apply SHA256 in order to get the given hash?

You need to apply recursive hashing to all the transactions in the block(in a correct order) to create a merkel tree, and then hash the final hash from the merkel tree with infos that you mentioned

  When a pool is mining, does it receives the block info and its hash? From who receives that data?

When mining, the miners get the hash of the previous block. Transactions are read from the Mempool. And try to create a valid block(that satisfy the difficulty target) by doing trillions of trillions of hashing (POW)

I would recommend Mastering Bitcoin by A.Antonopoulos. It's my reference to everything in the Bitcoin space

PS: answering by email is definitely against stackexchange policy


Though it is possible that both wallets generated the same mnemonic seed phrase (which is used to derive private keys), it is extremely unlikely. The chance of it being the same is 1 in 2^256, which is a very small number. This is obviously assuming no bugs in the code generating the key.

Restoring the account is only possible if you still have the mnemonic seed phrase. If you don't, then I'm afraid you won't be able to access the bitcoin until you find the seed.

Note that the mnemonic seed phrase is different than a user-supplied password. A mnemonic seed phrase will derive addresses, whereas a password will encrypt (lock) the wallet. So if you use the seed phrase to recreate the wallet on another device, you will not need the password to access the funds on the second device. That said, in some cases, a user-supplied password may also be used as part of the seed phrase (a '13th word or '25th word'). So you'll need to determine the nature of your password in order to recreate your wallet.


If you have your 12 words phrase from blockchain.info you can just restore your wallet, then you will use a new email and new password.
To restore your blockchain.info wallet:
1 - Go to: https://login.blockchain.com/#/login
2 - Click on Need some help?
3 - Click on Recover Funds
4 - Use your 12 word phrase, lowercase, with spaces between each word.


Fees are way to big ... How can i send everything from one big address and pay only 20$ usd fee [the default bitcoin fee, i see on some services, 5 usd]?

To spend from a bigger amount instead of several small, you must have it. If you fragment your bitcoin holdings sending small amount (for testing purpose or any other reason) to your other addresses, then when you would send it further, you should bind several of them, taking up more space on the blockchain and consequently paying higher fee.
You choose the fee amount, maybe you overpay it ... anyway there is many factor that are involved in fee calculation so there is many ways to minimizing them, you can start here: https://en.bitcoin.it/wiki/Techniques_to_reduce_transaction_fees

I believe i pay per vbyte ... but i want to send internally with low or no fees or something.

There is not "send internally": either you can use Bitcoin testnet, that works with valueless testbitcoin you can have for free, or you use mainnet and your transactions pay as any other.

How big payment gateways like coingate/coinpayments/bitpay are doing this? They too create an address for every transaction ...

When payment gateways make payments, they aggregate them: they aggregate multiple inputs (customer deposits) with multiple output (customer withdrawals) in a single big transaction that pay a very big fee, but which is always lower than they would pay with many small transactions; moreover they collecting 5$ you say from any single customer that is paid with the big transaction (and some service also from customers who deposit).


which one happens first in a gateway, (a) users pay money to gateway, or (b) gateways transfer IOUs to user? what guaranties step 2 happens?

The gateway gets to set its own policies. However, the general consensus is that gateways should avoid risk because they'd have to pass losses onto their customers in the form of higher fees. So you probably shouldn't trust a gateway that extends IOUs to people whose money it doesn't hold.

If the gateway breaches its contract with you, you should complain publicly, sue them, or take whatever action you consider appropriate. Gateways are only worth their reputations.

  what will happen when a gateway refuses to accept IOUs, and transfer money back to user?

The user can just exchange the IOU for another IOU at a gateway that will do business with them. A gateway can't can't really refuse to redeem IOUs for one user specifically because the IOUs are tradeable and fungible. Once at least one outbound Bitcoin gateway is running, you could exchange the IOU for Bitcoins.

If a gateway begins reneging on its redemption agreements generally, then the value of those IOUs will fall and people will stop accepting them. This is the counter-party risk you take when you extend trust in the Ripple system. Using Ripple as a store of value for fiat currencies requires reliable gateways. There's no getting around this.

  is there anything similar to 'interest rate' exists for holding IOUs for long time?

No. Once interest rates increase from their current near-zero level, this could be a major profit center for gateways. Of course, if being a gateway is very profitable, lots of companies will do it and then competition will either drive down rates or drive up services. (Remember when banks gave away toasters?) Nothing stops a gateway from giving rewards to people who hold their IOUs.


Bitcoin Cash accidentally sent to Bitcoin address. Can I get them back?

In my case I sent the Bitcoin Cash to an address created by a Mobile Bitcoin (!) wallet from btc.com.

The support from btc.com told me the solution:

  B) You have sent BCC to your BTC wallet:
  1. Use your BTC recovery PDF at https://bcc-recovery.btc.com/ (click on 'forgot password' to use your backup PDF)
  2. Recover the coins to an address from your BCC wallet

There was not even the need to click on "forgot password". I just logged in there with my username and password of the mobile Bitcoin (!) wallet and then it started to scan some addresses - and actually found the address I had send the bitcoin cash to. It then allowed me to specify another bitcoin cash adress where to send the money to.

So, I am lucky now, I have back the bitcoin cash the I thought I would never see again


Why public Electrum servers serving on websocket (WS) are so rare?

They are rare because Electrum and all the other wallets using the protocol do not support it client-side, so nobody setting up an ElectrumX server has any incentive to enable this. ElectrumX requires you to enable individual protocols explicitly. Furthermore, as you can see in the changelog they have only been supported since May 2019.


Why do both Mt. Gox and Intersango use Polish banks?

As for Mt. Gox, they got their polish account when they bought up bitomat.pl, after it lost its private keys. They continue to support accounts from that other website, so they allow easy money transfers to that account (although it takes them a couple days to credit the account).

As for Intersango, I presume they might want to cater to that part of the market (bitomat was dealing solely in PLN and it was the third largest Bitcoin exchange at a time). It could also be related to the fact that poles often work in UK (where the exchange is located) and transfer their money back to Poland - wire transfers between countries are quite expensive, while sending Bitcoins is cheap.


Why it's not good to the community to hoard bitcoins?

Commodity money results in artificial scarcity.
Take the case of Jack and Jane

Jack is a great gardener who could use more customers
Jane is a great web designer who has a forest of untamed weeds growing on her front lawn.
Neither Jack nor Jane have much (if any) commodity money, say, gold. And thus, neither of them engage in trade with each other though it would be beneficial to both.
Gold is scarce, and its especially scarce because the people who have it, not Jack and Jane, are trying to hold on to it, and in fact amass more.
The scarcity of gold, through people's perceived need thereof to engage in economic activity, results in an artificial scarcity of goods and services and declining economic activity. People who should trade with each other do not.

I actually do not think this is a problem with bitcoin because bitcoin can be divided as needed so even if Jack and Jane only have a Satoshi the current minimum unit, between them, the protocol can be modified and a whole economy can run on one Satoshi.

Most people people see this as a problem because they extend the analogy of commodity money too far. This is if fact one of the ways that bitcoin is disimilar and superior.


getmemorypool gave you the data needed to construct your own mining work and make a valid block. It was/is frequently used by mining pools for generating work for miners. It could look like this:

> bitcoind getmemorypool
{
  "version" : 1,
  "previousblockhash" : "00000000097f17d16fee37a160d300e27ce13632bb4468f0f31ae816e6186a18",
  "transactions" : [
  ],
  "coinbasevalue" : 5000000000,
  "coinbaseflags" : "062f503253482f",
  "time" : 1350541369,
  "mintime" : 1350537485,
  "curtime" : 1350541369,
  "bits" : "1c2f36c0"
}

Normally transactions would be a long list of transaction data.

getmemorypool is no longer supported in bitcoind since version 0.7 which has getblocktemplate instead. getblocktemplate is more flexible and suitable for pool mining. It is now in use both for getting data from bitcoind and for miners to get work from pools.


won't show my balance by "getbalance myaddress" but show balance by "getbalance". what is the reason?

Try this:

getnewaddress;
getaccount <result from 1>
getbalance <result from 2>

For your information:

  The getbalance RPC gets the balance in decimal bitcoins across all accounts or for a particular account.

This question should be also helpful for you.


How to get bitcoin P2SH (3*) address balance with bitcoind

The Core client will only update its balance when it registers transaction outputs that it is able to fully spend. So, if you don't have all of the multisig keys in your wallet, it won't keep track of the balance. What you're looking for is support for watch-only addresses, which should be coming soon (https://github.com/bitcoin/bitcoin/pull/4045/commits), but is definitely not available in 0.8.6.

In short, without writing some custom scripting, there is no way to do this with the current Core client.


How to make a genesis block of my altercoin?

I think you can use this : https://bitcointalk.org/index.php?topic=225690.0
This is all you need to make your altcoin working ;)

According to this link, you need to launch your alt coin's software and see in debug.log which hash your software is waiting for.


How are transactions verified by nodes other than the initial receiver?

If I understand correctly, when I create a new transaction from my wallet, I have to sign it and encrypt it. My wallet encrypts the message using the public key of the node it is connected to, so it can decrypt the message when it receives it, and signs the message with my private key, so the node knows it was me who sent the message because my public key is then sent along with the message.

You understand incorrectly. Nothing is encrypted in Bitcoin, there is no need to do so, and, as you noticed, it would make it impossible to verify the contents of the transaction.

Transactions are only signed. The signature both ensures the integrity of the transaction and proves that the sender is actually allowed to send the Bitcoin.


What happen if some blocks are added simultaneously with same previous hash

A fork happens. If A and B are competing for the next block, they probably share transactions. So you cannot simply append A to B.

They're both valid blocks, nodes hold both of them until they hear about a new block that was built on top of either A or B. Let's say a node hears a new block C was built on top of B, that node will then disregard A because it isn't a part of the longest/heaviest chain. The transactions in A that are not in B are returned to the mempool to be mined in a new block.

The network reaches consensus by trusting the longest chain. This is why it is suggested to wait 6 confirmations for a transaction. This gives extremely high confidence that the network has reached consensus on your transaction and there is a very low probability that your transaction will be apart of a reorganization of the blockchain.


What happens to extinct blockchains, and transactions inside of them?

This process, generally know as forking, creates two parallel chains that are incompatible, that is, there will be some transactions that will be valid against one chain but are not valid against the other.

If there are parallel branches, a miner might keep track of both of them. Once a chain is rejected, transactions in that chain are checked against the accepted one. Incompatible or duplicate transactions are simply discarded, while the remaining can be held over to go in the next block (or blocks as there might be too many transactions for just one).
Transaction records will remain in-tact for the accepted chain, but records for the rejected chain will be merged in to the old branch as described above. It would be impossible to attach these transactions to the final block before the branch, so, they are kept around by miners and put into the block chain as normal.
There might be a bit of confusion here... once a block is mined, it can't be changed, so it's impossible to store further transactions in that block. Furthermore, this block will have exactly one coin-base transaction. Any transactions that happen after it is mined will each be stored in subsequent blocks that follow it, but each of these blocks will have exactly one coin-base transaction, as is specified by the bitcoin protocol. So yes, there will only be one coinbase transaction in the block generated by A.


Detect types of ScriptSig and parse each part

Really, the only way to detect the type is to parse it as a program.

All scripts Bitcoin are written in the Bitcoin Script language. Much like any other programming language, certain symbols have special meaning, and correspond to specific op codes, which appear in the raw hex form. You can find a list of op codes on the Bitcoin Wiki: https://en.bitcoin.it/wiki/Script#Opcodes

The standardized scripts, which are usually what we see presented as addresses, are really just specific snippets of Bitcoin Script programs. For example, a P2PKH "address" is really just half a program in the form of:

OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

When combined with the remaining half of the program, which is provided as the ScriptSig when spending the coins, you get a complete program which can be evaluated.

To determine the script type, you really just need to parse the program (or partial program, in the event of an output) and see if it matches a known, standardized type.


Electrum: display redeem script of a P2SH utxo

I did not find a good answer, so I coded a small GUI to perform signatures using private keys, verify a signature using a public key (or an address) and verify a p2sh M-of-N multisig script against a list of N public keys and the parameter M.
This information is easy to find with a simple right click on an address in Electrum (View Details).
https://github.com/PiRK/signverify
I made it primarily for BCHA, but it works for BTC if you paste a legacy p2sh address instead of a CashAddr.


How to consolidate dust transactions in 2017?

Just now (July 2017) the mempool is down, which allows for small fees.
Usually fees are created by the size of the transaction. With lots of dust, a transaction will have many inputs, and increase in size. That increases the fees.
I have seen transactions with low as 5 satoshis per byte. So it's a good time frame.

Similar reply here:
Why was the transaction fee more for a 20 mBTC transaction than for a 25 mBTC transaction?


Higher cost running Antminer S9 w/ APW3++ when running at 220v?

The AntMiner S9i 13.5 TH/sec model requires 101.5 Amps DC.  Since power (watts) is equal to voltage multiplied by amps, the total power consumed by the AntMiner is 1218 watts (+/- 10%).  Note, this is regardless of whether that's AC or DC, and regardless of voltage.  1218 watts is 1218 watts, or if you run it for an hour, 1.218 KW/hr.  In my case, that works out to about $54.44 USD per month, regardless of voltage.

The APW3++ power supply doesn't care what A/C voltage you supply it with, in the range of 100 to 240 volts, it simply converts that into the required amps output in DC.  If the AntMiner is puling 1218 watts, that will translate (at 93% efficiency) to 11.85 amps at 110 volts, or 5.43 amps at 240 volts.  Running two AntMiner S9s on a single 120 volt 15 amp circuit is pushing the boundaries of safe operation.  You should ensure you only run a single AntMiner per 110 volt circuit, unless those circuits are fed with 12 gauge or lower wiring, and are rated for at least 20 amps.

Attaching the APW3++ power supplies to 240 volt circuits simply means you are pulling less amps per hour than if it is connected to a 120 volt circuit, and you can connect two, or possibly three, AntMiners to a single 240 volt circuit.

So, to answer your question, no, it's not more expensive to run at 240 volts than 120 volts.  In fact, due to power efficiency, it's probably very slightly cheaper to run at 240 volts.


How much time to re-mine blockchain at current hashpower?

it would take approximately 9,5 years because it does not matter how many hash-power you have. the mining-difficulty will be adjusted so that in average a new block is still mined every 10minutes also if you get much more hash-power.


I sent my bitcoins from LocalBTC to a unsynced bitcoin wallet program, the bitcoins are not showing up. How do i get them back?

You have two options: Either wait until your wallet has sychronized with the network – your bitcoin will show up when the block was processed that validated the transaction with which it was sent to you. The other option is that you can export the corresponding private keys to a client that doesn't store the blockchain and access it that way.


First, use your 12 words to import the wallet to another device. Once you have successfully done this, you should be able to delete the wallet from your original device, then re-import it.

I always recommend importing to another device first before deleting the original wallet, just in case the import has issues.


With just standard desktop or laptop, is it possible to mine obscure altcoins in the hope that one of them will take off?

Yes, it is possible. Most altcoins are setup with low enough difficulty that you can CPU or GPU mine them, like you could with Bitcoin in the early days. However there are so many of these small obscure altcoins and almost all of them are just useless clones of some other coin or pump and dump scams, so you are likely going to just end up wasting electricity.


GreenAddress: Noticfication of receiving transaction

using pycoin and greenadderss you can't getrawtransaction.

using bitcoin-core you can getrawtrasnaction as hex or encoded.

bitcoin-cli getrawtransaction "mytxid" true


I think you should start by getting the source code of the official client:

https://github.com/bitcoin/bitcoin

You will find introductory information in the Readme.
Once you will have a clear view of what you want to do, you can play with the code by creating your own branch.

Note that, improvements and other changes in bitcoin are tracked by the BIP system: https://en.bitcoin.it/wiki/Bitcoin_Improvement_Proposals
Also, you should get familiar with the concept of soft/hard forks.

Refer to the https://bitcoin.org website, where you can find all the basic documentation (e.g. https://bitcoin.org/en/developer-reference)

That said, you will soon find out that many technical details are not well documented (or even not documented at all). The only comprehensive way of understanding how it works is, as with many other complex programs, to read the source code. Also, IMHO, a good understanding of the basic blockchain concepts is strongly recommended.

Other useful docs: https://bitcoin.org/en/developer-documentation


Coins can "appear to be there" in unconfirmed status.

It's likely that this transaction never confirmed, and whilst you may have thought that you had the coins, in reality you did not.

Unless there has been a hardfork of the PMP blockchain of some kind, all the evidence would suggest that you never had these coins in the first place. Sorry.


My lightning node is unreachable and lightning-rpc': Connection refused

The first error you are seeing might be related to a previous peer that is no longer reachable. The type of the error (Failed to connect 10 socket: Network is unreachable) suggests that it is using a network that is no longer available. This can be because the peer was connected through Tor, or IPv6, and the Tor proxy isn't running anymore, or the network configuration changed and doesn't support IPv6 anymore. It could also be during OS startup that the network device just isn't ready yet, and this is just transient.

Regarding the connection timeout when attempting to connect to another node, it's likely just not online. I went and checked with nmap if the node is online, and it wasn't when I checked:

Starting Nmap 7.60 ( https://nmap.org ) at 2020-06-06 13:47 CEST
Nmap scan report for net-5-95-80-47.cust.vodafonedsl.it (5.95.80.47)
Host is up.

PORT     STATE    SERVICE
9737/tcp filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 2.05 seconds

So that's nothing out of the ordinary. Might I suggest connecting to some other node?

And finally the UNUSUAL plugin-bcli: Could not connect to 'lightning-rpc': Connection refused error is an artifact from the order in which we start up the plugins and the RPC interface: usually plugins are told that we are ready only after the RPC is made available. The bitcoin-backend plugins are a bit special, because they are needed to check whether we are in sync with the bitcoin network and that we can talk to bitcoind. Therefore the bcli plugin starts before the RPC is ready. The error can be safely ignored and we'll make it less verbose soon (see Github Issue #3553).

Disclaimer: I am one of c-lightning's developers.


As others already pointed out, neither the address nor the transaction id are valid. Therefore, you have not sent any bitcoin when using that address, except if you wallet is really poorly made.

It might, however, be the case that you wallet doesn't show you the funds any more if you tried to send them. In this case, export your private key and create a new wallet using it. The new wallet will show you your funds and you'll be able to send them to a correct address.


How to use the bitcoin client without downloading the blockchain?

Electrum is an SPV wallet which has most of the functionality you mentioned.

Multisig is an issue though, the primary solution I'm aware of at this time is hybrid wallets such as Copay.


How are "message signatures" verified without having access to the public key?

When signing a message (as opposed to signing a transaction), the signature contains additional information needed to recover the public key using the signature and the signed message.  The recovered public key is then hashed and the result compared to the address.  If they match, the message was signed by that address.


How do I set up a Lightning Node on Mainnet using windows?

Try Eclair.

It has a nice GUI, runs on Windows, and just a few days ago they have announced a new version that officially supports mainnet usage.

It requires a Bitcoin Core node to runs alongside it, and a little configuration.


How to fund a bidirectional payment channel?

In your scenario you would like to create a payment channel with user 1 and 2 contributing (on-chain) and receiving (off-chain, in the payment channel) the following amounts:

User 1: 2 btc
User 2: 1 btc

To open and fund the channel accordingly, you therefore create the following funding transaction:

Input 0: 2 btc from user 1
Input 1: 1 btc from user 2
Output 0: 3 btc to 2-of-2-multisig(user 1 + user 2)

Before this funding transaction is broadcast, we also need a first commitment transaction, which captures the initial channel balance state you described:

Input 0: Spends 2-of-2 multisig output of funding channel.
Output 0: 2 btc spendable by user 1
Output 1: 1 btc spendable by user 2

(Each party receives an asymmetrically designed commitment transaction, but we will omit the differences for simplicity sake.)

Once both funding and the initial commitment transactions are signed, the funding transaction must be broadcast, to "secure" or "commit" the funds to the channel. The commitment transaction is only broadcast to close the channel and deliver the most recent channel state to the Bitcoin blockchain.

To answer your question, we now have an open channel, which is both funded by the two peers and reflects an initial channel balance according to the funding contributions (2:1 btc), which can be updated by revoking/updating the commitment transaction.


When backing up a wallet, is it required to shut down the bitcoin client?

The Bitcoin client's RPC interface provides a wallet backup command. It's "backupwallet <filename>".


It depends, do you want to run a full node and store the entire blockchain? You could run Litecoin Core: https://github.com/litecoin-project/litecoin. There are other implementations/installation options as well.

For an example of a project with a wallet, explorer, and full node, see:

https://github.com/litecoin-project/litecore

It implements:

Node - A full node with extended capabilities using Litecoin Core
Insight Lite API - A blockchain explorer HTTP API
Insight Lite UI - A blockchain explorer web user interface
Wallet Service - A multisig HD service for wallets
Wallet Client - A client for the wallet service
CLI Wallet - A command-line based wallet client
Angular Wallet Client - An Angular based wallet client
Copay - An easy-to-use, multiplatform, multisignature, secure bitcoin wallet


would universal use of arbitrage bot stabilize the market?

Yes, and I recommend researching market making algorithms.

The problem is that verification and confirmation times are high, so the spreads or at least trade fees will remain wide until that problem is fixed.

Yes, it's by design, but it's an economic problem, and wide spreads are the economic result.


so how many possibilties for 3 random missing words?

You have 21 words, out of 24. Therefore, 21 of 24 slots are taken, but not necessarily correctly.
There are 2048 possibilities for each word.
The first word can go into one of any 24 positions, therefore 2048*24. The next in any of 23, and the last in any of 22.
This gives you a total of 2048 * 24 * 2048 * 23 * 2048 * 22, or 2048^3 * 24 * 34 * 22.
That's a total of 154,206,505,795,584 possible combinations. While not impossible to compute, at a reasonable rate of 100,000 attempts per second, you'll be able to try them all in just under 50 years.
This task is highly parallelizable, so you could likely cut that down significantly if you can obtain enough hardware. Even simply knowing the locations of the missing words cuts down the brute force time at 100k guesses a second to just under a day.


What is the character limit for sending an Ardor message to another account?

The character limit for a non-prunable message is 160 characters, but if its prunable it is max 42K.

Find the api parameter:
messageIsPrunable=true


Please investigate for the reason of no confirmation. Over 2 day zero confirmation. Fee Paid. Please help!

Your fee is 58.928 sat/Byte. Looking at the current backlog and https://bitcoinfees.21.co/ this might take a while. What wallet did you use to send it? You can try your luck using https://www.viabtc.com/tools/txaccelerator/


I assume you want to integrate it into a P2PKH tx.
You would have to base58decode the address, and then remove the checksum and the network byte. Then you can integrate it into a P2PKH tx in the std. way:
76 A9 14 <20 Bytes> 88 AC
I have two references with some code examples in C and python, that helped me at the time, when I had the same question :-)

https://bitcointalk.org/index.php?topic=1543429.0
https://bitcointalk.org/index.php?topic=1026.0

and some online "play tools" to verify:

http://gobittest.appspot.com/Address
http://lenschulwitz.com/base58


Does exist some library for decode/encode raw transaction?


Bitcoin client IRC - a potential network weak link?

They'd have no problem finding peers for several reasons:

Once the client finds a single peer, it can get a list of peers from that peer.
The client has a built-in list of about 500 peer IP addresses known to be stable.
The client knows several DNS names (such as bitseed.xf2.org and dnsseed.bluematt.me) that resolve to lists of Bitcoin peers.
The client stores peer addresses in a local database.

In fact, IRC has been removed from the Bitcoin client since 2013.


Transaction failure due to "made-up" transaction

Unless you are using modified software, your software will not allow you to create such a transaction.

Even if you succeeded at creating it, the transaction is invalid. Invalid transactions don't get relayed on the network, so your recipient would never learn about it.


How to see download sync speed when syncing the Bitcoin 0.17.1 Blockchain on Ubuntu 18?

If you care about overall sync performance, the download speed is usually not the bottleneck.

If you want to calculate your pure download speed, you can use getnettotals. There is a value totalbytesrecv (amount of bytes received since the Bitcoin Core instance has been started).

You can calculate the speed by reading the sync start time out of your debug.log (or you eventually wrote down the sync start time manually).

But be aware that the CPU intense validation of blocks may have (very likely) throttle your download.


Withdraw bitcoin to Philippine bank account

Currently, the list of exchanges in the Philippines includes https://buybitcoin.ph/ and https://coins.ph/. Both of those allow you to sell Bitcoin and have the proceeds deposited as PHP into your bank account.

The way the process works is that you send Bitcoin from your wallet to the wallet of the Exchange, where it gets sold for PHP.

https://www.coinxchange.ph/ will be opening soon.  Disclosure: I'm an employee of CoinXchange.


What is the api function call to access NXT's Data Cloud feature?

You can download your file using this API

localhost:7876/nxt?requestType=downloadTaggedData&transaction=nnnn&retrieve=true

where nnnn = Txid of your uploaded file

You can search txid for all your uploads using requestType=getAccountTaggedData&account=NXT-XXXX-XXXX-XXXX-XXXXX

where NXT-XXXX-XXXX-XXXX-XXXXX is your account number

If your localhost is not hosting prunable data, retrieve from a public node which is a Service Provider (with PE & AI listed under Services) in your peer's list.

Examples:

Retrieve all Txids of all uploads for account NXT-TBAJ-LVLX-YCWY-5FRLD
23.94.134.161:7876/nxt?requestType=getAccountTaggedData&account=NXT-TBAJ-LVLX-YCWY-5FRLD

Download PGP key of Core Dev
http://23.94.134.161:7876/nxt?requestType=downloadTaggedData&transaction=633908232195174623&retrieve=true

Full set of API for Nxt Data Cloud can be found at
localhost:7876/test?requestTag=DATA


What is the format of coinbase input scripts?

A coinbase transaction is characterised by "previous_output" field of the transaction being 32 bytes of zeros and 4 bytes of 0xFF. It should be the first transaction of the block, but I'm not sure whether all the clients enforce this rule. The signature script of the coinbase transaction need not obey the Script protocol, but as far as I remember the first block's script pushes data onto the stack and then pops it off. The data encoded in the Genesis Block represents the famous headline of Times:

  The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

And was used as a way to prove that the block was created no sooner than on 2009 01 03, but can also be speculated that it relates to Satoshi's intent when creating Bitcoin - to counter debt-driven currencies.


People with 86 million dollars generally don't need to ask this.
People who have been tricked by con-artists are the sort of people that usually ask this.
That looks like a "blockchain" wallet.

How to unlock private key of bitcoin

If you have forgotten a password needed to "unlock" your wallet, you have lost all your bitcoins and will either never get them back or will spend many months and tens of thousands of dollars in the attempt.
If you are having problems with your account at blockchain.com you need to contact blockchain.com. They are a Luxembourg company. See https://support.blockchain.com/hc/en-us - If you have been tricked, they won't be able to help you.

I  need help on how to get the private key

You can follow the guidance on blockchain.com's support web-pages
Exporting the private key. The example given is for Ethereum but you should choose "Bitcoin" instead.
If your wallet doesn't have a private key for the bitcoin-address holding those 86 million dollars worth of Bitcoin, it means you have a watch-only address imported into your wallet.
If someone tells you that you need to pay them to release the private-key, it means they are a con-artist tricking you into giving them more money.

Backups
If you were not tricked but didn't make a backup of your wallet and a written backup of your password, private key or a written backup of your recovery phrase, and have lost or forgotten them -- you have been very negligent.
Recovery may be very very difficult, time-consuming, expensive, or quite likely, impossible.
Scams by con-artists
If an online friend/miner/consultant set this up for you, it means you are the victim of a scam.
If so, it is quite possible that the money you are looking at is money in the wallet of some innocent third-party whose bitcoin-address has been imported by a scammer into your wallet as a "watch-only" address. In which case it was never your money and any money you sent to the scammer was pocketed by them completely separately.

Useful Links
Some other questions whose answers might be helpful in understanding your situation.

Watch-only addresses

Watch only wallet
Reg: Watch only Address
I have watched addresses in my wallet..how do i use them?
Unlocking a Private Key from watch status

Private keys

i lost access to my bitcoin
Why were private keys made unrecoverable?
Where do I obtain private keys?
How to retrieve unclaimed BTC for wallets whose private key is lost

"Unlock private key"

Are there Bitcoin password crackers I can use to recover forgotten passwords?
I forgot my bitcoin core passphrase. Is there anyway I can recover?


It not possible to identify the person behind a wallet address. Maybe the address is written on a personal website or something like that. But if it isn't there's no way to get more info about the person behind that address.


Transaction verification by miner VS full node with & without SegWit

Do full nodes have any incentive to validate transactions they're not directly benefiting from?

Yes. If they did not validate all blocks and transactions, they could end up on a blockchain fork which could be facilitated by an attacker. Validating all blocks and transactions allows them to be sure that the node is on the right blockchain.

  How often do full nodes actually validate transactions?

For new blocks and transactions, all the time. Every single new block and transaction received by a node is fully validated according to the node's consensus rules. During the initial blockchain sync, transactions and blocks are only partially validated (signatures aren't validated) up to a certain hard-coded block hash, and only if that block hash is part of the best header's chain.

  If a full node wanted to validate a transaction but the miner didn't broadcast the witness as part of the new block, who would the full node request the signature from? As far as I understand, there are plans to do witness "pruning" in the long-term to minimize the size of the full blockchain, but what enforces keeping the signatures around in the short-term?

Segwit nodes will always ask for the block with witnesses. If a block is sent to them without witnesses even though witnesses is asked for, the block will be considered invalid and the node that sent the block will be temporarily disconnected from the node and banned. The same goes for transactions, but without the disconnect and banning IIRC. To always ensure that a block comes with a witness, a segwit node will never request a block from a non-segwit node.


The offline bundle actually doesn't have a signature inside the deb file. You can see this by extracting the bundle as you did:

$ tar xvzf armory_0.92.3_offline_ubuntu_12.04-32.tar.gz

Now you can check the contents of the .deb file

$ cd OfflineBundle
$ ar vx armory_0.92.3_ubuntu-32bit.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz

If you download the armory_0.92.3_ubuntu-32.deb file directly, you can see that it's a little different

$ wget https://s3.amazonaws.com/bitcoinarmory-releases/armory_0.92.3_ubuntu-32bit.deb
$ ar vx armory_0.92.3_ubuntu-32bit.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz
x - _gpgbuilder
$ dpkg-sig --verify armory_0.92.3_ubuntu-32bit.deb
Processing armory_0.92.3_ubuntu-32bit.deb...
GOODSIG _gpgbuilder 821F122936BDD565366AC36A4AB16AEA98832223 1412393663

dpkg-sig needs the _gpgbuilder file to check the signature against the contents of the package. The Offline package doesn't have this file while the direct download does.

I would suggest you grab the direct download and place that file in the OfflineBundle directory after verifying the signature if you're concerned about some sort of man-in-the-middle attack.


What if a country 100% denominated in a cryptocurrency loses internet connectivity to the rest of the world?

I am just guessing here given the little I know about bitcoin and distributed databases.
This comes down to the how CAP theorem applies to the bitcoin blockchain DB.
CAP theorem states that it is impossible for a distributed computer system to simultaneously provide all three of the following guarantees:

Consistency (all nodes see the same data at the same time)
Availability (a guarantee that every request receives a response about whether it was successful or failed)
Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system)

As far as I can tell it is not consistent. And will handle partitions for a short period.
(and you could argue that long periods of partition will break availability of some transactions)
Details of what I think might happen:
(If every one plays nice and someone makes a few tweaks to the software it will come back online)
The bitcoin protocol has (in simple terms) two sets of data that it transmits/stores.
One is the block chain which is the authoritative order that transactions occur in.
The other is a gossip of the transactions.
First of all transactions would gossip around the islands network, but they would not get confirmed. Even if there were miner nodes on the network. This is because the difficulty would be very high.
The chance of the miners on the island of finding a block would be very low. So the confirmations of the transactions would probably not occur.
The difficultly is only adjusted every 2016 blocks. But as the miners on the island can not find a block the difficulty will not change. The confirmations would become stalled.
Basically if every one trusted 0 confirms and didn't double spend (hint: that is not going to happen) you could carry on as normal (assuming your software will let you spend 0 confirmed transactions)
This could lead to the network collapsing.
However if someone changed their mining software to mine at a much lower difficulty I think the network could start confirming again.
Normally this would not work as then bitcoin network would very quickly drop your block in favour of a longer more difficult one. But since you are in a partition you would win (for now)
Lets assume the miner who modded his software didn't try to make any double spends (which he would only be able to with the money he has before the partition, and there are enough miners so there are not any 51% atacks.
2016 blocks after that the network would readjust the difficulty (to the sum hashing power of the pool) and every thing would hopefully stabilise.
Ok all seems fine the partitioned island network would carry on.
That is until then partition is reconnected. (Dun dun dunnnnnnnn)
At that point two things would happen.

A longer more difficult block chain would replace the island block chain as the authoritative chain. This would wipe out all of the island confirmed transactions.
The island nodes would start gossiping the transactions that had occurred on to the other (newly connected) main partition.
This is assuming that, between all of the islands nodes, some of the software had a full copy of the gossiped transactions.

I think it would take the same number of blocks as the longest train of island transaction for all of the island transactions to be confirmed on the network.
Every thing back to normal???
Yes (insert Lost reference) as long as no one got off the island; with their bitcoin wallet.
If some one made a transaction from their wallet on both the island and on the main network,
then their transactions on the island would be seen as invalid (like a failed double spend).
But that would also mean that anyone the island who had made a transaction based on that failed transaction would find that their transactions would also be invalid etc etc. In other words that one double spend transaction would be poisoned.
Also any coins mined during the partition would also be poisoned.
Everyone's wallets along the poisoned branch(s) would revert to the balance they had just before that poisoned transaction.
You could check for those poisoned transactions with some offline copies of the block chain; before you reconnected the partitions.
This would make for an interesting set of norms, for your islands culture:
Your island's economy would depend on the (threat of the) death penalty being applied to anyone who tries to make offshore double spends (or spend coins mined on the island).
(Miners could still make money through transaction fees)
The import of mining rigs would fetch huge quantity of bananas and coconuts (as that would be the only thing you would have left to barter with internationally (Since you no longer have a national currency and can't trade internationally with bit-coins) :P


How is the USD price on Binance calculated since there is no USD involved in the whole exchange?

There are USDT markets in binance. If you are unaware, USDT is backed by USD and binance can use their own market's USDT value.


Lightning payments: peer versus channel (LND)

To be more precise in order to be able to pay on the lightning network you need to have at least one channel with another node.

This other node does not have to have a direct channel with the person you are about to pay.

A mandatory condition for you to pay a node is that there is a path consisting of payment channels from your node to the recipient. That path must not be longer than 20 hops. In practice it will be much shorter.

However having such a path is not sufficient. Every node on the path needs to have enough liquidity in their channel to forward the payment. This condition is not possible for you to proof before selecting the path (and a reason why in practise when routing payments several paths will be tested or a payment might fail anyway)

In particular you don't need to be connected to the recipient. Only thing that currently has to happen is that you need to get an invoice from the recipient but also that could come to you over an arbitrary medium of communication including pen and paper.


Why is the privacy for using watch tower services increased with unpredictable commitment tx ids?

Actually, the BOLT has been designed with very strong privacy properties with regard to watchtowers. You can give all your commitment tx id first halves to one watchtower and it still doesn't learn anything about the second halves, others txs or anything else about the state of the channel (or which channel it is watching at all), as long as the full commitment tx doesn't show up on the blockchain. Once it does, it still cannot learn anything beyond this one commitment state. That's what this is done for and it is rather remarkable IMHO.


It seems that XPT protocol was developed by ypool.net and there is no official specification of it.
But it is possible to get details from the source code of xptMiner or xptProxy.

You can start from https://github.com/jh000/xptProxy/blob/master/src/xptProxy/xptClient.cpp


What are the most comprehensive APIs for cryptocurrency market data?

Most exchanges offer API solutions for market data. Here are some examples:

GDAX
Bittrex
Kraken
WAVES DEX

CryptoCompare has an API that aggregates data from many exchanges, and they also offer many query parameters. Link: CryptoCompareAPI

Additionally, many block explorers provide APIs for blockchain account information.
This ZChain Playlist shows how to use PowerShell to query the ZChain ZCash block explorer API.


Generating additional change addresses manually in Electrum

I found that in Electrum, you can create additional change addresses by using the console and typing:

for i in range(0, 100): print wallet.create_new_address(True)

where 100 is the number of change addresses to create. The True means a change addresses is created, while False creates a standard receiving address. The problem is solved now :)


What is the value of k which produces r=1 ?

It's impossible to know that. If you could derive r for arbitrary values then ECDSA would be fundamentally broken. The best you can do is grind k until you get an r that happens to have a short encoding.
For the sake of the exercise:
k: 55573144136627188774517374788342221967869962622835886499477787746883063622036
r: 771676860789419846973923839003663416737624455477806040640071960112246091

This nonce will be slightly smaller than most when encoded, but of course if you attempt to use it in a signature you have exposed your private key. If you generate this secretly you can only use the k value once and the result might be at best a couple of bytes difference in the encoded transaction.
It hardly seems worth it to be honest.


How do I reduce the Bitcoin transaction fee?

Yes, use Send Coins > Options > Fee to select one of three fee levels. The actual fee is dynamic and depends on the byte size of your payment. Use

Priority if a payment is urgent
Normal if you want confirmation roughly within the next hour
Economic if you don't care about confirmation times (mostly if you're sending to another wallet of yours)


You can use bitcore explorers module to use Insight send transaction and get utxos data.

Check further https://github.com/bitpay/bitcore-explorers


Can my exchange recover BCH sent to a BTC address that existed pre-fork?

In principle, Luno can claim these coins, but you cannot.

There is no distinction between BTC and BCH addresses.  They each use addresses generated from private keys in exactly the same way.  Money sent to an address, on either chain, can be spent by whoever holds the corresponding private key, and by nobody else.

So Luno created an address (call it 123abc) which means that they hold the corresponding private key (call it 567fgh).  It's immaterial whether they created the address with the intention of using it for BTC or BCH (or both), or whether they created it before or after the fork, or whether it has been used before or after the fork (on either chain).

You sent BCH coins to 123abc (i.e. with a BCH transaction on the BCH chain), and so Luno is capable of using their private key to spend those BCH coins (again on the BCH chain), if they want to.  Of course, they can also choose not to spend them, if they prefer not to, or find it too much trouble to adapt their software to do it.  And even if they do choose to use them, you have no way (other than legal action or something similar) to force them to send those coins back to you, or to give you any sort of credit in exchange.

Unless of course they deleted the private key.  If so, then the coins would indeed be lost, but the same would be true of any BTC coins sent to that address.


How to work out the balance for an HD Wallet extended private key?

I have since found out that you can only use the bitcoin core to find addresses that are generated in the bitcoin core wallet.  You can add external addresses to the wallet, but then you need to re-index.  Code changes are in the works to add addrindex=1 to the config, which will index your local chain for all addresses.  Alternatively, you can use a block explorer website API service, or run Insight on your own chain.  So, no easy answer.  Probably best to use website APIs initially, and updated bitcoin core in the medium term.


When does the main client relay its knowledge of TXs in INV message?

ThreadMessageHandler2() calls SendMessages() every 100 seconds, which causes inv messages to be sent to the client's peers.

One peer is picked at random to receive inv messages which reference all the pending transactions that we know about and it doesn't, including the ones we created ourselves.  The rest of the peers receive a inv messages which only reference around 25% of the pending transactions that we know about and they don't, not including any of the ones we created.

A comment in the code explains that this "trickling" of transaction inventory is to protect privacy.

Edit: I just noticed this thread which also describes the process of advertising transactions.  Luckily it agrees with my description here.


How can I recover a electrum wallet with passphrase and keystore file?

Is there a way to recover a electrum wallet without the seed?

To recover the wallet you need either

the password/passphrase of the wallet and a good backup of the wallet  or
the seed phrase which is sometimes called a recovery phrase or backup phrase.

Since you have neither, you cannot recover the wallet.
Many scammers will contact you and offer to help, but they will just steal money from you.

It is sadly too late for you, but anyone else reading this should take note of the advice offered by user-guides for wallets like Electrum:
See  https://bitcoinelectrum.com/creating-an-electrum-wallet/

Before you begin
You will need to download and install electrum first. You can download it from here. If you are on Windows you should use the installer version and not the portable one.
You will need a pen and a notebook (recommended) or piece of paper to write down the seed mnemonic. The notebook will have to be kept somewhere safe once you are done with the installation process so it can’t be a notebook that you use on a day to day basis.

...

Electrum displays the seed to you as a 12 word mnemonic. It’s important at this stage to write down the seed in a notebook. You must put it down on paper. Don’t keep it on your computer!

Also write down “Software: Electrum” in your notebook below the seed mnemonic. You wouldn’t believe the number of users who forget what software they used!

(my emphasis)


What version of python is required to install electrum-ltc and electrum-dash in amazon linux instance?

Your likely missing the libusb dependency.  Electrum doesn't spell it out in their repo, but I always build it with trezorlib and it explicitly requests it.  Here's what I got to work.

sudo apt install python3-dev python3-pip cython3 libusb-1.0-0-dev libudev-dev python3-pyqt5
sudo -H python3 -m pip install --upgrade setuptools pip
sudo -H python3 -m pip install https://some-path-to-tarball


Just restart bitcoin qt and wait a while - for me always work


How effective is the blockchain algorithm?

how could it be that there are no collisions ?

There are.

  I wonder how effective this process is ?

Very ineffective. ~$10 natural cost for securing one transaction :)


bitcoincore banned all peers and I can't to sync

Peers can get blocked for multiple reasons

sending too many invalid blocks
sending too many malformed messages
using too much bandwidth (e.g. your maxuploadtarget setting)

and probably others.

There are logs which may be helpful and you can review available options

-banscore=<n>
Threshold for disconnecting misbehaving peers (default: 100)

-bantime=<n>
Number of seconds to keep misbehaving peers from reconnecting
(default:86400)

-whitelist=<IP address or network>
Whitelist peers connecting from the given IP address (e.g.
1.2.3.4) or CIDR notated network (e.g. 1.2.3.0/24). Can be
specified multiple times. Whitelisted peers cannot be DoS
banned and their transactions are always relayed, even if
they are already in the mempool, useful e.g. for a gateway


Do Miners have to get below the Target or the Bits value?

Below the target value that corresponds to the bits field in the block.


Add an Address with Label to Send Coins Address Book via a RPC call

If you want to add a label to an address that is used to receive coins, you best use Accounts. Later you can fetch balances of individual Accounts and see which orders have enough confirmations.

If you want to add a label to an address you send your coins to, use "comment-to" field in an RPC call that creates the transaction.


This happens when your dependencies get twisted up, especially when bcoin has an update where leveldown gets upgraded. You should be good with a npm rebuild leveldown to fix the dependency tree, but if that doesn't work rm -rf node_modules && npm i


Yes, there is a number of organizations and projects that accept Bitcoin donations.

The above linked list includes political parties (e.g. Libertarian Party in the US), at least one church (St. John's in Goshen, NY), a score of open-source projects, as well as a number of charities and other causes.


Blockchain.info and fetching transactions for a address between dates

im looking at the same thing what you will find is that rawadddr only gives you 50 transactions not the full list, if the address has more than 50 txns you have to use limit and offset to go through the results pages of txns like paging through pages of search results, use &sort=1 so that it sorts oldest first that way if new txns come in while you are looping through the indexes wont get bumped up

you will have to get all the txns, loop them and look at the timestamp to see if it fits in the range blockchain.info cant give you what you want directly i dont think, of you will have to page through till you hit your date range and then keep paging till you get to the end

the api from blockcypher.com pages by block height which is not time but i think is closer to time, if im right and you stored the times that blocks got confirmed in a look up table you could call your date range through finding if the block was confirmed in the time range, if there is more than 50 txns it has a has_more attribute that you can use to page through and the set wont shift on you

https://www.blockcypher.com/dev/bitcoin/#address-full-endpoint


Is a wallet a necessary part of a transaction or is it just a way of collating multiple addresses?

Wallets are just a convenient way to store/back up multiple private keys (corresponding to multiple addresses).

  Once an address has money in it, do I need to collate all the money together in a central account?

Not really - you can spend money from multiple addresses in one transaction.


Transaction shows up as sent, but was never recieved

I just had to run getrawtransaction on the transaction ID (from the transaction list) then run sendrawtransaction on the result.


Mining: what is the lowest possible target? Could it be a block hash of all zeros?

The retargeting every 2016 blocks is computed as follows:

previous_target * (T2-T1) / (20160 minutes)

Where:

T2: timestamp of previous block
T1: timestamp of block at current height - 2016
Target adjustment bounded to factor 4

Ignoring the target adjustment limit: For the resulting target to be zero, T2-T1 would need to equal zero. That would require an infinite amount of hash-rate. Therefore we can approach your scenario, but never reach it.


Is it 'safe' to store hashed values of my mnemonic seed phrase on my computer?

The outputs of hash functions cannot be reversed. So what is the point of storing the hash of your seed? Perhaps you mean an encrypted version of your seed? That would be storing the ciphertext of your seed. You could do that but just so you know there's already an encrypted version of your seed stored in your wallet file. Otherwise there would be no way for the wallet to sign spending transactions.


When mining, does one also include Merkle root data into block header when testing for hashes?

[…], mining works by first hashing block header, appended with some bits and testing whether the resulting hash satisfies difficulty requirement.

Yes, although it's actually just the block header that is being hashed. One part of the block header is the nonce that allows to try 232 different possible block headers for the same block template. Another part of the block header is the Merkle root of the transaction tree, which must be recalculated when the extra-nonce in the coinbase transaction or the transactions included in the block template are updated.

The Merkle root has to be included in the block header because that's what cryptographically ties the transactions to the block in the first place.

No miner can predict whether a particular set of transactions would give them an advantage to find a block quicker, because the only way of doing so would be to try out all the possible options, which is exactly what they are doing anyway when they are mining. This follows from the hashing algorithm being based on a cryptographic hash function. If it weren't true, the hash function would be broken.


Yes, Dash should continue using the same HD index as Darkcoin. Only the coin name is changed.

So 5h is the correct HD index for Dash.


Compressed or uncompressed for brainwallet?

Brainwallet.org doesn't make this terribly clear: choosing a compressed versus an uncompressed address is not choosing between two different versions of the same address, but rather two different addresses based on the same secret exponent. Sending bitcoin to one address will not be accessible by the other, as they are technically independent. With that in mind, we can address your second point first:

Will I see the coins? Of course! You can see everything that happens
on the block chain.
Would I be able to spend them if I saw them sitting in the other address? No. Unless you have access to the private key for the other address, you cannot spend the coins.

As for the first point, it really depends on whether or not your client supports signing transactions with compressed private keys. Your client will always be able to receive coins at the public address, but it may not be able to process a compressed private key and thus not be able to spend with it.

Here's some info on popular clients that might be helpful:

BlockChain.info --
Currently, if you try to import a compressed private key into blockchain.info's web app, you will get a warning that they key will not be usable to create transactions on the mobile app. So, if you need to make payments with their mobile app, don't use compressed private keys. Although their web app, should work fine, even if accessed from mobile.

Bitcoin (Android - Andreas Schildbach)--
Andreas Schildbach Android bitcoin client, on the other hand uses compressed private keys. Although they are normally hidden from user, there is a (somewhat convoluted) way to import and export private keys into the app and out of the app. So, if you are making payments with this app, you can use compressed private keys. (Note: I'm actually unclear as to whether or not you can import uncompressed keys into this client, so compressed keys might actually be mandatory here.)

Armory --
I don't believe that the Armory supports importing of private keys at this time. So, if you're planning on using this, you must use uncompressed keys.

As for your third point, I would suggest remembering your chosen option just in case the clients you wish to use doesn't support it compressed keys. That way, you have a good idea of what's going on in case making a transaction fails.


There is not mutch you can do. The easiest solution would be to wait until the transaction confirms.

Your transaction is not eligible for Replace-By-Fee. With RBF it's possible to replace a transaction by nearly the same transaction just with increased fee. To indicate RBF the sequence of one of the inputs needs to be lower than MAX_INT - 1 (in dec: 4294967295 - 1 or in hex: 0xFFFFFFFF - 1). You can check that for your transaction here.

Since you mentioned that the transaction is to an other address of yours, you could try Child-Pays-For-Parent. This works by spending the unconfirmed transaction output in a new child transaction with much higher fees to pay for the parent transaction and its self. This depends on your wallet software.

Here would be a guide for Electrum.

I the end it comes all down to the patience you have. Your transaction will confirm eventually. I would not advice somebody without technical expertise to experiment with different wallets and export/import private keys, just because the transaction does not confirm.

Fee estimation is still a difficult topic, especially in times with many transactions waiting to be confirmed. It's nearly impossible to say that a transaction will confirm in the next 19 hours.


When an attacker publishes a longer chain, does Bitcoin Core emit a warning?

When a previously unknown chain fork of at least 7 blocks length is published, how does Bitcoin Core react?

It reorganizes to that chain, any transactions that were lost are returned to the nodes mempool.

  Would Bitcoin Core accept the chain fork if it had the most work?

Any valid chain with the most work will be reorganised to.

  How prominent is the warning to the user?

That warning isn't shown to a user in a reorganisation. Users are shown a warning when there is a significantly higher chain than them with valid proof of work but invalid contents, or alternatively when a soft fork takes the block version number higher than their client is aware of. When a warning is shown to a uiser through the alert system, it is either in the alerts field of the RPC output or in a small yellow bar in the GUI client.

  Does Bitcoin Core need manual intervention to decide which fork to accept?

The code has the rules, if users made their own decisions about what constituted "valid" the network would fragment. There is no concept of an "evil" chain or an "attacking" chain, only the best chain.


The OP_RETURN is in the scriptPubKey, which is signed as part of the transaction, so it can't be altered. So it is not malleable.

The known types of malleability are described in BIP 62.


Is it possible to skip verification of blockchain data when using bitcoin core?

I just wanna save my bandwidth

Running a node in pruned mode will not save you bandwidth during the initial block download (sync), you still need to download all blocks and validate them, even if you don't store them longer term (pruning lowers disk space requirements). You can fine-tune your data upload limits in the bitcoin.conf file though.

Most RPC calls will work with a pruned node, some will not though. From a quick search for some examples, see:

https://github.com/bitcoin/bitcoin/blob/v0.11.0/doc/release-notes.md#block-file-pruning

https://github.com/bitcoin/bitcoin/blob/v0.12.0/doc/release-notes.md#wallet-pruning


Since the Whatsminer models aren't as common as some miners you probably will have to contact the whatsminerd company and ask them.


Why is the supply of Bitcoin not pegged to its demand?

GDP (and most other stats you would think to use for this) can't be accurately determined by the network without trusting someone. The network can only see the movement of BTC; it has no information about non-BTC currencies, goods, or services. For GDP, some centralized organization would need to figure out the the real amount of spending in the BTC economy. The network can't just look at the total BTC transaction volume to figure this out, since someone could send BTC to himself in an undetectable way in order to inflate the volume stat.

One of Bitcoin's primary goals is to be decentralized, so it can't rely on a central authority. Therefore, the money supply needs to be set according to some algorithm that looks only at raw Bitcoin transactions and blocks. Satoshi chose to make the supply asymptotic because he thought that this was basically how gold worked, and gold has thousands of years of history as good money.

By the way, GDP would be a poor statistic to use for determining the demand for BTC. You'd want to use the price of BTC relative to a currency or good. If it could be done without changing any of Bitcoin's other excellent properties, I think that Bitcoin would be better if 1 BTC was guaranteed to buy you 1 oz of silver. But this is probably impossible for any decentralized currency that's even remotely similar to Bitcoin.


Started a Wiki page on this topic.

So far I`ve found mentions of 3 different Bitcoin-related malware:

Infostealer.Coinbit - steals wallet.dat
DevilRobber Trojan - mines Bitcoins
BKDR_BTMINE.DDOS - performs DDoS attacks on miners


JSON RPC: Fatal error: Uncaught exception 'Exception' with message 'Request error: Array'

After investigating, it turns out that the problem lies with the dimecoin wallets in built max money variable, which is capped at 10 million. as you may know, this functionality only affects the maximum size of a transaction, not the actual money supply.


I made a good tutorial on how to setup the antminer or any bitcoin miner to antpool using the gui. Here is the link to the video:  Hopefully   it helps!

How to setup Antminer S9, or any antminers GUI to Antpool set mining pools in under 8 minutes for 2018!

https://youtu.be/o8op00b7_RM


How are Electrum addresses connected to my private key?

how did Electrum create a new address?

Electrum, and most modern wallets are Hierarchical Deterministic (HD) Wallets. They derive a series of private-keys from the "master private-key".
If you always start with the same seed phrase you get the same master private-key. Electrum uses its own unique method for seed phrases. Most wallets with seed-phrases use a different method described in BIP-39
If you use the same "derivation path", your wallet will always generate the same sequences of private-keys (that is the "deterministic" part) from the master private key.
Different wallet developers sometimes use different derivations-paths. But many of the wallets these developers produce allow the user to specify the derivation-path as part of initial configuration - this allows for compatibility between wallets.
For each private-key there is a public-key. Each public-key corresponds to a Bitcoin-address (in the commonest types of Bitcoin transactions).

References

Electrum Seed Phrases

Bitcoin Improvement Proposal 39

Deterministic Wallets

Bitcoin Improvement Proposal 32

Extended keys


Did Satoshi ever acknowledge that his name was a pseudonym?

This post is the closest to an acknowledgement that is was a pseudonym as can be found:

"I am not Dorian Nakamoto."

http://p2pfoundation.ning.com/xn/detail/2003008:Comment:52186

http://www.forbes.com/sites/kashmirhill/2014/03/06/bitcoin-creator-returns-to-internet-to-say-i-am-not-dorian-nakamoto/#613499a67f43

The above quote was made in response to the Newsweek story falsely outing him as Dorian Nakamoto (birth name Satoshi Nakamota).

http://mag.newsweek.com/2014/03/14/bitcoin-satoshi-nakamoto.html


Is there a good guide to convert a Bitcoin Core Wallet to Bitcoin Cash (on OSX)

The first paragraph in the answer to this question applies in your case (possible duplicate question?). As you run a full client (Bitcoin Core) it's easy, as Bitcoin Cash has equivalent apps which are forks of this. I used Bitcoin ABC.

I used a separate machine for the Bitcoin Cash wallet. It may be possible to run both on the same machine (with different data directories - see this issue) but despite being called 'Bitcoin ABC.app' if you try and install it on the same machine as one with Bitcoin Core, you will get a message offering to overwrite the latter. Comments on how to accomplish this on one machine are welcome.

Backup Bitcoin Core wallet (~/Library/Application Support/Bitcoin/wallet.dat) to a USB stick (we'll transfer it later). This is the key do, which of course you will have done already
On the second machine download Bitcoin ABC from bitcoinabc.org. Currently it is the .dmg file in the osx directory. I expect they'll improve the UX to have an easy Mac-specific download button soon.
To get the blockchain to sync either just run Bitcoin ABC until it does (it'll download a chain similar in size to the Bitcoin Core one i.e. - 150GB+) or copy the legacy part of the chain (common to both coins) from the Bitcoin Core data directory. As OP comments, a Time Machine or other backup is perfect for this. I'll update this answer if someone can comment on exactly how to do it without one, as ideally you'll need most of the contents of the blocks and chainstate directories - up until just before the fork date; 1 August. You'd then only need to sync since then.
Overwrite the new wallet.dat file Bitcoin ABC created (same location as above) with the one from step 1.
With both apps synced you should now be able to send/receive BTC/BCC independently of each other from the relevant app - i.e you now own both. Should you come down on one side of the fence & sell all of either you can of course remove it's app, data directory & return the spare/borrowed machine.

In terms of dont's, you should ignore any advice to export/mess with your private keys - especially is someone offers to claim your BCC coins for you if you send your keys..


What are the hex and asm field values in the JSON decoded from a raw transactions?

asm refers to the de-serialised form of the script, with well-known tokens parsed as script tokens.

hex is just the serialised form of the script in hex encoding.

If you compare them carefully, they are essentially equivalent.

For example:

OP_DUP OP_HASH160 f9d49c5cf3e120ad1be60b67d868603a8fc945d2 OP_EQUALVERIFY OP_CHECKSIG

76 a9 14 f9d49c5cf3e120ad1be60b67d868603a8fc945d2 88 ac

76 is OP_DUP

14 is the number of bytes to be pushed onto the stack.

and etc...


Transactions are broadcasted by anyone in the system and at random intervals. Which transactions, of all the ones broadcasted, are included is very dependent on the miner, as he/she is the one who groups them up and includes them in the block. As Nate noted below, there is also a 1MB block size limit which limits how many transactions can be included in a block. This limit is to prevent huge blocks that clog the network and may be removed if the number of transactions in the network ever grows such that the limit is a serious factor.

Good miners accept all transactions with the standard 0.0001 BTC fee (which is mainly a spam prevention measure). Bad miners are selfish and avoid including transactions to decrease their propogation time. For example, look at this block to see an example where a miner didn't include any transactions except for their own reward transaction.

If you look at https://blockchain.info/ then you can see how many transactions are included in each block.

As far as priority goes, again it depends on the miner, but in general miners like bigger fees and smaller transactions and may prioritize them that way.


What positive effects can Quantum Computers have on the Blockchain technology and hence Bitcoin

A couple very hypothetical examples:

Quantum channels: These channels allow wiretap resistant transmission of data. Bitcoin users can share secret information such as keys over quantum channels in such a way that any wiretapping would be detectable.
Database queries: Quantum computers can search through a database in time O(N^(1/3)). This could potentially speed up lookups in a blockchain. Say I want to transactions that correspond to my public key. For one billion transactions this can be done in only a thousand steps (ignoring gigantic constants probably).
Quantum simulation could perhaps lead to better hardware so that's always nice.

However, the biggest real impact that quantum computers have right now on cryptography and thus cryptocurrencies is something different: They encourage cryptographers to explore new and interesting schemes and cryptographic assumptions. The study of these new assumptions and schemes could lead to more useful cryptographic tools which we couldn't build from other assumptions. The prime example for this is fully homomorphic encryption which can be built from ideal lattices. These lattices were first used in cryptography to build quantum resistant cryptography.


Does bitcoin mining pool hash randomly and separately

Most mining pools use the stratum protocol. Part of this protocol includes a field for part of the extraNonce, named extraNonce1. The extraNonce is just extra data that is put in the coinbase transaction and used as a nonce in addition to the block's nonce. Each mining worker can then append their own extraNonce to extraNonce1. This second part is named extraNonce2
Typically what mining pools do is they issue work to each worker with a different extraNonce1. This allows the worker to use the entirety of the nonce field as well as their own space for extraNonce2. The submitted work can also be identified to belong to a particular worker by examining the extraNonce1.
I'm not sure how specific mining pool software determine what extraNonce1 to give out, but an obvious method would be to do so sequentially - each time work is issued, extraNonce1 is incremented so that each worker gets something different to work on.


Okay, so it's been a while since I've played around with BitcoinJ but the problem might be that you need to rebuild your BlockStore file. A BitcoinJ application is essentially made up of four main objects, a BlockChain object which is responsible for parsing and validating the actual blocks, a BlockStore object which is responsible for saving this data, a PeerGroup object responsible for actually getting this information from the bitcoin network (in the case of your regtest example it simply connects to your localhost bitcoind node), and a Wallet object that actually holds that data about the public/private keys you are interested in.

You are using WalletAppKit which is a boilerplate class BitcoinJ offers to bootstrap all of this for you. It creates a BlockChain object and relates it to an SPVBlockStore object that is related to a PeerGroup object which is itself related to a Wallet object. If you look at your /tmp/bitcoinj location I believe there should be two files, one a wallet file for saving the information about your addresses and the other a spv file that has a bunch of information saved about the blockchain. The SPV method that BitcoinJ uses doesn't actually download and verify the entire blockchain, it uses a more streamlined system (which you can read about here: https://en.bitcoin.it/wiki/Thin_Client_Security#Simplified_Payment_Verification_.28SPV.29). The SPV file doesn't hold any information about transactions, and if you want to get any information about an address from a previous point in time you have to rebuild this file and effectively force BitcoinJ to reparse the blockchain.

You should try deleting this /tmp/bitcoinj.spv file (I believe that the naming convention of BitcoinJ for WalletAppKit is two files with the path you specified with different file extensions but you might need to verify) and allow it to be rebuilt knowing that it should look for all activity on those watched addresses. Then you'll want to save that wallet to disk so that you don't need to reconstruct the SPV file again.


Digging into debug message: "socket recv flood control disconnect (x bytes) "

In the Bitcoin protocol each message is prefixed with a message header that, among other things, contains the message length (more precisely the payload length). The length field is an unsigned integer 4 byte (or 32 bit) in length. Therefore it is perfectly ok to specify payloads of length 2^32 bytes = 4 GB.

Since you wouldn't want to download 4 GB just to find out that it was an error in the other sides implementation or the peer was trying to feed you junk on purpose the mainline client added an arbitrary limit to the size of messages it accepts.

According to net.h this limit is 5'000'000 byte or a bit less than 5 megabyte. The message that caused the error and subsequent disconnect is just a little bit over that limit. Maybe you could look up which peer, or even better which client version, caused the error so we can inform the developers about it.