Who wrote the actual bitcoin software? Who wrote (and owns) the actual bit coin mining code?

If the origins is not crystal clear, it will be very difficult to explain its use to ordinary everyday people.

You can find a list of contributors to the official bitcoin software here: https://github.com/bitcoin/bitcoin/graphs/contributors

Over 160 people have contributed to writing the bitcoin software, not counting the ones like Satoshi him/themselves who wrote the initial version of the program.

But the important part is that many more people have actually read and reviewed the source code. You can review it yourself if you learn how to program, and judge for yourself that the software is doing what it actually claims to do.

So it doesn't matter at all that we don't know who initially wrote it.

If you read or heard about a great idea somewhere, would you discard it simply because you don't know who actually had the idea? If the idea is useful and it makes sense, it should be used regardless of the creator.


I need help with an bitcoin open book exam I am completely new to bitcoin and by extension cryptocurrency, but I am slowly getting my head around certain things. My problem is I am currently doing an open book exam and I am free to use any resources available to me. One of the questions asked was "What is the address with the path m/0/2 for the following wallet: zpub6nQF4m3JT6hTkQ4o9Vc8LDMQx7nMkT5CsnPgVHnnrpF9JHeP6ioboEK2CXB34Xn6nzqcJnLPuMqQaKqBhwvZR7GJNvSeRUpDpCaVu3N3stz"? Is there a way to find this out or is this a trick question since from the hours of research I have done so far I have found that zpub and xpub keys are used to generate actual public addresses. Can you please point me in the right direction?

BIP 84 specifies how zpubs work. BIP 32 specifies how derivation paths work.
According to these BIPs, the zpub will be used as the master public key, and the CPK (Child Public Key) function should be applied to the zpub to yield the specific public key you desire.
BIP 84 specifies that zpubs are used to derive P2WPKH addresses, so the public key should be converted to a SegWit address (bc1...).
If you are familiar with Elixir, you can use this library, to which I've added bip32 support.
https://github.com/sachinmeier/bitcoinex/tree/sachin--add-bip32
zpub = "zpub6nQF4m3JT6hTkQ4o9Vc8LDMQx7nMkT5CsnPgVHnnrpF9JHeP6ioboEK2CXB34Xn6nzqcJnLPuMqQaKqBhwvZR7GJNvSeRUpDpCaVu3N3stz"
Bitcoinex.ExtendedKey.parse_extended_key(zpub)
|> Bitcoinex.ExtendedKey.derive_public_child(0)
|> Bitcoinex.ExtendedKey.derive_public_child(2)


How big is the UTXO database? Is there a query that will return the size of the UTXO database? Specifically, the total number of unspent outputs.

Bitcoin Core provides the gettxoutsetinfo RPC that has exactly the information you want.  Note, it takes that call up to a minute or two to run (and maybe longer as the UTXO set keeps growing).

Here's what my node says right now:

{
  "height": 442313,
  "transactions": 15237948,
  "txouts": 43194647,
  "bytes_serialized": 1635888675,
  "total_amount": 16028761.10201779
}

Current and historical data may be found on Statoshi.info's UTXO page.


Do we have to pay transaction fee if we transfer bitcoins from one wallet to another ? Can this be done for free?
also please mention wallets who do not charge transaction fee (if they exists)

No, you don't have to pay the transaction fees if you want to switch to a different wallet. If you have the private key of the first one, just import it into the second one and there you go.


Protecting against bitcoin thieves as a casual user I hope this is an appropriate question here. I never got a chance to write it out earlier, but with the recent price changes looming it came to my mind again.
Around July 2013 I started to take some limited interest in bitcoin. Around this time, GPU based miners were still relatively viable, so I took my medium-grade gaming PC, set it up with a better GPU, and did a stint of casual mining. After some months, I had received about 0.7 BTC, but I generally deemed it not super profitable, and stopped. The PC was windows 7, used for the mining and a few games, and other general consumer tasks.
A few years later I became interested in the crypto space again and opened my old bitcoin client, only to find out that about a year after mining the coins (May 2014), they had all been transferred out somewhere unknown to me. At the time, for me, this pretty much destroyed most of the credibility of bitcoin, as from the perspective of a casual user, I had not really done anything wrong or unusually shady or dangerous.
I'm looking back into this space yet again after some of the recent news. So my question breaks down to:

What is the most likely situation that had played out, in order for me to lose my coins like this, on a casually used system, using the official bitcoin client?
If the above issue was due to some kind of known vulnerability, has it since been fixed?
What other measures can a new, non-power user take in order to protect from this type of significant theft, within reason?

Thanks for reading~

What other measures can a new, non-power user take in order to protect from this type of significant theft, within reason?

For money stored long term, move the coins to a hardware wallet or some form of offline wallet (cold storage).
Use a transaction (rather than importing keys or using an existing seed-phrase) to move the money to a wallet with fresh keys that have never been on any network-connected device.
Theft is not the only risk. Make backups of the wallet and/or seed phrase or keys. Test recovery from those backups. Educate heirs about recovery.
See What kinds of wallets are there?


How does the Bitcoin network checks if the miner has changed the mining reward? You know the mining reward is just a number in the code,what if a miner changed it?

It's possible you mean 1 of 2 things by "mining reward":

Coinbase transaction.

Currently this reward is 25 bitcoins per block. If a miner changes this to be higher, it is an invalid block and other nodes will not accept this as a valid block. If the block is not accepted by other nodes, it doesn't go into the blockchain and the miner will not get any bitcoins.

The miner can change the reward to be lower than 25 bitcoins currently. This is potentially a way to slow down bitcoins coming into existence, but is otherwise not harmful. There is an economic disincentive for a miner to do this, but it is possible.

Transaction fee.

This is the difference between the sum of the inputs and sum of the outputs in any given transaction. As the transaction is signed by a private key, any changes to either inputs or outputs will cause the signature embedded in the transaction to be invalid. If this transaction is included in a block, the block itself is invalid and will result in other nodes not accepting this block. Similarly as (1) the block being invalid will cause the block to not get into the blockchain causing the miner to not get any bitcoins.

Basically, the miner is heavily incentivized to act honestly as that's the only way a miner can get bitcoins.


30 months of history, and 50GB of data? I had installed bitcoin-wallet app on an old phone a couple of years ago, just out of curiosity about bitcoin.
I obtained somehow a teeny amount of bitcoin, .0017xxxx
anyway, I installed the app on a new phone, and exported/imported.
This all worked fine.

I am just curious about what then happened...
on the new one after the import, it initially said something to the effect of
"recreating (resyncing?) 30 months of history" or something.
And very very slowly the number of months went down and eventually got done, taking maybe a day.
I did notice the phone was pretty warm :-)
Afterward, I had to chuckle because I just happened to notice the phone said it had used 50GB of data that day (!)

Is that all normal? What was it doing all that time? Is it necessary?

Most mobile wallets are light-clients, meaning they don't download and validate the entire blockchain history. Instead, they just download the block headers (80 bytes per block), and then request any additionally needed block/transaction data that is related to the addresses that the wallet controls.

At the time of writing, the network is currently at blockheight ~623,000, so we should expect a light client to download about this much data:

623000 blocks * (80 bytes / block) = 49,840,000 bytes = ~50 Mb

The actual amount will likely be slightly higher, but we can get an idea for the order of magnitude of data from this estimate.

So, assuming that this wallet is just a light-client, it is odd that it would download 50 Gb of data. If this is the app you are mentioning, the recent user reviews make it sound like this excessive data usage is a bug (see the dev responses on that page).


Is there a widely used symbol for satoshi yet? Has a symbol been widely adopted for satoshi yet? I've seen Ș suggested but it's already a letter in Romanian. Ꞩ, Ȿ & ẜ (long s with stroke) all seem to be otherwise unused. Has anyone suggested using any of them?

No.

Satoshi is often abbreviated to sat or s, although no currency symbol
has been widely adopted.

https://en.bitcoin.it/wiki/Satoshi_(unit)


Is this Merkle hash root problem existent in Bitcoin? In the Wikipedia article about Merkle trees, I was just reading this, unable to  understand where the problem lies:

Second preimage attack
The Merkle hash root does not indicate the tree depth, enabling a second-preimage attack in which an attacker creates a document other than the original that has the same Merkle hash root. For the example above, an attacker can create a new document containing two data blocks, where the first is hash 0-0 + hash 0-1, and the second is hash 1-0 + hash 1-1.
One simple fix is defined in Certificate Transparency: when computing leaf node hashes, a 0x00 byte is prepended to the hash data, while 0x01 is prepended when computing internal node hashes. Limiting the hash tree size is a prerequisite of some formal security proofs, and helps in making some proofs tighter. Some implementations limit the tree depth using hash tree depth prefixes before hashes, so any extracted hash chain is defined to be valid only if the prefix decreases at each step and is still positive when the leaf is reached.

My first questions are: Is this really a problem in Bitcoin? If yes, how is it being solved in Bitcoin core?
My second questions are: Could this problem be solved by storing the tree depth of each block directly in the block chain? Or speaking of Bitcoin, would that negatively affect the block validation procedure itself somehow?

Yes, these kinds of attack do effect Bitcoin and are known and described. Bitcoin does not have any consensus level mitigations for them because doing so requires consensus changes which are difficult to do. It is known that Bitcoin's merkle tree design has multiple vulnerabilities.
The particular attack described on wikipedia is that an internal level can be presented as a valid document. In Bitcoin, this is theoretically possible, although it would take significant work to produce a block where the transactions produce hashes which can then be deserialized as valid transactions. If such a block were produced, it could result in a network partition due to behavior around the caching of invalid blocks. Obviously the solution to this is to be sure that cached invalid blocks are treating carefully to avoid rejecting blocks for things that are third party malleable.
In fact, this particular issue lead to a vulnerability in Bitcoin Core 0.13  that has since been fixed. A description of the vulnerability is available on the bitcoin-dev mailing list.
There is another related attack going the other direction - including a transaction in a block which could be interpreted as an internal node in a merkle tree. This attack could be used to target SPV wallets and trick those wallets into thinking a transaction was included in a block when it was not. This attack in described by Sergio Demian Lerner in this blog post.
The only true solution to this second attack requires some kind of consensus change to introduce the tree depth. But consensus changes are hard, and there are other things that can be done. SPV wallets can protect themselves by checking that no internal nodes can be serialized as valid transactions. Such an internal node is incredibly unlikely to appear randomly so this shouldn't have any real effect on the user. In Bitcoin Core, to help with protecting against this attack, 64 byte transactions won't be relayed. As 64 byte transactions are smaller than any standard transaction could be, this is safe.


Crypto currency as gift I'm staying in Germany and I have a friend in India. He has a few ether coins in his wallet in India which he bought mid of 2017. He now wants to sell them.  But in India, because of taxes, he will not gain much profit.
So he asked me if he could send them to my wallet in Germany as a gift. I can sell them in Germany and send him the amount in parts as and when we happen to meet.
Since it is a gift and I have not bought the coins I will not have to pay any tax on it in Germany. Is this legal and what are the risks?

I am from Germany and know a bit about the tax situation here.

If gains < 600€ in 1 year, then you don't need to pay taxes. You also don't need to pay taxes if you hold the Ether more than 1 year.

But you still have to include it into your tax report ("Steuererklärung").


From mining to sending via RPC Assuming that there is a magical mineblocks RPC command that can mine X blocks on demand, what is the complete set of command line commands to start a client, mine my coins to a specific address, see the mined blocks, get the reward and send them to an address XXX?

Put your client into regtest mode. This allows you to mine an arbitrary amount of blocks very quickly. Add this to your bitcoin.conf

regtest=1
daemon=1

Generate the blocks. Run

bitcoin-cli setgenerate true <number of blocks>

where X is the number of block you want. You'll want at least 101 blocks.
See the mined blocks. Run

bitcoin-cli getblockhash <index>

to get the hash of block number <index>. Then take that hash and run

bitcoin-cli getblock <hash>

Repeat Step 3 for each block you want.
Send the Bitcoins to a new address. Run

bitcoin-cli getbalance

to find out your balance. Run

bitcoin-cli sendtoaddress <address> <amount>

If you don't need to see the contents of the block, you can skip steps 3 and 4.


Can you use Electrum wallets for storing Ethereum? Can Electrum wallets be used to store Ether?

No, you cannot use Electrum wallets to store Ether. Unfortunately, Electrum only supports Bitcoin.


Cold storage for bitcoins I'm planning to store some bitcoins in cold storage. I'm doing a very simple setup, no complicated algorithms, no wallets...

Here is my plan

Create an air-gapped machine with a Linux distro. The machine won't have access to Internet and I'll disable wifi/mobile connection on purpose to be sure that no Internet is available.
Copy 4 files to the air-gapped machine using a microSD card. The first archive has a version of "coinb.in" which will help me create transactions. The second archive has a "bitcoin.sh" file which is a set of bash functions to create bitcoins addresses. The third archive, is a small HTML/JS qrcode generator. The forth file is the diceware words list.
On the air-gapped machine, create the mighty bitcoin address. I'm going to use a brainwallet with the following format (or a variation of it)

  SALT (5 char) + 10 Diceware words + My Password (10 char) + SALT (5 char)

The passphrase will be hashed one time with SHA-256. The resulting Hex. will be used as the private key. Generate the address/public-key with the bitcoin utility.
With the Qr-Code generator, create a qrcode of the bitcoin address. Now I use my mobile phone to scan the QrCode and send a few millibits to that address.
Using my connected laptop, I retrieve the Transaction id and Script of the transaction that I made. I write those down on paper. I then go to my air-gapped machine and I enter these information to create the transaction and sign it.
Once signed, I use my qrcode utility again to create a qrcode of the transaction raw HEX code. I then use my mobile phone to scan that QrCode and send it to my pc.
I check that the transaction is valid and I broadcast the transaction.

Some precaution I'll be taking:

Make sure that the Wifi is not running when the air-gapped machine is running.
When scanning the QrCode, make sure that the private key is not visible somewhere in the screen.

So this is the setup that I implemented. I'm wondering if I missed something or something is possibly at risk. Since the setup is tested, I'm here referring to the problem of funds being stolen by cracking my passphrase or infecting my air-gapped machine.

Ideas and critics welcome!

Omar, you can do almost everything you want there with Armory using the offline feature. The offline, air-gapped computer can create the private key and store it there. The watch-only wallet on the internet connected computer can create transactions to be signed by the offline computer.

From a security standpoint, it's generally better to use something a lot of other people have used before than creating your own process.


Autofill forms in Bitcoin protocol For example, I have link:
bitcoin:1DF9jgzftTFn4ZnDV2YEjUtZ4uHtBywj57. If user open this link in browser, bitcoin address automatically insert in address text field. Example for my MultiBit Classic client:

But what should I make in link to have been autocomplete not only field Address but also fields Label and Amount?

Thanks.

There is a standard for Bitcoin URI schemes, and it is defined by BIP 21.

However, that does not mean that every wallet application out there will support all the fields when it it opened from a link.  Most will, but don't be surprised if some fields don't fill in automatically.


Were there any Bitcoin based prediction markets for the Brexit referendum? Were the are Bitcoin based prediction markets for the Brexit referendum?

If yes, how did the prediction market fare compared to recent public polling data versus the actual referendum results?

Are there any studies comparing the accuracy of Bitcoin based prediction markets to other forecasting mechanisms?

There is at least one market I am aware of that covered the event although the contract language seemed to focus on the UK actually leaving the EU (which does not happen immediately) by a certain date rather than the referendum vote itself.

The prediction market below and every fiat prediction market I saw before the referendum vote predicted the "stay" votes were win. Although the polls were close, it appears that both the polls and prediction markets (that predicted the stay votes would prevail) were wrong on the referendum result.

"Long shares will resolve at m฿10 and short shares at m฿0 if the exit of the United Kingdom from the European Union is effective in 2016 or 2017."

https://www.predictious.com/politics/brexit-2017/leave

Hivemind is the most well known Bitcoin prediction market now in development.
http://bitcoinhivemind.com/

Here are a few more Ethereum DAPPs (which may accept the Bitcoin currency) in various stages of development:

https://www.augur.net/

https://groupgnosis.com/dapp/#/markets


Why is it important that miners mine at the end of the longest branch? In this paper, the authors present a simplified description of mining strategies. The strategy which they call "honest strategy" is to always mine a block at the end of the currently longest branch. They claim that, if a miner has a very large computing power (above ~45% of the total power in the network), he might gain a higher profit by deviating from this strategy and using a "dishonest strategy" - mining at a shorter branch - hoping that at some point his branch will become longest and be accepted by the community.

They claim that this "dishonest strategy" is problematic, but I do not understand why; what can happen to the bitcoin network if some miner will use this "dishonest strategy"?  As far as I understand, he will not be able to create a "double spending", since such a double spending can be easily detected by any other node reading his branch. So what else can happen?

Lets imagine that a fork is created during the propagation of a block in a certain height h. Two valid blocks are created and spread along the Bitcoin network. The majority of the miners start mining on block hA, while the miner m you mentioned (or actually a mining pool since a single user with such mining power is quite unlikely to exist) starts mining on the top of block hB.

The odds of mining a block on the top of hb before the rest of the network mines on the top of hA are lower that the other way around, but since the mining power m and the rest of the network are not that far from each other, it can happen (actually, it will happen, sooner or later).

Moreover, the hashing power of the network is split, and a huge part of it is wasted (either m's or the rest of the network), so the elapsed time between blocks will grow, until a recalculation of the difficulty is performed (some point between 1-2015, since it is recalculated each 2016 blocks).

Other papers has talked about similar things in the past (selfish mining techniques) concluding that with even less mining power similar attacks can be achieved.

By using selfish mining techniques a malicious pool can benefit from mining in a "secret branch" and reveal blocks just when they are ahead of the public branch by 2+ blocks, earning all the mining reward and making other miners waste their time, or when a block is propagated by other sources, trying to get their block picked up by a majority instead of the other.


What percentage of Bitcoin use is legitimate? I wasn't able to find actual data on this. I'm under the impression that

the majority of transactions represent ownership transfer between investors, traders and exchanges
the majority of remaining transactions represent purchases of goods and services
the majority of purchases made with Bitcoin are for something illegal

It's very easy to see why someone would want to buy drugs with Bitcoin. It's not easy to see why someone would want to buy coffee with Bitcoin. If I want to buy coffee with Bitcoin, isn't it easier to first exchange that Bitcoin into fiat currency, and pay for coffee with that?

Does anyone have any data regarding what percentage of Bitcoin use is legitimate?

Silk road wallet hold 144,000 Bitcoins. It had 1,2B USD in annual volume. This was 2014.

Since then darknet markets have flourished. See Measuring the Longitudinal Evolution of the Online Anonymous Marketplace Ecosystem.

This is mostly for illegal drug related and other purely criminal activity like payment fraud (stolen credit card). This does not include ransomware bitcoins (1B USD). This does not include e.g. bitcoins involved in tax evasion and asset hiding. This does include bitcoins lost in exchange hacks or stolen from exchanges. Furthermore, most peer-to-peer and remittance trading could be accounted as money transmitting business and against local regulations.

Bitcoin transactions are not very useful in casual purchases, thus there has been little mainstream consumer adoption. Bitcoin shines in anonymous online payments and most day-to-day and/or point-of-sale payments don't require this level of anonymity or the complexity it brings along with it.


How to update Bitcoin client? Today I downloaded and installed the new version of Bitcoin (0.5.0)
I extracted the file and it created a folder. I followed the instructions and clicked bitcoin-qt.exe and the program started. No installation!

Is the new version a portable version?

What should I do with the old one? Because when I click it, it opens the old version?
Should I simply uninstall it? Or should I backup the wallet from the old version?

It is always advised to backup your wallet.dat before doing anything with the client, and also to keep a general backup just in case.

As the file saving protocol in Bitcoin client rarely changes, one can possibly run a couple different versions on the same .dat files without an issue. However, running an older version after an update is not advised, as unexpected behaviour can happen every now and then.

So you should backup your wallet.dat, uninstall the old version, install the new version, check if everything is working okay, and then delete the temporary .dat backup.


How to provide a proof-of-payment to an offline Lightning Network vending machine? I'm considering building a Lightning Network vending machine that is offline but has the capability to create LN invoices and verify payments.

As an example the scheme has:

One offline vending machine.
One online node to validate payments.
One user (online with a cellphone).

For that there must be:

A way for the vending machine to provide valid invoices that can be paid to the online node.
A way for the user to communicate a prof-of-payment to the vending machine.

Is this currently viable? Is this something that can/should be standardized so every wallet can implement it?

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

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

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

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


How to resolve Bitcoin Daemon Warning of last 100 blocks have unexpected version message? When I run my bitcoin daemon on ubuntu I get the follow warning message. How do I resolve this? And I just pruned my blockchain to 5gb if that affects anything.

  progress=1.000000 cache=40.4MiB(273342txo) warning='52 of last 100
  blocks have unexpected version'

There is no need to resolve anything - some miners create arbitrary versions to attempt to speed up the mining process, as it gives them an additional field in the block block header to alter without having to recalculate the merkle root and other fields.

This is harmless, provided they aren't producing invalid blocks for version 2, in which case the block would be rejected


bitcoin coin selection algorithm It says here https://github.com/bitcoin/bitcoin/blob/master/src/wallet/wallet.cpp#L2458
that to choose coins for a transactions we need to solve subset sum.
But subset sum is when you're not allowed to go over a certain amount;
whereas in bitcoin you can go over the amount and give change.
So why is this necessary?

There are a few goals of coin selection.

Firstly, we want to select enough coins for the user. Secondly, we want to minimize transaction fees. Lastly we want to reduce the UTXO set.

Reducing the UTXO set requires creating less outputs than there are inputs in a transaction. By solving the subset sum problem, we can avoid making a change output and thus help to reduce the UTXO set.


What benefits does Bitcoin have that other cryptocurrencies do not? I have heard several times Bitcoin being called "the king of crypto." It makes sense when you look at how the coin surpasses all the altcoins in terms of market capitalization and trading volume. No doubt that BTC is dominant in the crypto market.

Why? Why do people prefer to buy Bitcoin over other cryptocurrencies? If you disregard the sheer popularity of the coin, I don't see what other value it has and why there is such a high demand.

The most notable argument is that people buy BTC for international money transfer and buying/selling. However, it seems that BTC would not come close as a perfect candidate for that. Stable coins (ex. Tether) having less volatility would be much better for such transactions. It seems pretty obvious that people and stores buying and selling in stablecoin would be so much better. Using such alternative can provide trust for customers and sellers that what they thought they paid or accepted will actually be what they thought of the upcoming day.

There are a lot of perks for using cryptocurrency. Transaction fees are minimal and transfer is speedy. There is potential for international money transfer, and it is not really tied down to massive regulation and manipulation. However, I'm just not finding the perks of why BTC is the best coin to do all these things.

If Libra is introduced as a stablecoin with a company like Facebook supporting it, why would there be a demand for BTC? Why is there still demand today when Tether can serve as a stable medium of transaction?

Ultimately, is BTC mostly only bought for investment/speculation or is there a real use for using this currency today where there are so many other altcoins to choose from?

Why do people prefer to buy Bitcoin over other cryptocurrencies?

There are many reasons:

Liquidity

Bitcoin is the most capitalized market amongst cryptocurrencies, and that is an important measure for any form of money. If it is difficult to trade a form of money without crashing the price of it, then it is not a very useful money in the first place! As liquidity grows, more economic activity can occur using BTC (liquidity begets liquidity), it is a positive feedback mechanism.

User-base

Systems of money benefit from network effects. It is beneficial to own a form of money that a large number of people accept, compared to a specialized money that only a few people will accept. Bitcoin is still 'specialized money' in the big picture, but it is certainly the most widely accepted cryptocurrency at this time, with the largest userbase.

A decentralized network

When compared to a centralized financial network, the operation of the Bitcoin network is quite inefficient: every network node independently computes and validates the entire history of the network. This inefficiency is seen as acceptable because it results in a network with no hierarchy amongst nodes: nobody is in control of the network. There is no central admin. There is nobody that can exert undue influence on the network (for example, to change the rules, or inflate the supply). This point is very important! Many other cryptocurrencies are tied to some central authority, and this represents a single point of failure, that a user of that currency must trust to not be abused or attacked.

Historically, the Bitcoin network has proven to be extremely difficult to change (as evidenced by events such as the 'Segwit2X' debacle), which gives investors confidence that the value they store in the network will remain secure (1 BTC continues to = 1 BTC). To contrast, the Ethereum network regularly enacts hard-forks that change the rules of the network (see: the DAO attack, ice-age setbacks, changes in issuance of new ETH, etc).

Network security

The history of the Bitcoin network is probabilistically secured through the economic incentives of Bitcoin mining. To put it more clearly: each new block on the network provides a reward which incentivizes miners to spend resources mining and progressing the network's state. To alter the history, an attacker would have to spend more resources than the entire rest of the network combined (this is called a majority attack).

As a user, it is thus in your best interest to use the network which has the highest amount of security, so that there is the lowest chance of someone successfully attacking the network you've invested in. To date, Bitcoin has always had the largest amount of security, no altcoin has come close to it in this regard.

Hard money

As mentioned above, the rules of the network are extremely hard to change. Making a change requires that a super-majority of users will all agree to the change, and then update the code of their nodes to reflect the desired change. Because of this, the issuance and supply of BTC is very well understood, extremely predictable, and likely almost impossible to alter. This means that investors can have confidence that they understand their stake in the network, and this stake will not be changed without notice (by, for example, a central authority deciding to alter the supply).

Financial Sovereignty

With all of the above in mind, the result is a network that grants the user financial sovereignty: un-censorable money that is completely under the control of the user. Other cryptocurrencies do not have the level of decentralization required to strongly guarantee such a thing, many of them are in fact entirely centralized, depending on some central authority to guarantee the value, services, security, or function of the network.

Infrastructure

The Bitcoin network has been around for the longest time, and as a result of this, it has a large developer base working on a huge variety of projects that will benefit the network and it's users. Since the code is open source, you can view the development progress in real time by checking out the Bitcoin-core project's github repository, the bitcoin-dev mailing list, #bitcoin-dev IRC channel, etc. Beyond this, you can also check out development of the Lightning network (LND, c-lightning, etc), the lightning-dev mailing list, the many wallet projects in the ecosystem, and the many systems and services being built to utilize Bitcoin.

Following the work can be dizzying, but the results are clear: as time has passed it has become increasingly easier to use and interact with the Bitcoin network. It seems logical to conclude that this trend will continue.

You may have noticed that everything written above is largely a social phenomenon: the code itself is entirely open-source: you can copy/paste all of it, tweak a few parameters, and start up your own altcoin network without much work at all. What you can't copy/paste is the network of humans that partake, and that is where the real value comes from.

  If Libra is introduced as a stablecoin with a company like Facebook supporting it, why would there be a demand for BTC?

Libra is no different than any other altcoin that has a centralized point of failure, posing a huge risk to its users. Further, facebook's abhorrent privacy policies and past abuses of user data make it inconceivable that a currency they control would gain widespread trust.

  Why is there still demand today when Tether can serve as a stable medium of transaction?

Similar to Libra, Tether is backed/guaranteed by a central authority, it does not promise the same things that Bitcoin does (which isn't to say these things can't have use-cases in their own right, but the key point is that they are not equivalent to Bitcoin).


Is OP_RETURN combined with a hash, appropriate for proof of existence of an asset? I want to store a hash (of a tweet) in a way that is :

Censorship proof
Public
Unchangeable
Persistent
Non centralized
Less expensive as possible, obviously free if possible

Technology offered by the blockchain seems to fit my needs.

Since I don't want to run my own blockchain because I didn't find a way to do it for free (or does it makes sense to run my own blockchain on my own server ?).
After reading on the subject, I came up using an existing coin (Bitcoin ?) and as you may guess to the OP_RETURN field in a transaction.
But storing my hash in that field is really appropriate ?

Can't I use other coins for that, or create my own coin ?

Since I will store lots (3k/day) of tweets, will it not be expensive to do so ?

First you need to be a lot more specific about what you need: who do you need to prove what to? Who is going to try to censor you? Who needs to be able to verify?

Simply create your own database records with the tweets and hashes in them, each hash also including the hash of the previous tweet and other meta data that important (timestamp?, sender?, headline of today's newspaper?, hash of the latest Bitcoin block? Your digital signature?).

If that doesn't allow you to prove whatever you want to prove, then you could publish the latest of those hashes for example once per day/week/month in an OP_RETURN transaction.

You might want to look here to see if that fits your needs: https://petertodd.org/2016/opentimestamps-announcement


Is there a 'command' to get the max supply of bitcoin that will ever exist using the bitcoin-cli? I would like to know if there a way('command') to know what is the max supply of bitcoin using my own node without trusting a third party.

Also if anyone could explain to me why :

  bitcoin-cli gettxoutsetinfo

returns this message when written:

*error: Could not connect to the server 127.0.0.1:8332 (error code 0 - "timeout reached")
    Make sure the bitcoind server is running and that you are connecting to the correct RPC port.*

Is that bcuz I'm running behind tor? Would be great if some of you guys can expand on these 2 doubts.

In a sense, such a command would be trusting a third party: any putative answer would be that given by whoever supplied that code to you; and it may not be trustworthy - it could tell you it was 21 million, but behind the scenes actually use, say, 42 million.

The nearest you could do would be to download the source code from a proper source and, having verified your download, check the file src/amount.h for the line static const CAmount MAX_MONEY = 21000000 * COIN; before building the software yourself. You are now more sure that your node has the proper max supply.


Is it ok to use dices to generate seed for trezor on coldcard? Coldcard's derive entropy function doe snot have dice method. The only way to generate a seed using dices on coldcard is on "import seed".
Is it ok if I use this feature and generate a new seed with dices and then put this seed on Trezor?

There are many ways to generate seed words that are BIP39 compliant.
It is clear to me that you wish to use dice in order to create seed entropy.  Yes, you can use Coldcard to convert your die rolls into seed words.  Those seed words can be imported into any BIP39-compliant wallet software, including hardware wallets like Trezor.
Alternately, you can use other methods to create seed words from dice.  The top method that comes to mind is the Ian Coleman BIP39 generator.  Check the option to show entropy details, and you will have a spot to enter your dice rolls.  You can select 12-24 words for your output, in three-word increments.


What are Public Notes I see these "Public Notes" on blockchain.info. What are they? How do they work? Can I make one? Here's a random example: http://blockchain.info/address/1DkyBEKt5S2GDtv7aQw6rQepAvnsRyHoYM
Some of the transactions on that address have "Public Notes" before them.

Public notes are simply attached to addresses/transactions in the blockchain.info database, not in the blockchain itself, it's more of a convenience service offered by this particular website than a protocol feature.

And yes, you can make them on blockchain.info, you apparently do not need to own an address to tag it (some of my addresses got tagged without me doing it). The same is probably (I haven't checked) true for transactions.


How difficulty variation is technically linked to time take for the block discovery? Can anybody explain to me technically in units about the time relation to difficulty variation in bitcoin mining e.g. if a block is discovered in 10 minutes, does
T = 10 minutes?
or T = 20160 minutes
and then as
Difficulty is inversely proportional to the time taken.
How it can be formulated to proper time and difficulty relation evaluation.

The purpose of difficulty variation is to maintain a consistent block time.

Let's say you have a network, and you want a 10 minute block time. You are the only miner. The process of mining can be thought of as rolling a die. For simplicity, let us assume it takes you five minutes to roll a dice once.

Now, we need to set our difficulty such that you find a valid solution roughly every ten minutes. In ten minutes, you will be able to roll the die twice (since it takes 5 minutes to roll once). Thus, we need half the rolls to give a valid result, and set our difficulty to <=3 (since you have a 1/2 chance of getting a number less than or equal to 3 on any roll).

If you do this 2016 times, you will, on average, find a block every 10 minutes.

Now, let's say a friend joins you, and can also roll a die once every 5 minutes. Now, suddenly, we are trying 4 solutions per ten minutes instead of 2. This would result in a block being found every 5 minutes, on average.

After 2016 blocks, Bitcoin nodes will look at the average time taken to find a block over the last 2016 blocks. Once they see that this is 5 minutes instead of 10, they will increase the difficulty by lowering the target. In our case, with two people mining, this would make the difficulty 1.5 instead of 3.

Now, with die, you cannot actually have that much control. There are only six possibilities, which makes your difficulty jump more than you need.

With bitcoin, the blockhash is essentially a 256 bit number, and can store 2^256 values. This allows for fairly precise difficulty adjustments.


What are the optimal cgminer settings for a AMD Radeon HD 6670? I'm following this tutorial for mining Litecoins, and I'm having a little hard time finding the optimal cgminer settings for my AMD Radeon HD 6670. Any hint on that?

The tutorial gives this configurations for Radeon 7950 series GPUs (which is not mine):

timeout /t 30
setx GPU_MAX_ALLOC_PERCENT 100
setx GPU_USE_SYNC_OBJECTS 1
cgminer --scrypt -I 19 --thread-concurrency 21712 -o stratum+tcp://coinotron.com:3334 -u [USER] -p [PASS]

So far I have been using

-I 18 -g 1 -w 256 --thread-concurrency 2400

Getting ~71k/h with clock at 820 and mem at 852

I hope this helps


Can I still claim the pre-fork BCH even though my current wallet balance is 0? I had BTC before the BCH fork, but I forgot to claim the BCH and just spent all of the BTC on buying more BCH. Can I still claim the pre-fork BCH even though my wallet balance is now 0? It was stored in Electrum. Any advice is appreciated.

Despite your bitcoin wallet balance being 0, your cash balance on the same address should be non-zero. Check that with a cash blockchain explorer and then import your private keys into a cash wallet to access the coins.


Does Bitcoin mining benefit at all from having more video memory? Example: I am mining on a Windows computer with guiminer on an onboard gpu. Will assigning more memory to the IGP improve its performance while mining?

It seems unlikely. SHA-256 uses very little memory, so while I don't know a lot about GPU mining code, I would doubt that additional GPU memory would be used at all - I can't think what it would be used for.

But if you want to know for sure - since this is a simple BIOS option, why not just try it both ways and see?


What are the qualities of a country that might make it more or less likely to freely allow Bitcoins or crypto-currencies? As some examples which seem logical to me, but should only be taken as examples:

A government that is susceptible to commercial lobbying is probably more likely to be pressured by banks to disallow competition with their services.

Governments that have a corruption problem might also be quietly bribed to legislate against a currency that competes with the official one.

Countries that support open source software might tend to have a "for the good of the community attitude" that matches the philosophy of Bitcoins.

For this question, it's probably important to provide references/examples (such as information about who is trying to stop use of bitcoins and why).

I see the need to ask this question to help provide a foundation for this one: Is there a list of countries that are not likely to persecute bitcoin businesses?

I believe the Swedish government would be less likely to crack down on Bitcoins. I believe they have a political party called the "Pirate Party", which as far as I know, got elected as a reaction to the crackdown on Pirate Bay. I would love for someone to comment, in order to confirm this.


Why won't a transaction with 888/byte confirm after 11+ hours? I have this transaction that I can't figure out why it won't confirm.

https://blockchain.info/tx/92b33d498a35d47f03eee14f258cf9b3f015a5d12856eb05e47534e664344239

If I check https://bitcoinfees.earn.com/#delay it says with that it should confirm very quickly.

Thanks.

It won't confirm because the grandparent and parent of your child transaction aren't confirmed. The grandparent transaction was also paid with a really low fee(51.573 sat/B).

I did the math for you.

Grandparent + parent + child = total transaction size:
3878 Bytes + 226 Bytes + 225 Bytes = 4329 Bytes

Add up all paid fees:
200000 Sat + 200000 Sat + 200000 Sat  = 600000 sat

Divide total paid fees with total transaction size:
600000 / 4329 = 138.6 Sat/B

Subtract to find difference needed:
450 Sat/B - 138.6 Sat/B = 311.4 missing Sat/B

To sum it up.
On average, the three transactions were paid with a fee of 138.6 Sat/B each.
The fee needed to confirm within 6 blocks is presumably around 450 Sat/B right now.
So the three transactions are short 311.4 Sat/B to reach the target of 450 Sat/B.


Why can't I get over 8 connections on my client? How do I make my client acquire more than 8 connections? What settings in firewall and operating system, or flags at execution do I need to use to allow it?

Typically connection counts of 10 or lower usually indicate that you are behind a router or firewall that is not configured properly. Try enabling UPnP from within the Bitcoin client's options dialog. If that doesn't work, try manually forwarding port 8333 to the computer which is running the Bitcoin client/daemon.


How to unstuck a low-fee transaction with blockchain.info? I've sent a transaction from blockchain.info, but accidentally included too little fee. What can I do to cancel the transaction or speed up the transaction's confirmation?

This is a complementary question to Why is my transaction not getting confirmed and what can I do about it? which answers the question's broader implications and proposes mitigation mostly focused on Bitcoin Core.

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

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


Are there any clients that allow for multiple wallets and API acccess? I know that multibit has the capacity to have multiple wallets, but no API access. bitcoind has great API access, but only one wallet. Is there any solution that combines the two?

Armory supports multiple wallets and has a scripting interface.
Blockchain.info is an online wallet service that has an interface very similar to bitcoind.  They also have an API to create wallets.


How do pool operators do their hashing? For every "getwork" served by the pool, a Merkle root must be calculated for a block.  The run time of SHA-256 is proportional to the number of "chunks" of 256 bits, and a typical block will have thousands of these chunks (a block header has just has three, after preprocessing).  So the pool operator will need hashing power in the Mhash/sec range, roughly.  Am I right so far?

The individual miners need much more hashing power, but in a simpler form: here's a three chunk preprocessed block header; hash it with each of 0000_0000x through FFFF_FFFFx in the nonce field.  If hashing engines specialize on that simplicity, to make them cheaper and/or faster, then they don't work so well for the pool operators.

So if I'm a pool operator, or a solo miner, and I need to generate millions of Merkle roots, what are my options? Do the hashing engines (CPU/GPU/FPGA/ASIC) have an API I can use?

A pool will generally create a unique merkle root for each getwork request by a miner.  If it accepts difficulty 1 shares, the miner can spend an average of about 4,000 Mega-hashes on that block (and will earn an average of 1 share per getwork).

To create a block header for each miner, the pool operator changes some unique information in the first (generation) transaction of the block, and then rehashes the block to create the merkle root.  If done naively, this will take O(N log N) sha256 hashes (where N is the number of transactions in the block being mined).  By saving some information from computing the last merkle root, you can recalculate a change in the generation transaction with only O(log N) hashes.

With hundreds of transactions per block the ratio of hashes performed by the pool operator and the miners is over 100 million to 1.

For an even greater savings, pools can accept a getblocktemplate api request instead of a getwork request.  This mode allows the miner to generate his own block headers and mine for an average of 10 minutes before needing to be refreshed by the pool.


btc transaction show all btc moved from wallet I transfered a small amount of btc from my private wallet with bitcoin core client. When I check blockchain.info I see the transaction with the amount of btc i transferred going to the correct address. But I also see the rest of the BTC in my wallet going to an unknown address.

Is it supposed to do this, or have I been hacked?

I'm 99.9% sure the 'unknown' address is the 'change address' of your wallet, being returned back to your wallet. If you check the balance of your wallet, is it what you think it should be?

You should read this: http://support.exodus.io/article/109-what-are-bitcoin-change-addresses


Bitcoin Core 0.18.0 in Docker container: Could not connect to the server This is likely me not understanding how Docker works, but I've tried everything I can think of. I'm trying to start bitcoind in regtest mode inside a Docker container, then execute JSON-RPC commands against the container from the host machine. I'm running Bitcoin 0.18.0.

My Dockerfile looks like

FROM ubuntu:18.04

RUN apt -y update && apt -y install curl
RUN curl -o bitcoin.tar.gz https://bitcoin.org/bin/bitcoin-core-0.18.1/bitcoin-0.18.1-x86_64-linux-gnu.tar.gz
RUN tar xvf bitcoin.tar.gz

RUN mkdir -p /root/.bitcoin
RUN echo "regtest=1" >> /root/.bitcoin/bitcoin.conf \
    && echo "rpcuser=bitcoin" >> /root/.bitcoin/bitcoin.conf \
    && echo "rpcpassword=test" >> /root/.bitcoin/bitcoin.conf \
    && echo "regtest.rpcallowip=0.0.0.0/0" >> /root/.bitcoin/bitcoin.conf \
    && echo "regtest.rpcbind=127.0.0.1" >> /root/.bitcoin/bitcoin.conf

EXPOSE 18443

CMD ["/bitcoin-0.18.1/bin/bitcoind", "-printtoconsole"]

After building the image, I start the container by running

docker run -it -p 127.0.0.1:18443:18443 <image>

I can spawn a shell in the running container and run bitcoin-cli commands successfully.

When trying to execute a bitcoin-cli command from the host machine I get this:

error: Could not connect to the server 127.0.0.1:18443 (error code 1 - "EOF reached")

Make sure the bitcoind server is running and that you are connecting to the correct RPC port.

If I run docker ps I see this:

CONTAINER ID        IMAGE               COMMAND                   CREATED             STATUS              PORTS                        NAMES
b815f8810b6b        90ef5856c984        "/bitcoin-0.18.1/bin…"   25 seconds ago      Up 23 seconds       127.0.0.1:18443->18443/tcp   gallant_rubin

I can run bitcoind on the host machine and successfully execute bitcoin-cli commands against it, so it doesn't appear to be a misconfiguration with the client.

I'm wondering if I'm running into this from the release notes:

  The rpcallowip option can no longer be used to automatically listen on all network interfaces. Instead, the rpcbind parameter must be used to specify the IP addresses to listen on. Listening for RPC commands over a public network connection is insecure and should be disabled, so a warning is now printed if a user selects such a configuration. If you need to expose RPC in order to use a tool like Docker, ensure you only bind RPC to your localhost, e.g. docker run [...] -p 127.0.0.1:8332:8332 (this is an extra :8332 over the normal Docker port specification).

Is it even possible run Bitcoin 0.18.0 in a Docker container and use JSON-RPC from the host machine?

This was a very simple fix. Instead of regtest.rpcbind=127.0.0.1, I used regtest.rpcbind=0.0.0.0. The logs complain with a warning:
WARNING: the RPC server is not safe to expose to untrusted networks such as the public internet

but since I'm using regtest mode for development, it's not a problem.


Can a non-miner third party help other people's transactions to confirm faster? If I recall correctly, in 2017, when the mempool was full, there were some guys bumping other people sent transactions that were stuck in the mempool.

Is that possible? How does that work?

No, in general non-miner third parties cannot influence the priority of transactions except by outbidding them.

Unconfirmed transactions can only be reprioritized by either the sender or one of the recipients:

Any recipient (including the sender if there is a change output) can craft a child-pays-for-parent transaction that will incentivize the inclusion of the stuck parent.
The sender could publish a new version of the transaction, if it was flagged as replaceable (via BIP125) upon creation, or if they attempt an outright doublespend.

The service you describe was offered by mining pools. These mining pools would promise to include the transaction in the next block they'd mine in exchange for an out-of-band payment.


Difference between a SegWit address and a P2SH address Let there be an address 3ABCDEFGHJKDJHDH....

How can I understand if it's a SegWit address or a MultiSig address?

Until a P2SH-P2WPKH UTXO is spent and the redeemScript is exposed, a P2SH-P2WPKH address is indistinguishable from a non-segwit P2SH address (such as a non-segwit multi-signature address)

Reference: https://bitcoincore.org/en/segwit_wallet_dev/

That's because a P2SH address is still a hash of the script, regardless of whether the script is an embedded P2WPKH script or plain old script script. So you can't 'decode' it back into what the script is, you have to wait until the script itself is made public when redeeming the output.


Do hardware wallets store the wallet.dat redundantly inside? If not, are there such hardware wallets? I'm baffled by how "cheap" the existing hardware wallets look and seem. They seem to have been made "at a budget", with no real high-end version available.
If I owned something like 1,000 BTC, or even 100 BTC, I would want a damn mini fortress of a metal cube full of security measures and like 100 different memories, all individually holding the wallet.dat (encrypted), physically separated from each other and with a hardware switch needed to be flicked on for them to even have any contact with the "main logic", and the entire cube to be fully fireproof and waterproof down to a 10,000 meters and able to withstand thousands of blows from a sledgehammer.
From what I can tell, these hardware wallets are just a single flash memory holding all my coins on it. They even tell you to back it up immediately... which seems to defeat the purpose of having a hardware wallet, if you have to store the wallet.dat redundantly anyway... in practice meaning it goes with all my other files which come into contact with my potentially compromised PC regularly.
I've really tried to research these hardware wallets, but all of them seem like a bad joke to me. I've only grown more and more skeptical to getting one, because my current (bad) system of storing my cold storage wallet.dat on multiple encrypted disks which DO regularly come into contact with my PC seems "just as good", if not better...
I hope I'm missing something, and that somebody can enlighten me.
Basically, how do rich Bitcoiners store their coins? Seriously? How? How do they sleep at night?

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

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


Can i mine with a GTX 760? Well, bit coin mining is looking more and more promising and to be honest, i don't know a lot. I heard you get a lot from AMD cards, but if i use my Nvidia card will it even be worth it? Thanks in advance!

Also, is there a guide to start mining? like a beginners guide for retards?

edit: By worth it i mean will my power bill be more than what im earning, or have they come up so much that its not a big deal?

You can definitely mine with that card. My recommendation is you look up cudaminer. With the same card as you I get about 140 khash/s mining litecoins (using scrypt). I don't remember which instructions I used to set it up.


How to force bitcoind to include a specific transaction as an input of another transaction? I would want to force bitcoind to include a specific transaction as an input of another transaction. This is so as to prevent people front wanting to launch a double-spend attack on the website. The method is similar to the one used by SatoshiDice. How can I accomplish this task with the standard client?

This will be possible using the 'raw transaction interface' that was added recently and scheduled to be part of the 0.7.0 release.

With listunspent you can request a list of available coins sent to a particular (wallet) address, and with createrawtransaction you can build a transaction that consumes specified coins. Finally, sendrawtransaction can be used to broadcast a prepared raw transaction to the network.


Blockchain.info wallet payload strange format Our situation:
Blockchain.info wallet Password lost/broken after update.

Account(wallet) was created in September 2016 in mobile app on iPhone

We use 2FA

We have:

BCI account (wallet) ID
Working e-mail and connected phone number
Password, we sure (only digits)…
Remember of the wallet addresses
+Now we have some payload from response of server on login attemp

Have NOT:

We haven’t save any Seed recovery phrase and private keys

We make all operations with mobile app, but after on of the iOS (or application) update in April of 2017 BCI application was reset or something else wrong with saved password..
We trying to login and get «error wallet decryption» phone/desktop

While I was trying to log in with desktop, confirm by e-mail and phone, I’v got some part of response with such a payload

{\"pbkdf2_iterations\":5000,\"version\":3,\"payload\":\"AAAAAAAAAAAAAAAAAAAAA(here is numbers and digits)\»}»
          }

It’s very strange payload starting with AAAAAAAAAAAAAAAAAAAAA…

Trying btcrecovery util, but no result (use this response part as wallet.json and some password tokens).
(python btcrecover.py --wallet pl.json --tokenlist pass.txt)

May be our password was reconverted some way during the BCI updates, iOS app updates?

May be need change iterations count?

May be old version was initially and 5000 liter v3 is wrong?

What version of the My Wallet was in the beginning of 2016? V2 or V3?

What iterations 5000 or 10000?

Probably, we can try to brute force seed someway as we have one of the wallet addresses?

Experts, please, help us!
Probably @ChristopherGurnee can give us some tip?

there is an extra script in btcrecover that allows you to pull the wallet file but you will need to be able to authorize access through your email. I ran the extraction file with a test wallet and then used that wallet file with a token list which to discover the password successfully.

Since then I have extracted the another wallet where I actually lost the password but I am stuck at the brute force phase. my token lists are not finding the password.... :-/


Is simplified payment validation (SPV) decentralized? Is simplified payment validation (SPV) decentralized?

Viz., when an SPV client wants to verify a payment, does it connect to a central server or to several random peers, checking that their Merkle tree traversals for the transaction to be verified all agree?

"Choose your Bitcoin wallet" from Bitcoin.org says (e.g., for GreenAddress's Android wallet) "Decentralized validation," which it describes as:

  This wallet connects to a random server from a list. This means some trust in third parties is required when verifying payments. However, it is not as secure as a full node like Bitcoin Core.

How is "connect[ing] to a random server from a list" decentralized?

However (e.g., for iOS's BreadWallet) it says "Simplified validation" instead, which it describes as:

  This wallet uses SPV and the Bitcoin network. This means very little trust in third parties is required when verifying payments. However, it is not as secure as a full node like Bitcoin Core.

If you assume you are not being attacked, in the sense that your internet connection is not being restricted in a way that it allows you to only connect to an attacker's nodes without you noticing (Sybil attack). And note that that's actually an assumption that doesn't always hold and you can't really prove you're NOT being attacked, so it is certainly a security concern.

If that assumption holds then you are really connecting to a random node of your chosing that is not run by a centralized organisation or even group of people. Centralized would imply that there is some center that is the authority to decide what is truth. That is not the case here, even using SPV. So yes, I'd say it's decentralized.

Note also that instead of connecting to just one random peer you can connect to multiple so you can doublecheck that one is not lying. Although depending on the situation it may be hard to judge which peer is lying and which is telling the truth, so you may end up having to trust "the majority".

Also, an upcoming update called Segregated Witness is going to make Fraud Proofs possible. That will allow a single honest node to simply prove a statement, so even if the majority is lying you can still know for sure.


Transaction Puzzles, Awareness and Questions I was just reading about the two following scenarios:

My understanding is that we have two transactions here that don't follow the usual scriptSig/scriptPubKey situation, and I think transactions like these are sometimes called "contracts". In both cases, some funds were sent to a bitcoin address, so they are valid UTXO's floating around in the UTXO set, but instead of the usual situation where someone just needs to provide 0-knowledge-proof that they have private keys associated with that address, something else needs to be done to "unlock the funds". (find the data, or find a collision).
I have some questions:

How would people (likely power users) even be aware that these funds were out there, and available to be redeemed if they solved the puzzles. Did the creators of the transactions likely announce somewhere (via forums or internet), or could someone with full node / full blockchain build a tool that watches for these types of special PKscripts?
What does it mean in the second photo when it says "Note that while transactions like this are fun, they are not secure, because they do not contain any signatures and thus any transaction attempting to spend them can be replaced with a different transaction sending the funds somewhere else.". It seems to me if someone solved the puzzle they could immediately  send the funds to themselves with the standard PKscript. What does it mean the transaction could be "replaced"?
What kind of wallet or software would a power user claiming these funds be using? Certainly one couldn't just hop on a ledger s and try to claim these funds with the solution to the puzzle. It seems you would need more freedom to provide the puzzle solution.

How would people (likely power users) even be aware that these funds were out there, and available to be redeemed if they solved the puzzles.

As you mentioned, it could be that either the creator of the UTXO publicized it, or someone parsing through blockchain data discovered it (and perhaps then publicized it). In the case of the hash collision bounties, see this bitcointalk thread.

What does it mean in the second photo when it says "Note that while transactions like this are fun, they are not secure, because they do not contain any signatures and thus any transaction attempting to spend them can be replaced with a different transaction sending the funds somewhere else".

If the 'puzzle' to be solved does not involve a zero-knowledge proof, then for the duration of time that the transaction is published to the network but not yet confirmed, anyone watching the mempool would be able to take the scriptsig and attach it to their own transaction, spending the UTXO to an address they control instead.
For example, if there were a UTXO spendable by providing just the number '4' as the scriptsig, then anyone watching the mempool would be able to observe this, and until a transaction spending that UTXO is included in a block, anyone could just create their own transaction with '4' as the scriptsig, to try to claim it first.
The way around this would be to not broadcast the transaction, but instead mine a block which includes the transaction yourself. That way, the zero-knowledge-proof-less scriptsig would never be public knowledge, before the transaction is confirmed.

What kind of wallet or software would a power user claiming these funds be using?

I would guess that to claim really unique puzzle UTXOs you would need to write some simple software to create the transaction for you.


Expand lightning channel capacity or open new channel? when I got started with my lightning node last week, I made a channel with only 20.000 sats outbound liquidity to test things out. There is no inbound liquidity in this channel.
Now I would like to have a bigger channel with the node on the other end.
I had a look at loop in to increase the capacity to maybe 1.000.000 sats, but the fee would be about 30.000 sats.
Since the channel has no inbound balance I can't rebalance it, right? Is there any cheaper way to top up the channel capacity or do I just open a new channel to the same node?

As explained here How to fund a bidirectional payment channel? there is a difference between capacity and balance of a channel.
Your channel has a capacity of 20000 Satoshi and this number is (as of the current protocol specification) fixed for the lifetime of the channel.
Your local balance seems to be also 20000 as you have opened it. Making payments changes your balance but not your capacity.
Looping is a special case of making / receiving a payment and will only change your balance (remember the balance can never be below 0 or higher than the capacity) so in your case looping will not help you.
If you want to increase the capacity you will have to choose and open a new channel


As of 0.14.0, when you receive a verack, you also need to send a verack message back.

So whereas before you could do this:

Client: version
Node:   version
Node:   verack
......

You now need to do this:

Client: version
Node:   version
Node:   verack
Client: verack  <- do this!
......

Links

https://bitcoin.org/en/release/v0.14.0 (#9715)
https://github.com/bitcoin/bitcoin/pull/9715


What prevents a miner from faking nonce hash What exactly prevents a miner from presenting a random nonce hash of the block with enough zeroes at the start to get chosen?

How is the new hash verified by the other nodes? Since as I understand there is no 1 valid hash outcome, but multiple? What are the conditions other than having a number of zeroes at the start?

Instead of incrementing the nonce, could you intelligently pick a random higher nonce and see the amount of leading zeroes increase? Or is there never any direct relation between the nonce value and the resulting hash? (Probably, but I need to have this confirmed)

Mainly, what prevents a miner from having a pre-calculated database of sufficiently difficult but random nonces/hashes that could be presented instantly and could be accepted?

If the new hash only has to be equal or lower than the target? How do you verify that work has been done, without doing the same work yourself?

No correlation between any input bit or combination of bits and any output bit or combination is acceptable for any cryptographic hash. SHA256 is an accepted cryptographic hash.

Anyone can (and many do) verify a valid block by doing one hash operation, rather than the huge number it takes to find by brute-force, currently on the order of 1,000,000,000,000,000,000,000.

EDIT: I somehow computed 4 bits per byte not 8 (BIG difference), plus forgot the prevhash prefix. Corrected and also clarified some.

In addition to nonce, miners can tweak a few bits in time and use maybe 20-40 bits worth of choice in the Merkle root (by changing extranonce and/or transactions) in the time available. Plus part of prevhash is always the same (namely zeros) -- at least as long as the database 'shortcut' doesn't work, and it doesn't. Let's call it 80 160 bits total, meaning a complete database would be about 2^{240} 2^{480} entries. But we can't store that much, especially not since it must be accessed in significantly less than the normal mining time of 10 minutes. And since we can't know in advance which entries will be needed, no matter what subset of the database we store it's a "roll of the dice" for each block header whether it is in the database and thus "pre-mined".

If you use all of the roughly 2^{190} atoms in the Solar System (and move them close enough) and can store one header per atom which is many thousands of times denser than any known storage technology, your database will 'hit' (contain the desired solution) with probability one in 2^{290} which (since trials are independent) will occur for (rounding slightly) about one block every 20,000,000,000 20,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 years, which is probably almost certainly longer than the universe will exist. (And certainly not often enough for you to make any profit from it.)

See also https://crypto.stackexchange.com/questions/1013/is-it-feasible-to-build-an-index-of-prime-factors for several discussions why a similar approach for breaking RSA is ludicrously infeasible even without the short time limit needed for Bitcoin.


Are QR codes on paper wallets necessary I don't have a wireless printer so I'm thinking about writing down the keys by hand on pieces of paper. Obviously I can't copy the QR codes that way. Are they necessary or do they just exist just for our convenience?

It's just for convenience.

Make sure to d̶o̶u̶b̶l̶e̶ triple check and use a pen that's readable in ten years, too.


How long can popular hardware wallets last in cold storage? Consider the Ledger and Trezor hardware wallets: how long could they last in a typical bank safety deposit box?
If the answer needs specifics, assume the following:

Temp: 20C
Humidity: 50% RH
Altitude: sea level
Vibration/shock: none
Cosmic radiation: whatever would get through to a typical safety deposit box (should I choose a box nearer to the floor assuming there's no risk of flood?)
"last" = 999 of 1000 wallets stored would have full functionality after this period

To help me understand more, in your answer, could you explain why hardware wallet data retention is longer (if it is) than, say, a typical USB stick, a typical SSD, and an IronKey.

It seems like the general consensus on how long the actual cryptographic chip in the Ledger and Trezor devices will last is ~20-30 years, comparable to a standard flash drive. The Ledger Nano X has a battery that is rated for a 5 year lifespan, after which you probably won't be able to use it without plugging it in, although the cryptographic chip should still work well beyond that.
Regardless, if you would like to ensure your crypto assets can be kept in cold storage for a very long period of time, it is recommended to keep a backup of the seed phrase. If you use a durable medium such as a steel or titanium wallet to record your seed phrase, your assets will be recoverable for as long as the seed phrase is legible.


Wallet.dat (<0.4.0) format: retrieving Bitcoin, possible security concerns Whilst moving houses I came across some old HDDs which I've just found contains a wallet.dat from August 2011. The version of Bitcoin-qt must be 0.4.0 as I know the wallet.dat is password encrypted, which was introduced for version 0.4.0. It is 100% *not* >0.4.0, so the vulnerability patched by 0.4.1 is not in place.

What is the best way to go about restoring the encrypted addresses? If I were to install the 0.4.1 Bitcoin-qt update, would there be any problems with current OS dependencies? Should I use Windows, Linux? Any input greatly appreciated. (I will certainly keep a backup)

Using wallet /import

If you load the wallet file in a modern Bitcoin Core version, you can use the dumpwallet command (to create an unencrypted dump of the keys), and the importwallet command in a fresh instance with a new empty wallet.dat of the dump. You will need to rescan afterwards, though, which may take a while.

Make sure to wipe the dump file afterwards.

Using db dump/load

One way is to use the following command on a Linux install with db4.8-util installed: db4.8_dump wallet.dat | db4.8_load wallet.dat.new

This will create a new wallet.dat.new file, with the same records as the wallet.dat file, but without any old potentially never-overwritten data.

db4.8-util may be hard to install these days, as most distros stopped distributing db4.8, in favor of 5.1 and later. Bitcoin Core however still uses 4.8 for compatibility reasons. You can use db5.1-util as well, but that means that you'll need a Bitcoin Core version compiled with db5.1 support afterwards to use the newly constructed wallet file.


How to see the entire history of my Ledger Nano S? I followed the instructions from this Reddit post on how to find my xpub address and tapped the wrench icon button and then "Detailed logs" in Ledger Live.

The problem is that this xpub value works on neither blockchain.com nor blockchair.com. The Ledger Live historical chart looks nice, but it only shows up to one year of historical balances.

How can I see my entire history of Bitcoin transactions made with the Ledger Nano S?

The easiest solution would be to use your Ledger via Electrum - it supports hardware wallets, will let you set the derivation path to match your address type, and has no limits on the history displayed.


I run a full node. Is there a desktop client to connect to this full node? I run a full node on my Raspberry Pi at home. I want a desktop wallet that uses this full node. Not interested in using remote-x or xpra or setting up an electrum server.

There are a few android wallets that can. For desktop i guess you could run a bitcoin-qt in pruning and blockonly mode to make it as lightweight as possible. Make a whitelisted connection to your full node (possibly over Tor if you're not at home).

Maybe the Neutrino medium weight client (no experience though).


Does Bitcoin wallet encryption also protect my sending and receiving addresses? Bitcoin wallet encryption makes sure (by encrypting the private keys with a passphrase) that someone who finds your computer or your Dropbox or your backup drive (including wallet.dat) cannot spend your coins.

Does this also protect my receiving addresses (which I may not want to be associated with to protect my pseudonymity, and finding them in my wallet would remove plausible deniability)? And how about the aliases I have associated to sending addresses, which might breach confidentiality with my business partners?

If not, what additional steps do I need to take?

Clearly your receiving addresses, your sending addresses and their associated aliases are readily available without the passphrase to your wallet as they are visible upon opening the Bitcoin client without entering the passphrase.

It's perhaps also worth noting that even if your wallet is encrypted, a successful attacker who has a copy of your wallet could install a keystroke logger to obtain your passphrase.

This would seem more likely to happen when your computer is compromised through installing a trojan etc than if someone physically found say a lost notebook PC (for which the attacker would need to install the keystroke-logging software & remote access software, and then give you your computer back so you would type in the passphrase next time you wanted to send coins!)

Sorry, I don't know where the sending and receiving address descriptions are stored, so I don't know how to protect them - hopefully someone else can answer that.


Launder cash using bitcoin atms Is it possible to launder cash this way:
Purchase bitcoins at an atm using cash. This is completely anonymous right? Then sell them on an exchange and report the gains there to the IRS as if they were mined bitcoins. Possible?

Most Bitcoin ATM vendors require you to identify yourself and track your buys and sells. This is done due to Know Your Customers and Anti Money Laundering regulation. You need to present the source of of your money in some point when you exceed some threshold of volume. If any Bitcoin ATM vendor chooses not do this it would be helping  committing money laundering crimes.

If you find a ATM vendor stupid enough not to do any kind of KYC do not expect them to stay in the business in long run. Alternative, if the operator of ATM stays anynonymous, they are looking for a scam exit and will run with your money.


How do I recover bch sent to external btc address? I mistakenly sent bitcoin cash from my bch wallet to an online casino but I sent it to their bitcoin wallet instead of their bch wallet and they didn't receive the funds to credit my account. Can someone please help me recover my bch if possible.

Most likely, you can't.

I am going to assume this happened recently.  If you recently sent BCH to a BTC address, then most likely it was sent to a segwit enabled address. If that is the case, they are probably gone and locked up forever.

IF you sent them to a legacy address, they will show up in the wallet. BUT, there may be more problems.  If the client that contains this wallet is segwit enabled, you CAN'T and should not attempt to just send them back without first disabling segwit.

The best scenario, is they were sent to a legacy wallet address on a legacy client. i,e. no salt, no segwit, etc.  Then you may recover them.

No matter what the case, it is worth at least trying.  You can try with one of these. https://bch.btc.com/docs/help/bch_segwit_recovery

Good luck!


What's happening with my Bitcoin Core Wallet I'm a total novice - sort of.

In 2013 I bought some Bitcoin through MTGox. I cannot recall how many, but not a huge amount (still would have been worth a small fortune today, but hey-ho) and some months later (2014) I sold them, but I think might have kept 2 or 3 back.

When I checked last - in 2016 I assumed/was told that if I had any they would have disappeared when MTGox went under. That was the last time I had any interest in Bitcoin.

By chance recently I found I still had my Bitcoin Core wallet on my iMac and opened it. That was two days ago and since then it has been synchronising and at present is 35pc progressed. Estimated time left fluctuates from 48 hours to - at present - 11 days. I have a couple of questions.

1/. Is there anyway of speeding this process up? (I have 60+Mps connection)
2/. Given my Bitcoin history is it possible what coins I may have, if any, are here?
3/. Given the last block time was late 2015, should i just stop the process, upgrade Bitcoin Core (if possible) and start again?

Many thanks for any help/advice

1/. Is there anyway of speeding this process up? (I have 60+Mps connection)

Install a more recent version of Bitcoin Core. If you have spare RAM available on your system, you can add dbcache=<n> to your bitcoin.conf file where  is the amount of RAM in MB which you are willing to give to the database cache (note that this is not the only RAM that Bitcoin Core will be using).

  2/. Given my Bitcoin history is it possible what coins I may have, if any, are here?

If you still have the same wallet.dat file (if you did not delete it, it is probably still on your computer), then you will be able to recover your coins. You can go to the Bitcoin Core data directory and see if the wallet.dat file there was created recently or several years ago. If several years ago, it is may contain coins.

  3/. Given the last block time was late 2015, should i just stop the process, upgrade Bitcoin Core (if possible) and start again?

Yes, you should do that. It will sync much faster. No progress will be lost and no data will be lost. If you did not touch Bitcoin since 2015, then your coins should already appear in the wallet. If you don't see them, it is likely that the wallet you are using does not hold your coins.


Name of the country receiving the bitcoin currency Can a country be determined to whom the bitcoin is sent?

No. Bitcoin has no concept of countries or other societal constructions such as laws.


Receiving payments in Bitcoin for RESTful API calls I'm familiar with different options to receive payments in Bitcoin (Blockchain.info, BitPay, Coinbase, Stripe). But how would one devise a solution to have users pay whenever they call some RESTful API endpoints? First thing that came up my mind is the following:

Have user send some initial amount in Bitcoin when they register for API usage on website via solutions mentioned above integrated on website.
Then just deduct from their state of Bitcoin for each API call they make.

But is maybe there a solution/standard, where someone wouldn't have to make an account to first transfer Bitcoin and could somehow specify in API call how many Bitcoins to transfer? When I think about it logically, this doesn't seem to be possible as you can't couple together a transfer request with API call, I mean how would you even authorize payment from your personal wallet to the specified address and how much to transfer?

There is one: https://github.com/Overtorment/Cashier-BTC/

Disclaimer: coded by me.


Sent to wrong btc address help! I sent my btc to another address which i found it unspent on block chain how do i return it to my account? I contacted coinjar my wallet and still have no response 1 week!

I downloaded bitcoin core and used the address[recieve] to finalise the transaction so im not sure why its not in my wallet as the address i got was from my bitcoin core wallet?

There is no way to reverse a transaction once it has been confirmed. Do you control the address that you sent the bitcoin to? If not, then you will need to contact the person (or business) that controls that address, and ask them to return your funds.


Why are blocks hashed? Am I correct that addresses are hashed to compress a huge text-represented coprime into something of manageable size?

Am I also correct that transactions are hashed for the same reason and also because:

  To create RSA signature keys, generate an RSA key pair containing a modulus N
  that is the product of two large primes, along with integers e and d such that
  e d ≡ 1 (mod φ(N)), where φ is the Euler phi-function. The signer's public key
  consists of N and e, and the signer's secret key contains d.

  To sign a message m, the signer computes σ ≡ md (mod N). To verify, the
  receiver checks that σe ≡ m (mod N).

  As noted earlier, this basic scheme is not very secure. To prevent attacks,
  one can first apply a cryptographic hash function to the message m and then
  apply the RSA algorithm described above to the result.

?

I cannot find a reason for blocks being hashed except to slow the rate that transactions are verified thus new supply is mined.  Is this correct?  If not, why are blocks hashed?

Bitcoin public key cryptography is not based on RSA, but on Elliptic Curves, so the key is not a huge coprime (in fact ECC manages to achive a similar level of security with much smaller keys).

About why blocks are hashed, the reason is not to slow down anything, quite the contrary: it's to speed up verification that a block "follows" the other blocks in the blockchain. One does not need the hash to verify the transactions (in either the current block or the past ones), but since each block contains the hash of all previous blocks (in a compact way known as a Merkle Tree), one can not simply create a block "isolated" from the blockchain (taking as much time as needed) and then just "insert" it in the blockchain to win the reward - it's necessary that a previous block is known before a new valid one is created.

The "hard" part is creating a hash that satisfies the difficulty criteria. A concise explanation of the process is given in this answer. But one does not need to "reverse the hash" or anything like that for any reason.


Could somebody be traced in a situation like this? I'm fairly new to bitcoins and wanted to know if somebody could be traced easily in a situation like this:

Somebody buys btc with his/her own name
Btc are sent to an address, an offline wallet, which already has some bitcoins in it. The wallet is not associated with his/her name, other than the fact that the btc the specific somebody bought are sent to that wallet.
He/she sends all of the bitcoins from that wallet trough a mixing service via tor to some address.

There is one condition. It is known that he/she bought the bitcoins and had them sent to the address of that offline wallet.

More specifically: could it be proven that that somebody who bought the coins and had them sent to the offline wallet was the one who sent all of the wallet's coins to the final address?

Bitcoin addresses are pseudonymous, in other words they aren't linked to anybody's ID without that user somehow linking the address to their ID (for example by withdrawing from an exchange service where they have provided their ID to the exchange).

There are various known tricks/tools to reveal IP addresses of transactions and to link various addresses to a wallet if they are all in the same actual wallet. Each have varying degrees of success. But at the end of the day if an address is used only once and isn't part of a wallet with other addresses in it, plus you use tools like Tor and mixing services it would be very difficult to link future addresses to the source address while still knowing for certain that the addresses belong to the same owner. Potentially impossible depending on the tools/services used. I'm not saying Bitcoin is anonymous, it's not at all, the entire transaction history of every address is entirely visible to every man, and his dog. But it is pseudonymous if used correctly and that's what is important for your question. The funds can be traced through the addresses, but tying the owner to those addresses is what's important.

For example, note that this is not advice, but if you sent your identifiable purchased funds to an exchange, gambling site, dark net site, or other site that does not require ID verification. Then withdraw those funds in multiple transactions to different addresses in different wallets, using Tor or similar perhaps. Then those funds would be indistinguishable from the source funds in most cases. But, do your research if extreme privacy is important to you. Most of us are happy just pushing the funds through a simple mixer for a little bit of semi-privacy.


In the case, bitcoin transactions are becoming less frequent, will the blockchain become unsafe? The security of the blockchain relies in the fact that new blocks are added faster than any attacker guy can add them (as long as <51%)

In case the frequency of the bitcoin transactions becomes less, an attacker could use the time to remove some previous transactions (not too far behind) and do bis proof of work.
Then... When new Block is finally verified and ready to be added, in the case he is the fastest miner (even <51%), he could propagate his bogus blockchain fork.

Of course, due to <51% his chances are little but because of the low amount of transactions, he could try over and over again (thus increasing his chances).

World this render blockchain more insecure?

Thanks!

It's not the number of transactions that determines the security level, it's the amount of work done to partially invert the hash function. For the same difficulty level, this is proportional to the number of blocks mined (though Bitcoin scales the difficulty to even out the time between blocks). In the short run, the miners do not really care if there are many transactions or few transactions available to include in the block -- they've already invested in the high fixed cost of ASIC mining hardware.

To pull off a 51% attack, the attacker would have to provide as much computing power as all legitimate miners do. A slight drop in the popularity of Bitcoin isn't going to cut it.


Any way to create a multisig address from Bitcoin addresses (instead of public keys)? Any way to create a multisig address from Bitcoin addresses (instead of public keys)?

If not, why not? What would the problem be?

EDITED - Thanks for the answers. This is for an application that generates multisig transactions with escrow for external users. Of course anyone who controls an address can find the public key, but that's probably beyond many casual users (or too much of an hassle).

While you can't generate a multisig address directly from a number of non-multisig addresses, you can easily get their public key on a single call. In bitcoin-core you have to call validateaddress and then retrieve the pubkey field from the response, which is the hex value of the raw public key that you can then use to generate your multisig.


signrawtransaction - Which private key from BitAddress.org? I am trying to do multisignature addresses and when it comes time to spend the funds, I am getting stuck.

If I create a 2 of 3 multisignature address using 3 public keys that I generate locally, then dump their private keys and use those to sign and spend the funds, it works without issue.

But, when I generate public/private key pairs from BitAddress.org (Wallet Details) there are multiple types of private keys with different lengths.

Private Key WIF 51 characters base58, starts with a '5'
Private Key Hexadecimal Format (64 characters [0-9A-F])
Private Key Base64 (44 characters)
Private Key 52 characters base58, starts with a 'K' or 'L'

When I do dumpprivkey for one of the keypairs generated locally, it spits out a 52 character key. So I thought maybe the 52 character base58 private key was the one I should enter, but it returns "Invalid Private Key".

The key that dumpprivkey spits out does not follow any of the rules of any of the above private keys provided by BitAddress.org generation. So how do I generate this private key that I can use in signrawtransaction ?

I want users to be able to generate and supply their own private keys for a multisignature escrow, so generating the addresses locally is not an option.

Ok.....

Since nobody answered. After smashing my head against the wall for a day, I finally figured out that since I am developing right now, and I am using testnet, the private keys generated for testnet and the private keys generated for "real net" are not interchangeable. So I had to switch BitAddress over to testnet mode to get keys that would work for my transaction.


How can the number of unique addresses decline? Blockchain.info has various charts over time, including one for "unique addresses". They do not explain what it means, but presumably it is the number of unique addresses that appear in all transactions in the blockchain.

If this is true, then I would expect the number of unique addresses to keep going up indefinitely. How could the number of unique address decline?

Most likely, it's the number of unique addresses that hold a balance, not have appeared on the blockchain.


Where is a comprehensive list of websites for getting free bitcoins? Up till now I know two websites where one can get free bitcoins:

http://www.bitvisitor.com/
https://freebitcoins.appspot.com
http://freebitco.in
http://takefreebitcoin.com/

Is there a comprehensive list of all such websites available somewhere?

Constantly updated list: https://bitcointalk.org/index.php?topic=90718.0

  Free Bitcoin sites:

The Bitcoin faucet.
One time payout per Google account. Explanation available at the site.

Daily Bitcoins.
Can be used once an hour now, and not just once a day.

CoinAd.com.
Can be used once an hour with registration.

Bitcoin Addict

Bitcoiner

Bunny Run.
See here for more info.

Free bitcoins - netlookup.se

Nakabot's Bitcoin Faucet
(Tor hidden service) NakaBot pays out a portion of its winnings in 0.001 increments.

Free BitCoin Daily Scratchcard

kickme.to/goxkeygen
MtGox account needed to redeem the code one receives.

bitcoinpixels.com
0.01 BTC free when signing up to betfair. See here for more info.

memorydealers
Learn how here.

Omnicoins
Learn how here.

cointicket.org

BitCrate *

bitcoins.so *
Roll dice : same numbers - win 0.01

Paperco.in faucet *
Scan a QR code to reveal a MtGox code for 0.0007 BTC.

Gambling sites that give out free bitcoins ( freerolls etc. ) after you join

Dragon's Tale
A casino site, but gives out small amounts for free that you can use to gamble with or withdraw to your own Bitcoin wallet.

Seals with Clubs
Seals has a free poker tournament every hour with a .05BTC prize. There are larger free tournaments from time to time.
See here for more info.

Strike Sapphire
See here for more info.

Not exactly Free but popular "earn" Bitcoin sites

BitVisitor
Earn Bitcoins for visiting websites

CoinTube.TV
Earn Bitcoins for watching TV