HD wallets and address reuse HD wallets create a series of addresses, and then when one address has received an input it will give you a new address that hasn't received inputs yet

So in the idea of you sending yourself bitcoin from an exchange, and having different addresses all the time on the exchange, and different addresses in your wallets, then an observer wouldn't be able to track the sum of all your funds.

But isn't this all undermined when you move a large amount of bitcoin and the transaction combines bitcoin from all of the addresses in that wallet?

How is that part avoided while retaining the ability to realistically send funds quickly and conveniently? I understand that it is possible to form a transaction to only use a certain address for sending, but ultimately there is still a third party with one address that I want to send bitcoin to. So I will have to use several of my addresses to get the appropriate balance.

This seems to completely undo my privacy. Not necessarily from blockchain analysis but by having records of a single address (such as from the exchange).

For instance, lets say an exchange gave over the user names to a government. The government then looks at all the addresses that user sent bitcoin to from the exchange. Then they simply look in the blockchain for that address and look to see where it was used again to combine bitcoin with other addresses, as this reveals that one person had the private keys to all those addresses used. Privacy undermined.

Solution? I can imagine a scenario where I could do one transaction at a time back to a different exchange, generating new addresses in my exchange wallet. Cumbersome. But for something like a bitpay payment, I don't see how this is practical, unless third parties also let me choose how many addresses they would generate for me.

As mentioned, I don't believe HD Wallets are relevant to this problem. Even with simple wallets combining inputs from multiple addresses proves that a single person owned all the addresses included. I'm not sure if this would meet your specific privacy needs, but it is at least a straightforward way of avoiding that problem:

Assume you have 4 addresses, A, B, C, and D. You want to send a transaction that requires funds from all 4 without proving that they were owned by the same person. You could generate a 4th address E and over the course of several days combine all the address values at a new address.

While the blockchain would show that the funds in E came from A-D, there wouldn't be any proof that A-D were owned by the same person, as they were never in a single transaction together, and it is feasible that 4 different people all transferred value to E, instead of the same person transferring value to E.

It seems feasible to write a client that follows that policy of never combining inputs from multiple addresses in a single transaction, which would at least allow plausible deniability. The user would be able to manage timeframes depending on their needs, so that the combination could occur over the period of an hour or a year, depending how soon they need the transaction. You could also add some intermediary steps to split things up a bit more and pass through a few extra addresses to make it slightly harder to follow.

Since it is a public ledger it really isn't a very anonymous system, and achieving anonymity is difficult without a mixer, but the biggest compromise to anonymity is connecting multiple addresses in a single input, so simply avoiding doing that will be helpful, but at the expense of convenience.


Bitcoin transaction with 0.0001 BTC fee not getting confirmed? I sent the following transaction a few hours ago with Bitcoin-QT:
https://blockchain.info/tx/b5682b48484a8752be62c6b4036eaf8a8f005d9ea75cbff434476b7506a9e3a2

And the transaction still has not been confirmed. I attached 0.0001 BTC transaction fee.

Did I lose the money? Can I do something to speed up the confirmation of the transaction?

There is a time limit for transmission by most clients. I think Bitcoin-qt used 3 days. After that you can spend it again


Does the software to conduct a 51% attack exist? I know that it would cost hundreds of millions of dollars to do a 51% attack on Bitcoin, but if somebody did that, bought the hardware, etc could Bitcoin Core or any other software be easily configured to do what they want (e.g, ignore blocks containing a certain transaction in order to try to get rid of it), or would such an attacker need to write their own software?

When you have open-source software, it's a fine line between "configuring" and "writing".

Say you want to reject all attempts to spend a particular transaction. There isn't a command-line option or config file directive to do this in the standard Bitcoin Core distribution, so in that sense the answer is "no". But you can do it by adding two obvious lines of source code and recompiling, which is only marginally work than modifying a config file.

There is certainly no need to rewrite Bitcoin Core from scratch, if that's what you're asking.  You can assume that if anyone is planning a 51% attack, the need to modify software is not going to be a significant obstacle.


How to convert P2PKH to Hash160 (or something else acceptable by Script)? How to convert a bitcoin address (starts with 1) to the right format acceptable by script (I'm using this Ruby library)? I'm doing this:

tx.output do |o|
  o.value(50000)
  o.script { |s| s.recipient('1GzqkR2zNQUzHLpE7PLPjVNJ51FHC3bpDH') }
end

I'm getting:

RuntimeError: Script type must be hash160, pubkey, p2wpkh or multisig

I suspect there is something wrong with the format of the destination address. I cross-posted to GitHub too.

To convert a P2PKH address to a script, you first have to decode it using base58check.

Here is an example:

$ bs58 -dc 1GzqkR2zNQUzHLpE7PLPjVNJ51FHC3bpDH
00af7a4a30243f2301e6a14a4979ae099d52f560d4

Remove the prefix 00, see https://en.bitcoin.it/wiki/List_of_address_prefixes. You are then left with the hash160 of the pubkey, but this is not a full script. The P2PKH script looks like: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG. So you need to add the missing ops:

OP_DUP = 0x76
OP_HASH160 = 0xa9
OP_EQUALVERIFY = 0x88
OP_CHECKSIG = 0xac

Resulting script: 76a9af7a4a30243f2301e6a14a4979ae099d52f560d488ac

Note wallet software does all this for you when creating transactions based on an address.

Links

Bitcoin Wiki | Script
Bitcoin Wiki | Transaction (P2PKH)
Python Tools (bs58):
https://github.com/jbaczuk/blockchain-dev-tools/


Where to find cryptocoins current price How can I find API (json data) for cryptocoins current ask/high/low/average price. Is there any website that provides that ticker information for all coins.

For example BTC/LTC ticker info is available in
https://btc-e.com/api/2/ltc_btc/ticker

I use bitcoinwisdom which in the market section has multiple exchange ratios for BTC/LTC/DOGE and for fiat money like USD/EURO/RUB.

Another option is this page in cryptocoincharts which also has many market prices for cryptocurrencies.


To get the master private key of HD wallet How can I get the master private key of HD wallet bitcoin core satoshi client 0.14.2? Any command for that  on bitcoin core console? Currently I am on Testnet3.

go to help-> debug window -> console

Enter:

walletpassphrase "your walletpassphrase here" 60, to unlock the wallet if its encrypted.

dumpwallet  "filename", will crate a plain text file in same directory where your wallet .dat file is form which you can get your xprv.

walletlock, to lock your wallet

Don't forger to erase the file after you get the info. Also if u change your wallet password the xpri will change.


How do i list my ICO token created on Stellar to an exchange? I believe stellar has a built in exchange called stellarterm for tokens created through their platform. My question is am I able to list my token on another exchanges or are we limited to only stellarterm?

Most exchanges will only list coins which have a proven record of exchange volume and price. If you create your own token it is unlikely it will be used by anyone else, or purchased on an exchange, so it is thus unlikely any exchange will want to list it I'm afraid.


How do I solo mine my own modified altcoin I forked DASH a week ago. I am able to generate genesis block hash, merkle hash. I created one VM (ubuntu 16.04) for rpc server. Another one VM For mining. I am able to establish connetion between two VMS's. But when I want to mine genesis block. I cant able to do so and I get the following error.

Launching miner...

[2018-08-09 12:03:38] Binding thread 2 to cpu 2
[2018-08-09 12:03:38] Binding thread 3 to cpu 3
[2018-08-09 12:03:38] Binding thread 1 to cpu 1
[2018-08-09 12:03:38] Binding thread 0 to cpu 0
[2018-08-09 12:03:38] 4 miner threads started, using 'X11' algorithm.
[2018-08-09 12:03:38] HTTP request failed: Failed to connect to
192.168.0.105 port 80: Connection refused
[2018-08-09 12:03:38] json_rpc_call failed, retry after 30 seconds

I am currently trying to mine using ("minerd") provided by dash. Could anyone please help on how to solo mine using minerd or anyother app.

My Configuration for miner VM. (sampcoin.conf)

addnode=192.168.0.105

My Configuration for RPC VM. (sampcoin.conf)

server=1
rpcuser=user
rpcpassword=password
listen=1
daemon=1

My Altcoin creation method based on this tutorial (https://www.youtube.com/watch?v=mDGxGYvkDEE)

The mining software (darcoin-cpu-miner- in dashpay github). It used getwork method. I changed to cpuminer which uses getblocktemplate and supports x11 also. After that I run my altcoin mining. Then it started working.


Why does a malicious miner need more hashing power than the rest of the network combined? I don’t quite understand why a malicious miner needs more hashing power than the rest of the network combined.

When miners are solving a hash puzzle, aren’t they solving the puzzle individually? If so, a malicious miner merely needs to be the most powerful node in terms of her hashing power. But I guess miners are actually solving the puzzle together? In this case, it makes sense that the malicious miner needs to have more than 51% of the hashing power.

edited: November 21, 2018

My question is not how to pull of the 51% attack, but why a malicious miner needs more hashing power than the rest of the network combined.

I don’t quite understand why a malicious miner needs more hashing power than the rest of the network combined

Generally speaking, a malicious miner is one attempting to perform a double-spend or reverse the block-chain.

A miner can attempt to broadcast any block, but it will get rejected if the receiving nodes do not agree with it (checking against consensus rules).

It is important to remember that Bitcoin nodes will always favor the chain with the most amount of proof-of-work (chainwork); this is specified in the protocol's node implementation. The malicious miner needs sufficient hash power to recalculate more blocks than the current chain such that it will have more proof-of-work. Once the attacker's chain has greater chainwork, nodes will discard the existing chain in favor of the attackers.

The miner is indeed required to have more power than the rest (the "honest" part) of the network combined. The miner would need a majority of the hashing power. You will often hear this referred to as a 51% attack.

Additionally as Learn Cryptography suggests:

  Hitting 51% network control is not a guarantee of success, just the point where success is likely. In fact, you could attempt this sort of attack with much less network control, but your odds of success would be very low.

This is also why it is recommended for users to wait until a transaction has over 6 confirmations as it gets exponentially more difficult for an attacker to double-spend as confirmations build on top of the transactions current block. With 51% hash power and 1 confirmation, the attacker is practically guaranteed to be successful in a double-spend.

You can calculate your own attack probabilities for this here

  When miners are solving a hash puzzle, aren’t they solving the puzzle individually?

Miners do their hashing independently, yes. Each miner will check many nonces for the current block until either a solution is found that meets or is below the target, or the block has been broadcast by someone else.


Removing "hub-and-spoke" property of Lightning Network? Lightning Network is based on this idea: "Near-zero fee transactions with hub-and-spoke micropayments" (Link to the article) proposed by Peter Todd.

An article entitled: "Mathematical Proof That the Lightning Network Cannot Be a Decentralized Bitcoin Scaling Solution": (Link to the article) claims that Lightning Network works using centralized hubs.

And the same author in another article entitled: "Clarifying my Objections to the Lightning Network" claims that centralized hubs lead to economic censorship (Link to the article).

There is a new proposed approach entitled: "Ant routing algorithm for the Lightning Network" suggests a decentralized routing mechanism based on Ant colony optimization algorithms (ACO).

Can this new ant routing approach be an efficient solution to enhance decentralization of Lightning Network ? (Since it is not a hub-and-spoke model and removes all privileged nodes in the network.) (Ant routing article link)

No as this algorithm introduced in the paper is not very efficient. As far as I understood the paper when it came out basically everyone needs to be involved in finding the path for a single payment.

I want to say a few more things that always get mixed up when talking about decentralization:

Path discovery and building a censorship resistant decentralized network are two different problems. There are many well known techniques also for source based routing to discover paths. It is the privacy property of the lightning network that gives those algorithms a hard time to come up with an accurate response in 100% times of the cases. This would also hold true for the "famous" hub-and-spoke structure.
I want to emphasize that the 2nd and 3rd source don't seem technically sophisticated as they seem to make many assumptions. For example the third source relies on arguments given in this video which are (as I have stated in a comment to that video) just plain false.
It is very natural in almost every decentralized system/network (take the internet or the world wide web or social networks) that central hubs emerge. Having central hubs is not a problem per se. As the lightning network does not require everyone to connect to a central authority every user can decide to connect to other nodes. It might just be economically more useful for users to connect to a central node (in the same sense as people tend to move to larger cities though they are trusting the city to be running well and they don't have to)
Since everything that happens on the lightning network is ultimately backed by the bitcoin network we don't have any problems with censorship. In fact since all the routing is encrypted anyway it would be hard to censor anyone on the lightning network.


How to add own cpp-files to Makefile I successfully managed to compile bitcoind using the shipped configure script/makefile. Now I want to code something myself and added a folder inside the src directory. The problem now: how do I add my cpp files to the Makefile? When compiling, I get undefined references to functions I implemented inside my cpp files. When looking inside my folder, there are no .o files or anything similar, so I assume they are not compiled. I am completely novice to autoconf/automake and have no idea how to add something to those complicated makefile/configure scripts..

Best wishess to all of you

Bitcoin uses the autotools build system in order to build the source code.  It is a very powerful, yet notoriously confusing system.  You will need to edit the Makefile.am file to include the source files you want to build, and to point the linker to compiled sources.  You will then need to rerun parts of the build system (automake, ./configure, etc...) in order to regenerate Makefile.

The specifics for how to do this are difficult to say, since you will need to determine which parts of the system your new code depends on, and which parts depend on your new code.  I suggest reading up on autotools, determining what is needed for your particular code changes.


How is UTXO tracked? What is the best way to compute UTXO of any address? Do I have to traverse whole block chain each time? Is there a efficient way to compute it?

You can parse blockchain only once and save all utxo into database. I am not sure that it is best way because I do not know the target of your efforts


How to fork an Altcoin Which has 0 Reward Block to continue mining after the LAST POW BLOCK Im trying to learn how is it possible to Hard Fork an Altcoin Blockchain to Continue the Mining Phase after the LAST POW BLOCK. The Block Reward is already 0 and the LAST POW stops at Block 8000. And want to know if there is a way to continue the mining after the 8000 without any SYNC Problem and Stuck Problem.

I don't know ,if you created the coin ,it will be very easy for u to extend the pos margin block area(those pow blocks:>)You not only need to differ the blocks when CreateNewBlock by nBestBlockHeight but also need to do some modifies in "getblock" message blocktype checking.
That's all i got ; If this helps please tip me some reputations guys,this new "50 reputation" for comments nearly silent me  .


Potential security problem: wallettpassphrase opens up the wallet for everybody! I am dabbling with Bitcoin-QT with -server parameter locally, I guess this is not very different from using bitcoind remotely. I use Java and some http client library pluss a json parser to communicate with Bitcoin API via JSON RPC. However, this question is not related to the platform I use in any way, this is a pure Bitcoin API question.

What I have noticed is the following: if I make a call to wallettpassphrase with timeout, say, 5 seconds, the wallet remains open for all other connections for the same amount of time. For example, if connection A issues wallettpassphrase my_phrase 5, another connection, say B, does not have to know passphrase to spend coins. It is sufficient to try many times until some other connection opens up the wallet.

I haven't tried it myself, but I wonder... is this the same with bitcoind? In other word, if 2 different machines, A and B, connect to the same bitcoind server residing on a third machine, say C, and if machine A issues walletpassphrase for 5 seconds, will machine B be able to spend coins without knowing the passphrase within those 5 seconds?

If it will, isn't this a most serious impendiment for using bitcoind with many connections?

Yes, any person you give your rpcpass and rpcuser to can control your wallet, that's not what the wallet encryption password designed to protect against. You really don't want to be giving arbitrary users your RPC authentication details under any circumstance, and I can't think of one where you would need to.


How many users did Mt.Gox have? The amount of lost Bitcoin is well-known, but is it reported anywhere how many user accounts Mt. Gox had before its downfall?

The leaked database dumps (from when MtGox was hacked after they closed down) shows 189374 records as a result for this query:

mysql> SELECT * FROM platform.User_Wallet WHERE platform.User_Wallet.Balance != 0 ORDER BY platform.User_Wallet.Balance DESC;

Notes:

That's only non-zero balances
There are many currencies (BTC, USD, JPY, PLN, AUD, GBP, ...) in there, each counting as a seperate "wallet"
We don't know how many fake accounts there are (created by MtGox themselves).
The hackers that released these documents may have messed with them.
There are for example 8467 records that have Balance "1" (Satoshi or other currency). Likely remainders of incomplete withdrawals and such. There will be many many more that have up to a couple million Satoshis (which is still just dust).

Therefore, in short, this may NOT be a good approximate answer to your exact question.


Unconfirmed balance Multibit I have read a lot of threads regarding this but haven't sovled it. My scenario is this.

I have saved all the .zip.aes Multibit files on my Dropbox. Now I have reinstalled Windows on my computer and trying to set up Multibit again. I have the wallet words and password.

I have set up my wallet to use the same folder on my Dropbox where my .zip.aes files are. The secret word and password worked great. The balance of my account is correct, allthough I get the "Unconfirmed" in front of the balance.

I have also downloaded Bitcoin core which somebody stated would work. Also tried "Manage wallet > Repair wallet" with no success.

How do I solve my problem?

You must import your wallet into another wallet program like Electrum. There is no solution and Multibit support will not answer your ticket or email, as they ignored me as well.


Blockchain transaction unspent This is a bitcoin transaction as shown in a blockchain explorer. What does ‘2 confirmations’ mean here? Sorry for the picture quality.
Which one is the best answer?

2 confirmations by miners are required for this transaction to be accepted by the network
2 other blockchain nodes have confirmed this transaction
The transaction is included in one block (of the blockchain) whose hash is included in the previous block

2 confirmations means the transaction was included in a valid block and that block was continued by another valid block.
Option 3, although it should be next block (older than the one that contains the transaction) instead of previous block.


If Bitcoins aren't tied to a conventional currency, how did they get so valuable? I would appreciate it if  someone could provide me with some insightful information.

At first it was simply because a decent amount of people accepted the fact that it had a value and used it as a currency even if it was not backed by gold or oil like conventional currency (that still does not have intrinsic value), if you mean how it achieved such an insanely high value the answer is even simpler: speculation; people started buying the currency not to use it for transactions of goods but to simply make a profit from the fluctuating value, buying low and selling high.


How can I safely store and trade Bitcoin and other crypto currencies? How can I safely store Bitcoin?

Exchanges require me to deposit to trade, is this safe? If I can't trust exchanges, what is the best way to safely store my cryptocurrency and transact it?

There are several ways to store cryptocurrencies, so let's break them down by use-case and safety-level.

Exchanges

There are, broadly speaking, two types of exchanges. Centralized exchanges, such as Bitfinex, Bittrex, Kucoin, etc., and decentralized exchanges such as Etherdelta and Switcheo.

Trading on a centralized exchange requires you to deposit cryptocurrencies before you can trade them.  In this regard, they function as custodial services, and thus come with a very high level of risk.  If the exchange operators steal your coins, or if the exchange gets hacked, your funds may disappear, and there may be very little you can do to get them back.

In general, one should only store coins that they are actively trading on an exchange.  To reduce the risk of loss via theft or fraud, balances that are not being actively traded should be withdrawn to one of the wallets described below.

Decentralized exchanges are less risky, as they allow you to deposit coins as part of your trade, and the proceeds from a trade will typically go directly to your wallet.  However, certain risks still exist, such as:

The site acting as the front of the decentralized exchanges could be compromised, and work to steal your keys
perhaps the contract is a scam and will take your incoming coins, and not pay out the proceeds of the trade.

These risks can be reduced by:

Using a temporary wallet for trades
Only storing coins you are trading in that wallet
Ensuring that you are using the correct decentralized exchange (check the domain, check the contract address).

Personal Wallets

Personal wallets also come in a number of flavours.  We will break them down into three broad categories:

Hosted Wallets
Local Hot wallets
Cold storage, or offline wallets

Hosted Wallets

Hosted wallets, such as exchange wallets, do not give you direct access to your keys.  If the service is down, compromised, or shuts down permanently, you can no longer access your coins.  Do not use a hosted wallet unless you are using another service offered by that company, such as trading.  Ensure you withdraw your funds to a more secure wallet when you complete your exchange business.

Local hot wallets

Hot wallets, in general, refer to wallets where the keys are stored on an Internet-connected computer.  They are designed to quickly process outgoing transactions.   Many services offer a hybrid hosted-hot-wallet, such as btc.com and blockchain.info.  The provider of a hosted-hot-wallet will provide you seed words or private keys which can be used to recover your coins if the service goes down.  Hosted-hot-wallet services also offer ways to easily access your wallet, such as a regular email/username/password account system, mobile apps, 2FA, etc.

Hosted Hot wallets come with several risks.   You must trust that:

the initial key generation is not backdoored.
they are not storing unencrypted copies of your keys.
they will not steal your funds when you are using their web interface/mobile apps, which would naturally need access to your keys to make any transactions.

You are also vulnerable to phishing attacks for the account credentials, domain takeovers, and hacks of their systems, which may be compromised and made to serve malicious versions of their apps that would steal your keys or otherwise drain your accounts.

Many people use these services for their ease-of-use, and a number of (so far) reliable ones exist.  Always be careful when using such a service, and follow basic security measures such as ensuring you use strong passwords, enable 2FA, confirm the website address is correct, use a trusted computer to access the service, etc.

Some hot wallets, such as Bitcoin-qt, Electrum, etc., allow you to run them locally on your own computer. These wallets generate and store keys on your computer, and will typically only require a password to unlock the wallet. They do not rely on centralized servers, and instead may either connect directly to the bitcoin P2P network (or the network of your altcoin), or to second layer P2P networks such as Electrum servers.   While generally more secure than a host hot wallet, these have risks such as :

your computer being compromised and the keys stolen
downloading a malicious version of the wallet client that gives you non-random keys, or steals keys after generating or importing them.

To avoid such attacks, you should only use a trusted computer, and verify the signature and hashes of the wallet client software after downloading it.

Cold storage

Cold storage refers to the most secure type of wallet where the keys are not stored on an Internet-connected computer.  There are essentially two types of cost storage wallet; paper, and hardware.

Paper wallets usually just consist of a private key and public address printed out or otherwise stored on a physical medium that is not connected to a computer or the internet. Creating the private key and public address, in an ideal scenario, would use a peer-reviewed, vetted bitcoin address generator on an air-gapped, recently formatted, trusted computer with a cryptographic-quality random number generator. These requirements are occasionally difficult to meet, but are doable by most people given enough effort. Once generated, coins can be transferred to the address, and the private key can be stored on a piece of paper or a flash drive, or inscribed in a metal sheet, and then stored somewhere physically safe, such as a bank vault, home safe, or even split up into pieces and stored in multiple locations.

These wallets are typically extremely safe, since if generated correctly, they are impossible to compromise without physically compromising the location where the private key is stored. However, they are cumbersome to use, as the key must be physically retrieved and imported into a software wallet before a transaction can be signed.  The signing itself can be done on an offline computer to minimize risk, with the signed transaction verified and broadcast by a separate, online computer.

Offline wallets are typically used to store coins for a long time, without the intention of regularly spending them.  Coins can be sent to the paper wallet at any time without retrieving or using the private key.

Hardware wallets, such as the Ledger and Trezor, are newer takes on cold storage. These are essentially tiny computers than generate and store the private keys, and sign transactions on the device itself. You use them by connecting them to a computer, which then passes an unsigned transaction to the device. The device will then display the amount and destination, and attach the signature after you confirm the details are correct. The signed transaction is then sent back to the computer, and the private keys never leave the device.

The attack vectors here are limited to:

a device flaw
stealing the device + pin
stealing the seed words for the device (make sure you keep these very safe)
tricking someone into signing a transaction without verifying the outputs.

The wallet devices themselves are currently considered quite safe (although an attack was recently demonstrated and patched by Ledger).  Provided you choose a strong PIN and store the seed words safely, hardware wallets are the safest, most user-friendly way to store cryptocurrencies, offering a large advantage over hot wallets and exchanges, and even paper wallets in terms of ease of use.  However, hardware wallets currently do not support all cryptocurrencies, and one may have to resort to paperwallets + hardware wallets to cover their entire portfolio.

General Advice

This advice applies no matter what wallet you opt for, and extends to general computer security as well

Use a trusted computer - Make sure you don't install any untrusted programs that may contain keyloggers or other malware.  If paranoid, get a separate computer for crypto use, and format it regularly.
Verify the hashes and signatures of any clients you download.  All trustworthy crypto software comes with known-good hashes published on the website along with the download links, and often with signatures from trusted developers/community members.  Verifying these hashes and signatures helps ensure the program you downloaded was not been tampered with.
Check where you are downloading a program from - Make sure it is the official site, as many phishing clones exist. Check the domain for character swaps (l instead of i, etc.), check the extension, make sure it uses https, and use a computer you trust.
Use strong, random passwords/PINs for wallets and accounts - Get a password manager, no other way to say it really.
Enable 2FA everywhere you can.  Ideally, use time-based 2FA where available, instead of SMS-based ones, and use a device you trust for saving the 2FA codes.
Always verify the transaction address and amount before sending.  Malware exists that will silently change a crypto address after you copy it, and before you paste it into the wallet.  Verify the address before sending.  Many wallets, such as hardware wallets, Bitcoin-qt, Electrum etc. offer a preview function before signing or broadcasting the transaction. Use this feature to ensure the address and amount matches what you entered.
99.999999% of the time, anything that offers you free BTC, offers to mine BTC for you, offers to double your coins, etc. is a scam - Don't fall for it.
Make backups of your seed words/wallet files and verify them.  Computers or hardware wallets can break, and having a backup is essential.  Hierarchical Deterministic wallets, aka HD Wallets, allow you create a long-lived backup that can restore addresses and keys generated after the backup was taken.  Non-HD Wallets, such as bitcoin-qt in non-HD mode, must be backed up every time you generate a new address.  If you restore an old backup from a non-hd wallet, you will lose the value of cryptocurrencies received after the backup was created.


How to test your Litecoin mining hash rate? I don't know if there exists a service to quickly check what your mining hash rate is for Litecoin as the following does for Bitcoin

http://bitminter.com/test

I'm looking for something that doesn't require to install or configure anything, or if necessary to do so with the less possible fuss.

Any ideas?

You can go to https://litecoin.info/Mining_hardware_comparison and see the hashrate corresponding to the equipment you have, assuming you know what is inside your computer. Actual results may vary, but usually this is a good estimate. Of course, if you overclock, you will get better hashrates, at the cost of increased power usage. If you want to actually mine, you will need to register at a mining pool and configure your miner to log in to said pool. The website you linked uses Java code to test hashrates, and this will not give accurate results (even for Bitcoin), as Java is usually slower than machine language.


How are bit coins valued? If no one controls this then how can you be sure it is stable? How is it regulated and most importantly how is it valued? I'm having a hard time grasping the idea of not being centralized and regulated somehow… can someone game the system… blah blah blah etc!?

If no one controls this then how can you be sure it is stable?

There is a bigger discussion around this point - it implies a that a currency controlled by a government is stable.

Stability is not determined by a government, no matter what you may believe. The value of the Euro or the Pound or any other currency is determined by the general consensus in the market that the currency has a certain value. When markets turn against a currency it can be a problem. Note for example how the US dollar collapsed to half its value against the Euro couple of years ago.

It is the same for Bitcoin, except that what you need to consider is that Bitcoin is still very new and early valuations of new technologies are naturally unstable because markets do not know them very well and can get spooked easily - hence the volatility. This will become less and less as time goes on.

  How is it regulated and most importantly how is it valued?

The system is self regulating, but it depends on what you mean by regulation. Regulation is not always necessary for successful technologies. Is facebook regulated? Is amazon? Both have issued their own form of currency, and nobody talks about regulating them.

What sort of legal framework do you think is suitable to "regulate" bitcoin? Even the regulators in most countries are issuing notices stating that they do not have the authority to regulate Bitcoin. Note they are not banning Bitcoin. This means exactly what it says, and doesn't say.

  I'm having a hard time grasping the idea of not being centralized and
  regulated somehow… can someone game the system… blah blah blah etc!?

I'm not surprised you are having a hard time. You probably do not know enough either about the Bitcoin protocol, the technology behind it, how markets work, how markets can be gamed (or not).

I can't answer a vague question on this but I suggest if you think of a specific situation where something might happen, post your question and someone will answer.


How exactly does a block get constructed and verified? From what I understand, a new block contains all the transactions within the last 10 minutes.  So when Alice sends Bob 10 BTC, how does this information get put onto the newest block?  I guess I am wondering who collects all the transactions and then constructs the new block?  Does the client facilitate this and how do we know it contains trustworthy data?

And when the block is discovered by a mining node, I understand that it tries to find a nonce which hashes to leading zeros as part of proof of work.  I read that miners help 'verify' transactions.  How does finding a nonce verify what is in the block?  Or does the verifying refer to other nodes checking that "block + nonce" hashes to correct number of leading zeros?

So when Alice sends Bob 10 BTC, how does this information get put onto the newest block? I guess I am wondering who collects all the transactions and then constructs the new block? Does the client facilitate this and how do we know it contains trustworthy data?

That's what the Bitcoin software does. It relays transactions from anyone who generates them to the miners so they can include them in blocks. You know the data is trustworthy because you always check it completely. Bitcoin operates based entirely on mathematical rules and the data either follows the rules or it does not.

  And when the block is discovered by a mining node, I understand that it tries to find a nonce which hashes to leading zeros as part of proof of work. I read that miners help 'verify' transactions. How does finding a nonce verify what is in the block? Or does the verifying refer to other nodes checking that "block + nonce" hashes to correct number of leading zeros?

All the computational effort that a miner does on a block cannot be separated from that block or the nonce would no longer produce the leading zeroes. One of Bitcoin's rules is that among valid blocks, the one with the most computational effort wins. By heaping absurd amounts of computation on top of blocks, the mining process ensures that someone else cannot create their own valid block that "wins" over a block that contains a transaction you have considered accepted.


Does the creator of BitCoin hold a 'master' private key? If the creator of BitCoin, whoever he/she is, was the one that started the block-chain and with every cryptographic operation deriving from that initial key, would the network be under the complete control of the creator? The only way I could see this not being the case if the key was disseminated into the network, but I am unsure if that is the case.
If the key is control over the block-chain and if the key generator still holds the key, then regardless of the fact that it is decentralized in operation, it is still centralized in control, like a bank.

Any thoughts?

Update:

I guess I'm really asking basically is whether the creator had/has any advantage in the network (i.e reversing transactions, creating new coins). I mean unless he specifically programmed the network not to be under his control, it would be right? I mean he IS the creator of the network and unless we have proof (source code inspection?) that the network has been 'turned over' so to speak to the users, we cannot guarantee safety can we?

No one holds a key that gives them special control of the blockchain.

The closest thing to a "master key" was the alerts system, which allowed signed messages to be sent to every client, for example, to tell users to update their client in response to a security issue.  This feature was for alerts only and can in no way affect the blockchain, transactions, or user balances.  This key was possessed by Satoshi, Gavin Andresen, and theymos.

Update: The alerts system was retired in the summer of 2018, due to risk of DOS attack vectors (full nodes could be DOS attacked by carefully crafted alert messages), and increasingly widespread knowledge of the alert keys.


Blockchain.info js verifier error I got this error connecting to blockchain.info, does anyone know what that means?

Basically, I think you have a Google Chrome extension (possibly FastSave 1.1) that is overlaying their ads with superfish's ad-serving network.

See here for reference:
http://www.fergeeks.com/chrome-tips/fast-save-1-1-chrome-extension-adding-ads-causing-havoc/

Check the chrome extensions you have; disable one by one. This is a particularly unobtrusive and semi-non-harmful (to you) virus that allows a malicious developer to replace ads you view with ads they serve.


In what circumstances would a block appear in the Leveldb .ldb index but have no data in a .dat file? I've observed this behavior with Bitcoin Core v0.15 while parsing the LevelDB index in .bitcoin/blocks/index. It is also a situation that is obviously accounted for in the Bitcoin Core source code here (See BLOCK_HAVE_DATA and BLOCK_HAVE_UNDO). I am just looking to understand what would cause this to happen? Can a peer receive the block header before receiving the block itself? I'm finding that only the top few blocks in the chain seem to be missing data; They appear in the index but not the .dat files.

Bitcoin Core may only have just the block headers for some blocks, not the full block data. Such block headers would get an entry into the chainstate and block index as a block that the node knows about. However the node does not have the full block data corresponding to that header so there is no corresponding block data in the blk*.dat files.

This situation happens during syncing (since Bitcoin Core will fetch block headers first and then the blocks), when there are orphan blocks, and when there are chain forks.


Auto Adding Devices to BFGMiner Every time I launch BFG Miner I have to add the devices by entering the com port it is on. Is there anyway to do this automatically?

Here is my start script:

bfgminer -o stratum.bitcoin.cz:3333 -u Bgordy2014.RaspberryPi -p PW -G

I was thinking along the lines of -D erupter:\.\COM3

D equaling devices


In Bitcoin core 0.21 which command replaces getaccountaddress In Bitcoin core 0.21, which command replaces getaccountaddress?
Is there any way to get the same data as getaccountaddress in 0.21?

which command replace getaccountaddress ?

None, see the notification two and a half years ago in https://bitcoincore.org/en/releases/0.17.0/

Deprecated Method
New Method
Notes

getaccount
getaddressinfo
getaddressinfo returns a json object with address information instead of just the name of the account as a string.

getaccountaddress
n/a
There is no replacement for getaccountaddress since labels do not have an associated receive address.

getaddressesbyaccount
getaddressesbylabel
getaddressesbylabel returns a json object with the addresses as keys, instead of a list of strings.

etc.


Altcoin solo mining issue with Cpuminer I have cloned litecoin to make my own altcoin for fun and i want to solo mine the new coin using cpuminer on mainnet. I have compiled and installed cpu miner in my Mac OSX and i am running the altcoin daemon and opened the port as well.

./src/altcoind -daemon

When i run cpuminer i get this error.

./minerd -o http://127.0.0.1:26201 -O litecoinrpc:9eac7ba52764a6d42aa48386e8f435f8 -a scrypt --no-longpoll --no-getwork --no-stratum --coinbase-addr=xxxxxx

[2018-02-27 17:55:48] Binding thread 2 to cpu 2
[2018-02-27 17:55:48] Binding thread 0 to cpu 0
[2018-02-27 17:55:48] Binding thread 1 to cpu 1
[2018-02-27 17:55:48] Binding thread 4 to cpu 4
[2018-02-27 17:55:48] Binding thread 3 to cpu 3
[2018-02-27 17:55:48] Binding thread 5 to cpu 5
[2018-02-27 17:55:48] 8 miner threads started, using 'scrypt' algorithm.
[2018-02-27 17:55:48] Binding thread 6 to cpu 6
[2018-02-27 17:55:48] Binding thread 7 to cpu 7
[2018-02-27 17:55:48] HTTP request failed: Failed to connect to 127.0.0.1 port 26201: Connection refused
[2018-02-27 17:55:48] json_rpc_call failed, retry after 30 seconds

Here is my altcoin.conf

rpcuser=litecoinrpc
rpcpassword=xxxxxx
rpcport=262012
rpcallowip=127.0.0.1
server=1
gen=1
listen=1

Why is cpuminer not working?

Another attempt: I changed the conf file removing port

rpcuser=litecoinrpc
rpcpassword=xxxx
rpcallowip=127.0.0.1
listen=1
server=1
daemon=1

and now it seems to connect to the port but i receive, empty reply from server

[2018-02-27 18:23:11] Binding thread 4 to cpu 4
[2018-02-27 18:23:11] Binding thread 5 to cpu 5
[2018-02-27 18:23:11] Binding thread 6 to cpu 6
[2018-02-27 18:23:11] 8 miner threads started, using 'scrypt' algorithm.
[2018-02-27 18:23:11] Binding thread 7 to cpu 7
[2018-02-27 18:23:11] HTTP request failed: Empty reply from server
[2018-02-27 18:23:11] json_rpc_call failed, retry after 30 seconds

Any help or advise is much appreciated.

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


The compressed public key byte header I've noticed that compressed public keys are always either 0x02 or 0x03, but what exactly determines whether it's 0x02 or 0x03? I can go look at the OpenSSL code to answer this, but I'm hoping someone already knows the answer and can tell me :P

The public key format that OpenSSL and Bitcoin use is described in SEP 1, published by the Standards for Efficent Cryptography Group on page 10.

  Convert the field element xP to an octet string X of length ceil([log2 q]/8) octets using the conversion routine specified in Section
  2.3.5.
  Derive from yP a single bit ȳP as follows (this allows the y-coordinate to be represented compactly using a single bit):
  If q = p is an odd prime, set ȳP = yP mod 2.
  If q = 2m, set ȳP = 0 if xP = 0, otherwise compute z = zm-1xm-1 + · · · + z1x + z0 such that z = yPxP and set ȳP = z0.
  Assign the value 0216 to the single octet Y if ȳP = 0, or the value 0316 if ȳP = 1.
  Output M = Y || X.

... and page 53 ...

  If C is an octet string and the leftmost octet of C is 0216 or 0316, parse the leftmost ceil([log2 q]/8)+1 octets of C as an octet string R, the rightmost maclen octets of C as an octet string D, and the remaining octets of C as an octet string EM.
  If the leftmost octet of C is 0416, parse the leftmost 2 * ceil([log2 q]/8) + 1 octets of C as an octet string R, the rightmost maclen octets of C as an octet string D, and the remaining octets of C as an octet string EM.
  If the leftmost octet of C is not 0216, 0316, or 0416, output “invalid” and stop.

So, in plain English:

It can be 0x04 too. That's is the 'uncompressed' key. If you generate a key today, it won't create one of these. However, if you have an old wallet, you might have some. They are equivalent in security to compressed keys.
Whether it's 0x02 or 0x03 depends on on the value of ȳP. We can generate ȳP instead of including the full y coordinate, which saves us a nice bit of space. That's what compressed keys are.

I'm not sure what q is in this context, if somebody wants to tell me in comments, it'd be appreciated.


There are at least two I'm aware of: Python-bitcoinlib and bitcoin_tools


How does bitcoin implement checkpoint mechanism to finalize the blockchain history? I read in Peercoin whitepaper that to prevent large blockchain reorganization, bitcoin also implements checkpoint mechanism which finalizes the blockchain history. Can you explain how exactly bitcoin implements this?

Checkpoints are a relatively misunderstood part bitcoin - Bitcoin does have a few checkpoints, but they are only used in one very specific case.  That case is just to ignore forks from the chain early on, before the most recently seen checkpoint. When a node has seen a block it recognises as a checkpoint, any further blocks received below that height will be ignored.

You can see this here: https://github.com/bitcoin/bitcoin/blob/0dfc25f82a01d9fec26380d95915df31e1fe2c02/src/validation.cpp#L3107

It is a long term goal of removing the checkpoints entirely, because they  are a source of confusion over the security model and power the developers have. But currently the role they serve is to prevent low difficulty header flooding attacks, and there has been no alternative solution proposed yet (that I know of)


Sent BTC to Old Output Address I sent BTC to an old Output address from a previous transaction and now I do not know where it has gone. Does anyone know how to fix this?

If you control that address then you should be able to spend any bitcoins sent to it. Make sure that address and its private key are added to your wallet and you should be able to spend those coins.


How do I know the public key of the person I need to pay? As per the answer to this question, we cannot retrieve the public key of a user.1)How does my wallet get the value (public key/public key hash) to which I need to make the payment?2)What is the harm in exposing an address's public key?

I read through both questions, so please correct me if im answering the wrong question.

The user who you want to pay must send you their public key (or QR to scan) in order to send money to them. This is, of course, unless their public key (wallet) is listed on a public website. Please see https://en.bitcoin.it/wiki/Help:Introduction#Sending_payments
In general*, there is no harm in exposing a public key. This question on crypto stackexchange goes into more detail Is exposing a public key bad?


Bug in copying BTC address I'm new here but I've been in the crypto world since 2016, today I'm going to tell you what just happened to me.
I had to send 25 euros to the address:
3Lch25qM9kKNEydEKKCKc2Em1naHBLN44y
After an hour from sending my BTC I still do not receive anything, so I decide to review the transaction and I was not believing what I saw .. a completely different address had been used to receive BTC and not giving an explanation I try to copy again and paste and I realized that that address changed once pasted. I'm not kidding, I'm not a scammer nor a liar, try also to copy and paste this address:
3Lch25qM9kKNEydEKKCKc2Em1naHBLN44y
and you'll end up with this:
3LP8AqQ5neyhGs9X5djjBBQ5RBBRCQ3LnY
https://www.blockchain.com/btc/address/3LP8AqQ5neyhGs9X5djjBBQ5RBBRCQ3LnY
Please help me

It appears that your device is affected by malware. Likely, the malware detects when a Bitcoin address is in the clipboard and replaces it with an address owned by the malware creator.


How does bitcoin make profit? I am wondering how the Bitcoin program makes profit if there are no advertisements or taxes?  How do the owners make money off of this?

There are no "owners" of bitcoin. It is like a protocol or algorithm, such as HTTP or SHA256. No one made money creating the program; it's free and open source!

However, there are people who make money by "mining". From the bitcoin wikipedia page:

  Bitcoins are awarded to Bitcoin "miners" for the solution to a difficult proof-of-work problem which confirms transactions and prevents double-spending.

Miners can also get extra bitcoins from voluntary transaction fees. In every transaction, it is recommended to pay a tiny fee so that miners will have an incentive to actually compute your transactions in the next block. Without a miner to verify your transactions, there is no way you or your payee can ensure that the bitcoins transferred are valid.


For a bitcoin-forked complementary currency: would it be difficult / impossible to limit the mining to some agents on the market? Am I right that by implementation everybody with a client is theoretically able to mine?

However, thinking about a Bitcoin implementation for a locally limited complementary currency:

Would it be possible (without changing half the code base) to limit the right to mine to some charitable groups and giving the other agents just the permission to do transactions?

Am I right that by implementation everybody with a client is theoretically able to mine?

Yes, it just won't be very effective without dedicated mining hardware.

  Would it be possible (without changing half the code base) to limit the right to mine to some charitable groups and giving the other agents just the permission to do transactions?

Yes, you can do that. You don't have to change very much of Bitcoin to do it, either.

You change Bitcoin so that instead of a block header needing a certain amount of work to be valid, it needs a signature from a certain public key. Then, you distribute the private key to all of the organizations that should be able to mine.

You need to change the code in one other place: the mining logic. Instead of hashing continuously, the nodes that create blocks will do it by waiting a fixed amount of time after the last block, creating a new block, and signing it. (Avoid creating two blocks in two places simultaneously. There are three strategies for avoiding this: wait a random amount of time before creating a block, elect a leader who creates the block, or have a round-robin system.)


Pros / Cons of using the new bc1xxx segwit address vs the 3xxx segwit address? What are the pros/cons of using the new bc1xxx segwit address vs the 3xxx segwit address?

Properties of the address format (Bech32 vs Base58Check):

Pro: Better error detection (up to 4, and sometimes 5, characters can be wrong and the sender software will always detect it)
Con: Longer
Con: Not all software supports sending to such addresses

Properties of the output type (native segwit vs P2SH-wrapped segwit):

Pro: Slightly cheaper to spend money received on such an address (no P2SH overhead)
Pro: Very slightly cheaper to send to
Con: Not all software supports creating such addresses


Does LN require an on-chain "emergency lane" to mitigate systemic risks? According to LN social slides, a fee market (in other word: "congested mempool", to my understanding) is good. But, there's systemic risks around penalty mechanism, so some sort of on-chain scaling (which looks like an emergency lane to my understanding) is still needed to mitigate them.

As far as I understand this is not needed. Let us assume we have an congested mempool and someone publishes an old channel state. This transaction will not be mined directly as the mempool is congested. The timelock during which this transaction can be revoked via the penalty mechanism is a relative one and starts as soon as the transaction is mined. So, this would happen once the fees are down again and then one can use the fees in their breach remedy transaction.

That being said, on-chain fees are a challenge for lightning. While a collaborative channel close can take the current state of the mempool into consideration and adjust the fees so that the channel closes quickly the case of of a unilateral close is much more difficult. When negotiating a new channel state, we don't know what the fees will be in the future. So, when force closing we might have over or underpaid but we can't change the fees anymore since this would require a signature from the unresponsive party.


How do I throttle mining in Phoenix 2.0 to keep my cards cooler? I need my rig to run slower (silent during the day) and full speed at night.  i've figured out a way to replace the config file every x hours but I can't see what settings will actually slow it down.

when it runs full speed the fans are extremely loud @ 80-95degrees. if i can get it to run about 70degress just more than 1/2 speed that would be perfect. I have two ATI cards.

What is the best way to throttle phoenix 2.0?

You cannot tweak phoenix to keep your cards cool.

Using stock software like the AMD Catlyst Center you can adjust you settings the way you like them and save it as a preset. Make sure to save the preset in the start menu.

You will make two pre-sets.

Maximum Speed - Clock speeds set to maximum and fan way up
Silence! - Clocks at minum and fan set as low as possible

You can then copy the shortcuts to you desktop and double clicking them will apply the pre-sets. Or you can run them using windows scheduler or some remote scripts or triggers.

You just need to find the sweet spots.
for example: 1 x AIT 6990 with stock cooler and OC Switch on (tested 45 minute intervals)

max - 880clock, +2% power and 72% fan = 75ish celcius @ 770mh(stable)
min - 500clock, +0% and 38% fan = 75ish celciu stable temp @ 450mh


Is it possible to make transaction using wallet private key I have a private key of a bitcoin wallet . Is there is any way i can check balance and make transaction using bitcoin core without importing private key.

You can check and watch the balance by adding the address corresponding to the private key as a watch-only address, but it's impossible to make a transaction in Bitcoin Core without importing the private key.


What is a bitcoin tumbler? I have recently heard of a bitcoin theft where the thief used a bitcoin tumbling service in an (apparently unsuccessful) attempt to cover their tracks. From this event I have several related questions:

How does a bitcoin tumbler "launder" bitcoins?
Is a tumbling a viable laundering scheme?
How would tumbling be made a more/less successful?

A tumbler is used to hide/disguise/make it difficult to prove where bitcoins came from.

It might help to first understand that every bitcoin transaction, right back to the genesis (very first) block is available for public inspection in the block chain.

Note that the actual bitcoins are not trackable, only the amounts, addresses and the transactions  - this is important.

To be able to complete a transfer of bitcoins, you need to know the private key for an address AND know the transaction ID of an unspent transaction sending bitcoins to that address - You don't just send someone 1BTC, you send them 1BTC out of the 1.2BTC you received from person X. In other words, the balance of an address is the sum of the unspent transactions and each transaction clearly shows where the bitcoins came from.

A tumbler attempts to sever the links between your old address and a new address by sending coins from you to other people and coins from them to you.  It also randomizes transaction amounts and sometimes adds time delays to the transactions.

Generally there should be no link between the original transactions and the final address of the coins.

  How does a bitcoin tumbler "launder" bitcoins?
  This is probably answered above
  Is a tumbling a viable laundering scheme?
  Yes, provided that you are tumbling a small amount of BTC compared to the total volume going through the tumbler (I have no idea what the ideal ratio is). Remember also that the tumbler will give out other peoples coins.  If all the coins going through a tumbler are stolen, you're going to receive stolen coins back, they just won't be linked to the coins to started with.
  How would tumbling be made a more/less successful?
  See answer to 2.

Edit: Take a look at https://blockchain.info/taint/1AYdAw8CcrQ2wx55LTbFHRn5bxgNZhaRLW - this shows that 6.6% of the coins at that address came from 1nWxbsMV7XKp7zi2Pq8FzK9HfoPTnBwKV - you can trace it all the way back to when the coins were mined


What are the differences (and value adds) among all the different Crypto Currencies? This website lists hundreds of crypto currencies. Some whimsical, others with a unique value.

Is there a catalog, or diff between all the implementations that highlights innovation, or a unique use case?

My goal is to prioritize which implementations to learn the most (BTC, ETH, and Ripple with the most market cap is my first priority)

99% of altcoins claim an "innovation" that is broken or unproven.

I would say that the first thing to do is look at unique codebases that aren't based on Bitcoin, which basically means (besides Bitcoin) you should look at Ethereum, Ripple, NXT, Monero, BitShares. Then if you're bored, PeerCoin / NuBits and Lisk.

Once you are done with those you can look at altcoins that just clone Bitcoin, but if they don't have whitepapers with cryptography that explains what they're doing then they're just full of hot air.


What service does Multibit connect to? Multibit is clearly a faster desktop wallet since it's a thin client that doesn't download and process the entire *8GB blockchain.

My question is, what service does Multibit connect to in order to process transactions? Are there security concerns to be aware of compared to using a thick client with its own blockchain? What benefits are there using a thick client (like Bitcoin-QT) compared to a thin client?

Multibit uses SPV, which is a peer-to-peer protocol consisting of two parts.

It downloads the block headers from peers (not the whole block). This allows it to verify that the blocks have a lot of hashing power behind them, and get the merkle root for each of them.
It asks peers for transactions matching the addresses it cares about. It can verify that the transactions belong to one of the blocks it knows about by using the merkle root.

See here for a discussion of the security tradeoffs.


Duplicated hash values in mining reward This transaction is contained in two MainChain-Blocks:

https://blockchain.info/tx/e3bf3d07d4b0375638d5f1db5255fe07ba2c4cb067cd81b84ee974b6585fb468

On Blockexplorer there is a note of this anomaly:

https://blockexplorer.com/block/00000000000743f190a18c5577a3c2d2a1f610ae9601ac046a38084ccb7cd721

As I understand, those 50 BTC are lost because only one of the rewards can be redeemed.

If so there will never be 21 million Bitcoin available, because those, or more of this sort, are missing?

This is a known bug in the early days of bitcoin.

Was fixed by BIP-30 https://github.com/bitcoin/bips/blob/master/bip-0030.mediawiki

There is a discussion here: https://bitcointalk.org/index.php?topic=216938

And yes, 50+50 bitcoins are missed forever.

In fact, there are much more missed bitcoins. For example, 2500 bitcoins were gone to nowhere
in block 0000000000000449ee5b94ba7a051caffff5c23d6a03335f6e20e3985b5ffa61


How to use JSON-RPC in C++ in Linux? Which library I must use for JSON? Where is RPC call example ?
How to use RPC of bitcoind or bitcoin-cli? or better Electrum API to get all new (maybe pending) transactions which appears in Bitcoin net?

Even though it is a C library, you could use Jansson in C++ apps, too. See: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#C


Who in their right mind would waste their Bitcoin on taxes or buying random stuff? First of all, I very much get the "argument" that Bitcoin has to be used as a currency for it to function long-term and it's a good thing if it is, etc. Not arguing against that.
But when I keep hearing about this company and that government/state/town "accepting" Bitcoin for payments of random stuff or taxes, I can't help but wonder to myself: Who in their right mind would be wasting their hard-earned Bitcoins like that? Why would they not pay taxes/stuff with fiat and hold on to their BTC?
Of course, excluding the remote possibility that they are all doing it "for the greater good", which sounds extremely unlikely.
The only explanation I can possibly think of is that maybe they expect it to go up in value, so if they buy some Bitcoin now, even if at a premium, and then wait for some time, and then use it to pay for taxes/stuff later, they would still waste less money even including the capital gains taxes that they have to pay to pay for the taxes... in fiat... because they used their Bitcoin to pay for... taxes... ugh... my head starts spinning just trying to make sense of that.

Who in their right mind would waste their Bitcoin on taxes or buying random stuff?

Can't comment on taxes because it's different in every country and depends on individual how they manage it.
Who would use their bitcoin for payments?

Holds only bitcoin and no fiat
Not interested to see few things in bank/card statement
Merchant accepts only bitcoin or other cryptocurrencies
Want to avoid payments being censored by governments

Also using bitcoin for payments allows you to buy more things over a long period of time especially bull markets:
https://link.medium.com/p8oVGwGWAgb
Normally people manage fiat in bank account, credit card, long term savings, investments etc. If someone wants to buy ice cream, most probably they will use cash/card and not withdraw money invested in markets or long term savings. Similarly, bitcoin can be managed in cold storage (long term savings), hot wallet on-chain (for payments, trading, etc.) and LN wallet(for quick payments with low fees). Don't need to use cold storage for payments.


In simple terms, what are the major differences between P2WPKH and P2WSH bech32 addresses? I've read over the bip173, bip141, and bip143 specifications and they're a bit too technical to get at the simple answers I'm looking for.

P2WPKH - This stands for "Pay To Witness Public Key Hash" and the scriptPubkey is OP_0 0x14 {20-byte-hash}, where OP_0 is the version, byte 0x14 is the size of the data, and the {20-byte-hash} is a HASH160(PubKey).
P2WSH - This stands for "Pay To Witness Script Hash"  and the scriptPubkey is OP_0 0x20 {32-byte-hash}, where OP_0 is the version, byte 0x20 is the size of the data, and the {32-byte-hash} is a SHA256(script).

This data is taken from: http://bcoin.io/guides/segwit.html

Examples:

For the P2WPKH address: "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4"

OP_0 , 0x14 , HASH160(PubKey) -- looks like (in hex):

00 14 751e76e8199196d454941c45d1b3a323f1433bd6

For the P2WSH address: "bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3"

OP_0 , 0x20 , SHA256(script) -- looks like (in hex):

00 20 1863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262

Examples taken from http://bitcoin.sipa.be/bech32/demo/demo.html and https://github.com/sipa/bech32/blob/master/ref/c%2B%2B/tests.cpp


enabling rpc only with certain commands I want to set up a bitcoind server with multiple diablo instances on systems i have access to. other people also have access to these machines, and my password for bitcoind will have to be input to the diablo instances. this means someone could have access to my bitcoind password and so also my bitcoins stored there. is there any way i can enable only the rpc commands in bitcoind to allow mining efforts? or to allow mining efforts without the password?

thanks in advance

I would advise not giving anyone direct access to your bitcoind instance. You need either a queue/ or an API in between that can throttle requests/ and manage ACL's as you require.


How to produce a p2wsh transaction with bitcoin-cli? With the impending adoption of segregated witness, users reliant on the bitcoin-cli API would require to reconstruct new methods to re-produce more efficient transactions. Is there some guide out there to learn how to produce a p2wsh transaction based off a conventional p2sh transaction?

If a P2SH address is already in your wallet, you can use the addwitnessaddress RPC command to get the P2SH-P2WSH version of that address and have it added to your wallet for tracking.


Is Bitcoin a threat to Paypal and why one cannot buy bitcoins with PayPal? Is Bitcoin a threat or competitor to Paypal? Is this the reason that very few websites support purchasing BTC via Paypal?

Unlike PayPal payments, Bitcoin payments are not reversible. PayPal payments are reversible up to 60 days.

Accepting PayPal payments to pay for bitcoins exposes your service to a stolen credit card fraud and PayPal friendly fraud
The fraudulent buyer makes the payment in PayPal, then the payment is disputed few days after the buyer received the bitcoins. When the PayPal payment is disputed, the seller of bitcoin is left without 1) bitcoins 2) fiat currency payment
Because PayPal is somewhat hostile towards using their payment service for selling virtual currencies, the bitcoin seller has little or no means to combat against fraudulent payments or disputed when accepting PayPal payments
Thus, the result is that running a profitable bitcoin selling business which accepts PayPal payments is difficult, though not outright impossible. Thus, all bitcoin sellers who accept PayPal have very high risk premiums.

Bitcoin is threat to the PayPal business in the sense that PayPal is global dominating online payment solution and bitcoin could replace PayPal payments in many scenarios, like ordering items online internationally or remittance (sending money to your foreign friends).


Bitcoin cash transaction I have sent 0.05 Bitcoin Cash from my local wallet to Cex.io . what happened is that it also reducted my Bitcoin amount with -0.05 BTC. What can I do to get back my bitcoin amount?

I use Bitcoin Core- for BTC and Bitcoin ABC for BCH

Status of transaction in Bitcoin Core transaction is like this:
Status: 4/unconfirmed

Bitcoin Cash transactions are Bitcoin Cash transactions while Bitcoin transactions are Bitcoin transactions, they're different. Your Bitcoin Core shows that transaction probably because Bitcoin ABC and Bitcoin Core uses the same datadir. Your 0.05 BTC is still there, it's just your confused Core client. All you need is to rescan Bitcoin Core (making Bitcoin Core reset its transaction history cache and re-searching for transactions). You can rescan as explained by BookLover's #9 reply on https://bitcointalk.org/index.php?topic=171390.msg1820287#msg1820287 (Please use the shortcut once, or you'll rescan many times and waste time)

Next time, add -datadir=C:\meh\BitcoinABCdir to BitcoinABC's shortcut, as described by Booklover's reply, you just read. (Use this shortcut permanently)


Integrate Bitcoin price in Google Sheets through Google Script How can I integrate the real-time value of the BTC/EUR pair to a Google sheet? What script can I use?

For ETH/USD I use Poloniex and a script for that, but there is no BTC/EUR pair on Poloniex.

This is the script I use for Poloniex and the ETH/USD pair:

  function getETHtoUSDTpoloniex() {
  var url = "https://poloniex.com/public?command=returnTicker";

  var response = UrlFetchApp.fetch(url);
  var test = response.getContentText();

  var myjson = JSON.parse(test);
  //var leng = myjson.data.length;

  var USDT_ETH = myjson["USDT_ETH"];

  var price = USDT_ETH.last;

  return parseFloat(price); }

Help please!

I suggest using a library for this.
This is the one I use: link
Code would then be: =CRYPTOFINANCE("COINMARKETCAP:ETH/USD", "price")
The library explains itself rather well.


Unable to Connect Trezor My trezor worked fine until the other day it wouldn't connect.  I tried myehterwallet, trezor app in Chrome, and the trezor.io site--nothing.  I've tried using different cables, different computers, different usb ports and even followed the trezor instructions for emergency reset.  Nothing is working to open my Trezor and allow access to my currency stored on it.

You should have your Trezor recovery card with 24 words you have written down. With these 24 words (the recovery seed) you can access your coins without a Trezor. Here is an explanation.

If this doesn't help you might want to contact Trezor support.


Is the hdSeedid in Bitcoin Core 0.17 RPC the actual seed itself? I'm trying to find out the seed for the HD wallet in the 0.17 release of Bitcoin Core. I used the getwalletinfo command in the RPC console which produced information which includes a string that it calls hdseedid, which curiously is the same as the string it calls hdmasterkeyid.

My question is - is that string the actual HD seed itself, and if not, how would I find/display it?

Any clarifications appreciated.

The hdseedid is the same as the hdmasterkeyid (the latter is retained for legacy reasons, it was renamed to hdseedid for better clarity). It is the HASH160 of the HD seed.

If you wish the retrieve the seed, unlock your wallet and run:

dumpwallet /some/filepath/wallet.txt

In the dumped wallet, you should find an xprv key, which is your master extended key. Note that Bitcoin Core does not support BIP39, and the xprv cannot be converted to seed words.


how generate  part of scriptSig in bitcoin transactions I studied many links about bitcoin trxs and about generating scriptSig.
Finally I couldn't understand how to make this part.

for example I read this links:

What is relation between scriptSig and scriptPubKey?

https://bitcoin.org/en/developer-guide#transactions

How do you create a scriptsig for a new raw tx?

How to redeem a basic Tx?

How to create the <sig> <PubK> part in "scriptSig"?

http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html

https://en.bitcoin.it/wiki/Protocol_documentation#tx

https://en.bitcoin.it/wiki/Transaction

I found that I must sign a thing but whats that thing ?

exactly and step by step What should I put together and then sign it?

specially if I had more than 1 input how make sigscript ?

I have a library that does the sign operation for me. however, I don't know what structure I need to use for the message that is going to be signed especially when there are multiple outputs.

The data to be signed is called Hash Preimage. Then you sign the double SHA256 of hash preimage, which is 256-bits long. Before hashing, the data must be formed as shown in this answer. If you're signing a SegWit transaction, the contents of the preimage changes, as defined in BIP 143.

Then you can use the formulae here, Eq. 2:

(x1, y1) = k × G(x, y) mod p
r = x1 mod n

k is a random number, G is the generator, p is the prime modulo, etc.

Then,

s = (k^-1 (h(m) + d * r)) mod n

d is the private key, h(m) is the double SHA256 result. Now, you can use r, s to create the DER-encoded signature.


How to send bitcoins without paying or with extreme low fees and without having to proove my identity? Of course, I know it’s no longer possible to get a transaction mined without a miner fee since 2011.

It’s for sending from a single address to a single output address. But I have to split the sending in a large amount of transactions.
I only knows about Gdax which pays the transaction fee for the user (thus making sending transaction free), but it requires sending identity document in order to use it.

This question isn’t about doing it… It’s about getting answer that might explain how to do it without knowing an e‑mail address !
Other questions aren’t asking this so that concern cannot be answered on other questions !

By a paper wallet from someone in person and wipe it with CoPay app.


Why CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY opcodes have to be succeeded with DROP Opcode? Opcodes that end in VERIFY generally do not leave anything on the stack. What's so different and the reasoning when designing these opcodes that CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY opcodes leaves something on the stack and hence has to be succeeded with the DROP opcode?

This is because CSV and CLTV are NOP opcodes that were redefined in a softfork.

As a softfork can only change the validity of transactions from valid to invalid, the only effect this redefinition was allowed to have is making the script abort in some conditions, and keep acting like NOP otherwise.

NOP does not pop anything off the stack, and as a result, neither can CLTV and CSV. Otherwise a script like "0 n CSV 0 EQUAL" would go from invalid to valid.


How can I generate public address from an xpub key in Java? I have an xpub key with which I want to generate all addresses which have been used or will be used and then find out the keys which have balance.

Here's a sample xpubkey with balance- xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz

I have to deserialize xpub key then use its derivation path to get a child path or normal key. From a normal key, it is easy to convert the public key to address.
You can refer to this source code.
https://github.com/tatumio/tatum-java/blob/master/src/main/java/io/tatum/wallet/Address.java#L24
Thanks


Orderly Transition Away from ECC? Or Bitcoin to zero? Let's say asymmetric public key cryptography is wide open, and can be broken using a public key or the signature.  Namely, that I can determine the private key using the information revealed in a public key or the signature.  Whether this is done with a classical, or quantum computer doesn't really matter. Let's say that this means I can steal any Bitcoin today from anyone -  whether they are yours, mine, or any other UTXO on the chain.
Now, unlike gold, which to steal requires you to do things like siege Fort Knox and have a military to do successfully, it seems like some modest cryptanalyst chaps can just sit in their pjs and steal Bitcoin during their lunch break while outside GCHQ or at a Starbucks outside Fort Meade.
So, can Bitcoin transition away from ECC in an orderly manner?
Would there be a fork (like ethereum did with the DAO) to fix all the stolen Bitcoin?

Bitcoin is a social phenomenon as much as it is a technical one. Satoshi's whitepaper laid out a technical architecture for a network, but the implementation details of that network have slowly evolved over time, they are not absolutely set in stone.
Of course, some of the implementation details are perhaps more set in stone than others (eg, good luck trying to convince bitcoin users to change the issuance schedule), but ultimately it is only the collective agreement of the network participants that upholds the 'consensus rules' (ie, the implementation details).
So, if something catastrophic were to happen, and ECDSA were broken in a way which made all coins vulnerable to theft, then I would certainly expect that bitcoin users would work to change the implementation details, so that they could form a new social agreement around using the technical tool that is the bitcoin network.
Would this be messy if it happened unexpectedly? Most certainly. Would the value of the network drop? Probably. Would it mean that the bitcoin experiment would be over? I suppose that depends on what you define as 'bitcoin'. From a "no-hardforks" perspective, perhaps bitcoin would die (ignoring the possibility of a fancy soft-fork fix). But from a "we're here to participate in a novel consensus network" perspective, it certainly is possible to fork the network to change the implementation details in order to remove the compromised code. Whether or not you're happy to participate in this new consensus is a fair question, but I doubt every single bitcoin user would just give up and pack it in.

More generally, if public key cryptography is broken, I think the world is going to have bigger problems than the bitcoin network failing to remain secure. A huge amount of the (very valuable) internet is built upon the same cryptographic primitives that bitcoin uses. In spite of this, these algorithms have apparently remained secure. Ultimately, whether or not you participate in something like bitcoin is entirely up to you. I don't think anyone here will try to convince you it is a risk-free adventure to embark upon.


If bitcoin fails as a currency, how will blockchain tech still be secure for other applications? We often hear proponents, like Andreas Antonopoulos, say things along the lines of Bitcoin being an application of the Blockchain technology and that Bitcoin as a currency can fail, but blockchain technology will continue.

But the blockchain is only secure (and therefore useful) if there is a large enough and diverse enough (e.g. no one with >50% of the mining power) network of miners securing the network.

If the USD to BTC value goes down too low, or Bitcoin as a currency (for whatever reason) fails, the miners will stop mining. Is it therefore possible that this could then make the bitcoin blockchain technology insecure and put the other applications built on top of the blockchain technology at risk?

I guess one might say, what Andreas means is that new blockchain mining networks, independent of bitcoin could be setup. But what makes the bitcoin blockchain so good, is because the network of miners is so large (and therefore so secure), is it not?

I understand it exactly the same way as you .. the currency needs to be worth the time and effort of the miners or at least the have to believe it is in the long run.


What if old blocks invalidate with soft fork? Making a soft fork means making consensus rules stricter.

Therefore there is a risk that some old blocks mined long down the blockchain get invalidated.

How was this handled in bitcoin soft forks? Did the developers of the fork have to make sure that all previously mined blocks up to current head validate?

The fix is in deciding when the change takes effect, and only validating with the stricter rule from that point onwards.

The easiest way is to decide upon a block height, say: 695,837 and all the blocks before that one are validated with the old rules, and blocks 695,837 and onward are validated with stricter rules.

Something a bit more sophisticated was used for SegWit. Every 2016 blocks, the difficulty gets modified to make sure we get a block once per 10m on average. These 2016 block intervals were used to gage support for the softfork, through signalling in the version bits of each block. Miners get to set these when they find a block, and only when 95%+ of the blocks in a 2016 timespan contained a certain flag would SegWit activate. This way, there was no fixed block height dictated in code, but instead, the miners together were able to dictate the lock in of the soft fork.


Doesn't storing the "recovery seed phrase" for a wallet defy all logic? I've heard many times that you are supposed to write down a "recovery seed phrase" (a series of English dictionary words) on a piece of paper and store that securely so that you can recover your coins when you inevitably lose access to your wallet.dat.
But doesn't this defy all logic? If this phrase alone can recover the wallet.dat (which feels like magic to me, but I'll accept it as the truth), what happens if:

There is a fire and it burns your coins with the paper?
A burglar steals the paper and takes your coins?
The government seizes the paper and takes your coins?

Even if you say "I'll buy one of those fireproof metal plates where you put in the seed phrase with the little metal letters", that only protects against the first hazard.
And even if you put the piece of paper (or metal plate) inside a fireproof safe, that only stops (at best) number 1 and 2. The government will not be scared to force-open the safe or make you do it under gunpoint, and there's your recovery phrase.
And if you put your coins on a hardware wallet and secure that, and still store your seed phrase in your computer, then somebody could grab that remotely through one of the numerous security holes that computers/OSes/software have today, restore the the wallet and take your coins before you ever know.
It seems that storing the recovery phrase ONLY protects against your own clumsiness and hardware dying, but not against all the other serious threats.
I've spent so long thinking about every possible method to keep my Bitcoins safe, but I just can't find a single method which I'm not myself able to quickly poke huge holes through...

Bitcoin's motto "Be your own bank" requires it that everyone takes responsibility over their coins. Bitcoin wasn't designed as an infallible asset. It instead aims to be something between a payment system (like SWIFT) and easily transportable gold.
If you think banks are safer than your home for money (that is, you don't want to take responsibility) banks are a better option for you.
What might make Bitcoin better for you could be an encrypted mnemonic seed system. There is no proposal, famous enough to make me aware of. It's definitely technically possible, and easy enough for Bitcoin techies to implement on their own.

The government seizes the paper and takes your coins?

Check out brain wallet. Who said that you needed a physical backup?
Though I would, instead, use a cascade of multiple hashing algorithms that I have chosen and memorized with their order, along with a passphrase that I have chosen. This requires less memorization.


Can a cold storage bitcoin wallet become obsolete? Will a cold storage wallet always work?  What happens if the bitcoin protocol is updated? Is there a vulnerability in the protocol that could be changed to create this situation? Where is this formally documented?

There's a page in the wiki dedicated to Bitcoin's weaknesses. Specifically there's a section which describes what would happen if the cryptography would break. Linked is a forum post by Satoshi:

  If the hash breakdown came gradually, we could transition to a new
  hash in an orderly way.  The software would be programmed to start
  using a new hash after a certain block number.  Everyone would have to
  upgrade by that time.  The software could save the new hash of all the
  old blocks to make sure a different block with the same old hash can't
  be used.

In any case I do think that eventually it will become obsolete and you will have to transfer your funds to more secure public/private key pairs. Like Satoshi said, SHA-256 is very strong and could take several decades to break.

On a positive note, the transition will be gradual and the community will have time to alert people about the change. This means that you'll have the time to eventually upgrade the keys in your cold storage.


How would I explain SegWit to a non-technical friend? How can I explain the potential ease of scaling and feature benefits of Segregated Witness to a non technical friend?

How can I explain the potential drawbacks of Segregated Witness in a non technical manner?

The name itself is a good hint as to what it actually does.

What we have today is a "witness" (i.e signature scripts) included in every Bitcoin transaction in non-segwit compliant transactions. This allows every full node within the Bitcoin network to verify the integrity of any transactions.

By removing the signatures in a Bitcoin transaction, you lose the ability to verify the integrity of the transaction. But in reality, not everyone needs to be able to independently verify the integrity of a transaction.

Thus, by segregating the signature from a transaction, we have a smaller transaction that describes the inputs and outputs exactly as it is. But if you want to know for sure that these are verified inputs, you'll look up the Segregated Witness set to find the corresponding scripts to validate the SegWit Transaction.


Is it technically possible to solo mine bitcoin using cpu without a pool? How? Ubuntu For development reasons I'd like to have a private "real" bitcoin mainnet network.
Bitcoin-core doesn't support mining any more.

I have set up a network of 2 nodes (using connect conf command).
CPUminer is designed (as far as I know) to connect to a mining pool server.

Any idea how to directly do cpu solo mining with bitcoin?

Thanks.

For development it's often helpful to start both nodes in regression test mode (regtest mode). The developer has his own private blockchain and can choose when to create a new block. You can use bitcoin-cli -regtest generate 1 to generate a new block.

For more information see Developer Examples - Regtest Mode.


If addresses are hashes of public keys, how are signatures verified? I've skimmed through the https://en.bitcoin.it/wiki/Protocol_specification and it seems that when sending someone bitcoins, I would sign the transaction data (not quite sure which parts exactly) with my private key, so that people could verify it with my public key, but my address is a digest of my public key, so where do people get my public key from?

The transaction's INPUT has ScriptSig which is both the signature as well as the public key.

http://en.bitcoin.it/wiki/Transaction#Data


How does a filterload client that recieves an incoming transaction retrieve the transaction it's spending? Suppose that your SPV client receives an incoming transaction. How can it tell whether it spends a real outpoint? If you knew the block, you could add the txid to filterload and request the block again, but I'm at a loss for how to implement it otherwise.

You don't! The SPV client security model depends on miner confirmations for security. From the Thin Client Security page of the Bitcoin Wiki:

  As Satoshi writes, "[the thin client] can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it." If we take "X" to be the "number of blocks added after it", then SPV essentially trusts that a transaction X blocks deep will be costly to forge.

So, surprisingly, SPV clients don't even need to run an interpreter for scripts. They just see transactions addressed to them and wait to see if they get confirmed.


Exchanges whose websites use EV SSL certs? What are all the Bitcoin exchanges whose websites have an Extended Validation (EV) SSL cert?

EV certs appear green in Firefox. This is what Circle's looks like:

The only exchanges that have EV certs that I know of are:

Coinbase
Circle

BlockChain.info also has one.

Are there others?

I know one personally in Israel, https://bit2c.co.il it's Israeli bitcoin exchange.


Requirements to accept and send SegWit transactions? I roughly understand how SegWit works, but not the details, got a few practical questions.

If I understood correctly there are separate 'SegWit addresses'. How does that work, do they look like normal addresses? Will older non-SegWit clients also be able to send txs to such addresses? Or is it a new address format, that will not be recognized by older clients?

If I want people to be able to send SegWit transactions to me, do I have to give them a SegWit address, or can they also send SegWit txs to regular addresses?

Similarly, if I send a SegWit tx to someone else, will they receive it even if they are using an older non-SegWit client? Or perhaps will they not recognize or accept the tx as long as it's unconfirmed, but once it's confirmed they have the bitcoins?

How does that work, do they look like normal addresses? Will older non-SegWit clients also be able to send txs to such addresses? Or is it a new address format, that will not be recognized by older clients?

There are two types of "segwit addresses": P2SH nested and Bech32 addresses.

P2SH nested addresses just make use of the currently existing P2SH address and output styles. Since P2SH addresses are supported by all modern Bitcoin wallets, non-segwit clients can still send to these. These look like normal 3... addresses.

Bech32 addresses are completely new. They are a new construction designed specifically for segwit. Only wallets which have been updated to support Bech32 can send to Bech32 addresses. These look like bc1...

  If I want people to be able to send SegWit transactions to me, do I have to give them a SegWit address, or can they also send SegWit txs to regular addresses?

There really isn't a "segwit transaction" per se. Rather there are segwit outputs, and these outputs are spent in a different way from other outputs. A transaction can create both Segwit and non-segwit outputs, and a transaction can spend from both segwit and non-segwit outputs. If you are a receiver and you want to use segwit, then the person sending you money must create a segwit output that you can spend. If you want to use segwit and send money to someone who does not, then you can create a transaction which spends a segwit output and creates a non-segwit output.


When I try to download Bitcoin Core on MacOS it says "Apple cannot check it for malicious software"? Is it safe to download? Brand new Mac Mini, latest macOS Catalina (10.15.6 (19G2021)), followed instructions on bitcoin.org download page.  Double click Bitcoin Core.app, and I get:

“Bitcoin Core.app” can’t be opened because Apple cannot check it for malicious software.
This software needs to be updated. Contact the developer for more information.

Any suggestions?

As mentioned by Andrew, this is due to macOS' enforcement of notarization requirements.
This can be bypassed by right clicking on the application, then selecting Open - A dialog will popup warning you that it is not verified, but this one will have an Open button.
Once you open the application through the above process once, a regular double click will work on it in the future.
You may need to go through this process again if you update to a newer version of Bitcoin Core.


Bitcoin Core goes totally out of sync after pc crash i've been trough 10+ days of syncing the Bitcoin Core and again mSigna wallet with Core...

downloaded bootstrap, then building blocks for Core to get synced was relatively fast, but mSigna has to build blocks for itself all over again while synced Core has to be running in the background. Its taking ageeees! way slower than the Core, especially last 100.000 blocks.)

And the 1.8 BTC are waiting in the unspent outputs on the blockchain cause i generated address for transaction from mSigna before when it was out of sync. (apparently you can do that in mSigna) just hoping when it gets synced i will see my coins in vault.

But the actual problem is that while mSigna was syncing(was at around 85%... 330.000+ blocks synced)  and the Core was normaly synced i suddenly got BSOD and computer restarted. Normaly first I opened bitcoin core to resume the process but now the Core is completely out of sync, and the blocks in bitcoin qt folder  are using 60 GB of space which means they are already builded..?
How can i tell the Core to use those synced blocks?
I will not open mSigna till the core is not synced again cause im afraid that msigna will restart aswell.
Thanks.

Normaly first I opened bitcoin core to resume the process but now the Core is completely out of sync, and the blocks in bitcoin qt folder are using 60 GB of space which means they are already builded..?

The blocks on disk aren't really processed at all in the way you are thinking, what Bitcoin Core is doing when it is syncing is building a secondary database of its own which contains the state of the network. In a very unclean shutdown the database (known as the chainstate) will be corrupted and has to be rebuilt from the block files. There's no way to know exactly how it was damaged so it must be built entirely from scratch again. It is inconvenient but at least the blocks don't need to be downloaded again from the network again.

If you are getting frequent BSOD you might need to check your hardware or drivers.


Unconfirmed transaction since 2 days 2 days ago I've send some btc from my Bitcoin wallet called Bitcoin-QT(Version v0.8.6) to my Kraken account.
But it is still unconfirmed and still don't see anything on Kraken too.

Last week I did exactly the same thing(send my same Kraken adresse), and I received my coins a half day later on my Kraken account..

So what can be wrong here? Maybe because of the old BTC wallet version?
I'm feeling a little stressed now..

Thanks in advance.

Grtz,

A BTC Noob

Most likely the fee was very low and it is therefore not being selected by miners for a block. Bitcoin-Qt 0.8.6 is from Dec 2013 and you should consider upgrading to a newer version of the software. The recent versions have vastly improved fee estimation.

You should probably try to doublespend the transaction with a bigger fee. You can find more information and detailed instructions on Why is my transaction not getting confirmed and what can I do about it?.


Should the nodes of a channel have the same Time Lock Delta? Consider this channel https://1ml.com/channel/612829298476056576 :
Node 1: Caffeine
        Time Lock Delta: 10

Node 2: HODLcat.com
        Time Lock Delta: 144

How is an HTLC passing through this channel affected ?
Would the channel work more reliably if the time-lock deltas were the same?

No it does not have to be the same value.
The timelock somewhat reflects the openness to risk. The lower the value the quicker a node has to engage into force close if there is an unsettled htlc and the partner does not respond to communication.
Thus the higher your partner's cltv delta the longer you can be offline before your partner might force close channels. AFAIK there is currently no real recommendation for the cltv delta. Though nodes seem to lower the default value over time. Remember that high values can lead to longer locked funds. This it is a tradeoff anyway


Multisig (2 of 3) BCH, one signed before fork, one after Right before the BCH fork a multisig (2 of 3) transaction was signed by the other party, and mine after the fork and successfully broadcasted (coinb.in), so got my BTC.

Later I realized there might be BCH in there as well, but broadcasting the same final raw hex on the Bitcoin Cash mainnet (viabtc.com) keeps failing.

Am I missing something here? Or is it impossible because the other party's raw transaction hex code is not recognized on the BCH chain?

Broadcasting on blockdozer returns;
An error occured:
16: mandatory-script-verify-flag-failed (Signature must use SIGHASH_FORKID). Code:-26

You cannot simply rebroadcast a bitcoin transaction on the bcash chain, due to replay protection. You need to sign the transaction using the SIGHASH_FORKID as the error message says, which means you will need to use a BCH wallet to resign the transaction


Do we have to trust at least one DNS seed? If I understand correctly, when new bitcoin node wants to join the network, it must be introduced by guiding nodes -- DNS seeds. DNS seeds can thereafter help new node discover more existing nodes.

So during the bootstrap phase, DNS seeds are the entry points for the new nodes. By looking at the source code of BitcoinJ:

   dnsSeeds = new String[] {
            "seed.bitcoin.sipa.be",         // Pieter Wuille
            "dnsseed.bluematt.me",          // Matt Corallo
            "dnsseed.bitcoin.dashjr.org",   // Luke Dashjr
            "seed.bitcoinstats.com",        // Chris Decker
            "seed.bitnodes.io",             // Addy Yeow
            "bitseed.xf2.org",              // Jeff Garzik
            "seed.bitcoin.jonasschnelli.ch" // Jonas Schnelli
    };

They are pretty much hard coded in the software. What if all of those DNS seeds are dishonest nodes? In this case, new nodes would be surrounded by dishonest nodes and it doesn't have chances to connect even one honest node and retrieve the genuine blockchain. Therefore, new nodes would be fooled in this case.

Does that mean bitcoin network still needs some extent of trust? And would it be a concern in reality?

What you are saying is correct.

I'll quickly elaborate on why these hardcoded dns seeds are required. The attack you mention is called "peer list poisoning", a strategy that can be used to segregate someone from the network. There are two main types of peer list poisoning:

Dishonest nodes: the attacker poisons your peer list with real nodes, but malicious ones. All of your transactions would always be forced through these nodes.
Void nodes: the attacker poisons your peer list with non-working nodes, a strategy often used to dismantle malicous P2P botnets.

You may think the DNS seed require an element of trust but it doesn't. There are ways to verify that a DNS seed is honest: if you run your own 24/7 Bitcoin Node with the right setup then your address should be available in a list returned by a DNS seed. They crawl the whole network and regularly revisits known nodes to check their availability. DNS seeds do not return a full list, so it's not very practical.

There are alternatives to using DNS seeds, such as crawling the network yourself, or even bruteforcing IP addresses and attempting a connection.