How do I get my funds from bitstamp into my wallet? Hi I am using multibit as my bitcoin wallet.  I will be using money gram to put money into my account.  I dont know how to buy bitcoins for myself.

On multibit it says you can send coins to someone or request them but it doesn't say to yourself.  I don't want to send them to anyone else, just me.  I am using bitinstant to transfer funds into bitstamp, but where do I get the wallet address?

Where do I enter the amount I want in bitcoins on bitinstant? And how do I get my funds from bitstamp into my wallet?  Which one do I use first and what is the address I type into the website I am buying items off of so they can withdraw them from my account?

I really need help with buying bitcoins for myself and where I find the address and that I do when I go to the money gram?  Where is the address found?  And do I need to use bitstamp?

Is there an easier way to do this because I'm finding it really hard.  If there is a quicker easier software or website or wallet to use please let me know!

Edit:
Also, where do I enter the amount of funds I'm going to put into the moneygram on Bitstamp, do I use Bitinstant for that? What do I do when I get to the moneygram? Do I enter the address? Can someone tell me an easier process including whichever websites you all use and in what order and how you actually retrieve the money to use online?

Login to Bitstamp account >> Deposit >> Bitcoin >> here is your Bitstamp deposit address.

To transfer bitcoins to your Multibit wallet, again Login to Bitstamp account >> Withdrawal >> Bitcoin >>  here you can enter your Multibit wallet address and bitcoin amount.


What Namecoins are used for? I just stared in the bitcoin world and my bitcoin pool says I have :

Bitcoins    0.00000277
Namecoins   0.00000864

What exactly that means Namecoins mean? Is there any extra effort to process those Namecoins?

Namecoins are a separate implementation of the bitcoin protocol.

It is designed around the ability to use a blockchain to store information about namespaces for domains so once configured, a DNS could route traffic to a specific server.

The extension for these domains are currently .bit but this can be expanded at a later date.

Namecoin uses merged mining. No extra effort is required (the hash is checked against both chains).

More information can be found out at http://namecoin.info

Questions about the protocol are welcome here also.


Which Bitcoin weakness most hinder Bitcoins ability to gain market and mind share? Bitcoin has a few weaknesses. Among the well known ones are:

Transactions are not instantaneous.
Large numbers of transactions would bloat blocks.
Transaction fees are needed in some cases.
The client is difficult to use and its operation difficult to understand.
Wallets are difficult to secure. Coins can easily be lost.
Transactions are only somewhat anonymous.
Irreversible transactions are sometimes not what people want.

Of these weaknesses (including any I didn't mention), which are probably most seriously affecting the adoption of Bitcoins, both short-term and long-term?

If the credit card industry has taught us anything it's that merchants will accept whatever form of payment there is adequate demand for. Merchants have been perfectly willing to absorb some percent of loss from credit card chargebacks, bounced checks etc. for quite some time and will likely accept some percent of loss from 0/unconfirmed transactions (once we actually know what percent loss that is, anyway).

The real "sell" is with consumers. If enough consumers use bitcoins, merchants will begin accepting them - and even if they don't they still hold value as a means of long-distance funds transfer and perhaps as a store of value. Consumers also don't care about technical limitations, that's for us geeks to figure out on their behalf, so points 2, 5 and 6 are basically "our problems" to fix. What consumers will care about most, in my opinion, is #4: "The client is difficult to use and its operation difficult to understand."

When there's "an app for that" that just works and doesn't need whitepapers, wikis etc. to comprehend, the biggest hurdle has been jumped.


Is it technically possible to create and use dynamic private key - public key pair and use it with bitcoin? Is it technically possible to create and use dynamic private key - public key pair and use it with bitcoin?

I am not sure anything conceptually similar to this already exists. Yet, "dynamic" private - public key pair can be defined as ordinary key pair with 2FA capabilities. Both the keys regularly change per generated 2FA token.

Basically I hope the following,

create dynamic private - public key pair, combining 2FA (like, google authenticator) and a passphrase
this key pair can only be used for a short defined duration, or as long as 2FA token is valid
receive funds
chronologically old key pairs can be used to check / receive funds (or, not)
In future, private key generated from passphrase and 2FA token can be used to spend the coins

BIP 38 is not anyway related to this.

No, it is not possible to do what you are suggesting.  Here's more info about cryptography.

You can create create an ECDSA keypair with almost any random data (it must a lower than a certain value, but go check ECDSA specs) and then generate an address... But a keypair will always be valid to receive bitcoins or send them (if you still have the private key).

The thing is that a other party will not be able to know what is your next address since you need the private key to do that.

So yeah you can create keypairs with almost any data, but I don't think it'll be dynamic in the way you think.


Why are Bitcoin calculation "useless"? The FAQ says:

  Why don't we use calculations that are also useful for some other purpose?

  To provide security for the Bitcoin network, the calculations involved
  need to have some very specific features. These features are
  incompatible with leveraging the computation for other purposes.

That's a rather generic explanation. What are these "very specific features" that Bitcoin calculations need?

I can see that you are talking about the mining process and the SHA hashing algorithm. From what I understand that function needs to be:

Scalable - one needs to be able to precisely adjust how much work needs to be put in for a desired amount. This is done through the use of Target/Difficulty and uniformity of the output of the SHA function (it produces more or less a smooth distribution of random numbers).
The function needs to be quick to verify and always verify the same way. Moreover, the function needs to be always verifiable and not rely on third party - generally, you need to process a lot of blocks in order to catch up to the network, so there is no point in it taking too long. Also, there is no ambiguity in determining whether a given hash fulfils the preconditions as would happen with some functions ("is this protean optimally folded?"). Morever, floating point calculations are not too good as different computers could have different rounding errors. As for being always verifiable and not relying on third party - Bitcoin is a decentralised currency and thus it cannot remain that way should it be dependant on some company or website operating it. Every peer needs to be able to independently verify the solution with minimal amount of software and hardware. Scientific simulations can rarely fulfil this goal.
The function needs to work one way and have no cryptographic weaknesses - generally, you don't want people to reach the result quicker than is fair. Hashing functions are the types of functions where one needs to perform the calculations in order to receive the results and can't get anywhere knowing the solution. SHA-256 is secure and for now doesn't have any weaknesses.
The output of the function should depend on every part of the input. Moreover, changing even one byte in the input should change the output completely. - Generally, the function needs to be very sensitive to tempering. Any change on the input must change the output so as to prevent malicious manipulation of data. Similarly to ensure that the function is scalable and nobody can "tinker" with the data a bit to produce another valid result from a previous solution, the output must appear to be pseudo random and any change of the input must change the entire output.


Would it be possible to convert low-end ASICs designed for mining Bitcoin into Litecoin mining rigs? My friend and I have been discussing trying to mine Bitcoins or an altcoin. We've come to the conclusion that at the current difficulty one gigahash per second Litecoin mining will net ~$5 USD a day. Now, there are some low-end Bitcoin ASICs out there (such as ASICMiner Block Erupters which get 333 MH/s) that would literally take years with the current Bitcoin difficulty to regain the cost of the machine mining Bitcoin. Would it be possible to configure an ASIC of this type to mine Litecoin? Would the hardware be capable of supporting that?

Nope, ASIC implies a physically designed chip only meant for doing 1 thing. And bitcoin ASICs are only capable of SHA hashing while litecoin demands scrypt hashing.


Bitcoin and Smart Contracts I have recently come across the features of ethereum and the idea of smart contracts.

I like the concept of smart contracts however as a currency, I much prefer the bitcoin to the ether.

Is there any way smart contracts could ever be utilised by bitcoin?

Bitcoin has a scripting language built into it, which allows the creation of many kinds of smart contracts. Examples are atomic swaps, Lightning payment channels and zero-knowledge contingent payments (ZKCPs). This later paper by Banasik, Dziembowski and Malinowski (BDM16) improves the efficiency of these greatly. Threshold multisignatures are also easy to do, interestingly much more easily than in Ethereum.

ZKCPs are extremely general and can execute any contract in which the counterparties and terms of the contract are known at setup time, though it does require they use some new and slow crypto (done off-chain, Bitcoin is never exposed to it).

A more whimsical example is Peter Todd's bounty for anyone who can collide SHA1, SHA256 or RIPEMD160. The SHA1 collision bounty has been taken.

My guess is that the only thing Ethereum can do that Bitcoin actually can't do, is extrospect on the outputs being spent. This would be sufficient to implement covenants, which would be something of a mixed blessing.
Andrew Miller has argued that Ethereum's account model lets it do contracts in a more transaction-efficient way than Bitcoin's UTXO model, which may be true, but the examples I've seen of this (a) lose privacy by storing lots of unrelated state in one account and (b) exploit Ethereum's global key-value store, which is significantly more expensive to maintain than a UTXO set. Extrospection may be efficiently (efficient for verifiers, not for the transacting parties :)) attainable by creative use of ZKCP's, much how the BDM16 paper does atomic swaps with them, but I haven't worked out the details.

As a final note, it is easier, by design, to implement and deploy Ethereum contracts. However, I think the hard part of smart contracting is analyzing the contracts and proving correct behaviour under all inputs. (Both Ethereum's and Bitcoin's script languages fall short on this count, being difficult in general to efficiently reason about.)


Is access to mining the only obstacle to centralised bitcoin-like currency? Considering the value of bitcoin beside dollars there seems to be so many applications where a centralised bitcoin-like system may be ideal for internal accountancy and transfers, especially among micro financial institutions.

Parsing a blockchain gives an overview of entire network.

If mining was restricted to only specific people what other obstacles are there for "private" use of Bitcoin clone?

Are there any commercial or opensource entities doing this?

Mining is the part of the decentralizing, to make a centralized currency you simply need to skip the publicly maintained blockchain portion, which includes mining. But without the publicly maintained blockchain, you really have only have a database that keeps track of transactions.


what about that the adress change all the time? if the address has changed in my wallet
could I still receive funds on the old one??
because the address has changed a lot of times by its own without I have change it

Short answer: yes.

Addresses are just a representation of the public key from a public/private key pair.  Wallets generate new key pairs for every transaction.  Every time you click "Receive", you generate a new key pair.  Your wallet manages these keys for you, so you don't have to think about them.  For best practice in privacy, it's best to always use a new address (key pair) every time you receive payment.  That is why it has changed without you telling it to.  You can always re-use one, but there's really no reason for it.


Could I store a bitcoin private key value in a Name Coin? If so:
 would it be useful for anything?
 would it be risky as BTC and NMC are linked.

Yes. So that the whole world can see it? Yes seems like a good idea.

The NameCoin block-chain is public, although you could encrypt it in the NameCoin chain, but why there? If you are scared to lose any privates keys you should work on your back-upping strategies, not uploading it to the public domain in the hope none will realize it is a ECDSA Bitcoin private key.


Bitcoin mining difficulty and hash rate On blockchain.info there is the charts that shows the mining difficulty over time and the hash rate over time. See:
Hash:  https://blockchain.info/nl/charts/hash-rate
Mining difficulty: https://www.quandl.com/data/BCHAIN/DIFF-Bitcoin-Difficulty

Can someone explain what the difference is between the two?
The reason I ask is that some paper argues that if more power is required to mine Bitcoins, the value should go up. As explanatory variable, they usually refer to hash rate. I'm trying to find out what the difference is between mining difficulty and hash rate in order to understand why those papers wouldn't use mining difficulty as explanatory variable.

https://blockchain.info/nl/charts/hash-rate

Refers to the mining power (hashrate) produced from miners and pointed towards the Bitcoin network to mine blocks.

  https://www.quandl.com/data/BCHAIN/DIFF-Bitcoin-Difficulty

Bitcoin Difficulty (diff) is a value used to show how hard is it to find a hash that will be lower than target defined by system.

Difficulty changes every 2016 blocks based on the time the network of miners took to discover 2016 previous blocks. If a block is found every 10 minutes (as it was intended initially for even emission) finding 2016 blocks will take exactly 2 weeks. If previous 2016 blocks were found in more than two weeks the difficulty will be lowered, and if they were mined faster then that it will be raised. The more (or less) time was spent on finding the previous 2016 blocks the more will difficulty be lowered (raised).

What is the maximum difficulty?

There is no minimum target. The maximum difficulty is roughly: maximum_target / 1 (since 0 would result in infinity), which is a ridiculously huge number (about 2^224).

The actual maximum difficulty is when current_target=0, but we would not be able to calculate the difficulty if that happened. (fortunately it never will, so we're ok.)

Someone can argue that more the mining > more the hashrate > more the difficulty. Also the more the hashrate, the more are the investments big, the more production price of BTC increases i.e. price should keep increase to mantain BTC mining sustainable in terms of ROI.


How many Bitcoin are mined per day? A block is generated every ten minutes. The reward changes periodically, and will halve 32 more times. What is the approximately daily reward across the entire network?


Electrum Offline Storage - two different OS, multiple wallets Regarding the instructions to create watch-only wallets in Electrum, I am clear on the intial setup and functionality, signing transactions, etc. but I have a few questions about going forward:

Is it problematic to use two different OS (Windows on a Chromebook for offline comp along with OSX for watch-only comp).  Will Electrum have any problems going back and forth between two different OS?
As I make more transactions, is there any mistake I can make that can un-sync the two wallets? (I am mainly concerned about change addresses).  Going forward, can I always rely that I will be able to access newly generated private keys by expanding the gap limit and/or adding change addresses in the console?
Can I manage a separate seeded wallet on my watch-only comp for smaller amounts or is this not reccomended?

I am trying to be as secure as possible without having to learn Linux.  It has taken me long enough to figure out bitcoin and Electrum in general!  Thank you so much.

This can easily be done and due to Bitcoin mechanics, you are going to be pretty safe. Electrum wallets cannot be desynced, maybe become inaccurate but the same seed will always give you access to the corresponding wallet and its bitcoins. Electrum inaccuracies in balance and transaction history rectify themselves over time. Just restore from seed on the other computers to set your wallet up on multiple computers.

Why does this work out?

Bitcoin does a neat thing with transactions and history. I won't go into all of it but the blockchain makes working between two computers easy. Your seed is the deterministic private keys for 10 addresses on electrum. This will always be true, on any machine, anywhere in the universe (unless a bug breaks it on a computer).

As long as you have the private keys, you have access to all funds sent to the corresponding public addresses of the private key. Even if the wallet is offline and detached, it can still access value. Imagine the electrum seed as a key to a coin safe, you can have as many duplicates of key as you want, as long as they are identical they will open the coin safe.

The balance of your addresses are purely derived from info available to anyone on the Bitcoin network, your balance is not dependent on your Electrum program, computer, or identity. If you sent me an address, I could tell you the balance. To get your balance, Electrum queries the many Electrum nodes to sync up. The balance can be wrong on multiple computers but give it a few seconds to correct itself.


Does Multi_Signature transactions enable trust-less payments? (Edited) This paper: (Link to paper) introduces a blockchain based platform entitled PriWatt claiming (in Section 2.5 MultiSignatures, page 3):

  "PriWatt provides the means to form agreements or contracts without
  trusting other party via blockchain."

It continues:

  "This is achieved through multi-signature transaction where minimum m
  of n keys must sign a transaction before tokens can be spend."

(Similar to what we have in Bitcoin n-of-m transactions.)

However, my question is how to remove totally the trust when one party is payer and another party is payee?

I mean multi-signature transactions can be helpful when all of parties are payer. Assume for example a wallet in which a pay out transaction needs minimum m of n signatures. In this case that works.

But, if we consider the example of the paper (same section 2.5) as follows:

  "For example, assume that a customer Alice wants to buy a product
  from a merchant Bob. They make a contract where Bob will not get paid
  until Alice gets a product. Similarly, Alice cannot get a product and
  keep her payment."

However, in this scenario, merchant (Bob) signs 2-of-2 transaction, where it has not been signed yet by customer (Alice). At this point:

(1): If customer (Alice) before receiving the product, signs 2-of-2 transaction, then transaction is payable for merchant (Bob), but what happens if merchant (Bob) does not send the product to customer (Alice)?

Or

(2): What happens if customer (Alice) denies to sign 2-of-2 transaction before receiving the product, and after receiving the product also does not sign the transaction?

Does Multi_Signature transactions can fix this problem? Or merchant and customer need to trust each other?

Edit: In my opinion, a Multi_Signature transaction can remove the trust, IF AND ONLY IF : all exchanged values between parties are internal (for example coin or any other parameter or token etc defined in the code as a variable.) Otherwise if one of values that is exchanged between parties would be an external asset (for example: a product or service like energy in the paper) then parties need to either trust each other or use a trusted arbitrator (trusted Chuck).

In the paper, it mentions a third party, Chuck, who will resolve disputes.

  (1): If customer (Alice) before receiving the product, signs 2-of-2
  transaction, then transaction is payable for merchant (Bob), but what
  happens if merchant (Bob) does not send the product to customer
  (Alice)?

Assuming Bob only cared about getting paid, he would always sign a transaction which paid himself, so it does little good to require his signature. If alice signed a transaction which did not pay her, it would show good faith, if there was another party involved, Chuck. Chuck would require that the product be sent to Alice before the funds would be fully released to Bob. In this case it would be a 2-of-2 multisig script requiring Alice and Chuck, and requiring Alice to sign before Bob ships the package, for example.

  (2): What happens if customer (Alice) denies to sign 2-of-2
  transaction before receiving the product, and after receiving the
  product also does not sign the transaction?

Assuming this is a 2-of-2 requiring Alice and Chuck from above, then Bob would require Alice's signature before sending the product, that way the arbiter, Chuck would be responsible. Note that using a multisig script on blockchain to trace an external physical action would require trust (from both parties) in the arbiter, Chuck, and is not completely trustless.


Cooling GPU in a rig I don't know if this is the correct forum for asking this kind question please let me know. Anyway, I have a small rig with two GPUs (SAPPHIRE Pulse Radeon RX 580 8G GDDR5 Dual HDMI/DVI-D/Dual DP Graphics Card), the GPU temperature is running at 74℃, the inboard fans are running in AUTO at 20%, I have two external fans that I would like to use to cool it. My question is where should I position the fans? in front, back, below or uppers side  of the GPU? The back side where the name of the GPU is, is the hottest part of the device, I am afraid to set the external fans in an incorrect position and make the inboard fans workload. Any help is more than welcome.

use msi afterburner, set your gpu fans to 80% and TDP 70% then play around with core clock and memory clock, maybe +100/+450 is a good place to start

this will give you better cooling, lower power costs and better hash rates


Are There Examples of Asset Backed Virtual Currencies? Here is a very natural idea: an entity creates a new virtual currency with the following properties:

Only that entity has the capability to issue new quantities of that currency
That entity makes some type of legally binding promise to always buy and sell units of that currency at prices fixed to some underlying commodity. For example, it will always sell for 1.00 USD / unit and buy for 0.99 EUR/ unit.
Transactions in the  virtual currency are transacted in a Bitcoin-style network that is not centralized and not controlled by the issuer.

This is, of course, a very old and often implemented idea. Paper notes were originally issued and thought of as government backed, tradable IOUs. And gold-backed paper currency is pretty much what I've described here. This is the digital, virtualized variant of a very old idea.

This idea is alluded to here on the Contracts page in the BTC wiki. It's called EURcoins on that page.

My question:

  Are there any existing or serious proposals for alternative virtual currencies backed by commodities?

Obviously, there are advantages and disadvantages to this setup. I'm not asking for a recital of disadvantages. If you are wondering, I see the main advantage of such a proposal as the ability to "send" the underlying commodity point-to-point with relatively low transaction costs. For example, one could pay the equivalent of USD while bypassing the existing credit card and debit payment systems in the US. Whether this is something people really want to do is another question altogether.

This is basically how every asset in Ripple works, other than XRP.

Ripple permits anyone to create an asset and back it in any way that they choose. Others can declare their willingness to accept specific assets in payment. And Ripple implements distributed order books, payment pathfinding, and atomic multi-asset transactions to implement transfers of value.


Is the process of indexing transactions by assigning a transaction id necessary, or is it a scalability issue? Is it not possible for users to simply sign "send transaction" messages into the blockchain with a value field and an address field, and have the validators do the work of looking through the blockchain and adding up all of the send transactions to validate that the coins actually exist? I am hypothetically assuming coinbase transactions still exist and simply list outputs to recipient addresses, thus crediting these addresses with new coins.

Is a transaction id simply a tool to help achieve scalability? Why do transactions have to reference previous inputs?

The reason you have to explicitly state which previous outputs should be claimed by a transaction is simply that you do not want to give users on the network a blank cheque. Say you wanted to transfer 1 bitcoin to from any output available to address A to address B. You would then create a transaction that looks like this:

amount=1|to=B|sign(amount=1|to=B, sign_with=A)

This transaction would be broadcast to the network and result in the desired result. The main problem is that if you have more than the 1 bitcoin you'd like to spend, there is nothing to prevent the owner of address B to create more transactions that give him all of your bitcoins.

The second problem arises with the change from that transaction, if you do not have outputs that sum exactly to 1 bitcoin, you implicitly create a new output for the change. This brings us to the last problem: picking outputs to spend may not always produce the same outcome. If there are multiple combinations that the new output to B can be constructed then nodes in the network would have to agree on which outputs to spend, which again would require transaction IDs.

Having the owner of the coins specify which ones to spend simplifies all these problems.


When is the version 0.7 of the standard client scheduled to be released? The 0.7 version of the standard client is slowly looming, but has not yet been released. Some websites, such as the Testnet Faucet appear to be using that version already. However, not wanting to use a beta release, I'm wondering when the full 0.7 version of the standard client is scheduled to be released?

When it is ready.   There is no "schedule" and no set release date made in advance.

Once a release candidate is out, generally the only changes are "showstopper" bug fixes.

Each release candidate needs to be tested.  Only if testing occurs and no showstoppers are identified does the last RC become tagged as the final release.

Here's some steps that happen during building the release candidates:

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


Is there a CUDA binary to convert a brainwallet string to a BTC address? I am looking for a CUDA program which will take a single argument, a brainwallet password, and output a BTC address.  After reading through several threads on how to convert passwords to public keys, and public keys to addresses, I figured there must already be something that does this.
Any suggestions welcome.  Thanks.

Brain wallets are now understood to be a very insecure way to store BTC.
The software which was the sort of final 'nail in the coffin' for the (lack of ) security of brainwallets can be found here: Brain Flayer.
Its not CUDA software, but may be relevant to you anyways.


Is it better to compile bitcoin node or rather for some reason just use the official binaries? As I have some doubts about a possible hackers' attacks on https://bitcoin.org/

Wanting to run a full node, I rather compiled the Bitcoin Core from git source for Linux instead.

The question is:

Does compiling it bring, other than the one - mentioned, benefit to me or to the network?

if you can compile your node, do it. well done! for most of the users it is technically nearly impossible to compile a bitcoin node because most of people have not enough technical knowledge. bitcoin.org provides binaries so that all people (who have not the time and knowledge to compile it) can also run a node.

hint: if you want to be 100% sure that you have a legit node, you must compile the libraries which a bitcoin node uses too, because the websites/binaries of every library which will be used by a bitcoin node can also be hacked theoretically.


Transaction Denial of Service If the BTC network can only only handle on average 2,759 transactions per block.
During a period where whales attempt a mass dump, could they essentially perform a DoS attack where they make a large number of transactions with higher miner fees than normal, to block unsuspecting network peers from also dumping their coins.
This would allow them to have higher potential gains if they are the only ones who can make a transaction in a 10 minute period.

There is a part of game theory that was designed for protecting bitcoin, if some whales want to spend 10 000 satoshis per bytes spamming transactions for 1 month it is gonna cost them a lot of money, and nothing prevent someone from paying 10 001 satoshis per bytes so that its transaction is mined allowing him to dump forcing the other whales to now spam 10 002 satoshis per bytes and more.
It is also worth noting that whales have an incentive to protect the bitcoin network because they depend on it and anything rendering the network suspicious will lower the price.


Bitcoin stolen from Electrum 2.9.3 my btc were stolen with an anonymous transaction. How was possible? Electrum should be a offline secure wallet, besides they were stolen during the night , with my desktop offline. The receiver address is visible. Can i retreive my btc? Moreover, in the future how can i trust every offline wallet? I donwloaded the electgrum sofware from the official site.

Easy.
Someone has/had remote access to your wallet/files.  They don't need access to the computer during the time of a transaction.  Example:  Send me your wallet and go ahead and secure your computer all you want.... I can simply use your wallet on my machine and spend the funds.  Also, it doesn't need to even be your wallet as I would only need your private key or your seed.   It's likely your computer is infected, they downloaded the wallet, and simply waited to withdraw.

No, you can't get your bitcoin back.  Once gone, it's gone.

The fact is, your computer wasn't always offline since you admittedly used it to download the wallet software.

What you should do?  Well, nothing about the bitcoins that are gone, but know that you should never use that seed/wallet again.  It's already compromised.
Again, what you should do?  Get a hardware wallet like Trezor and know that even if your computer is infected with a virus, your coins are still safe.  (As long as you don't backup the seed via notepad on the computer.)


Why my Bitcoin Cash coins moved to another wallet if i did it on original Bitcoin on 12/12/2017? I have very old Bitcoin wallet from 2012 year. The last operation was 12/12/2017 - this was movement all sum to my another wallet.

I was very surprised today when i first time load this wallet into Bitcoin-ABC (bitcoin cash) and see this transaction inside it!!! I see exactly same transaction (moving same sum to same wallet alias on same date 12/12/2017) inside Bitcoin Cash blockchain.

Can you explain me how is it possible? As I understand Bitcoin Cash has separate blockchain from August 2017 so i should not see the last operation on December 2017.

I used this command to load my wallet into Bitcoin-ABC (bitcoin cash)
bitcoin-abc-0.16.1/bin/bitcoin-qt -wallet=my_bitcoin_wallet.dat -datadir=path_to_bitcoin_cash_blockchain

I see exactly same transaction (moving same sum to same wallet alias
  on same date 12/12/2017) inside Bitcoin Cash blockchain. Can you
  explain me how is it possible?

Bitcoin and BitcoinCash have the same history before August'17


Found my multibit.key file, what now? I used BitCoin for the 1st and final time so far about 2-3 years ago. I thought I had lost my wallet but I found an old backup of my hard drive and it contains a file "multibit.key". I installed a program called MultiBit HD but all the instructions for importing an old forgotten wallet are for the old version of MultiBit.

So in short: what now? I would like to open my "multibit.key" wallet, I think I remember the password but I have a hard time opening/importing it to MultiBit HD. If that is even the right program to use... :)

MultiBit developer here.

You'll need to use MultiBit Classic version 0.5.19 available as a download from the site https://multibit.org. This will allow you to open the .key file and synchronise with the block chain to recover all the funds associated with the private keys held in the file.

Once you have imported the keys, we strongly recommend that you upgrade to a HD wallet. The instructions to do so for MultiBit HD are here: https://multibit.org/en/help/hd0.2/how-to-upgrade-from-classic.html.

Essentially, you download MultiBit HD (the two can sit side by side without interfering with each other) and then spend from Classic into HD.

Always keep hold of your private key files in case someone spends to an old address.


Bitcoin Withdrawn from Cryptobridge not showing up on my Bitcoin Core Wallet Hey so I sold my Argo on Crypto-bridge and received bitcoin. When I withdraw said Btc to my bitcoin core wallet, how long does it take for it to show up?
There are two transactions in question here:
1) I withdraw the bitcoin to my wallet when it was syncing. Now that the syncing is done, I don't see anything show up. It's been 2 days now
2) I withdrew bitcoin to my wallet after it was done syncing. How long will this one get into my wallet. This happens today.

Both of these transactions have went through on Crypto-bridge but never showed up on my end.
My wallet address for bitcoin is

13zQ6niRwL4kWrJs76BCsf3FmERtBWDYke

Is Crypto-Bridge a scam market?

Please help me out

I have no information on Crypto-bridge.

Currently, no transactions seem to have been broadcast to the network for your address.

You should confirm that you sent BTC to you Bitcoin Core wallet (and not altcoins with a different symbol, not BTC). I would get in touch with Crypto-bridge customer support to enquire.


Safely Accept Bitcoin Payments with 0 Confirmations GAP600 is a service (that has processed $5 billion in cryptocurrency) which allows exchanges and payment service providers to process Bitcoin payments instantly (0 confirmation trx). It guarantees a transaction against double-spend, expiration or other fraud even before it is confirmed by the Bitcoin network:

GAP600 facilitates instant, risk-mitigated cryptocurrency commerce by
enabling exchanges to recognize unconfirmed Bitcoin.. transactions as
final using a proprietary risk engine, which analyzes and performs
live risk scoring for each transaction as it reaches the mempool.

How is it possible to guarantee a transaction against double-spend, expiration or other fraud before it is confirmed by the Bitcoin network? What kind of "risk analysis" might be performed to achieve this result?
Note: My question is different from Looking for a tool that gives a score based on the likely hood of a 0-confirm deposit being douple spent because:
1) The question above explicitly asks for a open source tool to achieve the intended purpose. I am asking about what logical vectors might be used to achieve the stated goal (One example might be accepting transactions from addresses associated with well known exchanges such as Coinbase who are unlikely to perform a double spend)
2) The response in that question basically states that it is not possible to achieve this. It does not answer the question. As stated in the comments, it is demonstrably wrong as GAP600 is doing this along with several others.
3) To be clear, the possibility of accepting Bitcoin with 0 confirmations doesn't imply that every transaction will be accepted. If the risk is great enough the transaction will have to wait until 6 confirmations but it GAP600 is able to accept up to 85% of transaction with 0 confirmations
4) It is also possible that a transaction which is deemed un-risky will turn out to be a double spend however it is obvious that the likelihood of this happening is so minute that the value obtained from the other transaction will outweigh any loss from this error (this is my own assumption)

How is it possible to guarantee a transaction against double-spend, expiration or other fraud before it is confirmed by the Bitcoin network?

It isn't really possible in the absolute sense, but you can could perhaps create an insurance fund of sorts, to help provide guarantees against the rare occasion one of your customers is defrauded.
However you fundamentally cannot know for certain whether or not any specific transaction will be confirmed, until it has been. Even if a transaction has been seen by every node on the network, a miner could craft a conflicting transaction, and include it in their next block (with a success rate equal to their percentage of the hashpower). No amount of risk analysis can change this fact.

What kind of "risk analysis" might be performed to achieve this result?

It is hard to say for certain.
You could attempt to track where transactions originate from, like for example if you see transactions coming from large exchanges or service providers that are well-known and trusted in the community. Those entities are probably less likely to attempt a double spend.
You could watch for transactions marked as 'replace-by-fee' (RBF), which is a technique employed by many wallets, which allows the user to increase the fee-rate on a transaction for faster confirmation. Transactions marked as RBF could be treated as less trustworthy in regards to 'zero-confirmation' assurances.
There are likely other ways as well, those are the first couple that come to mind.


BitPay / Copay's Weird Bitcoin Cash Address Format My CoPay wallet shows my Bitcoin Cash address as CTGUTUgVAwHugpf4CyyjAvj8DCFkE4tpEq. What's going on? I thought both Bitcoin and Bitcoin Cash addresses start with 1 or 3?

It's a new address format for Bitcoin Cash proposed by BitPay, to prevent BTC/BCC address confusion. It's not widely used, currently.

The old addresses that start with 1 (P2PKH) are converted to addresses that start with C
The old addresses that start with 3 (P2SH) are converted to addresses that start with H

You can use this "address translator" to translate the addresses: https://bitpay.github.io/address-translator/

References:

BitPay blog post: https://support.bitpay.com/hc/en-us/articles/115004671663-BitPay-s-Adopted-Conventions-for-Bitcoin-Cash-Addresses-URIs-and-Payment-Requests


Using dumpprivkey to make a paper backup I'm just getting started with bitcoin and haven't acquired any significant amount yet, but want to feel relatively secure before I do. And at the moment, my fear of losing bitcoins or a device on which I store bitcoins is slightly greater than my fear of having them stolen so I'm investigating how to make a paper backup. I have looked around and what I have seen seems more complicated than necessary. I am wondering if I could simply:

Start up my bitcoin 0.7.1-beta client
Transfer all my bitcoins to some address in the client
Open the debug window console
Enter walletpassphrase <my passphrase> 60
Enter dumpprivkey <my address with all the bitcoins>
Print the private key that is displayed

Then if I ever need to recover it, I could import that private key into any other bitcoin client. If it's the same bitcoin client newly installed, I could enter importprivkey <my key>.

My one concern about this is that I have somewhere read that some bitcoin wallets "un-steal themselves" and I am worried and wondering if that means that coins may be automatically transferred to another address at some point, at which time my paper backup would become useless.

How wise is this plan? Is there another way I can or should generate a private key and address to which I can send bitcoins without actually having the private key stored on my system if I have a concern about the security of  the system?

I recommend to check out “bitaddress.org”.

You can grab the whole page (all the java-script it needs is in it) via GitHub and run the brain wallet tab offline.

Type in a damn good pass-phrase and record it. The pass-phrase. Send your bitcoins to the public key that results and re-create the private key with the same pass phrase when you want them.


How to retrieve all addresses with non-zero balance and their balances? I'm looking for a way to retrieve all address balances of addresses with a non-zero balance in the blockchain.

Is there a software tool that can calculate the balances in an accessible format?
Or perhaps I can download them somewhere?

With an accessible format I mean that it can be interpreted by a computer. Either in a database-structure or in parseable text format.

This guy wanted to do the same thing. You can find a solution there.

in short:

get a Linux Box/VM with >=8GB RAM
download blockparser
compile it
run "./parser allBalances  -w 250000 >allBalances.txt"

the parser run take around 2 minutes on my vSphere VM (2x3Ghz Xeon, 16GB of RAM)
now you have a list of the top 250.000 adresses sorted by BTC amount.
add some sed/awk/cut magic to make a csv and you are done.


How can I check what mining algorithm does an altcoin use? Where in the sourcecode files can this be checked?

For example, lets get a specific coin:

Chronon
https://github.com/ChrononGroup/Chronon

In what file can one check the mining algorithm?

Depending on the coin, you can find the PoW algorithm by perusing the source code of the coin. For the coin you referenced, reviewing the directory Chronon/src/pow.cpp one can see the algorithm is X11.


SegWit and previous hash: txid or wtxid, or either? With segwit there will be two transaction ids wtxid and txid
Can either one of them be used as previous hash or only txid?

Inside transaction inputs, you have to refer to previous transactions using the txid. Allowing a wtxid there would be (1) a hard fork and (2) defeating the purpose, as it'd make transactions malleable again.

The wtxid is only used to compute the Witness merkle root, which is committed to in the coinbase.


Secure Donations Wallet for the RCK Hi I am looking into a secure donations wallet for the RCK - Refugee Community Kitchen. http://refugeecommunitykitchen.com/
 Theyre doing great work to provide a humanitarian response to the humanitarian crisis in Northern france. The founders are happy for me to work on setting up a secure wallet for donations which will open them up to support from the cryptocommunity. I just want to make sure its as easy to manage as possible as although I am totally confident that donors will know exactly what to do, the donations link will be added to their main webpage and ideally needs to be as maintenance free as possible.
I've been over on the SAFEnet forum and been given alot of good advice and pointed in the direction of Copay.
I understand from help on the forum that because its open source and multi sig Copay is a great option.
What I cannot seem to grasp is if a Copay wallet is suitable for donations of other cryptocurrencies as well as Bitcoin? I know my questions are very basic - so is my understanding so I really appreciate your expert opinion.
I looked at Coinomi as this seemed to readily support donations for lots of different coins. Am I missing something basic here? Can a Copay Wallet readily accept multiple types of cryptocurrency?
Thank you very much for your help with this!

https://github.com/bitpay/copay

  Copay is a secure Bitcoin and Bitcoin Cash wallet platform for both desktop and mobile devices.

Copay supports Bitcoin and Bitcoin Cash only.  No other currencies are supported.


Bitmain AntMiner U1 1.6GH/s - USB Bitcoin ASIC Miner I am looking at getting a Bitmain AntMiner U1 1.6GH/s - USB Bitcoin ASIC Miner to mine LTC and doing a few calculations.

I have used a few LTC profit calculators:

https://bitmakler.net/Litecoin___mining
http://www.coinwarz.com/calculators/litecoin-mining-calculator
https://www.litecoinpool.org/calc

They all seem to vary between about $40 - $70 a day? Is this correct? That seems quite a lot, for what it is.

You can't mine Litecoin with a Bitcoin miner. Bitcoin uses sha256 hashing, Litecoin uses Scrypt, which is about 1000x slower even when implemented in an ASIC, which is why you are calculating ridiculous profit numbers.


Blockchain endpoint working I wanna clear this thing that how blocks are retrieved and created in from the nodes using an end point. The end point is basically centralized and have nothing to do with network if i'm not wrong. Is that end point is also running some kinda setup to keep blocks in sync as well as connected nodes?
In a network we have nodes [B,C,D,E,F,G...] and we have endpoint A. Lets say we have to retrieve a block then on which node the request will be sent?

Take example of STORJ in that request lands on one server(kinda end point) only then it broadcast to all. Isn't the centralized system.

Disclaimer: I hold STORJ. (Not that it would have any impact on the answer)

What you're looking at here is an ERC20 token. So your question revolves around the Ethereum blockchain.

When a new block is mined, it is transmitted to the nodes on the network. This is accomplished by the miner transmitting to his node, and his node transmits to other nodes, so forth and so on.

The idea of "end points" you are asking a node, lets say your node, or a 3rd party providers node for information. In an ideal world all nodes have the same exact information. In the real world they can be different but the node software resolves these differences using "longest chain wins". That's why we wait for confirmations. Ethereum works a bit differently as it uses a "confirmed" flag instead of number of times it's seen since the original block it was first found but this is the Bitcoin forum.

With Bitcoin you can ask any node for "a block" but i think you mean "a transaction". You simply don't consider a "transaction" or "block" to be valid until there are 6 blocks after it. By then it's statistically impossible for it not to "Exist" on the full chain.

In your final example: Storj doesn't really "land" (or any token/coin on any chain). A transaction is submitted to mempool which is then broadcast to other nodes. A miner sees the transaction, mines it, and adds it to a block. That block is then rebroadcast. There is no way for you to "spend" anything because someone else has to confirm that the transaction is valid and add it for it to show up on the actual chain.

Note: Apologies for any confusion. The question was a bit awkward but did my best to answer the various points in it. I highly suggest investigating how blockchains work and why they work. Bitcoin is a fantastic place to start since this all started with Bitcoin.


Is this scheme for multisig audit of Trezor + Coldcard ok? My plan is to make a multisig between coldcard and trezor. I want to audit and verify that I indeed own the 2 keys of these wallets, using a raspberry pi zero (no wifi/bluetooth by definition) on a very old HDMI tv with no internet either, and using a virtual keyboard and simply a mouse on the pi zero.
These are the possible risks I want to mitigate:

The wallets can have a malicious random number generator.

The wallets can generate address for keys that are not mine

To eliminate the risk of the trezor generating a private key I don't own, I'm gonna put its key on the raspberry pi zero and see that it generates the same master pubkey and shown in trezor. This proves I own this key, but it might be a kew that someone already owns. No problem, that's why I'm doing multisig.
On the coldcard, I'll generate a seed using dices, and then verify on the raspberry pi that those dice rolls indeed generate the private key shown by coldcard. This proves that I own a private key that no one owns, because it was generated using dices.
Now that I have 2 private keys that I own, and at least one of them I'm the only owner, I can create a multisig wallet on Electrum or maybe BlueWallet. I'll annotate the first 10 addresses generated by the software wallet, and verify if they match on the coldcard and on the trezor. If the 3 show the same 10 set of addresses, I can consider these addresses safe for receiving Bitcoin.
I'll then receive some Bitcoin on one address, erase both wallets, restore them with the private keys, and then try to spend this Bitcoin, just to make sure I really owned the coins.
What are the possible problems I can encounter? Am I forgetting something important?
PS: I know that if the trezor has a malicious random number generator and it creates a private key that not only myself own, this is a privacy leak, but not a problem. And it's a privacy leak only when I spend from this address, revealing the public key on the blockchain.
I also plan to use just PBST air-gapped transactions on Coldcard, and a trusted computer to broadcast.

The wallets can have a malicious random number generator.

There are several ways to be malicious. Typically random number generators are considered malicious when they are
somehow predictable, so if you use them someone else can guess your "random number".
But that doesn't seem like what your plan protects you from.
What you verify with your procedure is that your hardware wallet do not give you a different seed (when you do the initial setup or ask to export it) from the one it used to generate the private keys and related addresses, that it uses when you receive or send funds with him.
In this meaning, the seed (from which private and public keys are derived in HD wallets) would not be yours but belong only to your hardware wallet: you can receive and send using the device, but if you import the seed elsewhere there are no associated funds, because it's different from the one used by Trezor.
However I have never heard of such a problem on any hardware wallet.

The wallets can generate address for keys that are not mine

This don't make sense to me, public addresses are derived from private keys, so the wallet need to have the private
keys to generate addresses  ... i'm not sure what you mean.
Furthermore, you can't verify that you are the sole owner of a seed or a private key, the most you can do is make
sure that this does not leak out, but if somehow someone manages to copy, predict or generate it randomly, you can't
notice until the money goes away.
So, all things considered, I think you can avoid having to verify the seeds that your wallets give you, because this
adds practically nothing to the security you already have using multisig addresses with 2 hardware wallets evaluated
as Trezor and Coldwallet, that are already heavily scrutinized, as you can see here for example.

PS: I know that if the trezor has a malicious random number generator and it creates a private key that not only myself own, this is a privacy leak, but not a problem. And it's a privacy leak only when I spend from this address, revealing the public key on the blockchain.

I'm not aware of troubles with Trezor rng (have you any reference for this?), but if your private keys are leaked you will lose your funds almost istantly, there is no need to wait you spend, as said before, public key and addresses derive from private key, so if you have this you don't need anything else


Anonymous Domain Registrations Can anyone recommend a domain registrar which will both accept BTC and allow anonymous registrations?

I'm aware of this list:

https://en.bitcoin.it/wiki/Trade#Domain_Name_and_DNS_Hosting

But was looking for recommendations as much as information.

I use IT Itch. They allow both anonymous domain registration and bitcoin payments. I also use them for my VPS web hosting and I find them pretty fantastic.

But be aware that some domain names can't be purchased anonymously. For instance, some domain registries require things like tax numbers or proof of citizenship, so make sure you choose a domain that supports anonymity (like .com, .net).


How can I use a hardware wallet with a pool This might be a totally dumb question but I am trying to understand bitcoin mining, I hope I am bearable.

I am trying to figure out if I can use a hardware wallet with a mining pool. I have an account on slushpool.com but I don't yet have a mining device yet.

In my current understanding (which might be totally useless), I have to install a software (that works with slushpool) on a computer and configure it, connect the mining device to the computer and have some kind of a wallet for payout. The pool with give me a payout every time I reach a threshhold.

How can I use a hardware wallet with this setup? Is there something different that I need to know? My goal is to come up with a setup with as little dependency on external entities that need a "cut" from what I make.

I would appreciate any help on this.

Thanks,
Paras

The hardware wallet will have a public address that you use to send coins to. Each coin will have a specific public address. BTC will have it's own. It is the address generated when you open the BTC wallet on your hardware device and elect to 'receive'. Copy and add that into the mining program.


Programming Languages used Is there a reference that can give me information on the programming languages used in Blockchain development?

For example, Bitcoin is C++, Ethereum makes use of C++, Golang and Python, whilst its smart contracts are based usually on Solidity, Serpent and LLL.

What about other (more enterprise based) implementations? Ripple, Hyperledger, Quorum, Multichain, Monax.

I think you are confusing some things here. A blockchain like Bitcoin, Ethereum, Ripple, or Hyperledger is a protocol in first place. And a protocol is agnostic to programming languages used.

What you are relating to are reference implementations of the protocol. The Bitcoin protocol has the famous Bitcoin implementation (later Bitcoin Core) initially written by Satoshi Nakamoto in C++. But there are so much more clients available in so much more programming languages.

Ethereum, for instance, has three reference implementations, the Eth client in C++, the Geth client in Go-Lang, and the PyEthApp in Python. And there are even more implementations in Rust, Ruby, etc. available.

I could go on with the other blockchains you mentioned, but you get the idea. A protocol can be implemented in any suitable language if desired. If you want an exotic example, have a look at Lisk which tries to build the full blockchain stack in pure JavaScript.


Has LargeCoin shipped any hardware yet? LargeCoin announced their ASIC mining technology back in March 2012, with an estimated delivery of July 2012.

"ttul" in Bitcointalk, who made the announcement, also said "Expected delivery is July 2012. If we miss our delivery deadline, then we will return deposits in full."

Have they delivered any units? Did anyone order any? Has there been a more recent comment anywhere on when they will deliver?

Some people pre-ordered Largecoin units, but they never took deposits from anyone.


Is there something about Bitcoin that prevents us from implementing the same privacy protocols of Monero and Zcash? Certain coins like Monero and Zcash implement privacy protocols that make it nearly impossible to trace origin and destination of transactions - making them completely anonymous.
I'm curious as to why Bitcoin does not peruse a similar path to privacy.
Is there something about the Bitcoin Core code or the way Bitcoin functions at present that prevents it from pursuing this path in the future? Or is it related to extrinsic concerns that governments around the world might forcibly shut down the network if extreme privacy measures are employed?
Thanks

I'm curious as to why Bitcoin has not perused a similar path to privacy.

I want to start by commenting on the phrasing of this question. Bitcoin is defined by the consensus of its users, and isn't a central entity that can set a development goal or priority of what to work on. Individual people - including developers like me - have priorities on what to work on, but those might not be shared by everyone in the ecosystem, or even be opposed by some. Since invasive changes like the ones you're talking about need to be adopted by ~everyone to be successful, it's very hard to answer a question of the form "why does/doesn't Bitcoin do this?". A better way of phrasing is whether there is active research in some direction, or what challenges exist.

making them completely anonymous.

Privacy in cryptocurrencies is a complex topic, and isn't restricted to on-chain transaction linkage (which seems to be what you're talking about here). To give a few other examples:

P2P network privacy: network-level attackers can monitor how transactions propagate through the network, allowing correlation between transactions, even if no on-chain trace remains of this. Partial solutions against this exist (Tor, encrypted private channels, Dandelion, mixnet routing, ...), but things very much depend on how they are used.
Wallet infrastructure: the way people actually interact with the system isn't immune from privacy leaks. Lots of wallet software uses central servers (trusted to greater or lesser extent), and this isn't even restricted to blockchain access: have you considered how wallets get exchange rate information? This reveals "Bitcoin user on this IP!" to the service where they are getting it from. Additional layers of payment infrastructure add another dimension to this, with their own challenges.
Spending policy privacy (aka "smart contracts"). Any time someone does less than trivial things on-chain, it stands out. If tomorrow AwesomeCorp brings a new fancy secure wallet, and it's in practice the only thing out there that uses 5-of-7 multisig, then anyone can infer that any 5-of-7 scripts on chain are due to users of AwesomeCorp Wallet. This too is a privacy leak. A less far fetched example: you can trivially distinguish Lightning usage from normal payment activity on chain today. This is orthogonal to on-chain transaction linkage privacy (though some solutions apply to both). This is something that the Taproot (BIP 341) proposal aims to partially address (disclaimer: I'm a co-author).
Amount privacy: Bitcoin transactions today reveal information about the amounts being transferred (even if not always completely obvious due to change outputs). Both Monero and Zcash cover this as well with their respective approaches, but it can be treated as distinct from transaction linkage privacy, and hypothetical solutions exist that address one but not the other.

All of this to say: privacy is multi-faceted, and all aspects of it are important. And it turns out, some of them are much easier to improve upon than others.

I'm curious as to why Bitcoin has not perused a similar path to privacy.
Is there something about the Bitcoin Core code

Bitcoin Core has nothing directly to do with this. If the ecosystem demanded a particular change, it would get implemented, and people would switch to it - whether that's in the Bitcoin Core implementation or in something else. Of course, several people who participate in these discussions also contribute to Bitcoin Core, and it is a focal point for development - but doesn't necessarily have to remain that way (disclaimer: I'm a contributor to and maintainer for Bitcoin Core).

or the way Bitcoin functions at present that prevents it from pursuing this path in the future?

Specifically comparing with the approaches that Monero and Zcash have taken, I can give a few reasons that I personally think pose challenges. These aren't necessarily "Bitcoin cannot/will not do this because..." arguments; they're reasons why they could cause controversy, might not be acceptable, and indirectly may be reasons why people prefer to not work on them (or at least, work on other things first):

Necessity of "opt-in" approach: even if a system is proposed that enables better transaction-linkage privacy, it appears very hard to do in a way that doesn't either leave it optional (risking "why did you choose to use Private Mode for this transaction?" questions), or forces everyone to upgrade their wallet infrastructure (something that has historically been extremely rare) and may break systems built on top. This is even worse if the more private mode is more expensive, slower, or puts more load on the network.

ZCash's approach requires the introduction of new (and relatively new) cryptographic security assumptions (at least elliptic curve pairing-based constructions). This means that it's possible that with such an approach, future breakthroughs in cryptanalysis make it possible to steal coins, or violate other properties the system is supposed to protect. A similar risk exists of course for the assumptions Bitcoin relies on today for security, but these are older and more conservative (elliptic curve discrete logarithm), and perhaps also important: already accepted by the current users of the system. And even in case this new private mode is optional, if you're not personally comfortable with pairing-based cryptography and choose not to use it, you wouldn't be too happy if a significant portion of BTC in circulation move into it: if the assumption breaks, your own coins that aren't under such a system wouldn't retain any value if a sizable portion of the supply becomes perceived to be at risk for theft. Thus, you may see opposition to the introduction of such a system by those who aren't going to use it. Monero's approach has very similar security assumptions to Bitcoin's.

Both Zcash and Monero replace the UTXO set (whose size scales proportional to usage, and can and does shrink from time to time) with a different data structure that grows forever (proportional to how often coins have been moved). This is a major scalability concern, but only manifests itself under actual load. I believe both Zcash and Monero see far fewer transactions per unit of time than Bitcoin, so they may not suffer very much under this (yet). This makes it a fundamental trade-off: better scalability, or better on-chain privacy, and it's unclear if all users would be happy with changing that.

Auditability of supply: approaches that introduce better amount privacy (like Zcash and Monero, but also Confidential Transactions as mentioned in Prayank's answer - which doesn't directly affect transaction linking privacy) mean you don't have a simple database you can go over and sum up all UTXO amounts anymore to see what the total supply is. It gets replaced with a cryptographic construction, and trust that supply hasn't been inflated becomes entirely dependent on the security of the cryptography used. Alternative approaches exist that still have amount privacy, and don't make inflation protection dependent on security assumptions; only amount privacy itself. These are less efficient, and still make it hard to audit supply. Given the prominence of Bitcoin's supply schedule, it may be expected that many users aren't comfortable with giving up the auditability it has without very good alternative assurances.

So, yes, I believe there are specific challenges to pursuing the approaches those other systems used. But that's okay, there is lots of interesting research (partially due to the existence of these systems), and given enough time, I do expect that some of that will lead to improvements that Bitcoin can adopt. Furthermore, on-chain privacy doesn't exist in a vacuum, and liquidity matters: a system that is harder to use and/or sees less use for whatever reason inherently has a smaller anonymity set: the users of that system. Bitcoin sees actual use in the real world, and there are approaches to improve actual privacy that do not rely on on-chain cryptographic techniques, see this excellent article for example. The voluntary nature and actual usage also complicate fundamental improvements, but we'll get there.

Or is it related to extrinsic concerns that governments around the world might forcibly shut down the network if extreme privacy measures are employed?

As far as I am concerned, hell no.


What are the advantages of using my own blockchain versus the Bitcoin blockchain? Let's say I have a project that takes advantage of blockchain technology. Now I see a number of banks dropping the Bitcoin blockchain for their own. I'm sure that has something to do with secrecy, but, assuming I'm just a normal entrepreneur and not some massive financial institution, what would be the reasons for me to create my own blockchain vs. the Bitcoin blockchain? What are their respective (dis)advantages?

The Bitcoin blockchain is maintained and secured by people throughout the world: miners. They take care of the security and validation of the decentralized consensus rules. The incentive for those people is the bitcoin reward.

Your own blockchain will need such people to secure your blockchain. How are you going to incentivize them to mine for your blockchain? Is it going to offer some service in return and/or a reward in an alt coin (like the majority of altcoin blockchains) ?

To answer your question, I see no reason to create your own blockchain unless you have a use case that noone have thought until now. There are several hundred different blockchains already. The vast majority are bitcoin clones that offer nothing new and have much weaker security than bitcoin. Others, like Dash offer nice additions and just a few, like Ethereum, offer unique functionality on their blockchains.

Even for massive financial institutions I would argue that they will not gain much if they build a blockchain in isolation. One application I see is several such institutions joining to support one blockchain. So they share the resources of securing the blockchain, they have part of transactions public for auditing but still control what is private and what not (permissioned blockchains).

We would need to know the requirements of the hypothetical project to be more specific. However, I do recommend you to read this and this, since it goes into detail on requirements for financial institutions and governments and permissioned blockchains.


How can I turn a private key into a wallet? I created a vanity public key (wallet address) and I got the corresponding private key too. Is it possible to somehow "open" that wallet and just used it as a normal bitcoin wallet? No sweeping, no transferring to other account - just send some of the money from that account to some other.

A bitcoin address is not the same as a wallet.  If you have the private key for the address, you can import the key into either Bitcoin-Qt or a lightweight wallet such as MultiBit.  You will then be able to send and receive coins using this address.

To import a private key into Bitcoin-Qt, read this

To import a private key into MultiBit, read this


Can I restore a wallet using any valid 24 words? Can I create a wallet and restore it on something like a Ledger S using any 24 words that I choose from the list of accepted words?

Is there any disadvantage to creating a wallet this way instead of having say Ledger generate 24 words for me?

If you choose the words yourself, you're more likely to be biased towards some word selections based on position in the list, words you like and dislike, etc. Ledger is designed to pick the words as securely as possible. Also, some words are used as checksum I believe, so if you just picked them randomly the checksum would be invalid and you'd probably get a warning. But yes, it would still probably work.


Why can't P2PKH's scriptPubKey be shortened to only OP_CHECKSIG? For P2PKH, the scriptPubKey is OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG. Why can't it check the signature only? Why can't it be shortened to just one opcode — OP_CHECKSIG?
Why does the public key need to be presented in addition to the signature when unlocking?

The script achieves two things:

Ensures the provided public key matches the provided signature
Ensures the provided public key leads to the same address script the utxo was locked with.

A P2PKH script contains the hash of the public key. When you spend the coins, you provide a public key, and a signature.

First, the script duplicates the provided public key, then runs it through hash160, and compares the output to the hash embedded in the locking script.

Once that check passes, it validates the provided signature against the same public key. This ensures that the signature comes from the same key that was used to generate the address.


Who pays on-chain fees for settlement transaction? Given a channel between Alice and Bob, who pays the on-chain fees when closing the channel?

Considering all possible types of closes:

Bob unilaterally closes channel
Bob wants to close the channel and Alice's node agrees (collaborative close)
Any other type of close (if there are)

As long as we don't have BOLT1.1 and dual funded channels the fees for settling a channel are always paid by the party who funded the channel as described in BOLT 03 - Transactions:

  Base commitment transaction fees are extracted from the funder's amount; if that amount is insufficient, the entire amount of the funder's output is used.

There is one exception to the rule if the channel partner has an output that is below the dust limit this output is also added to the fees and reduces the fees that the funder of the channel hast to pay.

  Note that after the fee amount is subtracted from the to-funder output, that output may be below dust_limit_satoshis, and thus will also contribute to fees.

On a side note. A mutual close has less fees at it works by settling all pending HTLCs and then create one spend of the funding transaction.


Question about blinding factors in Confidential Transaction In the paper about Confidential Transaction, it is said that the blinding factor for the range proof can be deduced with the shared secret using HMAC. But i didn't understand how the receiver can find the 'main' blinding factor, the one which is linked to the output commitment. I assumed he would do it using the same method as for the blinding factor of the range proof but i am not sure. Can someone explain ?

There are many ways an implementation could do this.

For example, the blinding factor of the output could just be set to a hash of a shared secret.

But this has a complication that there is normally one fewer degree of freedom than there are outputs because the blinding factors must sum to zero. Due to this it's not possible for all outputs to just have their blinding factors be set as the result of a shared secret.

The obvious answer would be to just include an encryption of the relevant blinding factor.  However, in my implementation the randomness in the proof can be used to form an encrypted communication channel, so the blinding factor (and value out the output) can just be communicated via that.

Another alternative would be to include a dummy output with a range of 0 (which is very efficient to prove).


Blockchain / Bitcoin / Previous address / Next address New to learning about the Blockchain ...

The Blockchain requires a Token for use. It is my understanding that the Token (or rather the code implementing the Token) is responsible for filling up the Data portion of a block (that is to be added as part of the Blockchain).  Is this correct?

If so, this means that what exactly goes into the Data area of a block is dependent upon the Token that fills it.Does that mean that Bitcoin is a type of Token?

In the Block (that sits on the Blockchain), there is a Previous address and a Current address. The Previous field and the Current field is used to support the Linked List structure of the Blockchain (with the Previous address pointing to the Previous block in the block chain and the Current address being the actual block id of the Current block).

Does the Current address of the block take into account the Data area (or contents) of the Current block? My understanding is that the Current Data area of the block would hold Merkel Trees - and - that the root of the Merkel tree is somehow incorporated as part of the Address of the Current block.

TIA

You're confusing a few of the terms here. The "data area" of a block contains transactions. Transactions generally redefine Bitcoin ownership by signing over funds from one owner to another. "Token" doesn't seem well-defined to me, so I'm not sure whether a bitcoin would constitute a "token" in the way that you think of "token".

Blocks are identified with the hash of the blockheader, not an address. A new block points at its parent block by including the parent's hash in their blockheader. The blockheader's hash covers the content of the block by including the Merkle root of the transaction tree which commits the block to specific set of transactions.

I've written a bit more about how the blockchain works here:
Can someone explain how the Bitcoin Blockchain works?


What are the risks of running an online store via a bitcoind connection using less than the minimum of 8 connections? I have 1GB of memory to work with on my VPS.

I want to run bitcoind as well as a few other crypto currency daemons.

As it stands, number of connections seem to be the only value I can change that has any impact on my memory usage.

I have bitcoind set to 10 connections at the moment and it is consuming a steady 400MB of memory during this time.

What are the consequences of lowering the number of connections to say 2 or 1?

In theory, only one reliable connection to a trustworthy node is sufficient. If you do decide to limit your connections only to 2 outgoing ones, make sure to connect to nodes you trust to be up to date, to reduce the chance of falling behind, or worse, being the target of an attack.


Is there a place or tool to monitor all addresses for unmoved coins? I've been looking for a way to easily monitor all address with a balance, that the balance has not moved/changed for a period of time (based on a criteria such as 1 year). Is there a site/tool already available? or do I need to build it myself? if I have to build it, where can I start to look for the relevant data? Thanks

In aggregate, this is shown in BitcoinDays Destroyed (e.g., unspent for one year or more).

This can be done with some degree of effort using the Bitcoin API.

v0.7 getrawtransaction gives you access to transactions even those not in your wallet.

http://en.bitcoin.it/wiki/Raw_Transactions

There are other tools that you can use to build this capability as well.

libBitcoin
Armory (see Extras)
Bitcoin ABE


How to find out addressHeader p2shHeader I am trying to find out the location or a method (may be) for addressHeader and p2shHeader parameter for any altcoin. The following list contains these 2 parameters for few coins but I am unable to find the source of these.

addressHeader = 30  Digital coin
addressHeader = 25; Blackcoin
addressHeader = 76; Dash
addressHeader = 30; Dogecoin
addressHeader = 0   Crown
addressHeader = 14; Feathercoin
addressHeader = 25; NuBits
addressHeader = 63; NuShares
addressHeader = 68; Uro
addressHeader = 30; Verge

p2shHeader = 5;     Digitalcoin
p2shHeader = 85;    Blackcoin
p2shHeader = 16;    Dash
p2shHeader = 22;    Dogecoin
p2shHeader = 5;     Crown
p2shHeader = 5;     Feathercoin
p2shHeader = 26;    NuBits
p2shHeader = 64;    NuShares
p2shHeader = 5;     Uro
p2shHeader = 33;    Verge

These are address prefixes: A value prepended to a pubKey hash or scriptHash before base58 encoding. Assuming they are bitcoin forks and share similar source code, you can find them in the source code (eg. Dogecoin):

chainparams.cpp Line #128

I haven't seen a list of altcoin address prefixes, but I can see how that might be useful.


In Bitcoin source, what is the UniValue objects purpose? In the bitcoin source code you can see a lot of objects of type UniValue, particularly in the miner.cpp and rpc/mining.cpp. What is the utility of this UniValue object? Is it used to update the blockchain, or simply to return a message to a miner in their console?

UniValue is a type that encapsulates a JSON value.

It is only used for communication with external utilities through the RPC interface.


Bitcoin trade volume and trade transactions Am I correct assuming that bitcoin transaction volume (https://blockchain.info/nl/charts/n-transactions-excluding-popular)
represents "the usage in real transactions" Hence, it does not represent exchange trading transactions?

The reason I ask is because the trade volume vs transaction volume ratio is not available anymore: (https://www.quandl.com/data/BCHAIN/TVTVR-Bitcoin-Trade-Volume-vs-Transaction-Volume-Ratio) and I am somewhat confused by the names of the variables.

In short:
Is https://blockchain.info/nl/charts/n-transactions-excluding-chains-longer-than-100 the transaction volume? (Purchase real life goods etc)

Thanks.

These are all transactions that are recorded on-chain.

  In short: Is https://blockchain.info/nl/charts/n-transactions-excluding-chains-longer-than-100 the transaction volume? (Purchase real life goods etc)

Assuming that every transaction involving the trading of bitcoin for goods/services is done on-chain and not internally as might be possible by some sites, ( eg all trading on binance, bittrex etc.) then yes.

It certainly indeed does not represent "orders" that you make on exchanges such as bittrex ( to buy X coin or sell Y amount of bitcoin for $), all these transactions are performed internally on their platform, and are never actually recorded on the blockchain, unless you explicitely want to withdraw your "balance" in the form of bitcoins to your wallet. ( which is why you really shouldn't trust them with any of your coins)..


Issue after importing private key to MultiBit I followed another question here and imported my address from Bitcoin-QT to Multibit.
The reason why I did so was because I had received some BTC but in Bitcoin-QT it was taking years to download the blockchain. So I simply took the private key and imported in Multibit.

Now even after Multibit imports it successfully, the BTC I had received to the address do not show up. I have confirmed from blockchain.info and other sources, the transacton does exist.

ALSO, I have set correct date of the transaction in the import file during import.

Please advise what's wrong?

Thanks.

Set the date in the import file to the date the key was created (date and time are in UTC, not local time).  Then do Tools -> Reset block chain and transactions.  This will cause MultiBit to rescan the block chain from the earliest key creation time.  It should then show your transactions.


Cost of transfer from multiple addresses Suppose I have an account with several thousand addresses, each having some BTC. I'm sending all my funds to another address. Will the transaction fees be proportional to the number of my addresses, or will it be roughly equal to the cost of a simple transaction?

More inputs will mean the transaction will take up more bytes. Since miners have only so many bytes in a block that they can fill with transactions, they won't put in a bigger transaction unless it pays a bigger fee.

This means that small outputs can be effectively unspendable (because the fee for the additional bytes it would take to claim them exceed their value) until and unless fees decrease.


Eliminating all private keys records from pc Suppose I buy a new wifi router and a new pc. I set up both the wifi network (of course, with a password) and the pc.

Now I access the internet for a few seconds in order to download bitaddress.org from GitHub or as an HTML file. Then I turn off the wifi connection on my pc and open the downloaded file and generate many pairs of public and private keys (which I write down on paper). Once I'm done, I clear the web browser history, cache, cookies, etc. and delete the downloaded files.

Would this be enough to make sure no records of the keys of any kind are left anywhere on the pc? Should I restart the pc before turning its wifi connection back on again? Or should I reinstall the operating system just in case? Or would it be a good idea to install Deep Freeze before generating the keys?

I'm planning to continue using my pc for my daily work.

Thanks in advance!!

What you describe has some risks:

The new PC and router likely won't have the latest software updates, which could increase the chance of it being compromised immediately
The bitaddress.org website may have been compromised, in which case it may generate pre-determined addresses that are monitored for stealing coins deposited to them. This is a real and significant risk that you should take steps to avoid.

I suggest that you look at a process like this:

Download a copy of the bitaddress.org page and store it on USB.
Open it from a cleanly booted offline PC, perhaps from a live linux CD, or even better, from a permanently offline PC.
Verify the bitaddress.org code (I'm not going to cover this here; it would make a good separate question perhaps)
Generate your private keys


is it possible to decode block height from a blockhash? I'm creating a bitcoin network client and I'm wondering if it's possible to decode the block height from a blockhash whenever I receive a new block inventory vector.

No.  The whole point of a hash is that it's a one way function.  You can't "decode" any of the header data from the block hash.

Moreover, the block height isn't even contained in the block header.  You're supposed to calculate the block height by looking at the previous block hash in the header, which hopefully refers to a block whose height you already know; if not, get that block and recurse.  (For sufficiently recent blocks, the block height is contained in the scripts of the coinbase transaction, but that's not part of the header.)


How do I create a descriptor wallet? Using Bitcoin Core from today (almost 0.21):
I ran ./configure. It said with sqlite = yes. ldd $(which bitcoind) shows it is linked to libsqlite3.so.
Now, I started a signet node using bitcoind -signet. It has synced.
Now I want to create a descriptor wallet. So I tried looking in the man bitcoin-wallet, but it doesn't mention it.
I tried bitcoin-cli help and it lists:
createwallet "wallet_name" ( disable_private_keys blank "passphrase" avoid_reuse descriptors load_on_startup )

I tried:
$ bitcoin-cli -signet createwallet default_wallet -descriptors
error: Error parsing JSON: -descriptors
$ bitcoin-cli -signet -descriptors createwallet default_wallet
Error parsing command line arguments: Invalid parameter -descriptors

How do I create a descriptor wallet?

descriptors is a boolean argument, so it should either be true or false. As with all RPCs, the argument is positional by default. So your command would look like
bitcoin-cli -signet createwallet "mywallet" false false "" false true

You can specify that the arguments be named so you don't have to put the position correctly. In that case, you do
bitcoin-cli -signet -named createwallet wallet_name="mywallet" descriptors=true


Determining if input is a block ID, transaction ID, or address how do sites like https://blockexplorer.com determine if the input (see inputbox in the header of https://blockexplorer.com ) is an address, transaction ID or block ID?

I want to write something similar myself on my local machine, where I run a full node and have access to bitcoind RPC. I need to know how to direct the input given one box can be 3 things.

As outlined in the pseudocode in amaclin's answer, a block explorer website would simply check to see if they can find the hash/txid/address in their database, then they will know what type of input it is.

You can't directly perform this check via one bitcoin core RPC call, you would have to write a script of some sort to perform the 3 checks to figure out which type of input you were given. You can first check for a valid block hash using the getblock RPC, and if that failed you know its not a block hash. Next you would have to have txindex enabled on your node to allow yourself to query txids using the gettransaction / getrawtransaction RPCs (because by default the node only indexs transactions which are related to your wallet). And then to check if its a valid address, you can use the validateaddress RPC call. If all of those failed, you know the input is invalid.


Adding instead of concatenating hashes in Merkle trees Why aren't the hashes combined using a commutative operation such as addition instead of concatenating them? Any possible vulnerabilities or security flaws?
thanks for your time and efforts.

There are a number of issues here, with different answers.
Can Merkle trees use a commutative operation in general to combine hashes?
Yes, but only if they aren't intended to commit to the order of the leaves.
Clearly when a commutative operation is used, [A,B,C,D] and [D,C,A,B] will hash to the same thing. This is not a problem if the Merkle root is intended to be a commitment to the (multi)set of leaves, but it is if it is intended to be a commitment to the list.
Could the Bitcoin transaction Merkle tree have used a commutative operation?
Maybe, it's hard to talk about hypotheticals.
The order of transactions in a block is relevant (transactions can spend outputs created by previous transactions in the same block), so you want to prevent a peer from reordering the transactions to invalidate it without breaking the commitment. Obviously alternative solutions could have been used here, either by encoding the order explicitly, or by performing a topological sort on the set of transactions before verification.
Obviously this cannot be changed anymore in the actual Bitcoin protocol without a very invasive hardfork.
Can you use addition or xor as commutative hash combination function?
Not without security reduction.
Imagine a 2-element Merkle tree with leaf elements A and B. Their hash is H = hash(leafhash(A) + leafhash(B)). An attacker who knows A and B can use a generalized birthday attack to find other leaves C and D such that leafhash(C) + leafhash(D) = leafhash(A) + leafhash(B). Perhaps surprisingly, this only needs ~2128 work if leafhash is a generic (and secure) 256-bit hash function. By doing so, the attacker has managed to perform a second preimage attack on the Merkle tree construction, in only the square root of the time that would normally be expected for second preimage security.
There may be reductions in other security properties too.
Are there other feasible commutative hash combination functions then?
Yes, but they don't shrink the data.
For example, if the hashes are treated as integers modulo a large prime, then combining child hashes x and y as (x+y,xy) works (because the sum and product uniquely identify the inputs, but not their order). When working in a large characteristic-2 finite field (e.g. GF(2256)), (x+y,x3+y3) also works.
Another much simpler possibility is simply sorting the elements: combining x and y as (min(x,y),max(x,y)) works fine.
If using secure commutative combination functions doesn't shrink the data, then is there any point?
It means that you can prove an element is in the Merkle tree without revealing its position.
This is a minor bandwidth gain (log2(n) bits for a tree with n elements), reduces some implementation complexity, and may be a slight privacy improvement if the positions are sensitive. In fact, this approach is used in the proposed Taproot script trees (concatenating the hashes after sorting), precisely for the reason above.
Disclaimer: I'm a co-author of that proposal.


Why satoshi client's UPnP part maps to a fixed external port (8333 by default)? Why satoshi client's UPnP part maps to a fixed external port (8333 by default)?
If there are multiple clients behind the NAT router, won't there be a conflict?

A fixed external port is used so that other clients on the internet can connect to your client by knowing only your IP address. They will use the fixed port number to connect.

If you have multiple clients behind a NAT device, then only one client will be able to negotiate with the NAT device to listen on port 8333 (and have incoming connections translated to its client address).

Note that the above assumes the clients actually are behind a NAT devices (which is very common, especially in home networking setups). If instead the router is really just a router and not a NAT device, then each client behind the router will have its own public IP address, and there won't be any conflict between more than one of them listening at the same time on port 8333.


Exchange multiple Cryptocurrencies Does anybody know a good exchange site for various cryptocurrencies like LTC, NMC, IXC, DVC, BTC etc.

One I found was Vircurex but it is very cumbersome to use.

Cryptsy has a lot of currencies to trade. Right now you can only trade them one versus each other (BTC to LTC, NMC to BTC) but they are planning to start trading for USD.

You might find the interface cumbersome as well, but in my opinion it is still better then vircurex's.


Why bitcoin addresses have different number of characters? With the help of bitcoin wiki I learned that every bitcoin address stands for a number and that shorter addresses are valid just because they happen to start with zeros, and when the zeroes are omitted, the encoded address gets shorter.

Source: https://en.bitcoin.it/wiki/Address

I am not sure I fully understood everything. First of all, I suppose the part about a "bitcoin address stands for a number" refers to hexadecimal digits?

Other point I'd like to clarify:

How the zeros can appear while address is generated in the first place? I thought that zeros (along with l, I and O) does not exist in Base58Check encoding at all.

Bitcoin addresses are 160bit numbers. They are derived by running the public key through hash functions. The result is a number in a fixed range i.e. 0 to 2^160. This is then encoded in base58check or bech32. You could represent it as hexadecimal as well if you liked.

2 and 53 are both random numbers inside 0-100. One takes 1 character to write out while the other takes 2 characters to write out. Instead of writing them in the decimal number system I could write them in hexadecimal and that would not change.

Base58check is just another encoding format. It's converting the number into base 58 number system and adding a checksum at the end to prevent typos.

You can represent zeroes in all of the above number systems/encoding formats. You may do it with characters other than 0 though. In the case of base58check 0 is represented with 1.


What is the equivalent of cold storage or paper wallet for NXT? I want to be able to secure my NXT in cold storage. What are some ways of doing this?

Since NXT is only accessible via a brain wallet, I can just store the passphrase on a paper, but what if I wanted to see it as a watch-only address? Is that even possible?

It is possible, but quite more difficult than with Bitcoin.

All NXT tokens/coins are stored on the network, but it is possible to create an account "offline" that is secured by a 256-bit public key and does not expose your private key to the network.

There is a step-by-step tutorial on the NXT-Forum.


"Assertion Failed!" when I try to open Bitcoin Wallet When I try to load my Bitcoin Wallet I get an "Assertion Failed!" window:  here is what the window says:

Program: C:\Program Files\Bitcoin\bitcoin-qt.exe
File: src/main.cpp
Line: 1761

Expression: pfork !=NULL

For information on how your program can cause an assertion failure, see the visual C++ documentation on asserts

(Press Retry to debug the application - JIT must be enabled)

(three buttons:)     Abort     Retry    Ignore

I am a novice and don't know where to start.  I do have a backup on a flash-drive if that is of any help.

Many, many thanks for any help you can give.
Sincerely
Douglas (Scotland, UK)

Found out a way to fix the problem - really easy too:

1) Copy bitcoin data files to external hard drive
2) Uninstall Bitcoin application
3) Copy bitcoin data files back to their original location
4) Download and reinstall Bitcoin application.  It finds the old files and everything works perfectly.

Thank you all for your help.
D


Failed to start lnd.service: Unit bitcoind.service not found. (lnd installation) I installed my bitcoind and lnd correctly.
I put my datadir=/mnt/vdb to bitcoind.conf file and it allows me to start bitcoind with this command: bitcoind -daemon.
As a final step, I want to learn lnd

sudo service lnd start

  Failed to start lnd.service: Unit bitcoind.service not found.

For me, I don't understand why it can't find bitcoind.service since I could run bitcoind without --datadir parameter.

How do I fix this error?

Starting a service by hand doesn't mean that it has the proper init.d or systemd config files in place that it could be started with the service command.  In this case it looks like lnd was setup to assume that bitcoind was also a systemd service so it can make sure it is started first.  If you can't start bitcoind with the service command then something is missing.

Maybe you didn't install bitcoind correctly and didn't realize it.  Look at the files that were installed and see if anything got put into /usr/lib/systemd/system/unit or /etc/systemd/system/unit.d/ directories.
Or lnd has expectations that have drifted from what bitcoind is providing over some period of time.  The "easy" work around is to modify the systemd config for lnd to no longer try to start bitcoind.


Label and description visibility in transaction history When I send a bitcoin payment I provide label and description for a transaction.
Is it possible to see these values on blockchain.info (or somewhere else) ? Or this information is available for receiver only?


Why do transactions propagate? It seems like miners would have an incentive not to propagate transactions that came their way. Not propagating would both save them a bit of network use and make it more likely that they would claim the fees from those transactions. Am I missing something, or is it just that a sufficient number of miners are charitable?

It's true, there is a bit of a Tragedy of the Commons going on here. All miners want transaction to be propagated to them so they can include them and get the fees, but why would they expend their own bandwidth to help others hear about those transactions?

Fortunately, though, miners are not the only ones on the network. There are currently almost 6,000 reachable full nodes on the network, and a small subset of these are actually miners. So, even if all the miners stopped propagating transactions (they still have to propagate their solved blocks to get paid), information would still spread fairly quickly throughout the network.


Migration from Berkeley DB to LevelDB In 2013 a new bitcoin core was released and one of the supposed improvement was migrating from Berkeley DB to LevelDB. According to the release notes at bitcoin.org:

  LevelDB, a fast, open-source, non-relational database from Google, is
  now used to store transaction and block indices. LevelDB works much
  better on machines with slow I/O and is faster in general.

Similar statements were done by bitcoin core developers:

  LevelDB - an open-source rewrite of Google's own database system - was
  designed for efficiency and consistency on commodity hardware, and
  outperforms BDB by an order of magnitude in some settings. Preliminary
  tests with LevelDB show very good results.

However, nowadays there are several comments through the internet critizing LevelDB. According to LevelDB page at Wikipedia:

  LevelDB is widely noted for being unreliable and databases it manages
  are prone to corruption. Academic studies of past versions of LevelDB
  have found that, under some file systems, the data stored in those
  versions of LevelDB might become inconsistent after a system crash or
  power failure. LevelDB corruption is so commonplace that corruption
  detection has to be built in to applications that use it.

In summary, the complaints about LevelDB are:

unreliable and databases are prone to corruption
several bugs due to fundamental flaws
poor code quality
no longer actively maintained (i.e. dead project)

Question 1
Are these complaints about LevelDB correct?

Question 2
What is the final balance of migrating Bitcoin Core from Berkeley DB to LevelDB? Is LevelDB working as expected? This migration was the right choice?

As someone who was involved in doing that migration at the time, I believe it was the right decision. LevelDB is far from perfect, but I wouldn't know what else to use.

In particular:

BDB is much slower for our usage (large atomic batch writes, small random reads).
There were reports of database corruption as well with BDB, at a time when it was used far less intensively than LevelDB is now.
BDB is very painful to upgrade. My impression is that it was designed for setups where a database upgrade only happened with professional supervision. In particular, the write log files created for durability were sometimes not readable by later versions. This is the reason why Bitcoin Core releases have for years stuck with BDB 4.8 for the wallet.
BDB has many resource limits that need configuration, where inappropriately chosen values may cause network-wide failures (read up on the March 2013 incident, specifically). The official documentation on this states Reviewing the Lock subsystem statistics is the best way to determine this value. I believe that's not acceptable for our use case.

While database corruptions are reported relatively frequently these days, my belief is that it's mostly hardware failures or driver issues. Bitcoin Core tends to stress disks, memory and CPUs far more than most software, which makes otherwise invisible issues pop up.


Cannot open wallet dump file (code-8) Does anyone know why I can't dump info into a text file?

It also doesn't allow me to back up my wallet.

i am using SNAP

If you installed Bitcoin Core via Snap, then you can easily dump your wallet keys to snap/bitcoin-core/common/ directory, like
dumpwallet /home/alex/snap/bitcoin-core/common/walletdump.txt

In case of success, you'll see the following response:
{
  "filename": "/home/alex/snap/bitcoin-core/common/walletdump.txt"
}