inquiry about Transaction I sent 0.027 BTC over a day ago with the transaction number 254d1352749e9a18effecbd6d340479d75ca4500e2da8eda1a77f51634ee3f6f

The person i sent to still says, they have not received anything yet the transaction says in my wallet it is confirmed.

What could be the problem?

Transaction was succesful. I just verified in blockexplorer https://blockexplorer.com/tx/254d1352749e9a18effecbd6d340479d75ca4500e2da8eda1a77f51634ee3f6f

Make sure you sent this to the correct address. If yes, then ask the recipient to check in a blockexplorer. That's enough.


Error while send transaction: Data push larger than necessary Looks like transaction decodes fine. But when I use sendrawtransaction I got

Data push larger than necessary

What's wrong with this tx?

bitcoin-cli -testnet decoderawtransaction 020000000149d4a5f520ded6fa94f79cd268f0334baeec9a7732c9d946d1cdee58d81e7aad00000000020101ffffffff01904c96000000000017a914f45d94733d430261962932e0c847075195916a048700000000
{
  "txid": "1bbf569b281f2cd9d948e4273120a9bc3bb2c21e31bc9786682c0a22d8feb76c",
  "hash": "1bbf569b281f2cd9d948e4273120a9bc3bb2c21e31bc9786682c0a22d8feb76c",
  "version": 2,
  "size": 85,
  "vsize": 85,
  "weight": 340,
  "locktime": 0,
  "vin": [
    {
      "txid": "ad7a1ed858eecdd146d9c932779aecae4b33f068d29cf794fad6de20f5a5d449",
      "vout": 0,
      "scriptSig": {
        "asm": "1",
        "hex": "0101"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.09850000,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 f45d94733d430261962932e0c847075195916a04 OP_EQUAL",
        "hex": "a914f45d94733d430261962932e0c847075195916a0487",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2NFXJy8mvz7ZiT4VVN29xPGC38hTygd3AyJ"
        ]
      }
    }
  ]
}

Your scriptSig uses a data push to push 0x01 onto the stack. It could use OP_1 instead.


Python library for Multisignature HD wallets Is there is any python library is available that allow creation of Multisignature HD wallets ?

Python bitcoinlib maybe? See: https://coineva.com/create-multisig-wallet-bitcoin-python.html


Why are redeeming inputs themselves scripts? When redeeming a UTXO it is necessary to provide certain values such as a public key and a signature. These values come in the form of a script.

First, the value providing scriptSig script runs. Whatever is left on the stack is fed into the script from the UTXO (scriptPubKey). So what actually runs is pieced together from the UTXO and the redeeming script.

Why is scriptSig a script and not simply a list of serialized values? Is there a use case for providing a script that is more than just a series of OP_PUSHDATA?

Don't think of them as separate scripts, but rather as 2 parts of the same script.  The software executes both scripts using the same stack, so it's like they were concatenated and run as one.  The advantage is that it's the same code that executes each script.

However, you are correct in suspecting there is no reason to have anything other than serialized values for scriptSig, at least with most scripts.  With a stack based language such as Bitcoin's script, there are no variables or memory allocation.  The only way the results from an earlier part of the script can affect the rest of the script is to push values to the stack to be used as inputs of other operations.  This means it is pointless to perform any operation in scriptSig other than pushing values to the stack.  As such, transaction inputs that use operations in their scripts are considered non-standard.

The exception to this rule is the multisig script type, which needs to push an extra value onto the stack due to an unfortunate off-by-one error in OP_CHECKMULTISIG.  Even so, the OP_0 or OP_FALSE that is used in a multisig scriptSig only pushes values to the stack.  That is all a scriptSig should ever do.


How does the Bitcoin Standard Client wallet encryption work? I encrypted my wallet using Bitcoin QT, then closed the application. When I restarted Bitcoin QT, it did not ask for the passphrase. But I could still access the wallet.

How is it possible to access an encrypted wallet without the passphrase?

Does it save the passphrase somewhere?

What is the purpose of encrypting a wallet and not requiring the passphrase?

If you re-install Bitcoin QT do you need to enter the passphrase?

What if you transfer the wallet.dat file to another computer? Would you need the passphrase to access it?

Do you need the passphrase to access a backup of the wallet file?

Do you need the passphrase to access a copy of the wallet file?

I searched and did not find basic information about using Bitcoin QT. Is there documentation somewhere?

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

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

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

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

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


How can I set the port of bitcoind to run Armory through Tor? I'm trying to set up Armory with Tor by directing all Armory communications to port 9150 which is the one that I have been told my Tor browser uses.

Before I start Armory or the Tor Browser, I activate bitcoind with the terminal command 'bitcoind -proxy=127.0.0.1:9150'. But when I then start Armory, it tells me that I must shut down this instance of the program and allow Armory to start it instead. OK, but there seems to be no way to inject the command line switches into the version Armory starts.

If I disable the the Armory checkbox 'Let Armory run bitcoind in the background' then it does not give me that objection message but instead never goes online even if I have started bitcoind manually.

There is another thread on this subject but, since I am new here, I don't know if I can just attach a new question to an old thread or must post a new one.  So, I decided to post a new one, sorry if that is not the correct procedure.

And, to address the issue of a Wiki brought up in the older thread, the problem seems to keep changing because the functions of Armory and Tor keep changing. For instance, I can't run Vidalia on my system because I run Ubuntu 12.04 and Vidalia is not available for that version. I must run the Tor browser instead to get activation of the Tor network. So perhaps a Wiki would be good.

Having never tried this myself, I can't answer it with my own personal experience.  But there is a thread with input from several people on a question pretty similar to this in Bitcointalk: https://bitcointalk.org/index.php?topic=155717.0  That thread may answer your question, and if not, feel free to ask followup questions there.  (There used to be a requirement to be in the newbie forum for a while, but this requirement has since been removed, so all you need to do is create an account on bitcointalk to post questions.)


Bitcoin full node running on Synology not visible to network Last week I bought a Synology (918+) and starting running a Bitcoin full node (https://hub.docker.com/r/kylemanna/bitcoind).

To check whether the Bitcoin node can be found by the network, I checked on bitnodes.io with my external ip. Unfortunately my Bitcoin node is not reachable. I have forwarded ports 8333 - 8334 on my router. Checking whether port is open on canyouseeme.org, it gives as reason 'Connection refused'.

Another thing which confuses me is the following: if I check the logs, it gives the following (snapshot):

2020-05-14T11:01:13Z UpdateTip: new best=00000000000009b091d2696ccfceae650b7f7a4fd8a9fd1893598647b9a886b4 height=1744386 version=0x20000000 log2_work=72.438235 tx=56041013 date='2020-05-14T11:00:46Z' progress=1.000000 cache=3.7MiB(28196txo) warning='22 of last 100 blocks have unexpected version'
2020-05-14T11:03:14Z UpdateTip: new best=00000000000006d99735a74bae0c3bba509d56af9f8a01595099533c9bc34e6c height=1744387 version=0x20000000 log2_work=72.438236 tx=56041054 date='2020-05-14T11:03:13Z' progress=1.000000 cache=3.7MiB(28220txo) warning='22 of last 100 blocks have unexpected version'

What my understanding is that height is the block height. How can this be height=1744387 when we're currently around block height 630335? What am I missing here?

Please note that I am both new to running a NAS and a Bitcoin full node, so any help is appreciated!

That is the block count of testnet: https://live.blockcypher.com/btc-testnet/. The Docker script automatically generates a bitcoin.conf configuration and launches bitcoind. Somehow testnet=1 got set in bitcoin.conf or bitcoind was run with -testnet at the command line.


Sending bitcoins to myself If I send bitcoins from my wallet to an address I created in my wallet, will I get more than 1 confirmation eventually?  And do I have to wait for all the block to be downloaded to my wallet so I can get coins sent to me?

Yes and yes. Nobody other than you knows that you are sending to yourself since they can't see any connection between two bitcoin addresses. So it will be just like any other transaction. If you want fast confirmation you should include a fee.

And if you are using bitcoin-qt then it's always downloading blocks automatically. The latest transactions are contained in the latest blocks so it will have to download them before it realises that you have the coins. You don't have to worry about this since it is all automatic.

Edit: To clarify the second question you can always receive coins no matter what. But to see the latest receipts in your bitcoin-qt window and to spend those coins you have to be in sync with the network.


Paranoid Merchants on double spending How can merchants be alerted of Double-spending attacks? Let us take a hypothetical case where a merchant offer a BTC deposit wallet to his users, User deposits Bitcoins and it's credited to his account on 6 confirmations. Let's say, theoretically, the attack has been pulled off and he got his bitcoins back + the funds on the wallet remained as the database haven't been updated due to no alerts of any double spend attacks.

Question regarding this scenario:

How can merchant be alerted of any double-spend attacks ?
Procedures to consider in the time of the attack ? e.g Shutting down servers to avoid confusion and recheck balances to avoid dead ends on user withdrawals
How safe is it to run an out of the box Bitcoin Daemon?
Will Bitcoin XT be alerting on any double spend transactions that occurred no matter how the attack succeeded ?
Is it Okay to host a high bandwidth and Intensive website along with a bitcoin daemon?
If a double-spend attack is pulled off, how to manually verify transactions via the bitcoin daemon and how to know how much amount lost ? Will the saved transaction hash can be re-usable to obtain info about the transactions using gettransaction?
How Unlikely is it to pull of an attack to a website that credit users on 6 confirmations?

:::UPDATES:::

I've read most of the answers and seems nobody is able to answer this question:

If a double-spend attack is pulled off, how to manually verify transactions via the bitcoin daemon and how to know how much amount lost ? Will the saved transaction hash can be re-usable to obtain info about the transactions using gettransaction?
Will the attack be able to pull off after 48 hours?

How can merchant be alerted of any double-spend attacks ?

Running their own daemon will achieve that.

  Procedures to consider in the time of the attack ? e.g Shutting down servers to avoid confusion and recheck balances to avoid dead ends on user withdrawals

Any backend services run by a merchant need to be able to handle block chain reorganisations anyway! They happen normally, randomly, and without malice. Shutting down is obviously not an option for an event which happens more than once a day. Not handling this behaviour will open the merchant up to rampant theft.

  How safe is it to run an out of the box Bitcoin Daemon?

Reasonably, the daemon is generally considered to be safe and is written in a language that is normally considered to be safe (C++). However, there have been potential code execution problems due to OpenSSL library and miniupnp. A good node would be at a minimum in a different user account, not not different hardware from production services.

  Will Bitcoin XT be alerting on any double spend transactions that occurred no matter how the attack succeeded ?

Bitcoin XT is irrelevant. The Bitcoin Core software does not handle alerting you to this, however the best canonical chain changing makes it fairly obvious through the RPC interface.

  Is it Okay to host a high bandwidth and Intensive website along with a bitcoin daemon?

No. Bitcoin Core is extremely intensive on CPU, IO and memory. It is an extremely harsh test of hardware and will frequently find underlying issues like disk and RAM failure better than any other test- at the cost of your stability. You don't want a vulnerable web server next to something storing money.

  How Unlikely is it to pull of an attack to a website that credit users on 6 confirmations?

Perhaps unlikely.


Is every copy of the blockchain the same? If I have an error within file should I be able to copy this file from a backup and reindex chainstate? I recently moved the first 2000 files of my blockchain from the SSD to a HDD. The HDD gets mounted in /mnt/ext.
A symlink per file is then put into blocks that points to the remote files. So my blocks folder is still on SSD, but the files are on HDD.
I tried a bitcoind -reindex-chainstate to be sure everything still works but now it is giving an error:
2020-11-26T12:52:24Z ERROR: ReadBlockFromDisk(CBlock&, CBlockIndex*): GetHash() doesn't match index for CBlockIndex(pprev=0x44288c0, nHeight=255, merkle=4309bfeed77a70f309da08bcf8948906b9cc26120c0b0ef86e0ac67284bbd79e, hashBlock=00000000d0a75c861fabf9ff7b92022f60e4afeed9331fe5aa073d8e4706fe3c) at FlatFilePos(nFile=0, nPos=58808)
2020-11-26T12:52:24Z *** Failed to read block

Now I have several questions. I think nFile=0 means that the block is in blk00000.dat and rev00000.dat. Am I right?
So I copied this file again from a backup of the blockchain. This is from a second node. But I would suspect the files are the same, right?
But I get the exact same error at the same position - even with a new -reindex-chainstate.
I can see in the log that all blocks up until number 254 get indexed but each time it fails on block with height 255.
I think those old files contain always the same blocks. How can it be 254 blocks are correct but it fails on the next one?
Could this simply be a problem of the mount?

EDIT: I am currently -reindexing. In this case the files I already have linked to from my blocks folder get used like this:
Reindexing block file blk00000.dat...
Loaded 119964 blocks from external file in 133291ms

Apparently, the first file contains 119,964 blocks. So when I have an error with height=255 it should definitely be in the first file.

So I copied this file again from a backup of the blockchain. This is from a second node. But I would suspect the files are the same, right?

No. Blocks are downloaded out of order, but are written to disk in the order that they are downloaded. So the block index (which states where each block is located) will be different for every node because every node will likely have the blocks stored in a slightly different order.
Furthermore, if your node has received stale blocks, those stale blocks are also stored on disk and have an entry in the block index. Not all nodes will have the same stale blocks, and they may not be stored in the same order. Newly synced nodes will not have stale blocks from before they were synced, and often times stale blocks become stale due to propagation delays, so a node may not even receive a stale block to store.
You can't just copy individual block files from one node to another. You need to copy the entire blockchain and the block index. Otherwise you will probably corrupt the whole thing and need to redownload the blockchain.


Why did Bitcoin transaction volume heavily increase in November and December of 2011? Looking at this chart:
http://blockchain.info/charts/estimated-transaction-volume

It's clear that the amount of bitcoins moved between November 14th and December 12th of 2011 was much larger than any previous month, even compared to the big boom in September.

The number of transactions is about the same as previous months. This implies a few big transactions or generally large transactions. What is the reason for this?

Could it be Christmas shopping? People who have thick bitcoin wallets, needing dollars to buy Christmas presents? Many online retailers make half their money by selling Christmas presents.


Meaning of confirmation within n blocks? I have a hard time understanding the meaning of below sentence:

"To confirm within 48 blocks, a transaction fee of 1 satoshi/byte is required."

I have 2 questions here:

1) Does this mean that the first confirmation of the transaction will probably happen within attachment of the next 48 blocks?

2) As soon as the first confirmation is received, is it guaranteed that this confirmation will increment with all future block attachment (which is every 10 mins)?

Not sure where you are quoting that statement from. Seems to be a promise on something that is probabilistic.

1.) From that statement yes the first confirmation with happen within 48 blocks.

In practice, it depends on the current mempool size (how many transactions are waiting to be confirmed) and the transaction fee (miners are incentivised to choose the transactions with the highest fee) relative to the other transactions in the mempool. I would not go as far as to say with fee of x you will receive a confirmation in y time because at the time of adding the transaction to the mempool you might see that your transaction should be in the mempool (due to your fee) but every 10 minutes there are a block load of new transaction that are added to the mempool with higher fees.

2.) Yes, after the first confirmation the next confirmations will tick at an average of 10 minutes each (slight correction from your statement, not every 10 minutes but rather 10 minutes on average).

To elaborate, if there is x hash power in the network AND the network sets the difficulty to find a block then probability dictates 1 block every 10 minutes. However, if there is additional computing power that joins the next then the time (on average) to find the next block will be <10 minutes... at least until the network readjusts the mining difficulty.


How does Bitcoin Core manage its peer nodes? Is it possible to let it automatically switch to faster nodes? It's usually frustrating when my Bitcoin Core full node is syncing, especially just catching up from merely several hours/days ago.

I wonder how does Bitcoin Core manage its peers? Will it disconnect with slower nodes, and then turn to faster ones?

I once heard of the eclipse attack issue. However, as far as I know, Bitcoin Core syncs the block headers first, then it will always download full block data. It doesn't seem to hurt if Bitcoin Core could behave in such way (switching to faster nodes) when it's downloading blocks.

EDIT: According to my rough observation, fast nodes often seemed to be "stuck", as long as slow peers were still not disconnected, in other words, manually disconnecting slow peers often seemed to "accelerate" the syncing process.

Is that merely some sort of illusion, or a real phenomenon? Will manually disconnecting nodes introduce any risk?

One thing to note is when you're syncing the blockchain, you're both downloading the blockchain and also validating all of the transactions. So that is also a possible bottleneck on your end that could be causing a slow sync.

  I wonder how does Bitcoin Core manage its peers? Will it disconnect with slower nodes, and then turn to faster ones?

This question addresses how peers are initially discovered. If you're interested in connecting to a different node you know of, you can use the rpc to disconnectnode and addnode.

Edit: removed incorrect information


unconfirmed transaction, need help^ Someone could help me to get my transaction confirmed?
https://blockchain.info/tx/b4d0654d76c4a324da92643270b174c0439b59c42fe5f1d6d570b768f9febf89

Regards,

Try using a bitcoin accelerator:
https://www.viabtc.com/tools/txaccelerator/


Last time to send Bitcoin to Trezor before fork What's the last safest time I can send bitcoins to my trezor for the upcoming bicoin gold fork? I'm asking because I want to maximise the benefit from price fluctuation on my exchange since I'm trading.

Thankyou

Bitcoin Gold will fork at block 491407, which means that the first Bitcoin Gold block will be at height 491407. So as long as your transaction confirms before block 491407, your transaction will exist on both blockchains.


Why hasn't cold storage (offline signing) been supported by Bitcoin Core (GUI) up till now (0.19.0.1)? Is there any deep reason not to support this? Or is this merely a "good idea, but no volunteers" situation?

By the way, although Bitcoin Core had supported BIP32 several years ago, it uses hardened derivation for addresses, which makes it impossible for the watch-only side to derive new addresses for receiving/change, or used addresses to watch transaction history and final balance.

Prior to segwit doing this securely required carrying around enormous prior transactions.

Prior to PBST there wasn't a standard serialization that covered all the interesting use-cases.

It's been possible to offline sign for years using the CLI and many people have been doing so.

More recently this PR adds a GUI for doing this using PSBT: https://github.com/bitcoin/bitcoin/pull/16944


How can i double spend from my unconfirmed transaction for more than 5 days I deposited 0.042105059 BTC from my bitcoin account (1KDcKTBTLWnLUED6yMA4Huj5CfzgKfuvJF) to Livecoin.net account.
(1DaHJ3ewQ3XBDxTLFQ4U9E9C4z8w9uEvGW) about 5 days ago but it is still unconfirmed in blockcain.
The transaction has 0/3 confirmations in blockchain and still pending.
https://blockchain.info/tx/4e19db9b29df ... 756396858c
I learned that it because of lower fee. How can cancel or double my coins.
Could any miner here push my transaction for me.

1. You could try child-pays-for-parent.

Your unconfirmed transaction with the txid 4e19db9b29dffd508073dd5d67ad8096559e28ef92da0eeb28fe85756396858c has two ouputs.
I guess 1CfSS3Q6UxCinGg82gzwm1M6LfaxUFUJh8 (value 0.05739491) is your change output...
You can use that change output as an input for a new transaction where you pay a high fee. Miners will then be interested to mine that new transaction but they can only if they also mine the old one (txid above).

You may use 2x the recommended

2. Double-Spend (harder)

Use -zapwallettxes=1 as Bitcoin Core startup argument.
Use CoinControl (enable it via Bitcoin-Qt settings)
Select your "blocked" input (1KDcKTBTLWnLUED6yMA4Huj5CfzgKfuvJF from 7aa1366669c3c836d7bf7abbc9b934af62bf669a250b66ccd2d72197aeafee35 0.0995BTC) in CoinControl and do a new transaction


Does bitcoin give users credit/debit card. If yes, how do you request the card I am a new user at bitcoin so things are a little difficult for me since the website isn't specific. I wanted to know how to request a credit or debit card from bitcoin(that's if it is possible). I also have a little trouble on the site while trying to enter my full residential address.


How do I find out if an address belongs to me 1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE I believe is an old block chain address of mine

An address cannot 'belong to someone', but you could be in possession of the private key which allows you to spend from it. So if you have the private key (ie, you have access to the wallet that created that address, or a backup of it), then you can claim any coins held at that address.


Why not decrease the difficulty to increase capacity? There is a persistent debate in Bitcoin about increasing the capacity.

The popular idea seems to be to increase the blocksize from its current 1MB to push through more transactions per block. But this also risks forking the chain.

I think a much simpler idea would be to reduce the target time from 10 minutes to 5 minutes.  This would make hashes less difficult (fewer leading zeros), and basically target 2 blocks per 10 minutes instead of just 1.

I'm confident there is some downside to this idea, or it would have caught on already.  But I'm just not seeing it.

What is wrong with decreasing the target difficulty to increase Bitcoin's capacity?

One problem is that lower block times mean an increased chance of forking, which makes head of the chain, and the system, less reliable.

Another problem is that it normally takes a block a few seconds to a minute to propagate across the network. Proportionally that time becomes a lot higher with a decreased block time, giving the original miner and miners with direct connections to them a more significant lead time.

Finally, it throws off the whole schedule of when Bitcoin will be released. New Bitcoins are set to be mined past the year 2100, that would be significantly sped up, changing a lot of existing assumptions about inflation and economic assumptions about scarcity of the currency. Since the change would have to be a hard fork it would be controversial both economically and technically.


Bcoiner wallet - balance is showing as zero? please help! I sent to my wallet 450 dolars of bitcoin, and transactions are confirmed strongly 62 times, but my wallet says that I have 0 bitcoins to spent and I cant sell it!!! What to do? Whats happening? thank you so much for answers!

Whats happening here

As others have commented, the money was received by the address in your wallet but was subsequently spent.
Since your wallet doesn't show the expected balance but also does not show the spends it seems there is some flaw in the app or in the service behind it. Whether this is a malicious flaw is impossible to say.
Since you didn't spend that money, someone else must have. That suggests the wallet has been compromised or the underlying account in the bcoiner service has been compromised.
Since bcoiner support have been unable to resolve this to your satisfaction, it might be prudent to avoid putting any more money into this wallet.

The bcoiner wallet is not an app I personally would use for the following reasons:

Unresolved woe - There are several stories similar to your own on this website. All wallets have some such stories associated with them but most also have some history of such problems being resolved or being found to have a more reasonable explanation than possible theft by app developers.

Suspicious review profile = Profile of reviews on Google Play seems suspicious to me. There are many 5-star reviews obscuring 1-star reviews (mostly similar experience to yours) and not much in between. Either this is a great wallet with some flaws or somebody is submitting fake 5-star reviews in a way that Google Play doesn't detect. The developers responses to the 1-star reviews are rather uniform and unhelpful. The evidence here is very weak, but I'm inclined to be cautious when choosing software that has control over money.

Custodial? - I have seen allegations that this is a custodial wallet. I would not want to use a custodial wallet.

Not open-source - It is proprietary closed-source not open-source, I prefer open-source wallets.

In the end I suggest you make a decision based on the quality of support you receive from bcoiner developers and from the community of bcoiner users.

It may be worth searching this site for other questions about bcoiner and using that information to help you to decide what action to take and whether to select a more popular and better supported wallet app.

Appendix - Google Play reviews:

Bcoiner - too good to be true? surprisingly polarised?

Mycelium

Blockchain (their non-custodial app, not their custodial wallet service)

Bitcoin Wallet (Schildbach)

Electrum - A formerly well-regarded wallet afflicted by a security flaw and a badly received recent update?

I found it revealing to actually read the reviews sorted by newest first and get a feel for the range of feelings expressed and the variety of subject matter and writing styles. Doing this for several wallets gives you an impression of what is normal and what is not.


I've sent Bitcoin to my BCH address on Coinbase. How can I recover it? I sent Bitcoin from Binance to my BCH address in my Coinbase wallet, how can I recover it?
I have the address and confirmation from Binance.
I have contacted Coinbase, but they haven't answered yet.
Thank you!

Coinbase has shite customer service. But they're who you need to wait for. They'll either be able to access the bitcoins and send them back or credit your account, or they might give you the private key and let you do it. Not sure what their policy is. But you should use a different exchange anyway. Try ShapeShift, Bitstamp, or CryptoPay


generate wallets in exchanges like binance? I'm a Laravel developer and I have a project in exchanges field. I need to know how can I generate deposit address for per coin belongs to per user.
I want to do this in secure way and I need to best suggestions.
Is HD wallets best choice for this situation? Do all coins have HD wallets?

According to https://bitcoin.org/en/glossary/hd-protocol

Definition

The Hierarchical Deterministic (HD) key creation and transfer protocol (BIP32), which allows creating child keys from parent keys in a hierarchy. Wallets using the HD protocol are called HD wallets

So this allows you to create lots of addresses just from a Master Key

Are they secure?

As far as you don't leak your mnemonic, all your addresses are safe

Do all coins have HD wallets?

HD wallets provides you a way of managing the addresses more efficiently and easily. So coins don't have wallets, addresses managed by those wallet can hold coins

Hope this was helpful!


Question about running full node electrum wallet can you please help:

1) How can you run a full node wallet with electrum? what do you need?  Or please link me to an understandable guide for that

2) Do you have to be online always or can you set it up, fund your wallet, and leave it offline for months, and just from time to time use it for transactions?

3) Is electrum the only software you need? Or do you also need bitcoin core?

Thanks

1) How can you run a full node wallet with electrum? what do you need? Or please link me to an understandable guide for that

This probably should be a separate question.

  2) Do you have to be online always or can you set it up, fund your wallet, and leave it offline for months, and just from time to time use it for transactions?

You can use it only intermittently if you want, but the full node will need to synchronize with the chain. If you're offline for a long time this can take minutes or even hours, depending on your hardware.

  3) Is electrum the only software you need? Or do you also need bitcoin core?

Electrum is a wallet, not a node (and much less a full node). You need to run a full node (e.g. Bitcoin Core), an Electrum server that can serve Electrum clients with data from that full node (e.g. Electrum Private Server), and then connect your Electrum client to that server.


Is there a Bitcoin gateway for PrestaShop with these specific features? PrestaShop is a free, secure and open source shopping cart platform.

I am searching for a PrestaShop payment processor with the following features:

works without without third party (save commission)
gives a new address to every checkout
automatically verifies in admin/customer after N confirmations
gives wallet info in admin panel

Alternatively, is there a PHP implementation with these functions to allow coding all this?

Check this http://www.prestashop.com/forums/topic/123451-module-free-bitcoin/ it says is free and works without integrating with online payments processors


with what number do multisig addresses (non-P2SH) start? I have never seen a n-m address implemented as multisig (not P2SH). What number does it start with (i.e., regular addresses start with 1, p2sh start with 3 ...) ?

In other words, where do they fit in this table: https://en.bitcoin.it/wiki/List_of_address_prefixes?

There is no address type defined for raw multisig. If you want to send money to them, you'll need to construct the scriptPubKeys manually, or use the payment protocol (BIP 70-72).

In general, raw multisig is discouraged as it stores more data than necessary in the UTXO set (the database that all full nodes must maintain to be able to validate transactions).


Shorts, longs BTC data I am trying to use the Bitfinex API to get historic shorts,longs BTC/USD data.So, the Bitfinex gives size data with Available values: '1m', this equals last 2 hours, i need last two month at least. Trading view have all data, but i must pass the license. Have another ways to get this data?

It is fairly common for exchanges to only provide a limited amount of historical data. Tradingview and  other sites that have more historical data store it themselves on a database. With 2 hours of data you could ping the exchange API once every 2 hours adding the new data to your database each time.


Is Bitcoin centralized by mining pools? Before going to my question, I want to make sure the difference between a full node and a miner. Below definition might be too simple, but it is enough to ask my question.

A full node is to store Blockchain and validate transactions.
There are 10000+ nodes running in Bitcoin network.
A miner is to create a next block.
There are 15+ mining pools create blocks.

Then, here is my question.
UASF is an approach by full nodes to enforce miners(pools?) to trigger the activation of soft forks.
However, if a majority of miners agrees on the activation of soft forks, could they activate it? If so, does it mean that only 15 mining pools could control Bitcoin?

However, if a majority of miners agrees on the activation of soft forks, could they activate it? If so, does it mean that only 15 mining pools could control Bitcoin?

No. Soft forks requires full nodes and users to validate the new consensus rules. Miners can "force" soft forks, but that actually wouldn't do anything if no one uses or follows the soft fork rules. Since soft forks must remain backwards compatible, there is nothing that can really be done in a soft fork that would result in miners being able to steal coins or control what anyone else on the network does. Such forks would be hard forks.

Full nodes are what enforce the consensus rules, and users are the ones who run full nodes and create transactions. If no one is running a full node that enforces the soft forked rules and no one uses the soft forked rules, then it's like the soft forked never happened. Miners can't force people to follow the soft forked rules.


Why was finding a hash beginning with a certain number of zeroes chosen as the proof of work? It seems to me that the reason the proof-of-work involves finding a hash beginning with a (temporarily) fixed number of zeroes is because one can easily check whether they have solved the problem by comparing the hash they have generated with the value 2^k, where k = (256 - # of zero bits) and doing so is a relatively inexpensive operation. Also, it is easy to make the problem arbitrarily difficult up to a certain point (as well as having the difficulty increase exponentially with the number of zeros).

Are there any other reasons for why this particular problem was chosen for the proof-of-work?

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


How can I get my peer's ban score for my node? If I call getpeerinfo through RPC on one of my nodes, it gives me a list of info about my peers, including my peer's "banscore" for each of its peers.

I would like to do the reverse. Can I get my peer's ban score for my node?

Or maybe there isn't a way to do this because it would allow peers to misbehave in small ways and keep track of how close they are to getting banned.

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

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

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


Buying Litecoins Directly Is it possible to buy litecoins directly with money from an institution like Mt.Gox without buying Bitcoins first and swapping them ?

The following exchanges allow you to buy Litecoins directly:

Harborly
Crypto-Trade
BTC-E
UpBit
OKCoin (Chinese)
Kraken
Or you could find a local trader


What is the key difference between the Proof of Activity proposal and Proof of Stake? coblee (Litecoin creator) suggested a new Proof of Activity method, to complement Proof of Work, instead of using Proof of Stake (oh my!)

Can someone provide a tl;dr of what is the key problem in PoS that PoA is trying to solve, and how does it solve it?

From what I understand, Proof of Activity and Proof of Stake are methods of preventing a 51% attack.

Proof of Stake basically means that the people that hold the most coins sign the blocks that will be part of the block chain. This means that the people that have the most to lose from a 51% attack will do their best to prevent it and not risk losing their money. However, this also means that the rich users can control the network.

Proof of Activity from what I gather is a method of selecting a random peer from the entire network to sign a new block that would be temper-proof. This would mean that a 51% attack could not execute too well, as it couldn't predict who the signing peer be in the future.

The latter idea appears to be better for preventing attacks on the network, providing there are no logical problems in there. However, I have not studied either of the two methods in greater detail so I might be wrong.


resilience to sybil attack - public vs private it appears that although not totally water-proof to Sybil attacks, Bitcoin network seems quite resilient to these kind of attack Preventing Sybil attacks. Is it true to assert that permissioned or private blockchain are less exposed since there is a certain level control of the participant allowed to enter the network ?

Definate yes.

The Sybil attack in computer security is an attack wherein a reputation system is subverted by forging identities in peer-to-peer networks.

If nodes are required to proove their identity before they can join the network, just like in permissioned or private blockchains, then they will not be able to forge the identities.


so how many possibilties for 3 random missing words? I have a combination of 24 words made from 2048 words. I have 21 of these words known and in order. I am missing 3 words that can be placed in any slot from the 24. How can I work out the number of outcomes that I need to try to find these 3 missing words and where they are in the code?

You have 21 words, out of 24. Therefore, 21 of 24 slots are taken, but not necessarily correctly.
There are 2048 possibilities for each word.
The first word can go into one of any 24 positions, therefore 2048*24. The next in any of 23, and the last in any of 22.
This gives you a total of 2048 * 24 * 2048 * 23 * 2048 * 22, or 2048^3 * 24 * 34 * 22.
That's a total of 154,206,505,795,584 possible combinations. While not impossible to compute, at a reasonable rate of 100,000 attempts per second, you'll be able to try them all in just under 50 years.
This task is highly parallelizable, so you could likely cut that down significantly if you can obtain enough hardware. Even simply knowing the locations of the missing words cuts down the brute force time at 100k guesses a second to just under a day.


Configure esplora to point to the bitcoind servers ip address - Part 3 Continuing on from this post: Configure esplora to point to the bitcoind servers ip address - Part 2

Trying to run cargo run --release --bin electrs -- -vvv --daemon-dir ~/.bitcoin, but it kept saying - reconnecting to bitcoind: no reply from daemon.

The bitcoin.conf file has a rpcuser and rpcpassword set.  I have set the same username:password in in that format for the .cookie file for electrs.

Any idea why it's not connecting?

EDIT:

More details below:

I then create .cookie file in that location with the rpc username:password and then get this message: "no reply from daemon"

Have you checked the following:

do you use bitcoin rpc standard port for the network you are using? If not or not sure specify it explicitly with --daemon-rpc-addr 127.0.0.1:8332
Are you sure the .cookie file is in the default position? Try the explicit option --cookie username:password
Is bitcoind on the same machine? By default only rpc connection from localhost are allowed

If none of the above work, please post log from eletrs


Calculate transaction fee for external addresses which doesn't belong to my local bitcoin-core server? I am doing transaction on addresses which are created outside of my local bitcoin-core server using third party lib. I am having its private/public key. I am
 able to create raw transaction using "createrawtransaction" and also able to sign and send txn using "signrawtransactionwithkey" & "sendrawtransaction" but when i am trying to calculate txn fee and adding change address using "fundrawtransaction" or  "walletcreatefundedpsbt", am getting error as "insufficient fund" but i have enough unspent btc on my addresses. So how we can calculate txn fee before signing and sending txn for external addresses?

"fundrawtransaction" and "walletcreatefundedpsbt" are wallet RPCs. They add inputs and change outputs from your wallet to aim for a specific feerate for the transaction.

These operations inherently require the relevant wallet. Change addresses are generated by the sender's wallet, and inputs have to come from the wallet of the sender. If you don't have that wallet, you simply do not have access to that information.

I don't know what advice to give you except to run these RPCs on a  instance of Bitcoin Core that actually has access to the relevant wallet.

If you do things entirely manually, the fee is the difference between the inputs and outputs of the transaction. If that fee value for the transaction you have is not desirable, you'll need to create a different transaction, with either different inputs, or by adding change yourself back to your own wallet.


How do Bitcoin nodes with dynamic IP addresses maintain connections? How do Bitcoin nodes with dynamic IP addresses maintain connections? Does a node check for their own external IP every so often, then broadcast it?

Bitcoin works over the TCP layer which requires knowing the IP addresses of two ends of the connection. If one IP address changes, the connection will terminate.

In general, to manage disconnects, Bitcoin Core tries to maintain 8 outgoing connections at all times. It stores the IP addresses of every node that it knows about. These nodes can be ones it has connected to previously or ones that other nodes has told it about. When it loses an outgoing connection, it will attempt to make another outgoing connection to replace that connection.

Thus if all connections happened to be dropped due to a dynamic IP address change, all outgoing connections will be replaced by new outgoing connections from the new IP address. Unfortunately incoming connections will not be replaced and the node will have to wait for its new external IP address to be advertised again by its peers.

A node does not directly advertise its external IP address. Instead other nodes learn of its external IP address from hearing about it from other nodes that have connected to that node.


Can an attacker with 51% of hash power change old blocks? I read what an attacker with 51% of hash power can do in here and here.

However, I want to know whether an attacker with 51% of hash power can change old blocks? For example, assume the attacker has been the dominant node from today for a period of one week. Can she remove a transaction from a block which was confirmed yesterday? What about transactions confirmed one week or one month ago?

An attacker has a hard time changing the past

An attacker has very limited influence to change old blocks, because he has to replace all blocks that confirm the event he wants to change and keep up with the new ones that the network is still creating.

Example:
Say, Eve achieved to control 51% of the hash rate and wants to unconfirm a transaction from 6 blocks in the past.

To succeed, she has to provide 6 + X + 1 blocks, while the rest of the network finds X blocks.

With a hash rate distribution of 51:49 solving for X:

Eve would have to sustain control of 51% of the network's hashrate for an average of 172 blocks in order to unconfirm a transaction confirmed by six blocks.

That would be approximately 28 hours and 40 minutes. My calculation is simplifying the process by expecting a fixed block interval, as in reality, mining is a random process, it could take much longer or shorter.

Change a week of history?

For a week back, X would solve to 24,720 blocks, i.e. roughly 171 days.

How much could be changed with a week of 51% hash power?

With a week of 51% hash power, one would be able to catch up roughly 40 blocks, i.e. about 6 hours and 40 minutes.

But really?

Well, 50% of the hashing power doesn't just drop off the grid for long times without anyone noticing. If suddenly all blocks took twice as long people would start to catch on, after a few hours. I'm not sure everyone would just accept a rewrite of a significant portion of the history. As when both chain forks are public, it is easy to find out what was changed in the history, there might be broad support for declaring the attacking fork invalid, or at least somebody might be able to find out who got conned, and sue in meatspace.


Why was/is Bitcoin written in C++ instead of C? Why C++ and not C? Are there some features of C++ not present in C required for Bitcoin to function as it does?

I can see that a similar question has been asked before but I am more curious as to the specific features of C++ meaning that it was chosen for for Bitcoin's codebase instead of C (under the very large assumption it wasn't written in C++ purely as Satoshi's favourite language).

Maybe yes or maybe not, that is, there is no specific reason sometimes for choosing the programming language (This in general) especially in open source projects the language depends a lot on who is part of the project.

Surely C ++ is a ubiquitous language nowadays, just think that java and python were born from this language.
In my opinion, in first the choice of C ++ has been given a lot since the presentation of the idiom to objects, we say that C does not have the classes it is not possible to realize many techniques that are in the everyday reality for current programmers.

Then just think that in 2009 all these "Go" languages were not present.

So my definitive answer is:
"I think that in the periods when bitcoin core was released and in the previous one in which C ++ was developed it was a reference language for object-oriented programming and it was probably better to use an object-oriented language for technical reasons. as hereditary polymorphism.

I believe that this code cannot be written in C above all the transactions
look here in my fork where I'm studying bitcoin core Click me

This is just my thought, I may be wrong.

Sorry for my terrible English but I'm learning


Why the timestamp component of the block header? What is the reason for the timestamp field in the block header? Surely the nonce should be the only property that changes? Should the nonce reset to 0 everytime the timestamp changes?

The timestamp exists so there will be a permanent record of when the block was found. The timestamp needs to pass some sanity tests for the block to be considered valid.

One of the key uses of the timestamp is in calculating difficulty retargets.


how to import private key without scaning QR code I bought Bitcoins from the ATM and it gave me a receipt with a QR code.
and now after one year i wanted to scan it into my wallet, but ink on paper faded and it can`t be scaned.....
so im wondering if i can enter the private key manualy by keyboard?

Your QR code contains your private key, but yes you can recover with the private key directly if the QR code is now physically damaged.

I do not see that option for blockchain.info (which you stated you are trying to use in your comment):

https://blockchain.info/wallet/import-wallet supports QR codes Bitcoin-Qt (wallet.dat) and blockchain.info (wallet.aes.json) files.

Try one these methods instead (or choose another wallet which you prefer):

http://themerkle.com/how-to-recover-your-bitcoins-from-blockchain-info-using-electrum/

https://multibit.org/en/help/v0.5/help_importingPrivateKeys.html

https://en.bitcoin.it/wiki/Help:How_to_import_private_keys_in_Bitcoin_Core_0.7%2B


How does Bitcoin figure out what time it is? Bitcoin needs to know the current time in order to validate blocks. How does it decide that?

Note that I'm talking about the Satoshi client specifically.

It takes the median time of the other clients connected, but only
 1. if there are at least 5, and
 2. if the median time does not differ from system time by more than 70 minutes.

For specifics, we look at AddTimeData, in timedata.cpp.

Note: I have edited it down for length

void AddTimeData(const CNetAddr& ip, int64 nTime)
{
    int64 nOffsetSample = nTime - GetTime();
    // Add data
    vTimeOffsets.input(nOffsetSample);
    if (vTimeOffsets.size() >= 5 && vTimeOffsets.size() % 2 == 1)
    {
        int64 nMedian = vTimeOffsets.median();
        // Only let other nodes change our time by so much
        if (abs64(nMedian) < 70 * 60)
        {
            nTimeOffset = nMedian;
        }
        else
        {
            nTimeOffset = 0;
        }
    }
}


Credit card deposit to accout How do I deposit money to a bitcoin account from a credit card?  I just need to pay an acquaintance something I owe him and he wants it added to his bitcoin account

You will need to buy bitcoin, then send that to your acquaintance. Other option is to convince your acquaintance to accept another payment method.

Most bitcoin sellers will not accept credit card because it is very easy to lose money from chargebacks.


Which ecommerce carts support bitcoin with the biggest user base? I'm looking to start up a ecommerce solution and wanted to know which ecommerce software is best suited to accept bitcoin which also has the most community support?

For a standalone cart (no payment processor intermediary) maybe the OSCommerce cart?

Here's the full list:

http://en.bitcoin.it/wiki/Category:Shopping_Cart_Interfaces

The most widely used cart though probably is the Wordpress ECommerce cart plugin through BitPay:

https://github.com/bitpay


Wallet gone and lost recovery phrase, how to get back my bitcoins? I lost my phone where I stored my 12 word recovery phrase. How can I get back my bitcoins?

Your bitcoins are lost forever, unless you have the key. Let this be a lesson learned to always write down your keys on paper.

There are no ways to recover your bitcoins without the key.


where is the adjustment calculation for the target value in the source code? Can someone point me to the source code and explain how the average is calculated for the adjustment of difficulty that takes place every 2016 ?
Update: i have consulted with previous questions but it has not been documented properly and I am not expert so would be much appreciated.

The function is CalculateNextWorkRequired in pow.cpp L#49:

unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime, const Consensus::Params& params)
{
    if (params.fPowNoRetargeting)
        return pindexLast->nBits;

    // Limit adjustment step
    int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
    if (nActualTimespan < params.nPowTargetTimespan/4)
        nActualTimespan = params.nPowTargetTimespan/4;
    if (nActualTimespan > params.nPowTargetTimespan*4)
        nActualTimespan = params.nPowTargetTimespan*4;

    // Retarget
    const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
    arith_uint256 bnNew;
    bnNew.SetCompact(pindexLast->nBits);
    bnNew *= nActualTimespan;
    bnNew /= params.nPowTargetTimespan;

    if (bnNew > bnPowLimit)
        bnNew = bnPowLimit;

    return bnNew.GetCompact();
}

Explanation:
1. If retargeting is disabled, return the last difficulty.
2. Calculate the timespan between the last block and 2016 blocks ago
3. Truncate the timespan to no less than 1/4 of the target timespan (3.5 days) or no greater than 4x the target timespan (8 weeks).
4. Multiply the last difficulty target by the ratio actualTimespan:targetTimespan
5. Truncate to the maximum allowed target (bnPowLimit) if the resulting target is too high (very low difficulty)


How to spend from a custom P2SH script using bitcore-lib My Javascript/typescript project uses bitcore-lib. It uses Script.buildScriptHashOut to build custom P2SH outputs. How do I spend from this custom output?

I could not find anywhere on the web about it. I was hopeless until I noticed that I could, without modifying the library.
First choose a similar class in Bitcore-lib.

multisigscripthash (<== suggested) or publickeyhash for P2SH outputs
multisig or publickey for bare script outputs (don't use these, these are nonstandard)

Then copy it to a new file in your project such as this one**. Do not use typescript classes even if your project is of kind Typescript.
Then change require paths. Also require inherit from NPM. As in the boilerplates above, we need to inherit from Transaction.Input
A function such as "buildP2SHPushIn" in the example should produce the redeemscript. Remember, the last element of P2SH redeem scripts is a push of the P2SH script.
And finally use addInput instead of the higher-level function from to add inputs as shown here**

**The examples are for Bitcoin Cash, but they can be used the same way in Bitcoin. Do not copy from them, however!


Can you reset 'used' addresses that were actually never used? Bitcoin RPC command getnewaddress returns a P2PKH address from the keypool, and marks it as "used" so it will not be returned by the same RPC call again.

I'm going to be doing a lot of testing on that RPC command but will not actually send any money to those addresses - is there a way to "reset" the status of addresses in bitcoind's wallet?

afaik, there isn't.  If the wallets are just for testing, you could remove wallet.dat periodically and start over.  I guess the main reason for doing this would be if you are doing automated testing with tens of thousands to millions of addresses being created and it starts to slow performance significantly.

or you could always hack bitcoind and modify getnewaddress to return the first available address without any balance.  Or create a new API for this.


Storing scripts (smart contracts) outside the blockchain I'm following "Mastering Bitcoin" from Andreas Antonopoulos in order to understande the Bitcoin implementation.

In the chapter about transactions, he points some advantages of P2SH transactions:

  Complex scripts are replaced by shorter fingerprints in the transaction output, making the transaction smaller.
  Scripts can be coded as an address, so the sender and the sender’s wallet don’t need complex engineering to implement P2SH.
  P2SH shifts the burden of constructing the script to the recipient, not the sender.
  P2SH shifts the burden in data storage for the long script from the output (which is in the UTXO set) to the input (stored on the
  blockchain).
  P2SH shifts the burden in data storage for the long
  script from the present time (payment) to a future time (when it is
  spent).
  P2SH shifts the transaction fee cost of a long script from the sender to the recipient, who has to include the long redeem script to
  spend it.

About item 4, it still looks suboptimal to me.

Imagine that I have a firm where in order to spend the payment from customers I also have to get the signatures from at least 1 of 2 other partners. My script would look like:

2 <My PubKey> <Partner 1's PubKey> <Partner 2's PubKey> 3 OP_CHECKMULTISIG

So, for every incoming payments that I'd like to spend, my scriptSig would have to be bloated with the script above plus 2 signatures <sig1> <sig2>.

Imagine that I'll have thousands of these transactions, this would be bloating the blockchain, probably decreasing the processing capabilities of the network.

I was wondering: is there any way of mantaining these scripts as "accounts" in "script wallets" and not storing it inside the blockchain?

When there is need for validation, I could simply retrieve this script form the "wallet" and check the transaction.

How would it be possible?

First, yes you are correct in that each time you spend from the same p2sh address, you're specifying the script that hashes to that address. And yes, if you spend multiple times from that same address, you would be correct, this would be highly inefficient since you'd have to reveal the script each time and the script could be very long.

However, in bitcoin, it's not considered safe to re-use addresses. Each p2sh address should be used once, not many times like in your scenario above. In that case, it's not inefficient or suboptimal at all. That said, I suppose something like segwit could be used to store scripts off-band, but that would be a significant and complicated change for not much gain.


What is the significance of the last 5 digits of Base 58 WIF? I'm trying to understand the Base 58 WIF number. While messing around with importing on blockchain I noticed that if you change the last five (or so) digits, it doesn't appear to affect which address is imported -
i.e. i get the "This address is already present in the wallet" note.
Does anyone have any insight they could share about this?

The last 4 bytes of the WIF format is a checksum. The details can be seen here: https://en.bitcoin.it/wiki/Wallet_import_format

That's approximately 5 characters of Base58 that are essentially redundant. This is so that errors in the WIF encoded private key can be detected easily. I believe some wallets will simply ignore the checksum if it's not correct.


What does is mean to have input from multiple wallet addresses? I've trying to parse some data from the blockchain as provided by blockchain.info

My question is about transactions that have multiple inputs like this one:

https://www.blockchain.com/btc/tx/0370881edfb32d3a7059bbbec6d923add2e016c41cdc9abafd1f1c52adf3ac9e

What does is mean to have input from multiple wallet addresses?

Are each of the wallets mentioned on the left hand side here always from the same person (ie. perhaps change wallets)?
Or, is this transaction taking inputs from multiple (unrelated) people/wallets?

Are each of the wallets mentioned on the left hand side here always from the same person (ie. perhaps change wallets)?
Or, is this transaction taking inputs from multiple (unrelated) people/wallets?

It could be either. A single user's wallet might consume many UTXOs when crafting a transaction, but it is also possible for two (or more) people to supply inputs to a transaction, and they can do so without having to trust one another. So a transaction could have many potential participants, on the input side, and output side.
See:

Common input ownership heuristic info: 1, 2.
Coinjoin
BIP 174 - partially signed bitcoin transactions - Full BIP 174 text
In depth info: Bitcoin Privacy Wiki


Run a full node with multiple IP addresses I run a full Bitcoin node on a powerful server however rather than setting up multiple I was wondering if it's possible to use multiple IP addresses on one installation and one running process? Without people being able to detect it's the same node (not easily anyway).

If you can allocate multiple IP addresses to one machine (hint: you can), then yes, you can have one node bound to multiple IP addresses and serving peers on all of them. It's impossible to tell whether two nodes you are connected to are actually the same node so that doesn't matter. Note that doing this does not help the network any more than having one IP address and one node.


Address starting with 2, what mode I am in? I am using https://github.com/freewil/bitcoin-testnet-box to run bitcoind in docker to test signing of transactions.
make start tells me the bitcoind is started without -regtest flag. See https://github.com/freewil/bitcoin-testnet-box/blob/master/Makefile#L13
When I run bitcoin-cli -datadir=1 getblockchaininfo, I indeed see "chain": "regtest" in output, so both the nodes are running in regression test mode, I believe.
If I generate an address for either of these 2 nodes, I get an address starting with 2:
tester@4df64413049e ~/bitcoin-testnet-box$ make address1
bitcoin-cli -datadir=1  getnewaddress
2N4DTeBWDF9yaF9TJVGcgcZDM7EQtsGwFjX
tester@4df64413049e ~/bitcoin-testnet-box$ make address2
bitcoin-cli -datadir=2  getnewaddress
2MwxP8fyh9MFqKnZXZuqt3ZYByhLpNVoiX3

make getinfo tells me its not testnet either:
tester@4df64413049e ~/bitcoin-testnet-box$ make getinfo
bitcoin-cli -datadir=1  -getinfo
{
  "version": 170100,
  "protocolversion": 70015,
  "walletversion": 169900,
  "balance": 0.00000000,
  "blocks": 0,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1599940906,
  "keypoolsize": 1000,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "warnings": ""
}
bitcoin-cli -datadir=2  -getinfo
{
  "version": 170100,
  "protocolversion": 70015,
  "walletversion": 169900,
  "balance": 0.00000000,
  "blocks": 0,
  "timeoffset": 0,
  "connections": 1,
  "proxy": "",
  "difficulty": 4.656542373906925e-10,
  "testnet": false,
  "keypoololdest": 1599940906,
  "keypoolsize": 1000,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "warnings": ""
}

So what mode I am running these bitcoin nodes as? If I was to trust the output that its not testmode but somehow regression test mode, shouldn't the address start with 1 if its really regtest mode or with m/n if its testnet mode?
Also, when I dump the private key for any of such address and try to derive the P2PKH address from it, it doesn't match. Same code works fine with address and key taken from mainnet. What's going on?

Both regtest and testnet use the same address prefixes for the legacy and p2sh-segwit address types. Addresses beginning with 2 are p2sh, and if retrieved via getnewaddress, are guaranteed to be p2sh-segwit.
For bech32 type addresses, the regtest prefix is bcrt and on testnet it is tb. You can try fetching a bech32 address to see what the prefix is and be more sure of which network you are using.

shouldn't the address start with 1 if its really regtest mode

No, and that would be dangerous.
Both regtest and testnet intentionally use different prefixes than mainnet. You will never see mainnet prefixes in those modes.


How Segwit makes transactions smaller? What about the witness? I have seen similar questions without a clear answer. So, how does Segregated Witness make transactions smaller? I understand it removes data from the transaction hash and solves malleability ... But it adds a field called "witness", so, how does this save space?

Also (this is related and helps understand the question), how is block size calculated? Does it include the witness?

SegWit doesn't save space, per se.

What it does do is:

From the perspective of a non-upgraded node, it makes transactions seem smaller. The witness part is not recognized or considered by pre-fork nodes, so more of them can fit in a block.
From the perspective of an upgraded node, the block size is calculated differently. Less weight is assigned to witness data than to non-witness data. So for the purpose of the calculation, a SegWit transaction is considered lighter than a non-SegWit transaction. So more of them are allowed per block - but the physical data size of the block increases as a result.

SegWit was to be introduced anyway because it solves malleability etc. But it also offered an opportunity to increase the block size limit (to allow more transactions) without requiring a hard fork, and this opportunity was seized, resulting in the feature described above.


What’s the point of wannacry for exchanging Bitcoins to Monero? At first glance, exchanging Bitcoin for Monero makes sense.  But why use Monero with an exchange, which is likely to help the police? (And which did.)

Monero transactions are private only on the block explorer. The sender has a key (view key) that allows one to view to whom and how much was sent.

So, what’s the point of using Monero in that case, rather than something that would resist investigators, like Zcash ?

The sender has a key (view key) that allows one to view to whom and how much was sent.

Yes, the police have access to Shapeshift's viewkey, but they also need Wanancry's viewkey. Shapeshift's viewkey will reveal what address the Monero went to when it left Shapeshift, but where did it go next? The police will not know until they raid Wannacry's physical location and seize their viewkey. Without Wannacry's viewkey, the police can glean very little from the Monero blockchain.

You can observe the obfuscation by looking up a random transaction in a Monero blockexplorer. You will see that the receiving & change addresses are represented by one-time stealth addresses, the amount is represented by question-marks, and you can't tell which one of the 11 ring members made a monetary contribution to this (as opposed to some other) transaction.

Edit: This question has previously been answered in more detail in the Monero StackExchange site.


Why did Bitfinex choose to have access to all of its customers' private keys? These wallets were “multi-signature,” which meant they came with more than one private key to access them. Bitfinex held two keys, while the multi-sig security provider, a company called BitGo, held a third. It was more secure, in theory, because both parties had to approve a transaction before it could go through. However, I would assume it is poor practice for an exchanger to have a customer's private key. Please correct me if I am wrong.

I think that Bitfinex may have used its own customers' funds to give bitcoins to other customers. Perhaps this is why?

However, I would assume it is poor practice for an exchanger to have a customer's private key. Please correct me if I am wrong.

It's generally not a very good idea, but a lot of exchanges do this.

Let's say that a customer has Bitcoins, and wants to trade them to the exchange for dollars. If the private key is held by the exchange, this order can complete instantly - it just changes two rows in the exchange's database. However, if the customer holds the private key, they need to transfer the Bitcoins to the exchange. Getting the first confirmation for that transaction could easily take an hour.

Of course, if you aren't going to make any trades in the next hour or so, you could withdraw your money into your wallet. The problem is that not many people bother doing this.

Some exchanges, like ShapeShift, hold customer funds for the minimum possible period of time. However, they take a risk, because when they lock in a price for the customer, they don't know for certain that the trade will complete. They might buy some cryptocurrency in anticipation of selling it to a customer, but then have to sell it at a lower price when the trade falls through.

If you want to get around these limitations, you need a way to move money to and from the exchange faster. (Both Sidechain Elements and the Lightning network come to mind, but I'm not aware of anyone using either in production at the moment.)


What does cache value signifies in UpdateTip log messages? UpdateTip: new best=0000000027effeeafbf56c6c9de19f7d8f5b96227b2b4e85c6f6033220866f0d  height=221  log2_work=39.298291  tx=46374  date=2015-11-06 12:02:46 progress=1.000000  cache=3.0MiB(10114tx)

What is the significance of cache=3.0MB in above mentioned UpdateTip log drom debug.log ?

It's describing how much of the allocated UTXO cache you are using. You can adjust how much maximum memory Bitcoin Core uses for this and others with the dbcache parameter, the higher the limit in megabytes the higher the performance to a certain degree.


Is it possible to identify what online wallet service a Bitcoin address belongs to? Given a Bitcoin address or a record of a transaction between two Bitcoin addresses and a website like blockr.io to explore it, is it possible to identify what online wallet service a Bitcoin address belongs to? For example, is it possible to say that a transaction was send from a Blockchain.info Bitcoin wallet to a Coinbase Bitcoin wallet?

No, generally this is not possible.  Every Bitcoin address is randomly generated and carries nothing identifying the party that created it.

In principle it might be possible to infer something based on other addresses that sent coins to or from the address in question, if you know something about them through other means.


5 GH/s Bitcoin Miner from Butterfly Labs can mine Litecoin? I was wondering buy this ASIC miner of 5GH/s to mine Litecoin.

I want know, can I mine Litecoin with this powerful tool? If not, there any ASIC miner's that can mine Litecoin?

Litecoin uses a different proof of work than Bitcoin, so that hardware won't be compatible(it won't be solving the right problems).

One of the motivations of Litecoin was to make CPU mining viable by making it difficult to create efficient GPU/FPGA/ASIC miners, so it's unlikely that you can find specialized hardware for this purpose. I think that some GPUs do give a speedup over CPU mining with Litecoin, but it isn't as dramatic as with Bitcoin.


While creating new crypto using fork need to generate smart contract? I have 2 questions for creating nee crypto currency using fork.

1.) I have created one new crypto coin which is called mindcoin, now should i generate smart contract for deployment my currency in market??

2.) Should i generate smart contract any other languages like php or .net?? I know about solidity but it will be preferable for ethereum..

Can you please let me know about it? It is very important for me if you give answer asap.

Cryptocurrency(a new blockchain) is deployed by distributing/convincing people to use your node software. The genesis block can be considered a type of smart contract. Clever marketing has hijacked the "smart contracts" buzzword to mean hosting your code on a network that works exactly like AWS but with worse performance and higher price.
This is not an ethereum forum and nor are ethereum contracts really "smart". They rather dumbly execute the stored logic in a centralised manner. The beauty of a true smart contract is that it can be written in any language and it auto-deploys itself because it arose from a use-case. Eg, multisig


Does proof-of-work contribute directly to prevent double-spending? I know similar questions have been asked before (e.g. How proof of work prevents double spend) but I'm struggling to visualise the solution to double-spending being directly reliant on proof of work.

Imagine a miner, Bob, trying to double-spend 1 BTC by sending to both Alice and Jim.  Either he can include both transactions to Alice and Jim in a single bad block that he mines - in which case the block will be rejected even with a valid PoW.  Or he can broadcast his first (valid) transaction to Alice and let someone else mine it and then mine his own bad block later with the transaction to Jim which again will be rejected regardless of having valid Proof-of-work.  So double-spending is really protected against on the level of transaction-validation which every full node on the network performs?  Meaning PoW doesn’t really directly stop double-spending - what stops double-spending is simply the nodes being aware of previously confirmed transactions.  And the reason we can trust all transactions on the blockchain are "confirmed" is PoW?

If that's right, and PoW is more of a high-level system-wide solution, here's a final question I'm hoping someone can clarify: why can't we replace PoW with an automatic 10 minute block-addition based on a simple timestamp?  Is it because it's such a mission-critical task (involving the trust of the whole system), that unlike Difficulty calculation (where we rely on timestamps), we must find an alternative where no time value can be spoofed? (even though if it was, individual nodes would presumably be able to reject it fake times).  Is it wrong to think of Proof-of-work as basically a replacement for trusting a (hackable/spoofable) timestamp server that could regulate 'blocks every 10 minutes'.

There are multiple definitions of the term "double spending" at play here. First, there is the actual definition of double spending: to spend the same money multiple times. A simple example of this is the coin on a string in a vending machine. You put tie a string to a coin, when you put the coin in the machine, it thinks you paid, you get whatever you want from the machine, then you use the string to pull the coin back out so that it can be spent again somewhere else.

By this definition, the exchange of goods has occurred, but the money used to pay for it is used by the payer to pay for another good later. In effect, you created multiple transactions that conflicted with each other and they are all considered to be settled (i.e. final and irreversible) in the accounting system of that money.

Then there is the definition of "double spending" in the context of Bitcoin transactions. Double spending is often used to say that there are multiple unconfirmed transactions which conflict with each other. But unconfirmed transactions are not considered to be settled, so you have conflicting unsettled transactions under this definition.

The goal of the blockchain is to resolve these conflicting unsettled transactions. It's purpose is to ensure that all transactions do not conflict with each other and to make them considered settled. So to not have double spends, you need two properties for transactions: irreversible, and non-conflicting.

The non-conflicting part is handled by nodes. Nodes validate blocks and transactions. They reject blocks if they contain transactions that conflict with other transactions in that block or in the blockchain. So the thing that prevents the conflict aspect of double spends are nodes.

The Proof of Work is what allows for the irreversible aspect. It requires that miners expend time and energy in order to create a block. In order to change the contents of a block, one must expend time and energy to create a new block which conflicts with one that already exists.

The Proof of Work is also used to resolve blockchain conflicts. If there are multiple candidate blockchains that stem from a common forking point, nodes follow the one that has the most cumulative work because that chain is the one where the most energy was expended to create.

The chain part of the blockchain creates a compounding factor so that in order to replace a block in the blockchain, you must also replace the blocks that are on top of it thus expending far more time and energy. Because there are other people mining on the original blockchain, you must also be able to mine faster than them in order for your blockchain to have more work than the original for yours to be accepted by everyone else.

Because replacing blocks requires significant time and energy expenditure, one can reasonably assume that a block and the transactions it contains will never change once multiple blocks have been mined on top of it. This gives us the irreversible aspect. This is why it is said that confirmed transactions are irreversible.

  why can't we replace PoW with an automatic 10 minute block-addition based on a simple timestamp?

Because that is not decentralized. Who creates the blocks? If multiple people can create blocks like with mining, by what mechanism are ties broken? How do you resolve two different people creating different blocks? What stops someone from spoofing timestamps and replacing the blockchain with their own version?

The easiest way to resolve these is to make blocks only produced by a limited and trusted group of people. So it is now centralized. Congrats, you created Paypal, but less efficient.

The whole purpose of the Proof of Work is to allow for a decentralized system where everyone can agree on the truth without some central authority dictating what that truth is. If everyone follows the same rules, then everyone will eventually conclude on what the truth is. The use of energy expenditure in the Proof of Work prevents someone from rewriting history with different blocks because it is expensive to do so. The tie breaking of using the chain with the most work allows nodes to converge on the same blockchain. Use of the Proof of Work answers the questions I gave above without relying on a central authority.

In conclusion, the Proof of Work allows transactions to become settled and irreversible. It allows nodes to converge onto the same blockchain and makes it extremely expensive, to the point of impossible expensive, to rewrite history thus making transactions in the blockchain irreverisble. The actual ensuring that no conflicting transactions exist in the blockchain and thus actually preventing true double spends is left to the nodes that validate the blockchain.


Bitcoin Wallet Recovery Hypothetically, if you formatted over a hard drive and erased your wallet but had your private key and address written down- how would you once again regain access to your wallet?

You can import your private key into a new wallet, most wallets support private key imports. The private key is all you need to know.


Why is the block reward slightly higher than what it should be? https://blockchain.info/block-index/143685

The block reward here is 50.04 BTC instead of 50. Why is this so? I notice many blocks have this slight excess.

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

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

Miner Income =  Block-reward + Transaction fees


How much is a mining pool share worth on average? I know that mining pool shares have no value on their own, but it should be possible to find an average value based on the pool's average payout per share. This site describes the expected payout per share as ([block reward] - [pool operator's cut]) / [difficulty].

It seems to me that a share's "value" would necessarily be related to the difficulty as set by the pool--a pool with shares that are harder to find will have its users find fewer shares, making each share "worth" more. However, the equation above clearly doesn't work with the pool's difficulty, as most pools set difficulty to 1 and a share isn't worth ~48 BTC. How can I reconcile these issues to calculate the expected payout per share of a pool without knowing how many total shares are found?

Edit:

Ah, I think I've figured it out. The difficulty in the equation can be the network difficulty, because that's what makes it more or less likely that a given successful hash (earning a share) in a pool solves the block and earns the block reward. Thus, the network difficulty indirectly limits the value of a share. Is this correct?

Edit Again:

And now I'm back to being confused. If Pool A sets a higher difficulty than Pool B, Pool A's shares are worth more than Pool B's (assuming the same number of miners at a set hash rate) because they're rarer so each share will earn more at payout. How is this taken into account in the equation?

If the global network difficulty is D and the difficulty of shares in the pool is d, then the probability that a share will lead to a valid block is d/D. The reward in this case is B, so the average reward per share is B*(d/D). If the operator's average fee is f (so for example f=0.01 means 1% fee), the average reward miners get per share submitted is (1-f) * B * (d/D).


Is a miner running a full node? Is a miner just running a full node that is connected with the mining hardware? Or is there such thing as a miner node? Does it use additional software for transaction selection?

Thanks in advance!

Miners no longer run full nodes. They connect to a mining pool that gives them work to do. The pool runs a full node.

If you mine solo you'll need to run a full node but solo mining doesn't make any sense anymore because of variance. You can get a more regular income flow if you join a mining pool.


Where can I find a record of blockchain soft forks? I plan to analyze soft forks to satisfy my own curiosity: how often do they occur, are they increasing in frequency, etc. Where can I find a record of blockchain soft forks? I'd love to find a handy webpage with the data, though I am running a full node if someone can walk me through generating the data.

Thanks in advance!
Bruce

Bitcoin Core maintains a document with all BIPs that are implemented, including those which establish a soft-forking consensus change. From that list, BIP16, BIP30, BIP34, BIP65, and BIP66 have been soft forking changes.

In the two first years of Bitcoin's history, changes were made more frequently, and much less care was taken that all consensus changes were backward compatible. Most of them probably were, though.


Dealing with 15-minute transaction time limits I just started using bitcoin a few months ago. I recently had an issue where I made a bitcoin withdrawal from one account to my deposit address for another account. The bitcoin account where I made the withdrawal took several hours to process the withdrawal. The bitcoin account where I was depositing the money only allows 15 minutes for the transaction before a new address must be generated. So because the withdrawal was processed past that 15 minutes, the money was not credited to my account. I ended up having to email the company with the account I deposited to in order to resolve the issue. Luckily, it was a small amount of money, so the ordeal wasn't too stressful. But I do plan to transfer with larger amounts of bitcoins, so I want to know how to avoid this when dealing with accounts that require payment to be received within 15 minutes after generating a deposit address.

Thanks :)

It sounds like you are using two different hosted wallet providers.  What you should do is download your own wallet application that you run yourself, and use it as an intermediary between your two hosted providers.  This can be a wallet that runs on a desktop, laptop, or your phone, but doesn't have to be a full node.  You can find a wallet here:  https://bitcoin.org/en/choose-your-wallet

Once you have that, withdraw your bitcoin from the first service to an address from your own wallet.  This may take the usual several hours.  Once you see that the transaction has a confirmation on it, you will be able to then send it to the second hosted wallet easily within the 15 minute timeout.


Bitcoinja-lib. bitcoin.payments is null I installed bitcoinjs-lib with command: meteor npm install bitcoinjs-lib.
The installation command "flow-typed install -f 0.27 bitcoinjs-lib@2.2.0" didn't work. No idea what flow-typed is and the influence it has.

This is the code I am running:

  import bip39 from 'bip39';
  import bip32 from 'bip32';
  import crypto from 'crypto';
  import bitcoin from 'bitcoinjs-lib';
  let randomBytes = crypto.randomBytes(32);
  this.mnemonic = "praise you muffin lion enable neck grocery crumble super myself license ghost"; //bip39.entropyToMnemonic(randomBytes.toString('hex'))
  this.seed = bip39.mnemonicToSeed(this.mnemonic);
  console.log("seed:", bip39.mnemonicToSeed(this.mnemonic));

  let bitcoinNetwork = bitcoin.networks.bitcoin;
  var hdMaster = bip32.fromSeed(this.seed, bitcoinNetwork);

  const path = "m/0'/0/0";
  const child1 = hdMaster.derivePath(path);
  const { address } = bitcoin.payments.p2sh({
    redeem: bitcoin.payments.p2wpkh({ pubkey: child.publicKey, network: bitcoinNetwork }),
    network: bitcoinNetwork
  })
  console.log("address: ", address);

Unfortunately bitcoin.payments is undefined.
bitcoin.networks.bitcoin works ok.

Why is payments undefined?
Thanks.

For some reason the isntalled bitcoinjs-lib didn't include the whole payments folder. I pasted it and then I modify index.js to include and now it works.
I don't understand why the installation goes wrong.


IOTA Security with Tangle I don't know if this is the best place to ask this, but I've been reading about an interesting cryptocurrency called IOTA which doesn't use a blockchain exactly but instead uses a directed acyclic graph.
https://www.iotatoken.com/IOTA_Whitepaper.pdf

There also are no dedicated miners, but instead you have to validate other transactions in order to make transactions.  My question is the following:

If there are no dedicated miners, couldn't you get 51% of the computing power simply by making 51% of the transactions? And if so, isn't this a really big problem for the security of it?

You still have to include some PoW for every transaction you submit and verify 2 older transactions this way. So everybody is sort of a small miner.


Time series data for issues listed on the (now defunct) GLBSE I would like to get the following data for every issue ever listed on GLBSE:

Time series of closing prices since IPO to de-listing (or closing of GLBSE),
Date and quantity of initial and secondary offerings, and
Dividend history.

The motivation behind this is constructing a total return index for the GLBSE.

How can I get these data?

A forum user captured the transaction and dividend history from the @GLBSE Twitter feed which can be used to determine daily pricing and dividends.  This is from v2 (April, 2012).

http://bitcointalk.org/index.php?topic=117491.0


Why does Steem fail to peg Steam Dollar to the U.S dollar? According to their whitepaper,

  Steem Dollars were designed as an attempt to bring
  stability to the world of cryptocurrency and to the individuals who use the Steem network.

Unlike its purpose, however, I can see that it has severely fluctuated in recent months especially between last Dec and this Jan like most other alternative coins from CoinMarketCap.

I guess it's cause it has been able to be traded in some exchanges like UPbit for some reason outside of Steem ecosystem so it has lost control of Steam Dollar even with the help or responsibility of their witness (but I've never traded crypto currencies before so am not sure whether it's possible to trade Steam Dollar on that exchange).

Do you have any other opinion?

The price of the Steem Dollar is completely dependent on market conditions, so it's hard to know for sure. However, you are most likely correct about higher demand from an external exchange, outside of the Steemit ecosystem. Even though SBD cannot be redeemed for actual USD dollars, there is still interoperability between coins (SBD to Steem for withdrawls) that allows for a Korean Steemit user to exchange through Upbit.

Steem Dollars is also listed on Poloniex, but there has never really been a high demand for it, because the IOU-backed Tether is also listed there. If you look at the price of Bitcoin and Bitcoin Cash for November 12, you will see that there was a very quick exodus out of cryptocurrency by Korean exchanges at the time. Seeking a safe haven, traders purchased large amounts of Steem Dollars at that time, causing the price to quickly lose its dollar peg to the north.


Which MuSig scheme is optimal? Classic MuSig or this new MuSig-DN scheme? Now we have two competing MuSig schemes which is better? Classic MuSig or MuSig-DN? Which use case(s) might choose classic MuSig over MuSig-DN and vice versa?

Firstly, it is worth emphasizing that both classic MuSig (referred to here as "MuSig") and MuSig-DN are relatively new cryptographic schemes and the paper for MuSig-DN is fresh off the presses at the time of writing (September 2020) with no current implementation. So use both at your own risk but even more so for MuSig-DN. The MuSig paper needed to be revised and it is certainly possible that the MuSig-DN paper will need to go through revision(s).
There are so many trade-offs with multisignature schemes that is hard to be precise and weigh them all up against each other. I will outline some of the key trade-offs that Pieter Wuille mentioned on IRC (any mistakes are my own).
Currently, MuSig-DN has a high computational cost with approximately a 1 second signing time on a modern desktop CPU. It is possible that this could be reduced but this would likely impact the existence of a security proof. On computational cost MuSig signing is clearly preferable. (Verification cost is identical.)
The motivation for MuSig-DN in the first place is that it has two communication rounds rather than MuSig's three. On communication rounds MuSig-DN is preferable.
MuSig-DN offers stateless signing which means the signer doesn't need to remember the rounds he/she has already participated in or remember nonces from one round to the next. In contrast MuSig needs randomly generated nonces at signing time and previous state must be stored securely. On stateless signing and randomness requirements MuSig-DN is preferable.
Both MuSig and MuSig-DN have a security proof under similar assumptions.
As you can tell from the above on multiple dimensions MuSig-DN is superior to MuSig. However, the computational cost of MuSig-DN arguably outweighs all the benefits for practical use cases and one would expect classic MuSig to generally be used over the current iteration of MuSig-DN.
As an aside there is a strict improvement of classic MuSig being worked on, let's call it "MuSig2", which has two communication rounds and would allow for private nesting. You could have multiple levels of MuSig aggregation and not tell your sibling participants that you have child participants.
[edit in October 2020: The paper for MuSig2 has now been published.]
For more information on MuSig-DN see this blog post from Jonas Nick and Tim Ruffing.
Thanks to Pieter Wuille for answering my questions on IRC. Any errors are my own.


Bitcoins Anonymity - Do Exchanges Break It? If I used to pay for bitcoin for something illegal (as defined by my country), and the public key of the wallet I used to spend the bitcoin became known, could authorities subpoena bitcoin exchanges for information regarding any accounts of anyone who bought bitcoin and sent the BTC to that public key? If any bitcoin was sent to me from someone (possibly myself) who had their bank account linked to an exchange, it seems the exchange could obviously identify the person associated with that account which could lead to information about my identity.
I have no intentions of doing anything illegal, just curious :D
It seems the exchange of USD for BTC almost requires bank account information.

could authorities subpoena bitcoin exchanges for information regarding any accounts of anyone who bought bitcoin and sent the BTC to that public key?

Yes.

It seems the exchange of USD for BTC almost requires bank account information.

No.
Non-KYC exchanges: Bisq and HodlHodl


What are output descriptors? I have heard about output descriptors or wallet descriptors. It is not clear to me what they are. What do they allow me to do? How does that improve my experience using Bitcoin?

An output descriptor (note that output descriptor and wallet descriptor refer to the same thing) is a human readable string that represents an output script (a scriptPubKey) and everything needed in order to solve¹ for that script. Descriptors also have a bech32-like checksum which allows for the descriptor to be given to others with less risk of accidentally mistyping or losing some characters in the descriptor string.
Descriptors are unambiguous as to the public keys to use (derivation paths for extended keys are explicit) and the scripts to use. This makes them suitable for importing to other wallets without confusion. In contrast, traditional import mechanisms support only keys with special versioning to indicate the scripts to produce, and don't provide the derivation paths. This creates a situation where a user imports an extended key into a wallet but is unable to see their addresses because that wallet uses a different derivation path than the original wallet. Descriptors avoids this issue entirely by specifying the derivation paths (if any) and the scripts to produce.
A descriptor wallet is one which stores output descriptors and uses them to create addresses and sign transactions. By abstracting away address creation and transaction signing to a largely standalone module, such wallets can upgrade to using new address types much more easily.
For most users, the only visible effects will be in wallet import/export. Descriptors will only be shown during exporting, and descriptors should only be handled by the user when they want to import their wallet. Wallets that use descriptors internally shouldn't have any noticeable effect to the user.

¹: Solve - Solving a script means that one would be able to create a final scriptSig/witness with valid signatures if they had a private key. This means that all public keys and other scripts are available.


Is anyone developing a DNS-like system for Bitcoin addresses? It seems like mainstream access would be easier if there was a more human readable system for bitcoin addresses. No one has to remember IP addresses, we have servers with databases for that.

What type of infrastructure is there to send bitcoins to easy-to-remember addresses?
Will it ever be a permanent part of the protocol?

The NXT Cryto has a built in alias system:

http://www.nxtcrypto.org/


Mutibit HD - Maintain a wallet on 2 devices Is it possible 2 maintain a single Multibit HD wallet on two devices? Assume a laptop and phone. My first thought is to install MB HD on the second device and create a new wallet using the original wallet words.
TKS,
Regards,

Yes with an HD wallet you can use as many devices as you like.

However you may want to ask yourself why you are doing this. More devices = more possible attack surfaces.

Using different HD wallets has the benefit of the losing one (to a keylogger, etc) not causing loss to your Bitcoin in the others.

Why not keep a small amount of BTC in your mobile HD wallet for everyday use and have a little more in a seperate laptop HD wallet and the majority in a seperate cold storage HD wallet?


How to keep my bitcoin safe when I move my bcash? I had some bitcoin during the coinsplit, so now I have bcash that I want to move.

When I send bcash there is a risk that someone copies the transactions and uses it to steal my bitcoin. Most people recommend moving the bitcoin to a new adress for this. this is not practical for me right now, will it work to just move my bcash to a new adress instead before I send them or will this also allow an attacker to copy the transactions?

Bcash transactions cannot be replayed on the Bitcoin network, and vice versa, Bitcoin transactions cannot be replayed on the Bcash network. This is called 2-way replay protection. In Bcash's case, it's implemented by the mandatory use of a sighash flag that's invalid for a Bitcoin transaction.


If the computer that stores the bitcoin is destroyed, how does someone access their bitcoin? I have seen people say that you just need the private key and "some software" to recover your bitcoin. What does this actually mean in the real world? Can someone give an example?
Also, if you are using some company's wallet to store the bitcoin, you are relying on that company's computer for storage. How would you get the bitcoin to be stored on your own computer?
I am sorry if these are poor questions; I am finding it difficult to wrap my head around the actual storage of bitcoin.

When Alice pays Bob, she creates a Bitcoin transaction. Her payment to Bob is defined in an output of the transaction. This output is encumbered with a cryptographic challenge tied to Bob's public key. You can think of this as the funds getting stored in a lockbox addressed to Bob. When Alice's transaction gets confirmed, it gets recorded in the Bitcoin blockchain, the network's shared transaction journal.
Later, when Bob wants to spend the funds, he creates another transaction which references the output of Alice's transaction in a transaction input. To spend the funds, he will need to provide a signature with his private key, the private key corresponding to the public key Alice used to address the lockbox. The signature is a form of zero-knowledge proof, it proves that the signer knew the private key, but doesn't leak any information about the private key itself. Since the private key is only known to Bob, this means that only he can spend the funds that Alice locked up for him.
So, while the funds are tracked decentrally on the blockchain, Bob needs to keep his private key safe in order to be able to spend the funds. If Bob loses his key and does not have a backup, nobody can open the lockbox and the funds are lost forever.
We call the software that keeps track of private keys and the associated funds "Bitcoin wallets". There is a range of different wallet types from software wallets you can run on your own computer or phone via hardware devices that store private key material to service providers that you trust to do the heavy lifting for you.