How can Bitcoin change the world? Let's think of a hypothetical scenario if Bitcoin becomes the world's major (most used + highest market cap) currency one day. How will it change the world? The obvious point is cheaper money transfers, but what about its impact on the global economy? Is a "deflationary" currency better for the world? Is quantitative easing really that bad?

I like this question1 - we don't get many big picture questions.

  How could Bitcoin change the world?

A mature digital cryptocurrency could reduce trade barriers and thus
increase the rate of productivity dispersion throughout society. As
money is a form of fungible authenticated information2,
non-proprietary digital money gets to take advantage of the
information age to rapidly democratise trade with lower
transactional friction.
It could encourage governments to move towards a more rational global
currency or currency basket for sovereign wealth reserves, trade
imbalances and protection from commodity price shocks. In effect the
phenomena of democratised digital currencies, if not Bitcoin
specifically, could accelerate global cooperation and democracy in
macroeconomic practices badly in need of an overhaul.
It could provide an excellent educational opportunity for teaching
and learning macroeconomics. As the cryptocurrencies are moving
though the stages of currency development so fast as to eliminate
most of the confounding factors of studying more mature currencies
that evolved over several centuries of political and socio-economic
change.
It could enrich a very small minority of early adopters. Depending on
what these early adopters do with their new found wealth, they could
bootstrap other social improvements.
It will probably not result in increased (effective) tax evasion due
to the wide range of levers available to collect tax revenue.
Although an increased informal sector may result in governments
shifting towards regressive taxation such as consumption taxes to
offset the evasion of progressive taxation.
It will probably not result in a cap on the money supply due to the
ability to establish fractional reserve banking on top on any specie
currency if legally permitted. Off-block chain Bitcoin clearing
houses may evolve into fractional reserve banks to avoid on-block
chain costs. In either case, it will not provide an economic solution
to a political problem (deficit spending).
It will not create a libertarian or objectivist paradise. Such a
shift in socio-economic paradigm will require both economic and
social consensus. Cyptocurrencies can provide an economic consensus
only.

  What about its impact on the global economy?

Probable impact: Low to Medium. Possible impact: High.

It really depends on how willing various cryptocurrencies are to absorb certain "bad" aspects of fiat currencies in order to grow into a major currency with global volume. At current, I don't know what level of actual impact is likely - since you have to predict not just technology but the behaviour of people: Both of those that use or might use Bitcoin and the adaptations of its traditional and contemporary competitors and their mindshare.

  Is a "deflationary" currency better for the world?

A qualified no3.

  Is quantitative easing really that bad?

A qualified no3.

1. In case people think I'm a curmudgeon.
2. Each coin I have is information that the world currently owes me X amount of    goods and services.
3. I can't do these questions justice in an answer primarily about how Bitcoin might change the world. Suffice to say we are currently trapped within a "growth" orientated socio-economic model which is incompatible with non-inflating money supply. The lack of true democratic control over the objectives and priorities of these federalised economic levers is a problem.


Computta stealing bitcoin and behave like its nothing Mining with https://computta.com/ I had balance of 0.54+ mBTC, every hour i checked and i have written them down in my book.

Suddenly since this week they made my computer balance 0.529 mBTC but on my web-site account my balance remaining  0.53 mBTC

I reported them and they pretending to be like its nothing no issue at all but i used 7 days 24/7 to make it and now on the fly they steal my bitcoin.

What to do in such case? stop using them? suppose i had large balance 1100 mBTC and they did the same i cant claim it back anymore it would be stolen.

they steal my bitcoin. What to do in such case?

When someone steals something from you, the appropriate response is to report it to the police. You'll have to provide evidence that a crime has occurred.
If the evidence is not the sort that would be credible in a court of law, it may not be possible to progress this.
If the criminal is outside the jurisdiction of your police, and the sums involved are low, it may be difficult to progress this.

Due Diligence
Part of the intent of cryptocurrencies is to create currencies that are outside the control of governments. A corollary to this is that you need to be diligent when assessing the trustworthiness of cryptocurrency organisations
See

Computta Review: Hand over the keys to your PC to persons unknown
Computta – Smart Cryptocurrency Mining PC Application Software?

Computta is made by a company named Computta Networks LLC. The corporation started appearing online in July 2017. They claim to be registered in Delaware.
There’s virtually no information about the company available online. In fact, one of the first results that pops up when you search for Computta Networks LLC on Google is this page on RealScam.com, where the website is identified as a likely scam.
There’s also the problem that Computta’s testimonials are accompanied with stock photos that have been taken from other websites. They do not appear to be legitimate testimonials.


how long does it take to get 6 confirmations with confidence of 99% I had this question in an exam but I was not very sure how to solve it:

Suppose Bob the merchant wants to have a policy that orders will ship within x minutes after receipt of payment. What value of x should Bob choose so that with 99% confidence 6 blocks will be found within x minutes

Do you have in idea about the formula that we have to use to find the answer?

The following holds for a generalized case on the required time for having m blocks with a confidence of p 100\%. The time X between consecutive blocks is exponential distributed, i.e. X~Exp[k] with k=1/10.
The sum of m independent and identical exponential random variables follows the Erlang distribution, that means for X_i~Exp[k],  X_1+X_2+...+X_m~Erlang[m,k]. The required time for having m blocks with a confidence of p 100% is given by the p-quantile of the Erlang[m,k] distribution. In your case m=6 and p=0.99. The quantile Q_Erlang[m,k](p) does not have a closed form expression. However, it is given in terms of the inverse regularized gamma function which can be evaluated numerically.

Plugging in the values leads to Q_Erlang[6,1/10](0.99)=131.085, which means that in 99% of all cases 6 blocks will be mined in less than 131 minutes.


How is the extra nonce formatted? I'm trying to understand how a block is put together. From here, I know that the extra nonce used to be in the format:

pblock->vtx[0].vin[0].scriptSig = CScript() << pblock->nTime << CBigNum(nExtraNonce);

What does this syntax mean? Exactly what elements does the script sig contain and in what order?

What does this syntax mean?

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

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

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

  How is the extra nonce formatted?

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

04d508de4f02e82d

If we parse this script sig, it is:

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

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


How does the ECDSA verification algorithm work during transaction? I understand the basic concept ECDSA where if Bob wants to sign a message it generates a random number n, multiply it with the secp256k1, r = the x value , s = (H(x)dr)*n^-1 mod q. Also the verification is done by P=u1(G)+u2(P), where G is the generation point, and P as the public key of Bob.

I went through the transaction page of wiki. My understanding is that ECDSA takes place somewhere in the scriptSig/scriptPubKey section.

If Bob wants to spend the unspent transaction output, Bob will need to create a signature script that references to previous transactions, also provide his full public key, which will then be hashed to match previous transactions as the receiver, Bob will also need to generate a signature to prove that public key is originated from his public key.

It leaves me with a lot of questions such as the Transaction Verification steps:OP_CHECKSIG
where I'm guessing most of the steps are trying to match the hash, and finally at step 10 it
performs the ECDSA verification.

Does it still follow the basic concept computing u1, u2 and utilizing the full public key provided by Bob trying to match the r value at the end? Or is it doing something totally different? I can understand why pubKeyStr and sigStr is required for the ECDSA verification, but it also takes in sha256^2, which i guess is double hashing, with the (verifThisStr). I do not understand where that came from at all.

What would be substituted into the hashed message  H(x) when computing s? And does Bob just randomly pick a variable just to generate the signature when it was asked for claiming the unspent transaction?


Is this considered double spend? I had a Receive transaction worth 0.185btc

I was confident that it was ok since I saw 5 confirmation before I close the wallet.

The next day when I checked I saw a sent transaction with 0.185 btc which I didn't authorized. When I click the link it showed me this Sent transaction.

The weird part is it says that the output is 1btc which I didn't have because I only have 0.185 btc on that wallet.

This wasn't a double spend, I'm sorry to say, but it looks like your bitcoin was stolen.

The reason the transaction out says '1 BTC' is that your bitcoin was combined with bitcoin from a bunch of other addresses, and sent all together to that new address.

You'll have to carefully think about how this might have happened. If your wallet was backed up by email, it may simply be that your email account was compromised.

Again, sorry for your losses :(


How to get amount in RPC I am developing a bitcoin wallet for education purposes, and i'm working on a getbalance method that given an address i return the balance of the address.

Problem is, when communicating via the RPC protocol i am given the amount in a double format rather than satoshi (int). And i would like to provide the amount in Satoshi's.

How do i properly convert the double amount, into uint64 satoshi amount?
Since double is not an accurate value, how do I make sure that my "users" get the correct value for their balance, or on their transactions?

Thanks,

The amounts returned by Bitcoin Core are accurate. They are not actually doubles; they're just output that way for convenience. Bitcoin Core internally uses a int64 and the amounts are satoshis. When outputting for users, the int64 is used and a string formatter just puts a decimal point in the appropriate place. Since it already is exact, you just need to drop the decimal point. The easiest way to do this is to take the output as a string, remove the decimal point, and convert that string to an integer.


synchronizing takes weeks and more than 120 gb Do I have to download all 120 gb?
I sent myself 100 euro in bitcoin weeks ago. Waited till bitcoin core synchronised to receive them. but it took weeks. And no money in my wallet. And my pc is out of free space.

For the "out of free space" issue you could use pruning mode. For the "no money in my wallet", you'll have to tell us a little more. Is the transaction confirmed?

also see:

Cannot access my bitcoins because my wallet is still synchronising. What can I do to spend them immediately?
How can I run bitcoind in pruning mode?


What is a DNS seed node vs a Seed Node? I've seen references to both strewn around. Specifically, is there a bitcoin client running at the DNS seeds or seed nodes?

As you correctly identified, there are two types of seed nodes, i.e. DNS seeds and seed nodes. DNS seeds are stored in chainparams.cpp. As of today (April 2017) the following nodes are listed in this file.

seed.bitcoin.sipa.be
dnsseed.bluematt.me
dnsseed.bitcoin.dashjr.org
seed.bitcoinstats.com
seed.bitcoin.jonasschnelli.ch
seed.btc.petertodd.org

I performed nslookups on these DNS names and they return a list of IP (14-26) addresses that all seemed to be running bitcoin nodes.
There is also the concept of seed nodes which are hardcoded IP addresses in the event that someone is experiencing a DNS failure or other issue.  These nodes are only contacted if no other discovery mechanism works.


Why did the Mempool suddenly drop to zero What caused the huge drop of the mempool from 60 MB to Less then 1 MB?

These transaction didn't get processed there was no 60 MB block mined at the time.

This occurred at 10:38 pm 29th August 2017 NZ time

It didn't goto zero. You can look at alternate sources https://core.jochen-hoenicke.de/queue/#2d . What happened most probably is that blockchain.info's node went down/rebooted momentarily.


How to generate a zcash vanity address? Is the main network address version for zcash already known? Is it possible to generate a mainnet address already?

This could allow miners to start from minute 0 to mine on a anonymous pool. The addresses can exist without the network as they are just a cryptographic keypair.

I checked the chain params at the source repository.

It looks like t-type addresses start with t1, and multisig with t3.

// guarantees the first 2 characters, when base58 encoded, are "t1"
base58Prefixes[PUBKEY_ADDRESS]     = {0x1C,0xB8};
// guarantees the first 2 characters, when base58 encoded, are "t3"
base58Prefixes[SCRIPT_ADDRESS]     = {0x1C,0xBD};

And from the protocol:

  In Bitcoin a single byte is used for the version field identifying the address type. In Zcash two bytes are used. For addresses on the production network, this and the encoded length cause the first two characters of the Base58Check encoding to be fixed as “ t3 ” for P2SH addresses, and as “ t1 ” for P2PKH addresses. (This does not imply that a transparent Zcash address can be parsed identically to a Bitcoin address just by removing the “ t ”.)

But how to generate them? Never seen dual prefixes berfore. Also, what's the address version? My vanitygen is unable to cope.

To simply generate a new main network address, you can use the official zcash-cli like that:

$ zcash-cli getnewaddress
t1fMAAnYrpwt1HQ8ZqxeFqVSSi6PQjwTLUm

Or:

$ zcash-cli z_getnewaddress
zcHTYUQRA54WGdcNtLRx1yRyvEJjLD8NAK4S7FbEGoqB1s5En4syEStMnJPRMAD8XmF9xgeKnCEuZ7g35LcNpMhRDZX4PDw

Vanity is a bit tricky, but there is an offline wallet generator available here (forum, gitub).

It can be installed via go:

$ export GOPATH="$GOPATH;/home/user/.go"
$ go get -u github.com/btcsuite/btcutil
$ go get -u github.com/blackkeyboard/mneumonic
$ go get -u github.com/blackkeyboard/zgenerate
$ go install github.com/blackkeyboard/zgenerate

After that it can generate valid (?) zcash addresses.

$ ~/.go/bin/zgenerate
2016/10/28 10:42:09 Wallet generated!
2016/10/28 10:42:09 Passphrase: afraid master w...
2016/10/28 10:42:09 Address                                Private key
2016/10/28 10:42:09 t1eTNgQHp7ei42ZtVRJ8jmUrsfu3rQqpXKt    cQM...

Now, generating vanity needs some bash tricks for now. And a lot of disk space, as long as nobody codes a proper vanity generator.

First, generate a lot of addresses and pipe the output to a file:

$ while true; do ~/.go/bin/zgenerate -n 99 >> keypairs.txt 2>&1; done

And in another shell, look for the results

$ grep -i t1 keypairs.txt | awk '{print $3}' | grep -i 5chd
t1MniMQux3755CHdMdVEtk71GzDkrLjmMbL
t1QMERYYnhCTdpreFwp5chdhqejr7NxRJvK
t1euq6Yg5chDcdEd9LCmwDPizqAU6uBF5Lt
t1PqrCEUW5ChDcaxe9qsQjPiCVt5qd727qH
t1h5ouE263Ccuo5ChDwWRn9HJCMrT3DR7gN
t1Qo5cHDbNBaoaFTKJLrWHBFPoqBZjRRLAS
t1W5cHDhrAnHERt9Tv3r6cgRh9hKybRbn7q
t1dViyc3SQatNZXnoMwcFLB1ELTHNwT5chD
t1e7D5qgdpbxNLoi5ChdTpLFauz8VrQJ2He
t1Va5cHdqLWmnHeAycS9y3qoP3rDAyPJubD
t1UszZECKVPgFpjkYKubyC5chduhSTQscPz
t1LjhytxXj9YLzeBikShm2kj78N5chdkJkm
t1MyW2vggvzHKjPCZDcd5cHdDPsvYMXCp8F
t1UMn4PpwnvPBH6hiunhoXbXRqBoJz5CHDo
t1aohPrSU7bFsC5CHDEPi5Ed7mVxvnNjeuq
t1cMAXhkVSaPcGmzVwN15cHduRKpbLtFJ1H
t1NZRXnKdACxU9xYH9P5chdTcNZfFQ6mT5L
t1QXXyYidirdW4KQz5ChDtYGestzDJ9FyiS
t1cHMeeWtGqnduj5chDFXka8krJMLtDoiJb
t1Pv4zxf5ChDXsCiKkajeJ1qpkQyv1MbSTd
t1KftUZAas3mAyKL5chd97nbDz8S2iF8PQF
t1WQYSvAWPLFHh9gyg6m635CHD3A49C9AvH
t1cuG5ChdTvE864hCKbM9tpToYNU4u8QWA6
t1bTuRMnbJMG1z2tRySoz5cHD1VB6mNFKAX
t1MX7GuYdMcKH9nWgc5chDj99qgd9H1186i
t1VvKMh2LRiTeUY3B5p5oa5CHDWhzK5ZMxB
t1Z34PDzF5CHDfnvJdRFUsQQCWTys2Wv4FE

Stop if you are satisfied.


Can Bitcoin blocks be organized into shards? Bitcoin Scalability is a hot topic.  In database architecture design data is segmented into shards or the data is partitioned such that it can be spread among large number of machines.

In the financial world, credit card companies like Visa have to deal with thousands of transactions per second.  To deal with this volume credit card processors will use the Date as a shard key.  This allows for the credit card processor to group all transactions made in a set period of time and a set of machines are made responsible for a month of transactions.   Is this sharding tactic compatible with Bitcoin blocks?   Or more generally what if Bitcoin was as popular as credit cards?  What kind of techniques would Bitcoin be forced to use to cope with the scale of the problem?

If you mean whether block verification can be distributed so that one entity can participate without storing the entire blockchain, this isn't compatible with the current design, but maybe a new design can do that. Also, suggestions such as this aim to improve the ability of lightweight (SPV) clients, who do not store the entire blockchain, to verify transactions concerning them specifically, without changing the core protocol.

If you mean whether a single entity can distribute the blockchain among several machines on the same LAN, then this is possible. The basic operation needed for block verification is to look up the details of a previous output, so the natural sharding key would be output hashes. One could also cache the newest outputs which are the most likely to be used in the following transactions.


What if next block cannot be mined? AFAIK to create the next block, there must be a specific structure (specific number of leading zeros) in the has output calculated on the block's header. This header contains a set of fixed parts (merkle tree, previous block's hash, ...) and two variable parts: nonce and timestamp.

Now, what if all combinations of timestamp and nonce do not result in the desired output to validate the block? (At least for a long duration, like a week).

Not only can the nonce be varied, but also some information in the scriptSig of the coinbase transaction in the block, which would change the merkle root, so there should always be enough to find a hash within the target.

The difficulty of finding a block is recalculated every 2016 blocks to give an average time of 10 minutes between blocks. Because of the sheer amount of processing power going into the network, this is pretty reliable, its just not going to take an entire week. If blocks were taking longer than expected, the difficulty would reduce at the next retarget to compensate.


How do I calculate expected earnings when mining a cryptocurrency? If I have access to currency-specific variables/datasets for any cryptocurrency of choice (see below), how would I calculate which cryptocurrency (out of a fixed set of say 3-5 altcoins -- SHA-256 and Scrypt only) would be most profitable to mine at a given time?

Given: difficulty, hash rate (network), block count, block time, block reward, exchange rate, and exchange volume.

To be more specific, I'm wondering what math would go into calculating Expected Earnings/(MH/sec) for each cryptocurrency with this data? I'm not not necessarily asking for something like http://www.coinwarz.com/cryptocurrency/ that takes your own device's hash rate and power consumption:power cost ratio to determine individual profitability, I'm talking about a general calculation where the output is in the units 'Expected Earnings/(MH/sec)'

(I'm not sure how complicated a calculation like this is, so I'm not asking for exact math or anything just where/how to start with a problem like this)

Calculate your share of the network hash rate for that particular hash algorithm (your hash rate divided by the network hash rate), let that be HR.

Calculate the emission by unit of time (block reward times 86400 divided by block time in seconds), let that be E.

Calculate your expected average coins mined in a day (HR times E), let that be C. Note that variance will be high, unless you mine on a large pool, or have a large HR.

Calculate the price in the coin you want to convert to (C divided by exchange rate, or C times exchange rate, depending on whether it's expressed by altcoin per bitcoin, or bitcoin per altcoin, respectively).

If you want per second, or per MH, scale accordingly.


Bitcoin inflation in 9/12 doesn't seem to have been corrected. Why not and will it be fixed? I'm looking at the Total Bitcoins in Circulation graph and don't understand why there is a spike of coins being generated in Sept '12.  What caused this to happen?

Also, since there is a fixed number of Bitcoins that will be created, then I would expect this deviation would be corrected and fall in-line with the previous rate of growth.  It doesn't appear that a correction has occurred.  Which of the following will happen:

The final end date of new bitcoin mining will be earlier than planned
At some arbitrary date in the future there will be fewer Bitcoin being mined

Sure, the longer we wait the impact of that occurrence of inflation on 9/12 will decrease over time, but what happens the next time a Bitcoin mining spike occurs?

A short term increase in the gradient on the graph can be caused by a large and fast relative increase in hashing speed of the total network. Within a short time, the difficulty adjusts and prevents it having a substantial long term impact. The steep gradient on this difficulty graph between 13GH/s and around 20GH/s is an increase of around 50% in hashpower in a very short time.
It won't be fixed, because it's not broken; it's working as originally intended. It does mean that the date the reward adjustment is halved comes slightly earlier than if the network hash rate remained constant. It also means that as the value of bitcoins grows higher, more hardware will be purchased and added to the network, and blocks will be produced slightly faster than the 10 minute average.
The final date of "new bitcoin mining" is of little consequence. Well before that date, miners will be earning more from transaction fees than from the block reward.
We can expect more of this when ASIC mining hardware comes online.


Looking for bitcoin and other cryptocurrency intraday prices I've come across some datasets that include every trade made but I'm just looking for the price of bitcoin at a high frequency. Every minute would be ideal.

Using bfxdata.com which looks at Bitfinex stats, the largest in volume Bitcoin exchange currently, can help you out.

In the link above it allows you to download tons of different types of data in csv format, and from the website you can look up and find tons of information. Be advised, please do not systematically download or set up a bot auto-downloading the csv files, you will be blocked.

And yes that includes all transaction stats since "2013-04-01 02:00:00", but it's updated hourly not by minute. (that would be almost too much data to handle anyway)

Bitfinex also has stuff you can look at, but it doesn't say the price every minute, it just shows all trade history. You can download information with a max of a three month range per time.

Hope this helps.

Happy Bitcoining


How do I import a Multibit HD wallet with seeds into Electrum? I installed Electrum to replace the broken and intolerable Multibit HD. I entered my 18 seed words, but it wouldn't allow me to click Next. I clicked Options > BIP 39 and it enabled Next. It created the wallet, but I don't see my balance or transactions. There doesn't appear to be any menu options to rescan the network.

Inside Multibit, it says this about my wallet:

Standard MultiBit wallet
Private keys are encrypted on this machine
BIP32 compliant. m/0h (Account 1 only)

OK found a way! Only cost me $8 to switch wallets! WTF?

Go here and save the web page to disk: https://iancoleman.github.io/bip39/
Download, install, & start TOR browser. https://www.torproject.org/ We are using TOR because it is made for anonymity and privacy, and doesn't keep cookies, storage, cache, etc. We are going offline, but a Javascript page can store data in your browser so next time you visit, it can send your secret info back. If you are not worried and think you'll just use a private browser session, look up permanent cookies and see how creepy your browser is when it comes to protecting your data.
Open the web page you saved in TOR browser. Turn on Javascript.
Start Electrum, create a new wallet, and select Import Private Keys. Wait at the input box.
Unplug your network cable, and disable your WiFi network connections.
Input your Multibit seed words into the BIP39 tool. Select BIP32 tab, and MultibitHD for client.
Scroll down and view the addresses generated. Verify the addresses match the addresses in Multibit, starting from the earliest to latest.
Copy & paste all of the private keys from the private key column. Yes, you will have to freakin' copy & paste like 20-100 keys depending on how much you have been using Multibit! (Oh it get's worse!)
These are only the original keys. Whenever you send a payment, you get change to a 'change address'. Those are not listed! If you have sent any payments, you need the change address keys also. To get the change address keys, read the following.

https://www.reddit.com/r/Bitcoin/comments/6btevz/how_do_i_import_my_12_breadwallet_seed_words_into/dhqvy31/?context=3

  If you use the BIP39 tool that I linked, put your seed in and go to the BIP32 tab, in the "client" box change it to "custom derivation path" and start with m/0'/0
  You should be able to manually go through addresses and get private keys by changing the path. (example: m/0'/0 --> m/0'/1 --> m/0'/2 and I think change addresses are probably m/1'/0 --> m/1'/1 --> m/1'/2 --> etc.)

However, the change addresses are m/0'/1 not as mentioned above.
Change the Client to Custom, and change the BIP32 derivation path to m/0'/1.
Verify the change addresses match. To find the change address, open the first transaction where you sent, view the transaction on BlockExplorer blockchain.info, and see which address the excess change went to. This is one of your change addresses. You can verify as many as you want but more than likely if the first matches the rest do.
Now repeat the copy & paste of the addresses private keys into Electrum.
Click Next on Electrum and enter a password. You must encrypt your wallet or else the private keys are in plain text on your disk!
Close TOR browser with the BIP39 tool.
Plug in your network cable and turn on your WiFi network adapter.
Electrum will synchronize and show your balance.
Go to File > New/Restore and create a new wallet, with new seed words.
Write down your seed words.
Send your bitcoins from the old wallet to the new wallet. The fees will be high due to many inputs!

From comment by Daron:

  For fast copy-paste, use this in browser console: $("tbody.addresses > tr > .privkey > span").append("\n").text(). It'll generate a wall text of addresses in the console, which can be simply pasted in Electrum.


What is entropy mean in this context? "The Bitcoin nonce forms part of the block header, which is used by miners to provide entropy as part of the Proof of Work process, to try and find a hash meeting the difficulty requirement."

Quote taken from the following article.

https://blog.bitmex.com/the-mystery-of-the-bitcoin-nonce-pattern/

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


Determine inputs/outputs of a transaction before sending I am attempting to build a working withdrawal system where users can withdraw funds in BTC. I am required to estimate the fee before allowing them to withdraw to include it in their payment. I was able to determine the maximum estimated fee based on inputs and outputs of the transaction. I had assumed that the transactions would have 1 input and 2 outputs as when I was testing that was the outcome. I am now seeing transactions with multiple inputs and outputs making the transaction size larger, therefore, increasing the fee. This is problematic for me as I am having to pay for these fees. I need to be able to determine the inputs and outputs of the transaction before I send it to the blockchain.

If you are constructing your own transactions (rather than letting a wallet application do it for you), then you get to choose which inputs and outputs you use in the transaction.  For that matter, you also get to choose the fee for the transaction, since any leftover from the sum of the inputs minus the sum of the outputs is the mining fee.  Just remember that leaving too low of a fee will result in long delays of unconfirmed transactions.

Based on your needs, you can choose to use different coin selection algorithms.  A coin selection algorithm's purpose is to select inputs from the pool of UTXOs that you control.  Selecting too many for a single transaction will result in a higher fee.  However, refusing to use smaller UTXOs will leave your entire pool comprised of small ones, forcing you to use them (and pay higher fees) until your pool recovers.

There are pros and cons to different algorithms, especially when you are concerned with fees, so be sure to understand the ramifications of your decision.  A good place to start might be @Murch's presentation at Scaling Bitcoin.


Electrum: Transaction Error with Restored Wallet I am trying to import my bitcoin privatekey to my electrum wallet and use that wallet to create transactions.

I restored the wallet using the command electrum restore <private key>

The restore was good and I was able to get my balance to show up correctly via electrum getbalance, everything looked fine until I try to create a transaction, and it gave me this error

electrum.util.NoDynamicFeeEstimates: Dynamic fee estimates not available

Does anyone know why this happened?

I am using the latest electrum.

Edit: The error only shows up with a restored wallet, I can send transactions with my sweep wallet without any problems

you need to set fee manually. goto preferences and check edit fee manually.


Does the power supply matter? I have a Gridseed 5-chip ASIC miner and am running 2 amps into it. Will this impact how it works and if it works at all if I use 2 amps instead of 5?

Yes. If you use a 12V/2A power supply rather than a 12V/5A supply, the voltage will drop, causing hardware errors. You will effectively be undervolting the chips.


About changed address I am using electrum.
First, I had a bitcoin address and I used it once to receive BTCs and then it changed.
Will I be able to receive Bitcoins now, even if someone sends them to the old address?

Yes, you will still receive Bitcoin if someone sends to your old addresses.

Electrum uses mnemonic seeds to generate private keys which has corresponding public addresses (keys) - the ones you need to provide someone to send Bitcoin over to you. This means every transaction to addresses which are generated by your mnemonic seeds will still go to your Electrum wallet even when your receiving address is now changed.

Just in case you wonder why the receiving address keeps changing time to time: the ideas of changing public address every time you receive some Bitcoins is to keep your balance info private as with a public address since one can look up and list all transactions related to it using Bitcoin explorers such as blockchain.info.


Is there a Bitcoin exchange that accepts paypal and no registration needed? I am looking for a Bitcoin exchange that allows me to input a wallet address and my paypal information and it will let me send x amount of btc to that address while paying with paypal in USD, RUB, EUR, etc.

Also, I don't want to create an account with the site and I want the site to be trusted.

What you are asking is economically impossible. Such an exchange doesn't exist or they are some sort of scams.

Paypal has very high fraud transaction rate due to high availability to obtain stolen PayPal credentials or stolen credit card numbers from darknet markets. Thus, exchanges allowing PayPal force strict Know-Your-Customer requirement on their users. It would be terrible, terrible, business decision to build such an exchange.


blockchain.info: "No operations allowed after connection closed." It's not allowing me to see any TX's or addresses. It just says "No operations allowed after connection closed. Connection closed after inability to pick valid new connection during fail-over."

A few minutes ago they restarted the servers, and they won't allow you to make transactions while they're not connected to the network. Since a restart implies a temporary disconnect, you just have to wait a few minutes.


Syncing bitcoin node with multiple cores I'm syncing my node on 32 CPUs, and it's super slow.

Obviously, syncing doesn't go in parallel. I wonder if there is any fundamental obstacle for "divide and conquer" way of doing it.

So let's say we have 62 blocks, and 2 CPUs. We divide it by half, and the first CPY syncs 1-32 blocks, and 2nd cpu syncs 33-64 blocks, after both tasks are completed, we are checking that 32 and 33 blocks match.

Am I missing something? This feature seems so simple to me but somehow not implemented.

What makes you think that this isn't implemented?

Block download is already multithreaded and blocks are downloaded out of order. Everything that can be verified in a block without requiring other blocks (such as the PoW matching the PoW stated in the block header, merkle root, etc.) are verified when the block is received. This all happens in separate threads.

But the bulk of verification is checking that the transactions within the blocks are valid. This cannot be done without having verified all of the blocks previous to the one being verified, so this is unfortunately a serial operation that cannot be parallelized.

The crux of the issue has to do with the UTXO set. Suppose block 2 has a transaction that spends an output created in a transaction that is in block 1. If you receive block 2 and start verifying transactions before you have block 1, then you will be unable to verify the transaction whose parent(s) are in block 1. Thus you must wait for block 1 to be received and verified before you can verify block 2.

Of course you can still check the other things in block 2 and write it to disk first, then proceed to download more blocks. These just need to be queued for the actual transaction verification.

The transaction verification involves adding and removing items from the UTXO database. This database needs to be written to disk which means that there will be a lot of disk I/O which is generally slow. The database is cached in memory but is flushed to disk when the in memory cache becomes full. You can make this faster by increasing this cache. In your bitcoin.conf, add a line dbcache=<n> where <n> is the amount of RAM in MiB that you want to dedicate to the cache.

The default dbcache is 450 MiB, so setting a dbcache value larger than 450 will speed up syncing as more of the database is cached and thus less disk I/O is needed. A dbcache of 8000 is large enough that the entire database will fit in memory and thus only be written to disk once. If you have enough RAM for this, then setting dbcache=8000 will allow for the fastest sync time.


Doesn't overt AsicBoost reduce the search space for a valid block header hash? ASICBoost is a new method to mine bitcoins with a 20% speedup, as covered in this article:

https://blog.bitmex.com/an-overview-of-the-covert-asicboost-allegation-2/

Now, consider the following diagram:

Apparently there are two versions of AsicBoost - covert and overt. Overt AsicBoost involves changing the Version section of Chunk 1 only, while Chunk 2 remains unaltered (except for the nonce, which is still incremented). This is faster than the traditional method of incrementing the nonce, and then adding the extra nonce.

However, doesn't Overt AsicBoost reduce the search space? The current Bitcoin network difficulty is 15,546,745,765,529, which means that a miner has to iterate through approximately 2^76 hashes before a valid block header hash is found. However, the Version section of the block header is only 4 bytes (32 bits), and the nonce is also 4 bytes (32 bits). Therefore, if a miner implements the Overt AsicBoost technique, the search space is only 2^32*3^32=2^64 hashes, which is far smaller than 2^76. Wouldn't this be completely insufficient to find a valid block header hash?

What difference could it possibly make? Each hash you do still has the same odds of mining a block so all that matters is how many hashes you can do per second. It makes no difference how big or small the search space is unless it's so small that the time to start a new search becomes significant, which 2^64 certainly isn't.


What percentage of Bitcoins stored in a multi sign address? I am looking for a statistic of the usage of multi-sig addresses over time.
More concrete: what is the percentage of Bitcoins stored in a multi-sig address over time.


Spending output of a low-fee transaction by following with higher-fee transaction Suppose I broadcast a transaction A with very low (or zero) fee. Normally, it would take a long time to confirm. Suppose, then I broadcast another transaction B that spends a (yet unconfirmed) output of the first transaction A and includes normal or higher-than-normal fee. I assume that the transaction B can be mined only in the same or later block than the transaction A. Would the higher fee of the transaction B be motivating for miners to mine the transation A as well?

Or, put it in different words, can I facilitate a confirmation of a low-fee transaction by spending its output using a high-fee transaction? If yes, what Bitcoin client would allow me to do that?

There are 3 cases.

Case 1a:
if Fee(Tx1) < Dust Fee then Tx1 gets dropped by nodes that do not offer Free Relay Policy. Then all other transaction dependent on the outputs of Tx1 will never be committed to the blockchain, even though descendent transactions may or may not be accepted into the mempool of a subset of nodes in the network.

Case 1b:
if Fee(Tx1) > Dust Fee && Fee(Tx1) < Recommended Tx Fee then Tx1 will be accepted by mempool but eventual commitment is at risk. In this case, It is possible to boost fee rate by contributing more transaction fees, as described by 2quick 4u using CPFP, where Tx2 will contain a higher transaction fee than Tx1, lifting the mean fee rate which includes the ancestor transaction, Tx1.

Case 2: if Fee(Tx1) > Dust Fee && Fee(Tx1) >= Recommended Tx Fee then Tx1 gets accepted by nodes. All dependent transactions dependent on the outputs of Tx1 should eventually be committed to the blockchain, so as long as the fee rate for the root and dependent transactions are competitively high enough to be selected and committed to the blockchain. The reason why should is bolded is because a competitive fee rate is constantly changing based on demand in the network. So one will expect the fee rate to be significantly higher when the network is busy and vice-versa. Furthermore, there is usually a 72 hour limit on pending transactions that are in the mempool. Once 72 has elapsed and a transaction has yet be committed, it will be dropped from the mempool.


Am I making a lot of dust in my wallet? If I make a lot of little transactions, sending and receiving various odd small amounts (like 0.00201, 0.00319), does this make lots of little dust bits in my wallet?

Yep. You'll notice increased fees and confirmation times eventually. Those amounts aren't super dusty though, even smaller transactions are the ones that will really bog you down.


CLI: Generate a new private key, unrelated to any existing wallet I have a wallet on an offline computer, which has too many backups on connected computers.

I would like to generate a totally new bitcoin address on the offline computer, and use it as a cold storage address. I will then sign an offline transaction from the wallet to that new address and be safe.

How can I create a new Bitcoin private key from the Bitcoin CLI, without using any existing wallet keys / addresses?

I've looked into getnewaddress, but it seems to be getting the keys from the keypool on the existing wallet.

Note - I know I can use bitaddress.org offline, but I would like to use the basic bitcoin-core tools for this one.

Maybe do:

1.) Move to current wallet.dat to a different location (will result in creating a fresh wallet)

2.) Start bitcoind/qt with -keypool=1 (if you want to avoid keypools)

3.) Call getnewaddress

You might also consider using a hardware wallet.


How to receive bitcoin from the website I want to create a website which needs to achieve the following scenarios:

1.The user can send bitcoin to the bitcoin address we provide.

2.The website can create a new address every time the user clicks on the send button. For example:
2.1 The user enters 1 bitcoin and then click on Purchase
2.2 The website provide him an address and ask him to transfer the bitcoin to it.
2.3 We log the transaction as waiting for transfer.
2.4 The user enters 1 bitcoin again and click on Purchase button
2.5 The website provide him with another address and log the transaction
2.6 Mark the transaction as completed when the user transfers the money

3.We log each transaction and when the user sends bitcoin, we can detect and mark the transaction as completed.

What APIs should i use to achieve all of these problems above? Can blockchain info's API do?

Actually, all you need is just some basic bitcoin wallet client. There are many opensource wallet clients, most of which will satisfy your needs. Your could search for them on Google.


How to install Berkeley DB 4.8 on Linux? The Unix build notes do not show how to install version 4.8 apart from saying

  BerkeleyDB is required for the wallet. Ubuntu and Debian have their
      own libdb-dev and libdb++-dev packages, but these will install
      BerkeleyDB 5.1 or later. This will break binary wallet compatibility
      with the distributed executables, which are based on BerkeleyDB 4.8.If you do not care about wallet compatibility, pass --with-incompatible-bdb to configure. Otherwise, you can build from self-compiled depends (see above).

The referenced README.md from the quoted

  Now, you can either build from self-compiled depends or install the
  required dependencies:

does not discuss BerkeleyDB 4.8.

I know there is ./contrib/install_db4.sh in the source for installing BerkeleyDB 4.8 but it abords on my Ubuntu with curl: (7) Failed to connect to git.savannah.gnu.org port 443: No route to host.

You can compile it using this script in the Bitcoin Core repository:
https://github.com/bitcoin/bitcoin/blob/master/contrib/install_db4.sh . It will give you instructions about how to then ./configure with this compiled version in order to build the project.
Instructions about building Bitcoin Core are available in the /doc folder, for Unix systems it is at
https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md


Need help! Initial sync not progressing, BTC sent already, + warning message Please help! I look forward to your intelligent caring responses.
Here is the situation:
I'm trying to do the initial synchronizing of Bitcoin-QT, which hasn't progressed in 14 hours, and:
- Significant BTC has already been sent to an address generated by the wallet.
- My primary objective is to receive the BTC that was sent to me. If Multibit is a sufficiently secure/etc wallet alternative, I do not care about completing the sync process in order to use Bitcoin-QT ** - I just want to effectively receive the BTC that has already been sent.**

Here is the problem:

For the past 14 hours, there has been NO progress in the synchronization (after some progress in the time proceeding that). (The # of blocks processed has stayed the same, but the estimate of total blocks fluctuates - what i mean is, where it says "Processed 'x' of 'y' (estimated) blocks of transaction history" - the 'x' (i.e. blocks actually processed) has stayed the same for 14 hrs, the 'y' of estimated total blocks has fluctuated (sometimes larger, sometimes smaller).) - The golden arrow wheel on the bottom right is also not turning at all.
Also the following warning message is at the top of the Overview page: "Warning: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade."

Background on this: the whole synchronization was started over 24 hours ago, but in the middle of night Bitcoin-QT crashed. (I think the warning message appeared after the program crashed & was restarted.) Whenever I restart Bitcoin-QT, it takes 5 minutes of rainbow-wheel loading on "verifying blocks" on initial bitcoin-version screen.

(other info if relevant to resolving this: the machine is a Mac, Snow Leopard; Bitcoin-QT v.0.8.5-beta
-- The progress bar shows about 1/8th complete. That has also not budged in 14 hours.
-- I did try this on a different and faster internet connection/network for about 5 hours with same result except the last bar on the right did not go green like on my regular internet connection.
-- I do have the original .dmg download file if that's of any help.
-- I have restarted both Bitcoin-QT and the computer a # of times.
-- When the progress was actually happening yesterday before the program crashed, the arrow-wheel was turning and there was no warning message.)

So basically the questions are:

Is it actually synchronizing even though there have been NO signs of further progress for at least 14 hours & a Warning message has appeared?
What is the most effective - and secure - way for me to actually receive the BTC that were sent to me to this Bitcoin-QT wallet-generated address? Should I ditch trying to synchronize and try to receive them through something like Multibit? (Even if the initial sync ends up happening I will likely ditch Bitcoin-QT anyway for something like Multibit, as long as it is sufficiently secure.)

Your help is appreciated! Neither the sender nor receiver of these bitcoins wants them to be lost due some sort of synchronizing malfunction, if that is what's going on.
I look forward to hearing from you, oh intelligent caring knowledgeable BTC users.

If you want to switch to Multibit, you can get the private key from the Bitcoin-Qt wallet using the debug console:  Help -> Debug Window -> Console.  Enter the command:

dumpprivkey public-address

This will list the private key associated with the public address you used to send the coins to your wallet.  You can then import this private key into a Multibit wallet by following this guide to import a private key into Multibit.

If you want to keep using Bitcoin-Qt, you can download the initial blockchain and then start Bitcoin-Qt to synchronize with the network.  Go here to download the initial blockchain.  Delete the 'blocks' and 'chainstate' folders in the bitcoin data directory and then unpack the downloaded file in the bitcoin data directory.  Start Bitcoin-Qt and it will rebuild the blockchain and then synchronize with the network.

The bitcoin data directory can be found here,


Backing up my Bitcoin wallet I'm really new to Bitcoin (just started today) so forgive me if this question has been asked before but I can't seem to find an answer on Google. From what I understand, the Bitcoin program is capable of encrypting your wallet for you. So, can I safely encrypt the wallet (using bitcoin-qt) then move it to my Dropbox folder and then symlink it so the program will access the copy in my Dropbox. I don't really want to lose my wallet.

Yes, as long as you close the Bitcoin program first, you can copy the wallet.dat file anywhere you want to back it up. Just remember to keep it safe and use a password, and your Bitcoins will be safe. If you lose the wallet, you will lose the bitcoins you have in it forever (there is no option of recovery of lost bitcoins, unless you are talking about recovering lost files from your hard drive).


Bitcoin wallet showing balance, Blockchain receiving address shows 0.00, wallet is from 2009 and hasn't been synced Old wallet, like from the first client, Has not been synced for at least 7 years. BTC balance shown, 0 pend, 0 available and blockchain address shows 0 balance. Still waiting for entire blockchain to sync but its passed the deposit date by years with no confirmations. 0.00 pending/avail am I boned?

If you can still log into the OLD wallet that has the BTC in it, you could try to set up a New Wallet under a different email address and then pay yourself. It will move the currency you have in that wallet to the new one.
You'll have to pay a fee though, unfortunately but if that's the only way to get it back and on a New Wallet where you can access the BTC again and have it synced up with the rest of the blockchain... that's what it may come down to.
If you're still having trouble let me know, I have an old wallet with scrap coin I'm gonna try a few things to see if it's been updated ever and see if I can send it to my new wallet.


How is hoarding to be prevented? If all humans used bitcoins now (Jan 2013) for most of their transactions, then a dollar would be worth about a billionth of a bitcoin (1/10 Satoshi).

If bitcoins take ten years to catch on that fully, and population rises only a little while worldwide productivity doubles, then you could buy 5 candy bars for a Satoshi (1/10^8 BTC).

A house today, starter home might be worth 10 000 bitcoins or so. Paying a 30 year loan payment in Bitcoins would require a payment of a billion dollars a month at some point.

So I don't see how you could have viable loans in bitcoins until the system has settled down at least 30 years from now.

And if you have 1 bitcoin today, it could become worth 100 million dollars purchasing power in 10 to 20 years. One inexpensive coin worth an hour's labor.

So the system has an enormous potential reward for hoarding--far beyond working for a living, or any remotely normal successful investment.

How is hoarding to be prevented?

And I think this system is even more unsound than fiat money, albeit in a very different direction. But it IS likely to lead to drastically improved money in the long run.

Key points in bold.

Hoarding doesn't need to be prevented. At least, not yet. See this answer for a solid argument: How does hoarding hurt Bitcoin?

Bitcoin attracts hoarding by design. To change that would turn it into something else.

As Bitcoin matures, I expect that it will remain a problem that speculative trading brings  instability to the market, similar to the gold market. If you put your retirement savings into gold, you'll likely do quite nicely, but there's also a significant chance you'll lose most of it in a price crash. It's not a reliable store of value. Even if you have several years you can wait for the value to come back up, you may still lose out.

Even though bitcoins are more efficient to trade than gold and cheaper to store, it's subject to the same volatility when traders manipulate it. The more popularity Bitcoin has, the bigger the traders will be that take an interest in it, like they do in gold. This could mean that when Bitcoin is mature we still see the same level of volatility that we see today with Bitcoin (and gold).

To me, this says that Bitcoin is great for efficient online transactions, but in the long run (once the market has reached its saturation point) won't a completely reliable store of value. For that, a diversified portfolio of productive investments is better.

If that becomes common knowledge, then people will eventually accept the volatility as a necessary risk in the use of Bitcoin. After all, on average it will still almost certainly cost less than credit card transactions and traditional international money transfers. Secondly, risk-reduction services (ie insurance) tend to fill gaps in the market like that for those who don't want to take the risk.

In the meantime, Bitcoin is doing a great job, but it doesn't mean something better won't come along.


Namecoin: Is it possible to move a name_new to another wallet? How? With the current namecoin price this is more of a theoretical nature. It seems it is only possible after a name_firstupdate?

Each name registered in Namecoin is associated with an address. When updating a name with name_firstupdate or name_update operations, Namecoin wallet will automatically transfer it to a new address within the wallet.

Between name_new and name_firstupdate, there is no way to transfer a name to a different address (but it is still possible to register the same name a second time). However, it is possible to transfer an address to a different wallet. You would need to find which address the name_new operation is associated with (for example, by using block explorer). Then export the private key associated with that address and import it into another wallet. Now you would be able to issue name_firstupdate command from that wallet (you will need to use the four-argument form of the command). This will transfer the name to a different address, so the old address would not be used anymore.


Relation between Network Hash-Rate & bitcoin value? how is the relation betweeen network hash rate to healthyness of bitcoin, such as bitcoin value compared to USD, or the growth rate of this currency?

You can find graphs charting this relationship at http://bitcoinx.com/charts/. (scroll down)

Network hash rate and exchange rate are certainly correlated, but the relationship is very complex, I think it would be inaccurate to say that one depends on the other. In general, if price increases due to an outside factor (eg. new adopters buying Bitcoins) hash rate will go up, as you can see in the chart at the above link around July 2011, when price spiked and hash rate followed.

Impact of hash rate changes due to outside factors on price is harder to predict. Hash rate increases can lead to increased investor confidence in the currency (which would increase price), but they can also drive miners on the edge of profitability out of mining and potentially even Bitcoin, decreasing the price. (less participants in a market generally leads to price decreases, though not always)


How do I buy Monero with my Bitcoin? I saw a guy on CNBC talking about Monero, how do I buy with BTC?

Alex, Monero is listed on all of the major exchanges (bittrex, poloniex, kraken, binance, etc.). The non-exchange options like shapeshift or changelly make it possible without doing this, as mentioned above. It's none of my business, of course, but do some research before buying into a new coin (I wouldn't take advice from CNBC although I like Monero and own a few coins). There are a lot of privacy-focused coins out there now that have a variety of pros/cons. Here is a non-exhaustive list of coins that have varying degrees of privacy built in... https://drive.google.com/open?id=1PVSBXpjHaqkJv8mLY5AEPk-6AP7BA1BgW7IOPG-h0mc


How would I push a negative number with OPCODES onto the stack? If the user wants to push -10 onto the stack.

Would I do "10 OP_NEGATE" ?

Or could I convert it to the hex value by doing 0x80 + 10 = 0X8A ?

Both will work. OP_NEGATE simply XORs with 0x80, so you can also directly push the result.


Interpreting exchange rates I don't know whether the graph is wrong, or I'm interpreting it wrong, but it appears to say that if I had converted a dollar ten years ago (I didn't), I would have received 20.0 XBT, and if I didn't lose it, I could today convert it to more than twenty thousand dollars.  Seems hard to believe.  Is it actually true?  The answer will not benefit me financially, but I'm extremely curious.  :-)

It's not exactly true.  Bitcoin didn't exist ten years ago.  The initial version was released in January 2009.

But it is true that early in its history, Bitcoin could be bought very cheaply, and I am sure there was a time when you could have bought 20 XBT for one dollar.  (There was a famous transaction in May 2010 when two pizzas were exchanged for 10,000 XBT.)  And it's true that 20 XBT today could be sold for over $20,000.

You should not interpret this as any sort of indication that investing in Bitcoin today, or in any other cryptocurrency, is likely to provide the same sort of returns.


Bitcoin QT wallet crashed. Recovered using Bitcoin Core. Now password rejected! My encrypted Bitcoin QT wallet crashed years ago but I have backup copies.
It was an earlyish version of Bitcoin QT wallet, first transaction on it is 09/2012.
I have loaded the backup into Bitcoin Core v0.14.1 (64-bit)
Full transaction history is there, wallet has synced.
The password is rejected.
I wrote out the password exactly for safe keeping so I know it is correct and never changed it. There are a number of send transactions so it seems I must have used the passphrase a few times.
Have entered in every imaginable variation.
Could it be because of the upgrade from QT to Core?

As far as I know the versions should be backward compatible but I don't know how far back, 5 years is quite a long time, Bitcoin Core have had 30 releases since then.

I found two changes that might impact wallet compatibility in my opinion:

Version 0.9.0 (19 March 2014):

  Also, the first time you run a 0.8.x release on a 0.9 wallet it will
  rescan the blockchain for missing spent coins, which will take a long
  time (tens of minutes on a typical machine).

Version 0.13.0 (23 August 2016):

  HD wallets are incompatible with older versions of Bitcoin Core.

Anyways, I would suggest to make a backup copy of your wallet, download an older version of Bitcoin Core, copy the wallet to the data directory of that client (you might need to specify it using -datadir C:\bitcoin_old\data), start the client (no need to synchronize the blockchain), export the private keys, exit, move away the wallet.dat from the data dir of your new Bitcoin Core client, then start it and import the private keys to your newly created wallet.


Why does Taproot require a new address format? Dawid Ciężarkiewicz asked on Twitter:

Hey #bitcoin ers. I'm trying to figure out why taproot needs a new
address format, as I missed it. If you have a good link or something -
please share. I thought that "A Taproot output is a native SegWit
output with version number 1 (...)" means that bech32 will do.

and I'm asking the question here to provide better visibility to the question and answer.

Background
P2TR addresses will be encoded using Bech32, although likely an amended version. In anticipation of Taproot getting merged, some proponents tested the behavior of various wallets and services regarding segwit v1 outputs. BIP173 prescribes that known restrictions should be enforced for Bech32 addresses, but that "implementations MUST allow the use of any version". The tests found that multiple wallets and services did not adhere to the spec, but rather either failed to create segwit-v1 outputs, or worse, silently downgraded them to segwit-v0 outputs, using the same output script but malleating the segwit version and thereby burning the funds.
Last year, it was also discovered that Bech32 is subject to a length extension mutability. Addresses with a specific ending can be extended by inserting specific characters (or removing them if they appear in specific positions). This is largely inconsequential for native segwit addresses due to their restriction to either 42 or 62 characters.
A recent proposal aims to fix both issues by amending the checksum calculation for Bech32. Using this amended format for upcoming segwit output verisons would protect funds from being burned as downgraded outputs would no longer comply with segwit-v0 checksum requirements, and at the same time remedy the length extension mutability for segwit-v1–v16.
Paying to segwit v1 addresses
The segwit spec explicitly permitted creation of all versions of segwit outputs. Therefore, it was expected that all segwit-enabled wallets would be able to create P2TR outputs out of the box.
According to the mentioned tests, many wallets and services did not comply with the spec, but would require updates to support sending to P2TR. Under the proposed change, wallets would have to additionally update the checksum constant for segwit-v1–v16 bech32 addresses.
Spending from P2TR outputs
The Taproot BIPs prescribe a new script version (Tapscript), Schnorr signatures, and the Taproot output format, so spending from P2TR outputs will require more implementation work in the first place, especially to make use of advanced features such as script path spends or using aggregated keys in the key path.


How does MultiBit figure out balance of an imported address? MultiBit is a Simplified Payment Verification (SPV) client that uses the merkle root of block headers to validate transactions. I'm wondering however, when an address (private key) is imported into MultiBit, how does it know its balance without going through all the transactions within the blockchain?

When MultiBit imports a private key also in the import file is the key birthdate I.e when it was first generated.

From that date it looks up the most recent checkpoint (about every 2000 blocks) in a list of checkpoints it stores.

Then it contacts a bitcoind and says 'give me all the blocks from block (say) 200,000. Here is the bloom filter I want you to use to filter the blocks'.

This is fairly time consuming  compared to if you have a blockstore. (Or something like a remote server like Electrum and Mycelium do). The advantage is that it only uses the Bitcoin Network.

It now has all the relevant transactions for that private key and hence can calculate the overall balance.


What's the advantage of using non-truncated mining targets? Bitcoin Wiki (Difficulty):

  The highest possible target (difficulty 1) is defined as 0x1d00ffff,
  which gives us a hex target of

0x00000000FFFF0000000000000000000000000000000000000000000000000000

  It should be noted that pooled mining often uses non-truncated
  targets, which puts "pool difficulty 1" at

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

From what I know, using non-truncated targets puts the target at a higher number than the network would accept. In other words, we may end up finding a hash accepted by the "pooled mining" (lower than non-truncated), yet rejected by the network (higher than truncated).

Why do people use non-truncated mining targets?

Why not simply use the actual truncated targets so that we can have a more accurate picture of the network and avoid overheads incurred as such?

You are right, it could happen you are finding a hash that meets the pool target but not the highest possible target. But because the difficulty is way higher than one, and therefore the share wouldnt finish the block anyway, its not in their interest. You have done your work and you will get your share. They just make it a bit easier for you, by passing a higher target than possible.

Another possible reason:
Comparing a hash to the highest possible target would take more time, because you have to check the whole hash (checking the zeros at the end as well). With the non-truncated target you only need to check until the first F occures because than its at least equal or lower.


In case of a grouped transaction, how to determine who sent what to whom? Trying to understand how grouped transactions work, I came accross the following transaction on blockchain.com :

There are many senders, and even more receivers. For instance, the first sender on the picture could have sent 1 BTC to the first receiver, 10 to the fifth, and so on...
How can I determine (if it is possible) what amount sender A sent to receiver B , instead having the balance for each participant ?

How can I determine (if it is possible) what amount sender A sent to receiver B , instead having the balance for each participant ?

You pretty much can't. Often times, transactions like these are created for the purpose of making it difficult to determine which inputs are sending money to which outputs. Such transactions are called CoinJoins, so named because multiple people are joining their coins together in one transaction.

There are some techniques for determining which outputs are created by which inputs, but these techniques are not foolproof and often make assumptions that are not guaranteed. In fact, many software that make Coinjoin transactions are designed to make those assumptions non-viable and thus break such analysis so that the participants in the CoinJoin have more financial privacy.


From multibit to electrum : low fee and unconfirmed parent I made 3 btc transfer from my old Multibit classic wallet a few weeks ago (dec. 11), then I discovered that the fee was far too low for the transfers to be confirmed.

I then restored my original wallet into Electrum, and it shows me these 3 transactions with different status :

Low Fee (44 sat/byte) - 0.0068 btc
unconfirmed parent (52 sat/byte) - 0.04497458 btc
unconfirmed parent (19 sat/byte) - 0.1221 btc

Unfortunately I cannot adjust fee on these transactions, so I tried a CPFP when making a new transfer from another wallet I created in electrum to my original wallet, but no result.

I tried to reproduce the 1st transfer, from the original wallet, same src/dest and amount but with Higher Fee (598 sat/byte)... no result.

I'm afraid to be stuck at this stage, I don't know what to do to unlock these transactions :( any detailed advice is welcome ! (i'm on OSX if asked).

Seems like your 589 Sat/Byte went through now, however that transaction is not a double-spend of your 1st transaction because the total output Total Input amount is different.

Transaction e9723fdf6c923a278304e7bffcd3089f4175dabf2ca1702516718195e005e5dd is also not a CPFP of the 3 transactions you mentioned above.

If you want to attempt a CPFP on those 3 transactions, you have to spend the unspent output 17HiELrskFprzREjeLDYNuDARV64Q59Ta6, transaction cf617f5908f89c604a5a575b0eac1c570141868569be38510da8916d5f397628.

Did the math for you:

Add all transactions including your new soon to create CPFP transaction:
Great-grandparent + Grandparent + Parent + Child
225 Bytes + 521 Bytes + 192 Bytes + 192 Bytes = 1130 Bytes

Then add up all paid fees:
10000 Sat + 10000 sat + 10000 sat = 30000 sat

Divide to get current Sat/Byte:
30000 Sat / 1130 Bytes = 26,55 Sat/B

Estimated fee to confirm within 60 min. At least 379 Sat/Byte.
Check out https://estimatefee.com
Subtract to find difference needed:
379 - 26,55 = 352,45 missing Sat/B

Fee for new CPFP transaction:
352,45 Sat/B * 1130 Bytes = 398268,5 sat = 0.00398268 BTC

Fee per byte for the new CPFP transaction:
398268,5 Sat / 192 Bytes = 2074,3 Sat/B

Conclusion:
Make a new transaction, send BTC from 17HiELrskFprzREjeLDYNuDARV64Q59Ta6 with a minimum fee of 2074,3 Sat/B and all your transactions will most likely confirm within 60 min. Or ask miners for help.

Click here for visualization of double spend

Click here for double spend example with Electrum.

How to double-spend(if your client allows it):

For example directly to your Bittrex address and some changes to yourself:
Create a transaction that spend the same
Unspent Transaction Output(0.16123728 BTC) as in your 1st transaction.

FROM 1GeAmqqQn1LxBebtt6tmuPVHfzEo9jWPrH (0.16123728 BTC)
TO   17HiELrskFprzREjeLDYNuDARV64Q59Ta6 (0.04497458 BTC)
AND TO  1GeAmqqQn1LxBebtt6tmuPVHfzEo9jWPrH (0.1153587 BTC)
With 400 Sat/B as fee.
If I did the math correctly this transaction should have total output 0.16033328 BTC.

Or if you prefer to send it all to yourself:
FROM 1GeAmqqQn1LxBebtt6tmuPVHfzEo9jWPrH (0.16123728 BTC)
TO   1GeAmqqQn1LxBebtt6tmuPVHfzEo9jWPrH (0.16123728 BTC - fee)
Include a reasonable fee(estimatefee.com) so it confirms within your desired timeframe.
If this transaction gets confirmed first, then your 3 transactions mentioned above will be rendered invalid/disappear.


bitcoin payment using Blocktrail? I am integrating blocktrail api in my web application and i am new to bitcoin.
I created new account in blocktrail,and created new wallet.And it is 0.00000000 tBTC  now.
Will you please tell me how to make payment using this blocktrail?
I foud the code in https://www.blocktrail.com/api/docs/lang/php#receiving_transactions.But How to transfer bitcoin to our merchant account from client?

-error is coming "Uncaught exception strong text'Blocktrail\SDK\Connection\Exceptions\EndpointSpecificError' with message 'Wallet balance too low'";

You need to grab some testnet coins in your new wallet. You can get them from any number of testnet faucets.


What criteria does Bitcoin.org use to choose which wallets to list At this point there are hundreds of Bitcoin wallets available https://bitcoin.org/en/choose-your-wallet

Clicking on a wallet reveals some areas where wallets are compared:

Control
Validation
Transparency
Secure Environment
Privacy

Some excluded wallets are superior in some of these categories than the wallets listed. Is there a formal review process or criteria for wallet inclusion that someone can reference for me?

I asked Craig Watkins, Bitcoin.org's wallet page maintainer, to comment.  The rest of this answer is his reply.

  Currently on bitcoin.org there are 21 wallets listed (including three
  "hardware wallets").

  Bitcoin.org is a community maintained site:
  https://bitcoin.org/en/about-us

  Updates to the wallet listings are submitted as pull requests on
  github: https://github.com/bitcoin-dot-org/bitcoin.org

  and approval for listing is based on community consensus of complying
  with the criteria listed here:
  https://github.com/bitcoin-dot-org/bitcoin.org#wallets

  The pull requests can be submitted by anyone, but are most often
  submitted by the wallet developers themselves.  Reviews can be
  performed by anyone, but are usually done by the current bitcoin.org
  wallet maintainer who offers an opinion on the compliance to each
  criteria listed.  The reviews, discussions, and results for each of
  the current and past pull requests can be viewed here
  https://github.com/bitcoin-dot-org/bitcoin.org/pulls


Trying to access an old wallet.dat So I found my old mining wallet from 2012 that I earned some 0.5BTC on, but I'm having trouble accessing the file. I've tried following the instructions here (opening an old wallet.dat), but I'm running into an error using the pywallet program. It throws

File "pywallet.py", line 852
    _p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2FL
                                                                           ^
SyntaxError: invalid syntax

I've tried adding it into a new install of Bitcoin Core, but it appears as though I need to download the blockchain before it will scan my wallet as it isn't showing me any info about the wallet (like previous receiving address). Let me know if I can provide more information.

While I did wait for the blockchain to download and to see if Bitcoin-Core could simply read its own file. The program failed to read in any of the info from my wallet.dat file, even after following the instructions in the post listed in my initial question. I ended up using walletool, which worked without a hitch. It gave me a list of every public and private key associated with the wallet. It has a script for checking your balance, but I was unable to get it to work reasonably quickly and ended up manually checking the balances of each address using bitref.


Official or default Bitcoin wallet for Android I'm new to cryptocurrencies, and I noticed that both Litecoin and Dogecoin have official wallet apps for Android.

Does Bitcoin similarly have an official Android wallet app? If not, is there a community standard or some widely used app?

I don't think the Bitcoin Foundation or any similar authority has designated an official or preferred Android app, not in the same way that Bitcoin Core is the "official" desktop client because it is the reference implementation.

But the most popular one seems to be Bitcoin Wallet by Andreas Schildbach.


I am confused about the difference between a fork and a client, can someone explain? My understanding is that clients are different software environments which run on top of the decentralized computing infrastructure which is the blockchain architecture. The most popular of which by a large margin is Bitcoin Core. This made sense to me but I recently read that different clients process different types of transactions. For example, Bitcoin XT would process different transactions than the Bitcoin protocol. Would this not make it a fork of the original blockchain as opposed to a different type of software. How does Bitcoin Cash come into this also as they process different types of transactions but have their own blockchain? Should they not also be listed as a client?

Since everything is open source, anyone can take something, make some changes and it'll be different.

Some good examples:

Dash
Dogecoin
Litecoin
Bitcoin Cash

Just a few examples of someone taking Bitcoin's core code, tweaking it, and releasing it. Given some of them did it in different ways. Doge for example started over with Block 0. It's considered a "new coin". While Bitcoin Cash used the history of Bitcoin up to a specific block, before their changes took effect. This is a hard fork.

A node configured to run (or in some cases simply a flag in the config file) Dash, will not receive/process/store Litecoin blocks. The same way a Bitcoin node will not receive/process/store Bitcoin Cash blocks (once the block where the hard-fork occurred was hit). (I'm aware there are nuances to this but brevity is taking priority)

Finally to touch on your first point, there can be many clients for a specific coin. It's open source. There is no "official" client for Bitcoin as it's decentralized from the ground up. Some chains use a more centralized development process like the Ethereum Foundation. While they provide more input (as well as some communities have more sway over specific chains) it is ultimately up to the individuals running nodes on if they will upgrade and support the changes. This is best highlighted in the hard fork for Ethereum 25 October 2016. Those that did not fork were left with the original code and original coin now referred to as "Ethereum Classic".  Those that did upgrade, were then using the current day "Ethereum".

In the end no matter what client is used, it must follow the same basic protocols as the network it's trying to interact with. As long as it does, then it can be used.


Higher cost running Antminer S9 w/ APW3++ when running at 220v? There's plenty of discussions on 110v vs 220v on the web and I'm successfully running 2 Antminer s9's on a 30amp circuit at 110v (or maybe it's 120/125, I don't know how that works).

I have not hooked up a volt/watt meter tool up, but if the APW3++ is to deliver 1200 watts @ 110v or 1600 watts @ 220v, does that mean it will cost me more KwH's to run on 220v, therefore making it less profitable?

The AntMiner S9i 13.5 TH/sec model requires 101.5 Amps DC.  Since power (watts) is equal to voltage multiplied by amps, the total power consumed by the AntMiner is 1218 watts (+/- 10%).  Note, this is regardless of whether that's AC or DC, and regardless of voltage.  1218 watts is 1218 watts, or if you run it for an hour, 1.218 KW/hr.  In my case, that works out to about $54.44 USD per month, regardless of voltage.

The APW3++ power supply doesn't care what A/C voltage you supply it with, in the range of 100 to 240 volts, it simply converts that into the required amps output in DC.  If the AntMiner is puling 1218 watts, that will translate (at 93% efficiency) to 11.85 amps at 110 volts, or 5.43 amps at 240 volts.  Running two AntMiner S9s on a single 120 volt 15 amp circuit is pushing the boundaries of safe operation.  You should ensure you only run a single AntMiner per 110 volt circuit, unless those circuits are fed with 12 gauge or lower wiring, and are rated for at least 20 amps.

Attaching the APW3++ power supplies to 240 volt circuits simply means you are pulling less amps per hour than if it is connected to a 120 volt circuit, and you can connect two, or possibly three, AntMiners to a single 240 volt circuit.

So, to answer your question, no, it's not more expensive to run at 240 volts than 120 volts.  In fact, due to power efficiency, it's probably very slightly cheaper to run at 240 volts.


How would one go about generating a BIP-38 encrypted vanity address for cold storage? I want to generate a vanity address with BIP-38 encryption for a cold storage paper wallet, how would I go about securely making one? From what I've found, generating a vanity address with Vanitygen does not allow me to encrypt the key. Or is a vanity address advisable at all for long-term cold storage?

Take a look at http://bippy.org.

The main potential issue I see with using a vanity address for cold storage is in spending from the address multiple times. If the wallet software you use isn't properly crafted (i.e., by using RFC 6979) there's a possibility that it will use the same k value during ECDSA on the transaction, which will make it possible to recover your private key (see this). Note that this potential issue applies to any address for which there is more than one spend, not just vanity addresses. But I bring it up in particular here since the nature of a vanity address implies a reasonable likelihood of multiple spends from the address.


Mining software and pool tricks Just changing the nonce of a block to be mined is not enough to cover enough hashes to solve it. What are the most common tricks used by the mining software and pools in order to create enough getwork variants to solve the block? Which can be done only by the pool, and which can be performed by the miner?

The generation transaction has an extraNonce value in the coinbase field, which is the default value to change to get a new getwork. This is generally done by the pool but can also be done by the miner if he gets the relevant Merkle branch.

The timestamp also can be changed by the miner, and the entire list of transactions changes occasionally on the pool's end.


Do miners have an incentive to confirm various transactions from same address? Mempool is really clogged those days. I tried to make a transaction from one of my address to a friend. As we didn't care about confirmation time, I put a 5 sats/bit fee.
2 weeks later, transaction still wasn't confirmed. But, from same address, I had to send another transaction of all remaining funds on the address. I was in a hurry so I put next-block estimate fee.
My second transaction has been confirmed as planned in next block but, interestingly, my first transaction was also confirmed in that block, even if mempool was still clogged.
I want to understand what was the incentive for the miner to confirm my first transaction, and if I can use this mecanism.  For example, if I have to send 2 transactions with confirmation in next block, can I be confident to put high fees in only one of them?

It sounds like you have rediscovered a mechanism called child pays for parent.
Generally, no, two independent transactions could get included in any order even when they were sent from the same wallet or involve the same address.  There is no efficiency benefit to reusing addresses, in fact it has significant downsides especially for privacy.—Miners will simply pick the transactions that maximize the transaction fees collected by their block. In effect, transactions with higher fee rates get prioritized.
However, I don't think the transactions were independent in this case! Usually, when you make a payment from a wallet, the wallet will not have exactly the amount you're trying to pay available in a distinct UTXO. In that case, when you send the payment, the inputs make up more funds than the payment amount and your wallet creates an additional change output to assign the remaining funds to itself. When your second transaction spent the wallet's complete balance, it would have also spent the first transaction's change output. I'm confident that this is how the two transactions became dependent.
When one transaction pays another transaction's output, they can only appear in topological order in the blockchain. Obviously, funds that don't exist cannot be spent. So, when a transaction spends the output of an unconfirmed parent transaction, the child is invalid unless the parent precedes it.
Now, you say that your second transaction paid a large transaction fee. This incentivized the miners to include the child transaction, but to be able to include the child, they first had to include the lower feerate parent. It turns out that the fee bid by the child was sufficient to make the whole transaction chain attractive for inclusion: the child paid for the parent.


How can I retrieve my bitcoins when the client crashes as soon as it begins synchronizing As soon as the client begins synchronizing it crashes. It's stuck at 139,500 blocks left. I am brand new to bitcoin and sent $300 to an address on this client.

The quickest way is probably to import the private key of the address to which you sent the bitcoins into blockchain.info's web wallet service.

obtain the private key for the address which holds your bitcoins
visit https://blockchain.info/wallet/
click 'start a new wallet' in the top left
type a password twice, solve the captcha, and click 'continue'
copy/paste the long url (https://blockchain.info/wallet/random-stuff-...) and keep it safe
visit the url you just copied, and log in using the password you just chose
click the import/export tab, then click 'continue'
paste your private key into the 'import private key' box and click 'add private key'
now you should see your balance, and can spend it from the blockchain.info web wallet

Alternatively, if you want to keep using the satoshi client, you might find it useful to download a recent snapshot of the blockchain and let it update from there.


How to get the MPK using bitcoinj and how to generate the addresses using the MPK? I am trying to get the MPK of a wallet using bitcoinj. Can I get the DeterministicSeed, which is the seed of the wallet and get the MnemonicCode of 12 words. But I can't get the MPK. As I can make it using bitcoinj?

I have found the way to do it:

    DeterministicKey extendedKey = wallet.getWatchingKey();
    String mpk = extendedKey.serializePubB58(wallet.getParams());


Satoshi's final statement I read some articles about Satoshi's history and stumbled upon this one:

  No one knows what Satoshi is up to, but one of the last emails he sent to a software developer, dated April 23 2011, said “I’ve moved on to other things. It’s in good hands with Gavin and everyone.”

Source: http://www.coindesk.com/information/who-is-satoshi-nakamoto/

This sentence of Satoshi is quoted many times in the web, but I can't find a source who published it or to which developer it was send. I know there are archives of Satoshi's mails but I didn't find this statement in any of them.

Does anybody have further information about it?

I've got an answer on Reddit:

It's likely to have been written in a PM or an email to some developers, and it seems that Mike Hearn (BitcoinJ) was the one who published this statement:

  Mike Hearn - February 25, 2013, 12:48:54 PM

  He communicated with a few of the core developers before leaving. He
  told myself and Gavin that he had moved on to other things and that
  the project was in good hands.

Source: Re: Could Satoshi come back and tell us what he/her thinks about the block size?

Still, if someone has additional information I would be glad to know about.


Bitcoin communication with non-standard ports I'm writing a Bitcoin web app that is to be deployed on an external server over which I have no control. I probably won't have access to standard Bitcoin port (8333). Will this cause a problem when connecting to standard Bitcoin clients, or can they handle communicating with a non-standard port number? Are there any Bitcoin-related applications that also use other ports to communicate (like a pool or the like)?

If you make only outbound connections it won't matter what ports you use. Your client will be able to fully participate in the network without any issues.


What can an attacker who controls majority or all of the full nodes do? What happens when a strong attacker has control of majority or all of the full nodes?

What damage can he do and would they be reversible?

Here is an additional answer about what you can do if you control all fully validating nodes (but not necessarily all nodes that don't validate):

Anything

Bitcoin's security rests on auditing by full nodes. It is directly what prevents them from accepting fraudulent payments, and indirectly what makes it uneconomical for miners to produce invalid blocks (which in turn could be used to defraud non-validating clients).

If you have control over all fully validating nodes, you can effectively set the protocol rules at will. Including but not limited to theft and printing money out of thin air (beyond what the subsidy schedule currently permits).


Practical difference between mainnet and testnet I managed to write a piece of code that generates a bitcoin address and creates a transaction. I would like to make some tests on the testnet but it seems to lack some documentation. So far I figured that we use a different version 0xEF (rather than 0x80) when creating a WIF key, and that we use a net byte of 0x6F (rather than 0x00) when creating a public address from the public key.

What other differences are there? The differences I mentioned above are not sufficient to create a valid public address it appears. Maybe the base58 encoding is different? What about raw transactions?

The difference between a main net and test net address is exactly the first byte (and of course the checksum). The base58 encoding method is not different, but due to the first byte being different (and 256 doesn't divide by 58), the whole address does look different. For example:

Public key: 03919f9806cd4d07b588b14bcf7f5e8466d1c59f3694eb24101bbf59b91f933bfa
Main net address: 1KHL3He8D171NX8MpLH4XGsBqBjMmEDrHC
Test net address: myoHLLj722YG9dbyXuFSMC5WhBL4h7nqhs

I can't say what your problem was attempting the testnet transaction as you haven't given any details but there are no great differences between the two (raw transaction format or address formats etc.) or it wouldn't be much use as a test.


Pictures and non-transaction data in block chain It is well known that non transaction related information has found its way into the block chain. This raises multiple questions: (1) How was it done, and is it still possible (2) If someone where to introduce contraband into the block chain, this would be propagated to all copies of the ledger. Could make it illegal real quick. I know my questions are from a devils advocate - not because I don't like BitCoin, to the contrary, but I want to fully understand its risks as well. Thanks

It is still possible to embed data into the blockchain, and it is actually fairly trivial. But don't do it. It is rude and detrimental to the network as it takes up resources to host your random data on all full nodes in the network. The polite way to do it is to create an OP_RETURN output, but that only allows up to 80 bytes of data. The impolite way is to just put your data into the output script since output scripts are not validated until they are spent. But that is impolite as the output is not provably unspendable (and thus can be pruned from the UTXO set) so it will take up full nodes' disk space and memory.


How to use Multisig feature on Bitcoin Core RPC in an online exchange? I've craeted a small online exchange based on Bitcoin Core. The features in this application are:

User send request to get a new address, and the Bitcoin Core generate a new one with defined passphrase.
User can receive BTC on his own address.
User can send BTC from his own address, and for this purpose, I've used sendtoaddress after unlocking account with walletPassphrase.

In this scenario, there is one complicated passphrase which is able to unlock all accounts. But after reading about multisig feature, I thought about implementing a scenario in this regard on my application. But there are some questions in my mind:

I have used a fixed passphrase in my codes while sending transactions. Regarding to multisig concepts,  I need to use different private keys to sign data instead of using a passphrase to unlock that account. Am I right?
As the operation in an online exchange should be do automatically, I think I have to use all required private keys in the final step of my codes. In this case, I think I did not add any new security mechanism to my application as everything is located beside each other. Can I cound on security impact of multisig accounts in my application at all?

I hope you can help me so solve these issues in my mind.

Multisig does not make funds more secure just because you are using multisig. Multisig requires multiple keys to sign in order to release funds. The typical use case is with multiple parties holding the required keys. That way in order to spend multiple parties need to agree and sign. If all of the keys required to sign are held by a single party then it defeats the purpose of multisig and no additional security has been added.


Did Satoshi Nakamoto (in his blogs or the whitepaper) forecast that mining pools would exist? Mining pools are common today where users pool their resources together and share profits accordingly. Such pools today can account for significant proportions of a network's hash power and they're are risks shold a coalition of malicious parties form a pool with 51% of the mining power.
My question is, did Satoshi ever forsee this coming or consider it as a possibility that may arise? Did Satoshi ever provide any thought about the positive/negative implications of the existence of mining pools?

Nakamoto did discuss the idea when others brought up the notion of cooperative mining, but I don't know if he wrote about it before anyone else came up with the idea.
You can search an archive of Nakamoto's communications
https://satoshi.nakamotoinstitute.org/posts/bitcointalk/threads/250/?view=satoshi

ribuck's description is spot on.
Pool operators can modify their getwork to take one additional parameter, the address to send your share to.
The easy way for the pool operator would be to wait until the next block is found and divy it up proportionally as:
user's near-hits/total near-hits from everyone


Will merged mining mine each chain as efficiently as non-merged mining? Let's say I get a hash rate of X when mining either Bitcoin or Namecoin.

When using Merged Mining, will I be able to still do X concurrently on both blockchains, or will I do significantly less than X?

In other words, if I merge-mine other coins, will it hurt my Bitcoin mining rate at all?

Every hash you do will contribute fully to the hashing power of both block chains. You will have to do a tiny bit of extra work when you generate a work unit, but that's almost insignificant, and you only need to generate a work unit once for every few billion hashes you do.

You will generate just as many Bitcoins as if you only mined Bitcoins and just as many Namecoins as if you only mined Namecoins. There are only two downsides of any significance. First, your Namecoin blocks will be a bit larger than they would otherwise be, since they include Bitcoin headers. Second, you will have to generate new work units every time a new block is discovered on either hash chain, so about twice as often. (This can be a big deal for a large mining pool.)

See my answer to this question for details on merged mining.


How do I get rid of My so called bitcoin account I was recently contacted by Brian from Bitcoin telling me I have registered but I did not. How do I delete the account and for them to stop phoning me

There is no such thing. Either you misunderstood this person, or he was lying.

Bitcoin is a decentralized digital currency. It is not a company with representatives that contact you or that you can have an account with.

There are companies that provide Bitcoin-related services and you may have registered with one, but based on your description this is not likely the case.

Probably you are the target of some form of scam. Scams have existed long before Bitcoin, and it's quite common that scammers call people and ask for their money under all kinds of false pretenses. The fact that this particular scammer has chosen to specify "Bitcoin" as a pretense alters nothing.

If this persists, contacting your local law enforcement could be prudent.


What problem set is the Minisketch library designed for? What is it currently used for and what could it be used for in future? What problem set is the Minisketch library designed for? What is it currently used for and what could it be used for in future?

libminisketch is a library implementing the PinSketch set reconciliation algorithm and was covered in this Bitcoin Core PR review club. In theory it could be used for any problem where you have two sets of data and want to work out how those data sets differ (which specific elements are present in one but missing in another) as efficiently as possible.
The primary use case for Minisketch at the time of writing (February 2021) is Erlay on Bitcoin.
Erlay is a proposal for more bandwidth efficient transaction relay in Bitcoin and was covered in this Bitcoin Core PR review club. The Minisketch library is used in Erlay for set reconciliation between peers (peers generally have slightly different sets of transactions in their individual mempools).
There is also potentially a Lightning use case for Minisketch which was described by Rusty Russell in this lightning-dev mailing list post. Lightning nodes exchange gossip messages in an attempt to understand the topology of the network (nodes and channel sizes). They use this understanding to construct a route for a payment to a specific destination. This idea has not been implemented at the time of writing (February 2021). More centralized solutions such as LN-sync are currently used to address this problem.
There are also potential use cases unrelated to Bitcoin for Minisketch too. Pieter Wuille stated on IRC:

One of the most deployed uses of efficient set reconciliation algorithms is in the way PGP keyservers synchronize (or at least used to); that's using cpisync (an earlier algorithm before pinsketch was invented, which has far worse performance)

For additional possible applications of Minisketch see the Applications section of the README.


What are the risks of using Strongcoin.com as an online wallet? Strongcoin claims it is "The Safest way to store your Bitcoins. The only Bitcoin e-wallet service that's not vulnerable to security breaches. Your Bitcoin keys are encrypted in the browser."
As I understand it, with their system your private keys are essentially encrypted by your browser before they are sent to the website. They also appear to have a method of creating an encrypted paper copy of your wallet so you can restore your wallet if the website disappears.
Even so, it seems you're still potentially vulnerable if you access your wallet from an infected computer (i.e. through keystroke loggers and more advanced logging techniques).
What other risks are there in using such a service?
Note: I have not used Strongcoin, and have no affiliation with them in any way.

I am the operator of My Wallet which is a similar javascript based wallet service. I will try and keep this answer as impartial as possible.

The Website Owner is Malicious

The website operator is free to change the javascript code at any time so if they are so inclined can change the code to uploaded your unencrypted keys or intercept your password. If you do not trust the site owner it is therefore not recommended you use such a service.

The website database is leaked

Assuming the site has been programmed correctly in the event of a database leak only your encrypted keys will be leaked. The attacker maybe able to brute force your password if it is not secure enough, but as long as users are made aware of the leak they will have enough time to move their coins to new addresses.

The website server is compromised

In the event of a full server breach the attacker may be able to alter the javascript code or website code to send him an unencrypted copy of the keys next time you login. This type of attack is generally less common than database leaks and to have any significant effect would need to go unnoticed by the site operator.

You forget your password

As your password is never sent to the server the site owner cannot offer a password recovery procedure. In the event of a lost password your key(s) will be unusable. Paper wallet backups can help with this.

Key logger or virus

If you have a key logger or virus on your computer it is possible to that it could intercept your password which the attacker can then use to login to your wallet and spend your coins. Traditional desktop wallets are also vulnerable to this. My Wallet is less vulnerable to this as the site supports yubikey two factor authentication.

One final note: Using My Wallet you can add your Bitcoin address only without the associated private key. If you then keep a paper wallet backup of your private key even in the event your account is compromised there is nothing to steal.