That is indeed what that author is implying, though I think his conclusion is wrong. Any good currency will increase in value over time, or ideally the money supply will increase at the same rate wealth is added to society, which would imply its value remains constant.

This is distinctly different for instance then the USD which is intentionally being rapidly inflated by the Federal Reserves quantitate easing policy.

Bitcoin does not match the rate of wealth creation, and coins become more difficult over time to acquire, but the same is true of gold and people have been paying debts in gold for centuries. Perhaps its a good thing to be a little foolish.


Is there something in a debug.log from 2011 that would tell me if there are BTC in an old wallet.dat?

What I would do in this case (the easiest approach):

Copy wallet.dat to a new directory called Bitcoin in %appdata%
Run latest Bitcoin core
Open the console and do
dumpwallet C:\Users\yourusername\Desktop\wallet.txt
Quit Core and delete your new Bitcoin directory. (Don't forget to delete it, it might become larger than 100 MB, to save space)
Save my script with Ctrl + S and name it dumpwallet.html. Open it in your browser. Copy the wallet.txt output here so that only the private keys are listed.
Import wallet to Electrum: "New wallet > Import private keys > Copy from the webpage output"

Then you can see your balance or spend from it.
The tedious approach is to use db_dump of db-util to dump all the transactions and calculate the final balance by yourself. I would not bother doing it this way.


How to generate a large number of accounts via hw wallet and save addresses to file?

Your best bet would be to export the xpub key for each account from your ledger. Once you have that, generating new addresses can be automated via any number of bitcoin libraries, such as bitcoinjs-lib. Similar options exist for ethereum.

I'm not entirely sure if they have a straighforward way to export the xpub, but I recall seeing it in the ledger live logs at some point. You can either use that, or connect to a wallet such as Electrum, which would export it for you.


Bitcoin wallets- question about control and centralization

Largely, this question boils down to one thing: does the wallet software let you control the private keys for your coins? Or not?

If the wallet does not let you control your own keys (ie a custodial wallet), then it is up to the custodian to craft and publish your transactions. Obviously, this gives the custodian ability to censor your transactions at will.

If the wallet does let you control your private keys, then you have the material needed to craft a transaction (the key itself). Perhaps a developer could code a wallet that refuses to broadcast some certain type of transaction, but if you own your own keys, then you are free to import those keys to some other wallet software, and create the transaction as per normal. Only by withholding your keys, could a wallet truly censor your ability to publish a transaction to the network.

The only way to 100% verify that a developer has not created a malicious wallet is to review the source code yourself, and then build the wallet from it. This is obviously very intensive, and so perhaps the next best thing to do is to use well-known and well-reviewed open source software.

If some software was found to be censoring transactions, then I would expect that the Bitcoin community would make this known, and that software would no longer be recommended for use.


As of today (2020-08-13) there are seem to be none. I've opened some tickets. Hopefully developers find some time to implement.


CPUMiner - Do I also need to download Bitcoin client and 15gb chain?

Mining by yourself requires that you have the whole blockchain. However, when you choose to mine as part of a pool, the pool operator maintains the full blockchain and just sends parcels of work out to the miners. (Of course, in this arrangement you have to trust the pool operator.)


What happens if you send BTC to a testnet address?

You can't. The version byte for testnet addresses is different, so their addresses start with "m" or "n" rather than a 1 for the real network. A client will see the address as invalid.


How can i create an Anyone can spend output?

If it's a P2PKH output, it's not anyone-can-spend. P2PKH implies there is a public key that needs to sign for spending.

You can use a P2SH or P2WSH output which sends to an OP_TRUE script, though.

You can also manually craft a transaction with a scriptPubKey that is literally OP_TRUE. No address corresponds to such an output, so you couldn't use off the shelf wallet software for it.


How companies are accepting bitcoin for their products or services?

Many companies will instantly convert bitcoins to fiat upon receiving. This is done by the payment gateways themselves like Bitpay, coinify.

However, these days you see several website keeping the bitcoins without converting them. You can use payment gateways like blockonomics, blockchain.info, coinsimple etc. This is due to several reasons:

Extra fee in converting
Regulations/KYC in accepting fiat
Bitcoins are scarce
Adoption has increased. Employees are taking wages in BTC, and business can buy stuff like airline tickets and other required goods directly using bitcoins

If you hold bitcoins over a long enough period (say 1year+) you will see that the value has always increased https://www.reddit.com/r/Bitcoin/comments/5vuox8/i_dont_mean_to_brag_but_i_bought_bitcoin_at_the/


using coinbase with uc_bitcoin drupal module

I'm not terribly familiar with drupal, and I've never used the module you're talking about, but I'll take a shot at it:

function uc_bitcoin_exchange_rate($order) {
  static $data;
  $rate = FALSE;
  $currency = $order->currency;
  $currency_code = 'btc_to_' . strtolower($currency);

  if ($currency == 'BTC') {
    // BTC 1:1
    return 1;
  }
  if (!isset($data) {
    if ($response = drupal_http_request('https://api.coinbase.com/v1/currencies/exchange_rates')) {
      if ($response->code == 200) {
        $data = json_decode($response->data);
        $rate = $data[$currency_code];
      }
    }
  }

  if (!is_numeric($rate)) {
    watchdog('uc_bitcoin', 'CoinBase lookup - Unable to get current exchange rate', WATCHDOG_ERROR);
    $rate = FALSE; // just to be super sure.
  }

  return $rate;
}


bitcoind starting and then quickly shutting down automatically

The solution is time consuming but easy. The flash drive was finally reporting read/write errors after a harsh shutdown. Formatting it and new install of bitcoind and loading all blocks again (I had no other drive where I could have copied this amount of data to and wanted to exclude potential issues with the old file permissions).

So the next few days I assume the machine will be busy. However now at block 8000 the CPU is only using 1-2% (Intel Core i5 with 8GB RAM on fedora linux)


which is the relationship between ouput adresses and their value in a specific transaction?

When a Bitcoin transaction is created, unspent transaction outputs (UTXOs) are used in the inputs of the transaction. Your wallet will use as many UTXOs (and therefore create as many inputs) as necessary to achieve the value you're trying to send in your transaction.

UTXOs have to be spent completely, so most likely the total value achieved by the sum of the inputs will be greater than the amount you wanted to transfer. There's where change outputs come into play (the additional outputs you're getting). In order to avoid having to send more value than you wanted to the destination address (addr_dst), the difference between the sum of the inputs (vi) and the value to be sent (vo) is sent to a change address (addr_chng), i.e:

vo - fee is sent to addr_dst

vi - vo - fee is sent to addr_chng

That change address is usually owned by you.


What is a good approach to learning the Bitcoin codebase?

Some good places to start are the places that the user or the network input something into Bitcoin Core. The obvious two places for these are the RPC functions and the network message processing. The RPC code is in src/rpc, src/wallet/rpcwallet.cpp and src/rpcdump.cpp. The network message processing is in src/net_processing.cpp. By tracing through the function calls and also looking up where the global variables are being added to and set, you can get into most parts of the codebase.

For example, suppose you looked at sendtoaddress. You would start at the RPC function in src/wallet/rpcwallet.cpp and trace the execution path. You would see that it eventually goes to src/wallet/wallet.cpp and how it uses the CreateTransaction function. From here, you would learn how coin selection works.

Now you would see how the wallet chooses coins for transaction spending. But how does it find out about those in the first place? Well, as you are tracing sendtoaddress, you will come across the AvailableCoins which iterates through some variable named mapWallet and pulls from stuff in mapWallet to build a list of selectable coins. Thus mapWallet must be where transactions are stored, so you can search for the variable mapWallet in the codebase. This will tell you where that variable is being used and you can trace through the uses of mapWallet to learn how it is populated and used.

Doing so will lead you to the functions that populate mapWallet. So now you want to trace backwards: what are calling those functions, how did we get to that function. For example, for populating mapWallet, you will run into AddToWallet. What calls AddToWallet? The function AddToWalletIfInvolvingMe. And you can keep going backwards to get an idea of how it all works.

The same methodology can be applied to the network message processing. For example, suppose you wanted to learn about block processing. The place to start is when a block is received, so in src/net_processing.cpp, look for NetMsgType::BLOCK within the ProcessMessage function. From here you can trace the function calls and global variables like we did with the RPCs. It will take you to the Proof of Work validation and how the target is calculated for a block. It will take you to transaction validation. You will end up looking at the script interpreter and how it evaluates scripts in a transaction. And so on.

You can repeat this for every RPC and every network message type to find out where and how things are processed. This will get you through the majority of the codebase. Network message processing will get you through all of consensus and the bulk of the codebase. Tracing RPCs will get you through basically everything else because almost everything a user can do can be done through the RPCs. These two general entry points are great places to go through the codebase and learn about what Bitcoin  Core is doing internally.


How to find Z value of multisig transaction?

What you're asking for is how to figure out what to sign for a multisig transaction.

Multisig is actually very close to this answer. There are a few subtle differences, however, so let me try to summarize step-by-step using the transaction as seen  on the blockchain

Note that for each input, the actual hash to be signed is going to be different. Namely, you will need to fill in the redeem script for that input only and nulls for every other input. To illustrate, let's figure out what you need to sign for the very first input.

Transaction version: 01000000
Number of inputs: 03
Tx input #1 hash: fdb1fe0b4506f8d412f8498a0d747701bc5ed8c009e779ee670c82361c1d1dd5
Tx input #1 index: 01000000
Tx input #1 redeem script length: 47 (71 bytes)
Tx input #1 redeem script: 522102cebf6ab580948d146b7cc771d8e646974349d3d7b11f3e03287d0997a477d3b921037ba651485b7a2cb222191eb64a55926e62bbabfe9b5ed2a9488aad547b20428252ae
Tx input #1 sequence: ffffffff
Tx input #2 hash: a614d26f1878078a00a3c296085576cd7e6361234ea82c865681041fcfdacea8
Tx input #2 index: 01000000
Tx input #2 redeem script length: 00 (nothing)
Tx input #2 sequence: ffffffff
Tx input #3 hash: d064d2f9cf9e5196a9d81dd87718c9cfbec97f3ccac7164946d956421597c7f1
Tx input #3 index: 01000000
Tx input #3 redeem script length: 00 (nothing)
Tx input #3 sequence: ffffffff
Number of outputs: 01000000
Amount being sent to the first (and only) output: e068704600000000
Output script length: 19
Output script: 76a9142c76e6fdd1a81c902afa62e78ec71435708d9d9d88ac
Lock time field: 00000000
SIGHASH_ALL: 01000000

Now, if you double-sha256 these bytes you get:

9c4b551f37f4b383af9216045d80b2fcd4ed57bddca8df388ec29601cbd2a4f1

And indeed when you check against the embedded signature of that transaction, you can see that that is indeed the hash that was signed. Here's a code sample to verify using the excellent btcd library written in go:

package main

import (
    "encoding/hex"
    "fmt"
    "hash"

    "github.com/btcsuite/btcec"
    "github.com/btcsuite/fastsha256"
)

// Calculate the hash of hasher over buf.
func calcHash(buf []byte, hasher hash.Hash) []byte {
    hasher.Write(buf)
    return hasher.Sum(nil)
}

// Hash160 calculates the hash ripemd160(sha256(b)).
func Hash256(buf []byte) []byte {
    return calcHash(calcHash(buf, fastsha256.New()), fastsha256.New())
}

func main() {
    x := "0100000003fdb1fe0b4506f8d412f8498a0d747701bc5ed8c009e779ee670c82361c1d1dd50100000047522102cebf6ab580948d146b7cc771d8e646974349d3d7b11f3e03287d0997a477d3b921037ba651485b7a2cb222191eb64a55926e62bbabfe9b5ed2a9488aad547b20428252aeffffffffa614d26f1878078a00a3c296085576cd7e6361234ea82c865681041fcfdacea80100000000ffffffffd064d2f9cf9e5196a9d81dd87718c9cfbec97f3ccac7164946d956421597c7f10100000000ffffffff01e0687046000000001976a9142c76e6fdd1a81c902afa62e78ec71435708d9d9d88ac0000000001000000"

    b, _ := hex.DecodeString(x)

    hash := Hash256(b)
    fmt.Printf("hash of thing to sign: %x\n", hash)

    pubkeyStr := "02cebf6ab580948d146b7cc771d8e646974349d3d7b11f3e03287d0997a477d3b9"
    pubkeyStr2 := "037ba651485b7a2cb222191eb64a55926e62bbabfe9b5ed2a9488aad547b204282"
    pubkeyBytes, _ := hex.DecodeString(pubkeyStr)
    pubkeyBytes2, _ := hex.DecodeString(pubkeyStr2)

    p, _ := btcec.ParsePubKey(pubkeyBytes, btcec.S256())
    p2, _ := btcec.ParsePubKey(pubkeyBytes2, btcec.S256())

    fmt.Printf("pubkeys: %s, %s\n", p, p2)

    sigStr := "3044022025332b6dabf11e493fbc62c93e7302c48666512e1cf88157c26176f4af6d064702201ee7ec25d0917244e514c402e8751f112dfd1bef2b22ec5e496fbafabb52bf010148"

    sigStr2 := "3045022100fa1f17bf59bee0ac33ae5f682711c5471c73a4aeb898aee218478289a4c7aa6e02207b40dfeae3fa4a50dc147bd42be40370d76a35d72c0b27b27c4ba2439a565fb901"

    sigBytes, _ := hex.DecodeString(sigStr)
    sigBytes2, _ := hex.DecodeString(sigStr2)

    s, _ := btcec.ParseDERSignature(sigBytes, btcec.S256())
    s2, _ := btcec.ParseDERSignature(sigBytes2, btcec.S256())

    fmt.Printf("sig: %s\n", s)

    fmt.Printf("signature valid: %v\n", s.Verify(hash, p))
    fmt.Printf("signature valid: %v\n", s2.Verify(hash, p2))

}

You can do the same thing with input #2 and input #3 to get the hash that gets signed by changing #5 and #6 (combined) to be 00 and #10 or #14 in the steps above to be 47522102cebf6ab580948d146b7cc771d8e646974349d3d7b11f3e03287d0997a477d3b921037ba651485b7a2cb222191eb64a55926e62bbabfe9b5ed2a9488aad547b20428252ae


how to transmit commitment transaction (unilateral close) from lightning network channel

Generally it is preferable to collaboratively close a channel as it is faster for both sides and saves onchain fees and space. As far as I know implementations do not provide an api to the close command by which you can enforce a certain type of close. In order to achieve what you want you have 2 options:

You Patch your lightning node to provide that api yourself
You run two lightning nodes with a channel between them. Then you turn off one node and run the close command on the other. As the first node is not peered the nodes can't close collaboratively so there will happen a force close.


Can't get into my MultibitHD wallet. I have the 18 recovery words but can't recover the wallet

Since MultiBit HD uses BIP 39 for its "wallet words" (everywhere else these are known as the mnemonic or the seed phrase), you can import them into any wallet that supports BIP 39 mnemonics.

I suggest that you import your mnemonic into Electrum. Note that by default Electrum does not use BIP 39 nor does it use the same BIP 32 derivation paths as MultiBit HD.

To import, download Electrum and create a new standard Electrum wallet. Choose the option for "I already have a seed". Then enter your seed phrase. Before clicking "Next", click the "Options" button and in the pop up dialog, choose "BIP 39 Seed". On the next page where it asks about derivation, delete everything in the text box and enter exactly m/0'. Continue the rest of the wallet setup as normal. In the end, you should have an Electrum wallet with your MultiBit HD seed phrase for the private keys. You should see your Bitcoin in your wallet now.

Here is a video produced by MultiBit that shows this entire process.


Why did BitcoinEXpress plan a 51% attack on Namecoin?

This post by ArtForz on the forums explains the attack:

https://bitcointalk.org/index.php?topic=43692.msg521772#msg521772

Quote: "By exploiting the fact that retargeting ignores one block interval every period, it's possible for an attackers' fork chain to "jump backwards in time" and create lots of blocks at low difficulty without running nTime off into the far future."

This attack has been proven to work on GeistGeld (which uses 10 second blocks and 16 block retarget intervals). It was rather easy there, because of the low intervals and because the developers "forgot" to adjust other constants regarding timing and clocks. They since made it much better.

Now it seems it will be tried on namecoin, with the goal of making bitcoin more secure.


1,500% transaction fee and 3,5 months to confirm?

You're doing it wrong if your service generates thousands of dust-sized outputs. You need to consolidate your outputs as you go.

I assume that a transaction under your current model is like this:

Input (x1):
Payer Address (X BTC)

Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (100 satoshis)
Payer Change Address (X - Y - 0.00000001 BTC)

What you should do is to keep the Service Wallet Address accumulate the 100 satoshis as you go:

Inputs (x2):
Payer Address (X BTC)
Service Wallet Address (Z BTC)

Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (Z + 0.000001 BTC)
Payer Change Address (X - Y - 0.000001 BTC)


how exactly does solving nounce verify the transaction

Simply, it doesn't. The hashing puzzle is only needed for all nodes to agree on a common value. Once a block is found it is propagated through the network.
If the nounce is valid AND if the transactions in the blocks are valid then the block is accepted into the blockchain.
A transaction is valid if:

each transaction input matches a previous transaction output.
they are reedemed by their legitimate owners
the sum of values of all transaction outputs is less than or equal to the sum of the values of all inputs.

This verification is performed by bitcoin nodes. A miner is not incentivized to include invalid transactions in their blocks as they will invalidate the entire block (thus preventing the miners to obtain the coinbase reward).


the answer is :
bitcoin-cli -regtest generatetoaddress < nblocks > < address >


Those parameters are for BIP 9 soft fork deployments. For a BIP 9 soft fork with these deployment parameters, the fork will transition from the STARTED state to LOCKED_IN when 6 blocks (nRuleChangeActivationThreshold) out of an 8 block non-overlapping window (nMinerCOnfirmationWindow) signal for that soft fork.

These values are not necessary for normal operation. They are only used for soft forks, so unless you are deploying soft forks, these values don't matter at all.

  Is this value attached to the nPowTargetTimespan / nPowTargetSpacing * 4

No, it is not. There is no relation between these parameters at all.


Trying to calculate the strength of a brainwallet created with a custom diceware

you forgot to divide by 2.

7 years is exhaustive, but on average you'd expect it to take 3.5 years to crack.

10^-15 * 46656^5 seconds / 2


Is it safe to use a second-hand Trezor (like from ebay)?

If you update the firmware you are probably safe, but why take the chance? The Trezor itself (or even the included USB cable https://www.wired.com/2014/07/usb-security/) could have been corrupted/replaced by a sophisticated actor.

If someone gave me a used Trezor for free, I would throw it in the garbage. No discount would be sufficient enough for me to justify buying a used Trezor:

https://www.reddit.com/r/Bitcoin/comments/2dbjd9/trezor_tamper_proof_seal_doesnt_help_much_against/


What stops miners from no longer submitting failed hashes to the network, to reduce the difficulty and block time?

Miners don't broadcast failed hashes to the network.  They don't do anything at all with them, they simply ignore them and try again.  Nobody else ever sees them.

The way we know the network hash rate is not from observing all the hashes that were performed.  Rather, when we see a successful hash, the network difficulty allows us to infer the number of unsuccessful hashes that, on average, must have been performed to get it.

For example, the network difficulty is currently about 6.07e12.  This means, roughly, that a successful hash is required to start with about 74 zero bits, so the probability of any given hash being successful is about 2.6e22.  Thus, each time a single successful hash is broadcast to the network, we infer that about 2.6e22 hashes must have been performed throughout the entire network.  Since success is random, the actual number of hashes performed since the previous successful hash may have been significantly more or less.  But when we average over many blocks, we can come up with a reasonable estimate of the overall rate at which the network is performing hashes, even though we only ever see the successful ones.

Likewise, adjustments to the network difficulty aren't directly based on the overall hash rate.  Rather, they're simply based on the rate at which successful hashes have been observed; specifically, how long it has taken for the  last 2016 successful hashes to show up.  From the discussion above, this is correlated to the overall hash rate, but the overall hash rate isn't actually used in the difficulty adjustment calculation.

In your example, Alice's decision to broadcast failed hashes or not plays no role in the Bitcoin protocol.  If she broadcasts a failed hash (i.e. a block with an incorrect proof-of-work), it will simply be ignored.  In fact, other nodes on the Bitcoin peer-to-peer network will likely disconnect from her (a so-called "ban"), because she's cluttering up the net with useless junk.


I think your 3G speeds should work pretty well. They usually do not require fast internet connections.


How does one know which of the two blocks is accepted by 51%?

Every node keeps track of all valid blocks they receive from the network. This let's them track the height of all chains, and decide which is the longest that they have (the main chain). You don't need to know which was accepted by 51%, you just know which of the 2 was referenced by the next block mined, because its likely they the majority would find the next block first and therefore have mined on top of the one they accepted.

  What prevents two blocks to be accepted by 50/50?

There's nothing really guaranteed about the number 51% anyway, its just more likely for 51% of mining power to find the next block than the 49% (probability). If it was 50/50, it would just be a race, one would still find a new block first, that chain would be extended, and the rest of the miners would come and join the chain, leaving the old chain behind. Its highly unlikely for both to find a new block within a short time of each other, and therefore potentially extend the fork to a two block fork. Eventually the network always resolves itself though, just by probability, one will always eventually find s block quicker than the other.

  At which point is it obvious that a block is orphaned?

An orphan block also refers to a block which is received before its parent, and this can be instantly decided by a node based on whether it recognises the parent hash or not. But assuming you mean orphaned = not in the main chain, this is also instantly decided by each node, the first block received is part of the chain and the other forms a secondary chain/fork. The main chain may change to the other fork though if it gets extended faster, so you can say you know for sure after a certain number of confirmations (e.g. 6), by which time it would be highly unlikely for the other chain to be extended and overtake the current main chain.


What does the Bitcoin community need the most now?

PR is the most important thing for growth right now.  There's enough basic services that you can use with bitcoin, but not enough people to use them.


Not much documentation, but you can look at how others are doing it by examining their code. Take a look at bitcoin-abe. It is pretty straightforward.


How do I fit a normal PCI-E x16 video card into a PCI-E x1 slot?

You need a PCI Express (PCI-e) x1 to x16 Riser adaptor cable like this one:
http://www.trademe.co.nz/computers/cables-adaptors/other/auction-670675802.htm

Bear in mind that some graphics cards draw a lot of power, and I've seen photos of cables that have overheated because they couldn't handle the load. The linked one above may have solved this issue by providing a separate power cable.


What is the right way to accept bitcoin payments using bitcoind?

You should check out walletnotify: everytime a transaction hits your wallet it will fire a command or script off.

  Walletnotify will run a shell command everytime something changes in your wallet.

I like this repo.


Why is the nonce bruteforced from 0 to n while mining?

It doesn't matter which nonces you test or in what order that other than you need to avoid testing the exact same block header twice (since that would obviously be a waste of time).

It's useful to test all the nonce values since if you don't test them all you will need to update extranonce more often, though not critical.

Even though miners increment their nonces in similar ways this doesn't result in the duplication of work between miners: there are a myriad number of differences between the candidate blocks miners attempt, foremost being where their reward is paid. (And pooled miners that happen to pay to the same place get different extranonce ranges assigned by the pool).  As a result there is never any work duplication across miners unless something is embarrassingly broken.

Starting at 0 and incrementing until the maximum value is simply a convenient way to change the nonce that cannot duplicate and minimizes extranonce updates. Many devices assign distinct ranges to different chips, and so don't simply increment in a simple 0 to 2^32-1 manner.

A mining device could save a negligible amount of power by changing using a linear feedback shift register instead of an adder, but no one seems to have bothered with that optimization.


Is there anyway I can be notified on my phone when I receive bitcoin?

Yes.

Many wallet applications support mobile notifications, either through native notifications, SMS or email. CoinBase etc. populars should do this.

Furthermore if you know Bitcoin addresses some third party services like block.io can be used to send notifications when a certain address receives a transaction.


Do unconfirmed transactions expire after some time?

In addition to Mark S.'s answer, since Bitcoin Core 0.12 there actually is an expiration in the mempool, which evicts unconfirmed transactions after N hours, where N is set by -mempoolexpiry, and defaults to 72 hours.

This is not a reliable feature, as wallets (and really, anyone) can rebroadcast the transaction, but helps keeping the mempool fresh.


I'm mainly on a Windows system. What are some advantages and disadvantages of setting up Bitcoin-Qt in a Linux virtual machine?

Duckx, I think you have a good idea.

Well for one thing -- using a linux VM is much better for security.
You are essentially using your windows machine for browsing the internet / email and your linux machine for only bitcoin banking.

All it takes is someone to compromise a bitcoin related website and you could be out of your bitcoin holdings.  With your wallet.dat running in a Linux VM if someone compromises your windows machine they won't be able to easily steal your wallet.dat and keylog your password, etc.

If you're not using the Linux VM for Bitcoin banking, you can have it turned off!

It's trivial to encrypt your entire linux HD.

Linux is inherently more secure out of the box than Windows, and with a few tweaks, extremely secure.

Technically though, if someone compromises your Windows machine they could gain control of your vm and get to your bitcoin assets.  This type of attack though is extremely rare and would have to be personally targeted rather than some worm looking for wallet.dat files.

Almost all major Bitcoin applications are developed on linux/osx so you will be in good shape.

As for a performance hit... you won't even notice it.  Linux doesn't take much overhead to run at all.

Finally, when you transfer the BTC to your linux machine, do not transfer the wallet.dat just create a new wallet on the VM and send your BTC/LTC whatever via the network.  This way you don't have an unsecured copy that could be stolen.


Bitcoin doesn't know countries. If you want to have 10'000 USD exchanged for Japanese yen, you can buy 17.42 BTC on a US bitcoin exchange, transfer the money to the account of a Japanese bitcoin exchange typically for free (since you can send the money in BTC from one exchange directly to another one and both typically doesn't have costs attached), and exchange the 17.42 BTC for Japanese yen on a Japanese BTC exchange.

Both exchanges will probably take about 1% of the money exchanged in fees, so it's still really expensive unless you find exchanges with low fees or constant fees regardless of the amount of money exchanged (so the costs don't scale with your rather large amount of money).

You can find bitcoin exchanges here or simply by googling.


That is not how bitcoin works. You can't just "add" bitcoin to an address without a valid UTXO. There is not a minimum number of transactions required to create a block. A miner can create a block with no transactions included if they wanted, so the sending back and forth idea makes no sense. Calculating the magic number isn't something you can do on your own, all the other miners in the world are racing to solve for the same block, and once they do, you need to update your equation to solve for a new magic number. I think you need to do a bit more research on how bitcoin works.


How can I use Bitcoin to send a remittance payment to someone non-technical?

One way to do this is to perform a three-way transaction where the person sending the remittance (the bitcoin seller) transacts directly with the person buying bitcoins in the remittance destination country.  The cash being paid for the bitcoin transaction is simply just being handed over to the family member rather than to the party selling the coins.

Because there are a number of risks with person-to-person trading, those risks can become even greater when the two parties are trading remotely.  For this reason, a trust history will help lessen the risk.

LocalBitcoins maintains a directory of those willing to meet face-to-face and pay cash for bitcoins.  They also have a method called "LocalBitcoins Transactions" which is simply an account-to-account (A2A) transfer method so that the buyer of the coins doesn't need to wait for a Bitcoin payment transfer
to receive confirmations.  Additionally, those bitcoins can be released and the buyer doesn't need wi-fi or any other network communications other than mobile phone or SMS/text messaging when completing the in-person transaction.

Here would be the steps:

1.) Bob, located in the U.S., wants to send $200 worth of value to his mother who is located in Cape Town, South Africa.  Bob looks through the ads on LocalBitcoins and finds a buyer offering to pay a fair price and has no complaints showing in the trading history. Bob places a sell request in response to the buyer's ad and funds the transaction with the amount of bitcoins.

These coins are not sent to the buyer, but simply are reserved for this specific transaction.  Either Bob or the buyer can cancel the transaction and the Bitcoin funds are returned to Bob.

2.) Buyer contacts Bob and arranges the time and place to meet.  Bob explains the three-way transaction and how the cash will be picked up his mother.  Buyer agrees to this approach.

3.) Bob provides instructions to his mother to meet the buyer at a certain location and time.  Bob's mother needs to only bring her mobile phone.

4.) Bob's mother arrives at the buyer's location and notifies Bob that she has arrived and that the buyer is there and has the $200 worth or Rand in cash to pay for the transaction.

5.) Bob releases the bitcoins that were reserved for the transaction.  In return, Bob is given a "verification code".

6.) Bob tells the buyer (either in a text message or by voice) the verification code.  The buyer now can trust that the bitcoins were transferred and hands over the cash to Bob's mother.

7.) Bob's mother notifies Bob that the $200 worth of Rand in cash was received.  Bob uses the LocalBitcoins reputation tracking to leave favorable feedback for the buyer, and the buyer does the same in return for Bob.

The transaction has then concluded.  This transaction can be concluded at a lesser cost than the Western Union transaction.

Some buyers will even offer to do the traveling to deliver the funds in-person directly to the remittance recipient, without having to arrange a meeting.


Need help with encrypted wallet.dat. I can't access it with my expected pass-phrase

As a follow up I was able to discover the actual passphrase by using the ruby script from this thread https://bitcointalk.org/index.php?topic=85495.

See my post # 312 for the details if you need help solving this kind of problem. The folks in that thread are very helpful.

Much thanks to all who helped. It was a stressful and frustrating experience - from which I learned a lot. :)


Fictional characters. Cryptography (and other) books use names like that often.

http://en.wikipedia.org/wiki/Alice_and_Bob


Hash of backed up wallet file not the same as hash of wallet currently in use

The wallet file contains the hash (and more) information about the tip of the chain it has been synchronized to. This means that generally when loading a wallet into a running node, it will be modified every time a new block comes in.

Furthermore the wallet file also contains all transactions affecting the wallet balance. If you sent or received any transactions, that too will inevitably modify the wallet file.


I created my own crypto coin. Do I have to keep my node running all the time?

You really should not be using your own altcoin if you don't know the answers to these questions.  If you just want to experiment, you're welcome to use Bitcoin's testnet or regtest mode.  However, here are the answers anyway:

Somebody has to keep a node running all the time or new users of your altcoin won't be able to download its block chain.
The more nodes you have running (on different computers), the more capacity your altcoin will have to grow its userbase.  By default, each Bitcoin Core node can handle 125 connections (normally 8 of which will be outbound).  I assume you didn't change that part of the code, so unless you expect more than about 100 users to suddenly start using your altcoin, running one node should be sufficient.

Again, running an altcoin is not something a newbie should be doing.


Is the a library for generating signatures and transactions for scrypt coins?

The use of scrypt vs SHA256 has an impact on proof of work but no impact on the signature scheme or transaction structures. The only thing that should impact you when using this library is the address prefix that differs with altcoins.

The standard address prefix for Bitcoin is 0. For Dogecoin for example it's 30. So you could reuse that same library and generate valid Dogecoin transactions just by passing that additional parameter to the pubtoaddr function like so:

pub = pubtoaddr(pub, 30)


How is the encoding of extraNonce done in the genesis block?

Looks like you're misinterpreting the code.

CBigNum is just a class that stores numbers. CBigNum(4) simply stores the number 4, and CBigNum(SHA256(block)) would store the hash of a block as a number (after all, SHA256 gives us numbers). CBigNum does what it says: it stores a big number. As it has a function that exports the number as big endian, it's useful here, and the Bitcoin source will often use it to concatenate numbers in a data stream.

Let's take a quick look at the genesis block's script, without looking at the code. Please open the relevant wiki page: Script

04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73

Part of this can be interpreted as :

04 -> PUSH 4  bytes (FFFF001D)
01 -> PUSH 1  byte  (04)
45 -> PUSH 69 bytes (The Times 03/Jan/2009 Chancellor on brink of second bailout for banks)


How to trigger port for Bitcoin client (e.g. 8333)

Bitcoin Core doesn't seem to have an option to specify the source port for outgoing connections, so you probably can't assume anything about the source port.

However, if possible, you could configure your router to look for outgoing connections with destination port 8333, which will probably be the port used by most peers.


Where can i get all the commands with descriptions for Bitcoind on my linux server?

These days the most thorough and handy guide for the Bitcoin Core RPC commands is the bitcoin.org developer reference page.


What were IP transactions supposed to be useful for?

First, it needs mentioning that this functionality has already been removed from the original Bitcoin client.

Here is the GitHub pull request removing this functionality that has been accepted 2 years ago. The wiki page you refer to seems outdated.

The only known use for IP transactions I could find is the one mentioned in the pull request by gmaxwell:

  Aww. The removal of this would mean we can't run a lottery for nodes running the most recent version of bitcoin as an incentive to make people upgrade. :)

Another use I can come up with myself would be that you could use the DNS system to create a human-readable address to your IP and use that as your payment address. F.e. I could use bitcoin.stevenroose.be and put the IP address of the computer running my Bitcoin client in the DNS table for that record. I could then tell people to send bitcoins to that address. However, this method would require a PC to be permanently running and connected to the network in order to be able to receive bitcoins.


Blockchain as a service - is this really just a replacement trusted third party?

First lets distinguish between a blockchain and Blockchain as a Service (BaaS), because they're two different things.

Bitcoin, and other crypto-currencies, use a distributed ledger in a peer-to-peer network - a blockchain. This is the original use of a blockchain. As you state correctly, the fundamental concept is that it is decentralized, permissionless and trustless. There is no central management, anybody can use it and it does not require trusting in a third party. For Bitcoin, and other crypto-currencies, the peer-to-peer (P2P) network propagates transactions, verifies the transactions as valid, and then adds these transactions to the blockchain.
Bitcoin is the first blockchain application to create a cryptocurrency. Ethereum is a cryptocurrency which is also a platform for running distributed applications (DApps).

Software corporations like Microsoft and IBM are offering Blockchain as a Service. This is something completely different than a cryptocurrency. It's closer to what Amazon provides with it's AWS cloud platform. If you're not familiar with cloud computing platforms get up to speed on that.

Looking at Microsoft's blockchain solutions and IBM's blockchain solutions you can say that BaaS provides tools, infrastructure and/or a simulated network environment for companies to develop their own blockchain applications. These blockchains may be on an established decentralized public platform like Ethereum, or it might be a private permissioned blockchain.

A private blockchain is not anything like permissionless Bitcoin or Ethereum cryptocurrencies. Comparing a private blockchain with Bitcoin is analogous to what the public internet is to a private LAN. It may use concepts like proof-of-work mining or other features of Bitcoin, but it's entirely different thing essentially. I'm not sure exactly how companies are finding this more valuable than simply using a database. Maybe there's good reason or maybe it's largely hype and wanting to get on the blockchain bandwagon.

A private blockchain would require a P2P network, but there would be a restriction on what nodes could access and interact with the network. Also the software would be closed source and not freely available. In contrast crypto-currencies like Bitcoin and Ethereum are open-source and anybody is free to participate in the P2P network.

Going back to the specific questions you had:
Does this mean that the technology provider just became a replacement trusted third party and if so what prevents them from being a weak (hackable) link which would undermine the whole purpose?

As explained already BaaS provides tools and infrastructure for other companies to create blockchain applications. There is no "Microsoft Blockchain". It's up to individual companies to create either public or private blockchain applications however they like. In general and ideally blockchain applications are peer-to-peer and decentralized.

If it is an Ethereum DApp then ultimately it would run on the public internet on Ethereum platform in distributed way without any centralized reliance on third parties. If it is a private blockchain, then it will be a hybrid of decentralized and centralized architecture and not anything like Bitcoin or Ethereum.


What is the maximum amount I can send with "sendmany()"

The maximum output amount is the full wallet balance minus any transaction fees, many inputs up to and including all that have a positive balance can be combined to create the utxo set used in the transaction.


What are the steps in building bitcoind on Mac OS X 10.6?

If you just want to build Bitcoind once then Gavin's method seems like the most straight forward. If you want to develop for Bitcoin it's worth setting up an Xcode project.

Create a blank Xcode project in your bitcoin root directory.
Create a new target called bitcoind
Drag all the files from the src folder into Xcode, make sure you have bitcoin selected in add to targets.
Remove the README, Makefiles and any other none .h .cpp

Add "./deps/include" to "Header search paths"
Add "./deps/lib" to "Library Search Paths"

Add libssl and libcrypto to your linker flags (The system ones should work fine)

In Build phases add the required libraries. Should look something like this (excluding the mysql libs)

Depending on what version of Xcode your using You might need to change the Default compile to gcc as clang seems to have problems with cryptopp, or you can just move cryptopp to deps and import the .a.

Apologies I cannot be more precise, I did write down instructions at the time but i seem to have lost them. You can build for 10.6 & 10.7 with no changes required other than setting the SDK in Xcode.


secp256k1 recovery id and how does the code work

1). from the secp256k1 code I did not find 27~34 value, all I found are 0~3; so where the difference come from?

The serialization as a 65-byte signature + recovery byte happens on the Bitcoin Core side, not in libsecp256k1. See key.cpp:
vchSig[0] = 27 + rec + (fCompressed ? 4 : 0);

2). I guess [27~30 and [31~34] such value set does not come from nonsense, but why using these two value set to map to [0~3]? Guess some tricky hidden inside--is that because of some trick on bit-level operation?

There is nothing special about it. I just picked an arbitrary offset so the signature byte arrays wouldn't be confused with public keys or other signatures. But there is no special meaning to the number 27 (and in retrospect, it's a rather strange choice).
I'll try to expand this answer later to explain the code.


Is it possible to / should one use a Lightning Network client?

If you want full functionality and have a trustless setup, you need to run your own Bitcoin node to watch the blockchain, and run an Lightning implementation (LND, c-lightning or Eclair) on top.

LND uses either BTCD or Bitcoin Core (since v0.4?)
c-lightning uses Bitcoin Core
Eclair uses Bitcoin Core

But you cannot run a full node on your mobile phone, therefore the mobile Lightning node/wallet needs to connect to a remote Bitcoin node. This could probably be achieved using current SPV, but this is bad for privacy & I am not aware of a mobile app that does this. In the future, a different method (Neutrino) will be used for this purpose, which is being tested on testnet.

You can already use the Eclair Lightning wallet on your (Android 5+) phone. Not sure how they connect to their remote Bitcoin node. This app also supports opening a channel to a random node.

For the full LND node, no config is needed, as this node has an "autopilot" feature that opens and closes channels automatically.


Software for mining Quarkcoin on 32-bit Windows

I think this is the right place where you can find the information bitcointalk


What is a fee market? Does it mean that blocks should be full, esp. after several halvenings?

The fee-market refers to the tension between

1) users who want to have their transactions confirmed as quickly as possible and ...
2) miners, who can only mined blocks with a fixed confirmation capacity (1mb, 4mWeight).

Naturally, it is in the interest of a miner to construct a block to mine from the mempool which results in the maximum block reward for the miner.

So when blocks are full, this tension between demand for confirmation and limited supply of block space will be resolved at a certain price. At a given price, there may or not be a miner who is willing to include a given transaction in its next block. If not, one simply needs to observe the (clearing) price at which transactions are being confirmed.

The fee-market is therefore between confirmation-seekers (users) and confirmation-providers (miners).

If fees rise because blocks are full, certain transaction amounts with Bitcoin will become unfeasible, because the fees in relation to the transaction amount are too high. So the remaining transactions will naturally be of higher amounts which still justify the market fee price. As long as confirmation capacity is limited and fixed, this will remain true.

This also has nothing to do with halvenings. The inflation/subsidy schedule obviously contributes to a miner's reward, but it independent of any transaction demand, and represents an initial mechanism to distribute coins.


Does the BFT solution from lamport guarantee liveness?

Lamport et al's paper describes multiple problems, each with a unique situation. Liveness is solved for all of those situation as long as the network is synchronous. The original paper doesn't attempt to solve for asynchronous networks, and in fact later work proves that it is impossible to solve consensus in asynchronous networks (FLP).

A latter paper figured out how to guarantee liveness in partially synchronous network (PBFT).

So the accurate way to restate your two bullets:

Yes, it does guarantee both liveness and safety as long as 2/3rd +1 are honest and there is a known maximum to the delays (aka the network is synchronous).

The intuition on why asynchronous networks make the problem hard is that an honest node A who has yet to receive a message from a different node B can't be sure whether B has decided not to vote, or, if B does plan to vote eventually.


What happen when 2 transactions with one doublespending the other reachs the same block?

Which is the transaction is going to be rejected ? The first one with a slightly lower fee than the second or as it’s the same block, the second one ?

Generally speaking, miners will choose the transaction that has the highest fee, but they are not obliged to.  In fact they don't need to mine any of your transactions if they don't want to.

  Both have very high fees so they are selected by miner to be included in the same block.

No, the miner must choose 1 or zero not both, otherwise the block they create will be invalid if it contains a double-spend.  Invalid blocks will waste the miners time and money as they will be rejected by the network.

  And where is the code in Bitcoin core handling this ?

Sorry, can't help with specific location.


What would be the easiest way to test the submitblock method?

regtest is the test network best suited for this kind of testing. While it does still have a PoW requirement, the work required is basically negligible. It also does not do retargeting so the difficulty does not change. This allows you to create blocks at will. So you can use the regtest network option in order to test that your code is creating blocks correctly.

Should I try to remine the genesis block, or should I try to create my own blocktemplate to be mined? And how could I do this?

As all of the alternate networks available have genesis blocks, there is no need (nor way) to remine the genesis block. You should be creating new blocks that build on top of the existing chain. Since regtest is a local private network, all it has is the genesis block and you can add blocks on top.
You can either create your own blocks from scratch, or use the getblocktemplate RPC to get block templates that you can use. This will still work on regtest. The only caveat is that you need to generate at least 1 block after you start the regtest node in order for getblocktemplate to work. There is a generatetoaddress RPC built into bitcoind so that you can do that. This RPC will mine a new regtest block with the coins from the coinbase going to an address of your choice.


mSIGNA creates a change address for you. You do need to tell it what fee you want to pay - we are working on adding better automatic fee estimation, but for now you need to specify it yourself.


Here is the endpoint where trade fees along with order_id and fee_currency are included https://api.bitfinex.com/v1/mytrades

Array
(
[0] => Array
    (
        [price] => 0.53018
        [amount] => 20.0
        [timestamp] => 1539786993.0
        [type] => Sell
        [fee_currency] => USD
        [fee_amount] => -0.0212072
        [tid] => 301116948
        [order_id] => 18151111432
    )

[1] => Array
    (
        [price] => 0.5317
        [amount] => 20.0
        [timestamp] => 1539786941.0
        [type] => Buy
        [fee_currency] => IOT
        [fee_amount] => -0.04
        [tid] => 301116560
        [order_id] => 1815111391
    )
)

This endpoint can also accept limit_trades parameter to limit the number of results returned. Then use foreach loop to get to the required order_id & retrieve the trade fee. Not sure why bitfinex has chosen to make it complicated, this information should be included with the "order status" endpoint.


how to fix Bitcoin core 14.2 on Windows 10 Home 64bit ver.

first method (if the 2nd method completely wont work):
Go the C:\Users\%USERNAME&\AppData\Roaming\Bitcoin\blocks

(no need to edit the username part)

and then delete everything in it

OR

second method (recommended and faster):
Start the bitcoin core using -rebuild or -reindex flag


Invalid p2sh transaction accepted by the network

Why did the transaction was accepted by the network despite not working as intended

The network does not check the validity of output scripts. An output script can contain pretty much any data and the transaction will still be consensus valid. But your transaction is not actually invalid. It's just like a bare multisig now, but since the pubkeys are hashes, it isn't.

Why did my input did not go to the desired p2sh address "2N7e6ZAGXoepdVYu2Y8ho7fTf6oxE3j9UwS"

You set the output script to dat_redeem_script_op rather than target_script. So the output script is actually your multisig script rather than the P2SH script you intended.

It is on the testnet but if it was not can I retrieve my satoshis on this tx ?

No. Even if you had done this correctly with P2SH, it would still be unspendable. This is because your "public keys" are actually public key hashes. However you do not use any opcodes to for public key hashing. OP_CHECKMULTISIG takes public keys so it will try to interpret your public key hashes as pubkeys and fail to do so.
If you had constructed the multisig script correctly with public keys, this would be spendable as a bare multisig. It would be spendable in the same way that a P2SH multisig is spendable except you do not provide the multisig script in the input's scriptSig.


Are BIP 100, 101 and 102 being voted on now by Bitcoin miners?

There isn't any blockchain voting for accepting a BIP: See How is a BIP accepted? and BIP0001.

Rather, the BIP is accepted or rejected on the basis of consensus. Consensus is never defined, but even if you interpret it fairly broadly, I don't think any of the three will reach consensus.

There are frequently blockchain votes about activating the new rules, but that's less of a mechanism to measure acceptance and more of a way to only deploy the new changes once enough of the network runs them that the switchover won't be disruptive.

There is a related issue, which is Bitcoin-XT, which grew out of several developer's frustrations with the process. That proposes to alter the blocksize according to BIP 101 once more than 75% of the blocks are created by Bitcoin-XT nodes. But that's not something within the BIP process.


Do you really need more than 50% mining power in order to attack Bitcoin blockchain?

A majority attack (51% attack) was given this name for a reason: in order for the attack to succeed on average, the attacker needs 51% of the hashpower.

Reading your question, I can see a misunderstanding of how mining works, in that you postulate two miners working together with 40% of the hashpower will outcompete 3 miners with 20% of the hashpower each (ie, 40% > 20%). This is false.

Bitcoin mining is a memory-less process. This means that any single block header a miner creates has an equal chance of creating a valid hash - there is no advantage to having more hashpower, other than being able to make more guesses per second. A miner does not 'make progress' towards finding a new block, each hash is either valid, or not.

An example using dice

As an example of a memory-less process, consider the act of rolling some dice.

Lets consider a situation in which each di has 100 sides, and only 1 of those sides is considered a 'valid roll'. If there are 100 such dice in existence, and each of them is rolled once per second, then probability leads us to expect one valid roll per second.

Now, lets consider your situation, in which 5 people each have 20 of the dice. We can see that, even if two people 'roll together', they will still only roll a 'valid roll' 40% of the time, whereas the other three people will roll a 'valid roll' 60% of the time, regardless of whether or not they are 'working together'.

Likewise, in your example we can see that the three miners with 60% of the hashpower will, on average, find more blocks than the two miners with 40% of the hashpower. This is simply because (20 + 20 + 20) > 40.

This may lead you to the question "then why would miners work together?" The answer is that by working together (using a 'mining pool'), a miner can expect less variance in their payout. See this answer for more info, and this answer is relevant as well.


Implementation languages of popular exchanges

MtGox - Website is PHP, I don't know what their trading engine uses
Coinbase - Ruby on Rails
BTC-e - ???
mcxNOW - C++
Vircurex - Ruby on Rails


Microsoft Azure VM selection for optimized mining

Regardless of the cryptocurrency you choose to mine, you should get the machine with the most GPUs and CPUs as you can get (GPUs are especially important). This is because most, if not all, of the hash functions used in altcoins can be and have been GPU accelerated, so GPUs will be able to mine them far faster than CPUs can. Having more CPUs allows you to get a little extra hash power from the CPU as it can still mine, just less efficiently and less quickly than GPUs.

As for what to mine, I cannot tell you. I can say that you should not mine Bitcoin as the difficulty is too high for GPU and CPU mining to ever be profitable. Bitcoin mining requires special machines called ASICs now in order to actually mine something non-negligible.


Pay to script hash address transaction not accepted by miners

Your redeem script has the length of the script prepended to it (2d), which causes the stack execution to finalize with the redeem script in the stack as data instead of interpreting it as another script.
The script interprets the 2d as if you intended to put data in the stack with a length of 45 bytes, instead of actually interpreting your redeem script as a script. Therefore, Your redeem script must start with 52 and not the legth of the script which is 0x2d.
After you delete the 2d from the redeem script, sign the tx again since this extra byte also changes the whole tx to sign.
Also, if you used that redeem script to compute your p2sh address, it is possible that you sent the money to the wrong address.


Anyone able to run Bitcoin-Qt 0.8.6 on Mac OSX 10.9.2?

Yes, it's running on my system, which is a 5 year old Macbook Pro running 10.9.2.  I have 4gb ram and a 2.4ghz Core 2 Duo.

I did have problems however trying to sync the blockchain initially.  I had a partial blockchain that I had on another computer, which I copied over.  Normally in this case the computer reindexes the block files on disk, figures out where it is, and then picks up downloading from the last point.

However, I got behaviour very similar to what you're describing.  It would go to "verifying blocks" and stay that way for a very long time.

In the end I fixed it by deleting all of my previous blockchain (I deleted everything but wallet.dat), and then let the app download the blockchain from the beginning.  It took about 4 days, but in the end it works as expected.

Didn't really test it out much, but I don't think I saw the same thing on my 20gb Mac Pro, so I think the MacBook was just too resource constrained.

Also, the new Bitcoin coming out, Bitcoin 0.90, is available as a 64 bit app for Mac OSX, so this will likely help. I'm running 0.90 on my Windows machine and it's fine.  Haven't put it on the Mac yet.


Will a paper wallet ever have format issues?

Short answer: no, there will probably never be format issues.

Paper wallets are in a better spot than audio tapes because they degrade less over time and there is no specialised hardware required to read them.  It's not that the method of how audio was stored on audio tapes has been lost to history, it's just that finding a machine which implements that method is getting more difficult.  Since the method of storage in a paper wallet is just text, it would take a pretty fantastic catastrophe to wipe that knowledge from the planet. You're right that it's important to note the specific format in which private keys have been stored.  But as long as you know that, you will always be able to recover the private keys, which are the fundamental method of bitcoin ownership.  Since the "import format" is just a method of recording these private keys, that makes your paper wallets as good as any digital one.

Long answer:  a fundamental break in the current methods of cryptography wouldn't cause any format issues, but it might cause other issues (assuming the Bitcoin network at large had enough warning to survive the problem itself.  If it happened faster than that the world would have much bigger problems than Bitcoin failure).  If this happened, it would be major news and any reasonably attentive person could ensure that your paper bitcoins are at least as safe as anyone else's.  Left ignored in this unlikely scenario, it might be possible for someone else to steal your bitcoins.  Otherwise they could be invalidated by a protocol upgrade if the network considered that preferable to mass theft (old digital wallets would be just as vulnerable as paper ones, leaving a lot of bitcoins up for grabs by motivated adversaries).

Cryptographic protocols are often eventually weakened.  But this tends to happen at least somewhat slowly (which is the main reason we use cryptography for anything important at all).  A weakening of the cryptographic protocols at the heart of the Bitcoin algorithm would have far-reaching consequences for the entire computing industry:  banks, governments, corporations, etc. would all be scrambling to respond.  You would hear about it.  As long as you followed the convention Bitcoiners eventually settled on for responding to the threat, your bitcoins would be fine.  Or the world would end.  One of those two.

Paper wallets are also vulnerable to burning in the event of nuclear holocaust or a large asteroid collision.

tl;dr: to be paranoia-level safe you would want to ensure that someone is at least generally keeping abreast of Bitcoin news.


BTC-e international wire transfer in USD from Russia

I contacted another bank and was reassured that any wire transfer from a Russian resident to any person or company could be made without supporting documents if it is under 5000 USD or equivalent.
As for the reason of the payment it could be filled with something like "transfer of personal funds"

Edit: However, the so called currency control, which is an inner bank department, demands documents anyway. Normally it's a customer agreement which could be simply downloaded from the website and some kind of a document showing that you're an account holder.


The only way to recover your coins is to get Vaultoro to do it as they own the private key. Some other services charge a recovery fee for this, others don't even offer a way to recover such funds.


how to double spend Bitcoin transaction?

Double spending is not possible because there are many miners checking the data independently and then verifying the result against each other.  The first 'spend' that gets put into the blockchain and verified is the only one that can count - if another one comes along, it is ignored.

A simple, and elegant, way to keep double spending impossible.


Possible to check who signed the transaction in a multi-sig transaction case?

Is it possible to say who signed the transaction? i.e. you can get access to the redeem script once the tx is broadcasted, and thus you have access to all 3 public keys that generated the 2-of-3 P2SH address. Arguably you can identify which public keys signed the transaction?

Yes it is possible. When a transaction is broadcast, the redeemScript and all of the signatures are revealed and publicly available in the transaction itself. It is then trivial to just check which signature corresponds to which public key in the redeemScript. You just check the signature against each public key in the redeemScript and whichever one verifies tells you which public key corresponds to that signature.

Script interpreters essentially do this in order to validate multisig spends.


You need to put the old wallet.dat in your bitcoin data directory.

The default for Windows is:

C:\Documents and Settings\YourUserName\Application data\Bitcoin (XP)

C:\Users\YourUserName\Appdata\Roaming\Bitcoin (Vista and 7)

Then run the bitcoin client with the -rescan option.

Alternatively you can run the bitcoin client with the -datadir=<location of backup wallet.dat> as well as the -rescan option if you do not want to move/backup the new wallet.dat.

The default for Mac OS X is:

~/Library/Application\Support\Bitcoin

The default for Linux is:

~/.bitcoin


Is the Lightning Network susceptible to man in the middle attacks?

Such an attack is not limited to just Lightning; it could happen with just normal transactions and normal Bitcoin usage. However performing such an attack is very expensive and unlikely. It would require A to control as much hashrate as the entire network has. Otherwise blocks will come slowly for B and eventually warn him if too few blocks are received within a given time frame. Furthermore, if blocks were invalid, B will ban A's nodes and find other nodes to connect to. A would also have to control B's internet connection in order to prevent him from connecting to other people and opening channels with people other than A.

Lastly, the lightning network has a minimum balance requirement (minimum must be kept for both parties after it has been met, but both parties do not need to start with the minimum in the channel) so B would not lose all of his money. There is also currently a maximum amount that can be put in a channel so not a lot of money is risked.


Are there any countries which currently block or plan to block Bitcoin?

It seems that Charles Schumer (D-NY) and Joe Manchin (D-WV) of the U.S. senate sought a law criminalizing it back in 2011. Guess the media moved on and the law stalled.

There are also countries like Venezuela, which criminalize exchange of a 'foreign currency', under the Foreign Exchange Crime Act. Essentially, this is so they can pretend that bolivars are worth more than they really are.

Now, is bitcoin a 'foreign currency'?

  “Foreign Currency:  Any currency, whether in coins, bank notes, bank checks and in any form, other than the bolivar, the latter being understood to be the legal tender in the Bolivarian Republic of Venezuela, as well as securities denominated in foreign currency or that can be settled in foreign currency.”

Technically, yes.

Source


Yep, you got scammed all right.  Sorry to hear about that.  As I suppose you have realized, everything the guy told you was total nonsense.

  perhaps there was some crypto-key he accessed and was then able to take the money out.

I think that's exactly right.  Blockchain.info lets you (i.e. the person with the password) retrieve and back up the private keys and wallet seed for the addresses in that account.  Having the private key for an address always allows you to spend money received by an account; if you have the private key you don't need any other passwords or anything else.  Keeping a backup of the private keys guarantees that you will have access to all funds received in that account, now or in the future, even if you forget your password, change it to something you don't know, or if the blockchain.info site quits working.

Of course, when someone else has the password and uses it to get the private keys, they get this same power, and can spend the coins even if the password is later changed.

  i think BLOCKCHAIN Wallet should plug that hole ! so it doesnt happen to more people

I don't think they should, since as I mentioned above, if used properly, it's not a hole, but a safety feature.  One of the things that many people like about Bitcoin is that it's decentralized - your control over your funds is not dependent on any one company or government.  Having backups of your own private keys is a big part of that.

  so i have changed a bunch of my passwords, etc, hoping that's the end of it. i had my cellphone listed in the verify section etc. so i went in and put in another number hoping that stops anything there

Caution.  The scammer still has the private keys, so he still has the ability to take out any further funds you might put in that account.  As you saw, changing the password won't help with that, nor will the two-factor authentication.

The best thing to do would just be to never use that blockchain.info account again.  If you still want to use the site, make a brand new account.  (There might be a way to reset the private key - I am not sure - but I would be reluctant to try that unless you are sure you know what you're doing.)


What clients use version number "2" and version number "1" in their block headers?

Bitcoin clients no longer use version 2 or version 1 in the block headers. Block version is now defined as per BIP-9, and miners use specific bits in the block version number to signal their support for specific soft-forks in the bitcoin protocol. The top 3 bits of the blocks must be 001, so the range of actually possible nVersion values is from 0x20000000 to 0x3FFFFFFF, both inclusive.


This is implementation dependent of course. Afaik every implementation will try to reconnect, so your first case works (note that your paranoid friend's Tor hidden service isn't used at all). This is common in practice, for any non-public node.

In the second case, for c-lightning the address hint will be forgotten on reconnect, so they'll try to reconnect on the public IPs. Even if we were to fix that, they'll try so the addresses including the public ones: we'd need a special option to ignore public addresses for a specific node if this were common.


Lets assume the private key is 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff

Both Bitcoin and Doge can share a common private key and use the same Elliptic Curve algorithms to synthesize public keys.

Here is a working example for how one can synthesize an uncompressed public key for Bitcoin or Doge from a common 256-bit hexadecimal encoded integer private key.

% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public -u

040d47568a5e517067a2836c3823fbc58169a7662bfae934a4d41da3e23c98d816e7202dd702ffe038147f78aee4973a581972960a1460312ffb6f3f0f13d4a52c
Here is how a compressed public key can be calculated for either Bitcoin or Doge. Notice the public key is half the size.

% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public

020d47568a5e517067a2836c3823fbc58169a7662bfae934a4d41da3e23c98d816
Computation of compressed and uncompressed Bitcoin and Doge addresses. One must examine this table to understand the version values [-v flags] that must be different for Bitcoin-based altcoins used such as Doge. Unsure if Doge fully supports compressed addresses, but is very likely to do so if the Doge source code forks are updated when Bitcoin is updated. Compressed addresses have been supported by Bitcoin for over 4 years.

% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public | bx ec-to-address -v 0

1PbStXjfDNBU6FZA2iSeisVWwCFN9GK1eQ (is a compressed address)

% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public | bx ec-to-address -v 30

DTjYRngJWn5kdFjkmJSDGdf7pKyfUnVnGg (is a compressed address)

% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public -u | bx ec-to-address -v 0

1NGoV1EGZrwM7yvUYqRC7TMBMj7ftpjR2B (is an uncompressed address)

% echo "0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff" | bx ec-to-public -u | bx ec-to-address -v 30

DSQu2GAusGqdez75HRQkfDWnErqyEB4Bov (is an uncompressed address)
Believe the answer is yes.


Checking my balance of my btc public adress outside of my Xapo account

I havent made any transactions yet but shouldnt be at least one with my original founds transferred by this company to my bitcoin address ????

No. Xapo is a service that holds your Bitcoin for you, kind of like how a bank holds your cash for you. When you deposit money in your Xapo wallet, what you are really doing is giving Xapo your money and getting a promise from them that when you want to send your money elsewhere. So the addresses that you deposited to are not actually yours; they are Xapo's and they are free to do whatever they want with that money.

When you decide to send your Bitcoin elsewhere, your Bitcoin will likely come from addresses which are not the ones that you deposited money into but rather addresses which someone else deposited money into. Those addresses are still Xapo's and they are fulfilling their promise to send the Bitcoin to wherever you specified.


Here are the mechanics for "Mastering Bitcoin" Creating an HD Wallet from the Seed using  bitcoin-explorer and this Python HMAC command.

Root Seed:

% echo "army van defense carry jealous true garbage claim echo media make crunch" | bx mnemonic-to-seed -p ""

5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570

Master Private Key:

% echo 5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570 | bx base16-decode | hmac --algorithm sha512 --key "Bitcoin seed" - | cut -c 1-64

b2a0d576b828b537688b561f2cfa8dac3602d54c62bde619ad5331e6c235ee26

Master Public Key:

% echo 5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570 | bx base16-decode | hmac --algorithm sha512 --key "Bitcoin seed" - | cut -c 1-64 | bx ec-to-public

03ca72b45eede592f059b7eaf3da13eb7d8d15aa472b6f79f74820bb22ff596186

Chain Code:

% echo 5b56c417303faa3fcba7e57400e120a0ca83ec5a4fc9ffba757fbe63fbd77a89a1a3be4c67196f57c39a88b76373733891bfaba16ed27a813ceed498804c0570 | bx base16-decode | hmac --algorithm sha512 --key "Bitcoin seed" - | cut -c 65-128

b70d675323c40ec461e0a6af603b1f135fb2af9ae753eeff18922732a73b0f05


Is my wallet at blockchain.info still mine if the website shuts down

You can import this backup to Multibit, and you are good to go, even if blockchain.info is dead. (To be honest, this is my setup as well). Remember to keep your secret safe and use 2FA.


For anyone else who's in the same situation...

I had some some fairly detailed discussions with some helpful folks on the #bitcoin-otc IRC channel and they gave me the scoop. To avoid getting hit with large transaction fees and/or revealing your name, SS#, routing numbers, etc., you really need to go over-the-counter.

In some cases that might mean doing the deal in person (localbitcoins.com) but a safer way is to use MoneyPak. It was described to me as follows: You buy a moneypack in whatever denomination you're interested in converting to BTC, and you provide the MP number to the seller. He, in turn, sends the coins. He can use that moneypack number to load his PayPal account and buy goods/services. The fee is $4.95 -- not unreasonable. And everything is anonymous.

The other point that was made crystal clear to me is that you can't just jump into the OTC community and start doing large volume transactions. The liquidity is there if you know where to look but the community has to trust you first. They even have a rating system.

I was walked through the initial steps of reserving a name, creating a GPG key, binding that to my identity, etc. etc. and will probably execute a few small-sized moneyPak-based transactions ($10, $50, etc.) and see how it goes.

Hope these comments will be of value to other new Bitcoin enthusiasts.


multiple low end miner or 1 high end miner

The money in mining is really from the increasing value of the coin you have mined. You may make mre mony just just investing in coin rather than the rig and mining but where's the fun in that. So lets get mining.

You will want to spend the least on your rig and your electric as possible. You will want to mine a coin with the most profit AND most potential. Here is what my friend and I have discovered.

Ethereum mining got exciting when the price went up. I don't think it was ever spectacular to mine. The problem is that it needs a NEW graphics card since these have 4GB of RAM or more. This causes a problem since the miners cleaned out all the best ones and all the new GPUs doubled in price.

What we found was in terms of HASH rate a HD5870 for £25 is the same as a RX560 for £160 except you are limited to NeoScrypt on the HD5870.

We found that the HD5870 was making about the same money on PhoenixCoin as an RX560 would make on Ethereum but a lot shorter return on investment.

We started simply by fitting an HD5870 into our existing PCs but we wanted more. So we got hold of the crappiest scrappiest old PCs and fitted the £5 PCIe extenders and bigger PSUs to support more cards. We hit ebay and bought every cheap HD5870 going.

We found we can use an extra PSU to drive an extra GPU with a paperclip between the green pin and the black pin to make it come on.

Your motherboard wants as many PCIe sockets as you can get. The Crossfire ones are good as they take two cards. The little PCIe x1 sockets will mine perfectly well too as long as you use the PCIe extender to fit the GPU.

No need to have a decent CPU. We're using a Celeron and an Athlon 64 with 2GB RAM and a hard drive big enough to hold a wallet and Windows 7 64 bit. Then using the NSGminer neoscrypt on PXC, PhoenixCoin. Using The Blocks Factory mining pool.

We've now got some ugly noisy mining rigs that are making us about a £1 a day and using who knows how much electric, we don't care. Calculations suggest that as difficulty rises the coins first mined will rise in value to say £100 per day. OK so we will always only ever mine £1 per day with these rigs but effectively we're mining £100 per day.

Clearly we're insane to think that would happen but then look at the insane price rises that have already happened. Mining is all down to the price rises, otherwise it's nothing.

You ain't gonna know if you don't do it and if you only dabble in it as I did in 2013 and then see "what you coulda won" then you'll kick yourself. Do get your wallet sorted and make a 'paper' backup. I came back to my BitCoin wallet that had £20 in it from Christmas to find it was £100!

So even if this is just a bubble you learn something and keep the house warm this winter. Have fun.


How much bitcoin debit card really cost?

Well, Xapo is one of the cards that enable you to convert BTC in fiat currency, in the format of a credit card, this is their fee list:

https://support.xapo.com/what-fees-are-associated-with-the-xapo-debit-card

Hope it helps!

Cheers


How can I calculate how long it took a transaction to be confirmed?

Unfortunately, at least for bitcoin and litecoin (and likely most bitcoin derivative block chains), the only way to get this information is to have a node/client listening at the time the transaction appears on the network.

Otherwise your client will simply use the block's timestamp for each transaction.

This design means that getting this information is only possible if using a third party who was maintaining a copy of the blockchain at that time, or potentially getting a dump of a trusted source's blockchain which should (I believe, although I haven't tested it myself) maintain the original client's timestamps.

Would be great if someone could confirm this. I will myself if I get the chance to test it but that might not happen any time soon.


Have I backed up my wallet sufficiently?

I suggest to use paper wallet with encrypted private key, so called BIP-38.

Fundamentally, the only way to loose the access to those funds is by physically destroying the paper/forgetting the passphrase. Note that, keeping paper safe is much easier than keeping safe wallet.dat in computer that is connected to internet.

Following guide takes 2 minutes and is 100% secure if enhanced by using computer that has never been and never will be online - can be formatted before and after creation of cold storage.

Go to: bitaddress.org
Download .zip file on the buttom of page or from GitHub repository
Extract .zip and run file bitaddress.org.html
Move your mouse to generate random entropy for generating new bitcoin address
Navigate to Paper wallet tab
Fill 1 address to generate and check BIP-38 Encrypt checkbox
Enter the passphrase (only you would know and need to remember)
Click generate, and print this on the paper
Scan the Load & verify Public key and transfer there funds from MultiBit
You do not even need to keep the paper safe now, since person who would scan the Spend QR need to know the passphrase which is only in your brain


How long do files stay on the Decentralized Data Storage blockchain when using NXT's Data Cloud Feature?

Files and any other prunable data are maintained by all nodes for 90 days by default (controlled by nxt.maxPrunableLifetime in nxt-default.properties). The minimum value is 14 days on mainnet and 24 hours on testnet.

Note that pruning is performed at the same time as derived table trimming, which
by default is every 1000 blocks, so the actual removal of the prunable data
from the database will happen with some delay after their expiration time.

A node can choose to keep prunable data longer, by setting the
nxt.maxPrunableLifetime property to a larger value. Changing this value only affects transactions received after the change. Pruning can be disabled completely by setting this property to -1.


What is the link between address and use of the UTXO?

Because the address you are using is a P2SH-P2WPKH address as you mention (sh (wpkh ())), you get the output

"isscript": true,
"iswitness": false

It is talking only about the top level (P2SH), because it is a P2SH address, regardless of what the script "inside" it encodes. It doesn't "see" the underlying P2WPKH when you call validateaddress. The only time isscript and iswitness are both true, is for P2WSH addresses. You can view the code which creates this RPC isscript/iswitness output here.
When you spend it, you reveal the script inside the P2SH. Because it is a P2WPKH script, which is OP_0 <keyhash>, that script is then evaluated as such (using the key/signature data in the witness).


How to run docker cointainer from kylemanna/docker-bitcoind on testnet

Adding printtoconsole=1 to you bitcoin.conf will activate log output to the console. With this docker logs container will show the log.


How to unstuck a low-fee transaction with blockchain.info?

this is a generic answer applying to "light" wallets - I don't know much about the blockchain.info-wallet

There are several approaches that may work.  I'm not sure which methods are most easily available for a user of a blockchain.info-wallet, but probably #0a and #2, followed by #3, #0b and #1b.
0) Wait it out.
0a) Wait for the transaction to go through.  Most likely there will be free capacity in the network after some hours, some days or a week.  In periods with free capacity, even low-fee transactions will pass.  Rarely one has to wait longer than the next Sunday evening.
0b) Wait for the transaction to be forgotten, and then create a new transaction with a higher fee.  In some few exceptional cases (notably around new year 2017/2018 and in 2021) several weeks or even months have passed without any free capacity.  The original transaction may eventually be forgotten by the network.  Some wallets will then offer to create a new transaction, Mycelium will offer to delete the old transaction, and with some luck a "double spend" will be possible - though this is very unreliable as the original transaction may be purposely or accidentally rebroadcast both by the sender, receiver and any third-party.
0c) From some wallets, the most intuitive panic action is to actively rebroadcast the transaction. This probably won't help at all, and it's the exact opposite of 0b, so it's probably not a good idea
1) Double spend with a higher fee (RBF).
1a) Using the "Replace by Fee"-protocol - this probably does not apply to you, but it's arguably the best way to "unstick" transactions.  If the original transaction is marked up with "RBF allowed", most of the network will accept a replacement transaction with a higher fee.  Not all wallets supports setting this flag, and even fewer has RBF turned on by default - for a good reason, the RBF protocol allows an unconfirmed transaction to be reverted, so using the RBF-flag is a terrible idea if you want someone to trust a zero-conf transaction.  (the RBF-feature has been removed from most Bitcoin Cash software, as they deem it both "harmful" and "not needed").
1b) Doing RBF/"Double spend" even if the original transaction was not marked as RBF.  Miners (and nodes) are supposed to ignore the double spend transaction - but you may be lucky.  You may need to use specialized software to perform such a double spend.  It may work, either because the original transaction has ended up in a "ghost-like" state where it's known by some nodes but not others - maybe some miners are unaware that you're doing a double-spend - or it may work because some miners deliberately accepts double-spent transactions as they can earn more fees on it.
2) Child Pays for Parent (CPFP). if a new transaction is made with a high fee, building on top of the old transaction, most of the miners will include the whole chain of transaction in the block they're mining at.
2a) Get the receiver of the funds to spend the funds they received on a new transaction, with high fee.  This may of course not always be possible, but ...
2b) If not all the money in the wallet was spent, the transaction will typically include two outputs, one "change UTXO" that goes back to the wallet.  If you can spend this one with a higher fee, the transaction may go through faster. Some wallets have a menu option for "accelerating" the transaction through "CPFP".  In some wallets one can manually decide what UTXOs to include in the transaction. One can also send all the funds in the wallet i.e. back to an address belonging to the same wallet, but the fee for that may become excessive as the wallet may be filled up with "dust" making such a transaction big and costly.  Electrum does support spending some specific UTXO, and Mycelium has the "CPFP" acceleration button.  If you can take out a backup seed phrase from your wallet, it can most likely be used in Electrum or Mycelium.
3) Ask the pools for help.  viabtc has their "transaction accelerator" at https://pool.viabtc.com/tools/txaccelerator/, antpool.com also has some similar service, there even exists services where one can pay by credit card to get the transaction prioritized.


Do pending transaction orders on the Ardor coin exchange or Ardor asset exchange expire?

The order remains active until you cancel it by issuing a Cancel Order transaction.  Which means you will pay a transaction fee but you will get the unused portion of your funds returned to you.


The omni layer is not a separate network or blockchain. It is simply a standardized format of transaction on the Bitcoin blockchain that uses the OP RETURN feature to move non-bitcoin assets.

In the event that your friend is able to convince GDAX to sign an Omni-format transaction using the private key for the deposit address the funds can be recovered.  Otherwise there is nothing anyone can do to recover the coins. Anyone else who claims they can and asks you for private information is trying to scam you, beware.


How to run a bitcoind on a hosting securely?

As I mentioned in the comment above, unless you absolutely need your private key to be on the server, I would recommend only storing the address for checking purposes.

I've never used bitcoind before, but the best solution I have seen for accepting bitcoin payments would be to use something like bitaddress.org to generate a huge number of address and private key combos. Upload the addresses into a database on your server, and then when a customer goes through a transaction your server can select a brand new (never before used) key  for them to pay to. Then you can use a bitcoin API like the one provided by Blockchain to validate that the correct number of bitcoins have been sent to this address, and once it confirms, you can release the product to the client.

Then, at your leisure sometime in the future, you can collect your Bitcoins from the addresses having received payments.

This method presents a number of distinct advantages IMO:

1) Private keys are never on the server, you are considerably less vulnerable to an attack.

2) No requirement to keep the entire blockchain on your server, saving space and bandwidth.

3) Funds from each client are held separately (initially) so if you had multiple sales in a short time period, you can still identify each separately (if you used one central wallet, you run the risk of confusing the payments)

4) Your central wallet is slightly safer - the client no longer pays directly to it. Important to note that this makes very little difference because they'd still need your private key, but peace of mind is nice.

I appreciate that this isn't quite the solution you were asking for, but I think it may still fit your usage case & be more secure.


Jackjack's fork of pywallet will allow you to delete a private key, reportedly.

http://pywallet.tk
http://bitcointalk.org/index.php?topic=294439.0


How does LN solve the liquidity problem?

Whoever made that example doesn't seem to understand how the lightning network works.  I think the creator of this scenario is confusing how the lightning network functions with how traditional deferred net settlement functions.  With the LN, you don't hold accounts with the people you have open channels with.  Instead, you have money tied up in the channel with the other participant.

The lightning network works by chaining together unbroadcast transactions that spend the outputs of a funding transaction on the Bitcoin blockchain.  These transactions are shared between the two parties in a channel, and form a smart contract that allocates how the funds of the original funding transaction are split.  Neither party can violate the smart contract without the other party being able to back out of the contract, or take advantage of the violating party.

In this way, collateral never really enters into it.  All the funds promised to a party in a channel are provably real.  Yes, you have to tie up funds in every channel you have open, but that's the price you pay for having the channel, and which allows you to collect fees for routing transactions between your different channels.  The more money you tie up in a channel, the larger the transaction you can handle.  It's the common tradeoff in finance where you trade liquidity in order to obtain a better investment.


How can I import public keys into armory?

It's currently not possible with Armory.

Here is the issue for the feature request. The main developer of Armory is currently preparing a big change to the whole backbone of the client. The new backbone should make this possible.

  etotheipi told me this will be possible with the new wallets format.

  (comment on issue)


Can someone explain the pitfalls of NXT Proof of Stake's potential issue of "nothing at stake"?

Essentially, PoS' nothing at stake problem is that you don't lose anything by mining. In Bitcoin, you lose the money you spent on energy to power your miners. Thus, in bitcoin mining you want to make sure you are mining on the correct chain all the time so that you have the best possible chance of your solved block being accepted by the network. In PoS coins, for the most part, there is no incentive to just mine on one chain. That is, a rational miner will mine on all chains that he/she knows about, because it doesn't cost them anything to mine on them (just a few CPU cycles) and they maximize their profit by mining on multiple branches. But since everyone mines on multiple branches, no one can come to a consensus!


If bitcoin exchanges can be "scammed" why is bitcoin better?

Because you and I are not exchanges and Bitcoin is Peer to Peer. Exchanges are irrelevant to the question whether Bitcoin is "better".

Before you start, make sure to read all the introductory material on www.bitcoin.org so you know what you're doing and are choosing the right wallet and exchange.

Some exchanges are scams. Some are not, but may go out of business at any time, just like any company. Hopefully the ones linked above are at least not scams.

Use a reputable exchange (or another method, like localbitcoins) to buy Bitcoins and immediately withdraw them to your own local wallet. Don't leave Bitcoins on an exchange or web wallet any longer than required.

I've never heard of BitNake, but just the name screams scam. Stay away.


How to retrieve Bitcoin transfer unconfirmed for 10 days

My first recommendation is for you to never use bitcoin.com.  This is a scammy site which attempts to trick new users into thinking that something called "bitcoin cash" or the ticker "bch" is bitcoin. Which it is not.
But luckily the bitcoin that you bought is the real bitcoin (often referred to as btc)
By now, your transaction has probably confirmed and already reached your wallet since the activity on the network has calmed down now over the weekend.
If not, it is usually possible to use something called "Replace By Fee" or "RBF", which increases the fee that you pay for your transaction so that it will get included in a block, and thus reach your faster.
If you are interested, consider to visit bitcoin.org to find out all the details about how to install your own bitcoin node and wallet in order to increase your security and not need to trust Cashapp for holding your funds.


Does an eBay listing that accepts Bitcoin violate their payments policy?

Under "Payment methods not allowed on eBay" we can see:

Send cash or money orders through instant, point-to-point cash transfer services (that are not banks) such as Western Union or MoneyGram

Pay using online or other payment methods not specifically permitted in this policy

So we have two points against using Bitcoins, technically making it a violation of that policy. This question, however, would be better asked directly to eBay.


How do we know which miner or pool mined a block?

We know which miner/pool mined a block only if that miner/pool chose to identify themselves.  Most commonly, they do this by inserting their name or other recognizable signature in the block's coinbase transaction, which is allowed to contain arbitrary data.  Sites like blockchain.info can then record statistics about how many blocks were mined by which pools.

You'll see entries even for very small pools if they identify themselves.  For instance KanoPool is shown on that page as having 0.3% of all hash power in the past 48 hours.  This is because they mined 1 block out of the roughly 288 total blocks during that time, which is 0.3%.  KanoPool apparently identifies its blocks with the string KanoPool (=O.O=) in the coinbase (example).

Presumably someone at blockchain.info is maintaining a list of known pools and their identifiers.  But it may not be complete; for instance, block 552572 has in its coinbase the string BTPOOL, which is presumably the name of some pool.  Blockchain.info lists it as "unknown", probably because BTPOOL isn't in their list of known identifiers.  Maybe they'll add it later.

Other blocks don't contain any recognizable identifier at all.  For instance, the coinbase of block 552568 doesn't contain anything that looks to me like text, and Blockchain.info doesn't recognize it either.  We won't ever know who mined this block unless they choose to identify themselves someday.  (For instance, maybe the data in that coinbase is a nonce signed with some private key; then someone could prove that they mined the block by signing some other data with that same key.)


I would suggest you use Bitaddress.org

its open source and secure without the need to install anything.

or you could do that using bitcoin-php library on PHP.

vanitygen is too old and never updated almost since 7 years.

UPDATE

Sorry for the previous suggestion, I thought bitaddress.org has that function.

vanitygen library that you mentioned is too old, you better use
vanitygen-plus, it's up-to-date and supports bitcoin and alt-coins.


Why am i picking up 2 blockchains for my BTC address

I am picking up 2 blockchains, one for BTC and BCH?

There are a vast amount of numbers that are valid Bitcoin-addresses (BTC). Most of them have never been used and never will be.
Many of these same numbers are also valid Bitcoin-cash addresses (BCH) because of the way Bitcoin Cash was created.
So your address is a valid address in at least four different cryptocurrencies.

I did a transfer a week ago

That address has only ever been used in Bitcoin-Cash (BCH). It was used once last week.
That address has never been used in Bitcoin (BTC) and never had any amount of Bitcoin associated with it.

I am not sure why I can't see the funds in my Coinbase account?

If the above doesn't help, you should probably contact Coinbase and ask them for assistance.


bitcoin.com seems like an official website

No, it is in no way official. If I remember correctly it was started by a group of people who created a new cryptocurrency by forking Bitcoin, they wanted to take over the name Bitcoin for their altcoin. They are not well regarded by the Bitcoin community. Their altcoin is not Bitcoin
There are no officials and no official websites for Bitcoin. This is because Bitcoin is intended to be completely decentralised.

Is it a relatively big fee buying Bitcoin on bitcoin.com?

Your numbers for other currency exchanges suggest that this is the case.

Is that just the way it is on bitcoin.com

Yes, apparently they are a business that charges higher fees than some other businesses.

how do I get a Bitcoin wallet?

A good place to start is https://bitcoin.org/en/choose-your-wallet but also see
I am new to Bitcoin, how can I get started?


With peerblockfilters=1 hundreds of "btcwire 0.5.0/neutrino" connections are downloading TB from my Bitcoin node

It appears that btcwire is the Bitcoin p2p module of btcd and neutrino is Lightning Labs's implementation of BIP157/158 (compact client-side block filters (CBF)). I suspect that the agent identifier btcwire 0.5.0/neutrino indicates LND (Lightning Network Daemon) instances which are configured to allow or prefer CBF for synchronization. Given your experience and since CBF support was only added to Bitcoin Core in 0.21.0, it looks like the demand for the CBF network service far outstrips the few listening nodes that provide the CBF network service at this time.
I expect that the load will be distributed better as more Bitcoin Core 0.21.0 listening nodes come online.


How does createrawtransaction get the pubkey hash from the provided address?

I think I can answer my own question...

I just saw the code of createrawtransaction and what it does is a Base58 decode, remove the checksum and network bytes and it gets the pubkey hash.