Would it be possible to pay from the Blockchain app to a Coinbase app in a restaurant?

What you really do is to send bitcoins (with a phone app, in this case) to a bitcoin address. So, strictly speaking, Blockchain or Coinbase, if we consider only the send/receive function, are providing you something it's already yours, meaninf that a wallet with its addresses and the send and receive functions are at your disposal for free on the bitcoin network, and you can use them installing one software wallet on the PC.

What is important for them, and is useful for you too, is another function of the app, the one which allows you to buy bitcoins, maybe with no waiting between the payment and the bitcoin "arrival".

All the apps, under the hood, are compliant to the same rules, defined by the protocol. Apps realized by companies like the ones you mentioned must obey those rules: if the don't, are unable to interact with the network, they would be useless. So, all does the same things the same way, as fare as we speak of activities that require to use the bitcoin protol (send and receive the coins)

If you're asking if there is some kind of proprietary/private protocol that makes the use of Coinbase or Blockchain the same as choosing between VISA and American Express: no, as far as I know. It is not possible, because Bitcoin's code is open source, which means everyone can read it and learn how to write its app to send and receive bitcoins. It is not something owned by a company, is something everybody can access for free.

It would be a ruin for Blockchain if you could not send bitcoins away the easiest way possible, wherever you are and to every address in the (bitcoin) world! After all, they earn money because you buy bitcoins from them. The easier and faster you spend your bitcoins, the sooner you'll buy others.

What exists is the opposite. In 2012 was described a way to represent a bitcoin address and to ask to do something with it, all in a line similar to the internet links.

Here you can find the specifications, the document is called BIP21. The simplest example is this:

bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W

An example of use: I send you an email with that URI inside, you click on it on your smartphone, the mail app, that implements BIP21, is aware of the bitcoin URI format, so knows what to do: pops up a requester asking if you want to save the address in the phonebook, for example, under my name, since I am the sender of the email.

Bitcoin took quite a long distance from some of the ways we are all used to relationship ourself with money in general, and with the market, too. Who knows what else will be possibile, given that some big evolutions are not that far.


Can I receive Bitcoin on any of my wallet addresses?

Yes! With an HD (Hierarchical Deterministic) wallet you control all the addresses inside of it. Using a new address for each transaction is actually a good thing for privacy.

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

https://community.coinbase.com/t/why-did-my-address-change-did-i-lose-some-payments/1589/2

To answer your last question you don't need to stop your address from changing because payments send to your old HD addresses will remain under your control.

If you want more control I suggest you run your own full node and do not give any control to a 3rd party:
https://bitcoin.org/en/choose-your-wallet

Coinbase offers convenience and other advantages but this post from CEO Brian Armstrong makes it clear what their priorities are:
https://medium.com/the-coinbase-blog/coinbase-is-not-a-wallet-b5b9293ca0e7


Felix Engelmann and I sat down tonight and we used bx via libbitcoin. We have been able to produce the address from the test vector and exactly your intermediate results

a='8d6a8ecd8ee5e0042ad0cb56e3a971c760b5145c3917a8e7beaf0ed92d7a520c'
B='024ce8e3b04ea205ff49f529950616c3db615b1e37753858cc60c1ce64d17e2ad8'
S=$(bx ec-multiply $B $a)
echo $S
> 03f5bb84706ee366052471e6139e6a9a969d586e5fe6471a9b96c3d8caefe86fef

s=$(bx sha256 'f5bb84706ee366052471e6139e6a9a969d586e5fe6471a9b96c3d8caefe86fef')
echo $s
> d24366e662da47c0cccca4cc2d2d817af54e4d21039c0cc4fc441624efe273f7

sG=$(bx ec-to-public $s)
echo $sG
> 0283850c6835576554261fbab5845a099638859528b2725455e6a48e7566415c02

B_prime=$(bx ec-add $B $s)
echo $B_prime
> 0344b4795e48df097bd87e6cf87a70e4f0c30b2d847b6e34cddde64af10296952d

addr=$(bx ec-to-address -v 0 $B_prime)
echo $addr
> 141fi7TY3h936vRUKh1qfUZr8rSBuYbVBK

Note that our value for B_prime was
0344b4795e48df097bd87e6cf87a70e4f0c30b2d847b6e34cddde64af10296952d as you suggested. Actually encoding it to a Bitcoin address seemed a little bit tricky as without passing -v 0 it would use a testnet address. Maybe you have a similar problem while using Bitcoin core? I don't know the API though for transforming a pub key / ec point to an Adress in Bitcoin core out of my head.

Anyway I think you did everything correctly and you just did a mistake in encoding the P2PKH address.


In general 0 EQUAL is not equivalent to NOT, but in this case they are indeed equivalent.
The reason they're not equivalent in general is that 0 EQUAL checks that the top stack element is exactly a canonical 0 push, i.e. the zero-length stack element. NOT, on the other hand, checks that the top stack element is numerically equal to 0. This means that it is between 0 and 4 bytes inclusive and all bits are zero except possibly the most significant one, which would indicate -0. If the top stack element has more than 4 bytes then NOT will fail the script immediately, similar to RETURN; there is no way to make 0 EQUAL fail the script.
For all these reasons you should be a bit careful using NOT in general -- although in practice standardness rules in most of the network will prevent any of the noncanonical encodings of 0 (or any encoding of -0) to propagate. But in principle if you call NOT directly on witness data then this is a malleability vector.
However, all of this is moot because the output of DEPTH is guaranteed to be a canonically encoded number. So NOT is perfectly safe and does indeed save the extra byte.


What do I have to do after Segwit activates if I'm running Bitcoin Core 0.14.1?

Bitcoin Core has had the code for segwit since 0.13.1, and your Bitcoin Core 0.14.1 is fully compatible with segwit blocks.

Note that the current release of Bitcoin Core does not create segwit addresses for the Bitcoin main network yet. Therefore, while BIP141 (Segwit) is expected to activate on the network late in August, only a later release of Bitcoin Core will allow you to receive bitcoins that you can spend making use of the witness space.


Do all transactions have at least one output that contains at least one bitcoin address

No.  A notable example of a pubkey script that doesn't typically include addresses or keys is the nulldata standard transaction type.  Examples of pubkey scripts that include public keys but not addresses are pay-to-pubkey (P2PK)[1] and "bare" multisig.

Although I'm not absolutely sure, I believe its allowed to have an empty pubkey script.  (That is, the compactSize uint that describes the size of the pubKey script is 0x00.)

Note: Bitcoin Core's getrawtransaction RPC, decodetransaction RPC, and other RPCs will display the public keys in P2PK, bare multisig, and redeem scripts as addresses---which can be a bit confusing.

[1] P2PK was formerly used for most coinbase transactions, but that usage has mostly disappeared on mainnet with pooled mining.  It's still a standard transaction type and quite common for coinbase transactions on testnet.


How mtgox and bitstamp calculate the bitcoin price?

I do not understand what do you mean by the current bitcoin price on the top (I can not see it), but I will clarify on some other numbers.

Last - the price of bitcoin based on the last transaction. So if I bought 1.2 bitcoins with a price of 950$ and this is the latest transaction so far, this number will appear in the last.

High - What was the highest price for the day. Bitcoin price fluctuates and if you assume that during the day the price went from 900 to 920, dropped to 870 went to 980 and right now it is 950, the highest per day was 980. This number you will see in high.

Low - the same idea as with high, but the lowest number. For this example it will be 870.

About Volume, I might be wrong so if there is someone who knows better, please edit my post. Volume this is the total number of bitcoins which are putted on sale.

Therefore the weighted average is calculated in the following way. Assume you have 3 guys putting their prices on bitcoin. First one wants to sell 1B for 900, second 3B for 910, third one 2B for 890. The weighted average will be (1*900 + 3*910 + 2*890)/(1 + 3 + 2) = 901.666


Why do Lightning packets include channel ids if forwarding is non-strict?

I guess this has historical reasons. The short channel ids where there first in the onion format. C Lightning even today does not support multiple channels between 2 nodes. Lnd on the other hand does. That is why lnd developers started to switch the channel if a second channel with enough balance between the nodes existed. Later on it was agreed to add the statement about non strict forwarding - which you referenced - to the spec.

While working with node ids would work it has some drawbacks.

We would have to make a backward compatible change to the onion format
Short channel ids consume less space I think 8 byte in comparison to 33byte of nodeids (remember the onions only have 65 byte per hop payload)
Short channel ids can be verified in case of private channels. I can check the blockchain for an unspent funding transaction.


Index the blockchain in a database and keep the database that has the blockchain updated as blocks come in, you would be essentially running a modified node that's really good at keeping data.


Why does Coinbase block SatoshiDice transactions?

I think its because you are not supposed to play blockchain spam type dice games with online wallets. Since when you win, the winnings goto whatever address it was sent from. Therefore, it may not end up back in your wallet.

All the games are like this, most even have a list of "compatible wallets". I think the only online one that will work is the one ar blockchain.info

another rule of thumb, if you don't have access to the private key, you shouldn't use the address to gamble with


Convert list of BTC address(base58) to Ripemd16(base16)

In Go, you can do this very easily:

package main

import (
    "fmt"

    "github.com/btcsuite/btcutil/base58"
)

var addresses = []string{
    "1Nh7uHdvY6fNwtQtM1G5EZAFPLC33B59rB",
    "1Le1ttNd2GQ79212Epyciw39JDy2E6DYWf",
    "1LpRieyPAZfFyUSMGiZhwAarQoJw1Y8pEx",
}

func main() {
    for _, address := range addresses {
        ripemd160, _, err := base58.CheckDecode(address)
        if err != nil {
            fmt.Printf("Failed to decode address %s: %s\n", address, err)
            continue
        }

        fmt.Printf("HASH160 %x from address %s\n", ripemd160, address)
    }
}

When you have Go installed, you can run this code very easily in your terminal:

$ go get github.com/btcsuite/btcutil/base58
$ go run thefile.go
HASH160 edf10a7fac6b32e24daa5305c723f3de58db1bc8 from address 1Nh7uHdvY6fNwtQtM1G5EZAFPLC33B59rB
HASH160 d76a86f903b33835f06d7b18a1429a8f249f3ab1 from address 1Le1ttNd2GQ79212Epyciw39JDy2E6DYWf
HASH160 d96292e45d045d2269a818b96b13422555557d85 from address 1LpRieyPAZfFyUSMGiZhwAarQoJw1Y8pEx


how to create Watching Address from available xPub key

For generating addresses from extended public key for watch-only wallet, First of all you need to first create the watch-only wallet by that extended public key. and then you can simply derive the addresses from that one by one.

Sample code is shown below:

// Specify the Network Parameters for mainnet or testnet
NetworkParameters params = NetworkParameters.prodNet();

// Provide the public key from which you want to derive addresses
String xPub = "xpub6Cw8YA6Mko3xfkYpMQDZjGjgDTWUrJr87NBSiDPXqcmcSJTgxLXm3VCw3iQs4iC5ZrwpY3M21a43DZmiMzDXWzzhF1n7yxSXDnEHjJN6jwK";

// Create watching wallet, with the help of Wallet class
Wallet wallet = Wallet.fromWatchingKeyB58(params, xPub, DeterministicHierarchy.BIP32_STANDARDISATION_TIME_SECS);

// Print the very first derived address from provided public key
System.out.println("Receiving Address : " + wallet.currentReceiveAddress());

The Output will be :

1L23PHmL38qjqbs75doB1VTSL3CKPwkPbC

You can get the public key from https://iancoleman.io/bip39/ and its all particular derived addresses. You can compare your first generated address from there, to make sure that you are getting correct addresses.

If you want to fetch first 20 or 30 Addresses then you can use given line in a loop. Provide loop limit upto 20 or 30 (which you want).

// Run this statement in a loop, where i is the loop variable.
System.out.println(i + " : " + wallet.freshReceiveAddress());

You can again compare these addresses from https://iancoleman.io/bip39/

Good Luck!


The balance of your Bitcoin holdings won't change. You will be able to use the same wallet on both chains, but note that both chains don't have replay protection, so transacting on either chain can lead to hijacked transactions in the other.

If you upgrade to the latest version of your applications, you should not encounter any problems with the hardfork, since the original chain will just continue. You might not be able to access your funds on the other chain though.


Why is my Electron Cash not detecting any servers?

I had a similar issue. The solution is easy.

Choose the "Server" tab, then randomly right click on a server and choose "Use this as server"

To make sure it works properly, please choose one of these: https://github.com/fyookball/electrum/blob/b32f10a/lib/network.py#L54-L58

I've reported the bug to Electron Cash' developer. Thank you for noticing it!


Transactions that cannot be part of block

No, if the transaction is valid then it can always be included in a block if a valid nonce/extra nonce is found.


What happens when someone sends bitcoin to my wallet?

It's actually quite simple. Your wallet is a collection of private keys, each identified by an ID. When someone sends you bitcoins, those are just assigned to one of those private keys.

The information about which key has how many bitcoins is stored in the bitcoin network itself, ie in the database each client has.

Now if you want to use the bitcoins which belong to one specific key, you need this key to sign the transaction.

So no, you don't need to be online to receive a transaction. You can also restore an older backup, as long as you haven't created any new keys in the meantime. If you have created new keys, it all depends on your luck - was the transaction sent to a new or an old key?

And if it gets corrupted before you make a backup you are SOL - nobody has the correct private key then.


Check if received bitcoin are in blockchain/not pending without a transaction id

It's not how all exchanges are handling this.

Bitstamp is sending bitcoins in batch transactions. That means it is sending your bitcoins to your address and other users' bitcoins to their address in the same transaction.

That means that bitstamp does not yet know the TxId when you submit your withdrawal request.

That is the why.

As for how to solve it, yes you can get a new address for each withdrawal and wait for it to get confirmations. You will not be assailable for transaction malleability, double spending or similar if you do that.


Bitcoin Core transaction stay unconfirmed

Found solution in related posting a looong way down into previous answers:
Make use of the free ViaBTC Transaction Accelerator service (requires a minimum fee rate of 0.0001 BTC/kB): "https://pool.viabtc.com" under "Tool".


I need help on a 24 hr unconfirmed transaction on blockchain

It's "normal" but it shouldn't be :/ https://blockchain.info/unconfirmed-transactions when this goes pretty high there is a large list of transaction that needs to process and the miners are selecting the transactions that have the largest fee density. If you want you can post your transaction here and I'll give a more detailed explanation for your specific situation. The good way to avoid this is to adjust your miner/transaction fee in consequence of the size of the backlog.


Maximum # of hashes for finding a block?

The miner can change the block header hash several different ways:

Change the timestamp. This is the least intrusive, but works just fine. If you can do more than 4 Th/s, this starts to become a problem.
Add transactions. Adding any new transaction changes the Merkle root, so this gives you entirely new nonce spaces.
Change the coinbase transaction. This is the most common method. 32 bits are typically used to act as an additional nonce.


Why does "???" replace some values in this p2pool output?

2013-07-09 00:46:43.467000  Local: 0H/s in last 0.0 seconds Local dead
  on arrival: ??? Expected time to share: ???

There is no miner attached to the pool, "0H/s" means zero hashes per second.  And since no hashing is being performed the dead on arrival and time to share cannot be calculated, and thus are unknown.

  2013-07-09 00:46:43.468000  Shares: 0 (0 orphan, 0 dead) Stale rate:
  ??? Efficiency: ??? Current payout: 0.0000 BTC

Since mining is not occurring, the stale rate and the efficiency cannot be calculated, and thus are unknown.

You need to attach a miner to the p2pool to actually mine BitCoins.  Try something like GUIMiner.


There are two answers to your question.

For a signed message, you can recover the public key if you have both the signature and the message that was used to create the signature.  The algorithm actually returns four possible keys, so the signature includes a header byte to identify which of the four should be used.  This is possible because we know which curve (secp256k1) is used by Bitcoin when it generates the signature.  If you want to see how this is done, look at recoverFromSignature() here

For a transaction, the public key is provided in the input script, the output script or a hashed script.  In the case of a multi-sig transaction, there are multiple signatures and multiple public keys.  There are also multiple ways to sign a transaction as determined by the signature hash type (a control byte added to the end of the signature).  If you want to see how this is done, look at checkSig() here


How does TXID gets created and at which point

The TXID, the transaction ID, is a hash of the serialized (non-witness) transaction whose UTXO is being spent. It gets created at the same time as the transaction does


bitcoin alternatives for solo mining on an average laptops

My recommendation is to mine any currency that uses the scrypt hashing algorithm and sell your earnings for BTC.  There are many to choose from and sites like Coinchoose can help you determine which is the most profitable to mine and sell for BTC.

CPU mining isn't going to get you much but you can make some BTC this way.  If you have a GPU in your PC, make sure you run the right mining software that can utilize your GPU as well.


Is change of Bitcoin address of an account possible?

Yes, you can generate a new address and use that to receive transactions instead. However, note that funds from the old address don't automatically get transferred to the new address, so don't delete the private key to your old address! If you always keep a copy of your wallet.dat safe (with backups), you don't need to worry about this.
The (default) thing is just a label. You can rename it to anything you want. There is no difference between the "default" address and a new one.


You actually own a private key, which generates the public address which is given to you.

For example, let's say your public address is:

1E4CwvCLFkhAz8Zbkvh2HpmsNafk9ecvdo

The private key which generates that address is:

5HtxkoHrU6iGJXaNCQ5iAZBEXgTWk13k14SFpQrNJHVrJuTxN78 (Do not use this private key!)

To be able to add that address to your wallet, you need to add your private key to your wallet. What your wallet basically does is to show the balance of all your private keys. You can send and receive BTC through these addresses.

So right now you have BTC on the private key (or public address) which you ordered on Virwox. If you want to see it on your wallet, you can either add the private key to your wallet, or send those BTCs to the address generated by the Multibit wallet.

BTW: If you're going to send the BTC, please make sure that you backup your wallet just in case.

Kudos,

-Besir


What is the likelihood that an xPub child address is not owned by the same xPub address holder?

If you assume that an address is generated from a xpub/xpriv keypair, then yes, it would be safe to assume that the owner of that address also owns the xpub/xpriv keypair that that address was derived from. The probability that someone was able to generate the same address randomly or that someone was able to generate another keypair which also has that address as a child is so low that it is effectively 0.


Are there counterparty nodes that one can run to support the counterparty network?

Yes it does, the project runs a reference node.

The PoW comes from Bitcoin, but anyone can run a Counterparty node. I don't know if there's a name for it, but maybe it could be described as a community consensus approach. All Counterparty nodes can validate transactions embedded in the blockchain.

The purpose of burning BTC was to make it a non-scam token. Those who burned BTC committed to the project. Another way to put it is it's a project without "investors". Proof of Burn was rare then and in the flood of ICO scams, it's never applied these days.


Since Bitcoin has no central system, where do network request go?

Bitcoin is a peer-to-peer gossip flood network. Whenever a Bitcoin participant creates a transaction, their wallet software submits it to its peer nodes. These peers then relay it to their peers in turn. The transaction floods through the network and reaches most nodes. Eventually, the transaction is included in a block which makes the transaction part of the committed history of the network. Blocks have propagation guarantees, because the blockchain is the mechanism for nodes to converge on a globally shared state. Now, every node is guaranteed to get the transaction since they will get the block.
So, each transaction originates from the sender's node, and eventually, every participant's node will have a copy of each confirmed transaction.


How does a Lightning transaction work if one party starts with no Bitcoin and no wallet?

The classic example assumes that Bob is locking some Bitcoin of his own on the blockchain, and Alice and Bob are both funding a channel between each other.

This is not how lightning currently works! Currently only one side is funding the channel. People are working for a dual funding solution in which two parties fund the channel in a way how you suggested it. So if Bob does not have any Bitcoin alice could fund the channel and then send btc to Bob. (which should also be the answer to your question)


You should never deposit your coin to an exchange when the deposit function is disabled, your transaction will either be delayed or just gone.


Are there any projections about when transaction fees per block will equal block reward?

You can find out the average transaction fees gathered per block here. You can see that it's been slowly increasing recently, and there tends to be a block every year or so that skews the average quite a bit. But we can confidently say that currently, the average fees per block is around 0.35 BTC, which has increased from about 0.15 BTC of a year ago. Assuming a linear 0.2 BTC increase in fees per block per year, and a 4 year halving schedule we get these equations:

fees = 0.2 * x + 0.35
reward = 0.5^(x/4) * 12.5

Reward is a discrete function, so we can just see what happens at the halving in 2020, 2024 and so on.

2020:

fees = 0.2 * 4 + 0.35 = 1.15
reward = 0.5 * 12.5 = 6.25

2024:

fees = 0.2 * 8 + 0.35 = 1.95
reward = 0.5^2 * 12.5 = 3.125

2028:

fees = 0.2 * 12 + 0.35 = 2.75
reward = 0.5^3 * 12.5 = 1.5625

If it proceeds like this, it looks like there actually won't be a moment when average fees and reward actually equal each other as the reward will halve and will be bypassed by fees at that point suddenly.

A different (linear or non-linear) function for fees will obviously achieve different results as would the block halving time being a bit shorter than 4 years, but this projection does make it seem as though 10-12 years is around when fees and reward will approximately meet.


Bitcoin Address Received/Balance values differ from one explorer to another

When I looked,

one site said there were 120612 transactions
one site said there were 120614 transactions

one site alerted me that there were unconfirmed transactions

I surmise this is a highly active address and that different sites may have differing delays and differing thresholds for confirmation.

As Raghav noted in a comment:

  another factor is that some explorer count change sent to the same address as an additional incoming btc tx, while others (blockchain.info) don't. It would explain such a large difference in this case, since the address seems to output a lot of change to itself.


It means randomness. In computing, if something a source of entropy means that means it is a source of randomness.


concerning the mentioned website i advise you to read this extended discussion about : https://bitcointalk.org/index.php?topic=341659.0

concerning the faucets systems

  Bitcoin faucets are a reward system, in the form of a website or app,
  that dispenses rewards in the form of a satoshi, which is a hundredth
  of a millionth BTC, for visitors to claim in exchange for completing a
  captcha or task as described by the website.

purpose :

To introduce users to bitcoin
To get traffic
To make money

Besides, in the testnet the faucets are worthless bitcoins distributed for test purposes.


Only the ones with knowledge of the private key on that paper are able to send money from your address. If it's somebody else who also has your private key, it's weird that he/she didn't sent the entire balance.

Since it's impossible - let me repeat that, impossible - to send the funds without the private key, that leaves yourself as the only likely candidate who sent the 0,2 bitcoin.

Possibly you were performing another action like exchanging bitcoin for an altcoin using Shapeshift and you didn't (yet) correlate that event with the 0,2 transfer.


There is no hard limit on the size of the amounts objects you pass, but you may at some point reach the standardness limits on transaction weight.
As only one transaction will be created, an error processing any address will interrupt the whole process.

For the sake of the example here is a regtest transaction with 802 outputs (could not copy paste here as it reached the characters limit).


Is the current Bitcoin implementation easy for different users to participate in a single transaction?

The referenced paper is from 2013. It may have been true that at this time it was difficult, to share a spending activity amongst users. This link here https://gist.github.com/gavinandresen/3966071 explains the details around multisig, and comes in early 2013. As of today, you got it correctly, we have multisig in two variants, and the statement doesn't hold true anymore.
On the aksed sources: there was a paper from 2014 (http://www.quantabytes.com/articles/a-survey-of-bitcoin-transaction-types), that evaluated the distribution of transactions type, but that is the last I know of... and I haven't seen any updates since then.


This question has been asked in the #api-developers channel of the Bittrex Slack Group a few times.

Here's the important fragment of the discussion with somewhat an answer to our question.

  July 2nd, 2017

Some user:
seriously guys.. the rate limit.. what is it..

bittrex-bill:
It varies by API call.
If you hit the limit, you are abusing it. If you hit the limit a lot, you risk getting banned :)
I dont have a clearer answer for you right now

Some user:
Is greater than 1 minute consistently 24/7 within an acceptable use?

bittrex-bill:
yes

That's it! I personally wish they would update the API docs with a clear and hard limitation, but for now, when we're writing code that is long-running, and executes in a loop, we should try to cap the requests around 1 request per minute per API method.


On July 29 2010, it was discovered that block 71036 contained several transactions with a ton of OP_CHECKSIG commands. There should only ever be one such command. This caused every node to do extra unnecessary work, and it could have been used as a denial-of-service attack. A new version of Bitcoin was quickly released. The new version did not cause a fork on the main network, though it did cause one on the test network (where someone had played around with the attack more).

https://en.bitcoin.it/wiki/Incidents#OP_CHECKSIG_abuse


What is transaction not found on blockchain mean? Does that mean transaction still waiting in mempool, unconfirmed or never broadcasted on blockchain?

Is this waiting in miner's mempool to be picked up?

No. Broadcasted transactions are visible on block-explorer sites (in most cases)

  Is this unconfirmed and already dropped from the blockchain network.

It is unconfirmed, but not because already dropped, but because not yet broadcasted

  Transaction have some error to start with and never broadcasted on blockchain network?

May be. Only sender knows the correct answer

  None of the above and have some other issue?

If it is not seen - it does not exist. Point.


How can I get my peer's ban score for my node?

Correct: there's no provision in the P2P network protocol for your peers to tell you what ban score they've computed for you.

Since each node connected to you separately computes a ban score using its own rules, there's no way for you to confidently know your ban score unless you have some sort of monitor that knows all the ban score rules for all the full nodes connected to you.  (E.g. the rules for Bitcoin Core 0.9.0, 0.9.2, 0.9.3, etc...)

You could get a rough idea by running a separate Bitcoin Core full node that connects to your node using the whitelist option.  With whitelisting enabled, Bitcoin Core still calculates the ban score and prints it to debug.log even though it will never disconnect because of a high ban score.


Do payment processors who convert bitcoin to dollars (like Coinbase and Bitpay) devalue bitcoin?

For every Bitcoin they sell, someone else had to obtain that Bitcoin. So they increase the demand for Bitcoins by at least as much as they increase the supply.

In addition, they increase the utility of Bitcoins, which increases their value. All other things being equal, a currency you can spend at more merchants is more desirable than one you can spend at fewer merchants.


How can I get the list of all bitcoin transactions?

The list of all transactions is the blockchain. The fastest way to get the blockchain is to run a full node which will download the blockchain for you and provide ways for you to access the data stored within the blockchain.

You can use Bitcoin Core and enable the transaction index so that you can get all transaction information. The transaction index is enabled by adding txindex=1 to your bitcoin.conf file.


How are utxos associated with a particular address?

Is there a way to add or associate utxos with a particular address without creating a transaction?

No. UTXO stands for Unspent Transaction Output. The only operations on UTXOs are creating and spending them, and both of those operations involve a transaction.


How much space does a backup of a wallet usually take?

Wallet backups are a few megabytes, depending on the number of transactions it has made.


What do they mean by "Make sure to send enough to cover any coin transaction fees!"?

Perhaps they meant "don't subtract fees from the amount" That is, if you owe 0.1 BTC and you have 0.1 BTC in you wallet, you shouldn't pay.


Found Bitcoin Core Wallet with unconfirmed Transactions, anything to salvage?

Wait till it syncs to today. If remains the same, congratulations, you're $100k richer. Otherwise pretty useless.


How does the most recently found critical vulnerability (CVE-2018-17144) work?

If you were a miner, what are the steps you would take to create the extra (21,000,012.5th) bitcoin?
Where in the source code is this exactly (link)?

There are two components to CVE-2018-17144. There is a crash bug and an inflation bug. Both are triggered by almost the same scenario: a transaction contains an input multiple times.
In general, how this would work is as follows: lets suppose a miner has an unspent output A for 1 BTC. They create a transaction with that input in twice, so input 1 spends from output A and input 2 also spends from output A. The output of that transaction has a value of 2 BTC. Note how the output's value is larger than the value of output A, but if you had output A twice, the value is correct.
The miner would then take this transaction and include it in a block that he is mining. Once the miner find a block with his transaction included in it, he broadcasts it to the Bitcoin network.
When a Bitcoin Core 0.14.x node receives this block, it will validate the block, but it will skip the duplicate input check because of the false parameter on this line. So the transaction the miner made will pass this step of validation, and the other transaction validation steps, including input script validation, until it reaches this loop. In this loop, the inputs to the transaction are being marked as spent in the UTXO database. The first time the duplicated input is seen, it is marked as spent. But the second time it is seen, the coin is already marked as spent so coins->vout[nPos].IsNull() will be true. This means that it will go into this if statement and subsequently hit the assert statement that follows. The assert causes the software to crash.
For Bitcoin Core 0.15.0 - 0.16.2, the behavior is different. This is due to the change in how the UTXO database is structured. Everything is largely the same until the same loop is reached. Here, instead of returning whether the output was spent, SpendCoin actually returns whether the input exists in the database. So the first time, it will pass as expected, but the second time, instead of returning false, it still returns true.
Looking at SpendCoin, you can see that it only returns false when it is unable to fetch the coin (object representing a UTXO) from the database. With the new database structure, this makes sense as the output should be removed from the database when it is spent. But, if you look a few lines down, you see that it only deletes the coin when it is marked as FRESH. In the case the coin was FRESH, SpendCoin would delete the object on the first pass so the second pass the coin would not be found and thus it would return false. This triggers the assert following the function call causing the node to shutdown.
If the coin was not FRESH, the coin object itself is not deleted, but its contents are cleared. This means that the second time the input is seen, if the coin was not FRESH, SpendCoin would still return true as the object still exists in memory, which means that it passes the assert that follows the SpendCoin (which caused the crash when the coin was not FRESH). Then validation continues as normal, and the output this transaction created is added to the UTXO database, which means that money that shouldn't exist now exists in the UTXO database.
So now the question is, when are UTXOs marked as FRESH? They are marked FRESH when they are added to the UTXO database. But the UTXO database is still only in memory (as a cache). When it is saved to disk, the entries in memory are then no longer marked as FRESH. This saving to disk happens after every block (as well as at other times, but that is not important).
Thus, if a miner has an output that was part of a transaction that has already confirmed, and he spends the output twice in the same transaction (so the transaction has two inputs that refer to the same output), and this transaction is not broadcast to the network but instead included in a block that he mines, he is able to create a new output that has twice the value of the output that he spent, thereby creating coins.

Why can't this be done by a non-miner?

The reason that this cannot be done by a non-miner is because transactions that are received outside of blocks are still checked for duplicate inputs. The transaction will be rejected as invalid and not added to the node's mempool, so the transaction will never get into a block. It is only transactions with duplicate inputs that get into blocks that trigger this vulnerability, and thus only miners can do this as they must knowingly insert an invalid transaction into their block.

Also, which forks are/were vulnerable?

Any fork whose software includes commit eecffe50efc3944d713c701fa375dacbf17fb7cf. This would mean any software forked from or pulled in changes from Bitcoin Core after November 10th, 2016.


How does my hardware wallet know what my "account" balance is?

The hardware wallet itself does not know your balance nor does it need to. It does not query anything or anyone to get that information. It is the software that knows your balances. The wallet software will ask your hardware wallet for a master public key, and from there it derives the addresses in your wallet, but not the private keys (private keys cannot be derived from the master public key). It can then use the derived addresses and look up their respective balances. So the wallet software that you are using on your computer does this lookup and tells you, not the hardware wallet itself.

When you send, your hardware wallet might say "sending X Bitcoin" on its screen. That is not because it knows the balances but rather because the wallet software on your computer communicated that information to the hardware wallet. In many cases, the hardware wallet does not care about the balances and the information will be thrown out. The amounts are only there in order to be displayed to the user for confirmation that the transaction should be made before it is signed by the hardware wallet.


Can I use my Bitcoins to buy household commodities just like ordinary money?

Currently there are relatively few shops that accept Bitcoin. If you want to know whether your local stores accept it, you will have to ask them. (Be prepared to be told "no" or more likely "I have no idea what you are talking about.")

Your title about "legal tender" is actually asking something different. "Legal tender" is a legal term, referring to a method of payment that must be accepted to settle a debt. As far as I know, Bitcoin is not legal tender in  any jurisdiction. However, people are still free to accept it if both parties agree (unless other local laws forbid it). In any case, legal tender is irrelevant to retail purchases, where no goods have already changed hands and no debt exists ahead of time. The seller can decide what forms of payment they do or don't want to accept.


My understanding of cryptocurrency that it is uncontrolled and no mediators and no fees for exchange

Bitcoin is a protocol for peer to peer decentralized network. BTC is the symbol for bitcoin, currency used by this network. Every bitcoin transaction involves a fee which is decided by users. Check https://mempool.observer to see what fee rate is used by others for unconfirmed transactions. This fee is an incentive for miners to include transactions in blocks and they normally prioritize transactions with higher fee rates.

Today I registered at coinbase and it asked for my ID and veridication

Coinbase is a KYC exchange.

and when i wanted to purchase coins I got 10% going for fees !!

This fees is decided by exchange and has nothing to do with Bitcoin protocol.

How can I trade cryptocurrency the way it meant to be fees-free, unidentified, and secure?

Check other exchanges that don't require KYC and allow P2P trades and use the one that works better for you:

Bisq: https://bisq.network (This may require some security deposit)
HodlHodl: https://hodlhodl.com


Creating a raw transaction using Bitcoin Core v0.10.0 bitcoin-tx / createrawtransaction

For the first command, you need to include the JSON in single quotes, like so:

$ bitcoin-cli createrawtransaction '[{"txid":"dbdc2e2c7f143af70c5e7e8725f55d226b3c058d7bf34a303091b3c6a514848c","vout":1}]' '{"1BCi1L25GC9hUSvtSyGjmEvSyywoYubk4P":0.00011}'
01000000018c8414a5c6b39130304af37b8d053c6b225df525877e5e0cf73a147f2c2edcdb0100000000ffffffff01f82a0000000000001976a9146fe8102ebe0fccb56de43ec82601ba16c68496af88ac00000000

The bitcoin-tx utility uses a shorthand that is deployed in the bitcoin unit tests. This example might help you use this command:

$ ./bitcoin-tx -create in=0fb9df5614be8b33be0434ce4062750d83f1b7ce05cc1296604f82eb9abf802b:0 outscript=0.00159999:"DUP HASH160 0x14 0x6793a38f79b8cd51dbb6face6dc75a4af5c1bf29 EQUALVERIFY CHECKSIG"
01000000012b80bf9aeb824f609612cc05ceb7f1830d756240ce3404be338bbe1456dfb90f0000000000ffffffff01ff700200000000001976a9146793a38f79b8cd51dbb6face6dc75a4af5c1bf2988ac00000000

The code for parsing the scripts can be found here. However, I find just looking at some examples in the unit test data to be helpful as well.


Is there a way to generate a brain wallet from the command line or console?

Answer was here: https://en.bitcoin.it/wiki/Wallet_import_format

To make brainwallet need to take a sha256 of password:

# echo -n 'yourbrainwalletpassword' | sha256sum
8abe468e0d5a814c644d9517ae35b36666d554b7bd682fa28c39e90d0cb5f91a

I've write a little bash script:

declare -a base58=(
      1 2 3 4 5 6 7 8 9
    A B C D E F G H   J K L M N   P Q R S T U V W X Y Z
    a b c d e f g h i j k   m n o p q r s t u v w x y z
)

encodeBase58() {
    dc -e "16i ${1^^} [3A ~r d0<x]dsxx +f" |
    while read -r n; do echo -n "${base58[n]}"; done
}

[ -z "$1" ] && echo "Usage: ./script.sh privkey" && exit 1

privkey="$1"

stage12="$(echo -n "$privkey" | sed -e 's/^/80/')"
stage35="$(echo $stage12 | xxd -r -p | sha256sum | awk '{print $1}' | xxd -r -p | sha256sum | awk '{print $1}'  | cut -b 1,2,3,4,5,6,7,8)"

echo "$(encodeBase58 "${stage12}${stage35}")"

Use this script against sha256 sum:

# bash script.sh 8abe468e0d5a814c644d9517ae35b36666d554b7bd682fa28c39e90d0cb5f91a
5JsPbHfVB7FeD6gGWoaQv6khRsasTJDK1tAiJ4TxgyWJLcjfgNa

Now, I can import privkey to the wallet.dat:

# bitcoind importprivkey 5JsPbHfVB7FeD6gGWoaQv6khRsasTJDK1tAiJ4TxgyWJLcjfgNa "yourbrainwalletpassword"
# bitcoind getaddressesbyaccount "yourbrainwalletpassword"
[
    "1Gu3HZDq6YEXfxwDC3A3EhDfEVAeCijbEt"
]

According to wiki, there are higher and lower borders.

  Nearly every 256-bit number is a valid private key. Specifically, any 256-bit number between 0x1 and 0xFFFF FFFF FFFF FFFF FFFF FFFF
  FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4141 is a valid private
  key.

However, I'm successfully import priv key

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

After a while, bitcoind tell me:

error: {"code":-1,"message":"CKey::GetPrivKey() : i2d_ECPrivateKey failed"}

Hope it would be helpfull.

Thank you !


Can the service providing the bitcoin wallet know how much value has the user loaded into his wallet?

All Bitcoin transactions are publicly available. This is fundamentally why Bitcoin can work as a truly decentralized currency. Bitcoin is different from the traditional banking system specifically because anybody can see and validate everyone's transactions. If only a few could access the information about people's balance, then it wouldn't be fully decentralized, it would be just like traditional banking.

So yes, you can calculate the balance of any Bitcoin address in the network.


Does there exist any cryptocurrency that doesn't tend to centralization?

With P2Pool there's no central pool authority so it's as decentralized as it gets. The problem is that miners don't like to use it because it requires a copy of the entire blockchain. I hope this gets fixed with new bitcoind version that allows to prune and delete some history, and would therefore allow to run full nodes with less effort.


Is Merkle tree pruning described in the whitepaper feasible/useful? If not, would there be any alternative?

From what I understand, a full node will download everything, verify everything first. Then only the pruning starts. Thus, the issue of inconsistent pruning does not arise. As off now, there is no common consensus on the UTXO sets. For example, up to block 500,000, the UTXO set is "XXXX".  Just download "XXXX",it should be fine. I believe we will have this feature in the future. As off now, fullnode have to download everything, verify and then only prune.


Can you run P2Pool without having to keep the blockchain updated?

You could run the Bitcoin client on a separate machine, and connect to it over the network.


Account extended private key vs BIP32 extended private key

BIP 32 extended private key is a more generic term that refers to any private key that is derived and serialized according to BIP 32.

Account extended private key is the BIP 32 extended private key at a specific derivation path. This is described in BIP 44. For P2PKH Bitcoin addresses, this derivation path is m/44'/0'/0'.


Non-Bitcoin blockchain security questions

Ethereum is one example of the blockchain used to store the contract transactions. Nodes on the blockchain validate the transactions and add it to blockchain. Ethereum also has it's currency and miners are rewarded for doing work. What you think is absolutely right, if you don't have any incentive mechanism in place then only few people will mine and network can easily be attacked.
When companies talk about using blockchain for only themselves, they are referring to private blockchains and not public. Node needs permission before they can join this private blockchain thus not prone to attack. Otherwise in public blockchain anyone with 51% majority can easily alter the transactions. Some attacks are possible even at 33% majority.


How do I run Separate Mining Devices With BFGMINER?

I do this by running two copies of BFGMiner and using the --scan parameter to specify which devices are used by each miner.  In my case, I have a bunch of USB Block Erupters and a BE Cube.

One BFGMiner specifies '--scan none' and '--http-port 8330' to support the BE Cube (which connects over the local network).

The other BFGMiner specifies '--scan-serial erupter:all' to support the USB erupters.

This is also useful when the devices vary in hash power.  I set the USB erupters to difficulty 4 while the BE Cube is set to difficulty 16.


Consequences of sibling keys when xpub and xprv are leaked

You have interpreted that correctly. If your child extended private key belonging to path m/44'/60'/4'/0 is leaked, the attacker cannot figure out the child extended private key from path m/44'/60'/4'/1.

The non-hardened derivation for child private key is kchild = kpar + hash(Kpar, cpar, i). Here k represents private key, K is the public key, c is the chain code and i is the index number. If you note, the index number sits inside the hash function in the child key derivation. Since hash functions are undeterministic, slight change in its input can have a very different effect on the output. Hence incrementing the index number i from 0 to 1 will yield completely different result and hence cannot be back-calculated.

However, do note that according to BIP 44 derivation, the index number after the account level denotes whether it is receiving or change. The child extended private key that has been leaked (index = 0) will act as a parent private key to derive all receiving addresses belonging to account 5. Thus all receiving addressees derived from the 5th accounts are compromised in your case.


Where can you see current Bitcoin miners signalling SegWit2x?

Blocks signalling for the SegWit2x, i.e. the New York Agreement segwit activation (BIP91), are setting bit4. This shows up as a '1' in the second to last position of the version field. Blocks signalling readiness for BIP141, i.e. regular segwit activation, do so on bit1 which shows up as '2' in the last position of the version field. It is also possible to signal readiness for both:

  20000010              20000002               20000012
        ↑                      ↑                     ↑↑
       bit4                   bit1                   bit4 and bit1

xbt.eu is explicitly tracking the bit4 signalling already, but you can see the version field for blocks on most block explorers, and sites that track such information such as coin.dance.

Note: Bit 4 refers to 1<<4 and is thus the fifth bit from the back because the first is Bit 0. ;)


What is the benefit of forced signaling in a soft fork activation mechanism?

It depends highly on who you ask. Indeed, I (and several others) have argued that there is no reason whatsoever for forced-signaling. Greg Maxwell wrote a long and in-depth piece about why it provides no additional assurances beyond what any soft fork provides on GitHub, which is likely of interest to anyone coming across this post. Ultimately, the point is all about "when is a soft fork active". Probably the best resource on the subject is Pieter Wuille's old post from 2015 on bitcoin-dev, but to summarize, the answer is, largely "when it is understood that the vast majority of economic nodes in the Bitcoin system are enforcing the rules via full node software which they run", in other words "when full nodes are enforcing it".
Some confusion has entered the discussion as, in many past soft forks, we've utilized miner signaling to bridge the gap between old full nodes unaware of an upgrade and new full nodes enforcing the rules. Effectively, we've said "the soft fork is active when new nodes have upgraded and miners have signaled readiness above a certain threshold" - ultimately it's about nodes having upgraded and enforcing the rules, but there's nothing to stop us saying "nodes only enforce the rules if miners upgrade". Similarly, there's nothing wrong with saying "nodes always enforce the rules, because miners aren't doing something users want".
In general, the argument in favor of forced-signaling basically goes like this: "if we start by assuming users are running software which interprets the signaling bit, then ensuring the bit is signaled on ensures that users are enforcing the rules". However, there's not a lot of reason to make that initial assumption. The reason we do use miner signaling in the first place is it reduces the risk of forks and reorgs visible to un-upgraded nodes - something that could expose some users to fund thefts due to double-spend. However, if we use forced-signaling, that advantage goes out the window, indeed, we get the exact opposite outcome - on day one of the fork, we immediately create reorgs visible to un-upgraded nodes, putting their ability to accept payment at risk.


Do I have someone else's private key in my wallet, or has my wallet been compromised?

This is indeed strange.

What you should have done before upgrading Bitcoin-Core (if your old Core wallet didn't had any funds in it) delete the wallet.dat file.

Because you are using now keys that where exposed on your hard drive since 2015.

This is the case because Bitcoin-Core uses "key pool". Once you launch Bitcoin Core the first time, it will pre-generate 100 keys (these are the reserve=1 keys in your dump).

My recommendations would be creating a new wallet (these steps assume you currently have funds in your wallet):

Stop Bitcoin-Core
Move your wallet.dat to somewhere save (rename it wallet.old.dat)
Start Bitcoin-Core (a new wallet will be created)
Encrypt your wallet with a secure passphrase
Copy out a new address to send your old funds to.
Stop Bitcoin-Core
Move your wallet.dat to somewhere same (rename it wallet.new.dat)
Move back your wallet.old.dat to your datadir and rename it back to wallet.dat
9 Start Bitcoin-Core and send all your funds to the address in your new wallet (step 5)
Stop Bitcoin-Core, move away your old wallet and move back your wallet.new.dat to your datadir
Start Core, and check if your funds are there


BTC-E API and determining volume for any time interval

I would not rely on vol or vol_cur as they are computing data in a way you do not want from data which is available to you.

My recommendation would be to save the data of individual trades using btc-e API function TradeHistory. You can run a loop which would take the first result returned and using the timestamp as the parameter "end" for the next API call. Be aware that you will receive this and other transactions with the same timestamp in duplicate (so be sure to check the record doesn't exist in your db before adding it).

This way, you can write your own scripts to get your own averages and volumes over any time period you want :)


Is calling the bitcoind RPC multi-thread safe?

It can be done safely but it can also be done unsafely. If each thread uses its own connection, then it is safe. If the threads "fight" over the connections, then it won't work.


Setting up a coinbase like service in India , need suggestions

You should first consult a lawyer in your country and discuss such topics as:

Money laundering laws
Whether Bitcoins are considered a currency, commodity or none of the above
Regulations considering money exchanges

In relationship to the law in your country. It would also be good to asking a legal representative of the government for an official statement in writing on trading Bitcoin and their legal status. This way you would be able to refer back to that decision in case any legal doubts come your way.

Having done that, the procedure would probably be similar to starting any business in India, with a possible addition of any special laws that you'd have to abide by when running an online money exchange.

I should state however, that I am not a legal expert nor do I have any experience with running a business in India. As stated above, consult a lawyer before taking actions.


Add wallet feature to bitcoind (full node) after installation with --disable-wallet

The data directory is independent of the installation. Just recompile with the wallet enabled, install the binary over your existing one, and it'll use the same data directory and all of the data inside of it.


How to send bitcoin with a message attached

The payment protocol (see BIP 70-72) will support attaching messages to transactions.

Note that these messages do not end up in the blockchain, which is the right way to do it, as they are private information between sender and receiver - no need to make the entire world replicate it.


Segwit2x will have a larger block size. This means that the amount of data in a block will be larger, which implies that more data is being transferred and stored for each block. So yes, it will require more bandwidth and disk space.


The order of the generator point G used in bitcoin

It's easy to verify the order (n):  Multiply G by n and find that you get the point at infinity. This proves that n is either the order or a multiple of it. Then convince yourself n is prime using a Baillie-PSW primality test, so it must be the order itself and not a multiple of it.

Finding the order is not quite so simple as verifying it. To do so you would use Schoof's_algorithm, which requires quite a bit of number-theory complexity. The Wikipedia article on Schoof's explains how Hasse's theorem is critical to this process by restricting the range of orders that could possibly be the correct one.


How can I use a large input if the difference of the outputs and the inputs goes to the fee?

You would create a transaction with two outputs, one being 0.001 BTC to the recipient, another being 24.9989 back to another key you own yourself (called a change output), and the difference of 0.0001 BTC would be fee.


how would a core change be possible if it is not forced to all nodes?

Simple, it can't be. You can't force a change, users must willingly adopt it.

The bitcoin network is very conservative in regards to changing network rules, especially the rules that keep the nodes in consensus. This is by design: users that engage with the network have a high degree of certainty that no single actor (or group of actors) can force a change on the network. You could say that the rules of bitcoin are enforced by the code, not by the whims of some future politician. As it is often said, the inherent difficulty to change bitcoin's rules is a feature, not a bug.

There are specific details depending on the rule change in question, but in general: making a change to the bitcoin network requires an overwhelming majority consent. To avoid messy fork situations, changes need to be planned carefully and accepted pretty much globally.


Could there be a "run" on Mt Gox? Does Mt Gox use my balance for other purposes behind the scenes?

I think your question is based on the false assumption that there is some 100% safe way to store money that doesn't cost anything. Mt Gox can't stuff your money in their mattress, and even if they did someone could come along and steal the mattress. They have to sensibly balance risk and cost -- zero-risk is not a sensible or achievable goal and is not available for free.

There is always a chance that an exchange will not have sufficient liquidity to meet withdrawal demand. When that happens, they have to process withdrawals more slowly. But the alternatives are more expensive and would mean the exchange would have to charge higher commissions. Exchanges like Mt Gox have strong incentives to get this balance right -- a reputation for slow withdrawals will hurt their bottom line and, of course, high commissions drives away customers.

So you can tell how good a job they're doing by looking at how their customers rate their withdrawal experiences and what their commission rates are. If you think they're not balancing cost and risk right, use a different exchange.


It is always up to the wallet client to decide which UTXOs are to be spent.  The protocol certainly doesn't require all UTXOs of an address to be spent at the same time.  A particular wallet client could be coded to do that, but I don't know of any that are.

Here you can see a testnet example.  Transaction 90d042b... spent only 2 of the 9 UTXOs available in address moooopfhBjQDSJQuCj4aVr6s4b5pFbQin4.  This transaction was created with just the ordinary sendtoaddress command in Bitcoin Core, no special options.

This isn't a significant security risk.  In a secure digital signature protocol, it should be infeasible to generate a valid signature without access to the private key, even if the public key is known.  That's what "public" means!  As far as we know, ECDSA is secure, so revealing the public key doesn't harm security.

Some people believe in planning for the possibility that an attack might someday be found on ECDSA.  If so, then there would be some advantage in not having revealed your public key.  After a new signing algorithm is incorporated into Bitcoin, you could create a transaction sending your coins to an address which uses the new algorithm.  This would reveal your public key and attackers could get started, but assuming the attack is fairly computationally intensive, you hope your transaction would be confirmed before an attacker could successfully create a forged signature on a transaction that would send your coins to him.

The tradeoff of this approach is that, as you note, as soon as you want to spend any coins from an address, you have to spend all the UTXOs.  This increases the size of the transaction and thus costs you more in fees.  That's why most clients don't do it; the security improvement is theoretical at best, but the costs are real.


You can use MacMiner

either use the fpga/asic or bfgminer window (which both use bfgminer) or the cgminer window depending on your driver setup. on 10.9 bfgminer should work without driver meddling and prior to 10.9 cgminer should work without installing drivers. You can run either from the command line or through MacMiner.


Is it necessary for blocks to record the nBits difficulty parameter?

Recall from the Nakamoto Whitepaper that for Simplified Payment Verification (SPV) clients, security is measured mainly by the amount of work done to secure a particular transaction.  SPV nodes can't use past headers alone to verify that an incoming payment is valid, so there's technically not much need to store past headers[1].

Of course, if you're not going to store all the headers, you need some way to measure difficulty for the headers you do have---and nBits provides that.

Note that storing recent headers can increase an SPV client's security by allowing it to calculate proper difficulty for later headers.  This ensures an attacker trying to lie to the client has to create proper-difficulty blocks.  Still, a complete headers chain isn't needed here, so nBits is still useful as a starting value.

[1] But BitcoinJ and all other SPV clients I know about still do store complete headers.  At a guess, the reason they do is to help them detect chain re-organizations (reorgs) that would render a previously-received payment invalid.


Can bitcoin be used for instant payment?

There are situations where accepting a 0-confirmation transaction is low risk, but that's certainly not generally advisable. Double spending a 0-conf transaction is very easy to do with high success rates. So yes, in general waiting for a few confirmations is required.

But Lightning Network is being developed right now by several parties, which is a layer on top of Bitcoin that will allow instant payments without waiting for confirmations at all. It will also allow much smaller payments (micro payments), fast rate (many payments per minute) and lower fees.

In time, LN should eliminate the need for 0-conf transactions completely.


How safe is bitcoin with regard to a random address generation attack?

Ok, I'm spoiling the fun of you working it out yourself, but I had too much fun working it out myself to not post.

In order to have as many target addresses as possible, let's suppose every satoshi that will ever exist (21e6 * 100e6 = 2.1e15 or 2.1 quadrillion) were in a different address.  And let's suppose someone developed an ASIC that, at the same rate as today's ASICs compute SHA256D, could generate a private key, compute the corresponding public key and address, and check it against all 2.1 quadrillion of those targets.  (This is absurd - generating an ECDSA public key is many orders of magnitude more complex than an SHA256 hash.)  Suppose they deployed this ASIC on the same scale as today's entire Bitcoin mining network.

The current Bitcoin difficulty is about 4e10, meaning the network as a whole is computing 4e10 * 2^32 = 1.7e20 hashes per second.  So let's say our imaginary attacker's network is generating 1.7e20 private keys per second.  Each private key has a probability of 2.1e15 / 2^160 = 1.4e-33 of matching one of the target addresses.  So the attacker finds a match at a rate of 1.7e20 * 1.4e-33 = 2.4e-13 per second.  On average, it takes 1/2.4e-13 = 4.0e12 seconds, or roughly 130,000 years, to find one match.

So this highly dedicated attacker, who is spending millions (if not billions) of dollars on ASICs and electricity, will be able to steal an average of one satoshi every 130,000 years.

One really has to come to terms with how mind-bogglingly fast an exponential function grows.  160 bits seems like a very small amount of data, but 2^160 is an incredibly huge number.


Multiple transactions for a single payment in bitpay

I contacted BitPay support about the issue and they said that it'll just work.

So we made our payment via 3 different transactions. As soon as all transactions were made, the BitPay window informed us:"This invoice has been paid." At that moment either one of the transactions had a single confirmation or none had any. Then came the confirmations.

Addendum - The official response from BitPay support for question on paying via multiple transactions:

  "That should be fine. However with bitcoin you can structure a transaction to be paid
  from several accounts at one time. That's one of the cool concepts of
  Bitcoin. I recommend you check it out on wikipedia.

  For sake of time your method should be sufficient. Make sure you do
  sufficient fees to speed up the transaction."


Is it possible to connect remotely to a c-lightning node with an exposed TCP port?

EXPOSE_TCP is implemented in c-lightning's docker script:

https://github.com/ElementsProject/lightning/blob/2945b25b57db37dca31c10da34a4b1ca33d697c3/Dockerfile#L103

https://github.com/ElementsProject/lightning/blob/master/tools/docker-entrypoint.sh

If you didn't use that script or didn't implement it in your own docker script, it won't work.

It's easy to mistake EXPOSE_TCP for a parameter you can set when spinning up c-lighting.


If there was a special place to buy bitcoin at a lower price, peoples or bots will rush it to buy all of them then resell it rendering this special not so special any more.

Still there is some places where you can find some interesting offer I guess, like https://localbitcoins.com/ which offer to buy bitcoin from people in real life and https://bisq.network/ which is a decentralized exchange, I suppose there must be some shady link like on the tor onion network too. Be careful of scam especially those offering to sell discout bitcoin from past hacked exchange.


What does a negative "confirmations" value in listtransactions mean?

-1 means not in local mempool and not in a block


Multiple copies of wallet.dat with a constraint

The risk is if you have shared private keys on multiple computers. Even if you maintain a personal discipline that you won't spend from those other 4 wallets, the risk is still there.  With those private keys still on the other computers, you have opened up 4 additional vectors of attack on your keys, as well as given yourself 5 times the workload securing it all.

You should only have the private keys for your addresses on the one machine that you say you want to spend from.

On the other 4, you should only use "watch only" clients, such as the online wallet at blockchain.info or Armory. There are others as well. Both of those wallets will let you set up public keys to watch, but not spend from, because they don't also have the associated private keys.

Watch only wallets can receive funds just like any other wallet -- you're just watching the balance on the blockchain.


Yes it's a lot faster. For example from one of the core developers:

reddit - Pieter Wuille / 2015-02-19 18:13

  Just did a benchmark on libsecp256k1's current master, without GMP,
  without hand-written assembly, and it's around 3.6x faster than
  OpenSSL on my machine (64-bit code, i7 cpu). When the assembly is
  compiled in (which does not require any extra dependencies anymore),
  it's 4.9 times faster.

http://www.reddit.com/r/Bitcoin/comments/2weymr/experiment_bitcoin_core_0100_initial_sync_time/coqghm2

This talks about signature verification, which is currently the bottleneck when catching up to the blockchain.


What should I tell someone so they can restore my bitcoin from a seed in 20 years?

You probably can get that engraved or something since its a general background information.

But if you do not have the room or want to stamp that much, you could probably get away with a few key words such as wallet recovery seed, trezor, BIP39, etc. One could search those few terms and find out what it's for. Although, it is a bit of a security risk if a random person finds it.


How to build Bitcoin Core Linux tarball from sources

The compiled binaries on the website are built using gitian. This is deterministic so you'll get an identical build to everyone else who has built it, for verification purposes. You can find instructions on how to do this here: https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md


Is there a rationale for the compact representation of the target?

It looks like the format was designed for other purposes than Bitcoin's target, and used unmodified in the code.

If you want a rationale for why a compact representation in the first place: not to waste space in block headers, presumably. We now know that there is little need for having the target stored in block headers at all (header-first sync does not need it), but before that, it was needed for certain DoS protections.

The particular choice indeed seems a bit odd; the sign bit is certainly unnecessary, and the ranges seem a bit off. However, it's not a terrible choice for a simple generic 32-bit floating point number.


Is there a simple method of tracking number of transactions sent to an address?

You can see the number of transactions for a Bitcoin address. That's easy. Either through a desktop wallet(Like Bitcoin QT) or using services like blockchain.info. Just search for an address there.

You can't do this for your site thought because you're using Bitpay and they provide a unique address for each payment to your site.

Even if you weren't using Bitpay, you would need to generate a unique address for each purchase on your site to be able to figure out which customer paid how much and when.

You could take an aggregate of the transactions and display them along with each unique address you used but I would strongly advise against it. Because then people could easily trace where you spend the Bitcoins that your customers paid you.

Try getting the number from your accounting records instead of trying to get it from Bitcoin payments ;)


Old Bit Coin Wallet Failing to Pass 180 Weeks

First of all, backup your wallet.dat even if you are not going to do anything to the wallet.

I don't know if you are open to using other wallets, but you could recover your bitcoin by following these steps:

Unlock your wallet
Use the command dumpprivkey "YOURADDRESS" from the Bitcoin Core console
Import the private keys on a lightweight wallet such as Electrum (Warning: There was a scam message being shown in Electrum sometime ago)


How do I broadcast an "alert" message to the network

You can't. bitcoin-cli has never had the capability to send alerts. It is not possible for a user to push out an alert from any Bitcoin Core node.

Alerts were sent by using a specially modified version of Bitcoin Core which had the particular alert to be sent hard coded into it. Developers have to modify Bitcoin Core and include the alert code in a local build every time they wanted to send an alert.


Cryptocurrency Exchanges that accept VISA Debit Card Payment

@Rizstien, I use Coinbase, they take credit/debit cards but charge 3.99% as opposed to 1.49% if you link a bank account. There is a verification process though, don't know how long it takes for credit cards. It took 3 days for my bank account to be verified. Then another 7 business days before transferred funds are available. Credit cards may take a lot less time but cost more to buy coins.


Slow sync running Bitcon full node on Mac Mini OSX

Syncing the bitcoin blockchain on lower-end hardware takes it's time. Just let it run.


It's an issue related to htlc.me
I can receive payments using lnd.fun website


They don't reuse market IDs. For example, SaturnCoin (SAT) has been deleted and replaced with SAT2. That was market ID 168(search for cryptsy. It links to https://www.cryptsy.com/markets/view/168). If you want to go there, you'll be redirected to the home page. SAT2 has market ID 233. Why wouldn't they replace SAT/BCT with SAT2/BTC? Anyhow, market 248 (latest at the moment) does also exist, which is later introduced then SAT2 and probably also later then the removal of SAT. Based on this, I think I can safely say they will not reuse the market IDs. And why would they? It will only be confusing and frustrating.

For the other two exchanges, I am 100% sure they will not reuse their IDs. If you go to a specific markets, the url consists of something like BC/BTC. Unless their is some new coin stupid enough to launch with the same abbreviation , there is no chance it will have the same ID.


Transaction has 100 confirmations but it's not being shown in my Exodus wallet

The address 1UyoY... is currently funded, so the transaction did indeed go through.

If Exodus wallet shows you 1UyoY.. as a receiving address but no current balance, then your wallet is not in sync with the network.

If you cannot get Exodus wallet to sync with the network properly, you could try exporting the seed phrase / private key from Exodus and import it into some other wallet software.

Bottom line: the bitcoin are sitting at that address, so if you have the private key to that address, you just need to find some software that will properly sync with the network so that you can spend the coins.


What does this syntax mean?

It's C++ for "set the scriptSig of the first input in the first transaction in this block to have the same contents as a script with the encoded nTime followed by the encoded nExtraNone".

  Exactly what elements does the script sig contain and in what order?

It contains the block's nTime, followed by by the nExtraNonce.

  How is the extra nonce formatted?

An example from this time period would be in the scriptSig from the coinbase transaction of block #185000:

04d508de4f02e82d

If we parse this script sig, it is:

04 -- Number of bytes in group of data
  d508de4f -- 4 bytes. The little endian timestamp.
02 -- Number of bytes in group of data
  e82d --  the little endian extranonce

Notice when you reverse the bytes in d508de4f, you get 4fde08d5, which when you convert it to a timestamp is Sun Jun 17 2012 12:41:57 GMT-0400 (EDT). When you byte-reverse e82d (reversed is 2de8), and decode an integer from the hex, you get 11,752 for an extranonce value.


As @pebwindkraft comment, it's the new bitcoin segwit address (bech32), it's supported on bitcoin-core v0.16.

Bech32 is a segwit address format specified by BIP 0173. While this address format has been included in some implementations, as of December 2017.

If you would know more about it watch this


Bitstamp and any other exchange are companies and so can be insolvent. If you transfer $1000 to them in exchange for bitcoins. Until they send you the bitcoins they are in to debt to you for that amount. You could take them to court to recover that if they failed to provide the bitcoins or a refund. The court could issue an order allowing the companies assets to be seized so you cod get your $1000 back.

However if they become insolvent as appears to be the the case with Mt Gox then there's little chance of you being able to collect on the debt. As there will be no assests left for the court to seize.

Some regulated professions are required to use nominated accounts were money is held on behalf of a customer. In this case the money is still yours. This is something regulation of the BitCoin exchanges might require.


BitCoin is futureproof, because in the event that processing power (or more relevantly, mathematical advances) make its algorithms weak or obsolete, the protocol can simply be upgraded.

Copied from Stack Overflow:

Upgrades to the Bitcoin protocol that break compatibility are implementable by social mechanisms but not by any technical process, which is by design.  In order to change the hashing or signing algorithms in the event that new techniques weaken them, the following process could be followed:

As soon as the existing algorithms are discovered to be weakened, have a trusted entity sign a copy of the existing blockchain, marking it as authoritative via a non-weakened algorithm.
Create a new protocol that 'respects' the existing blockchain (which contains all records of bitcoin ownership), and allows for an upgrade path to exist indefinitely.
Implement the new protocol dormantly in one or more clients, with a designated block number to switch over, and the trusted version of the blockchain hardcoded in.
Convince the vast majority of Bitcoin users that your trusted entity is trustworthy, and to switch to the new client(s) before the designated block is mined.  There really is no equilibrium allowing both versions to coexist, since people who own bitcoins will be able to spend them in both communities.  Unless the modified client achieves near-universal adoption before the designated block is mined, users will switch back before the change goes live.


Port 8333 and Issues to have a connection

You are conflating the two ports that Bitcoin Core opens and uses.

There is the Bitcoin network port. That is port 8333 by default. You DO NOT want to try to connect to that as it is used for the connection to other nodes on the network.

The port that you do care about is the rpcport. That is port 8332 by default. This is the port that you want to connect to as that is what lets you interface with Bitcoin Core.

If you don't set the port or rpcport options in the bitcoin.conf file, then the default ports will be used.

As a security measure, Bitcoin Core does not allow anyone to connect to the rpcport. You will need to explicitly allow an IP address to connect to it by using the rpcallowip=<ip> option in the bitcoin.conf file. If you set it to 0.0.0.0, it will be open to all IP addresses, but this is not recommended as it is not secure.

In your Qt settings, you have proxies enabled with port 8333. That's incorrect. Those are not the IP and port that you want Bitcoin Core to use but rather that a proxy is listening on those ports.


Eloipool (developed by the Eligius mining pool)'s source code contains multiple examples of using getmemorypool. It also includes a proof-of-concept proxy for miners.


The general term in widespread use today is cryptocurrency. This refers to a currency designed upon cryptographic principles (as Bitcoin is).

The term "fiat money" refers to the usual money issued by governments. The government declares "this is money" (even though the paper on which it is printed does not have value itself), and people use it as such. Wiktionary defines fiat as:

  An authoritative command or order to do something; an effectual decree.


Can contracts programmed in bitcoins be used to scam merchants?

Simple answer, no. What you're most likely talking about are interesting ways to use script to pay to a m-of-n multisig, for example. Generally, when you get paid in bitcoin, you, as the merchant, get to choose where the customer sends the bitcoin. This can be 2-of-3 multisig, which would mean 2 of the 3 people you choose have to agree in order to move the bitcoins or something much more complicated. But the address that the user sends the money to is entirely up to you, the merchant.

A more complex answer is maybe. It is possible if you're using some complicated escrow system that a customer may be able to hold the bitcoins hostage, but that's not something you have to worry about unless you specifically choose that sort of payment system. The vast majority of merchants that take bitcoin don't do business this way, they simply take payment into a standard bitcoin address.


Coinbase will do an offline transaction depending on whether the recipient address is part of coinbase wallet. If recipient address is part of a coinbase wallet then the tx can be easily done offline, otherwise the tx has to be on bitcoin blockchain.

If you use wallets like electrum/mycelium they will always do onchain transactions.


How to "cash out" of the Lightning Network without closing channels?

This will get easier in the future as exchanges will be implementing deposits and withdrawals via LN.

At this time, if you need to deposit BTC and the exchange does not support LN deposits, I'm afraid you are stuck with closing channels for now.

Perhaps there will be a way soon to rebalance the channels to minimize the number of closures required.  Basically, push back funds on channels from customers 1-4, to pull the funds onto the customer 5 channel, and close only the one customer 5 channel.


How can I accept Bitcoin donations on my blog or site?

Although bloggers could turn to an external service to manage this for them, it might be more beneficial to simply offer a simple QR code with a description alongside. This would mean that all of the income from the BTCs would go direct to the blogger.

My personal blog has an article describing in detail how to do this. I'm not trying to plug anything honestly, just sharing knowledge.

This can be imaged with a Bitcoin wallet, or dragged like a Bitcoin swatch onto the Multibit client. A simple click will trigger a protocol handler within the browser (if installed) that would activate an wallet plugin.


Range proof's Confidential Transaction understanding

Only the overall commitment (P) is revealed. G and H are constants known to everyone. x (the blinding factor) and a (the value) are secret.

if xG is a private value the CT paper tell: can be proven to be a commitment to a zero by just signing a hash of the commitment with the commitment as the public or if if you want to prove a=1 make C' = C - 1H and then sign the hash of C'. How signing C or C' can I prove the value and also how can I verify a sign if I dont know xG?

You can only sign with a point if it's a known multiple of G. By definition, a signature with private key k can be verified with public key kG. If P = xG + aH with a nonzero, it is impossible to find a k such that kG = xG + aH - that would require knowing the ratio between G and H (and H is constructed in such a way that this ratio is unknown to everyone).


How can I start off-block transaction in LoafWallet?

Lightning Network is not even live and therefor not supported yet.

Actually the Lightning Network does not quite work as you described.

You create a opening transaction which locks the funds in a multisig with the other participant. It's possible to withdraw the funds only after a specified time or to sign a transaction which pays both participants according to their needs and is spendable earlier.  If both participants agree, they sign the transaction.  The channel can then be closed by broadcasting the transaction or they can continue to keep creating a new version of the transaction with pays them different amounts depending on their needs.

This means you can have nearly unlimited transactions for the cost of one opening and one closing transaction.

However this is not live on mainnet (not for Bitcoin, not for Litecoin) and LoafWallet doesn't support it yet.


Is there a limit to the number of Bitcoin addresses?

If I understand it correctly, there can never be more than 1461501637330902918203684832716283019655932542976 of the current type of addresses. 2160.

  what stops someone from making all these addresses and holding the private keys for them ...

Probably:

There aren't enough atoms in the universe to make a big enough computer.

There isn't enough time left in the universe before those atoms cease to exist.

  ..so no one else can make a new public key?

Other than the improbability of it occurring, there's nothing in the Bitcoin protocols or concensus rules that would prevent two or more people independently generating the same addresses. Any of those people could then spend any money sent to that address.

Which is to say, your bad-actor can't prevent anyone from generating an private-key a public-key or an address.


Effective way for transferring cryptocurrency money from one wallet to other

Yes, it is probably cheaper to have your friend send you an altcoin, but if your end goal is to own BTC, then just have him send you BTC. I say this because:

The exchange you're going to send to will have its own fees (trades/withdrawal fees are common)
Storing coins on an exchange is not a good idea, if that exchange closes or gets hacked, then your coins might be gone forever. So you'll want to remove them from the exchange (which will probably incur fees)
Altcoins can be volatile (even more than bitcoin), what happens if while waiting for them to transfer to the exchange the price in btc drops 30%?

Right now the network is congested, so tx fees are higher than normal. Last week I sent a few transactions for less than a dollar, if you can afford to wait a few days btc fees may drop.


How to connect 2 wallets locally to each other?

Bitcoin Core supports addnode in the configuration which will add a dedicated outgoing peer to the defined IP address. connect will make a single outgoing connection to only that peer and nobody else.


Is there a minimum limit of bitcoin that can be added into a channel
  during the initialization?

According to the Lightning Network Specifications:

"The amounts for each output MUST be rounded down to whole satoshis. If this amount, minus the fees for the HTLC transaction, is less than the dust_limit_satoshis set by the owner of the commitment transaction, the output MUST NOT be produced (thus the funds add to fees)."

So, the commitment must be greater than the sum of the transaction fee (determined by miners at the time of broadcast) and the dust_limit_satoshis value. The dust limit purpose is "to prevent creation of uneconomic outputs (which would otherwise remain forever, unspent on the blockchain." - BOLT #5

  And, if I decided to open a channel with a lightning node, also that
  node has to add money to the channel?

From what I understand, this is not typical, but it depends on your agreement with that other node. "Initially they each hold a bitcoin transaction that sends all the bitcoin (e.g. 0.1 bitcoin) back to one party." Lightning RFC - Introductions. So, if the fundee needed to make a payment to the funder, it could provide a payment up front.


Who witnesses a Segregated Witness transaction and what incentive do they have to witness the extended block containing signatures?

Since exchanges and merchants won't accept the blocks, miners who mine invalid blocks won't get paid. A miner could take that risk if they wanted to, but it's no risk to the system as a whole. Only the longest chain that consists only of valid blocks is honored by non-miners.

I could imagine a miner trying to mine on top of a new block without first checking the extended block. But they'd almost certainly start checking the extended block and switch if it turned out to be invalid. This takes an acceptable risk of mining an invalid block while ensuring that nobody has any incentive to deliberately mine invalid blocks.


How exchanges generate transactions for all cryptocurrencies and send it to their network nodes?

For an exchange, 170GB is not a lot, at all. In fact, it's a laughably small amount. Even on an SSD (which is not necessary), the storage cost would be about $100. Big exchanges might make $1M in revenue every day. Operating a node (or ten) is a complete non-issue.
You seem to be thinking that if Bitcoin's blockchain is 170GB, then so are the others. But Bitcoin is the most popular cryptocurrency, and it has way more transactions than any other (with the possible exception of Ethereum, which is more wasteful and has high traffic due to the ICO hype). The blockchains for most cryptocurrencies are tiny in comparison, and the sum total storage shouldn't be more than, say, 1TB (again, tiny for any large business). A single machine could run nodes for all coins.
SPV clients (like Electrum for Bitcoin) offer a middle ground between running a full node, and relying completely on a 3rd party service.
Ultimately, every exchange decides how to set up its infrastructure. It might run a node. It might not. There's no real way to answer this in general, this is something which should be asked of each specific exchange.


What is the story behind the "Linode problem"?

The "Linode problem" is storing Bitcoins on a managed device.  That managed device might be server hosting from Linode, for example, or a cloud server at RackSpace for another example.  In both instances, by simply gaining root access using the service provider's systems, tens of thousands of bitcoins were stolen.

The incident in which the "Linode problem" term was coined, more than 46K BTC were stolen in a security breach at Linode, including 43K from Bitcoinica's wallet alone.

Linode hasn't disclosed the exact scenario but it is believed that an employee's system was compromised remotely and that system had access to a back door that allowed administrative access to every Linode host.  With administrative access. wallet.dat's are vulnerable.

http://arstechnica.com/business/2012/03/bitcoins-worth-228000-stolen-from-customers-of-hacked-webhost/
http://bitcoinmagazine.net/the-bitcoinica-linode-theft-and-what-it-means-for-bitcoin/

There are all sorts of managed systems.  Most enterprise computing systems have administrative access for not only their systems in their data center but also for managing their employee's devices.  This might allow a thief, or rogue employee or contractor even to gain access to Bitcoins.

Even mobile devices could be totally vulnerable.


Because Bitcoin is open source, the source code is the software for creating new crypto coins.  Depending on what you want out of a new coin, and why you want it, the things you modify will be different.  However, the simple recipe is this:

Fork Bitcoin Core
Change the hard-coded genesis block in the source code
Change the port number that the protocol runs on
Recompile
Start mining, and convince others to join

There are other things you can change as well, such as hashing algorithm, block time, difficulty increase frequency, etc.  It all depends on your goal.


Why are non-final transactions considered non-standard?

The denial-of-service (DOS) attack is easy to explain: each time a transaction is updated by increasing the sequence number in an input, the whole transaction needs to be propagated through the network again.  So if a transaction is 1 KB and there are 10,000 full nodes, you can waste a minimum of 10 MB of network bandwidth each time you update the transaction at only 1 KB bandwidth cost to you---and you can do it an essentially unlimited number of times with an essentially unlimited number of transactions, none of them costing you any money besides the transaction fee.
I'm not absolutely sure what the double spend attack referred to here is, but my guess is that it's the basic zero-conf double spend but with the network helping the fraudster: the fraudster pays you with a non-final unconfirmed transaction, being a trusting person you provide goods immediately, the fraudster broadcasts a double spend with a higher sequence number, the network mines the double spend instead of the original transaction, and you don't get paid.

It would be easy to block this type of double spend by refusing to accept into your wallet any unconfirmed transaction with a non-final sequence number, but that could lead to user confusion: "he said he paid me, and BlockChain.info says he paid me, but the transaction doesn't appear in my wallet!"


What is the numerical definition of a Satoshi relative to a BTC?

Satoshis are indivisible on the Bitcoin blockchain. Therefore, it doesn't make any sense to add a decimal point or digits after the decimal point to satoshi values.

The conversion is:

100,000,000 satoshi = 1 BTC

or

1 satoshi = 0.00000001 BTC


What power cord to use with BITMAIN PSU?


Understanding how initializing the Ledger Bitcoin hardware wallet works

Ledger provides a python library which also links to some limited documentation of the API: https://github.com/ledgerhq/btchip-python


When you receive a BitCoin what do you actually get?

Think of Bitcoin like a ledger. When you (your Bitcoin wallet) receives Bitcoin, instead of receiving an item or file, everyone is updated with an updated ledger including the balance of your Bitcoin address.

Here is an extraordinary explanation on Bitcoin.


Why bother having limitations on Bitcoin Coinbase Transaction Scriptsigs?

The correct answer is: ask Satoshi.

My guessed answers to the questions you asked:

Why only one input? You can't predict when a particular coinbase transaction will make it into a successful block and you can't spend the output of a coinbase transaction for 100 blocks.  That means using a regular transaction is much superior for any normal spending.  If there's no normal case for adding inputs to a coinbase, maybe Satoshi thought it best to disallow inputs to prevent un-thought-of attacks.
Why reference a null outpoint? Using the same basic format as a regular transaction probably allowed code reuse.  If he had optimized the coinbase, we would've saved 36 bytes times 338,692 blocks (so far), or about 12 MB.  Not a big deal.
Why limit coinbase size to 100 bytes? We know Satoshi used the coinbase to put a message in block 0.  Maybe a 100-byte limit was his attempt to prevent anyone else from using that same mechanism to add overlong messages.  This was probably quite smart: from the fairly early days through today, many miners add messages to all of their coinbases---we can only imagine how annoying and wasteful those messages would be if they weren't limited to 100 bytes.
Why specify minimum coinbase size as 2 bytes? Highly speculative here, but maybe Satoshi foresaw the easy-duplication-of-coinbases described in BIP30 and wanted to require people use something like the original extranonce to help prevent accidental TXID collisions.


Yes.  However, you will lose any new private keys in the current wallet.dat.  Even if you didn't create any new addresses, bitcoin-qt creates change addresses if you send any money.  So, to be safe, you should dump the private keys for your current wallet.dat and the stop bitcoin-qt.  Replace the current wallet.dat with the saved wallet.dat.  Restart bitcoin-qt and then dump the private keys again.  If you have the same set, all is well.  Otherwise, you will need to import any missing private keys.

To dump the private keys using the bitcoin-qt debug console:

listaddressgroupings
walletpassphrase your-passphrase 300
dumpprivkey bitcoin-address
walletlock

Step 1 will list the bitcoin addresses in your wallet.  Steps 2 and 4 are only needed if the wallet is encrypted and unlocks your wallet for a maximum of 300 seconds.  Repeat Step 3 for each bitcoin address.

To import a private key using the bitcoin-qt debug console:

walletpassphrase your-passphrase 300
importprivkey private-key "key-label"
walletlock

Steps 1 and 3 are only needed if the wallet is encrypted.  Repeat Step 2 for each private key you are importing.  The key-label is whatever you want to identify the key.


The bitcoin software has it's own API.

Simply put, they run the bitcoind software and use RPC-JSON as the API.

EDIT : changed according to comment. Other implementations of Bitcoin also have their own APIs


Why can bitcoins never be refunded unless the receiver agrees to send back the money?

Bitcoin is like cash: You don't use an intermediary. If you send money to someone, they got it. The only way you can get is back is to make them hand it to you. If there is no intermediary, you can't complain to that intermediary to take money from the person you sent money to and give it to you.

The reason Bitcoin is like cash is that it's designed that way. It's supposed to behave like cash. And the reason for that is (in part) to avoid intermediaries. Using intermediaries means to be exposed to their arbitrariness. Refunds enforced by an intermediary are precisely that: Arbitrariness.

Even if you don't see how arbitrariness is bad: Arbitrariness is very close to despotism and despotism is obviously bad. You, as someone who wants the money they sent to someone else back, rely on an intermediary and have to hope that they decide in your favor. The entity you sent the money to relies on the intermediary to decide in their favor. At least one of you is going to lose. And even if the intermediary tells you to give the money to you, they might decide to give it to the other entity, later on. Or they might freeze the funds and freeze some more funds from one or both entities in conflict to be gain more power.

Can you see how that intermediary became a judge? The only way to avoid this is to carry orders out without the option to undo them except if both the payer and the payee agree. You don't need a special rule for the latter case because the payee can just send the money back in a different transaction.

Furthermore, as Pieter Wuille noted in the comments, refunding is done through payment processors. You are forced to use a payment processor when paying in a fiat currency online but are not forced to when paying in Bitcoin. However, using a payment processor when paying in Bitcoin is still possible. A payment processor can allow refunds even when the good or service was payed for in Bitcoin. The currency doesn't influence this, the payment method does. It's just that you're not forced to use one when paying in Bitcoin.


E-commerce invoice in USD & receive payment in Bitcoin

Coinvoice lets you invoice in USD and get paid in bitcoin. Sorry if you need the exact workflow described above. I'm not aware of many services that sell bitcoin and take credit card for payment.


What factors decides the number of tokens to generate?

There are no answer to that.
Depends on many things the token creators want to accomplish.


Is the blockchain ever-increasing? (forever)

Yes, the blockchain itself will keep increasing forever. On the other hand, one does not need to store the entire blockchain to use Bitcoin. It is possible that later version of Bitcoin will start pruning old, spent transactions to keep local disc storage smaller.


You can get any price quotes, in a JSON format, using these kinds of endpoints:

https://btc-e.com/api/2/ltc_usd/ticker
https://btc-e.com/api/2/btc_usd/ticker
https://btc-e.com/api/2/ltc_btc/ticker

The structure of the endpoint is https://btc-e.com/api/2 and then currency_currency and then /ticker.

Hope that helps!


Can my transactions be traced back to me even if I do this?

Well, that depends. First, never reuse addresses if you are doing this.

Second, if you are not mixing, the transactions will, with no exception, be traceable. Would there be someone focused on you, he would see the bitcoins move around, and so most probably think they are spent. But if he is really interested in you, he will probably keep track of the coins and whenever you really spend one of them, he will probably notice and try to track the owner of that address to see what you did with them.

He will probably only stop keeping track of those coins if he sees them being spent by someone that cannot be you, or if he cannot track them anymore as they are split up and combined with many other coins.

You must be quite paranoid considering your few questions here. I can maybe advise you to buy bitcoins for cash like via localbitcoins.com. Apart from the guy you trade with, no one will know you bought coins.