Can I, and should I, verify bitcoin core source code before compiling it?

If you look at tagged commits on github, you'll notice they are also signed by the core maintainers keys, notice the "Verified" button, see bitcoin/tags and Github GPG Signature Verification.

You can verify the commits yourself if you've imported the signer's public key, see Verifying Tags:

$ git tag -v v0.17.0
object e1ed37edaedc85b8c3468bd9a726046344036243
type commit
tag v0.17.0
tagger Wladimir J. van der Laan <laanwj@gmail.com> 1538390952 +0200

Bitcoin Core 0.17.0 final
gpg: Signature made Mon Oct  1 04:49:17 2018 MDT
gpg:                using RSA key 9DEAE0DC7063249FB05474681E4AED62986CD25D
gpg: Good signature from "Wladimir J. van der Laan <laanwj@protonmail.com>" [unknown]
gpg:                 aka "Wladimir J. van der Laan <laanwj@gmail.com>" [unknown]
gpg:                 aka "Wladimir J. van der Laan <laanwj@visucore.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 71A3 B167 3540 5025 D447  E8F2 7481 0B01 2346 C9A6
     Subkey fingerprint: 9DEA E0DC 7063 249F B054  7468 1E4A ED62 986C D25D

  Is it preferable to use signed binaries or compile from source?

It depends on your situation, but most likely it will be easier to just use the compiled binary. If the binary doesn't work on your system, if for some reason your system is different enough, then compiling from source might be better. As long as you verify the signatures it shouldn't matter whether you run the binary or compile from source, the binaries are just provided for convenience.


If I have 51% of the capacity of the entire network, can I mine absolutely all the blocks faster than the network?

Can you mine absolutely? No. If you have 51% share of the network hash rate then the probability (not certainty) that you will mine the next block is 51%. It is theoretically possible that you may never find a solution to the block ever. However, if you continue to mine on the blocks that only you generate, then practically you can build a chain that consists entirely of the blocks that you mine after the forking point.


What prevents me to create the longest chain and multiple nodes, and deceiving everyone?

Contrary to popular belief, Bitcoin does not use the longest chain. This is because of exactly the scenario in your question. Instead Bitcoin uses the chain with the most cumulative work. This is calculated by summing the difficulty of each block in the blockchain. If you made a blockchain that has more blocks than the current main chain but has blocks at a lower difficulty, then your chain won't be accepted because it has less work than the main chain.

You would have to have a chain that is so long that you have done more work, or have blocks with a higher difficulty so you have done more work. Either way, more work is required and that is prohibitively expensive.


What does the `gen` option in bitcoin.conf do?

That configuration parameter no longer has any effect because the CPU mining engine has been removed from the mainline client.

Earlier versions of the client did have a built in miner and the gen parameter controlled if it ran in the background.  Given the much higher difficulty today the developers felt it no longer served a purpose and would be confusing to new users (who could wait months of even years without generating a single coin).  It was removed from the client.  The wiki should be updated to reflect that.


Like Murch said, there isn't a current text based symbol for it, but if you're going to use it on a web application, you can always use Font Awesome.

After you include the fontawesome library, you use the bitcoin symbol like this:

<i class="fa fa-btc"></i> fa-btc

Example output of the code above would be:

You can find more information regarding fontawesome bitcoin symbol documentation here.


How to calculate fee in BitcoinJS raw transaction?

The TX fee is the difference between the totals of all the input values and all the output values. If you are looking at a single TX you can see all the output values, but how do you get the input values? They are not included in the TX itself. What you must do is look up the UTXO being spent by each TX input and total their values. (The data structure used to track and process all the input coins is called a "view").

Note that there is no "applying a fee to the output". A TX has no extra fee field or property, and the fee itself does not occupy an entire output.

If you are constructing a TX where the input values equal exactly the output values, you "include" a fee by reducing the value of one of the outputs.


Adding fixed seed nodes as DNS doesn't seem to be available

The message means that no DNS seeds were found (which is normal, as regtest has no DNS seeds), and thus that it will fall back to its builtin list of fixed seed nodes (which regtest has 0 of).

In other words, the message is harmless and the artifact of DNS/seed logic that doesn't really apply to regtest.

Regtest is a private network for testing, so you don't want it to connect to any specific other node by default. If you want it to connect to others, use -connect, -addnode, -listen, etc.

I suspect it's not actually frozen, just not doing anything because it has no connections. In that case, it would still accept RPC commands fine.


Why is it important to manage your own private keys and are there any exchanges that allow you to do that?

What are the potential/hypothetical consequences if an exchange does not allow you to manage your own private keys?

If an exchange is managing the private keys (i.e. you are not managing your own private keys), it means that the exchange controls your money. They are then like a bank; you deposited money in and got a promise that they will give you the money later when you ask for it. This means that you are trusting them to hold onto your money securely.

Because they control the private keys, they could steal your money by taking it and running away. Or if the exchange were to be hacked, the money could be stolen by hackers. Both of these scenarios have occurred in the past. In either case, your money would be gone and there would not be much that you could do about it.

  Are there any exchanges that allow this option?

In the traditional sense of an exchange where you have an account and login (e.g. Bitstamp, kraken, Bitfinex, etc.), no. No exchange allows that  for multiple reasons: controlling your own private keys means that during an actual trade, you may scam the other trader by taking their money and not releasing the amount you were to pay; it also means that the exchange will work less efficiently as instead of doing trades in an internal database, trades must occur on chain.

There are decentralized exchanges which allow you to control your own private keys such as Bisq. But few people use them and there is a bit more risk involved because the other party could scam you.


TL;DR: No idea, and your question's unanswerable in the first place :)

Why does a national currency rise or sinks in value? Why do a company's shares do the same? You will never get definite answers for these or your original question unless you manage to get into all the participants' heads to know what they were thinking of. Meanwhile, you can listen to pundits or draw your own seemingly informed conclusions.

A couple months ago, when there were these rumors about the US government possibly becoming unable to pay its debtors, Bitcoin started going up and up to the point of doubling its former value - obviously a lot of people were viewing it as a possible haven should the dollar fall. After it was clear such fears were based on nothing the Bitcoin fell down from that high.

But then it started climbing again, reaching again its former high mark, then doubling it, then doubling again... Looking at the graphs of this spectacular pike its clear to me a good part of that was a bubble caused by speculators jumping to ride the wave, but exactly which event triggered the upwards trend in the first place... to this day I honestly don't know.

Some say it's the hearing at the US Congress giving it legitimacy. Some say it's closing the Silk Road cleansed its image, though others say this event caused it's value to fall a bit. Some say it's even more interest by the Chinese... no single event can be clearly linked to this surge in value as was the case in the past with, e.g., the events in Cyprus.


What are test_bitcoin.exe and test_bitcoin-qt.exe?

These executables are used to run Bitcoin's unit tests, so that developers can verify that various parts of the code work as designed.  They are not needed by end users.

From the file src/test/README.md:

  The sources in this directory are unit test cases.  Boost includes a
  unit testing framework, and since bitcoin already uses boost, it makes
  sense to simply use this framework rather than require developers to
  configure some other framework (we want as few impediments to creating
  unit tests as possible).

  The build system is setup to compile an executable called
  "test_bitcoin" that runs all of the unit tests.  The main source file
  is called test_bitcoin.cpp, which simply includes other files that
  contain the actual unit tests (outside of a couple required
  preprocessor directives).  The pattern is to create one test file for
  each class or source file for which you want to create unit tests.
  The file naming convention is "_tests.cpp" and such
  files should wrap their tests in a test suite called
  "_tests".  For an examples of this pattern, examine
  uint160_tests.cpp and uint256_tests.cpp.

  For further reading, I found the following website to be helpful in
  explaining how the boost unit test framework works:
  http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/.


What's the alternative to bitcoins that can be profitably mined by beginner?

Namecoin is mergemined with Bitcoin, so the difficulty is near as high as bitcoin.
You may as well mine bitcoin and connect to a pool that allows Merged Mining Namecoins -- and you'll get uBTC bitcoins with no additional effort.

I recommend to leave the CPU alone especially if you're on windows, because i've noticed mining with both GPU and CPU is terrible because the CPU is required to submit and if the CPU is tied up with another application -- say NMC mining then the KH/s from litecoin will go down.


Copying .bitcoin folder should work. Make sure bitcoind is not running (try ps -ef | grep bitcoin)  before you attempt to copy. Also make sure bitcoin.conf is same in both places

Also, change the bitcoin.conf file with the new datadir , rpcuser and rpcpassword


The documentation to these chips has not been released yet, as you can see on the page:

  Reference documentation:  Butterfly Labs is releasing it's PCB schematics & MCU code to open source.  Links to this documentation will follow shortly.

Be aware that by ordering these you are not purchasing a finished product, you are just purchasing the chips to build one.


How to get difficulty for Bitcoin and other coins

Bitcoins as well as all of the altcoins that I know of have their own API. For example here is bitcoins API. It has a method called getdifficulty which

  Returns the proof-of-work difficulty as a multiple of the minimum difficulty.

So if you had bitcoind installed, you could then just type in the terminal

bitcoind getdifficulty


To look at it a different way, the probability for solving a block in Bitcoin is approximately:

1 / ({total network hash per second} x {average block time in seconds})

Note that block time is the average.

As of writing, this is:

Probability = 1 / (24,667,167,000,000,000 x 600)
= 1 / 1.48003002×10¹⁹
= 6.75661970694351186200939356621969059789746697164966964... × 10^-20 (WolframAlpha)

Data source: blockchain.info


Miner sent message mining.subscribe to pool

mining.subscribe("user agent/version", "extranonce1")

Pool reply with

[[["mining.set_difficulty", "subscription id 1"],
["mining.notify", "subscription id 2"]],
"extranonce1",
extranonce2_size]

Pool set size of extranonce2


What's the maximum size of the memo in a LN payment request?

The memo field can hold 639 bytes of information.

But how many characters? Let's assume utf8 (since lncli encodes the text in utf8)

utf8's characters are variable length, meaning some are larger than others.

From stackoverflow:

  The first 128 characters (US-ASCII) need one byte.

  The next 1,920 characters need two bytes to encode. This covers the
  remainder of almost all Latin alphabets, and also Greek, Cyrillic,
  Coptic, Armenian, Hebrew, Arabic, Syriac and Tāna alphabets, as well
  as Combining Diacritical Marks.

  Three bytes are needed for characters in the rest of the Basic
  Multilingual Plane, which contains virtually all characters in common
  use[12] including most Chinese, Japanese and Korean [CJK] characters.

  Four bytes are needed for characters in the other planes of Unicode,
  which include less common CJK characters, various historic scripts,
  mathematical symbols, and emoji (pictographic symbols).

For the US-ASCII character set and onward:

639 bytes / (1 byte / 1 char) = 639 characters

639 bytes / (2 byte / 1 char) = 319 characters

639 bytes / (3 byte / 1 char) = 213 characters

639 bytes / (4 byte / 1 char) = 159 characters


Why is your Bitcoin balance displayed on paper wallets?

The balance of an address only changes if you send bitcoins into or from it. Paper wallets are usually intended to be swiped only once, so you should not have outgoing transactions while the paper wallet is still valid. You could add coins to it, as a sort of piggy bank, but there are also use cases where the amount will be fixed.

So, if the paper wallet is intended to be used with a fixed balance, it can be printed on it for convenience; if not and an amount is printed anyway, it can simply be ignored.


The block hash identifies a block. A block can contain multiple transactions, so listsinceblock lists all transactions in blocks newer than the given block hash.

So f.e., if you have this block structure:

block 5 hash: qwertyyuiop
|   tx100,tx101,tx102,tx103
v
block 6 hash: asdfghjklkl
|   tx104,tx105,tx106,tx107,tx108
v
block 7 hash: zxcvbnmnbvc
    tx109,tx110,tx111

When you would do listsinceblock qwertyyuiop, you would get all transactions in blocks older than block 5, so tx104 all the way up to tx111.


There is currently a spam attack: https://blockchain.info/unconfirmed-transactions

Your transaction is likely to get confirmed If you paid enough fees but It will take time. Try to send it to ViaBTC accelerator and see how things goes.


Any supervisory power on earth to ensure that Bitcoin system will remain resilient if hashing conditions change rapidly?

Bitcoin is a decentralized currency and there is nobody with "supervisory power" over it.

Anyone is welcome to suggest improvements to the protocol (changing hashing rules or anything else) at any time, and can create a source code patch to any of the several pieces of Bitcoin client software to implement them.  (The maintainers of Bitcoin Core or another piece of client software can do so simply by releasing a new version.) Each user can then make their own decision whether to adopt this patch or new version, or to continue using the software they already have.  (Of course, they might be more likely to decide to adopt a patch if it comes from a "trustworthy" source, such as the software maintainers.)

If a general consensus emerges that the improvement is desirable, and essentially all Bitcoin users adopt the patch, then the protocol has effectively changed.  So such a method could be used to make a change to the difficulty adjustment rules, should there be a consensus that such a change was necessary.

Assume the patch changes the protocol in a way that is incompatible with the existing protocol, so that the old and new protocols disagree about the validity of certain blocks or transactions.  (For example, the new protocol might "lower difficulty" by saying a block of a certain low difficulty is valid in a certain situation, where the old protocol said it was invalid.)  If some people adopt the patch and others do not, then there will be a problem: those two groups will disagree over whether particular transactions or blocks are valid.  This situation is called a hard fork and essentially would split Bitcoin into two separate currencies: "old Bitcoin (BTCO)" and "new Bitcoin (BTCN)".  Anyone who held, say, 1 bitcoin before the fork would effectively now hold 1 BTCO and 1 BTCN.  The economic effects would be confusing, to say the least.   Many people consider that if such a state of affairs continued for a significant length of time, and with a significant population on each side, the effect would be to destroy confidence in both the new currencies and render them both valueless.

As a result, users are likely to be cautious about adopting patches that change the protocol.  They should only do so if they believe that the vast majority of other Bitcoin users will do the same.  For this reason, implementing protocol changes is as much a political challenge as a technical one, and it helps a lot to have "trustworthy" people advocating for the change.  So those trustworthy people may have some amount of power over the protocol, but not in a "supervisory" sense.  It's less like being the king, and more like being the prime minister of an unstable coalition government.

If there was a feeling that the existing difficulty adjustment rules were not working well, the software maintainers and other well-regarded people could propose a change and hope that the user community as a whole would agree.  That's what would likely have to happen in a situation like what you describe.


Does Bitcoin account for deleted bitcoins over time?

If Bitcoin wallets get deleted, lost, or otherwise inaccessible, then the Bitcoins contained in them cannot be accessed anymore. There is no compensation for these "lost" Coins, and it is hard to see how there could be any such compensation. After all, nobody can prove that they lost some data. Hence any compensation scheme would likely be open to fraud.

As a consequence, Bitcoin has been called deflationary because presumably some such loss of Bitcoins will always happen. However, this does not mean that there will not be any mining after all Bitcoins have been created. Mining is driven by two kinds of rewards for the miners, the new Bitcoins (which will cease at some point) and the transaction fees that get transferred from the senders to the miners. Whilst usually it currently works just fine to send not-too-small transactions with zero fees, including one might just speed up transactions, so Bitcoin users actually have some (albeit possibly small) incentive to offer the miners a reward for their activity.


Calculating Different Investments altogether?

The simplest way to calculate would be:

averagecost = ((BTC[t0] x USD[t0]) + (BTC[t1] x USD[t1]) + (so on))/total_BTC

where t0,t1 and so on are different time when you bought.

The above gives you the average cost for all your BTC

Now to know the profit, use the below formula:

profitloss = (current_BTC_price - averagecost) x total_BTC

If profitloss is negative, then you have a loss.

If profitloss is positive, then you have a profit.


What is the input and output script of the funding transaction?

What is the script of the output script of the state block (the block that starts the channel)?

The output script of the funding transaction is a P2WSH output where the witness script is a 2-of-2 multisig. Because it is P2WSH, you cannot see this script.

This locks in the amount because the output with that script has a specific amount (the amount the channel is being funded with) and the only way to spend that output is with both parties agreeing to spend it.

  Where to find such information ?

All of this information is specified in the Lightning BOLTs, specifically BOLT 3.


local bitcoin nodes in a same vlan cannot sync

Then I delete the static dns seeds in file chainparam.cpp for both two nodes. So they both cannot connect to the bitcoin network.

They can still connect to the Bitcoin network without the DNS seeds. The DNS seeds are not the only way to connect to the network; there are numerous fallbacks, with DNS seeds themselves being a fallback too.

-datablock= is not a valid command line option. Did you mean to use -datadir?

Check in the debug window of both of your nodes; does node1 have a number of blocks that you expect it to have? Does node2 already have blocks that it downloaded very quickly and you didn't realize it?

Instead of using the addnode RPC, try using the -addnode or -connect startup options to connect your nodes.


Which crypto currencies have shortest payment address?

The human mind can remember approximately 7 digits quickly and easily. That's how you can remember US phone numbers (sans area code) without even thinking about it. However, when it gets to 10 digits it starts to reach the limit of working memory, and 20 digits is definitely out for most people. Of course, if you actually spent the time to try to memorize it, 20 digits is a lot easier than 34 alphanumeric characters.

That said, I don't think the benefits justify the costs. Cryptocurrency is designed to be used by people with access to a computer or smart device. Copy-pasting is a lot easier than trying to remember a bunch of addresses. Granted, it might be useful to remember one address, your own, that you can give out to people in conversation. But these days most people have their smartphones on them wherever they go. Also, regarding "transmit by phone": Only if you use a touch-tone phone. Otherwise, you can just copy-paste and then SMS/email/submit it to the other party.

What disadvantages are there? Well, now that there are only 10^20 addresses, or 66 bits - much less than the 160 bits of Bitcoin and pretty much all of its clones, decreasing security. Moreover, this also means addresses must be generated on-network to prevent the possibility of duplicate addresses and registered as an account. For NXT, only 12 billion addresses are necessary for there to be a 50% chance of collision (a la birthday paradox). For Bitcoin, 1.4 septillion addresses need to be generated for that to be the case - which for all practical purposes, will never be generated. So people can generate addresses without being connected to the network and be very confident that no one else has ever generated the same address, making cold storage solutions easier, for instance.

Edit: To answer the question in the title: I only know of two address schemes, Bitcoin-like and NXT. For Bitcoin-like addresses, the first character is always something which identifies the coin (not uniquely - multiple coins, including Bitcoin, begin with a 1, Dogecoin and Digitalcoin both begin with a D, etc.), followed by a 160-bit hash and a checksum. Then you have NXT, 20 base-10 digits. I don't know of anything shorter than NXT, and any shorter would be unreasonable given the increasing probability of collisions.


XBTC is an asset representation of BTC in Counterparty.
Apparently, you could send Bitcoin to a Counterparty gateway, and get the same amount of XBTC back in turn. These could then be traded for other Counterparty assets. The operator of that gateway claimed that it was cheaper to trade thusly than on Bitcoin exchanges.

I've found an announcement for a XBTC gateway here: XBTC Gateway released. It appears to me that the service has since been shut down due to regulatory concerns.


Do hardware wallets store the wallet.dat redundantly inside? If not, are there such hardware wallets?

I hope I'm missing something, and that somebody can enlighten me.

As I expect you know, information-security can be described as a combination of confidentiality, integrity and availability.
You seem to be concentrating on availability, I believe the makers of hardware wallets are prioritising confidentiality.
If you have a hardware wallet, you are likely to want to also store copies of your recovery-phrase (AKA seed-phrase, backup-phrase) in other secure places e.g. stamped onto corrosion resistant metal plates in safes and/or safety-deposit boxes perhaps in multiple locations. That way, you don't lose availability if the hardware wallet is damaged, destroyed, lost or stolen.
If you keep your wallet.dat on encrypted flash drives, your confidential data is much more exposed than a hardware wallet. At some point the encryption layer decrypts the wallet.dat so that your wallet software can read and write to it. Your data is transferred into a potentially compromised environment with a comparatively large attack-surface. At that point it is probably accessible to malware or vulnerable to a maliciously altered wallet application. This is not the case with a hardware wallet - the secret keys are never accessible to any PC, they never leave the device.


How can blockchain.info show the output address of a transaction when the output address has never been used in any other transaction?

I assume that you're talking about a Pay-to-pubkeyhash (P2PKH) transaction, which is the most common transaction type on the network at this time.

The pubkey script of a P2PKH transaction output contains the hash of the public key (what you call HASH160):
OP_DUP OP_HASH160 <PubkeyHash> OP_EQUALVERIFY OP_CHECKSIG

Said PubkeyHash can be converted into the address by prepending two zeroes and expressing it in base58check, a more human readable format.


Why doesn't Bitcoin use a DHT to store its blockchain?

Full nodes don't even need to store the entire blockchain (bitcoin core has a pruning mode). They must process each block at least once to ensure they have the correct UTXO set, then the raw block data can be discarded.


Will the increasing difficulty in Bitcoin mining push miners to a different currency?

It appears that miners consider Bitcoin to provide the largest ROI.

There are dozens of other coins that use SHA-256D as their hashing algorithm, if it were more profitable to mine any of those, miners would switch.

However, when the hash rate increases in the other coin, the revenue per hash rate decreases. Meanwhile, the decrease of hash rate in Bitcoin increases the revenue per hash rate there. Thus, anyone leaving Bitcoin makes it more profitable to mine Bitcoin and vice versa. Thus, the system self-balances.

AFAIK, most altcoins' exchange rates have been in a downward trajectory which probably doesn't help to entice mining power.


How should a Bitcoin Oracle verify a transaction prior to signing?

There are two ways to do that. First one is that you create a multisig transaction, and send it to an oracle/oracles, along with a request for them to sign the transaction when they discover that an event occured.
After the time comes, the oracle(s) sign the transaction and release it to you.
This is the way Orisi works

Another way is to send to the oracle(s) a request to look for an event. Then they give you a public key, and you use that public key to lock the transaction. When the time comes, the oracles publish a private key to that public one, and you use it to unlock the transaction. This is the way RealityKeys work. (although their code is closed source)

The second option is relatively easy to implement, although I'm not sure if there are any open source implementations available at this time.

The first option (signing happening on the oracle's side) is a bit more complicated, but on the other hand it allows for greater granularity of contracts. E.g. you may ask oracles to send 2030-(year-of-event) BTC once the event happens, and return the rest to the sender. The oracles may also manage the funds for the time being - e.g. you can tell them to send funds to a new multisig address if one of the oracles dies / loses it's keys. And there's a code ready to handle all that on Orisi's github repo.

For more info you might want to check out Orisi / Distributed Oracles whitepaper which deals with example implementation, and Bitcoin Wiki entry on Contracts


Export all address from bitcoind on one server to bitcoind on another server

To re-use the same addresses with the new server, it will be sufficient to copy just the wallet.dat. That single file contains the private keys to all receiving addresses that have been used since the wallet.dat file was originally created.

I would recommend copying across the wallet.dat, then making sure your addresses are there and available in bitcoind on the new server. If they are, then the wallet was copied over successfully and you're good to go.

As @Jannes mentioned, you will need to turn off bitcoind on both servers before you do the copy.


Why isnt a random port chosen for SEED node sockets?

All nodes are listening on port 18333 for inbound connections.  Any inbound connection will use this port.  So addrlocal will show localIP:18333.

Any outbound connection will use a random port so addrlocal will show localIP:xxxxx

So every connection is either random <----> 18333  OR 18333 <----> random.  The node that initiated the connection (out) will always use a random port.

This is how all tcp/ip web services with known ports work.  Web servers listen on port 80 or port 443, browsers use a random local port to connect to them.

Edit: Should note that port 18333 is for testnet nodes. Would be 8333 for main net.  Also if on linux netstat -ntlp or netstat -ntp will show all tcp connections


Based on bitcoin source code: https://github.com/bitcoin/bitcoin/blob/0.8.6/src/main.cpp#L2112 a valid block should have the Coinbase transaction (the one that spends the rewards and fees) as the first transaction and no other coinbase transactions must appear in the block.
Spending the full reward and fees is not enforced.

So your answer is only invalid blocks do not have a Coinbase transaction or have it at a different position from the first one.
But that transaction can be used to send the coins to any address not only miners one, so maybe there has been blocks using the coinbase transaction to pay for goods or pay other people different from the miner (for example Eligius pool uses it to pay the shares directly).


Use hdseedid to give all addresses in bitcoin

No, you cannot use that value for that purpose.

Bitcoin Core does not support publicly derivable addresses at all (at this point).


The 13-word mnemonic is just a way to encode a 128bit number into something human-readable and memorable. The 13th word is a checksum, and 12 words would suffice to recover the number encoded. You should always generate it by truly random means to reduce likelihood of someone generating the same as you and running away with your coins.
Some more info can be found here.

The wordlist consists of 2048 words since circa Aug 2014.
If you want to know how many words you need to encode a 128bit number, you can calculate yourself.

Log_2048(2^128) = 11.63636364

The 128bit number is actually a 32 digit base16 ("hex") number (2^128 = 16^32).

I tried to replicate what you did, and used electrum wallet recovery function. When inputting a 32 digit hex number, I get a 12 words mnemonic. It would also accept a 64 digit base16 number, and then I'd get a 24 words mnemonic, which makes sense considering how it's generated. However, I'm having trouble replicating what you experienced, to get a 24 word mnemonic from a 32 digit base16 number.

Now, what is that 128number used for? It's used to generate your master private key, master public key and all the keypairs in your wallet. It's nicely detailed here.

  The total number of possible extended keypairs is almost 2^512, but the
  produced keys are only 256 bits long, and offer about half of that in
  terms of security. Therefore, master keys are not generated directly,
  but instead from a potentially short seed value.

  Generate a seed byte sequence S of a chosen length (between 128 and
  512 bits; 256 bits is advised) from a (P)RNG.
  Calculate I =
  HMAC-SHA512(Key = "Bitcoin seed", Data = S)
  Split I into two 32-byte
  sequences, I_L and I_R.
  Use parse_256(I_L) as master secret key, and I_R as
  master chain code.

  In case I_L is 0 or ≥n, the master key is invalid.


Is it possible to get the public key from a transaction input that is a 'pay to public key' output?

I can't understand your question but I will try to clarify the things for you.

A Pay-to-Pub-Key transaction is a type of transaction which is generated basically from a miner in order to send back to his own address the reward(now is 25 BT) after a suceessful creation of a Block. This transaction is called coinbase transaction and is the first located transaction of the Block which is going to be mined by him.

The structure of the script which satisfies this kind of transaction is:

•   Locking Script or scriptPubKey (which located in the Output of a transaction)

< Public Key of Miner> OP_CHECKSIG

•   Unlocking Script or scriptSig (which located in the Input of a transaction)

<Signature from Private Key of Miner>

•   Validation Script

<Signature from Private Key of Miner> < Public Key of Miner> OP_CHECKSIG

In order the miner to redeem the 25BT value :

His signature located in Locking script have to be created by his private key.
In order to check that condition, his public key is used, which corresponds to this private key.

As a result the public Key can't create a signature. A signature is created by the private key and a message (or transaction) which is going to be signed with this private key.
You can't calculate the public key from the input, because the public key is located in the output or better in the Locking Script.


What is the maximum size for SegWit transactions?

The standardness limit in all recent Bitcoin Core versions with SegWit support is 400000 weight.


Generating a Bitcoin Address QR code with current USD price embedded?

You can't include the USD amount, but you certainly can include the btc amount in the QR code. The QR code essentially embeds a text like this:

bitcoin:1ArmoryXcfq7TnCSuZa9fQjRYwJ4bkRKfv?amount=0.005

Note the amount here is the amount in BTC. You can generate a QR code for that text using gobitcoin.io. If you just want to insert an image, you can use googleapi.com to generate it. For example, a url like this:

https://chart.googleapis.com/chart?chs=250x250&cht=qr&chl=bitcoin:1ArmoryXcfq7TnCSuZa9fQjRYwJ4bkRKfv?&amount=0.005

will generate a QR code like this:


No, the Jalapeño is a Bitcoin miner, it solves the SHA-256d hash function.

On the other hand, Dogecoin uses the Scrypt hash function. The two are not compatible, and as far as I know there is no Scrypt ASIC being sold, yet.


The client is configured with the server or servers it should connect to in a configuration stored on the web server that serves the client and retrieved by the client using HTTP. In the current version of the client, this can be changed from the Options screen. I believe this change is currently not saved but there are plans to store a list of servers in the wallet.


You should find a wallet which gives you control of your keys (non custodial, not a ‘web wallet’ with an online login, etc). This will give you full responsibility over your coins, be sure that you safely store a backup (‘seed phrase’) so that you can recover your coins in case of loss.

If you created a wallet but did not use it to store coins, then do not give a second thought to just abandoning it. Do not attempt to ‘combine’ wallets either, this is counter to how they were designed to be used, and it could have very undesirable affects on your wallet security, etc. Just find some software you like and trust, and use it.

This site lists a number of wallet software options, you’ll need to do your own research to figure out which which one will suit your needs best.

This question is a great place for new users to get info: I am new to Bitcoin, how can I get started?


Recovering a Bitcoin Key Made From Rolling Dice

A 6 sided die rolled 99 times gives 6^99 = 1.088864372500119e77 possible combinations. This is almost exactly the same key space of a 256 bit private key (roughly 2^256), in other words, without knowing how many digits you changed, it is impossible.

Let's see, if my math is correct, I believe if you changed 1 digit, then you have to try each number 6 times, or 99 x 6 = 594 tries. If you changed 2 digits, then you have to try 594^2 = 352836. If you changed 3, 594^3 = 209584584. That is much more doable and will have less to do with what language you use, and more to do with how you implement it. You can generate the private key, and then the public key and encode it to see if the address matches (assuming you still have the address).


You need to perform a replace by fee transaction

Go to preferences and activate dynamic fees if that's not already set. You can then right click on a "low fee" tx in the history and select "Child pays for parent". You then have a fee slider with "within 2 blocks" pre-selected from a dynamic fee. You will now see a preview window for the transaction. Click sign and broadcast the signed transaction and the fee is bumped.

This will only work if you have change from the transaction to your own wallet (usually the case). Otherwise you can ask the recipient to do a CPFP on the transaction. The CPFP transactions in Electrum are by itself RBF, so you can further bump the fee after doing CPFP if needed (which means you could select a lower target like 25 blocks and bump further from there if you want to save on fees).

Make sure you select a server that runs Bitcoin core (the servers usually print what they are running in the console tab) because BU won't accept RBF and will prompt an error (you can still switch then). Most Electrum servers are running core though (I'd guess ~80%+), so it'll work out most of the times.

Source


OP_HASH160 and number of bytes of public key

Are you refering to the pay-to-pubkey-hash script (https://en.bitcoin.it/wiki/Script#Standard_Transaction_to_Bitcoin_address_.28pay-to-pubkey-hash.29)?

In that case it is the hash of the public key, which is 20 bytes. It is NOT the public key itself.

Every op-code correponds to a byte-value in the raw transaction script. All operations are preformed on a stack onto which values can be pushed. The public-key-hash must therefore first be pushed onto the stack, before it can be compared to another value on the stack.

To first push the public-key-hash to the stack we prepend "the number of bytes" which is 20, because this value is itself just an op-code that pushes the next 20 bytes of data to the stack. (See https://en.bitcoin.it/wiki/Script#Constants)

This makes the scripting language more flexible.


How do I calculate what the TOTAL Wallet fees are going to be with Bitcoin-Qt v0.6.3?

The fee will change with time, if it happened to be high due to the coins being recently received.

There is a fork of the client that doesn't require any fee to be paid.  Your transaction will just take a day or so to get any confirmations.

You can wait to let the coins in your wallet age and then at least the fee should be small and consistent.


Why does gettransaction report me only the receiving address?

I was intending to answer another question, which was closed as a duplicate in the meantime, but I will use the case that was described there as an example to answer this question.

Assuming the transaction is in fact a standard transaction, the script does in fact reveal the sender of the transaction. According to the standard transaction description in the protocol specification the transaction has to first prove ownership of an output in order to claim it and spend it in the new transaction. The transaction that gave the sender the funds specifies the hash of a public key to which to send the funds. In this case it's the output script 1 of transaction f8c71a9f7...:

OP_DUP OP_HASH160 496650cdb4b6275ca4478c0ce98cb6f7224bb1e7 OP_EQUALVERIFY OP_CHECKSIG

Notice the 496650cdb4b6275ca4478c0ce98cb6f7224bb1e7 in there. That is the hash of the public key. To claim this output, and then send it to you, the sender has to provide both the public key and a valid signature. So let's take a look at the script that claimed this output:

304402205e81e8ed0b1f7cf6d1d415961859d3b95f5e5c353af303b6cef1e3efa6c3349702202fa9fdd6914abd0e9606c78899e7f3010cafdad211645cf459ae18b3b827b2c101 0365e0beb9a0c1497f3667067aeb8f3ea9dc4c9d5696cee7f19eae49f9457a5cfb

This being a standard transaction it will conform to the format <sig> <pubKey>, so the public key is 0365e0beb9a0c1497f3667067aeb8f3ea9dc4c9d5696cee7f19eae49f9457a5cfb. To verify this we check an see if the hashes match (python code ahead):

script = "304402205e81e8ed0b1f7cf6d1d415961859d3b95f5e5c353af303b6cef1e3efa6c3349702202fa9fdd6914abd0e9606c78899e7f3010cafdad211645cf459ae18b3b827b2c101 0365e0beb9a0c1497f3667067aeb8f3ea9dc4c9d5696cee7f19eae49f9457a5cfb".split()
h = hashlib.sha256(script[1].decode("hex")).digest()
ripe160 =  hashlib.new('ripemd160')
ripe160.update(h)
d = ripe160.digest()
print d.encode("hex")

This should result in 496650cdb4b6275ca4478c0ce98cb6f7224bb1e7, which is the hash we have seen in the output script of the claimed out that was finally sent to you. Notice that to calculate this we did not have to fetch the transaction f8c71a9f7... but merely relied on information you could get from the transaction that you received. Now since an address is not much more than the hash of a public key we can simply build an address from the information we have gathered so far (having the hash already we start from step 4 in the address construction):

#Prepend the Mainnet prefix
address = ('\x00' + d)
#Calculate checksum
checksum = hashlib.sha256(hashlib.sha256(address).digest()).digest()[:4]
# Build the raw address
address += checksum
# Encode the address in base58
encoded_address = b58encode(address)
print encoded_address

The encoding can be done with any base58 encoder, I used this. This should print out the address 17h6u26N2TVmoPRcvxwUdfAUjDzBJX513V which is the address that sent the bitcoins in the transaction that we were looking at all the time. So you see, the information you were looking for was in the transaction all along, but quite hidden. So given an incoming transaction (or an outgoing as a matter of fact) you can reconstruct who the sender (or receiver) was. Notice that this allows you to reconstruct the sender of each individual input, which might be multiple addresses. Simply assuming that any of the addresses signing the inputs is the sender of the transaction may or may not lead to the desired semantic result.


What is needed to generate a bech32 address?

var bitcoinPrivateKey = new BitcoinSecret("cPof7e5g6xfgB6AZrc6XVTVwA4efLJurh9kVxa6FRChbr8Jyqaon", Network.TestNet);

            var legacy_address = bitcoinPrivateKey.GetAddress(ScriptPubKeyType.Legacy);
            var segwitp2sh_address = bitcoinPrivateKey.GetAddress(ScriptPubKeyType.SegwitP2SH);
            var nativesegwit_address = bitcoinPrivateKey.GetAddress(ScriptPubKeyType.Segwit);

            Console.WriteLine("Private Key :" + bitcoinPrivateKey);
            Console.WriteLine("Legacy Address :" + legacy_address);
            Console.WriteLine("Segwit-P2SH Address :" + segwitp2sh_address);
            Console.WriteLine("Bech32 Address :" + nativesegwit_address);

Mycelium testnet bitcoin wallet:


Who pays for the computational cost when validating a transaction

You have a few things wrong.

  1) Alice will send a request to all her peer computer nodes and ask for the root the Merkel tree and hashes required to validate the transaction.

Alice probably already has the Merkle root, since it is part of the block header.  The first step in validating a transaction is making sure that block that contains it is real.  Even SPV clients store all the block headers of the entire chain, so they already have every Merkle root.

  2) Some miners among her peer nodes will locate the block that includes the transaction

This is more or less correct, except that the nodes do not have to be miners.  There are plenty of full nodes with full copies of the blockchain on the network that can be queried for these hashes.

  3) As block only stores Merkle tree root, not internal nodes, these miners will have to construct a Merkle tree from all transactions

Full nodes store all transactions, and returning the hashes of the Merkle tree is not too computationally intensive.  You can read more about this in the Transaction Data section of the Developer Guide.

  4) The miners send block header and hashes (Merkle tree root and hashes on the authentication path) back to Alice.

Again, it is not necessarily (or even usually) miners who will send the hashes of the Merkle path that are needed.  It will usually be non-mining full nodes.  And as mentioned before, the block header and Merkle root do not need to be requested.

In the end, Alice is the one validating her transaction, but doing so by using additional information provided by full nodes on the network.  The work that the full nodes do to supply this data is important, yet not too computationally intensive.  For example, my Raspberry Pi 2 works just fine as a full node.  As for who pays the full nodes for their service...well...nobody.  This has been a topic of much debate.

In the end, however, people operate full nodes for several reasons.  Off the top of my head:

so they can operate trustlessly
as a service to the overall health of the network (which, in turn, protects their own investments)
for research or business purposes

So even though supplying the required data for thin clients to do transaction verification can be viewed as charity, in reality there are incentives for participating...even if not directly financial.


Does anyone have any idea what this is or what its for?

It is obviously related to cryptography.
Since the Bitcoin network itself doesn't use encryption, this is likely a configuration file or data file for a specific wallet's scheme of encrypting the private-keys and other information that need to be protected from being stolen and misused.
{
  "iv":"randomalphanumeric==",
  "v":1,
  "iter":1000,
  "ks":256,
  "ts":64,
  "mode":"ccm",
  "adata":"",
  "cipher":"aes",
  "salt":"randomalphanumeric=",
  "ct":"randomalphanumeric="
}

iv is initialisation vector
v is version
iter is number of iterations of encryption to be applied
ks is key size
ts don't know, maybe the size of something.
mode is an encryption mode. ccm is probably something like cipher chaining mode?
cipher is the encryption algorithm. aes is the "advanced encryption standard".
salt is a random number used to combat attacks using precomputed dictionaries.
ct don't know. Could be "ciphertext" - the encrypted version of some data ("plaintext").

the last string has a ton of characters including forward slash "/" and plus signs "+"

That is fairly common in encoding methods used to take binary data and present it using readable/printable characters. In this case it is probably base64 encoding. As I think you know, encoding is not encryption, just an easily reversible presentation method.

By itself, it is of no use to you. If you know the password (encryption key) you could probably decrypt the possible ciphertext (ct value) after reversing the base64 encoding. You could then examine the (potentially binary) "plaintext" to see if it contains a Bitcoin private key.


In-channel messages via Lightning network

As far as I know, the sender cannot include a message with the payment. However, if you're looking to attach a payment purpose to a transaction such can be specified by the recipient:

In order to send a payment on the Lightning Network, the recipient must provide an invoice to the sender. The sender then uses the invoice to construct their payment.

The format of the invoice is specified in BOLT #11: Invoice Protocol for Lightning Payments. The invoice may include optional tagged fields. The field tagged with d may be used to include a short description of the purpose of the payment.


How do I make Bitcoin Core listen on IPV6?

Normally it should autodetect. Check for lines like these in debug.log:

AddLocal([2a02:91a:f3:21aa::1]:8333,1)

If that's the case, Bitcoin Core is listening to it, and if another service can't reach it, it may be a network configuration problem or a problem with that service.

If it isn't, you can manually bind to an IP address (IPv4 or IPv6) using the -bind option.


How to provide a proof-of-payment to an offline Lightning Network vending machine?

Stepan Snigirev had basically provided an explanation how to do the tricky part described at https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-June/002009.html

The idea is that the vending machine creates an invoice with a routing hint that goes through the online node and the online node can construct the preimage from the onion that will be send.

Another way would be to have a deterministic way of preimage generation as explained in this video:  https://youtu.be/bihYeAeNi0g - which was already inspired by Stepan but is not as elegant as his solution.

Regarding the proof of payment the phone would just display a qr code of the preimage which a vending machine could scan


Why most of pubkeys in the first batch of blocks in blk00000.dat are different

The original Bitcoin software (and even the current Bitcoin Core) always used a new private key (and thus public key) for every transaction. Keys were never reused. Since the Coinbase transaction for each block is a new transaction, the software would use a new key for each one. It is the same behavior as asking for a new receiving address; a new one will be generated and given to you.


Is tighting inputs to specific outputs possible within one transaction?

In Bitcoin, it is not possible to associate specific inputs with specific outputs within one transaction.

This means that you are required to create multiple transactions to achieve what you want to do.

This wiki article and this forum post explain how to do create raw transactions for spending specific outputs.


What sources of information are there available to follow news about Bitcoin?

Since Bitcoin is decentralized, everybody claiming to be an authority is highly suspect. One early site is still going strong in providing independent practical (pro-Bitcoin) information:

https://www.bitcoin.org

Make sure to stay away .com variant!


Bitcoin Wallet for Android - permission denied decrypting the wallet backup file using OpenSSL

It looks like you don't have the permissions to read the file bitcoin-wallet-backup-2017-12-25. Check your permissions on the file and make sure that your user is allowed to read the file.


How to transfer Bitcoin Cash from a multi-sig vault?

After a long, painstaking process, I developed the manual steps required and thoroughly documented it here:

How to sell your Coinbase Multi-sig wallet coins on the Bitcoin Cash (BCC) network


I've never used windows.  But on GNU/Linux those access denied messages usually have to do with file permissions (because nonexistence usually says "no such file or directory").  The most typical case that I've seen is that you usually run this program as root and now you started it in normal user mode.


The 24h % change is the difference between the current price and the price 24 hours ago.

The current price of bitcoin is $14988 and was $14937 24h ago. So the 24h change is +0.3%, even if there was a huge spike between this period of time.


How do I transfer bitpay wallet from one machine to another (PC or oth. type of device)

Found it. There are 3 ways to do that in bitpay.

Export by scanning the QR code that can be found in: Settings > "Wallet name" >
More options > Export wallet
Export to file w/ password. Same path as before.
The backup option w/ the backup phrase, in: Settings > Backup


Your first point is indeed right: The BTC puzzle is only useful for ensuring the security of the blockchain.

Onto your next question: One of the first attempts to define a "useful" PoW was Primecoin, created back in 2013. Additional research in this area is being done.

In defense of Bitcoin's PoW, some people have said that Bitcoin mining tends to use up energy that would otherwise go to waste. For instance, if a hydroelectric plant is no longer being used for its original industrial purposes, then it can instead be harnessed for BTC mining. Mining on fossil fuels is currently unprofitable.

Of course, a more "useful" PoW could harness this energy for something even better. But even then you have to weigh up the pros and cons of switching BTC/ETH to such a PoW function. And you'll probably come up short.


Can unrelated people know the private key of a multisig address?

I think your question may stem from a misconception.

An ordinary Bitcoin address is the hash of a public key (plus a few extra bytes), which in turn is associated to a private key.  So in that sense an ordinary address has a private key.

Multisig addresses do not work like that.  The address is not the hash of a public key, and so there is no private key directly associated to the address.  Rather, a multisig address is the hash of a script.  The script in turn lists the public keys whose signatures will be needed to redeem the transaction.  I think it is these keys that you are referring to as "existing addresses" in your comment.

So spending the transactions requires you to know the private keys of the intended recipients.  There is no other private key involved.

Also, there is no real problem if other people know the script whose hash is the multisig address.  The only extra information it contains is the public keys of the recipients.  This might help someone identify who those recipients are (though the script has to be revealed in order to spend the transaction, so this information will eventually be public anyway), but it doesn't help them spend it.

For more information, see these answers:

How will multisig addresses work?

What is "Script Hash" address exactly and how does it work?


Trying to understand how exchanges handle crypto

Why would they not just give the users their main bitcoin address and
ask the users to include a user_id on the transaction memo?

Bitcoin is not the Ethereum and historically the fees were cheap in past. With creation of altcoins (shitcoins) a lot of them implemented this memo ability, in many cases wallets of altcoins support it by default. But this feature is available in bitcoin (OP_RETURN script) it isn't implemented in vast majority of bitcoin wallets. So exchanges historically haven't had an incentive to drag users this way.

If the logic above is correct then 3 transaction fees are required to
take place.

Not really, in most modern exchanges the withdrawals are being paid directly from depositors' addresses. So it's 1 transaction to put money into exchange backend, and 1 to withdraw it. With the change usually going to main "hotwallet" of exchange or series of "change" addresses. And deposits aren't swept in if they don't have to usually (to save on fees).

Why would they not just give the users their main bitcoin address and ask the users to include a user_id on the transaction memo?

I think you are misunderstanding how it works, if user controls the address, the exchange is not. When it comes to key ownership, as long as more than 1 party owns the private keys, it can't be deterministically decided who "really" own it, until one of the party decides to manage these coins. When it comes to your memo idea most of the altcoin exchange integration works in a way that exchange is providing user with common exchange hot wallet address and unique memo id. The one exception to above may be some escrow multisig scheme.

why would crypto exchanges give users their own bitcoin addresses?

They never do. Exchange won't cooperate with party that has ownership of their own keys, because of fraud possibility, in the case I mentioned above. The only exception are businesses that sometimes have static addresses in exchange system, that they own - like liquidity providers. But it is a very rare practice and can happen on a basis of complicated legal constructs.


When will my Lightning channel be closed?

When might it be closed so I can request a new one?

The time in which the transaction will be confirmed will depend on the fees of the last signed commitment transaction of your channel. the person force closing submits the last signed commitment transaction so as to get back the balance that is owed to them. You would need to monitor that transaction that was submitted by LNBig to the Bitcoin network to check for the fees. You can do so by searching with your funding transaction txid and any block explorer website will be able to show you the child transaction that consumes that output.  However, according to the BOLTs, the fees of the commitment transactions are always large enough for the transaction to get confirmed quickly.

  Is there any way for me to check force close wait period?

As said earlier, the force close wait period would depend on the fees of the last signed commitment transaction. If you had used C-lightning or LND implementations, it would have captured this transaction submitted. You can check whether the funds were returned to your wallet.

  I have a force closed channel from lnbig.com and it has been pending in closing state for over 2 weeks (42600+ blocks).

Just to get things straight, Bitcoin network generates blocks on an average interval of 10 minutes, which should correspond to about 144 blocks a day. Using two weeks time that is 2016 blocks. Since it's little more than 2 weeks, about 2200 blocks have been generated since it was closed. I think 42,600 blocks that you are mentioning is since the time the channel was opened way back in April.


Already answered here on Stackexchange

You can find some additional information in the article

PS. Right now stuck about 0.07 BTC thanks to blockchain.info fee calculator. Just waiting, I'm not in a rush


Transfer Crypto Currency between exchanges

I would downvote this but I can’t so I’ll just answer it :(  Of course, easy and direct transferrence is the primary function of Bitcoin. Exchanges have a “deposit funds” function/button that provides the address for you to send the BTC from your current exchange or wallet. Just go to “send” or “withdraw” on your current exchange and plug in the new exchange’s (or another person’s) address and send it to the network. That’s it.


I think you forgot to read this:

and this:

Remember that fees from the transactions get added to the coinbase transaction and sent to the coinbase address.  It's a bit confusing, since Blockchain.info is labelling the whole coinbase transaction as (Newly Generated Coins), even though some of that value comes from fees, and therefore pre-existing bitcoin.


How much internet traffic does a 3.5GH/sec pooled miner use?

The internet traffic for any miner is generally minimal and in most cases the miner speed is irrelevant. The Getwork protocol would at most make a small request every second, but with extensions such as rollntime, one can make the request less frequently. You can roughly see how much data is being sent from the examples provided here. Generally, you shouldn't worry about the internet speed or bandwidth.


Determine address balance using bitcoin core

AFAIK, this can't be done in any reasonable way with Bitcoin Core and its derivatives.

The only way I know to do it with Bitcoin Core is to use importaddress or importmulti to add your address(es) to the wallet as watch-only, but this requires a full blockchain rescan in order to compute the balance.  This takes several minutes to hours depending on the speed of your hardware.

(Note that the bitcoin.it link you gave is obsolete and only covers the API up to version 0.8, so you won't find these commands listed there.)

You'd need to use some other software that actually indexes all transactions in the blockchain by their receiving addresses.  This is what a block explorer does, for instance.

We have had a lot of other questions similar to this, so maybe there are some suggestions there: https://bitcoin.stackexchange.com/search?q=get+address+balance


What is the downside of not using Proof of Work for validator selection?

Proof of Work is needed to inventivize miners to not fork and, if there is a fork, some metric for determine which fork is the real blockchain (assuming no consensus changes in the fork).

Proof of Work incentivizes miners to not fork (i.e. see someone else's block, ignore it, and create their own block at that height) because of cost. It costs resources in order to produce a fork and stick with it. If their fork has no value, then they are wasting money on something that is worthless. However with other consensus systems like Proof of Stake, there is no cost to make a fork. Making a fork does not cost anything as there are no resources for you to spend to make the fork. In some systems, you can make a fork and still be mining/staking/minting/whatever on the original chain at no extra cost and no opportunity cost.

Proof of Work also provides a metric to determine which chain is the correct chain. Given two blockchains with the same consensus rules, the one with the most work (the sum of the difficulties of all of its blocks) is the one that is considered "the blockchain". In other consensus systems like Proof of Stake, no such metric exists for determining "the blockchain". This results in centralization as someone or something is needed to say "this blockchain is the right one". In some coins, a signer (usually the developer) must sign all blocks for the block to be considered valid, so that signer determines what "the blockchain" is and is a point of centralization.


Does AUTHORIZATION_REVOCABLE flag affects all credits help or up to any amount?

No it isn't that fine grained. The credit will just be frozen until the user deals with the gateway and the gateway unfreezes.  The gateway could of course unfreeze the credit after 13 of it is sent back.


Where is the documentation for Testnet 5?

I'd assumed it was testnet5 because segnet (the segwit development testnet) was regarded as the 4th testnet.  It's not strictly true though, as Bitcoin Unlimited has the nol testnet (NO Limit) and very probably there are or were other experimental testnets that I don't know about.

There's a bit of a history of skipping numbers like this: there was no testnet that was ever called testnet2 - the first two testnets were just called 'testnet' - but testnet3 was nonetheless so named - skipping the name testnet2 - because it was the 3rd testnet.  (And testnet3 is still the main testnet for Bitcoin.)

EDIT TO ADD: Incidentally, the reason why we're on the third (mainstream) Bitcoin testnet is that people started to actually trade testnet coins as an altcoin, so the developers made good on their threat to reset the testnet (with a new genesis block) to help enforce the priciple that testnet coins should have no value.


Using funds that have not been completely transferred yet for a new transaction

The green dot in Bitcoin Wallet for Android represents the number of confirmations an incoming transaction has. Once the first slice appears, the transaction has its first confirmation; i.e. it was included in the blockchain. Additional slices will appear when succeeding blocks are found, AFAIR marking up to six confirmations.

There should not be any issue or delay to spending any funds that have at least one confirmation as long as you include a sufficient transaction fee.


-blocknotify notifies you about a block, not a transaction. The hash you see is a block hash
 You'll have to call an RPC like listtransactions or getreceivedbyaddress on payments you expect.

Alternatively, you can also call getblock with the hash you were notified about to see all the transactions in it. I don't recommend that though, as you'll need to deal with the case where your node was down or your system restarted, and you won't get notifications for things that happened during downtime.


Buying on one exchange then selling on the other

Well for one, it's almost impossible to get money off of Mt.Gox. (I had a wire transfer pending for 3 months and finally decided to just cancel it and take the loss.) Some bitcoin exchanges refuse to do business with the US (btc-e) and some only do business with the US (coinbase). Bank transfers are not cheep and the exchanges take a somewhat large fee for moving money onto and off of their exchange (~1% each way.)

But some people do make money like this. You will find though, if you actually do the math for all the transfers and fees and what not that you would only be making a small margin and that only sometimes.

It's absolutely doable but you need to be doing it at scale and with good and fast programs managing your assets to really make a profit at it.


What if my Transaction is in differently assembled blocks

Those two blocks can never exist in the same chain. Whichever one came in the later block would be invalid because it would attempt to consume an unspent transaction output that did not exist.

If those two blocks claim to be in the same chain, then nobody will ever recognize the later block as valid and it will be as if that block does not exist. If those two blocks are in different chains, eventually one chain will be clearly longer than the other, and that will be the one that makes that transaction forever valid.

It is also possible that some third chain, including neither of those blocks, becomes definitively longer. In that case, a miner is free to include that transaction in a third block, assuming that chain doesn't already contain a conflicting transaction.


How long should I wait to consider that the transation is "definitely" confirmed?

I'm not sure it's exactly what you're asking about, but pages seven and eight of the Bitcoin white paper are concerned with calculating the probability that an attacker could, after having sent payment to a recipient, change the transaction to instead pay himself - specifically, from the paragraph that begins, "We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction," onwards.

https://bitcoin.org/bitcoin.pdf


Background information on warning, when closing wallet in pruned mode

If you have a wallet that isn’t opened for the period of pruning, it won’t be able to scan transactions. If you set the limit to 2GB, and 4GB of blocks pass without opening the wallet, it may miss incoming transactions as the required blocks will have been deleted.


What are "confirmations"when selling Bitcoins?

It depends where you are transacting with the bitcoins. If you are on a website like coinbase and selling or sending coins. You might get an email from them depending if you have notifications on. This is a 3rd party that holds your bitcoin and has setup email system for it. But if you have your own Bitcoin wallet that is not controlled by a 3rd party company, you won't be getting any emails as the "bitcoin blockchain" isn't a 3rd party company.


How does the Clearing & Settlement process work in Open Transaction

However how does the physical settlement and clearance take place?

It depends on the settlement policies of whoever issued the asset.

  What if the seller refuses to handover physical ownership of the gold?

Take them to court, I guess?


Is there a web service that does reverse FirstBits lookup?

Blockchain.info has APIs to generate and resolve firstbits.

Get firstbits,

http://blockchain.info/q/getfirstbits/1BCNEPySL4gzzjg8NNyNsQYJWYmZwpgaPF

Get address,

http://blockchain.info/q/resolvefirstbits/1paypal

http://blockchain.info/q/resolvefirstbits/1ebay

http://blockchain.info/q/resolvefirstbits/1google


What is the maximum amount of an Elements asset that can be issued?

There is no maximum that can be created, however you may run into issues with RPC-APIs in Elements if any wallet contains more than 92,233,720,368.54775807 at any time.
Confidential transactions will function with any realistic amount (you would have to re-issue an asset more times than possible to overload the 256-bit confidential amount type, however the receivers wallet would fail if int64 overflows.


You will want to get the address to send it to and it's always good to have multiple wallets but you should be able to contact the wallet company and they can tell how back up the wallet


firstly, a very, very newcomer to this space, and don't have any knowledge of its operation at all.

When we lack experience and knowledge, we are easy to trick. Be very very careful. Don't rely on one person to explain this. Especially not a stranger you have never met.

  I have been corresponding with individuals regarding recovery of scammed funds

I would ignore anyone who contacts me privately over Facebook or other social media private messaging.

You'll get better advice if you keep all communications in a public place like this website where many people are reading the questions and will quickly correct any misleading answers.

  I've been told I need to pay 0.19258 BTC to activate the transaction

This usually means someone is trying to steal more money from you. You don't need to pay any kind of activation fee in any normal kind of Bitcoin transaction.

In this situation I would forget about any "scammed funds". They either never really existed or are under the control of a scammer. Usually there is no realistic prospect of recovering control over this money. I would think it prudent to discontinue use of any wallet that was ever under the control of the original scammer or subsequent "helper".

  I have the details of the hash, which lists 18 different transactions

That's probably a Bitcoin address. That doesn't give you control over money, it just lets you see some transactions associated with that address. The address does not identify a person, business or place. Knowing an address doesn't give control over any money.

  a total of 4.35 BTC. Can I send this to my account?

No.

  I sure hope the answer is ýes'

Unfortunately scammers are very good at exploiting hope. They are very convincing. I would stop communicating with them - no good can come of prolonging contact with criminals.


I had similar issue and i switched to sgminer, even cgminer is good option but personally i used sgminer with same setting as yours, and everything is working fine in my case


A transaction that does not get processed

Eventually 20 BTC arrived. But not from THAT transaction. Maybe MtGox realising that they made an error sent another extra 20. Weird.


You will not be able to send a transaction with an OP_RETURN larger than 80 bytes unless you mine a block that includes the transaction. An OP_RETURN larger than 80 bytes is considered non-standard, but still valid, meaning nodes will not relay your transaction (on default settings) but will accept the transaction if it is included in a block.

An alternative would be to create multiple OP_RETURN outputs, each of 80 bytes, totaling to your 100KBs. This would require 1,280 OP_RETURN outputs which, again, would be non-standard as it is larger than the maximum relay transaction size for nodes (100KB). You would again need to contact a miner/mine it yourself in a block, or split the OP_RETURN values in half and include 640 OP_RETURNs in one transaction and 640 OP_RETURNs in another transaction.


Forking PIVX - ERROR: CheckBlockHeader() : proof of work failed

Create the first block manually.  I believe that is how Satoshi Nakamoto did it.  I think there is a uniqueness to the first block and I've read that it's funds can't be used for some reason.


"txn" is short for "transaction".  The abbreviation "tx" is also often used.

For an explanation of what makes a transaction (in)valid, see the links at How to know if a transaction is valid?


Trying to download miner but Google Chrome marks them as malicious/malware

Don't worry, Google has added this feature into Chrome : http://www.pcworld.com/article/2059579/googles-chrome-will-automatically-block-malware.html

But it seems that sometimes Chrome marked as malicious something which is not. If you have downloaded it from the official website you don't have to worry.

If you want to be sure you can get a checksum of the file (there is not the checksum on the official page so just ask someone you trust).


How does the bitcoin network recover in case of a hash collision in the block hash?

It would not break the algorithm.

As the inventory vector of the described new block would be a duplicate of an already known block, no other node would request this block. It would just be ignored, as if never discovered in the first place. Everybody else would still be hashing away happily, obsoleting the block eventually.

Tough luck for the miner, he'd not get the reward, because everybody would be convinced that no new block has been found at that height yet.

Of course, chances of that happening are negligible, because the block hash is a random 256 bit output (smaller than the current target), which allows for an immense number of possible hash outputs of a similar magnitude as the address space.

Actually, @NickODell made me aware that it can cause a problem, when nodes see the newer block before the older block that was already part of the longest chain. In that case the node would be unable to synchronize, as it would not be able to build the complete chain.


Bitcoin market hours (open/close prices)

In 24 hour markets High and Low usually mean "highest/lowest price in last 24 hours".

Open generally refers to the price at 12:01 AM UTC of any given day and close generally refers to the price at 11:59 PM UTC of any given day.


Your redeemScript is incorrect. You need to push the public key to the stack by prepending it with its length. Otherwise the script interpreter will try to interpret the pubkey as opcodes, which is incorrect. Just putting the pubkey there does not work because the script interpreter does not know that those bytes are for a public key.


Is there a way to find how many nodes are there?

There are websites such as Bitnodes.io that track the number of nodes currently reachable in the network. The site also gives an account of the versions the nodes deploy and what countries they are located in.

According to Bitnodes.io, there are currently 6426 nodes reachable.

To collect your own list of nodes, you'd ask your peers for more peers, i.e. getaddr, then recursively request more peers from the newly discovered peers, until you have polled everyone you have discovered.

Note that this doesn't guarantee you to find all nodes, as some don't accept connections from the outside, and getaddr doesn't necessarily give you all peers. Also see: Does getaddr.bitnodes.io find all Bitcoin nodes or only one node per mining pool?


Where can I find per-second bitcoin price & volume data?

Your best bet is probably to utilise the various exchange APIs to log the data in your own database.

NB: I don't think Coinbase provide volume info publicly.


Can two different nonces and different blocks produce the same hash?

One of the main properties of a hash algorithm is collision resistance. If you would find an identical hash with two different datasets, then we would speak of a hash collision.

This is extremely unlikely to happen. The mathematical chance that a sha256 collision would happen is smaller then the actual chance that the universe will implode in this moment.

https://crypto.stackexchange.com/questions/24732/probability-of-sha256-collisions-for-certain-amount-of-hashed-values


Blockchain.info has buggy system which does not validate OP_RETURN outputs properly. Your transaction was pushed successfully using competent software.

71c3da4e13f5b61c2cf05e9b5a22f3be989142b870c1cf7779a1d7b3f139d422


is there a way to download my bitcoins to a pc wallet?

That's definitely a good idea, it's always safer to store your bitcoin where you control the private keys instead of a custodial wallet like the one on Paxful. The first step would be to follow the instructions at bitcoin.org on setting up a full node.

If you don't have the storage space to run a full node on your PC, make sure and read the section on reducing storage requirements that will allow you to run a full node without the massive storage requirements.

Once you have your node setup, you should follow this Paxful faq on sending bitcoin to an external wallet.

There is a caveat though: the fees are going to make transferring .000313 BTC on chain pretty much pointless. If you check out estimatefee.com currently, the average fee costs about 309 satoshi per byte which works out to an average of 0.00115566 BTC, which is more than your balance. You might want to wait to send your BTC from Paxful when you have a larger balance, or the fees go down.


bitcoin-qt "backup wallet" vs copying wallet.dat

Maybe its copying it safely in a way that you can re-use it without any issues.
Update and lock the wallet, preventing any file corruption caused by updates during the copy
Luke Dashjr mentioned one of the reasons here: https://github.com/bitcoin/bitcoin/pull/18219#issuecomment-595010266


What happens if a miner receives a block but not its previous?

Will the miner simply ignore that block?

Yes, the block will be just ignored by the miner.

  how will the miner update to A-B-C-D-E (step by step)?

When the miner's node gets online and start connecting to peers, it will start a “handshake” by transmitting a version message, which contains all basic identifying information, including BestHeight (the blockchain height of the node). Since v0.10, the nodes sync with 'headers-first'. This means that the nodes when restarted first ask peers for block headers and validate those. The getheaders message requests a headers message that provides block headers starting from a particular point in the blockchain. The connected peers will respond with a headers message that sends block headers to the node which requested certain headers with a getheaders message. The disconnected miner's node will then verify the difficulty until the tip. This allows a peer which has been disconnected to get the headers it hasn’t seen yet.

In a second stage, when the headers have been discovered, the node can then download the blocks. However, as the node already know about the whole chain in advance due to the block headers it has received, the blocks can be downloaded in parallel from all available peers. These blocks are received through getdata requests.

The above process describes the syncing of node when it was disconnected for some time. To make the answer more complete, I'll expand a bit further as to how new transactions and blocks are broadcasted. Nodes unsolicitedly transmits inv message (inventory message) containing one or more inventories of objects known to the transmitting peer. It can be sent to announce new transactions or blocks. The receiving peer can then compare the inventories from an inv message against the inventories it has already seen, and then use a follow-up getdata message to request unseen objects.


On-chain scaling still required with Lightning Network?

Yes, it would require on-chain capacity increases if there were a lot of channels being opened and closed as well as normal on-chain transactions. This need is directly referenced in the Lightning Network paper itself.


Would the existance of other cryptocurrencies negatively effect Bitcoins?

It depends a lot on the circumstances. If the use cases overlap significantly, then the currencies can compete. That could negatively affect Bitcoins. However, if the use cases don't overlap significantly, then the currencies likely won't compete. That could even positively affect Bitcoins.

Crypto-currencies aren't fighting over shares of a fixed-sized pie. Crypto-currencies are cooperating to enlarge the pie and bring their benefits to a much, much broader population.

In my opinion, near clones like Litecoin do affect Bitcoin negatively because they don't attract a new population and they do reduce the chances that Bitcoin will attain critical mass. However, I must stress that one shouldn't assume that anything that's bad for Bitcoin is bad for mankind. It's always possible a new crypto-currency will come along that's much better for humanity than Bitcoin is, and the weaker Bitcoin is at the time, possibly the better for that currency. Of course, on the flip side, the more Bitcoin has paved the way, perhaps the better for that currency.


Are there any Bitcoin block explorers still around that log First Seen by node data?

Could you be a bit more specific?
There are a few block explorers that do provide information specific to their block explorer's running node.
Best lead I have for you is: https://bitcoinvisuals.com/
There's a lot of node information on there though I'm not sure its exactly what you're looking for.
However, I know that the owner of the site is pretty responsive and very easy to get into contact with.


Unconfirmed after 48 hours and counting still ... Someone please help me

The transaction has been broadcast and nodes have viewed it, so as for the moment; you'll simply have to wait.

If there are a number of blocks found quickly; which happens... there will be less transactions transmittted due to the short time interval / blocks found, and the node that mined the block will accept and confirm funds sent with low TX fees.

But the reason it's stuck is your fee is too low.

If it's not confirmed after another day or two, it will likely be rejected back and ignored, thus returned to the original address.

The BTC isn't lost, it's just the block size is only so big, and there are so many transactions taking place, that if you do not "bid" a high enough fee you don't make the cut list.

The nodes are all programmed now to accept transactions based on "highest fee first, downward, until max block size is reached.

There is no work around.


How secure are various models of Bitcoin clients?

One way to look at security is to identify the risks. For a bitcoin client there are at least :

1. Theft of private keys

Mitigation:

1.1 Keys should be encrypted.

1.2 Keys should not available to servers.

1.3 Key generation should be done securely.

2. Loss of private keys

2.1 You should be able to backup your wallet or private keys.

3. Client software fails or is untrustworthy

3.1 Software should be open source so that you can build it yourself and inspect the code.

3.2 Software downloads should be signed by private key of author to prevent 'look-a-like' malicious software.

3.3 Author should spend time building their reputation (even if pseudonymous).

3.4 The software environment the client runs in should be resistant to attack.

MultiBit's scorecard

For MultiBit - which I am the lead developer on - the "Security Scorecard" is currently:

1.1 Currently no, planned for 0.3.0 release.

1.2 There is no server - purely local.

1.3 Keys are generated locally.

2.1 You can backup your wallet.  Key export and import is planned for 0.3.0 release.

3.1 Code is open source with an industry standard (Maven) build.

3.2 Currently no.

3.3 Author is a real public person - Jim Burton.

3.4 MultiBit uses a Java Virtual Machine - its security depends on the desktop machine not being rooted.


Is using different addresses for bitcoin similar to having different email addresses?

is it as simple as, we can have different email addresses:

Yes and no. Mostly no.
You can, and normally should, create a new receiving address every time you receive money. You could, but normally shouldn't, create a new email address every time you want to receive an email message.

A street address identifies a specific place.
An email address identifies a specific person
An IP address identifies a particular network port on a computer
A bitcoin address doesn't identify anything.

The purpose of a Bitcoin address is unlike most other things for which we use the name "address". A Bitcoin address is really just like a random number in most regards. It's just a seemingly random number that in fact has a useful mathematical relationship to a really random number that is secret.

so you use them as accounts for yourself

You can use them that way. But that's something extra you do outside the Bitcoin network. There are also privacy issues if multiple people or businesses send money to the same one of your addresses. So you shouldn't use an address as a "sales" account for example.

nobody know who is who with these "addresses"?

Correct. But if you reuse addresses, information about you and your money leaks out.


Can't find an API which gives me a full list of cryptocurrencies ordered by market cap

Take a look at this website. I think it what you're looking for.


Can a bitcoin transaction be reversed from the receiving end?

When sending coins, the original Bitcoin client picks the more "secure" coins, i.e. the oldest ones that can be used as input for the transaction. Internally, it doesn't care about accounts, although it does of course keep track of each account's balance.

As a result, sending coins back to an input address will only guarantee they will go back to the original wallet, not necessarily the original account, let alone the original person. In many situations wallets are shared between different persons, e.g. in web services (online wallets, mining pools, etc.), so the difference is crucial.

Thus if you're designing an application and you want to allow refund, you should absolutely not rely on the sending address in your application design. Instead, allow people to give an email, a refund address, etc. at some point.

We're talking about the original Bitcoin client here. Although this behaviour is largely justified for security reasons, some current or future clients may not mix addresses between accounts and still be compliant at protocol level.


Where can I find an average transaction value chart?

This chart can answer that question for any period you choose:

https://tradeblock.com/bitcoin/historical/1w-f-txval_per_avg-11101

Measured in BTC, the average transaction value was naturally the highest in the early days of bitcoin when its value was much less in fiat terms


Using GPU mining with the Bitcoin Wallet

You can use your GPU to mine, but it is going to mostly be a waste of time and energy now that there is specialized hardware (ASICs) to mine.

You need a piece of software that will allow you to mine with your GPU. The miner built into Bitcoin Core is only for CPU mining.

Check out this page on the wiki. The exact software you choose will depend on a number of factors including what make of GPU you have, your OS, etc.


When are multiple transactions spending the same output in the same block considered a double spend?

Adding my own answer after doing some research: An address and an output are different things. A transaction may have many inputs and many outputs. Here is a good visualization from bitcoin.org:

A double spend occurs when the same BTC is used to pay two different people. This will never happen on the blockchain because the Bitcoin network guarantees a consistent ledger. But, what about the unconfirmed transactions that live in the miners' mempools?

Some inconsistencies in the mempool may not manifest until they are added or not-added to the blockchain, others we can flag as invalid right away e.g. amount exceeds available funds etc; If unconfirmed transactions were not checked for validity, an attacker could flood the mempool with bogus transactions and cripple the network.

A submitted transaction that has the exact same inputs and outputs as another unconfirmed transaction in the mempool is rejected by the Bitcoin network (even if it was a valid financial transaction). For example, I could send 1 BTC from A to B, and while the transaction is unconfirmed, send another 2 BTC from A to B. As long as A has 3 BTC to cover the transfers, these transactions are consistent, but conservatively rejected by miners.

You can see this yourself with the Electrum wallet using the "Send From" option. Normally, Electrum picks valid inputs for you, but you can override this. Create a transaction specifying the from and to addresses. Then, create another transaction with same from and to (but the amount can differ). If the first transaction is still pending, you'll get the following error:


Why can malicious miners not award themselves with any number of bitcoins?

A miner is at perfect liberty to create any sort of block he wants and broadcast it to the network.  This could include rewarding himself with an unlimited number of bitcoins, or including transactions without proper signatures.  However, this block means nothing if other miners do not consider the block valid.  If other miners reject the block, then it doesn't matter what the block says.

This creates a situation where a miner is wasting his valuable computational resources if he chooses to do the proof-of-work on an invalid block.  He would be throwing away the money invested into the mining hardware.  Unless he has reason to believe that the majority of hashing power on the network will accept his invalid block, it's in his best interest to follow the rules of the system.  A situation like this is known as a 51% attack.

So long as hashing power is not centralized into the hands of those colluding with one another, Bitcoin is considered safe from this sort of vulnerability.


How can I watch all addresses under HD wallet?

Full disclosure: I'm BlockCypher's Developer Advocate.

We have a series of HD Wallet Endpoints that we recently released that might suit your needs; you can read more about it here:

http://dev.blockcypher.com/#hierarchical-deterministic-hd-wallets

You can use it in tandem with our WebHooks API for notifications whenever an address associated with an HD wallet is involved in a transaction.

If you want to use something locally instead of our API, I'm a fan of btcd and their associated btcwallet, which supports HD addresses.


What was the design decision behind that the coinbase field can have arbitrary data?

They wanted to rule out possibility that the same transaction ID would appear in different block, as a different coinbase.

There have been such in the history, but only twice, and it complicates the unspent DB application, so they just decided one day that same ID would not be distinguishable as a different transaction anymore. Thus added a protection against it, in block format version 2, so no miner can accidentally end up anymore with a non-unique ID for his coinbase transaction.


How do nodes reach consensus on when the target is recalculated?

The target recalculation is not something that is broadcast or something that is announced to nodes. Rather nodes calculate the targets for each block according to a specific algorithm that only requires the blockchain data. It is based on the previous block's target, the block height, and the block timestamps. So each block's target is done completely independently from the network with the only information required being the the blockchain.

Since the algorithm for calculating the target is deterministic, each node will calculate the same difficulty for the same block heights given the same blockchain data.


How do I get started in finance & market analysis?

Market analysis usually consist of Fundamental Analysis and Technical Analysis.

I recommend http://www.babypips.com to get started with the the Technical Analysis.

Fundamentals consist of understanding how the economy is effected by news and business. Social psychology to specific events and can vary depending on what market your looking into.


The output returned by bitcoin-cli listunspent is correct. As mentioned in document, outpoint is pair of (txid, vout)

txid is 4bbf676731987cce1e4639ec28d1219f065ab2aa5e9deb323c0b56bd0482d499. Its is hexadecimal representation of a binary string and will take 32 bytes, each hex digit is representing 4 bits (or half a byte)

vout is 0 , this is stored as uint32 in the bitcoin block and will take 4 bytes. In other words it stored as an unsigned int binary representation of 32 bits.


Will I be still getting segwit2x coins if I store BTC in my desktop BTC wallet

I have some BTC in these three places. If I withdraw my BTC to my desktop wallet, would I be able to receive segwit2x and BTG when fork take place?

Nope, BTG hard fork has already happened. If your exchanges don't support BTG, then there is nothing you can do to claim your BTG.

You can still withdraw your BTC if you want to claim your S2X coins, and if you do, you'll be able to claim them after the hard fork. (~15th of November)


What is the point of Bitcoins if every transaction has a fee?

The fees are supposed to be low. The last year, the transactions-per-second rate increased more than the system could handle. A few months ago, "SegWit", a technical advancement was activated. Currently people can use SegWit addresses and pay less fees, (so use a SegWit compatible wallet if you want to pay less fees!), however it's only a temporary solution. We'll have "side-chains" and other Layer-2 technology in a few months (Search for "Lightning Network") (up to a year) which will make fees drop forever.

TL;DR: The fees are temporarily high. Keep on eye on Bitcoin news.


Bitcoind crashes directly after starting

Well I figured it out. I had to find my bitcoin.config file. I opened it with note pad and changed rpcallowip=* to rpcallowip=192.168.0.1/24

I was trying to do that in bitcoind. Thanks to the guy who replied and thanks to whoever edited my post :)


How can I stop websites running an integrated Bitcoin miner without disabling javascript altogether?

You can use Adblock Plus to block the miner script.  In this case it would be:

http://www.bitcoinplus.com/js/miner.js


Where can I see the average transaction fee payed in the last 100 blocks?

Blockchain.info shows the amount of fees payed each day.


How do we know which co-signer signature is in raw hex in multisig?

The only way to know which signers signed is to verify the signatures against the public keys. Each signature will only verify with one of the pubkeys.


Can cryptocurrencies never be fully decentralized because finding peers is centralized?

... it needs to fetch peers from a centralized source.

Not exactly. Once you are connected to the network, you will begin to receive lists of IP addresses and ports of known clients.

There is a list of seednodes built into Bitcoin. These addresses are only used as a last resort.

After you connect to the network once, you won't need to use the DNS seeds, etc. anymore. The Bitcoin network has a system which allows every network participant to (over time) get the IP addresses of all other network participants. Bitcoin stores this info in a local database(peers.dat) and contacts these nodes when it next starts.

  Are we just ignoring this issue because it'll be hard to gain control
  of the servers?

Note that if user have found out that he is under attack, he just needs to connect to one real Bitcoin node. It would be "quite difficult" for an attacker to pull this off, and probably not financially worth the while.


Do the instructions to not reuse an address include change? That is, should I generate a new key pair for any transaction that needs to receive change, and then manually specify my change be sent to the newly generated address?

Wallet software will do this automatically for you. Whenever change is created, the wallet will construct a new keypair, compute its address, and send the change there. You shouldn't ever do anything manual.

If I make a new address for every transaction, and let us say I have one key pair associated to a 1 btc UTXO and another key pair associated to a 1 btc UTXO and I want to send Alice 2 BTC, then following the address reuse policy I would ask her to provide me 2 seperate bitcoin addresses, and I would make two separate transactions, 1 btc sent to each address?

No, you (or your wallet) will just create a single transaction that spends both 1 BTC UTXOs, and send 2 BTC to Alice's address. No reuse.
The advice of no reuse just means that if you later want to send more money to Alice, you'd ask a different address of hers, and don't send again to the same one. This is generally good practice for other reasons anyway, as Alice may have moved to a new wallet setup, and prefer not be paid to old one anymore.

Terminology - does the term "wallet" refer to a key pair, or to software/hardware etc. that could contain many key pairs. For example, thinking of a Nano Ledger S, is the device itself the "wallet" and each 3-tuple (private key, pub key, address) also considered a "wallet"?

You'll hear conflicting opinions on this, but in my view it's closer to the second. A wallet is something that manages a collection of addresses, coin selection, helps constructing transactions, ...
In my view, a "hardware wallet" is badly named, because it is not managing any of these things. It is a hardware transaction signing device, which needs communication with an actual wallet to be instructed what to do.


When running a Lightning Network hub, who pays the fees when a transaction has to be broadcast to the blockchain?

It's possible that a node in the middle either either intentionally or unintentionally does not pay the next node down the line. The recourse is for the node that did not get paid to broadcast the transaction to the blockchain (and close the channel?).

No, that's not accurate. If a node in the middle of a multi-hop payment rejects a payment request, the sender simply makes another attempt along a different route omitting this node. On the other hand, if the payment contract is already established, the node is already cryptographically committed to pay. It's impossible at that point for them not to pay. A forwarding node can merely fail to collect the reimbursement for what they've already forwarded.
If a node continuously fails to forward payments, their channel partner is still free to close the channel of course, but this is for different reasons.

  Who pays the fees for for that transaction? What happens if the fee is significantly larger than the amount of money the node would gain by broadcasting the transactions?

The fee for Lightning payments is paid by the sender. They must include sufficient funds to pay fees to all nodes along the route. If the fee for closing a channel is higher than the channel's capacity, it probably makes more sense to leave it open until fees get lower.


Create a new bitcoin wallet offline with a website like this one
https://walletgenerator.net/
Transfer the amount you want to give to your friend to this new
wallet
Write the private key on a paper and give it to him then explain  that since you have created his wallet he is not the real owner and tell him to do step 1 and 2 by himself if he want to really own his coins