What did Gavin mean when said minimum fees would be automatically suggested?

Yes, this has actually been going on for a longer time, and it is expected to arrive in the next (0.10) release.

Citing Gavin:

  Instead of using hard-coded rules for what fees to pay, the code observes how long transactions are taking to confirm and then uses that data to estimate the right fee to pay so the transaction confirms quickly– or decides that the transaction has a high enough priority to be sent for free but still confirm quickly.

In practice, you'll be able to select the priority of your outgoing transaction and the fees will be calculated accordingly, taking the current "market situation" into consideration.

Once implemented, it will no longer be necessary to dictate or suggest the optimal fee centrally, as it is now.

You can read more in the original article by Gavin Andresen.


How does the Bitcoin Standard Client wallet encryption work?

You only need the passphrase to do certain things like send bitcoins or change the passphrase.

The encryption itself is attached to the wallet.dat file which contains

keypairs for each of your addresses
transactions done from/to your addresses
user preferences
default key
reserve keys
accounts
a version number
Key pool

and if you ever want to switch your wallet or add the same wallet to a different computer, this is what you would actually be making a copy of. And because this is the file that's encrypted your passphrase will move along with it.

You do not need a password to make a copy of it, but making a copy of it, doesn't give you access to the coins. Unless your using a hosted wallet, then you need to make copy of your wallet yourself. Put them on a flash drive or another computer, or maybe even in a safety deposit box.


settling timelocked contracts based on amount of time elapsed in Lightning network

Such a functionality is currently not implemented and as far as I understand not intended. You can look at Discreet Log Contracts which where intended to solve CFD (Call for difference) contracts for example with cross asset swaps and changing exchange rate within the timelock period. We have a proposal how they could be transfered to lightning. That being said this would mean severe protocol changes and also computation of many signatures. Yet I think a similar construction could be applied for your usecase.


What is the exact difference between a Bitcoin and Bitcoin Cash raw transaction to address sighash_forkid?

Bitcoin Cash changes the sighash preimage to the one that is used by segwit. This is specified in BIP 143. OP_CHECKSIG on the Bitcoin Cash chain must use this new sighash preimage creation algorithm, but OP_CHECKSIG on Bitcoin uses a different sighash preimage creation algorithm (the original one), so they are incompatible with each other.

The SIGHASH_FORKID is an addition to the sighash type and simply means that the sighash type must have bit 6 set.


Is split possible in bitcoins (like in stocks)?

No. And that would be even more confusing. You would have to synchronize the split, and for historical prices you would need to know if they were old BTC or BTC after first split, second split etc... Just use mBTC, uBTC, satoshi, or even fractions of the smallest unit if need be.


I have posted an answer regarding the code in the stackoverflow question, but if you just want the raw (or sample) data for either BTC/ETH/LTC from Bitfinex or HitBtc, you can head over to my website at www.cryptodatasets.com.
All the data is free, and gets updated every day.


how to get a seeed wallet in bitcoin-cli?

Bitcoin core wallets are deterministic by default i.e. all private keys are derived from a seed. However you can make sure that your wallet is deterministic by running the getwalletinfo command. In the response hdseedid  will only be set if it's an HD wallet.
Bitcoin core does not encode the seed as a mnemonic of english words. To create a backup of the wallet use the backupwallet command.


How to find wallet details with bitcoin address?

The only way to access bitcoins on a given address is by remembering the private key of that address. There are several ways of encoding those (WIF, Base 58, etc).

Also, maybe you have access to the seed of a wallet from which you can regenerate the private address, that could be in the form of a mnemonic phrase (12, 24 words or such)


electrum windows client, standalone executable versus windows installer

The Windows Installer will install the executable in "Program Files", create shortcuts and other registry entries. The Standalone Executable is exactly that, just an executable to run the Electrum program.
Benefits of Windows Installer would be ease-of-use for those most familiar with installed programs, plus it will be available to multiple users (whether that is desired or not, is another question). Benefit of Standalone is don't create registry entires (cleaner) and don't require raised privileges (as not installing globally).

In either case - user-specific data will be saved in C:\Users\USERNAME\AppData\Roaming\Electrum

There are some more details in this blog post


How to get unspents for inputs using bitcoinjs-lib?

I would like my simple wallet app to automatically select UTXOs for inputs. I realize that I can't accomplish this with just bitcoinjs

I assume that you are not creating a SPV wallet. In this case,

  is there something I can add to it to keep track of unspents?

No. You have to check if there are UTXOs on your address to be spent even if you store them on your app. Because these UTXOs you stored on your app might be spent by another wallet.

  is there a way to use some sort of API to automatically select unspents?

Yes. This website offers some APIs to select UTXOs with different cyptos( Bitcoin, Litecoin, Dogecoin, and Dash).


How chaining the blocks protect against altering data?

Merkle root is a part of the block header and is calculated based on the transactions included in the block. If transactions in the block are changed, it would change the merkle root in the header. If the merkle root is changed, the block header will change and the header hash which was calculated initially will no longer be valid.

  When a node receive a block, how it verifies it (just rehashing the header, or recalculating merkle root first then rehashing the header)?

When a full node receives a block it performs various checks to ensure the block conforms to the consensus rules. This includes checking that all the transactions in the block are valid. If any particular transaction is not valid, then the entire block will be rejected by the full node. After verification of the transactions, the full node would verify the merkle hash. Then full node will look at the block header and verify the timestamp rule, previous block hash, and other components and then calculate the block header hash and check if it is less than the target. If one of the verification rules fail, the node will reject the block. You can find a complete list of block verification rules here.


Which Bitcoin exchanges allow anyone to fund your account by a bank transfer?

In the U.S. there is the ACH bank network.

Coinbase is currently the only service allowing bitcoin purchases to be paid for with a transfer from a bank using the ACH network directly.

Mt. Gox and Camp BX use Dwolla which is an intermediary which allows funds to be drawn from a bank account through the ACH network.

I'm unaware of any exchanges whose policy is that it will accept a domestic or international bank wire without that coming from your own account.


Why is there a higher fee for re-used receiving addresses?

When you have an address with multiple inputs (you have sent bitcoin to the same address multiple times) and you want to send all of those bitcoins to another address, all of those inputs must be included in the transaction, and recording each input takes up space. If you have only sent bitcoin to an address once, it only has one input, therefore the transaction only needs to contain one input, which takes up less space.


agregate bitcoin addresses with tiny amounts into single wallet

The only way to "aggregate addresses" is to create a Bitcoin transaction which spends all of the coins from those addresses to another one. Of course if you just want to send to an exchange, just send all of your coins to an exchange as aggregating will incur an additional transaction and thus transaction fees. Most wallets have some function which allows you to send all of your coins, so just use that to create a transaction which sends all of your coins to the exchange.


A share is a proof of work at the expected difficulty, and can be used in the scope of the pool or of dogecoin.

The difficulty is rather straightforward, if the difficulty goes from 10,000 to 20,000 it becomes twice as difficult to find a block on that network. Pools will accept shares at lower difficulties (say difficulty 1) expecting certain odds on that share being a valid block (in the case of 10,000 difficulty the odds of a difficulty 1 share being a valid block are 10000:1). There are various methods of computing how to pay out rewards for such a share, I will use Bitminter as an example, which like the pool you describe uses rounds to payout, which is referred to as a PPLNSG (Pay Per Last N Groups, or shifts) style pool.

A round will last until a certain expectation of finding a block is met, with bitminter, when a block is found, you are paid proportionally to your shares against those of others in the pool for the last 10 rounds, with a round duration of 0.4 or 40% of the difficulty. If bitminter was a dogecoin pool and doge difficulty was at 10,000, a round would last 4000 difficulty 1 shares. Whenever a block is found, you will be paid for the amount of difficulty 1 shares you submitted over the last 40,000 submitted in the pool.

The numbers change from pool to pool but hopefully this gives you a little idea on how it works. For more info on other pool payout schemes, check out the top of this article: https://en.bitcoin.it/wiki/Comparison_of_mining_pools


What is the difference between the bitcoind command line options "addnode" and "connect"?

addnode add a node to the list of nodes to connect.
connect only connect to THIS node.

For example, if you are currently connected to the nodes {A, B, C} and then issue…

addnode=D: you'll be connected to {A, B, C, D}
connect=D: you'll be connected to {D}


How can I benefit by running a full Bitcoin node?

No, full node operators are not compensated in any way. If you run a full node, you will receive no monetary benefit.

However running a full node does benefit you. It means that you are contributing to the network's security. Your full node is verifying and relaying valid blocks and transactions so you are contributing to the transmission of blocks and transactions and ensuring their validity. This then corresponds to your node contributing to the health of the network and helping the network stay alive.

Furthermore, a full node allows you to have privacy and security in your transactions. Because a full node fully verifies every block and transaction, when you use it as a wallet (or have a wallet that is connected to it), your transactions are guaranteed to be valid and there is almost no possibility that you can be defrauded (assuming that your node is well connected). It also gives you more privacy as there is not one server or node that is giving you data as with SPV wallets.


If you're on Amazon AWS try this:

setsebool -P httpd_can_network_connect 1

I had the same problem and it took me hours to figure out that the server was blocking connections. I thought it wasn't the problem because my AWS security group allowed it. But apparently the server was blocking it directly.


How can GDAX pay no fees while transfering Bitcoin between wallets?

GDAX is a centralized exchange, they don't actually transfer the Bitcoins between wallets. They have a database that associates every account with how much Bitcoin they are worth.This is why transferring from Coinbase to GDAX is free, because it is the same company running both platforms.


Best way to send Dogecoins and view wallet balance with Python?

I actually wrote a program that does this for an IRC tipbot.

Essentially you need to do the following:

Start the command-line dogecoin server by doing ./dogecoind -server. I'm not sure if the dogecoind file is available for OS X. See here
Import the library: import dogecoinrpc
Open a connection in your python program: conn = dogecoinrpc.connect_to_local()

Now you can do the following:

Get account balance with conn.getbalance('joe', minconf=4)
Get total balance with conn.getbalance('',minconf=4)

In these examples, minconf=4 tell it it only return the balance that has 4 or more confirmations

Full list of API calls here. I know it says Bitcoin, but the API is the same


Why was finding a hash beginning with a certain number of zeroes chosen as the proof of work?

It reuses the HashCash construct invented by Adam Back (a scheme for proving work was done to send an email, resulting in it being treated as less spammy by spam filters), though with a newer hash function and different header structure.


Can I Replace An Old Wallet.dat File In Bitcoin Core Before It Fully Syncs?

I assume you are cleanly shutting down bitcoin-core before you overwrite wallet.dat.  This is absolutely a requirement.  You can't replace an open wallet file while bitcoin core is running.
#1 - Yes, you need to complete the initial block download to see the contents.  Since you already download some blocks before the wallet born-on date, you will need to issue a rescan to look for wallet transactions before the block your currently downloading
#2 - You can always see the keys of the wallet regardless of how far the download has gotten, but you won't get the balance until the download is complete.  Once you have all the blocks you can do everything offline, but of course it won't see TXNs in blocks that you haven't grabbed since going offline.


How soon does bitcoind incorporate locally solved blocks into its 'getwork' output?

Bitcoin won't wait for its peers: your block will be considered the latest block in the chain once it has been processed. I'm not sure whether it's safe to say that the second RPC call will always reflect the existence of the new block, though, since Bitcoin is threaded and things might not be done in the exact order you expect.


What is the most reliable way to calculate the amount of fiat value that has been transferred into the bitcoin economy?

I'm pretty sure you'll never get an accurate number. I'm not even clear what you mean by transferred into the bitcoin economy.

If I bought $100 worth of bitcoins 3 years ago, do we count that as $100 or the value of the BTC now?
If I buy a bitcoin for $100 cash (using localbitcoins), send it to my friend (who immediately converts it to $100 USD), how do we account for that? If I do that transfer millions of times, can we say that BTC has "Millions in cash invested" even though there was only ever $100 at a time?

Your best bet is to just add up the aggregate transfers on all the exchanges, and call that "GDP" (and you may never be able to account for non-public transactions like localbitcoin or private exchanges). Just like GDP, you will necessarily over-count what's really happening. (For example, my transaction "I buy shoes" is actually counted as "I buy shoes, the shoe seller buys the shoes, the shoe maker buys leather, the leather maker buys a cow, the farmer buys cow food, etc."


Actually, that is exactly what happens, and it is the reason why synchronizing the block chain is so slow: we download all blocks, with all transaction history in it, and build and maintain an index that states which transaction output was spent or not, and even where it was spent.

As of 0.8, the reference client will switch to a new model where no such index is maintained anymore. Instead, it will maintain a copy of the set of transactions, but only with their not-yet-spent outputs, which is much smaller than the full data (around 150 MiB as of writing, december 10, 2012).


Crypto Exchange that Offers Withdrawal to Banks in Saudi Arabia

I want to know if there's any other alternative to it.

Bisq
If no offers exist. Create offers. Users run the client on their machine, create their offers, decide their peers, No KYC and you have the keys and everything is decentralized including disputes.
If any issues use the links mentioned in the bottom-right of the website:


Why are p2sh and CHV forward-compatible but not backward-compatible?

Requiring everybody to upgrade is just not realistic for such a small feature.

And clients must already rely on miners to fully validate transactions, because it is always possible a transaction they think is valid is actually half of a double-spend. Never accept 0- or 1-confirmation transactions unless they are from somebody you can trust.


How is the balance of a Bitcoin address quickly calculated?

At the protocol level, Bitcoin has no concept of "balances" or "addresses", and their common interpretation isn't relevant during verification.
Every transaction spends "coins" and reforges them into new "coins" (called UTXOs). Every UTXO has a value (in number of satoshis) and an locking script. UTXOs are always spent in their entirety. If you only have a 1 BTC UTXO and want to send 0.1 BTC to someone, your wallet will under the hood create a transaction that has one input (your 1 BTC UTXO) and two outputs (one 0.1 BTC UTXO with an locking script created from the receiver's address, and one 0.9 BTC UTXO with an locking script you can unlock yourself). From a protocol perspective, there is nothing special about this UTXO that goes back to yourself (called a "change output") - it's just another UTXO.
Transaction explicitly identify which previous coins they're spending, based on the txid that created them, not based on the locking script. So it doesn't matter what the sum of the values of UTXOs with a particular locking script is; coins are spent when they're mentioned as an input in another transaction. That means the only thing that matters is:

Do the input UTXOs exist?
Is the sum of the input UTXO values (whether they have the same locking script or not) not less than the sum of the values of the newly created UTXOs.

Now, sites like blockexplorers do show balances. They're a higher-level - and misleading - abstraction. They do this by simply maintaining an index per address of all transactions that have the script corresponding to that address as locking script, and all transactions that spends such outputs.
Wallets for privacy reasons construct new addresses all the time (typically one per incoming transaction), as there is no cost to creating more addresses. Looking at it from a per-address perspective is therefore misleading, and has caused people to lose money (when they think "X is my address, I only need its private key" - you need the keys to all addresses, even change addresses, your wallet uses).


Selling copies of blockchain database on disc

Is this legal under the terms of the GPL?

Bitcoin Core is distributed under the MIT license which explicitly allows this.

The content would essentially be the Bitcoin data directory (minus the wallet.dat of course), and, if possible, the client. Users could insert the CD, install the client, and have the entire blockchain as of the date the CD was published.

This is not recommended. Beyond modifications to the software (which can be caught with signatures) distributing a raw synchronized database is very vulnerable to tampering. The unspent outputs database can be silently modified to include non-existing outputs which the user would be likely to discover until it is too late. With knowledge of the people running a corrupted database an attacker can fork those users off the network very at their leisure, or if they accept zero confirmation transactions the victim can be directly defrauded at nearly no cost.
When a bootstrap.dat was distributed as a faster way for users to sync with the network it was always completely verified to avoid this type of attack.

Users could insert the CD, install the client, and have the entire blockchain as of the date the CD was published.

From a feasibility perspective this would actually be 60 CDs, or 7 DVDs at the time of writing.


How does the Lightning network work in simple terms?

Say, you and I want to open a payment channel.

1) Putting funds into Lightning
We both send 0.05 BTC into a shared 2-of-2 multisig address. This requires a transaction on the Bitcoin blockchain.
As a "balance sheet", we each create a 2-of-2 multisig transaction that pays out 0.05 BTC to you and 0.05 BTC to me. I sign one payout transaction and give it to you. If you want to put it in effect, you need only add your own signature and broadcast it to the Bitcoin network. Vice versa, you give me your copy of the payout transaction that you have signed and I have not yet.

These "balance sheets" are regular 2-of-2 multisig transactions in the Bitcoin network, they're just not valid yet, because they are each missing one signature. Note that these unilateral payout transactions lock the paid out funds of the executing party for some time.

2) Payment
Now, I want to pay you 0.01 BTC. We each create a new payout transaction ("balance sheet") as before, but this one says that you get 0.06 BTC and I get 0.04 BTC. Each of us gets a transaction signed by the other to that effect as before.
To make sure that neither of us can use the old payout transaction the other signed previously, we each create an "anti-cheat" transaction: It's a transaction that spends the outputs from our first payout transaction to the other.

I.e. when I try to activate the (now obsolete) 0.05 - 0.05 BTC balance sheet, my paid-out funds are locked for a number of blocks. This gives you time to broadcast the "anti-cheat" transaction in which I signed that my 0.05 BTC output gets send to you.

Still, it's safe for me to give that transaction to you, and the whole network, because the "anti-cheat" can only be activated as a response to the fraudulent use of an old balance sheet. By the way, this anti-cheat mechanism is why Lightning needs the Transaction Malleability fix from Segregated Witness.
With the setup as described above, I'd have to be online to catch you trying to cheat, but obviously it wouldn't be safe for me to keep payment channels open if I had to remain online all the time. So, to encourage others to help with the "anti-cheat" transaction, we set a small portion of the "anti-cheat" payout as a bounty that anyone can spend. Now, we can entrust the anti-cheat transaction to all nodes on the network, so everyone can watch for old balance-sheets being broadcast. When it happens, anyone can sign the bounty to themselves and broadcast the "anti-cheat".

3) Network payment
Alright, now you and I can send money back and forth thousands of times, with almost instant effect (depending only on how fast we can communicate with each other) without adding a single transaction to the Bitcoin blockchain. Yet, on the other hand, if one of us ever tried to defraud the other, they would be instantly taken to court by having the dispute resolved on the blockchain to their own detriment. Pretty spiffy, but not terribly useful yet.
By the theory of six degrees of separation, everyone is connected to any other participant by only a few hops.
Let's say you want to send money to Bob, who is a barista and just made you some coffee. Bob is a friend of Alice, while I have a Payment channel with Alice. For illustration purposes, let's assume that each payment channel has two BTC in it, split equally. You do not have a direct connection to Bob.

Our "network" now looks like this:

   You <-- 1BTC ----- 1BTC --> Me <-- 1BTC ----- 1BTC --> Alice  <-- 1BTC ----- 1BTC --> Bob

Now, since you don't have a direct payment channel to Bob (and it would be very inefficient if you had to create a payment channel with every business partner you ever meet), you route your payment through the network. Instead of only writing an update of the balance between Bob and you as I described above, this becomes a concerted effort: Your wallet finds a route from you to Bob that has a) sufficient liquidity, b) least fees, and c) fewest hops. To make a payment, each involved payment channel updates its balances. With a payment of 0.01 BTC for the coffee, this updates our network to:

   You <-- 0.99BTC ----- 1.01BTC --> Me <-- 0.99BTC ----- 1.01BTC --> Alice  <-- 0.99BTC ----- 1.01BTC --> Bob

As you can see, the balances at the ends have shifted appropriately from you to Bob, but the other participants have the same balance (although shifted to other payment channels). It's important to realize, that the transaction can only go through completely or not at all. Either we all update the balances, or no one does.

Now, imagine that you don't have only the one payment channel with me, but you have maybe a dozen payment channels with other users! :)

4) Consensual channel closing
Other than in the above case where one side closes the channel unilaterally, one of us can request the other to consensually close a channel. When we agree, we create a final payout transaction together that doesn't lock any funds and allows immediate spending after confirmation. We could even use this transaction to spend some of our balance directly to a third party on the blockchain, or to create another different payment channel.

5) Trade-offs

You cannot receive more money through Lightning in one transaction than the sum of your payment channels' values.
Your transactions don't get stored on the blockchain for eternity, (i.e. better payment privacy), but on the other hand you keep using the same address allowing users that know who the address belongs to to monitor your balance (less personal privacy).
Instant transactions! But your money is locked up in a payment channel, which you first need to execute on the blockchain if you want to do a regular Bitcoin transaction with the money.
Less fees! Transactions on Lightning don't require a full blockchain transaction fee, but if you route through others' payment channels, they might want something for the liquidity they provide to you. However, as other Lightning nodes are competing to transfer your payment for you, this is likely to be much lower than a full transaction fee on the blockchain.

Further reading:

How is a node in the middle prohibited from keeping the money in a routed Payment in Lightning network?
What are the trade-offs between transacting on LN and Bitcoin mainchain?
How are paths found in Lightning Network?


Could not connect to Bitcoin RPC server outside local host using bitcoind-0.18.0

You need to explicitly bind it to 0.0.0.0 by using rpcbind=0.0.0.0

Read Andrew Chow's detailed response: Can't reach remote bitcoin rpc server


On a practical level, how exactly is the amount of a Bitcoin transaction fee determined?

Bitcoin transaction fees are usually calculated based on the size (in bytes) that the transaction takes up. This is a number known as 'fee rate', usually written as 'satoshis per byte', and the idea is that you are bidding for space within a block, where most miners will select transactions with the highest sat/byte fee to prioritize for confirmation. The average fee rate according to Bitinfocharts is about 97 sat/byte, meaning for each byte the transaction takes up, you add 0.00000097 BTC in fees. You can probably get away with using anywhere from 50-100 sat/byte and have your transaction confirmed within a reasonable amount of time. The value of the transaction in BTC is completely irrelevant.
If you're handling many withdrawals, often, service operators will batch the withdrawals of multiple users together into a single transaction to save on fees, by generating a transaction that has many outputs, one for each user's withdrawal. Alternatively, you could offer deposits and withdrawals through the Lightning Network to minimize fees.


Which parameters in the Bitcoin Core config file need to be set correctly prior to IBD?

To my knowledge, the only parameters that have to be set before an initial block download are the regtest and testnet options.

Anything else, including txindex, can be altered later, although it may cost you a reindex or reindex-chainstate to enable functionality like a txindex if done after the block download has started.

Other parameters such as those governing the RPC, peers, and wallets can be quickly updated at any point.


Sending coins without wallet just address

By wallet i am assuming its not on exchange. And by coin i am assuming you are talking of Bitcoin. So if your coins is stored in bitcoin core qt wallet then you can reuse the private key to sign the transaction.
So if my assumptions is correct than you can go to debug console in your QT wallet and type

dumpprivkey XYZ

where xyz is your address which you are saying you know it.
Once you have your private key with you you can use API

1) createrawtransaction [{"txid":txid,"vout":n},...] {address:amount,...}
2)signrawtransaction  <hexstring> [{"txid":txid,"vout":n,"scriptPubKey":hex},...] [<privatekey1>,...]
3)sendrawtransaction <hexstring>

checkout apis available in Bitcoin to know more.


Is there a future plan to make the fees lower ?

Fees is decided by users and will work the same way. Transactions are prioritized based on fee rate by miners.

Will BTC block size increase

It's already increased after segwit (August 2017)
What's the blocksize limit after segwit and how do legacy nodes deal with segwit transactions?

We could really use a Little bigger block while also developing lighting network

As I mentioned above, blocksize is increased and it's not size anymore but weight.
A major problem with simple approaches to increasing the Bitcoin blocksize is that for certain transactions, signature-hashing scales quadratically rather than linearly.
https://bitcoincore.org/en/2016/01/26/segwit-benefits/


What key derivation function uses Electrum / how generates private key?

Key derivation from seeds is standardised across wallets - Electrum specifically follows the BIP32 spec for key derivation.

Looking at the security aspect, a set of 12 words and 2048 words to choose from results in log2(2048^12) = 132 bits of entropy. If I've done my maths right, this is equivalent to a 22 character long completely random alphanumeric password.

A 256 bit bitcoin private key has 128 bits of entropy, so an electrum 12 word seed is about as secure - it is essentially impossible to crack through brute force.

  Apparently to me, it looks like generating the key from a limited set of words would be less secure than doing it from a free-passphrase

I'm not sure of any wallets that use a passphrase to derive keys - usually a passphrase is used to encrypt a set of private keys, as opposed to deriving them from scratch. For example, in Bitcoin Core, the private keys are randomly generated and then the passphrase is simply used to encrypt the file storing them on disk.

The benefit of using a seed-based derivation approach (such as in Electrum) is that the seed is enough to restore all the associated private keys. Otherwise, every private key for every address would need to be backed up and kept secure.


partial signature (of P2SH) in Bitcore. howto?

Found out here:

var signature = tx.getSignatures(privKey)[0].signature;

gives you the signature associate with the private key!


How to calculate coin supply at each block height from all transactions?

The first transaction in every block is called the coinbase transaction, it is a special transaction that pays the miner their reward. This transaction adheres to different rules than the rest: it has no inputs, but has output(s).

The coinbase transaction outputs are allowed to be equal to or less than the block subsidy (newly minted coins) + all transaction fees in the block.

The block subsidy is a set amount, as defined by the code. The subsidy started at 50 BTC, and that amount is cut in half every  210,000 blocks (25, 12.5, 6.25, etc).

The transaction fees for the block are found by taking the rest of the transactions in the block (ie everything that isn’t the coinbase transaction), and calculating the difference between the inputs and outputs in them. This value (input value - output value) is the implied fee.

Note that there are some odd cases to account for, this question has a bunch of great info in this regard.  in addition to this, there is a non-zero amount of BTC that has been ‘burned’, by being sent to addresses or scripts that are un-spendable, or at least have an extremely small chance of someone actually knowing the private key for them (eg the 1BitcoinEater... address). Depending on how you define ‘coin supply’, it may be worth account for these coins as well.


Yes, PPLNS is protected against pool hopping. That is the purpose of PPLNS. If it  wasn't then pools would use proportional payouts rather than PPLNS.

Yes, there is luck involved. There is ONLY luck involved. That is how it is pool hopper safe.

If you were able, at the time you do some work, to know whether that work would be paid well or poorly then you could abuse the pool with pool hopping. But with PPLNS you just have to wait and see - you can't know in advance.

There are some (very vocal) people who say they can pool hop PPLNS because they can tell the future. Don't be one of those guys. Educate yourself.

If you want to know the details of mining pool reward systems then  I suggest reading Meni Rosenfeld's paper on the matter. See https://bitcoil.co.il/pool_analysis.pdf or https://arxiv.org/abs/1112.4980

Also see What is pool hopping?


When should proof-of-work be done? Does it involve in mining a coin? Can it be done without real transactions to be recorded?

I also understand that a proof of work involves finding a value (nonce) that would meet a zero bits requirement when hashed.

The nonce is a value that a miner can change. It is one part of a block. The other parts are block headers and transaction details. The hash is of most of this, not just the nonce. The hash must be less than the current target "difficulty".

Am I right saying that bitcoin mining is to find such a value that would satisfy the zero bit requirements when itself only is hashed, or one that results in the required zero bits when the value itself and the transactions chosen, the previous hash, and other relevant items are hashed all together?

The latter.
As I mentioned, the comparison is not the number of leading zero bits but a normal numeric comparison. The hash must be numerically less than the target.

If the latter is right, would finding a coin to create a block be only possible once there is a real transaction occurred?

A block can contain no real transactions other than the so-called "coinbase" transaction which pays the miner a mining reward.
Including other people's transactions allows the miner to collect and claim the transaction fees. SO there is a financial incentive for the miner to include transactions.

If this is true, what is it people mining bitcoins are doing? Are they actually creating and circulating a block in a peer-to-peer network with real transactions?

Yes.

If not, am I correct to think that they can be random people who use available computing power to find nonce values that meet the zero bit requirements and sell them to real owners of the nodes in a peer-to-peer network who use them to create blocks from their nodes.

No.


Improvements that could be made to how bitcoin propagates its transactions and blocks?

The answer partially depends on on what you mean by "how bitcoin propagates" and "improvements"-- Fibre transmits blocks vanishingly close to the lowest latency possible, but at the expense of using extra bandwidth. It doesn't seems likely that significantly greater protocol wise improvement to latency is possible, beyond more widespread usage of it.

BIP 152, avoids the bandwidth waste, but doesn't achieve quite as as low a latency by default.  The bandwidth usage of BIP152-like transmission could be improved further, but improvements seem kinda pointless: Right now with BIP-152 blocks are transferred with an average of 11802 bytes each... I have code that reduces it to about 550 bytes/block on average, at considerable CPU expense. But who really cares about saving 1.54 MB/day against a >>288MB background (transaction data) except perhaps for specialized applications like satellite transmission that use their own protocols?

On the other hand, transaction relay clearly has room for improvement. The existing approach is not very efficient especially for nodes with many peers. The issue there is that to be robust against malicious peers nodes announce all transactions to all peers. Transactions are announced by sending short hashes rather than whole transactions, but this still results in a ton of duplication. Effectively Bitcoin nodes use O(peers*transactions) bandwidth for tx relay, the use of short inv hashes only shrinks the bandwidth a constant factor (of 10-ish). A long time back I proposed using set reconciliation (also described on the forum post above in less detail) to make the relay of lose transactions more efficient without compromising robustness. Gleb Naumenko, Pieter Wuille, and I have spent much of the last year designing and implementing practical protocol based on this idea and should have something out somewhat soon.

Relay can also be improved in ways other than bandwidth efficiency. E.g. There have been several recent efforts to improve the privacy of TX relay, including the outbound peer grouping in 0.17 and the ongoing work on low fanout relay in dandelion.


Current Bitcoin symbol: Who designed it, when and why?

The very first icon (created by Satoshi) is visible here:
https://bitcointalk.org/oldSiteFiles/images/screen3.png

Satoshi later updated this using the B with two vertical strokes
https://bitcointalk.org/index.php?topic=64.0
http://i.imgur.com/D6pj0.png

He never posted much about why he chose this symbol. It was not in use before Satoshi put it in the logo.

The current Bitcoin-Qt logo was created by bitboy:
https://bitcointalk.org/index.php?topic=1631.0

This logo replaced Satoshi's old one when the bitcoin.org GUI was rewritten from wxwidgets to Qt by Wladimir van der Laan. I don't think there was much discussion about it.


19 out of 24 words of BIP39 passphrase (brute-force last 5?)

You have three options here:

Using a GPU implementation of the Gurnec´s Seed Recovery script
Use Hashcat / JTR, where PBKDF2-HMAC-SHA512  is already implemented.
Use brainflayer, similar to Gurnecs software, no multithread, no GPU.

Gurnec´s script runs at aproximately 40kh/s under my i7-8700k without OC. So if you only had lost the last 4 words of your seed, it will be 2^36 hashes.

2^36 h / 40.000 h/s = ~ 20 days

So it will take roughtly 3 weeks to test every combination.

But to crack the last 5 words of your seed it would take 2048 * 20 days.

On the other side according to the benchmarks PBKDF2-HMAC-SHA512 hashes at a 4.800 kh/s under a usual 8 x 1080´s rig so it should be possible to recover in several days the 5 missing words.

tldr; Implement GPU in btcrecover or brainflayer or understand how to make it work under Hashcat. Up to 3 words + checksum word doable in CPU, more need GPU.


Why dont' nodes change the block version number when the nonce overflows?

Block versions are modified as part of other use cases, such as BIP 9, which use specific bits in the block version to signal for specific proposed updates to the protocol. Incrementing the block version and treating it as a nonce would prevent this kind of use.

Moreover, using a version field as a source of randomness (not really, but similar enough when talking about nonces) is generally a bad idea - version fields serve an important role in helping other nodes on the network determine how to decode and process a block, or other entity within the blockchain. Turning this into an effectively random number for the sake of saving a handful of cycles would just be a plain bad design choice.

Recomputing the merkle tree by just modifying a single tx within is a relatively fast operation regardless, since you only have to recompute the nodes affected by that tx.


You must import your wallet into another wallet program like Electrum. There is no solution and Multibit support will not answer your ticket or email, as they ignored me as well.


Yes. There is nothing OS-specific in wallet.dat file.


I am from Germany and know a bit about the tax situation here.

If gains < 600€ in 1 year, then you don't need to pay taxes. You also don't need to pay taxes if you hold the Ether more than 1 year.

But you still have to include it into your tax report ("Steuererklärung").


Does anyone have a formula for adaptive blocksize?

You must have read this article and are looking to implement dynamic block size limits. You should know that it's not just a simple formula though that only affects one piece of code, it's more complicated than that.

I know of a few coins that have done this. Monero, Cryptonote, and ziftrCOIN. The latter is the one I am the most familiar with, so I'll explain how the solution works.

First, the block size and chain size is added to the block index. Then, whenever the tip of the chain is updated, the code checks, once every 3 months, to see if both:

The average block size is greater than 2/3 of the current limit.
The median block size is greater than 1/2 of the current limit.

If both are true, then it allows the maximum block size to increase by 10%. If this happened regularly for 2 years, the maximum block size would approximately double.


What is the longest time gap between blocks in 2010 - 2011?

I wrote a program that extracts the blockchain into an SQL database and ran a query. The answer is that block 152218 followed block 152217 after a delay of 1 hour 39 minutes 7 seconds. This was the longest inter-block interval in 2011. There were many longer interval in the early history of the blockchain, often multiple hours or days.

Edit: I also find it interesting that there have been 78 blocks where the inter-arrival time was less than one second.


Are there alternatives for proof of work?

A really quick answer is this: The proof of work system is a solution to the distributed synchronization issue; in another guise it is called the Byzantine Generals' Problem. Thus, any solution to this problem is an acceptable alternative, however the proof-of-work solution is particularly suited to distributed systems.

You can read Satoshi Nakamoto's discussion of this here.


How is the "N" in PPLNS chosen? 2xDiff appears to make no sense - OR - Why are Scrypt share difficulties off by a factor of 65536?

An AntMiner L3+ submits a share at difficulty ~150,000 (which counts as a share value of 150,000 then) every ~15 seconds, so in 3 minutes, that one AntMiner has already filled the whole "N" of 900,000x2=1,800,000. That would, in reverse, mean that I would expect to mine a BitConnect block every 90 seconds on average, with one AntMiner, which is of course not true.

I don't think that is how shares are counted. According to this Bitcointalk post,

  When a share is submitted, assign to it a score of 1/D, where D is the difficulty at the time the share is submitted.

So in your scenario, when your AntMiner L3+ submits a share, that share is assigned a score of 1/900000, so its "share value" is 2, not 150000.


5gpu 2psu scrypt mining rig shuts down 1hour later

My brothers machine was doing this also. We fixed it by pulling a card. The motherboard was pulling too much power under load.


Can the outputs of transactions with duplicate hashes be spent?

Updated as my earlier answer was wrong

Quoting from BIP 0030:

  Blocks are not allowed to contain a transaction whose identifier matches that of an earlier, not-fully-spent transaction in the same chain.

  This rule is to be applied to all blocks whose timestamp is after a point in time

This means that a transaction can have the same hash multiple times as long as it's always spent first before the new transaction is created.

As for the older transactions: they are valid but the network won't let you spend them because the implementation in the reference client won't let you.


Confused about UTXO management and consolidation

UTXO management is not a singular goal. instead, it's a method for balancing multiple priorities, including privacy, short-term fee savings and long-term fee savings.
Having lots of UTXOs is probably better for privacy, especially if they're each in different addresses. But like you said, that will cost more in fees if you want to send your entire balance.
On the other hand, having all your bitcoin in one UTXO is probably not best for privacy or security.
Coin Control is a feature of some wallets, that allows users to directly control their UTXO management strategy. Wallets that don't use coin control make those decisions for the user instead, so Coin Control is usually best for advanced users who know what UTXO management strategy they want.


Does a low profit margin on mining reduce the integrity of the blocks stored in the transaction history?

All that is needed is a number of miners sufficient so that a consensus of bad actors gains control to disrupt the blockchain doesn't happen.

Transaction fees are a tiny fraction of the level of the block reward subsidy ( still not exceeding 1% ) but as bitcoin is more widely used, the fees will eventually make up for the lowered subsidy.  That's what is expected, and so far that appears to be what is actually happening:

http://blockchain.info/charts/transaction-fees?timespan=180days&daysAverageString=7


Simplest and fastest method of utilizing Bitcoin for my online digital store?

Unfortunately, there are reasons it isn't this simple.  If it were, everyone would be doing it.

The difficulty in purchasing bitcoin online is not a technical challenge, but rather a challenge with regulations and mitigating risks.  Businesses that sell bitcoin can find themselves afoul of their local laws if they do not request a certain amount of know-your-customer (KYC) information about their customers.  There is also usually a verification process with this information, which can take time.  They can get shut down or even thrown in jail if they don't comply.

Secondly, bitcoin transfers can't be reversed...but PayPal and credit card transactions can be.  This means that if you purchase bitcoin with either of these methods, the company selling you the bitcoin will need to wait until you can't do a chargeback on your purchase.  Depending on your method of payment, this can take weeks.  It's what bitcoin sellers need to do in order to protect themselves from fraud.

Bitcoin, itself, offers a payment method that is secure, convenient, trustworthy, and quick.  However, the on-ramps and off-ramps from fiat currencies to bitcoin have all the slowest and most inconvenient elements of the legacy currency system.


What happens if the developers make a controversial change to the "standard" client?

The power to dissent over changes that causes existing clients to reject a block does lie disproportionately with miners. Any change that causes existing clients to consider a block invalid is useless until the majority of miners update.

Miners who consider the block invalid will never attempt to build on a chain that includes any such blocks. So until a majority of miners upgrade, the longest chain will never stably contain a block requiring the update.

Once the majority of miners have updated, those running clients will pretty much have to update. Otherwise, they'll be stuck on a shorter block chain that won't agree with the more secure block chain.

The change would have to be pretty detrimental to key interests for businesses or ordinary users to be able to stand up to the miners. That seems pretty unlikely to me because there interests are pretty well aligned.


How do I spend bitcoins from multiple wallets in a single transaction?

There are currently three different ways to do this: raw transactions, PSBT in 0.17, and PSBT in 0.18. I recommend that you use PSBT in 0.18 as it is the least hassle, but I will describe all three here for you.

Traditionally, you would do this with createrawtransaction, fundrawtransaction, and signrawtransactionwithkey/signrawtransactionwithwallet. One person would have to know all of the inputs that were being used in the transaction or have all of those stored in their wallet (i.e. they have imported everyone else's public keys and/or redeemScripts into their wallet) and then they can use createrawtransaction or fundrawtransaction to create the raw transaction.

createrawtransaction just takes inputs and outputs that are specified by the user and gives the resulting transaction as is (so you need to be careful about fees and change). fundrawtransaction can choose the inputs to use for you using your wallet and it will handle fees and change outputs itself. However fundrawtransaction needs to know all of the information necessary to construct the final transaction (except for the private key, it can just use a dummy signature) in order to correctly estimate the transaction fees, which is why you need to import the public keys and scripts into your wallet.

Once you have the raw transaction, you then send it to each of the other people involved in the transaction. They then sign it using signrawtransactionwithwallet (if the keys and scripts are in their wallet) or signrawtransactionwithkey (if their keys and scripts are not in their wallet). Most people will use signrawtransactionwithwallet. They then send the result back to you where you have to combine all of the signed transactions into the final transaction using combinerawtransaction. Then you can broadcast it with sendrawtransaction.

Instead of sending the transactions out to everyone to sign at the same time, you could send to one person who signs, who then sends to the next person and so on. This would not require combinerawtransaction. The last person would sign and then use sendrawtransaction to broadcast.

This process is kind of bulky and requires that one person knows some (or all) of the information for the inputs being used (except for the private keys).

Since Bitcoin Core 0.17, you can use the various *psbt RPCs to achieve the same thing. With 0.17, the flow is fairly similar to the the raw transaction flow described earlier. You would have to have all of the information for creating the final transaction in your wallet (except for private keys) so that fee estimation can be properly done for coin selection, or you need to know which inputs to use. Either way, you use walletcreatefundedpsbt and specify the inputs you want and the outputs you want. Bitcoin Core will then automatically choose additional inputs if there is not enough to cover the output amount and create a change output for you. Because it needs to also conver transaction fees, it needs to have the same information that you need for fundrawtransaction to be able to estimate fees for the inputs it chooses.

Then you would send the transaction to everyone else who would add their signatures (and other metadata) using walletprocesspsbt. You can also do walletprocesspsbt first before sending the transaction to everyone so that various metadata needed for signing (like the UTXO that is being spent for each input) is added beforehand. Once signed, everyone would send the transaction back to you and you combine them together using combinepsbts Then you create the final transaction for broadcast using finalizepsbt and send the result using sendrawtransaction.

Of course using PSBTs you can do the same thing described above where each person sends the transaction to the next person to be signed instead of sending back to you to be combined.

Again, this process is kind of bulky and requires that one person knows some (or all) of information for the inputs being used (except for the private keys). But it is slightly less likely to result in an error than the raw transaction method. PSBTs also allows you to use other non-Bitcoin Core wallets that support PSBT, and you can use this method with wallets which are not connected to the internet or otherwise do not have the blockchain or the UTXOs that are being spent in the transaction.

However, Bitcoin Core 0.18 actually makes this whole process a lot easier. Bitcoin Core 0.18 introduces a couple of new *psbt RPCs which make it so that one person does not need to know all of the inputs being used and all of the information for each input. The only caveat is that this method assumes that each person has their own outputs that they want to create instead of multiple people pooling together their Bitcoin to make one large output.

With 0.18, everyone would create their own PSBT using walletcreatefundedpsbt. They specify any of their own inputs that they want to use and all of their outputs. Any change outputs will be added, and additional inputs from the wallet will be added to cover the output amount and transaction fee if not enough were specified by the user. Since every user does this with their own wallet, no one person needs to know anything about what the other users have in their wallets.

Then each person would send the PSBT to a designated coordinator who uses joinpsbts to join every PSBT into one large PSBT. This PSBT will have all of the inputs and outputs that each person wants to spend and create. So instead of having many individual PSBTs with their own inputs and outputs, there is now one large PSBT with everyone's inputs and outputs.

This PSBT is then sent back to each person who uses walletprocesspsbt to update the PSBT and add their input information to the PSBT and signs it. Even if a user has an airgapped setup where their private keys are somewhere that does not have access to the blockchain, they can update the PSBT from an online watching only wallet and send the PSBT to the offline machine to be signed.

Once everyone has signed the PSBT, it is sent back to the coordinator who uses combinepsbt to combine all of the signatures and input information into the same PSBT, then creates the final network transaction using finalizepsbt and broadcasts it using sendrawtransaction.

Again, this can be done serially like the other methods described earlier and thus omit the need for combinepsbt.


Why does the script contain the hash of the public key

A major pro other than shorter addresses is that breaking into your private key takes one more step (hash -> public key -> private key). Plus, if ECDSA gets cracked someday and you follow the one-address-per-transaction best practice, transactions with P2PKH scripts will only unveil public keys when the amount they "hold" is going to be spent, so anyone attempting to hack your private keys from public keys would end up with empty addresses.


Is a P2WPKH address synonymous with a Bech32 address?

are P2WPKH and Bech32 synonyms now?

No. Bech32 is also used for P2WSH addresses. Native segwit and Bech32 are synonyms.

  Is there such a thing as Base58 P2WPKH address?

No.


They can be made a heck-of-a-lot safer with simple key-stretching.  The WarpWallet runs Scrypt on your passphrase, and outputs a string in the full 256-bit keyspace.  It's at least 1000x more expensive to guess a WarpWallet address than a standard brainwallet address.  And if you had access to high-end scrypt-computing hardware, you're probably better off using it to mine litecoins rather than go after WarpWallets.  See https://keybase.io/warp.  There's a 20BTC challenge to solve an 8-letter WarpWallet passphrase that's been open for almost a month.


Bitcoin is [in]famous for being slow to process. This is because of how the block-chain works. Miners have to add your transaction to the next block in order to approve it, and this doesn't happen instantly. Miners will prioritise transactions with higher transaction fees since the money is more incentive to approve it faster. Transactions can take as much as a week to process which is why Bitcoin has issues commercially since you'll buy a coffee, but the transaction might not be processed for days after. It's also why Bitcoin is often described as better for long term investment than day-trading, but it's a trade-off for the added security of the block-chain!


Dropbox stores all previous versions of hive files for at least a month. You can open the backup folder in Finder and find the bitcoinkit.wallet file. Right-click this and select "View Previous Versions". This should open your Dropbox account and show you the previous versions of the wallet file.

Check the backup at ~/Library/Application Support if the backup files are there. If not, copy the backup files to that folder. Then start Hive, and it should detect the existing wallet and send you straight to the main window without going through the welcome wizard (note: you'll have to wait a bit for it to resynchronize with the Bitcoin network again).

Hope this works!


Nxt / Ardor not downloading blockchain, it just stuck and hangs on startup at "known peers"

Make sure your firewall allows outgoing connections on port 7874 or 6874 on testnet.

You can also try to invoke the getPeers API from the http://localhost:7876/test page with "active" set to "true". You should see a list of IPs your connected to, if you don't see anything, double check your 7874 port.


Does spy mining negate the harm caused by big blocks on decentralization?

No, it temporarily attenuates the issue, but doesn't resolve the problem. A spy miner gains less reward for an empty block than the large miner building on its own block. Currently, transaction fees make up about 11.7% of the block rewards (average over last week). As the subsidy decreases in the longer term, the transaction fees are expected to make up an even greater relative portion.
Larger blocks would exacerbate the issue as the spy miners would spend more time in the state of reduced revenue, which translates directly to reduced revenue for whomever didn't find the previous block.


Does my node rebroadcast its mempool transactions on startup?

When a node shuts down cleanly, it does flush the mempool to disk and reloads it upon startup. It will not rebroadcast the transactions.
A node will only relay transactions once, when it first learns about them. Your wallet will cause its own transactions to be rebroadcast. There is currently no mempool-based mechanism that rebroadcasts any foreign transactions after the initial relay.
Especially due to the privacy implications of this behavior (which makes rebroadcasts an obvious tell that the source is the sender), there is on-going work to change node behavior such that it will generally rebroadcast all transactions that should have been included in the previous block: [p2p] Introduce node rebroadcast module #21061


Does blockchain without currency make any sense?

There are a number of research papers that cover the question "Do you need a blockchain?", e.g. the eponymous paper by Wüst & Gervais (2017) and the extensive Blockchain Technology Overview by NIST (2018). At a quick glance, the article When do you need blockchain? Decision models. by Meunier appears to provide a survey collecting a broad range of answers to the question.
The general gist seems to be that you only need a blockchain if all of the following conditions apply to your use case:

an actual business problem that needs solving
shared consistent state
multiple authors
append-only data
no sensitive information
participants do not agree on single trusted third party

Since blockchains are complex and wasteful, they usually are not a better solution to problems that can be solved building on trusted third parties, audits, and distributed databases. If one or multiple of the listed criteria are not met, your problem can likely be more easily solved using these well-explored approaches. Blockchains tend to be the best approach only when they are the only option.
Meunier concludes a bit tongue-in-cheek that the only convincing application so far is the creation of unregulated money.


Will an attacker's forked branch of block chain be used in bitcoin confirmation?

Your scenario is not completely clear, because you don't tell us whether the attacker is producing valid blocks or invalid blocks. You have also not defined whether your own wallet is a full-node or a thin client.

Let's first talk about how blocks are relayed through the network:
When a new block is discovered, a node will announce via an inv (inventory) message that it has this new block. Other full nodes will send a getdata message, requesting the whole block. After receiving and validating the data, they will send an inv message to their peers to announce the new block to them.
SPV nodes do not request the full block. They'll just get the block header, and if there are any transactions of interest, they'll specifically request proof for those to be sent via a merkleblock message. SPV nodes cannot fully verify the validity of new blocks, because they don't store the blockchain.

Now there is three different possible scenarios, and two types of wallets to consider:

Attacker is producing invalid blocks
A SPV wallet may be fooled, because it can't verify the validity of a block. They still check that the block header's are well-formed. Some SPV wallets require multiple peers to tell them about the same block. Therefore, this attack may require additionally a Sybil attack or control of the SPV wallet's internet connection.
Full nodes are not affected, because they'll reject invalid blocks.

Attacker is producing valid blocks at low speed
A SPV wallet will reorganize to a longer chain when it hears about it from a different peer. So, again, the SPV wallet needs to be isolated from other information for this to work. As the information is valid, this attack may also work against full nodes. The attacked may notice the suspiciously slow update rate.

Attacker is producing valid blocks with 51% of mining power
The attacker is faster than the whole rest of the network. By choosing to only build upon his own blocks, he can mine 100% of the blocks and still outpace the remaining network. The blocks are valid and therefore accepted by all nodes (until some sort of intervention). The attacker can censor transactions and even rollback a small number of blocks by starting from an earlier block but eventually overtaking the natural block chain tip. This is called a majority attack and breaks the axiomatic security assumption of Bitcoin that more than half the mining power is honest.

How secure are six confirmations in an attacker's fork?
If you're caught in a Sybil attack, this will fool you. In every other case, you'll not be fooled, or the whole network is the target.


Can I export a xpub/zpub/ypub key in bitcoin core?

You cannot. Bitcoin Core does not allow you to import master keys nor can you export extended public keys. BItcoin Core does not use extended public keys since it uses hardened derivation which does not use extended public keys.


There most likely isn't any hard limit - you might only be limited by your computer's memory (and even then, that would require tons of addresses).


Does addressindex works in satoshi Bitcoin-Core?

No, bitcoin core doesn't have such feature.


Is Electrum's label sync a decentralized service?

You can view the source of the Electrum label sync plugin on github.

  How and where are the labels stored?

They appear to be stored on sync.bytesized-hosting.com:9090.

  Is the transmission of the labels encrypted?

The labels are encrypted with AES using using a truncated SHA1 of the wallets Master Public Key, this should be reasonably safe. IV appears to be static, this is fairly weak but not disastrous. For most people the server should not be able to decrypt any of the information stores within the label sync service.

    self.encode_password = hashlib.sha1(mpk).digest().encode('hex')[:32]
    self.iv = hashlib.sha256(self.encode_password).digest()[:16]
    self.wallet_id = hashlib.sha256(mpk).digest().encode('hex')

  Do the electrum server save IP information by default?

The source of the sync server is available on github, however you should ideally assume that all traffic to it is logged. This would include the hash of your master public key, your IP address, and the times you were using the wallet which can be correlated with transactions. This is probably never going to be an issue for most people but it is something to be aware of.


If I buy a bitcoin in USD who gets the cash?

When you buy an ounce of silver bullion at the coin store, who gets the money?

The person who held the coin before you did.

All bitcoins are first issued to miners. From there, miners use those coins for trade or exchange.  So when you buy a bitcoin with cash, you are buying it from someone who owned it but initially it was obtained from a miner.


RPC call to get unconfirmed balance on a watch only wallet

You can use the getbalances command. It will return all of the balances belonging to the wallet, including ones the wallet can sign for, watch only things, trusted (confirmed transactions and unconfirmed change), and immature coinbase outputs.

Here is the help output for it.

getbalances
Returns an object with all balances in BTC.

Result:
{
    "mine": {                        (object) balances from outputs that the wallet can sign
      "trusted": xxx                 (numeric) trusted balance (outputs created by the wallet or confirmed outputs)
      "untrusted_pending": xxx       (numeric) untrusted pending balance (outputs created by others that are in the mempool)
      "immature": xxx                (numeric) balance from immature coinbase outputs
      "used": xxx                    (numeric) (only present if avoid_reuse is set) balance from coins sent to addresses that were previously spent from (potentially privacy violating)
    },
    "watchonly": {                   (object) watchonly balances (not present if wallet does not watch anything)
      "trusted": xxx                 (numeric) trusted balance (outputs created by the wallet or confirmed outputs)
      "untrusted_pending": xxx       (numeric) untrusted pending balance (outputs created by others that are in the mempool)
      "immature": xxx                (numeric) balance from immature coinbase outputs
    },
}


Understanding reinvestment in a miner growth scenario

I will not give you the straight out answer, but i will guide you there.
Basically the question is asking when will Eve have 51% of the network hashing power.
Please note that in this question we dont really need to deal with hashing power, this question can be answered by calculating when Eve will have more than $4M+ worth of hashing hardware.
There is an easy approximation, and then there is a more difficult, but more precise way to calculate this.
Currently everyone has $1,000,000 of hashing power. So everybody has a 1 in 5 chance of finding a block.
Lets assume that Eve will get every 5th block (as she accumulates more hashing power, she will have a higher probability of finding new blocks - incorporating this into the answer is the more difficult but precise way).
So Eve will get 1/5 of all blocks, In a day she will get 144/5 = 28.8 blocks.
28.8 blocks @12.5 BTC @ $500 = $180,000
Now we need eve to have 51% of all hashing power. Or more than the others combined, so more than $4M
So Eve needs to spend at least $3M on equipment.
$3M / $180,000 = 16.67 days
So the approximation is 16.67 days, but Eve will get there faster because as she ads more equipment, her chances of finding new blocks grow.
For the more precise calculation we need to settle on the interval of Eve getting new hardware (hourly/daily/weekly/monthly etc.)
You can map it out and eventually you will arrive at a formula.
Hope this helps.


Why Would Someone Not Use a new Change Address

Are there known reasons or types of users who intentionally choose not to follow the advice to use new change addresses?

Say you perform a lot of transactions but still want to have some mechanism for your heirs to get to your bitcoin should you die. And say that you don't do anything you have any need to keep secret. In this case, it makes a lot of sense to re-use the same few addresses, the ones that you've made arrangements for your family to be able to access should something unfortunate happen to you.
The same logic might apply to a transaction system using an HSM with limited storage to secure the keys. Large numbers of addresses would mean large number of keys, meaning they couldn't all be secured by the HSM, reducing your security.
I notice you just reference "the importance of always using a new address every-time you receive a transaction, even for change". I have no idea what that importance might be, but so far as I know, bitcoin is perfectly secure even if you always reuse the very same address.


What is the most efficient way to store bitcoin addresses in a database?

It's not really clear what your use case is.

If you need to retrieve the addresses later, you can store each address as a string. That's only ~34MB, which easily fits in memory.

To save space, you can convert each address to hash160 format, which is only 20 bytes. In total, that's 20 MB.

If you're merely trying to test whether a Bitcoin address is contained within the database then you could use a bloom filter. A bloom filter with a false positive rate of 1 in 1020 and 1000000 elements would only take 11 MB.


If I send bitcoin or some other crypto from my wallet to Binance and I don't see a deposit, what could be going wrong?

If you don’t see your deposit right after you made the transaction, you should wait a little bit, it shouldn’t take so long to have your transaction/s into the blockchain of x cryptocurrency.

Transactions can take minutes and even hours in order to go through the verification process which is basically a process for the network to make sure your transaction is legit in all possible ways, after such process your transaction is added to a block and thus to the blockchain for good.

However, there are a few cases where a transaction won’t appear:

You put the wrong address
number 1

Make sure you put the right information before making a transaction, if it doesn’t appear just give it a little of time and you’ll be fine, but notice that if you put a wrong address or any other parameter required to make a transaction YOU WONT BE ABLE TO REVERSE/TROUBLESHOOT this event and thus, you will loose your money

pd: Crypto-exchanges like Binance or coinbase, they all have a certain number of verification in order to have your transaction shown. I don’t know how many binance uses, but I think after 4 verifications (BTC) your transaction will appear on your wallet, however, such parameters are different among cryptocurrencies, ripple just takes 1 verification and you’ll be all set to spend your money.


You are not supposed to be using the output scripts of the outputs created in the transaction but rather the output script of the output that is being spent. What you are using is the output script of the output in that transaction.

Rather you should click the output link next to the input and get the output script from the referenced output that the link takes you to.


My bitcoin transaction does not exist in blockchain.info nor does it exist in any tx accelerator

Did you maybe use a very low fee? In that case your wallet may have rebroadcasted the tx while other nodes dont relay it because of too low fee.

I expect you have the mnemonic to recover the breadwallet saved somewhere. Maybe try to deinstall breadwallet and reinstall it using your mnemonic and see what it then shows?


I don't know of any service that handles all of these. You can use Coinbase to accept bitcoin.  If your Paypal account deposits the fiat to a U.S. bank account, you can also use Coinbase to manually "buy" Bitcoin into the same Coinbase account.

If you knew the value of your USD account, you could automate the buying of bitcoin via Coinbase API.  Manually doing the conversion every week, month, etc would not be a bad idea though because you could wait until the Bitcoin price is low, or just keep a part of the funds in fiat for your business expenses.

If you are outside the U.S., probably better to look into Bitpay.


Does the MultiBit linux jar file run in windows?

The Linux installer is slightly different to the windows installer in that there are different scripts to get the host machine to recognise the bitcoin URIs.

What ARE very similar is the multibit-exe.jar (used on Linux and Mac) and the multibit.exe (used in Windows). The exe is basically a wrapped jar file.

On any operating system you can run MultiBit jar file by running:

cd 'the MultiBit installation directory'

'path to java'/java -jar multibit-exe.jar

Make sure you cd to the install directory first as it uses that to pick up some files.


Lets tackle them one by one:

1) Is this definition true?
Not entirely. Stable coin need not be pegged only to fiat currencies. We can also peg a stable coin to exchange traded commodities like precious metals whose price remain fairly stable. You can also have stable coins linked to cryptocurrencies via smart contracts.

(2) And if yes, Is it possible to pegging a crypto-currency such as Bitcoin to a fiat/formal currency? (3) And if yes, How to do it?
The value of bitcoin is not linked to any physical or virtual asset. It has a value of its own. Until the whole Bitcoin community that is involved does not decide to abandon the decentralized approach and peg it against an asset, it is not going to happen.

(4) Which technical characteristics does a crypto-currency need to be a stable-coin ? (In the sense of consensus mechanism, transaction validation process etc)
(1) In order to maintain the one-to-one peg ratio, Tether uses the Bitcoin blockchain, Proof of Reserves, and other audit methods to prove that issued tokens are fully backed and reserved at all times. The Tether transactional ledger is embedded in the Bitcoin blockchain as metadata via the embedded consensus system, Omni. (2) TrueUSD work with multiple trust companies. User needs to pass a KYC/AML check, and send USD to a trust company with an escrow agreement. When they verify the funds, their API instructs TrueUSD's smart contract to issue the equivalent TrueUSD to user's public Ethereum address

(5) And are stable-coins decentralized and trust-less like Bitcoin?
Physical asset backed cryptocurrencies are centralized as you need to hold a portion of physical asset for every stable coin you issue. Since asset backed stablecoins need to involve trust in the issuer (say US govt for USD) and the custodian (say Tether for showing they have the reserves) it is necessarily centralized. However, you can make stable coins which are decentralized. But those coins need to be backed by a decentralized cryptocurrency like say Bitcoin or Ether. The reason these stable coins are decentralized is because you can lock them in a smart contract.

(6) What are the most well-known stable-coins crypto-currencies?
(1) Tether, TrueUSD are examples of stablecoins linked to fiat currencies. They have a physical backing of USD for every coin out there. (2) DGX is gold backed stable coin. Tiberius coin is backed by a baset of industrial and precious metals. (3) DAI coin offered on MakerDAO platform is an example of crypto backed by crypto. The DAI is issued by depositing the collateral (pooled ETH) into a smart contract called CDP (Collateralized Debt Position) in accordance with the liquidation ratio of the CDP.


The problem is based on the generating method I used from the the Bitwasp library.

$key = PrivateKeyFactory::fromHex($hex, true);
$wif = $key->toWif();

Will return a WIF assuming the hex key was compressed. Restoring the history while importin in electrum failed.

$key = PrivateKeyFactory::fromHex($hex, false);
$wif = $key->toWif();

Will return a WIF from an uncompressed hex key an electrum was able to restore the history of the address.


How can I import a private-key to Blockchain.info in order to use it?

you question is not clear, what exactly have you bought?

anyhow if you have the private key you can import them in blockchain.info wallet in the Import/Export section. but if you bought it from someone else he/she also has the private key and so the ability to spend the bitcoins.


Is it possible to run HD derivation with an encrypted master node or seed?

It seems like you are looking for an encryption scheme which allows operations to be performed on cipher text, which would result in the same as the same operations being applied to the unencrypted data.

Example: Homomorphic encryption which supports addition

E(data0) + E(data1) = E(data0 + data1)
k being the encryption key, and E(...) the encrypted cipher text.

In then case of HD keys, the desired encryption scheme would need to enable the following

hd_child_derivation(E(m)) = E( hd_child_derivation(m) )
hd_child_derivation() involving a HMACSHA512 function and EC-point operations

I am not sure which encryption schemes would fulfil the above requirements, but fully homomorphic encryption schemes seem to be possible: https://crypto.stanford.edu/craig/craig-thesis.pdf


Why is "cancel canal can" an invalid BI39 (3 word) mnemonic phrase?

When generating a BIP39 mnemonic seed phrase, the user will first want to generate an entropic value ENT (as referenced in the BIP39 docs), which will be used to generate the mnemonic.

Note that it is very important that ENT be of suitably high entropy, or else the resulting mnemonic phrase will be insecure against brute force attacks. Choosing your own words is similarly insecure - always start with a proper source of ENT, and then derive the words from it.

Next, we take the SHA256 hash of ENT, and then concatenate the first ENT/32 bits of the result to the end of ENT. This works as a checksum on the mnemonic.

Once this is done, we split the result into groups of 11 bits, and encode each 11-bit group into a word, using the BIP-39 word list.

With your example, a 3-word phrase would encode 32 bits of entropy:

32 bits + (32/32) bit checksum = 33 bits
 33 bits / (11 bits/word) = 3 words

This amount of entropy is extremely insecure against brute force attacks, if you store funds at a wallet generated from this mnemonic seed, you should expect them to be stolen. It is generally recommended to use at least 128 bits of entropy (12 words), with 256 bits (24 words) being a common standard.


How particular node is searched in Merkle tree?

A Merkle tree is just a particular way of hashing a list of elements. In this application, the elements are transactions.

Finding something in a Merkle tree is just looking through the list. The Merkle structure does not help you.

However, what you can do with a Merkle tree is create a compact proof that a particular element is included (by giving the hashes higher up in the tree it is combined with).

So to summarize: you don't use a Merkle tree for searching. You use it to prove things are in it. This means the searching can be outsourced: if some (software) party tells you about a piece of data that allegedly belongs to a tree, instead of checking it for yourself (which requires having the tree), you can ask for a proof (which can be verified by only having the root).


Are Schnorr signatures quantum-computer resistant?

No, ECDSA and EC-Schnorr, as well as related schemes like EdDSA, all belong to the class of elliptic curve cryptography. Their security is based on the assumption that the EC discrete logarithm is unfeasibly hard to compute. This assumption is not true if a sufficiently strong general purpose quantum computer would exist.

Quantum resistant signature algorithms do exist, but they all rely on very large signatures - which may make them unfeasibly expensive for purposes like Bitcoin. Furthermore, much less research exists into features on top (like homomorphic derivation like BIP32 uses, or aggregation), making them effectively a step backwards in terms of functionality if we'd adopt that instead.

However, I am not very worried about this. Quantum Computing in general has a very long way to go before it comes even close to tackling problems like solving discrete logarithms for curves of our size. A general-purpose QC with several 1000s of qbits would be needed, and it is not even known whether it is physically possible to build such a computer.


What Does "Activation" Actually Mean In Bitcoin?

However Segwit is a complex upgrade to Bitcoin so there must be many places where changes are made to Bitcoin for Segwit - so how many such "if" blocks are there ?

As of writing, there are 23 to 34 places where behavior changes based on whether segwit is active, depending on how you count. (e.g. if you pass a boolean to a function, and that function contains an if, and the function return value is passed to another if, is that 1 or 2 if statements?)

If you have a copy of the repository you can find them with the following commands:

grep -RI "SEGWIT" * | grep THRESHOLD_ACTIVE
grep -RI "fPreSegWit" *
grep -RI "IsWitnessEnabled" *
grep -RI "fWitnessEnabled" *
grep -RI "witnessEnabled" *


How does difficulty impact profitability? what is the formula?

Source: http://bitcoin.sipa.be/speed-lin.png

The difficulty growth has been slowing down over the years, but in the last year it still has about quintupled.

Source: http://bitcoin.sipa.be/growth-10k.png

The general formula for calculating profitability is elaborated on How much Bitcoin will I mine right now with hardware X?.


When adding funds to wallet via snapswap, what exchange rate is in place?

This exact question was asked and answered on the Ripple forums.

It appears as if SnapSwap doesn't give appropriate instructions on what the procedure is for sending funds into a brand new Ripple account/wallet.

The general procedure is approximately this:

First you send then USD via your bank and provide them with your Ripple address.
Then they send you a small amount of XRP to initially fund your account. A brand new Ripple address cannot receive anything other than XRP so they cannot send the USD to you yet.
You extend a suitable amount of trust to their issuing address. This requires a small amount of XRP from step 2 be reserved.
They send your funds to you as a USD/SnapSwap balance in Ripple.

For future use, when you send funds into Ripple via SnapSwap to an already funded Ripple account, they should directly send the USD to your Ripple account as step 2 (assuming you have a sufficent trust line aka payment path setup).

After that you can use the USD/SnapSwap in Ripple in payments or to trade. In particular, if you want XRP you can use the "convert" page in the Ripple client to covert all or some of your USD into XRP at the best current market rate Ripple can find.


How do people know how to construct the OPCodes?

Bitcoin Script is a programming language. As such, it is similar to other languages - You need to know what you are trying to achieve to be able to write in it.

The script you've presented is a P2PKH (pay-to-pubkey-hash) script. The goal here is to allow someone to spend Bitcoin with the corresponding private key by applying a signature. In this kind of verification, you take the input pubkey, duplicate it (OP_DUP), hash160 the duplicate (OP_HASH160), push the hashed value, check if the value you created in the first two operations matches the one you just pushed (OP_EQUALVERIFY), and finally check the signature against the original, pre-dup pubkey (OP_CHECKSIG)

Since Bitcoin Script is a stack based language, it looks a little different to the day to day ones we see (Python, Java, etc). However, it is just another programming language, and you can write code in it just the same way.

Just for reference, a similar program in a more conventional language would look something like:

verifyInputScript(signature, pubkey, outputscript):
    inputPubkeyHash160 = hash160(pubkey)
    if inputPubkeyHash160 != outputscript.hash160:
        return "Invalid"
    else:
        isSignatureValid = verifySignature(signature, pubkey)
        return isSignatureValid


P2P getHeaders message - how to get block locator hashes

Block locator hashes are just the hashes of various blocks that you already have. As a new peer, the only block that you will have is the genesis block (the genesis block must be hard coded into your software). So you just send a getheaders message that only contains the hash of the genesis block.


Why do block explorer APIs say the nonce in the block header is 0?

This appears to be a bug in their software (i.e. it occurs for no reason other than it's a mistake) so you should report this to Blockcypher.


Bitcoin Cash transactions are Bitcoin Cash transactions while Bitcoin transactions are Bitcoin transactions, they're different. Your Bitcoin Core shows that transaction probably because Bitcoin ABC and Bitcoin Core uses the same datadir. Your 0.05 BTC is still there, it's just your confused Core client. All you need is to rescan Bitcoin Core (making Bitcoin Core reset its transaction history cache and re-searching for transactions). You can rescan as explained by BookLover's #9 reply on https://bitcointalk.org/index.php?topic=171390.msg1820287#msg1820287 (Please use the shortcut once, or you'll rescan many times and waste time)

Next time, add -datadir=C:\meh\BitcoinABCdir to BitcoinABC's shortcut, as described by Booklover's reply, you just read. (Use this shortcut permanently)


Does block validation get more difficult as the blockchain grows?

Validating hashes and signatures for transactions is the most costly process. So the amount of time it takes for CPU to verify a block depends on number of transactions in the block.

Number of transactions per block tends to increase as bitcoin economy grows, therefore it takes longer to verify more recent blocks.


Wallet, deposit and withdrawal management system or APIs

Although certain coins have a few available API providers (such as BitGo for Bitcoin), any sane and security conscious company should elect to run their own nodes for each supported currency, manage their own keys, and have their own wrapper to handle deposits and withdrawals by interacting with the nodes.

This is especially relevant for coins like Monero and ZCash, where third party API providers may not be able to view transactions related to your business at all due to privacy protocols.

Once you have the infrastructure in place, the flow you described is essentially correct - you assign an address (or address+memo) to a user, and treat all incoming deposits to that address as coins belonging to that user.


How bitcoin node server establishes outbound connections to other full nodes

Sounds like you created an account/wallet on that website. Just forget about that.

Instead open your own bitcoin-qt, click Receive and copy/paste the address specified there to the faucet website.

In general you always want to be the owner of Bitcoins yourself, not create accounts on websites.


The peer discovery process, in order of priority:

the client attempts to connect to peers in it's local peers.dat database
the client attempts to gain peers from one of four DNS-based seed nodes, hosted by Bitcoin developers
the client gives up

The peers.dat database is filled with information using addr messages, which connected peers use to exchange their knowledge of other existing nodes in the network.

If you want to make your own local nodes, you need to set discovery to 0, which will disable advertising of the peers as available for incoming connections. You can then forge connections using local DNS or simply ip addresses of other local nodes with the connect option. At least one of these will need to be connecting out to the wider network for you to be able to stay up to date, and to mine on using p2pool. More than one connection out is vital to the stability of your private nodes.


How do I test that blockchain p2p replication is properly, securely exposed to the internet?

If you already have bitcoin up and running for some time, just open terminal/commandline window and run:

netstat -b (Windows)

netstat -tnp (Linux)

In the Local address column output, note whether there is port 8333 used with any bitcoind connection. If yes, you know that your node is reachable from internet and thus you are fully participating. Otherwise you need to allow connections to port 8333 from outside in your firewall, so that you don't have to depend on other nodes accepting connections. Also, healthy and up to date node is sending/receiving transactions quickly.

Other concerns, like security, are handled by bitcoind automatically, as it verifies all received data. The bitcoin-qt GUI is working in exactly the same way, I just presume you'd prefer running bitcoind as a background service.


Running into ELIFECYCLE error while trying to install filebazaar

Maybe the directory doesnt have the proper rights, try this command sudo chmod 777

If it still  doesnt work try these flag before your install sudo npm install -g --unsafe-perm

or sudo node-gyp rebuild -g --unsafe-perm

then try again


Because he can sell the bitcoin for dollars. And in many cases, his alternative would be to accept a credit card payment which costs him around 2%. Converting bitcoins to dollars costs around 0.2% -- one tenth as much. Also, if he accepts a credit card payment, he has to worry about a chargeback (where you claim the payment was unauthorized and the bank reverses the payment). Bitcoin has no chargebacks.


What's the difference between 12 word seed and 24 word seed?

The English-language wordlist for the BIP39 standard has 2048 words, so if the phrase contained only 12 random words, the number of possible combinations would be 2048^12 = 2^132, and the phrase would have 132 bits of security. However, some of the data in a BIP39 phrase is not random, so the actual security of a 12-word BIP39 mnemonic phrase is only 128 bits. This is approximately the same strength as all Bitcoin private keys, so most experts consider it to be sufficiently secure.


What happens when a miner does not claim all fees/generated coins?

The block is accepted, and the coins are lost. Poor miner.

Here is a link to the part of the 0.6.3 source which checks this: https://github.com/bitcoin/bitcoin/blob/v0.6.3/src/main.cpp#L1362

Also, this has effectively happened before; block #124724 claimed one satoshi less it than could have.


What is a good way to concisely explain Bitcoin?

Bitcoin is a new kind of money. It's the first decentralized electronic currency not controlled by a single organization or government. It's an open source project, and it is used by more than 100,000 people. All over the world people are trading hundreds of thousands of dollars worth of bitcoin every day with no middle man and no credit card companies. It's a startup currency which has never happened before.

Bitcoin is the first digital currency that is completely distributed. The network is made up of users like yourself so no bank or payment processor is required between you and whoever you're trading with. This decentralization is the basis for Bitcoin's security and freedom.

Email let us send letters for free, anywhere in the world. Skype lets us make phone and video calls for free, anywhere in the world. Now there's bitcoin. Bitcoin lets you send money to anyone online, anywhere in the world for less than a cent per transaction!
Bitcoin is a community run system not controlled by any bank or government. There's no wallstreet banker getting rich by standing between you and the people you want to send and receive money from.

Bitcoin is more efficient than all competing currencies. This will drive its adoption in the same way computers were adopted, in that computers made people more efficient in competing in the marketplace. A currency has value by it being widely used. Bitcoin is a startup currency with a deflationary bootstrapping economy. Its use spreads by providing the speculator incentive.

Bitcoin is going to be the biggest opportunity for innovation that the world has seen since the industrial revolution. An idea whose time has come.


Is the SHA256 value in the bitcoin address wiki accurate?

The problem is that you're treating the pubkey as string data. What you need to do is treat it as raw binary hexadecimal. If you use fileformat.info and calculate it using Binary Hash hex bytes you do indeed get 600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408.


More than 1000 CPU solo mining = bitcoin?

If those are reasonably decent CPUs, they could be able to mine up to 20 Mhash/s each. Together, that's 20 Ghash/s, or the same as a small ASIC, and using massively more electricity.

As of december 2013, with the difficulty at 707408283, this means that you'd have approximately a 0.85% chance per month to win a block (worth 25 BTC).


Statistics on Multisig Bitcoin Accounts by type of multisig

There is no such data source as far as I'm aware.

Moreover, you'll never be able to get complete stats on this, as a multisig address is not revealed to be multisig until an output is spent. If an address has only inputs, it can be any form of P2SH address (even segwit).

That said, for addresses that have been used to make outgoing transactions, you could use bitcoind and parse the raw blocks to appropriate scripts. It shouldn't be too hard to build.


You can specify the wallet options multiple times.

I.e. specifying:

wallet=/home/ubuntu/.bitcoin/testnet3/wallets/wallet01
wallet=/home/ubuntu/.bitcoin/testnet3/wallets/wallet02
wallet=/home/ubuntu/.bitcoin/testnet3/wallets/wallet03

in your bitcoin.conf will load wallet01, wallet02, wallet03.


Possible to do recurring payments with Bitcoin?

No, you cannot do that. In Bitcoin, everything relies on the payer to perform the transaction, not the receiver. You as the receiver cannot do anything to make the payer give you money unlike with fiat payment processors.

However if all of your customers are using a centralized service like Coinbase, you can create software which uses Coinbase's API and essentially gives you permission to move that person's coins. This allows you to make the transactions to pay you but it also requires the user to trust you to not steal their money. There should be a permissioning system that makes this setup more trustworthy and less dangerous for the users.


Do Miners get a reward for re-confirming blocks?

Yes, miners get a reward for "re-confirming" blocks; no, it's not a direct reward.
Each block must reference the preceding block by including a hash of the preceding block's header in its own header.  That means each block confirms the block before it, which confirms the block before it, etc..., all the ways back to block 0 (the genesis block).

When we say a transaction has 1 confirmation, that means it's included in a block.

When we say a transaction has 2 confirmations, that means it's included in a block which is followed by one block.

When we say a transaction has 3 confirmations, that means it's included in a block which is followed by two blocks.  Etc...

When the block subsidy stops (or becomes so low it's mostly irrelevant), miners will create blocks only for their transaction fees.  So miners will attempt to mine block A for its fees (giving its transactions one confirmation); after it's mined, miners will attempt to mine block B for its transaction fees---and block B will confirm the transactions in block A, raising their confirmation score to two.  So transactions will still get more than one transaction then.
There is some concern that Bitcoin with transaction fees only will encourage miners to fork the chain and "re-mine" recent blocks with high transaction fees.  Some people call this "fee sniping", and if it's a legitimate concern, it still probably won't manifest for several years---and developers are already talking about ways to make it harder and less potentially profitable.


This transaction hasn't confirmed yet because it has a low satoshi/weight unit transactoin fee (0.251 sat/wu, or 1.003 sat/byte).

The transaction you linked is very large, you can check all the inputs using this link. Transaction fees are calculated according to the amount of data transmitted (tx weight/size), not the amount being transacted, or the receiving address.

The mempool appears to be fairly empty right now, but with a fee this low, I'm still not sure your tx will confirm anytime soon.


Are there any attempts at creating ASIC for bitcoin mining?

The closest thing to ASIC seems to be the BitForce series which has just been released and customers it seems are just begining to receive their first orders.

From the website:

  Is your system based on FPGA or ASIC technology?

  The BitForce processor card is a proprietary implementation of both
  FPGA and ASIC technology.

As far as I'm aware, the actual chip design won't be released, but it seems legit now that people have begun testing the potential.

http://www.butterflylabs.com/


What motivates nodes (or miners) to relay transactions?

Nothing. That's why you send your TXs to several nodes.

Non mining nodes do it "to keep the whole thing working" as long as it is very cheap.

Because of this miners can't keep TXs for themselves and thus do not even bother to try and keep TXs secret. Maybe they also have a better conscience that way. :)