Is lightning network limited by the 'size' of channels?

In fact, it's worse: payment channels can only transfer the balance that belongs to the sender in it. So, if David and Rob each paid 25BTC into the channel, David can at most send 25 BTC to Rob.— However, there could actually be multiple paths from Alice to Rob which could in parallel allocate 100BTC to Rob.

There's an interesting trade-off here: the Bitcoin blockchain scales easily in the amounts to be settled, but is limited in transaction throughput. Lightning Network on the other hand is practically unlimited in the transaction throughput, however limited in the amounts to be sent. This is why transactions on the blockchain are priced by the cost of including them in the block, i.e. the primary bottleneck, and transactions in the Lightning Network will probably be priced mostly relative to the value they transfer. Obviously, this favors larger value transfers on the blockchain and smaller payments to move to the Lightning Network. However, sending smaller payments requires both a smaller locked-in amount, and will make it easier to find routes.

So, it may actually just work out.— We'll see when it goes live on the Bitcoin blockchain.


Nonce size - Will it always be big enough?

The difficulty is already to the point where it requires over a quadrillion hashes to solve a block. 2^32 is only 4 billion. Fewer than one in a billion times will there be any nonce that makes the block valid.

A miner simply has to try every possible nonce on a different block. He can vary the coinbase, the transaction set, and/or the block timestamp. Any change to any of these things results in a new chance for there to exist a valid nonce.

Often the best choice is to bump the timestamp, a practice called NTime rolling.

The block timestamp doesn't have to be exact anyway, so you can back the timestamp back, say, ten seconds before you start mining and then bump it up 20 times before giving up and getting a new block. At worst, your block timestamp will be off by a dozen seconds or so -- nobody cares about that.

After that, you probably want to get a new block because there might be some new transactions to include -- this not only improves the efficiency of the network as a whole but reduces the chances you'll miss out on a transaction fee.


Is there any logical way that a "cloud Bitcoin mining" operation could be anything but a scam?

If you found yourself in a situation where you owned a machine which, when running, would create a profit for you, what would you do?

run that machine
set up a business to rent the profits of running that machine to others

The only way the second choice really makes sense, is if you rent it out for more money than you'd expect the machine to make for you on it's own.

Wouldn't it make sense for them to use my amount to buy another miner (or part of one) and then I would regularly get "my share worth" of satoshis?

Mining is very competitive. As a miner you have to minimize your costs to remain profitable, and so I find it hard to believe that any miner which is depending on renting out their hashrate to others will be competitive. There would be a lot of extra work involved in running such an additional operation. Maybe it is possible, but personally I wouldn't bet on it.
If you search around online, you'll find lots of stories of users that have lost money on cloud mining purchases, but are there many that talk about big profits? Not that I've seen at least. That isn't a perfect measure, but it is perhaps telling.


You are confusing the two kinds of tests. Unit tests are compiled into a separate binary and run by make check. Functional tests are testing the RPC commands and have to be run explicitly using the test_runner.py script. test_framework.log is only created by the functional tests. The documentation for the unit tests can be found here.

To print messages in the unit tests, you cannot use LogPrintf. Instead use BOOST_TEST_MESSAGE and BOOST_CHECK_MESSAGE to print messages from the tests. You will have to run the test binary directly (src/test/test_bitcoin) with --log_level=all to see the messages.

To print from the source files themselves, you could use fprintf() and print your messages to stderr.


How to determine public keys that were used to generate a multisig address?

A redeem script is generated along with the multisig address. The redeem script can be decoded at https://coinb.in/#verify (for example) to determine the address, the required number of signatures, and a list of the public keys with access. (It will also be used later to release the bitcoins.)


What are the key differences between factom and tieron?

Factom seeks to be a distributed and autonomous protocol, like Bitcoin.  There is no terms of service. Instead, Factom uses a token (factoid) to reward servers for running the protocol.  Independently, the protocol requires users to use Entry Credits (which act like accounts) to create chains and add entries to those chains. Factoids are converted into Entry Credits.

Since Entry Credits are not tradable, and only require requests be signed with the Entry Credit Key, users can buy Entry Credits from anyone who has factoids.  A user of the protocol never has to touch a tradable token.  Entry Credits are also managed at a constant dollar value; use of the Factom protocol carries no regulatory or currency risks.

Tieron does much of what Factom does as a centralized solution.  They provide digital receipts, but you do have to open an account and agree to their terms of service.  To use Tieron, you set up an account, and pay a subscription fee.  They have no token or altcoin.  This is simply a standard service company providing data integrity services for a fee.

Full discolsure:  I am the principle designer of Factom, which also benefited from design work and technical input from Wayne Vaughan, CEO of Tieron

Updated with a bit more information


Stay on memory pool when I sending multiple transaction from bitcoin wallet

Bitcoin Core has locks in place that will stop multiple calls to build a transaction to be executed in parallel. Instead, they will be executed sequentially, as the lock gets relinquished by the previous call. So, the other thing that comes to mind is that there are limits to the ancestry set of transactions that may be submitted to the mempool at the same time.

Your own node's mempool will not accept more than 25 transactions or more than 101 kB in total transaction size that are chained/interdependent in some fashion. Your wallet will attempt to rebroadcast transactions to your own mempool every thirty minutes or so, so even when some of the ancestors of your transactions get confirmed, it may take a while for the others to be relayed to the network.

What you can do: If you're sending a very large number of transactions, e.g. more than 25 per block, you should split up your balance across a greater number of UTXOs, so that you can create a larger count of independent transactions.


Is it possible to know the total hashpower backing a currency?

Yes.

Generally cryptocurrency network mining difficulty is dynamically adjusted by the current available hashing power. Thus, the hashing power must be known. This information is usually disseminated on raw protocol level and through different blockchain explorer web sites.

Hashing powers of different Ethereum forks.


How to restore a ripple wallet, having the security key?

Following these instructions, after clicking on Create a new wallet, you will have the option of using a custom secret key.


How do I implement an escrow service using Bitcoin contracts?

The functionality is not yet implemented in Bitcoin. On October 18 Gavin created 3 Bitcoin Improvement Proposals that would support the functionality, Bitcointalk:OP_EVAL proposal.

M-of-N Standard Transactions
OP_EVAL
Address Format for OP_EVAL


What are the alternatives to downloading the 6GB block chain?

Alternatives to downloading the data yourself in reference client:

Take your computer to somewhere with Internet that you can be for several hours, perhaps a friend or relative's house, or a library or coffee shop.
You can employ bootstrap.dat by having someone else download it and give it to you somehow. Then you'd only have to get caught up and download ~ 2 GB. Alternatively, you can have that same person create for you a bootstrap.dat that is 100% up to date, as that bootstrap is behind by a few months.
Use a web wallet. You'll be sacrificing some security for the convenience, though.
Use an SPV client, such as Multibit or Bitcoin for Android, that only has to download data related to your addresses. You'll be sacrificing the ability to verify any payment. Many people find this acceptable.
Use a server-reliant client such as Electrum, where your client must download virtually no data. You'll always rely on a central server for transmission and verification of transactions, but your private keys will always be stored locally.


Download only first few blocks of blockchain

If you are running the Qt client on your computer you already have them at this physical location

If you want to retrieve them through Qt's RPC facility then for index i = 0 to i = 99 iterate: getblock(getblockhash[i])


Does the bitcoin design make bitcoins suitable as a medium of exchange, a store of value, or both?

Today, it primarily serves as a store of value. It is inherently more useful as a medium of exchange, its intended purpose. Perhaps a bit ironically, its expected future usefulness as a medium of exchange is what is driving its present usefulness as a store of value. The thinking is that if you get them now when they're cheap, in the future when they're used as a medium of exchange (and thus there's much more demand) they'll be worth more.


What are some examples of previous first contributions improving Bitcoin Core tests?

PR #8836 was one of John Newbery's earlier contributions to Bitcoin Core. He introduced this code so that bitcoin-util-test.py would fail when the output_cmp file is empty.
if not outputData:
            print("Output data missing for " + outputFn)
            sys.exit(1)

PR #16445 was Fabian Jahr's first contribution to Bitcoin Core. One particular test (checking that an unknown message type would result in a disconnect) had been highlighted as flaky on MacOS and so Fabian wrote some code to wrap the test in an if, else statement so that it would be skipped when on MacOS.
if sys.platform != 'darwin':
.....
.....
else:
    self.log.info("Skipping test p2p_invalid_messages/1 (oversized message) under macOS")

PR #20023 wasn't a first contribution but was a neat contribution nonetheless. theStack used vulture via the following script to find constants in the functional tests that aren't used anymore.
#!/bin/sh
for F in $(git ls-files -- "*.py"); do vulture "$F" | grep "unused variable"; done


what is the meaning of Segwit receiving address and segwit change address ..?

A segwit receiving address is an address that specifies that a segwit output should be created. Many wallet software developers have begun using a different key type and BIP 32 derivation paths for keys that are to be used in segwit addresses. Segwit addresses begin with bc1 (for native segwit outputs). Segwit change addresses are the same as receiving addresses except are used for your change outputs. These are not typically shown to the user and are managed internally by the wallet.


How to restore my Bitcoin Core wallet from seed phrase

Bitcoin Core is not affiliated with the website you downloaded the node installer from - bitsblock.io, and the official Bitcoin Core client does not provide functionality you ask about. I noticed that when you click on download button on this website it takes you to some restore form. This seems very sketchy - I'd never provide online my private key nor any other means to derive it (such as list of backup codes, phrases, passwords, etc.). Try looking for legit wallet that supports BIP39, I cannot vouch for that but supposedly Electrum wallet does that. Also, as mentioned here, it might be actually a restore phrase for blockchain.info online wallet (though as mentioned earlier, I would discourage entering recovery phrases on any website).


Invalid public key was spent! How was this possible?

That address cannot be spent from and any such transaction that spends from it is invalid. However this does not prevent improperly written software from thinking its private key is a valid private and and performing the elliptic curve operations on it. So thus the address was created and a transaction was created that appears valid. But when validating the transaction with proper software, such software rejects it.

This transaction appears on blockchain.info likely because their software is either improperly implemented or simply not validating (or fully validating) transactions. This isn't the first time that's happened though.


Notify when new transaction is arrive in a bitcoin address

Try using ZeroMQ to listen to transaction event.
You can subscribe to hashtx or rawtx events.

Here is a nodejs example taken from this great guide by GR0KCHAIN: https://bitcoindev.network/accessing-bitcoins-zeromq-interface/

var zmq = require('zmq')
  , sock = zmq.socket('sub')
  , RpcClient = require('bitcoind-rpc');

var config = {
    protocol: 'http',
    user: 'bitcoin',
    pass: 'local321',
    host: '127.0.0.1',
    port: '18443',
};

var rpc = new RpcClient(config);

console.log("T")
sock.connect('tcp://127.0.0.1:29000');

sock.subscribe('rawtx')

sock.on('message', function(topic, message) {
  rpc.decodeRawTransaction(message.toString('hex'), function(err, resp) {
        console.log(JSON.stringify(resp, null, 4))
  })
})


Why bitcoind/bitcoin-qt is imposing transaction fee?

Upgrade to Bitcoin version 0.9 or later which removes the minimum relay fee. Just be warned -- the lower the fee you set, the longer it can take for your transaction to be confirmed. Zero-fee transactions can take days.


Where in ~/.bitcoin are mempool and UTXO pools written?

mempool.dat stores the obvious, but it it only written there when the node is shut down
chainstate/ stores the entire UTXO, all the time


Are all strategies to mine PPCoin Proof of Stake blocks equivalent?

alice finds the most blocks. 520 confirmations + 30 days of no-stake makes a maximum of 12 blocks per year from the same coins. compound interest makes no impact at all with 12 compounds and 1% ROI .she makes max 1.00437%

bob makes a perfect 1.00% but loses a lot of stake and risks not finding a bloc in that week.

charlie makes 1.00-1.00437% depending how often he finds blocks.

actually, they can find much more blocks, as parts of wallet have different age, but its just as running many wallets, there is no difference in maths.


Is it possible to use something besides sheer computational power as the limiting factor on block release?

direct limit on how many times a particular wallet can make a guess per day? (or something like that..)

Guess per day for what?

You can't limit it by wallet since you can't know what addresses are in a wallet. To the network, there is no such thing as a wallet (and technically no such things as addresses or Bitcoin objects either). If you were to limit it on a per address basis, then people would just generate infinite addresses (because they are essentially infinite and you cannot prevent people from generating as much as they want) to do their "one guess per day".

  but every new crypto currency from now on will be mostly owned by whoever has the most ASIC farms won’t it?

No, that is completely incorrect. Miners are not an absolute authority and do not have a final say on anything. The consensus rules are something that everyone who uses a coin follows. If any consensus rule is violated by a block or transaction, that block or transaction will be rejected by everyone who is validating consensus rules, i.e. the full nodes. So no, miners don't control it or own the currency because they cannot force changes onto the community and it would be pointless to mine a coin if you are the only holder of it (i.e. there is no market so no value).


Why was 21 million picked as the number of bitcoins to be created?

Here's a mathematical explanation:

Calculate the number of blocks per 4 year cycle:

6 blocks per hour
* 24 hours per day
* 365 days per year
* 4 years per cycle
= 210,240
~= 210,000

Sum all the block reward sizes:

50 + 25 + 12.5 + 6.25 + 3.125 + ... = 100

Multiply the two:

210,000 * 100 = 21 million.

Economically, because the currency is effectively infinitely divisible, then the precise amount doesn't matter, as long as the limit remains fixed.


What is the point of keeping transactions if they are hashed?

There are some misunderstandings here. First, transactions are hashed in several ways for different purposes, but actually they are kept in the original in the blockchain: As you said, this is needed to check the blockchain later, or to provide the information to other participants for them to catch up with the network.

So, when and to what purpose are they hashed, then?

Transaction Identifier (txid)

Standard transactions range in size from roughly 192 bytes to 100,000 bytes, although the smallest possible transaction is 61
   bytes, and the largest one ever seen was 999,657 bytes. Anyway, I think we can agree that some of them can be unwieldy to send around in full, just to reference them. ;)

This is where transaction IDs come in. The transaction ID is the digest of performing the SHA-256 hashing function twice on the serialized transaction. The resulting digest or hash is always 256 bits (hence the name), which can be represented with 32 bytes. Using the txid to reference transactions is obviously much less bandwidth intensive which is why this is how peers exchange information about transactions: when a peer learns about a new transaction, this will be in form of an INVENTORY message that presents him a list of txids, to which the node may respond by requesting the unseen transactions with the corresponding txids.

Merkle tree

Transactions in a block have a fixed order. This can be used to create a Merkle tree from the transactions. Merkle trees are useful in that they allow lightweight nodes to confirm the membership of a transaction in a block without having full knowledge of the block's content. The Merkle tree is created by hashing transactions pairwise iteratively until only a single hash results. This Merkle root can be used to represent all transactions in a block and prevents anyone from changing the block's content.

Proof of work

A third  application of hashing in Bitcoin is the consensus mechanism 'proof of work'. Bitcoin's central innovation is using the blockchain to create consensus about the order of transactions in the system. To that end, miners collect unconfirmed transactions into block templates for which they then evaluate whether they resolve to a valid block. These block templates consist of a block header (which among other information collects the aforementioned Merkle root) that is subjected to a doubly applied SHA-256 function. If the result surpasses the difficulty, a new valid block has been found.

Sighashes

We need to make sure that only the owner of funds may spend them. This is solved by the owner signing a transaction with the corresponding private key for each input that they are spending. However, there's another application for hashes in there as well (hat tip to Pieter for pointing it out): for each input a "signature hash" is produced which is a digest of all inputs and outputs of the transaction. As this is what the sender signs, they not only authenticate themselves as the rightful owner, but also commit the signature to exactly this transaction. Thus the signature is useless even to spend another transaction output from the same address, and it is impossible for third parties to redirect payments.

Addresses

While private key and public key together make a point on an ECDSA curve, the address is actually also derived by hashing: It is a RIPEMD-160 hash of the public key. This allows the public key to remain unknown until received money is spent from an address for the first time.

The point of hashing

As we can see, while addresses are indeed kept in full in the blockchain, hashing allows us to:

Save bandwidth in transaction relay
Verify transaction confirmations without knowing full blocks
Limit block discovery and introduce digital scarcity
Protect transactions from being altered by third parties
Protect sensible information, while proving our possession of it


Is pruning of the merkle tree implemented in the bitcoin android wallet?

That wallet is using bitcoinj as its client which implements a "simplified payment verification" mode.

Here's what the client does in this implementation:

Connects to a trusted node.
Downloads only the block headers.
Validates the headers.

Do they chain back to genesis block?
Is difficulty high enough?
Do I trust this node enough?

Downloads only the transactions that yield ownership to your addresses.
Sufficiently deep block headers are thrown away.

Resource usage in this implementation just depends on your own sent/received transactions.

  As of October 2012 (block 203258) there have been 7,979,231 transactions, however the size of the unspent output set is less than 100MiB, which is small enough to easily fit in RAM for even quite old computers.

In other words, almost 8 million txns in Oct2012 could be consolidated to 100MiB just by throwing out txns that had no spendable outputs.

So you can imagine how little space it takes just to store transactions relevant to your addresses.

https://code.google.com/p/bitcoin-wallet/
http://code.google.com/p/bitcoinj/source/browse/core/src/main/java/com/google/bitcoin/core/BlockChain.java#26
https://en.bitcoin.it/wiki/Scalability#Storage
https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification


Convert between String/Hex/Byte in Java for sha256 - wrong format?

I have not the Java solution, but I can indicate the error. The conversion to hex is apparently missing.  When I do the hash on the text file itself, I also get the wrong result:

$ printf 1L88S26C5oyjL1gkXsBeYwHHjvGvCcidr9 > adr.txt
$ openssl dgst -sha256 -binary <adr.txt >tmp_sha256.hex
$ openssl dgst -ripemd160  <tmp_sha256.hex
(stdin)= db151e871af66b1323893e3f527e22f7684718af

so the transformation into a hex byte array "addressHex" is for sure missing something.

Update:

I can see the "bytesToHex()" function, was this the code from the link I provided in the other thread? If so, try to dump the output of your java into a file, and use hexdump to verify. So you can concentrate on these two lines (I made the sed command shorter, without "cat"):

$ printf 1L88S26C5oyjL1gkXsBeYwHHjvGvCcidr9 > adr.txt
$ printf $( sed 's/[[:xdigit:]]\{2\}/\\x&/g' adr.txt ) >adr.hex
$ hexdump -C adr.hex
00000000  31 4c 88 53 26 c5 6f 79  6a 4c 31 67 6b 58 73 be  |1L.S&.oyjL1gkXs.|
00000010  59 77 48 48 6a 76 47 76  cc 69 64 72 39           |YwHHjvGv.idr9|
0000001d

Here you should receive the same result by your java code, then you'd be good to go :-)


Why do the biggest exchanges reuse Bitcoin addresses if doing so is unsafe?

It's generally accepted that using one address for multiple transactions is unsafe, because sending a transaction reveals your public key (whereas only the hash of your public key is required to receive transactions).

It's not unsafe. It is however gratuitously giving up privacy - yours, and that of others you interact with.


How to integrate 0-conf BCH payments into a web app?

You can host your own Bitcore Web services Bitcore

You can do things like as follows.

User present QR with the random address using this library Bitcore Library
User sends payment using wallet.
Website will be listening to transaction broadcasted by customer wallet.

Here is the resource for a payment protocol read it thorough you will get an idea. Bitcore Pay Pro

Talking about 0-conf: Once a transaction is sent, it is broadcasted immediately even if the next block has a few minutes before its found. If you as a merchant running  a node has capability to verify the transactions.

You can host your own BWS. No need to rely on 3rd party.

For more please refer to bws docs.


How to check if node is on TestNet or MainNet via `bitcoin-cli`?

Before version 0.16.0:

$ bitcoin-cli getinfo
{
  "version": 120100,
  "protocolversion": 70012,
  "walletversion": 60000,
  "balance": 0.00000000,
  "blocks": 414105,
  "timeoffset": -165,
  "connections": 9,
  "proxy": "",
  "difficulty": 199312067531.243,
  "testnet": false,
  "keypoololdest": 1466689642,
  "keypoolsize": 101,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""
}


Up to date list of exchanges that have been hacked?

There are a few sources I found but obviously are not completely up to date or don't have the full history, as you probably found. Some great sources for the overall history of Bitcoin and hacks are:

historyofbitcoin.org
fastcompany.com
theguardian.com

Now, for the moment we've all been waiting for.... This source (bravenewcoin.com) I believe gives the best overview and history of all the hacks and even additional information, from 2007 to 2017.

Keep in mind the I posted the other sources above because it's always good to fact check, and each source has some different information.

And sadly, I do not believe that they have a chart or document listing who, when, and how much Bitcoin as hacked from exchanges... yet. I'd also ask around on bitcointalk.org, someone on there might have one or etc.

Happy Bitcoining


Understanding default bitcoin wallet in bitcoind

getaccount command was deprecated in Bitcoin Core 0.18, the wallet uses "labels" now.

When the wallet was created, it created a seed for you. This is used to generate the addresses in a BIP32 heirarchy. To generate the first address, you can use the getnewaddress command, followed by an optional label (to save the address in the address book), and an optional address type. E.g.

$ bitcoin-cli -testnet getnewaddress my_first_address

  As I understand that a bitcoin wallet is basically a pot which holds several child addresses?

A Bitcoin wallet is generally considered software that manages your Bitcoin addresses and transactions, as well as your private keys to those addresses. In Bitcoin Core it is also used to describe a heirarchy of addresses with their own unique seed. Addresses used within a "wallet" on Bitcoin core are all derived from the same master key and seed. In fact you can have multiple wallets using the same installation of Bitcoin core, see createwallet


List transactions *relayed* by my full node?

Blockchain.info lists the first IP address it sees a new transaction from.

If you aren't the one creating the transaction, and aren't accidentally the node right in between the node that does and blockchain.info, it's unlikely that you're the first to do so. Furthermore, they may not even be connected to you the whole time.

To see what transactions are being relayed, start bitcoind with -debug=net, and look for 'inv' messages in the debug.log file.


Can Artificial Intelligence be used to mine BitCoins faster?

If you are talking about finding a better algorithm than SHA(SHA(block header)) - it might be possible to optimise the algorithm for some features, like being GPU resistant and so forth, but generally that would be a bit pointless. Changing that algorithm now would undermine the stability of Bitcoin and wouldn't benefit it much. Generally, the current algorithm does it job and does it well - it provides scalable difficulty, the mechanics are still unbroken, and so forth.

As for using AI to try solving the SHA(SHA(block header)) algorithm - it probably would be hard if not computationally impossible at the moment. The algorithm doesn't appear to be broken, meaning that the output of the calculation appears to be quite random, which is not faring good for trying to use AI to solve it.


Is it possible to Send the total balance of Bitcoin from the Wallet using rpc without having to specify the exact amount?

Yes, this is possible, but you still need to check the wallet balance first.

However, you need to know the fee, as you usually specify how many BTC are supposed to arrive at the destination, rather than how much is being sent in total.

The sendtoaddress command takes 5 parameters: address, amount, comment, comment-to, subtractfeefromamount. This last option, subtractfeefromamount, is what you need.

So if your entire wallet balance is 0.1337 BTC, you could issue:

  bitcoin-cli sendtoaddress "address" 0.1337 "" "" true

Also, you can't use move, as that does not actually issue a Bitcoin transaction, but only updates internal balances.


http://www.electroncash.org/

But you may have problem to setup this wallet if you use non-english windows 10 version. For example with cyrillic letters


Is it possible to earn BTC by processing transactions?

If you run an Escrow service, yes, you could get paid to process transactions. But that's probably not what you're asking about.

In normal cases, transaction fees go into the reward for a new block being mined and are earned by the miners that create the new block. This takes specialised hardware and software. If you want to get your feet wet in this area, you ought to look into mining at a pool.


How the difficulty of the network affect the average block mining time if we have static hash power?

The rate of you finding blocks solely depends on your own hashrate and the network difficulty, nothing else.

The overall network hashrate influences the difficulty with a delay, which on its turn influences your rate of block finding. However, that's the only effect.


Can I use uncompressed public keys in Bitcoin Cash transactions?

Bitcoin Cash only uses the Signature hashing algorithm from BIP 143. Everything else that pertains to witness programs is unrelated to Bitcoin Cash.

This means that you can use uncompressed public keys with Bitcoin Cash.


Can I generate multisig addresses directly in the coldcard?

After digging the source code for 2 days I found it. YES, it's possible.
When you power your coldcard, select Address Explorer, then CC 2-of-2 (in my case) and then you'll be able to see your addresses. However I think you cannot see them entirely, just the beggining and end.
PS: these are testnet addresses for a disposable wallet for my tests


There is many wallets outhere, some of them open source that you could even compile and run into your device so you can audit the code if you don't want to trust the manufacturer.
My advice use the one you think or see works good (in my case https://blockstream.com/green/)
With the care you are proposing right now, having only what would spend.
I like to think that it's the same than having cash in our pockets, if you lose it you won't claim to anybody.
So create another separate wallet, feed it with sum funds from your hard wallet and enjoy safely. And remember to ALWAYS keep your private keys out of any connected device (at least the big wallet), never share it , never take a picture and so on.


Why does the Genesis block coinbase input script push bits and the value 0x04 before the famous "Chancellor" message?

I found some more information on the Wiki:

  Generations have a single input, and this input has a "coinbase" parameter instead of a scriptSig. The data in "coinbase" can be anything; it isn't used. Bitcoin puts the current compact-format target and the arbitrary-precision "extraNonce" number there, which increments every time the Nonce field in the block header overflows. Outputs can be anything, but Bitcoin creates one exactly like an IP address transaction. The extranonce contributes to enlarge the domain for the proof of work function. Miners can easily modify nonce (4byte), timestamp and extranonce (2 to 100bytes).

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

In other words, the first Bitcoin client copied the "bits" field (compact-format target) from the block header and used it in a push data operation for the coinbase input script. But I'm still not sure why this was considered to be a good idea.

Next, a second pushdata operation pushed the "extranonce" field. This field incremented whenever the nonce field overflowed. The privacy implications of this system are discussed here:

https://bitslog.wordpress.com/2013/04/17/the-well-deserved-fortune-of-satoshi-nakamoto/

I believe I can now answer my own questions:

No.
Bits is there because that's just what Bitcoin did. 0x04 is the extranonce field.
Yes.
Yes, in part.


If someone finds your USB and it has a full backup, they’ll be able to recreate your current wallets and steal all the funds. If you still have a working instance of those wallets, then you should immediately transfer all funds out of them and into new wallets. Do not use the original wallets to store funds ever again, create a brand new wallet (ie new seed) and use that from now on.

Be careful with your backups, if someone stole your coins you would likely have no recourse at this point.


Verify Mycelium still has private key for spent address

Mycelium uses a hierarchical deterministic (HD) wallet, which means all private and public keys follow from an initial master key value. Every time a spend transaction occurs from the wallet, you can see that another private key is generated from the master key and it keeps a count of how many private keys are used. Any application that can sweep such a wallet should be able to acquire all the private keys along with it. If not, other questions answer how to extract private keys from an HD wallet: Derive private keys from a HD key


Is it possible for multisig wallets to have trusted addresses? (Dynamic amount of permissions required)

This is not a wallet function. This can be done with m-of-n multisig script.

for example Alice, Bob, Charley, David and Eva want to have 3-of-5 multisig address, but David is manager and it is enough to have 2 signatures for spending if one signer is David. Eva is bigboss and can spend funds alone.

So, the redeem script can be

OP_3 pubA pubB pubC pubD OP_DUP pubE OP_DUP OP_DUP OP_8 OP_CHECKMULTISIG


Do I need to keep updating my wallet address in faucets?

You're using a HD Wallet which specifically avoids reused addresses. You can of course reuse an address, so putting the same address into faucets is probably the only way to spend the low value input.

So, yes, reuse the address


Could i build a mining rig with these parts?

I have to say you did not research Bitcoin mining enough. Mining on a GPU is obsolete, reports say ASIC-based mining devices with x40 the performance have already started shipping.


There is a fixed rate for how many bitcoins are mined each block. The block reward halves every 210,000 blocks, see Controlled Supply.

Here is a short term bitcoin distribution projection from the Bitcoin Wiki:

To calculate the total coins for a given block, try:

coins.py

block = 210000 * 10
totalCoins = 0

subsidy = 50.0
for i in range(1,block):
    if(i%210000 == 0):
        subsidy = subsidy / 2
    totalCoins += subsidy
    #print i, subsidy, totalCoins

print totalCoins

Also, you might find this helpful: Deflation Calculator


How can we be sure that Open Coin would not create more than 100 billion XRP?

Doing so would subject OpenCoin to lawsuits due to promissory estoppel. OpenCoin's statement that they will not do so is effectively a warranty. And, of course, it would be a completely self-destructive thing for them to do.

(I am an employee of OpenCoin, speaking only for myself.)


Issue with bitcoin client 0.4.0 - stop populating

Try deleting your blkindex.dat and blk0001.dat files (do NOT delete wallet.dat, even better make a backup), and let bitcoin re-download the chain. The exists a rare situation where the block chain files become corrupted, and bitcoin does not accept any new blocks.


Issuing bitcoin-cli commands via terminal

I figured out a solution, just use curl in the terminal which communicates the commands via binary data.


Running bitcoin core in a low storage system

You cannot skip downloading the blockchain, but you can skip storing it.

If you run Bitcoin Core with the -prune=N or put prune=N in the bitcoin.conf file, only at most N megabytes worth of blocks will be stored on disk. N has to be at least 550 currently.

Pruning does not reduce the validation or security at all, but does prevent your node from serving historical blocks to other peers.


What did I do wrong that caused me to lose bitcoin?

1) If you generate your paper wallet on your computer, you have to fully trust your computer

2) If you use a website for generating your paper wallet, a) you need to trust that website (hopefully its local javascript) b) your browser and its random number generator and c) eventually your network provider(s) (depending on the transport layer security)

3) If you generate your paper wallet on your computer and it was compromised, the generated paper wallet was accessible at least during the time of your generation.

My recommendation

1. Never ever use a online paperwallet generator

2. Hardware wallets are eventually not super secure, but they offer great security, maybe use them instead of a paperwallet

3. The BIP39 24 word seed can be restored even if the vendor of your HWW disappears

Conclusion:

Use an old offline computer with Bitcoin Core or any other semi-trusted software to generate your private keys or seeds, keep it offline all the time!

Or... use multiple hardware wallets from different vendors in a multisig setup if you want maximal security (but comes with minimal user experience)


Can a bitcoin cold wallet become incompatible

Background

In order to answer the question let's first identify the key components inside a Bitcoin wallet:

Bitcoin public keys are derived by applying Elliptic Curve maths to a large random number (the private key).

A Bitcoin address is, in turn, derived by applying a series of transformations to a public key.

One private key is associated with one public key, and each public key creates one Bitcoin address. The Bitcoin wiki provides details and examples.

A standard wallet typically contains and manages several private keys and their associated public keys and addresses.

BIP32 specifies a schema for creating a Hierarchical Deterministic (HD) wallet that uses a seed phrase to reliably and repeatably generate a single master private key and set of addresses.

When we speak of "cold storage", it can mean that we either store bitcoin in

a single standard address with a single private key, or
an HD wallet - a set of addresses with a common master private key - all of which can be recreated from the seed phrase, or the xprv format private key

The client mechanism for creating a standard address is different from the mechanism for creating an HD extended private key and its associated set of addresses. However, the mechanism for creating each is standardized. Wallet clients, like Electrum, can generally create addresses by either mechanism but implement their own schema for generating the HD seed phrase. Variations and changes are evident between different clients and even between different versions of the same client, e.g. the length of Electrum's seed phrase was changed some years ago.

The Bitcoin protocol accepts addresses produced by either method - the network simply sees valid Bitcoin address referenced in a transaction.

Conclusion

So, coming to your concern about HD client maintenance and its implications for cold storage, yes, there are risks. Who knows what the future holds, right?

Storing bitcoin, long-term, in a standard address means that you only have to back-up and secure the underlying private key. The bitcoin can be accessed easily and reliably, in future, by simply importing the private key into any standard wallet client or address tool script.

Using an HD wallet application for long-term storage could have the outcome that, after years or decades, the application has fallen out of maintenance or has changed its HD implementation. A solution would be to keep a backup of the application version that you had originally used to create the HD wallet. Also, exporting and securing the HD master private key in xprv format could be a mitigation. However, I have witnessed instances where xprv exports from one client fail to import to other HD clients, for whatever reason.

HD is useful and convenient for everyday use - provided it is frequently updated to new client versions. Otherwise, the HD client software will become outdated and may cease to function. Even when storing the original version, after years and decades, its dependencies on outdated software libraries and CPU/hardware architecture may render it inoperable.

For long-term cold storage a good rule of thumb is: simple and standard is safest.


Does extra outbound connection when tip is stale disable feeler connection?

The problem is because the netgroup of the feeler connection was not properly handled.
Check further pull requests and fixes here: https://github.com/bitcoin/bitcoin/issues/15484


Can a competitive miner be crafted at home?

No, the ASIC chips used in miners are impossible to craft at home, and to my knowledge no competitive chips are for sale as component parts.

Development of new ASIC chips has progressed to a level where it costs millions to create a new template and you need state of the art (<16nm) production to produce them. It is not economic to do this at home.


20% difference between settxfee and actual transaction

The problem is not with bitcoin core, it's definitely of the block explorer.

Transaction size is 104 + 32 + 34 + 10 = 180 byte, they are saying transaction size 140 byte. I don't understand how did they calculate it.

Blockchain.info saying transactions size is 250

You should not trust them for that matters, try

bitcoin-cli gettransaction 789d578d22ee07e11ceca9e94aacbf51d36a41223f792035cac26e91830f39c3

and see transaction size.


It seems unlikely that they'd allow that. App Store Review Guideline 2.4.2 provides:

  Design your app to use power efficiently. Apps should not rapidly drain battery, generate excessive heat, or put unnecessary strain on device resources.

Also, Guideline 3 seems relevant:

  If you want to unlock features or functionality within your app, (by way of example: subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use in-app purchase. Apps may use in-app purchase currencies to enable customers to “tip” digital content providers in the app. Apps and their metadata may not include buttons, external links, or other calls to action that direct customers to purchasing mechanisms other than in-app purchase.

(i.e. Apple must get a cut of all purchases.)

Or Guideline 3.2.2 (ii):

  Monetizing built-in capabilities provided by the hardware or operating system, such as Push Notifications, the camera, or the gyroscope; or Apple services, such as Apple Music access or iCloud storage.


How to use the "Bootstrap.dat" file with bitcoin-qt?

Okay, it appears after much trial and error, I figured out that you put the bootstrap.dat file in the AppData/Roaming/Bitcoin or ~/.bitcoin folder. You can leave everything else in that folder untouched, just add the bootstrap.dat file in the Bitcoin folder.

I left bootstrap.dat in there, and finally Bitcoin-QT found it, and on the bottom it states "Importing blocks from disk..." I'm currently at 80 weeks behind on the update, compared to 240+.

I was reading crap about using the -loadblock command and extracting/unzipping the .dat file.... well this wasn't needed.  At least it isn't needed on the current version of QT, which I believe is .8.0.5


Where should a miner get the most current block from?

You've asked two different questions and already answered one of them.

Solo miners get blocks from their peers on the network.

Discovering peers is done by a bootstrapping process. Basically, the software comes with a default list of known nodes, and from these nodes the client learns about other nodes. More details are at https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery.


Mining new private alt coin derived from litecoin

I'm not the most familiar with altcoins, but...

Yes, I'm pretty sure you can. Because basically you're mining blocks using the info from your node, so I don't see any harm. I've never tested this, because i'm too lazy and I don't see a point in making my own altcoin. So don't quote me on this.
Scrypt doesn't require OpenCL. If i'm not mistaken, OpenCL is mainly used to allow GPUs to mine.


The transaction would be valid - there is nothing in the protocol that forbids this.

This is also the cause of the "duplicate coinbase" bug in the Satoshi client which I discovered a few months ago. If you create a block with a duplicate coinbase and that block then becomes orphaned it will cause the both the original and duplicate tx to be removed from the database.


Which exchanges still accept USD wire transfers? (Oct 2012)

Dwolla is only for this in the U.S. and the type of bank transfer they do is ACH, which is specific to banks in the U.S.

As far as exchanges that accept wire transfers directly, there are many, including:

Mt. Gox (Japan)
BitStamp (EU)
BitFloor (U.S.)
BTC-E (Russia)
Bitcoins Direct (U.S.) (bulk sales, minimum $500)

Many various methods here:

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


Where can I find a list of merchants who accept bitcoins?

As well as the https://en.bitcoin.it/wiki/Trade page you could look at:

http://www.thebitcoinreview.com/

and

http://www.thebitcointrader.com/p/bitcoin-better-business-bureau.html

Both of these sites try to give some kind of rating or review but the data is limited at the moment.


An estimate of block propagation time would by necessity consider the speed of a sample of nodes in the p2p network.  As such it isn't possible to get an estimate using your node alone.  You could measure the time it takes to upload/download blocks to/from peers as well as verify them.

To estimate propagation time you would need several nodes dispersed geographically and with unique peers.  You could then monitor how long it took between for first and last node to receive the block.

You could also listen to your connected peers for their announcement of new block headers.  This would allow you to estimate propagation time based on more nodes.


Sending transactions to mining nodes only?

In theory, that would be ideal if your goal is solely getting the transaction to mine.

Hurts permissionless mining However it does require knowing how to reach miners directly. Mining is designed to be a permissionless business, accessible for anyone with the right hardware. Your solution would require publishing the IP addresses of miners to all transaction creators.

Hurts sender privacy It would also hurt privacy, as miners would learn the sender IP of transaction creators; possibly enabling them to censor based on that information.

Not relaying transactions doesn't gain you much The marginal cost of relaying every transaction to every node is low since the introduction of algorithms like BIP152 (compact blocks). Assuming a transaction will eventually be mined anyway, that transaction needs to reach every full node eventually (as part of a block). Relaying it as a separate transaction ahead of time doesn't cost anything, if the relay of the block can refer to the earlier transaction instead. There are some costs related to 'inv' messages that can be reduced though, without removing transaction relay.

Hurts block propagation speed And lastly, only broadcasting transaction to miners directly would worsen block propagation speed very significantly. Modern block relay protocols (like BIP152 and FIBRE) rely on nodes knowing the bulk of blocks' transaction ahead of time to quickly relay those blocks.


What exactly is a "non-fungible token" and why would anyone care or want one?

What is NFT?
Non-Fungible Token. Tokens that are unique and used for something special.
Is it something new and useful?
No its not a new concept IMO. Can be useful in some cases and off-chain tokens used in games like Lightnite for skins makes sense. They are trending for now and there will be lot of people trying to make money from such online trends. Some will lose money.
NFTs using bitcoin tech:
LN: https://scarce.city/
Liquid: https://explorer.lightnite.io/
Rootstock: https://watafan.com/#/marketplace
LNP/BP: https://github.com/LNP-BP/LNPBPs/blob/647acb854783b3caa9a84f782d199c19e64d9e28/lnpbp-0021.md
You can also sell digital content without NFTs: https://github.com/yzernik/squeaknode


Can corrupted unspent transaction outputs list leading to higher than expected fee be seen as an actual threat?

Therefore you set your transaction outputs to be 1 BTC for the receiver and 0.99 BTC as change, believing to pay a fee of 0.01 BTC and you happily sign and submit that transaction. But to your big dissapointment, you find out the next day that you actually paid/lost 98 BTC as a fee! The attacker did not gain anything, but he made you lose a significant amount of BTC.

Indeed, this would work, and it is a known issue.

  I know - you can verify the hashes of the transactions where the inputs come from and if something seems off, reject the transaction, or the transaction will be rejected by the network, since it is not practically achievable to "crack" the transaction hashes, but I'm not sure if lightweight clients/hardware wallets actually verify the origin of unspent outputs and I have a suspicion that TREZOR, for example, does not do it, since in the protocol you just send the transaction inputs and outputs.

Actually, they do verify this. For legacy transactions, you have to send the TREZOR all transactions whose outputs you are spending from, to prove the amounts involved.

  A simple fix to the issue above would be including the amounts explicitly in the transaction inputs, so when you sign the transaction you say "I believe that input x has y coins and reject the transaction if you think this is not true", but currently there is no way to do this AFAIK.

That is indeed a solution, and that is one of the changes that were included in the SegWit protocol change. When spending a SegWit output, a new way to compute signature hashes is used, which explicitly includes the amount you're spending.

This means that if you would somehow lie to the hardware device about the amount being spent, the resulting signature would be invalid.

You can read more about this change in BIP 143.


transfer Bitcoin without synchronizing Bitcoin core

The good (or bad) news is that your friends hasn't sent you any bitcoins to address 13BuBwcQM2WwedYzqkccovjYYPKBAc6RWE yet so ask him not to do so until you configure your account to blockchain.info or another online wallet.

Before you proceed with deleting your local wallet, keep the wallet.dat file so you will be able to restore it later on if needed.


Electrum multisig 2of2 on separate machines and both offline(cold storage)

A watch only version of a multisig wallet must be created using the xpubs of both wallets not just the xpub of one wallet. Now there are two possibilities here:

You created a wallet with one xpub and one seed. This wallet is not watch only and transactions generated by it need only be signed by the wallet whose xpub you used. You can tell if this what you did in two ways. One way is that when you open the wallet there should be no warning dialog that it is a watch-only wallet. The other is that when you attempt to spend your coins the resulting transaction preview dialog should show "partially signed 1/2" up top below the tx id.
You created a single sig watch only wallet with just one of the multisig wallet's xpubs. Transactions created by this wallet can spend bitcoins sent to single sig p2pkh or p2wpkh addresses. You need only sign it with one of the multisig wallets i.e. the one whose xpub you used. You can tell that this is what you did if you get a warning dialog about watch only wallets when you open the wallet and if it says standard for wallet type under wallet menu > information.

In order to create a proper watch only version start by creating a new wallet file via file menu > new/restore, enter a unique filename and click next. Then select multisignature as the wallet type, 2 of 2 as the number of cosigners and signatures required, choose "Use a master key" or "enter a cosigner key" when asked to add a cosigner and then enter the xpub of one of the cosigning wallets. Repeat this last step until you've entered both cosigner's xpubs.


Bittrex API market history -- interpreting OrderType

You almost have it!

BUY means that the order was the consequence of someone buying at the ask price, as opposed to creating an order at a lower-than-market price.

SELL means that the order was the consequence of someone selling at the bid price, as opposed to creating an order at a higher-than-market price.


How to create an new account on a bitcoind server

You can do one of the following:

create an address using getnewaddress
send some coins with a move command

Those commands will automatically create the target account if it doesn't exist.


I changed bitcoin address but the bitcoin is still stuck in the old address and i don't know how to access my former address??? Please help me

Where are bitcoins stored?
Some basic principles:
Bitcoins are not actually stored in wallets. Your private-key is stored in your wallet and from that the "bitcoin address" is derived.
The bitcoins are associated with the address.
Movements of bitcoin values are kept track of in an accounting ledger called "the blockchain". Bitcoins are not actually stored in the blockchain, the blockchain just keeps track of the movements of bitcoin values from one address to another.
There is no master copy of the blockchain but lots of people running bitcoin software have their own copies of it and can use it to check transactions.
So bitcoins are not stored anywhere and moving their value from one address to another involves a bitcoin transaction paid for using a mining fee. You cant just change the address of some bitcoins without making a transaction and having it published to everyone's copy of the blockchain.
Where are my bitcoins?
To see how many Bitcoin are associated with your "old address", you can type the address into a "blockchain explorer" website.
If the bitcoin value has been moved ("spent"), this will show you the bitcoin addresses it went to.
Change address
You don't say how you changed the address. Is it possible you mistakenly generated a change address - This is an address for change to be sent back to you when you buy something. Change in a similar sense to small coins returned when you buy something using a large banknote. If you did this, your original address is still usable and nothing is lost or broken.
Recovering from an unusable wallet
Using the private key
See How can I export the private key for an address from the satoshi client? and note that, if your wallet is protected by a passphrase (as it should be), you have to enter command walletpassphrase correcthorsebatterystaple 600 before command  dumpprivkey 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 but replacing correcthorsebatterystaple with your wallet passphrase and replacing 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 with your old address.

One way to recover from a broken wallet requires the private key. It looks something like either of these two examples

E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262 or
5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF

If you have that written down somewhere (which you really should), you can download a lightweight wallet to a new clean computer and import your private key into that wallet. Use a lightweight wallet because it takes much less time to sync and be usable.
Once you have recovered, I would suggest using a paper wallet for long term storage or a hardware wallet for more security. Regularly practise recovering your wallet from backups, recovery-phrases and private keys.
Using an old backup copy of wallet.dat
See Import wallet.dat into a new Bitcoin-Qt client - essentially, make a copy of old wallet.dat install a new bitcoin-core wallet somewhere, stop the program, replace it's new wallet.dat with your copy of the old wallet.dat and restart the program. You may have to wait a few days while it synchronises with the network.


Is there a service like localbitcoins.com for Litecoin?

https://www.litecoinlocal.net/ is the site you are looking for


There is no such procedure. While OpenCoin could accomplish it today by changing the code to create such a thing, in the future, the procedure would be as follows:

Propose some kind of change that would create more XRP.
Assign it a 256-bit ID. (It can be arbitrary.)
Release patches that support this change, and announce their support for this ID.
Get 80% of validators to run your patches.
Wait out the two week waiting period for new feature enablement (to give a chance for review and vetoing).
If 80% of validators (weighted by trust) still run your patch, the feature will enable itself and then you can create more XRP. Alternatively, you could try to convince about 50% of validators (weighted by trust) that your patch is so urgently needed that the normal supermajority delay process can be bypassed.


Receive bitcoin before block downloading is finished

Please consider using thin client, like Multibit. Your balance will be available to you after few second. You can import BitcoinQT wallet in no time.


Do Receive addresses generated by blockchain.info's wallet expire with time?

Addresses do not expire, regardless of the wallet that generated them.


In bitcoin-cli getpeerinf call what does "-1" mean as a "synced_headers" or "synced_blocks" value?

It means you either have no headers, no block, or both known to be (*) in common with this peer.
From the help:
$ bitcoin-cli help getpeerinfo
....
    "synced_headers" : n,          (numeric) The last header we have in common with this peer
    "synced_blocks" : n,           (numeric) The last block we have in common with this peer

(*) As Pieter cleared in the comment it doesn't mean you aren't on the same chain, just that the peer didn't announce any block to you yet.


Will there be a point in the future where moving bitcoins to a new address will make them safer?

That is already the case.

Using a 2-of-2 multisig address (with keys separated) is safer against theft than a normal P2PKH.
Using a 1-of-2 multisig address (with keys separated) is safer against accidental loss than a normal P2PKH.

If native P2WSH segwit addresses get deployed in the future (with 256-bit script hashes, instead of 160-bit P2SH script hashes), we'll also get a way that is more secure against exhaustive collision searches.

  I am noticing (e.g. the above article) that newer forms of encryption are being researched and developed for use in bitcoin.

I believe the term you're looking for is digital signatures rather than encryption. While some cryptographic algorithms (notably, RSA) can be used for both encryption and digital signing, this is an exception rather than a rule. Bitcoin's authentication used in its script system is currently based on ECDSA, which cannot be used for encryption. The only places in Bitcoin where encryption is used is locally in wallets for password protection, and possibly on the P2P protocol if BIP151 gets adopted. If one of these is actually what you're asking about, I misunderstood the question.

The linked paper suggests the use of Elliptic Curve Schnorr signatures, something I've been working on myself as well. They have various advantages, one of which is a theoretical proof for its security. ECDSA does not have this, though it's not considered to be an issue in practice.

What Schnorr mostly helps with is privacy and compactness. The most interesting idea is signature aggregation, which would allow us to combine all signatures in a transaction - whether they are from multisig, multiple inputs or whatever - into just a single one.

Regardless, the answer to your question is absolutely yes. In particular, if we'd ever want Bitcoin to remain safe in the presence of sufficiently powerful general-purpose quantum computers, we'll need to switch from elliptic curve cryptography to post-quantum cryptography, which uses entirely different private keys, public keys, and signatures, and thus addresses.


Looking for JS/Node.js code example to sign a transaction (with multiple UTXOs) with only the extended private key

For anyone that might be interested in this, there is a great BIP32 library from the same people who created the bitcoinjs-lib and it has the tools to derive your private keys from the extended master-private-key.

const t = bip32.fromBase58(extPrivateKey, zenCashNetwork);

const derivedIndex = `${utxo.AddrType}/${utxo.AddrIndex}`;

const wifKey = t.derivePath(derivedIndex).toWIF();

In our case, we needed this to sign a ZenCash transaction


Can more transactions be processed within a centralized bitcoin exchanges than in the rest of the bitcoin network?

I have heard this point being made in discussion before, and I think you're missing a part of it:

The Bitcoin blockchain processes transactions in a trustless decentralized manner. This is due to the ledger of the payment system not being under control of any sole entity. This is an extremely inefficient and expensive process.

A centralized service can perform Bitcoin denominated payments much quicker, because they control their ledger: They update their own records to reduce their liability to one user and increase their liability to another. Nothing goes on the blockchain, it is all just in their own books. Since there is no other party directly involved, they can do millions of transactions between users on their own system without breaking in sweat. The disadvantage is obviously that the user has to trust the centralized service to pay back the liability at a future date.


They simply do not process transactions they receive without a fee. The sender loses their coins to SatoshiDice if they make this mistake.


I made a $60 transaction to my BTC wallet and I’ve only received half of it ands it’s been 4days

I put $60 in the Bitcoin atm so I can covert the $60 into bitcoin but only half of my money is in my wallet

Bitcoin ATMs charge fees for currency exchange. Sometimes they use jaw-dropping spreads on exchange rates. They are usually very expensive. Possibly more so for small amounts. Check your receipt.

If you think the machine made a mistake, contact the operator (don't contact the owner of the floorspace, they mostly just rent the floorspace they don't own the machine).

  and it’s been 4 days

Waiting longer won't make any more BTC turn up. The transaction is done.

Footnote/Digression:

Bitcoin ATMs are not Automated Teller Machines (ATMs) they are automated currency exchanges, a different thing. Calling them BTMs is marginally better.


Why can the race between the honest chain and an attacker chain be characterized as a Binomial Random Walk?

Great question.
So the general gist of 'random walk' is contingent on two different things:

Probability

Logic

It's better to start with the logic part because it will make the probability portion more logical.
Looking at the Logic
From the Bitcoin whitepaper, Satoshi states:

"The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failiure event is the attacker's chain being extended by one block, reducing the gap by -1."

"The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven."

Breaking This Down
If we were to consider a miner to be an "attacker" then that means that they must have "reversed" a transaction they spent in order to spend it elsewhere (maybe to a wallet they own).
Using this principle, we know that the transaction must be in the past.
So if we're mining at block height 'n', then at best, the attacker must start at n-1 (since they need to reverse a transaction that already was mined in a block).
Here's Where Probability Comes in
As that miner attempts to catch up to the network, they're already at an inherent disadvantage since they're a block behind.
Assuming the network solves for 'n' before the attacker solves 'n-1', then their chances of then solving 'n-1', 'n', then ultimately solving 'n+1' (the new block that the network is working on) decreases substantially.
With this decreased possibility of catching up, the network's probability of extending the lead then increases.
Formula
Not sure if this suffices, but Satoshi included both a formula and C code in the original whitepaper.
The formula is as follows:

The C code is as follows:

#include "math.h"
#include "stdio.h"

double AttackerSuccessProbability(double q, int z)
{
 double p = 1.0 - q;
 double lambda = z * (q / p);
 double sum = 1.0;
 int i;
 int k;
 for (k = 0; k <= z; k++)
 {
     double poisson = exp(-lambda);

     for (i = 1; i <= k; i++)
     poisson *= lambda / i;
     sum -= poisson * (1 - pow(q / p, z - k));
 }
 return sum;
}

int main()
{
double ans = AttackerSuccessProbability(0.1, 1);
printf("'%f'", ans);
}

Hopefully this explanation thus far makes sense (and you find the answer to your question to be adequate)


Which source code to make "checksum bits appended"

See src/base58.cpp Line 124:

std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn)
{
    // add 4-byte hash check to the end
    std::vector<unsigned char> vch(vchIn);
    uint256 hash = Hash(vch.begin(), vch.end());
    vch.insert(vch.end(), (unsigned char*)&hash, (unsigned char*)&hash + 4);
    return EncodeBase58(vch);
}

As you can see, the data vch is hashed, then the first 4 bytes of the hash are appended to the end of vch before base58 encoding.


Have any cryptography experts vetted the bitcoin source code?

"It looks good to me" tends to make for a pretty boring paper.

Security expert Dan Kaminsky has given talks and written articles about the Bitcoin system. His two main points are that it cannot scale to the number of transactions a payment processing system needs and that it is not as anonymous as many people think.

He also wrote, "As a note, I have a tremendous amount of respect for BitCoin; I count it in the top five most interesting security projects of the decade.  Entire classes of bugs are missing.  But it's just not an anonymous solution, and the devs will say as much."


Can I do transactions while Bitcoin Core is being synchronized?

I assume, you are using bitcoin QT client, then the general answer to move coins without bitcoin core being sync'd is yes :-) Simply use another wallet software. You could export your keys from the current bitcoin core system, and import it into another wallet software. I am doing this often, and I have written my own unix shell scripts to then create a transaction manually. However I recognize, that you are a new member here, and I assume, you do not have the experience yet to do so. So it is quite difficult to explain the process, without having a sound understanding, what you do.

Why it is so slow in sync'ing the blockchain? There can be many reasons:
I explained it here: https://bitcointalk.org/index.php?topic=4500995.msg40584294#msg40584294
There is no easy way to speed up things, but if you have a decent QUAD CORE CPU and 4 gig memory, with an SSD, you're good to go a few days.

For the sake of quickly getting things done, playing with low volumes (low values of funds), I guess the best option for you would be to export the PRIVATE keys from bitcoin wallet (there is plenty of messages in the forum her, just search for it, keywords QT wallet and dumpprivkeys), and then import into some SPV wallet, or some online wallet. However, there are different representations of keys to import and export (keys can be hexadecimal, or WIF or even WIF-compressed). So there is a learning curve involved! You would need to find a matching pair. Perhaps the question should be rephrased a bit, and someone in the community can help out on compatible export/import wallets...


How will X509-validated payments request work? (AKA "The Payment Protocol")

The main benefit of the Bitcoin Payment Protocol (seen in BIP 070)  is to provide for a better customer experience and better security against man-in-the-middle attacks on the payment process.

See this BitcoinTalk announcment and information from the Bitcoin Foundation.  The code for this is located in the PaymentServer.cpp file

  How are Root CAs selected?

Root CAs are selected from this Mozilla root CA list.  Although I haven't seen anything to verify this, but I hope there is a way to account for Certificate "extended key usage" in the PKI hierarchy.

  What does the request process look like?

No GUI screenshot of this process is available (yet), but a workflow of the process looks like this:


Port 8333 closed, fwd on Router OK, firewall port open, full-node not reachable

First, check your router opens that port too and redirects that port to you computer.

Then check CGNAT. If the external IP address your router shows isn't the same as you find when you search for "what is my ip", your ISP is giving the same IP to multiple customers. So you won't be able to open a port.


What happens if "transaction size" is larger than "maximum block size"?

Nick Odell answers the original question:

  The maximum transaction size is the size of the block. Source.

and

  Transactions larger than 100 kilobytes (including witness at a 75% discount rate) are non-standard. Source 1. Source 2.

so the case that you are describing will not occur as transactions lager than the blocksize will be sorted out.


My transaction in Multibit HD has seen by 124 peers but yet after 11 hours, not confirmed?

Looks like it was included in block #441,666 and currently has 29 confirmations.


Modify the number of confirmations for an utxo to be ```safe == true``` in Bitcoin Core

From the documentation:

  listunspent ( minconf maxconf ["address",...] include_unsafe query_options )

  Returns array of unspent transaction outputs
  with between minconf and maxconf (inclusive) confirmations.

so listunspent 3 would work for you?


When new Bitcoins are issued (7,200 per day, on average) they go to those who are mining for bitcoins.  At one point in time, mining to acquire bitcoins was something that was relatively easy to do.  That is no longer the case.  So now to acquire bitcoins one would normally buy bitcoins at an exchange.

What options are available to you will differ based on where you are, what payment methods you have available, how quickly you need the bitcoins and how many you intend to buy.

For instance, in the U.S., the fastest method to buy bitcoins is to use the service BitInstant where you deposit cash at a bank and they send the funds to an exchange.   The cheapest method is to do a bank transfer using Dwolla as intermediary -- however that is not very fast.  Other methods are shown here:

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

Then once you have purchased the bitcoins at the exchange, you would simply withdraw them and send them to a bitcoin address from your own wallet.  Using the Bitcoin.org client you would click the Receive bitcoins button and generate a new address.  That is the address you would copy and then from the exchange paste that address when asked from their withdrawal page.


Its not a math problem. Its just search for partial collision in function called sha256.

Sha256 is a famous type of puzzle.

During the writing of this post, a block  397108 was mined.

The solution looks like this:
00000000000000000497b28e9c38673ef8fd2fed317d6eca8a579350b1cba0a6

Notice the zeroes on the beginning. The more zeroes the harder is to find a solution.

The only reason is to waste power to prevent creation of funds from thin air (prevent print too much money) and to confirm payments.


Why is my new altcoin trying to connect to peers and sees almost 200k blocks remaining?

Every coin has some defined set of seed servers it can to connect to in order to build up the initial list of peers.

See:

static const char *strDNSSeed

in

https://github.com/ralphtheninja/blackcoin/blob/master/src/net.cpp


Do full-nodes process all transactions before broadcasting the new block header?

Do full-nodes process all txs before broadcasting the new blockheader?

It depends. For nodes having protocol version 70015 and higher, the peer will announce the compact block even before full validation of the transactions contained in the block. However, the header has to be conform with the difficulty requirement. For nodes using protocol version 70015 and lower, the blocks are fully processed before broadcast.

  Since the node would still validate the PoW and the previousblockhash, it would not be possible to DoS the network with invalid headers

Yes, that is exactly what Bitcoin full nodes do. Whenever you come online, or receive a new block header, the block headers will be verified first to see that it has the required PoW. As you mentioned this does help prevent DoS attacks.

  Miners could begin processing the candidate block from its header and the list of transaction hashes since they already likely have > 90% of those txs.

Miners actually do that. Most of them will build and start processing the new block before even verifying the old one so as to not waste any time mining. However, there will be some transactions in that previous block that the miner hadn't seen in the past. Although those transactions will be very few, the miner would not know which UTXOs have been consumed by those transactions.

Thus miners would start building an empty block (containing only the coinbase transaction) on top of the block that they have just received which hasn't been fully verified. After the previous block gets verified in parallel, the miners will then add the unconfirmed valid transactions from the mempool to the block that they are currently mining.

  Miners could determine how much time (=money) they are losing by comparing the time they receive the header and the last tx.

As I mentioned above, it is not only the time but also the uncertainty related to what UTXOs have been consumed by the block that had transactions that the miner did not see in the past. As a result miners have to start building an empty block before fully verifying its parent.

However, it is important to note an incident that happened when blocks does not get fully verified. When BIP 66 (strict DER encoding of signatures) was implemented, some miners running the BIP 66 enabled Bitcoin Core versions were listening to pre-BIP 66 pools. One of the pool running a pre-BIP 66 version produced a block that had an incorrect block version number. The miner with BIP 66 started working on top of that unverified block by processing an empty block.

However, their bitcoind never accepted the full block as it was invalid. The result was building a series of empty blocks on top of the other that were ultimately not accepted by the network.


Different balances Bitcoin-Qt vs. Blockchain.info

The problem is likely that in Bitcoin-Qt, your balance is not kept in a single address. For privacy reasons (of the system as a whole), change from transactions is sent to new addresses.

The abstraction provided by the Bitcoin-Qt client is that of a wallet, in which coins enter via (don't reside at) addresses, and are sent out from it, and is otherwise a black box. When you look at it via blockchain.info or similar sites, you get a more low-level via, where "balances" are kept per address (which is actually sort-of misleading, as at the protocol level, Bitcoin doesn't work in function of addresses or balances at all, but in terms of transactions on individual coins).


Is it possible to mine empty block without downloading entire blockchain?

Yes. The only things you need to create a block are:

Hash of topmost block
It's height


How safe is BitcoinCore since it is using owner's passphrase?

No, not all passphrases are used to generate the private keys for a wallet. Only specifically brain wallets do that.
Passphrases in actual wallet software like Bitcoin Core and Electrum are used to encrypt the wallet. The private keys are still randomly and securely generated. Your passphrase is only used as an encryption key so that the private keys are stored encrypted on disk.
It is safe and recommended that you encrypt your wallet with a passphrase. If you choose to not encrypt your wallet, then the private keys will be stored unencrypted on disk and any person or malware with access to your computer can steal your private keys and thus your Bitcoin.


How to tell how many hashes/sec the bitcoin core app on osx is running?

Yes Erik, the mining feature is still built-in and you can check how many hashes your CPU can perform. Although it's pointless and you cannot earn anything, it is still a fun experiment that people like to try. If you have a bitcoin core installed and synced with the network, you can just simply open the command console and type in and enter:

setgenerate true

This will initiate your CPU and will start mining.
You can then get your hashrate by typing in

getmininginfo

Your hashrate will be shown in integer format and you should see a number like 1-3 million hashes per second.
To turn off the mining, because you will just be wasting energy type in

setgenerate false


What metadata can be captured by a single miner? What about a group of miners?

The sender, recipient and transferred amount are already public information and readily available in the blockchain.

The only special access that miners have is that they could log the ip address of users that directly submit transactions for mining, if such a direct access is offered. Besides that there is no special information available to miners.


Need help to understand where bitcoin transaction has gone

Assuming the address you provided is really your address and not just watch only one there are basically two possibilities:

You have sent the money to another address and forgotten about that (or misunderstood what you are doing),
Your wallet got compromised either by giving private key to some malicious third part or via computer virus which stolen it without your knowledge.

In either way the address you mentioned is now empty and you cannot take the money back unless you control the addresses it is now on.


Calculate Any Address Balance Using Bitcoinn RPC getrawtransaction

Bitcoin Core does not support querying an address balance.

What you can do is import the address as watch-only into your wallet (using the importaddress RPC), and completing a rescan of the blockchain. When you're finished, the wallet will treat that address as one of its own, and track payments to it, and include it in its balance. Of course, you won't be able to spend it without private key.


Would free energy cause a market collapse?

Although this question might be "too broad" or "off-topic", I'll give you an answer and it's no.

  By removing the cost of electricity, hardware expenditure becomes the ceiling for hashrates. Surely this makes cryptocurrencies less valuable. Wouldn't the market become hypersaturated as supply went up?

I don't follow. By removing the cost of electricity you only remove ONE of the prohibitors. There are still other prohibitors such as equipment/bandwidth/storage costs, know-how, and time. There should be no increase in supply. The bitcoin difficulty will still remain, so blocks will still be solved in a ~10 minute target window. Even if they had free energy and built a mining chip that doubled the current hash rate it would just retarget after 2,016 blocks.


Does BIP148 (UASF) offer any replay attack protection?

No. BIP 148 is a soft fork as the BIP 148 chain is valid to all non-BIP148 nodes and can wipe out the non-BIP 148 chain if it were to be longer than it. Because it is a soft fork, there cannot be any replay protection otherwise it would become a hard fork.


From this discussion: How to create a checkpoint file

Run mvn exec:java -Dexec.mainClass=com.google.bitcoin.tools.BuildCheckpoints in the tools/ directory from the bitcoinj repository.

BuildCheckpoints expects you to have a fully synced local Bitcoin-Qt/bitcoind instance running.


Saving a customer's info so I can accept bitcoin

Bitcoin transactions are "pushed" by the payer. There is no way for the recipient to "pull" payments.

You should use a new address for each customer. That way you can see who paid their subscription fee by checking which address received the payment. However, the customer would still have to repeat the payment every time.


How to get difficulty from Fairbrix/Tenebrix?

The easiest and most straightforward way would be going to www.allchains.info

No need to bother with command line and stuff.


Hybrid Bitcoin web wallet for performing multi-sig transaction on an e-commerce site

Most of the libraries you mentioned would work for this problem. However, some are built more like libraries to be called from other javascript (eg. BitcoinJS), while others are designed with a full user interface so a semi-technical user can host multisig signing functionality on their browser (eg Copay). Some options you mentioned are also multisig wallet services which require you have an account with them, and they are taking care of some of  the nitty gritty of multisig (eg. BitGo). Since you are trying to build your own e-commerce site around multisig, where one key is always some key you control, you probably want a library you can call in your code, without a user interface.

Without commenting on the suitability of each and every library option, I will say that BitcoinJS can do what you need here. They provide a set of library functions that can create multisig addresses with any set of public keys and M-of-N requirements as well as signing functionality to sign those with private keys (which your buyer and seller could do on a browser hosted solution you provide or own their own).

See BitcoinJS's example for creating a 2-of-3 P2SH address, creating a transanction (to fund your multisig address) and spending from a 2-of-2 multisig address (you will need to modify to spend from a 2-of-3 address).

Bitcore by Bitpay (which Copay is built on) can also create multisig addresses and sign/create transanctions: https://github.com/bitpay/bitcore. You can use it in the browser with bower for easy setup, and their API is very well documented. You can see their example for generating a multisig address.

With all of that said, be very careful with your implementation. This is people's money and you don't want to be introducing vulnerabilities that loses people their money (or yours). If you don't feel comfortable with the security implications of your design decisions, create example demonstration versions and have them well vetted by more experienced people before bringing them into production.


Is there any way to send an output to a script which can then only be sent to one of two addresses?

There's no way for an input script to control the output script, so it can't be encoded into the script itself. However, you can get the same effect with more than one partially-signed transaction. Make a P2SH 2-of-2 multisig address, where you hold one key and the claimant holds the other. Send it some Bitcoin. Then part-sign two transactions from that address, one to A and the other to B. Send the claimant both transactions.

The claimant will only be able to spend exactly the amount you sign for, so if you really want a lower limit you'll need to create more transactions with different outputs.


How is "bytes to push" distinguishable in the scriptPubKey?

It appears that anything between 0x01 - 0x4b in the scriptPubKey signifies the number of bytes to be pushed on to the stack.


They work by brute force.
As a private key is essentially a very large random number, and the encoding process from a public key to an address goes through a couple of hashing steps, the relation between the characters an address starts with and the underlying key is basically random.
Vanity key generators work by simply generating many, many private keys until one leads to an address that just happens to start with the desired characters. It is very similar to the block mining process in this sense.
Difficulty is estimated by the amount of effort it would take to produce an address starting with a desired pattern.
Bitcoin addresses (non-bech32) are encoded in base58, which has 58 possible characters. As the first character of an address is fixed to a 1 or a 3, we can ignore that.
To create an address starting with 1A, you effectively have a 1 in 58 chance, as the address distribution is random, and A could be any one of 58 possible values.
For one starting with 1AA, you are looking at a 1 in 58^2, or a 1 in 3364 chance. This exponential growth is why there is a limit (although the limit varies by how much computing power you can throw at a single address).
For the nine characters indicated in your question, the odds of a random address matching the desired pattern are 1 in 58^9, or 1 in 7,427,658,739,644,928. While this is a big number, it is an achievable one given a large enough cluster working on that one address, especially if you're using GPUs - even a 2-3 year old (high end) laptop CPU can hit several 10 million attempts per second, so this is still an achievable number if you have the resources.
Commercial vanity gen services further optimize this by simultaneously working on multiple independent addresses. The odds of finding an address go up proportionally with the number of addresses you are looking for.

As mentioned by Murch, the second character does not allow all 58 characters with even probability - details on why and how can be found in this question.


How long for an ASIC cluster to generate most private keys

The private key space is really, really big.  Assume your ASIC cluster can do a billion keys per millisecond, and we'll give you your 140 years.  That will result in around 4.5*10^21 keys, or 4*2^70.

Private keys are 256-bit, so at the end of your 140 years you will have covered about 1/1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 of the keyspace.


Why would I have so many rejected shares while mining?

You can try decreasing your intensity. Other parameters can also lower speed and decrease/remove failures. It's like running too eagerly, it might make you trip a lot.

It could also be your Internet connection or even give-me-coins itself (although I doubt it's give-me-coins itself).


In what circumstances would a block appear in the Leveldb .ldb index but have no data in a .dat file?

Bitcoin Core may only have just the block headers for some blocks, not the full block data. Such block headers would get an entry into the chainstate and block index as a block that the node knows about. However the node does not have the full block data corresponding to that header so there is no corresponding block data in the blk*.dat files.

This situation happens during syncing (since Bitcoin Core will fetch block headers first and then the blocks), when there are orphan blocks, and when there are chain forks.


Why is Protoc 3.0.0 breaking Make Install of Bitcoin source?

Try running make clean. This error throws when you installed a different protobuf version.


Which transactions go through the SHA256 process of "trying to win the new block"?

Yes, each miner decides which transactions to select into their block templates. Blocks must have a coinbase transaction, all other transactions are optional, but blocks are limited to 4,000,000 weight units.
Let me elaborate: unconfirmed transactions are relayed on the network by the participating nodes via the p2p gossip protocol. Each node maintains their own list of unconfirmed transactions in its memory pool (mempool). Miners generally pick transactions from their mempool to assemble block templates.
Blocks must have a coinbase transaction as the first transaction in the block, and the remaining transactions must be valid and sorted topologically. A block may not exceed 4,000,000 weight units. Other than that, miners are completely free to pick and choose the composition of their block. Blocks that only contain a coinbase transaction are allowed and referred to as empty-blocks.
It is expected that miners wish to optimize their revenue by collecting the most transaction fees possible. By default, the getBlockTemplate call uses a greedy algorithm that iteratively picks the set of transactions with the highest effective feerate until the block is full.  Miners may use the prioritisetransaction rpc call to reprioritize transactions for the block template consideration. Some miners may use custom software to build their blocks.
In effect, block templates usually overlap almost completely across miners as nodes should see the same transactions on the network (with some slight delays due to relay). However, since each miner's block template attempts to pay the block reward to themselves via the coinbase transaction and each miner has a different payout address, every block template produced by miners will be unique and no miners will ever repeat work done by another miner.
Given a block template, miners search that template's combination space by injecting random data via varying nonces, extranonces, timestamps, malleating the version field, etc. Each new combination yields a unique block header which is hashed using SHA-256d. If a resulting digest meets the target, the miner has found a new block. Otherwise, they create a new block template and start over.
Once a new block is discovered, the block author broadcasts it to their peers. Other nodes that learn about the block append it to their blockchain, update their UTXO sets, and remove the confirmed transactions from their mempools. Since the best chain can only have one block at every height, it does not make sense for an honest miner to continue mining at the old height, therefore, they switch to mining at the new height as quickly as possible.


How do you generate a receive address from a string?

I think there is some misconception, or we don't get your question right... One cannot create a "receive address" for an existing address. An address is based on a specific private/public key pair. I recommend looking up some fundamentals on wallets and the creation of addresses. A wallet is a collector of many keys, and one of the keys is used for (a generated) receive addresses. I think what you are asking might go into the direction of HD wallets... I provide some hints at the end.

In short, how to come from a string to an address: you have a private key (which can be your hexadecimal string), which is linked by ECDSA logic to a public key. This pubkey is hashed, some version bit and checksum logic, and finally base58 encoded. Look at this page here, it shows the different steps. Also here in stackexchange was a discussion specifically for compressed pubkeys, as the uncompressed keys aren't used widely anymore.

As long as you create many private/public keypairs (based on sha256 and "strings"), you can generate as many addresses as you like, and use one of them as receive address. However keep in mind, that if you generate yourself private/public keypairs, you are running into a trap! The keys need to be based on a certain randomness, and if you don't get it right, you will loose your funds. You have been warned :-)

Andreas' book "Mastering Bitcoin" is an amazing book that'll definitely get you some further insights. It's freely available online here. The chapter 4 on keys and 5 on wallets is what you'd be interested in :-)


Why Are My Gridseed Blades Exploding? What Components Are Exploding?

So after asking elsewhere I got half of my question answered. The reason the boards exploded was because the polarity of output was backwards. For some reason Gridseed supply power cables with the typical colours of red for live and white for ground reversed!

My solution was to swap the white and red wires over and I got no more explosions.

Does any one know what components have been damaged? And where would I get replacements from?


How would someone send £0.00?

The transaction you mentioned sent .00001 BTC to
19BY2XCgbDe6WtTVbTyzM9eR3LYr6VitWK which is the Shadow Brokers account. £0.00 is only a rounded number when converting to fiat. Disregarding this transaction, it is possible to send Bitcoin transactions with no BTC value

  why would someone send £0.00?

Your why question is more speculative, but sending dust is a common (low cost) tactic for chain analysis companies to tie bitcoin addresses together in the future. In this case it is likely that many chain analysis companies (on their own or on behalf of government clients) will attempt to identify the owners of that Bitcoin account.


Why is the block reward slightly higher than what it should be?

The coinbase transaction(the transaction that pays miner bitcoins) gets bitcoins from two sources.

Block reward: This part goes on declining like 50/25/12.5 and so-on in a pre-defined schedule
transaction fees: This part is total sum of all transaction fees of all transactions in the that particular block. This is determined by market conditions.

Miner Income =  Block-reward + Transaction fees


Bitcoin core - creating transaction from UI without broadcasting it

1) First you can add connect=1.1.1.1 to your bitcoin.conf. Your node won't search for other nodes and just try to connect to 1.1.1.1. Since 1.1.1.1 is not a node, your node will have 0 peers.

2) Then you can make the transaction, open the debug console and enter: gettransaction YOURTXID. (or getrawtransaction to get the hex encoded transaction)

3) Then you can close Core, add zapwallettxes=1 to bitcoin.conf and start Core to remove unconfirmed wallet transaction you've made to cancel it.


Transaction confirmed for hours, not available in balance

Assuming you double checked that you sent the coins to the right BTC adddress:
The wallet of the receiver should be connected to a full Bitcoin-node, either his own node or another node. This node could be down or not updated to current block height.
So you might ask the receiver if (s)he used the same wallet already successfully for other transactions before and if the connected node is online and synchronized to the latest blocks already.
Another reason could be that the receiver looks up the balance in the wrong wallet. So you might ask if the receiver has more than one wallet and if it could be that he looked in the wrong one. The wallet probably allows to see associated addresses.


Payment channels are a way to prevent double spending in such cases. As per the Wiki

  A Micropayment Channel or Payment Channel is class of techniques designed to allow users to make multiple Bitcoin transactions without commiting all of the transactions to the Bitcoin block chain.[1] In a typical payment channel, only two transactions are added to the block chain but an unlimited or nearly unlimted number of payments can be made between the participants.

A possible way for implementing vending machines would involve creating payment channels beforehand with the vending machine company.

Infact, for the vending machine case, an unidirectional channel would suffice. Refer to Wiki for details. Bi-directional payment channels using hashlocks are the key to Lightning network which is used to facilitate off-chain transactions at real-time.


Can Bitcoin.org precalculate bitcoin history and distribute it instead of requiring every new user calculate it for hours?

Because that would require to trust the person that gave you the data (the utxo set). If you could download just the utxo set and start running your node someone could easily circulate fake data i.e credit his own address with 1000 BTC. In order to know that his address does not actually have 1000 BTC you need to replay all the transactions that ever happened and arrive to the correct balance for each address.
An alternative to running a full node (which requires no trust) is to run an SPV client which does not validate all block data but still does header verification.


How many blocks have no unspent transaction outputs?

The page Bitcoin UTXO Stats has a visualization of the number of UTXOs in each block (image with orange pixels).

Each pixel of the image represents a block, and the color of the pixel indicates how many UTXOs can be found in that block (black pixels indicate a few UTXOs whereas orange ones indicate lots of UTXOs). Hovering over a pixel shows data about the specific block and clicking on a pixel redirects to the block page on blockchain.info.


How do I get the trading screen I see on Cryprocurrency videos

If you look closely you can read the URL: The chart in the video appears to be the Bitcoin/USD chart for Coinbase on Tradingview.com, while theme seems to be set to dark.

Another site used in the video is coinmarketcap.com.


I sent some Bitcoin to a Bitcoincash adress on Trezor

You should upgrade your Trezor firmware. Follow the steps here: https://doc.satoshilabs.com/trezor-user/updatingfirmware.html

After it, your problem should be solved. If not, try these steps: https://blog.trezor.io/claim-bcash-bitcoin-cash-bch-bcc-trezor-wallet-f0a810d5864a


Is there a wallet like Multibit for Litecoin?

For a desktop computer, no, there's no lightweight client yet. There is talk of developing one, but it's not released yet. The LTC blockchain isn't as large as BTC's, so it's not as necessary on PCs.

For Android, there's a Litecoin Wallet that is a lightweight client.


Which wallet application lets you send to multiple output addresses with just 1 fee?

You asked two questions, I can answer only your second question: the command for sending to multiple addresses using bitcoin core.

It is done by building a "raw transaction". This sounds and looks much more difficult than it is in practice. It involves the following steps:

Select enough unspent outputs to fund your transaction
Select the addresses and amounts you will be sending
Add an extra txout with your address and change minus the fee (to prevent sending all change to the miner)
Build a raw transaction using the unspent outputs and list of addresses and amounts
Sign the raw transaction
Send the raw transaction into the bitcoin network

You will have to do some programming for step 1,2,3.
Bitcoind will handle step 4,5,6.

You can follow the steps in this excellent demo: https://people.xiph.org/~greg/signdemo.txt

Good luck!