Does a bitcoin pool appear as one node or multiple nodes to the rest of the network? I'm guessing that it appears as a single node?  For example on http://getaddr.bitnodes.io/?

The pool will typically appear as one node, though there's nothing stopping a business entity identifying as a pool to operate several nodes.

In any case, the miners in the pool will certainly not appear as nodes.


Where can one trade AuroraCoins for Bitcoin? I have some AuroraCoins (AUR), minin' them on ghash.io.
I want to turn them into BTC and then use BTC (no USD!).

Some exchanging site?

Trust me, I've been Googling, Binging, DuckDuckGoing and others and found nothing.

Create an account on Mintpal, they have a direct trading market: AUR/BTC. From Mintpal you can withdraw it to your own wallet or where ever you want to have it.


How to check if an output has been spent? Using an rpc client (e.g. bitcoin-cli), for a given transaction and index of an output of it, how can I tell if the output is currently an utxo, or if it has already been spent?

In the latter case, I'd also want to know the transaction which spent it.

I looked at the gettxout command, but it isn't clear to me how to extract the answer from the data it returns.

I'm running a full node with txindex=1.

If gettxout returns something, the output is unspent. If it returns nothing, the output either never existed or is spent.

You do not need -txindex for this.


In Ardor, can you send a message with ZERO ignis balance on a brand new account that has never made a transaction before? I know bundlers can bundle zero fee transactions, but can an Ardor account that is newly created without ever making a transaction send out a message and have it bundled? Or is this not possible as the new account never made a transaction before?

From riker in slack:

The ability to submit a transaction with 0 fee from a new account is currently blocked by several layers of protection inherited from NXT:

The wallet does not allow it.
The API layer requires that the transaction passphrase belongs to an account which is registered on the blockchain.
The node logic requires an existing account to check the account balance.

It is enough to send a message or set an Account Property to a new account in order to allow it to send 0 fee transactions.


Are higher versions of segregated witness script non-standard? My understanding is that only version 0 is defined but other versions are considered valid to allow extensions using soft forks, but are they non-standard at the moment?

See @Pieter Wuille's comment, currently all witness programs with versions other than 0 will be rejected as non-standard. See interpreter.cpp L1447

Edit: As of v0.16.2, it appears that all version bytes will at least enter the mempool, provided the rules for version 0x0 (if used) are followed. See BIP 141 - Witness Program, BIP 143 - Restrictions on Public Key Type and policy.cpp#L232

Currently, versions bytes higher than 0 will cause the VerifyWitnessProgram function to always return true (for future softfork compatibility). Currently version bytes 1-16 are reserved for future use, but, "for any version byte from 0 to 16, the script must fail if the witness program has a CastToBool value of zero."


How can I start my own mining pool? Is there some relatively simple (and preferably free/open-source) solution for starting my own mining pool? How close to "turnkey" would such a solution be and with pool operators mostly running at 0% fees and living on transaction fees, is it even worth my time any more?

There is P2Pool and Pushpool being the two options to get your own pool running.

These provide the backend services, the GUI must be built by yourself with any features you may wish to include.

The former is almost unused at this time, although considered to be more resilent to attacks (such as DDOS)

If you were to consider running a pool the requirement of a very high bandwidth server is needed as it consists of using a LOT of traffic (depending where your located this may be VERY difficult to find)

Building a user base may be difficult but with merged mining it may increase profit for running such an enterprise.


Who do i see the commissions taken by miners? I'm a bit confused by the commissions. My understanding is there should be none in Bitcoin.

But a friend of mine told me miners get a cut. What does this mean? I want to learn how much commission I pay to the miners. Could you please tell it in detail and tell me where I can see it?

From Transaction fees on the Bitcoin wiki:

  The transaction fee is processed by and received by the bitcoin miner. When a new bitcoin block is generated with a successful hash, the information for all of the transactions is included with the block and all transaction fees are collected by that user creating the block, who is free to assign those fees to himself.

So yes, the fee is collected by the miner of the discovered block. If you look to a random block on the blockchain site you see that the fees are 0.03334571 BTC (in that specific block).

The transaction fee you pay could be different depending on which wallet software you use. For example the fee from multibit is 0.0001 BTC. You can also pay no fees, but then there is a chance that your transaction takes a lot of blocks to be included in the blockchain.


Is the getnewaddress command available before synchronization is completed? Can I expect the getnewaddress command to work before my bitcoind has finished synchronizing?

Yes, getnewaddress works independent of the downloading and indexing of your blockchain database.

The command will generate a new private key in your wallet.dat file. This file is independent of the state of your blockchain files.

Your new address is derived from the freshly generated private key.

Your client will need to be synced to see incoming transactions (deposits) on your address reflected in your balance.


What is the most advanced technology for anonymous transactions? What is the most advanced technology for anonymous transactions feature?

I’ve heard about zerocash and coinjoin but which one of them has a technological edge? Are any of these technologies really capable of providing the anonymous transactions feature as opposed to pseudo anonymity?

CoinShuffle has improved upon CoinJoin, but active mixing it not advanced compared to the solutions below.

ZeroCash and CryptoNote have advanced significantly since you asked this question. CryptoNote has been advanced by Monero research lab and has plans to add Confidential Transactions (RingCT). ZeroCash has made advancements in decreasing the size of transactions and the design of the "trusted setup" process described below.

https://lab.getmonero.org/pubs/MRL-0005.pdf

https://www.reddit.com/r/Monero/comments/41vg68/monero_vs_zcash_eli5_fundamental_differences/

https://z.cash/blog/snark-parameters.html

https://blog.okturtles.com/2016/03/the-zcash-catch/

Monero is also teaming up with I2P developers right now on Kovri, an I2P C++ router that will help protect metadata including IP addresses:
https://github.com/monero-project/kovri


where is difficulty target inserted? All miners at any time must have a consensus on the "difficulty target" to be able to achieve the correct nonce (as answer of proof-of-work).

Assume that the target has been updated (it means that 2016 blocks has been discovered) now, the question is "who" calculates this new target such that every miner achieves the same target that is needed to solve proof-of-work of the next block?

Is it true that it's not possible for an attacker to manipulate the target value to trick the other miners such that they achieve a wrong nonce for proof-of-work?

In other words, how can every miner know that the target value has been changed?

--> Is it by the block header of the last block in the Blockchain?

If so, is this approach accountable to achieve a unique target?

Assume 2016 blocks have been discovered and the target must be updated using the following equation:

time = (difficulty x 2^32) / hashing power of the network

Is it right? It's unclear to me how to determine the value for hashing power of the network.

P.S. Assume also an adversary solves the proof-of-work and then generates a new block but forges the block's times-stamp to trick the network at the time of updating target. Since the target will be updated using the blocks' time-stamp.

Assuming the miner as an up-to-date version of the blockchain, he can compute the difficulty from the data about the previous blocks. An explanation of how the difficulty is computed can be found in this other answer.

Given a specific chain, indeed, the computation of the difficulty always gives the same result. Every miner may compute this new difficulty by himself and the result will be the same since the computation is based on the 2016 blocks slot. There is no need to know the hashrate of the network, it is enough to know how much time it was needed to generate the 2016 blocks by looking at their timestamps.

Additionally, block headers also encode the target threshold through the nBits field. The reason can be found in this answer.

PS: In order for a block to be considered valid, its timestamp must also be valid, that is, it must be:

  greater than the median timestamp of previous 11 blocks, and less than
  the network-adjusted time + 2 hours.

So the effects of the "attack" are very constrained.


What is the point of SIGHASH_NONE? If I understand correctly, SIGHASH_NONE in the output input signature means that spender of this output doesn't sign his outputs. But doesn't that mean that the spending transaction is by design insecure? E.g. a malicious miner could switch the outputs to his addresses and put a modified version in the block.

Am I missing something? What is SIGHASH_NONE intended for?

Edit: Now I understand why I was confused! The SIGHASH_NONE is in the input signature, not in the output. Somehow I thought it's an attribute of the output, and it didn't make sense to me why the previous spender would be able to decide how the next transaction should be signed.

The bitcoin wiki OP_CHECKSIG page describes the behaviour of SIGHASH_NONE like this:

  The output of txCopy is set to a vector of zero size.

  All other inputs aside from the current input in txCopy have their
  nSequence index set to zero

  Think of this as "sign none of the outputs-- I don't care where the
  bitcoins go."

The contracts page also talks about SIGHASH_NONE:

  SIGHASH_NONE: The outputs are not signed and can be anything. Use this
  to indicate "I agree to put my money in, as long as everyone puts
  their money in, but I don't care what's done with the output". This
  mode allows others to update the transaction by changing their inputs
  sequence numbers.

If I sign a transaction where all the inputs are SIGHASH_NONE then a miner can change the outputs to whatever he likes.  If any of the inputs are SIGHASH_ALL then the miner can't change the outputs.  So a group of people can each sign their own SIGHASH_NONE input to a transaction, send them privately to the coordinator who signs his own SIGHASH_ALL input before publishing the transaction.  That way the individual contributors don't need to know the destination address so long as they trust the coordinator.


Can you transfer NXT assets directly to another nxt account? I purchased a few mgwBTC (multigateway bitcoins) and I want to be able to transfer them to my other account. Is this possible? Can someone take a snapshot of how this is done? thanks.

This is possible.

In default NRS client this can be done via [Asset Exchange] -> [My Assets] -> [Transfer].


How do I reclaim misplaced bitcoins? I was given an address to send bitcoins to & it appears the address change but now the deposit did not occur at the address intended & my Source Bitcoin wallet company states there's nothing they can do.  The destination company shows no record of the transaction.  This all happened when the Destination website was implementing a new program & having issues with taking deposits.

Can I get the lost Bitcoins if I know the Send from, Send to Addresses, the Block & Hash numbers?

Thanks,

If what you are saying is true it sounds like the company you are working with is at fault. They provided you with a deposit address, then implemented a change to the site, and now having issues with deposits. It will be hard to prove, but it sounds like they misplaced your funds. Your only option is working with them to offer you a refund as there is no way to reverse a Bitcoin transaction.


How has the problem of waiting for confirmations been eradicated? On the bitcointalk forum, evoorhees wrote:

  For a long time people said the "waiting for six confirmations" was a
  significant drawback, but most people understand that problem has been
  almost entirely eradicated.

and Revalin replied:

  as you mentioned we have an elegant potential solution to the
  confirmation delays, though I haven't seen any moves to actually
  implement it yet

How has the problem of waiting for confirmations been eradicated?  What is this elegant potential solution?  The first quote seems to imply the problem is already solved, whereas the 2nd says the solution hasn't been implemented yet.  Which is it?

Perhaps they are referring to the green address technique.  Some exchanges support this now:

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

Or they might be referring to the ability to protect against a race attack by listening to many nodes so as to learn of any double spend race attack attempts.  That doesn't eliminate the risk entirely but helps to bring it to a level that the merchant can manage.  There has been progress towards doing this listening with varying results ( http://www.transactionradar.com and http://blockchain.info/double-spends ) but there is no service built yet for merchants that provides transaction monitoring and alerting when double spend attempts are detected:

https://bitcoin.stackexchange.com/a/2625/153


Where can I report bitcoin scammers? The following bitcoin addresses are involved in FRAUD...

[snip]

Where can I report bitcoin scammers?

In general bitcoin means: "if you don't own the keys, you don't own the coins" (for example web wallets or exchanges) and "if you hand over the keys (have them stolen) or sign a transaction to the wrong destination (buy a cheap iPhone from Nigeria) then you just learned a lesson the hard way".

Having said that, Bitcoin does offer some unique protection methods like multisignature and wallet backups.

Depending on the situation and the kind of fraud, you might be able to contact your local law enforcement or FBI or equivalent.


I sent the BTC to a wrong address I was trying to transact BTC and the end receiver gave me an address. I couldn't afford the amount due to spreads on transactions so we lowered the amount, made a new address and i sent it but I accidentally sent it to the first address and not the second. What can I do? The BTC already left my account and I'm sure it won't reach theirs because the transaction was declined.

The only thing you can do is ask the owner of the address you sent the bitcoin to to send the bitcoin back to you. There is no such thing as a "declined" transaction in bitcoin; transactions that get included in a block are final.


Can I first open an account on an exchange then later on transfer to my wallet? I'd like, at one point, to create myself a bitcoin wallet using an offline computer and then store that wallet in a safe (either printed, encrypted, on a sheet of paper or encrypted on a USB stick). However that requires quite some time and some skills, which I don't have yet (related to bitcoin -- when it comes to Linux / boot-only CDs/DVDs and PKCS etc. there's no problem: I'm a long time Linux user and I do know a bit about crypto stuff).

Meanwhile I may want to already buy bitcoins online (say if a crash happens I may decide to buy some).

If I open an account on, say, mtgox, can I immediately buy bitcoins and if I can, can I then transfer the very bitcoins I just bought to my own personal wallet (the one that I'll generate later on offline and put its private part in a safe).

As a side-question: where are the bitcoins that I buy on mtgox stored? In a wallet belonging to mtgox?

If I open an account on, say, mtgox, can I immediately buy bitcoins and if I can, can I then transfer the very bitcoins I just bought to my own personal wallet (the one that I'll generate later on offline and put its private part in a safe).

Yes, that's a basic Bitcoin withdrawal.

  As a side-question: where are the bitcoins that I buy on mtgox stored? In a wallet belonging to mtgox?

Yes, exactly.


Why mining pool has different connections ports for different difficulty In the documentation of mining pool I found following

Connect Details:

(Difficulty 5 - GPU)    stratum+tcp://stratum.btcprivate.org:3032

(Difficulty 10 - GPU Farm)  stratum+tcp://stratum.btcprivate.org:3036

(Difficulty 15 - Nicehash)  stratum+tcp://stratum.btcprivate.org:3096

I see that only differents between difficulty. I have a farm of 6 card which connection should I use and why?

Any ideas? Thanks!

I feel sorry for you that no one had replied, so i'm gonna join in and try to think together with you, cause i was wondering the same.
Out of pure guessing, i think that when you have a mining farm, you mine a block very fast.
When you are finished with the block, the server needs to affirm it and send you a new job, which makes a small delay. This delay can decrease the profits over time.
Now the next question is, why isn't everyone using the highest difficulty? I'm not so sure about this, but i believe it has something to do with having to finish a block before you log off or your software crashes. I don't know what happens to a block that gets half mined. I think the block has to be mined in a whole for it to be confirmed.
When you mine with low difficulty, the block is split in pieces so everyone has a part they can complete in a block.
Hope this helped. It's probably not the correct answer, but it sounds obvious.
This was my first post btw. lel hah, never sell, HODL!


How to decode very huge (!) raw transactions? I'm parsing the blockchain to extract certain information I need for a script.

One thing I do is parsing transactions. What I do is:

getrawtransaction <tx>
decoderawtransaction <rawtx>

This works on most of the transactions (>99%) but some are very huge and the bitcoin client cant handle them. I wonder what else can handle them if not bitcoind itself. The error I get in bitcoind:

TX decode failed (code -22)

Thats because it cant accept very long arguments. My ruby script dies with

Arguement list too long - (Errno::E2BIG)

How to decode such transactions? Here are some examples:

2f50fdf7adbf58e91d738869948f4b191eb3cafa016c6df7e9182c06e4513852
e7229316b5a5b1f53382ec5a526b842dda2ca96bc891cd02d397a52c4a84dba0
540359af779a510828f0afd3c88562b62c37d0e4eeccb08104a167a3600f7956

Thanks.

Update: I just tried to paste the rawtransaction to this online parser and this one decodes that transaction without any problems. How is that possible programmatically?

try this:

bitcoind getrawtransaction 2f50fdf7adbf58e91d738869948f4b191eb3cafa016c6df7e9182c06e4513852 1

note the 1 at the end, which instructs bitcoind to operate in verbose mode.


How exactly does namecoin work on "low" level? I know a bit about "low level" of bitcoin (transactions, blockchaon, script, network instructions...).

Now I want to read something about namecoin and all the online sources are very vague.

So, I have a question: how does namecoin work on the "low level"? how does it actually save the "domain"? how does it expire it? how can I move the domain to someone else?

I understand that it does it somehow by key value pairs stored in blockchain somehow - where exactly?

I'm not an expert on Namecoin, but from what I understand, Namecoin works by introducing a few new types of transactions to the Bitcoin formula used for handling domain registration. After that you just need some mechanism of extracting the domain names from the blockchain and that should be enough for Namecoin to work.


Can a Ripple Transaction Sequence have gaps? I am wondering whether a Ripple Transaction with a Sequence number that ships over a few numbers from the previous Sequence number be accepted as a valid transaction in the Ripple Network?

For example, if I have one Payment Tx with Sequence 123, and then want to create another transaction with a Sequence 200, will it go through?

Also, I understand that the transaction Sequence numbers cannot be descending, so I couldn't submit a Tx with a Sequence of 100. Is this correct?

For a transaction to be processed it must use the very next available sequence number (as returned by account_info).
If an otherwise valid signed transaction has a sequence number too small (matching a previously used sequence number), then the transaction is guaranteed to never be valid and will produce an error and should be discarded by servers receiving it.
If an otherwise valid signed transaction uses a sequence number (currently) too high, then the transaction is not currently valid and will produce an error but the transaction may become valid (and a server may retain and automatically attempt to apply the transaction at that time). As well anything that has seen the signed transaction could replay it once the "missing" sequence numbers on the account are used. Such transactions are referred to as in-flight and their outcome is undetermined until either the account has a transaction with that sequence number included in a fully validated ledger (possibly a No-OP transaction just to consume/advance the sequence number) or a fully validated ledger with a ledger sequence at least as high as the LastLedgerSequence specified in the signed transaction is seen.
From https://ripple.com/wiki/Transactions#Use_as_a_NOP:

When multiple transactions are yet to be finalized (known to be in-flight), and a local error occurs such that there are following transactions in-flight, the following transactions will temporarily fail until the sequence number used by the local failure is consumed. A transaction is in-flight if it hasn't been included in a fully-validated ledger, but also isn't guaranteed not to be.
…
The in-flight transactions may be later replayed by anyone who has them. It is important for predictability and reliability to consume the sequence number of the bad transaction and replay the in-flight transactions until they are finalized.

And from https://ripple.com/wiki/Transactions#Basic_Transaction_Format:

LastLedgerSequence (optional)
Highest valid ledger number that a transaction can appear in. If this is specified, and the transaction is not included by the time the ledger reaches the specified ledger sequence number, then the transaction is considered to have failed and will no longer be valid.

So specificly,

For example, if I have one Payment Tx with Sequence 123, and then want to create another transaction with a Sequence 200, will it go through?

Not until transactions with sequence 124 through 199 go through. Until then servers will report a "missing sequence number" error on such transactions. Until some transaction with sequence 200 is applied to your account you cannot know that something somewhere won't re-submit your "old" signed payment transaction the moment they see your sequence 199 transaction (i.e. even though you get an error the transaction could be applied later).

Also, I understand that the transaction Sequence numbers cannot be descending, so I couldn't submit a Tx with a Sequence of 100.

Such a transaction will always get a "past sequence number" error and never be valid.


How can you tell if you're at the end of an incomplete blk*.dat file? I've been parsing the blk*.dat files using fread().

Let's say this is the basic structure of a blk.dat file:

[magicbyte] [blockheader] [transactions]
[magicbyte] [blockheader] [transactions]
...
[magicbyte] [blockheader] [transactions]

When parsing, I start by reading the first 4 bytes.

If it's equal to D9B4BEF9 (magicbyte), I gather the [blockheader] and [transactions] data.
If I get NULL, I assume that I've reached the end of the blk.dat file and move on to the next one (if there is one).
If I get 00000000, I assume that the blk.dat file is incomplete, and I keep re-reading it.

Is this a reliable way to parse the blk.dat files? The 00000000 check is what I'm most unsure of.

It is perfectly possible that *.blk files contains gaps of zeroes, or even partially written blocks. In modern versions (since 0.10 or so) this won't happen during normal operations, but it can't be prevented in case of abnormal shutdown (crash, out of disk space, ...).

If you want to be sure, you need to scan the entire file for potential blocks (they'll always start with a magic + length descriptor, so you can quickly skip many things). That, or use the getblock RPC instead, which uses Bitcoin Core's prebuilt index.


Bitcoin core: why does the wallet file contain transactions? I really don't understand why the strong coupling here.  I mean, whenever I go and make a backup, if there's a new transaction involved, the hash of the backup changes.

I wonder why this is.  And furthermore, wouldn't it be 'better' (or what is lost?) by having a loosely-coupled transactions file that wouldn't change a bit after a transaction?

You can't spend bitcoins without having the transactions in which you received the bitcoins. Bitcoin Core also needs to actually know about your transactions to display them with RPC commands like listtransactions. Reconstructing this data from the block chain is extremely slow. Try running Bitcoin with the -rescan switch, which searches the entire block chain for wallet transactions: it often takes 15 minutes or more. Sites like blockchain.info can only get info about addresses and transactions quickly because they maintain huge indexes of addresses/transactions, but Bitcoin Core does not maintain such indexes. Also, it is very likely that Bitcoin Core will eventually start throwing away most block chain data to save disk space. If this happens, then you will be unable to recover your wallet transactions without downloading a big chunk of the block chain again. So saving these transactions is in fact pretty important, and they should be backed up along with your keys in wallet.dat.


Can I recover btc sent to an incorrect address? (electrum) So I have an electrum wallet and I sent about $150 in btc to it. That all worked but when I tried to send it to another address, it didn't go through. Looking at the transaction, the btc went to an address similar (3F***...) to the one I entered, but not exactly the same (3D***...). I realize now that I had a malware copy of electrum, but I've taken care of that. What I'm worried about is recovering the funds sent to that address. When I look at it on a blockchain explorer, I can see that it started at 0, I sent 0.009 btc to it, and nothing has been done with it since. I read somewhere something about "restoring" a read-only wallet from the transaction ID and then getting the address' private key from the send address and sweeping it into my main wallet, but I haven't figured out how to do that with electrum yet. Does anybody know how to do that or something else to get those funds back?

Can I recover btc sent to an incorrect address?

Confirmed Bitcoin transactions cannot be cancelled, reversed, undone or recovered.
The only person who can give you your money back is the recipient, by creating a new transaction to send the same amount back to you.

I realize now that I had a malware copy of electrum

If the initial mishap was due to a malware copy of Electrum, there is no chance the criminals, who created that, would choose to give back money they stole from you.

I read somewhere something...

The things you describe won't work.

something else to get those funds back?

Nothing. Anyone who says otherwise is trying to scam you.


How to calculate the size of the blockchain? I want to find the size of the blockchain data. I've been using this Linux command:

du --exclude=index /home/me/.bitcoin/blocks/

Is this the most accurate way to do it? And does dividing the result by 1024/1024 give the size of the blockchain in GBs?

  Note: The --exclude=index part excludes the blocks/index/ subfolder, which I've heard is extra metadata used for levelDB to make it faster to search through the blockchain. I just want to know the size of the blockchain data only, so does it make sense to omit this?

du rounds up file sizes to the next multiple of your filesystem's block size.  It also includes the sizes of directories.  So this will give you a (slight) overestimate.

You really just want to add up the total sizes of all the blk*.dat files.  You can get that with

du -c --apparent-size /home/me/.bitcoin/blocks/blk*.dat

You can divide this number by 1000000000 to get GB, or by 1024*1024*1024 to get GiB (note the distinction).

Note that this will still include "orphan" blocks that you downloaded and stored, but that are not part of the main block chain.  There isn't any easy way to exclude those, as far as I know.


What features of scrypt() make Tenebrix GPU-resistant? There's a fork of Bitcoin called Tenebrix that is claiming to be CPU-friendly and GPU-resistant (with regard to mining). They say that this is because they're using scrypt instead of SHA256. From what I'm reading, scrypt seems similar to bcrypt or PBKDF2 in that it's just a multi-round scheme. If it's simply more rounds of something that's already faster on GPU than CPU then wouldn't N rounds still be faster on GPU than CPU or am I missing something inherent to scrypt that ruins GPU efficiency?

The scrypt() algorithm has at its core a routine called ROMmix.  Basically, it defines

  V(1) = hash(message)
  V(2) = hash(hash(message))
  V(3) = hash(hash(hash(message)))
  ...

and it calculates

  V(V(V(V(...(message))))

Since computing V(n+1) requires computing V(n) first, the most efficient way to do this is to cache all of the previously-computed values.  Once you've generated a large enough table, the V(V(V(...))) is just a bunch of lookups.

Caching all the previously computed values requires lots of memory, and since each lookup depends on the previous one it's sensitive to memory latency (although if you're mining you can work on several blocks in parallel and pipeline the requests to get around this).

GPUs can perform far more integer operations per second than a normal CPU, but have roughly the same memory bandwidth/latency as a CPU.  So an algorithm that is memory-dominated should "level the playing field" between CPUs and GPUs.

I still don't understand why the Tenebrix folks consider this to be an important goal.  It just "equalizes" GPUs and CPUs, but you can still build custom hardware that does scrypt() much faster and cheaper than a CPU.  So it's just going from "GPUs are best" to "custom printed circuit boards covered in memory buses are best".  Nobody's been able to explain why this change is worth all the trouble.


What is the difference between chainstate and blocks folder? Is the blocks and chainstate folder store the same blocks data ?

How can we read those data using code and display that on the web frontend like the blockchain explorer websites

Is the blocks and chainstate folder store the same blocks data ?

No, the blocks directory contains the actual blocks. The chainstate directory contains the state as of the latest block (in simplified terms, it stores every spendable coin, who owns it, and how much it's worth).

  How can we read those data using code and display that on the web frontend like the blockchain explorer websites

No, you need transaction and address indexes for that. Bitcoin Core is not designed to provide those.


Implications of transfering to different blockchain addresses that belongs to same person with same wallet Can you send from one blockchain wallet (mine) to different addresses of mine? And what are the implications?

If you use any HD wallet on your computer, no one besides you knows that these addresses belong to the same person or even belong to the same wallet. Spying on your computer and analysis on the blockchain being excluded, of course.

Therefore, these transactions go through just like you were sending money to someone else.

If you use an online service, the service provider knows that these addresses belong to the same account. What they do in such a case is any service's decision but most will probably treat it like any other transaction. blockchain.info seems to be no exception: https://bitcointalk.org/index.php?topic=95809.0

Everyone else will just see that money has been moved from one address to another.

This, of course, doesn't always apply. There are exchanges (like bitcoin.de) which allow transfer from the exchange to an address chosen by the user but which are not meant for normal payments. They don't store the funds in addresses specific to a user. When funds are moved away from the exchange, the requests from different users to do so are accumulated for some time (which is why it takes more time to move funds away from such an exchange than would be desirable for payments) and then processed in a single transaction. Such services likely won't transfer any money through the blockchain if you make a transfer from your account to your account's deposit address.


How to write OP_CHECKMULTISIG for the following 1-of-2 multisig P2SH script OP_IF
  OP_SHA256
  <hash of secret>
  OP_EQUALVERIFY
  <pubKey of swap>
  OP_CHECKSIG
OP_ELSE
  <relative locktime>
  OP_CHECKSEQUENCEVERIFY
  OP_DROP
  <pubKey of refund>
  OP_CHECKSIG
OP_ENDIF

Actual code which i am using for the above script is

const script = this.app.env.bitcoin.script.compile([
      hashOpcode,
      Buffer.from(secretHash, "hex"),
      this.app.env.bitcoin.opcodes.OP_EQUALVERIFY,
     Buffer.from(recipientPublicKey, "hex"),
      this.app.env.bitcoin.opcodes.OP_EQUAL,
      this.app.env.bitcoin.opcodes.OP_IF,
      Buffer.from(recipientPublicKey, "hex"),
      this.app.env.bitcoin.opcodes.OP_CHECKSIG,
     this.app.env.bitcoin.opcodes.OP_ELSE,
    this.app.env.bitcoin.script.number.encode(lockTime),
      this.app.env.bitcoin.opcodes.OP_CHECKSEQUENCEVERIFY,
      this.app.env.bitcoin.opcodes.OP_DROP,
      Buffer.from(ownerPublicKey, "hex"),
      this.app.env.bitcoin.opcodes.OP_CHECKSIG,
      this.app.env.bitcoin.opcodes.OP_ENDIF
    ]);

As we see that this script has just one  public key(pubKey of swap) to sign with. But i want to sign it with two public keys.
I searched for it but found nothing, can anybody guide me?

I just want to follow this pattern

 OP_0 [Sig 1] OP_1 [PK 1][PK 2] OP_2 OP_CHECKMULTISIG

From what I understand from your question (correct me if I'm wrong), you want to have a script that in the OP_IF part pays to 1-of-2 public keys. You could try the below script:

OP_IF
  OP_SHA256
  OP_DATA (0x20)
  <hash of secret>
  OP_EQUALVERIFY
  OP_1
  OP_DATA (0x21)
  <pubKey of swap1>
  OP_DATA (0x21)
  <pubkey of swap2>
  OP_2
  OP_CHECKMULTISIG
OP_ELSE
  OP_DATA (size of relative_locktime)
  <relative locktime>
  OP_CHECKSEQUENCEVERIFY
  OP_DROP
  OP_DATA (0x21)
  <pubKey of refund>
  OP_CHECKSIG
OP_ENDIF

You could spend this script with: <0> <sig1> <secret> 1


what is the size of information contained in one bitcoin? Every information stored digitally requires some space.
For example :
a text file (2-3 Kilobytes)
a song (7-8 megabytes depending upon bit rate)
a phone picture (5-6 megabytes)
\and so on..........
1 bitcoin = 100000000 sats
100 sats = 1 bit
1 bitcoin = 1000000 BITS
Assuming bit is smallest unit of computer memory, hence using standard conversion reference as below:-
/ 8 bits = 1 byte
/ 1000 bytes = 1 kb
/ 1000 kb = 1 mb
coming back to 1 bitcoin which equals 1000000 BITS.
1000000/8 = 125000 bytes
125000/1000 = 125 kb
125/1000 = 0.125 mb
so my question which I assume is technically incorrect, but hypothetically if I ask that I want to store one bitcoin in my pendrive and how much free space do I need to store that information? What would you say, am i right here in solving the numbers? //0.125 mb
(information = one bitcoin)
Thanks to whoever may answer my hypothetical (may be wrong) question.
-Praneet Jain

I want to store one bitcoin in my pendrive and how much free space do I need to store that information?

TL;DR: 32 bytes.

Bitcoins are not pieces of data, Bitcoin is a unit of measure.
To store any amount of Bitcoin in a pendrive you just store a private-key on the pendrive. That is a 256-bit number. It is exactly the same size for 0 Bitcoin, 0.00001 Bitcoin, 1 Bitcoin or for 21,000,000 Bitcoin.
To store the full history, since the beginning of time, of transfers of control of money denominated in Bitcoin, you need about 300GB and growing. But this is public information, you don't need to store it yourself as you can always obtain a copy from other Bitcoin nodes. This data is a journal of transactions called the blockchain.
Of course, you can't really point to any particular place or thing and say Bitcoin are stored there. That isn't really what is happening.

The 32 bytes (256 bits) is the smallest amount of space you will need. If you want to represent that number as printable ASCII or Unicode characters you'll need to choose an encoding scheme like Hex or Base58 etc which will increase the storage requirements.
You can store 21,000,000 Bitcoins in the space needed to store a set of letters and numerals the same length as this example:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262
For convenience you will most likely install a file system such as FAT on your pen-drive. The file system will have overheads and a minimum allocation unit.

1 bitcoin = 100000000 sats 100 sats = 1 bit

Those "bits" are a completely different thing to the 8 bits in a byte.

In December 2017, BIP-176 also proposed "Bits" be used as a standard term for 100 (one hundred) satoshis or 1/1,000,000 (one one-millionth) of a bitcoin.

That's nothing to do with the units of computer storage.
Just like its nothing to do with the "bits" that horse-riders put into the mouths of horses.

not 100 Satoshi, and you cannot store 8 of these in a byte


Do Coinbase, Coinbase Pro, Robinhood, Gemini, GBTC count as Web Wallet? According to a 99Bitcoins video and some writing, Web Wallets are to be avoided because they are not secure.
Does that mean when you buy bitcoins on Robinhood, Coinbase, Coinbase Pro, Gemini, or even the trust GBTC, they are all Web Wallets?
I think Robinhood doesn't even allow us to move the private keys to our wallet, while Coinbase, Coinbase Pro, and Gemini do.
GBTC, I am not sure: if they store the bitcoins "cold" in their trust, then maybe it is not as insecure? Robinhood also said they store a good portion of their bitcoins "cold", and I suppose they only move a small portion to their platform to satisfy the trading or the exchange-for-cash?
So should we consider Robinhood, Coinbase, Coinbase Pro, Gemini, or GBTC Web Wallets and avoid using them for too long but should transfer the private keys into our own wallets?

Does that mean when you buy bitcoins on Robinhood, Coinbase, Coinbase Pro, Gemini, or even the trust GBTC, they are all Web Wallets?

You can call them exchanges or web wallets but in both cases you don't hold the private keys and just looking at numbers based on the database used by website/app until you withdraw bitcoin to an address for which you own the private key.
GBTC is completely different from others but still you don't own any bitcoin private keys and you can read more about it here: https://grayscale.co/faq/

So should we consider Robinhood, Coinbase, Coinbase Pro, Gemini, or GBTC Web Wallets and avoid using them for too long but should transfer the private keys into our own wallets?

Keep only the funds that you need for trading on exchanges or willing to risk in case exchange gets hacked, shutdown etc. Withdraw everything else to your address for which you own the private keys.


How do I check if a particular address is 'owned' by a loaded wallet in Bitcoin Core? I'm interested in knowing if there is an rpc method to determine whether or not an address was generated, and thus is owned by, a loaded Bitcoin Core wallet.
I have a few addresses that I generated a month or so ago using getnewaddress. These have been stored in a relatively secure encrypted location. In my paranoia, I am reluctant to now use the addresses to receive funds in the wallet, since as far as I know there is no benefit in doing so (besides increasing the gap between used addresses - but I am in no way approaching any gap limit, so this is irrelevant) over simply generating a new address which I can be sure is indeed owned by the loaded wallet. That said, I am curious to know if this is possible (since it may in some cases be useful, if sufficiently trustworthy - which if it were an rpc method for a trusted Bitcoin Corre instance, I'd assume to be the case) and after searching bitcoin.org RPC docs and on here, I have not been able to find an answer to this yet.
Note - I am aware of the validateaddress rpc, but as far as I understand, this only validates whether or not a Bitcoin address is valid, not whether it is associated with the loaded (or any particular) wallet.

You want the getaddressinfo wallet RPC. It will tell you whether an address is considers "yours", along with various other information like whether you have the keys, whether it's a payment address or change, what its label is, and how it was derived.


After a sleeping client comes online again which technique it uses to find the last common ancestor in a blockchain? I have a Bitcoin client running on my PC and I turn it off. When I turn it on again how does it find the last common block in the blockchain so that it knows which blocks it should obtain?

Your node will just ask its peers for blocks. It actually does the same thing it does for the initial sync. It starts with what it currently considers to be the chain tip (in initial sync, that's the genesis block). From there, it connects to other nodes and asks those nodes for more block headers starting with the block at its own chain tip. Typically, that block will be part of the current best blockchain, so the other nodes will just give further headers and then blocks from your node's tip.

If there has been a fork (e.g. the tip is a stale block) and the other nodes happen to know your node's current tip, then those other nodes will find the common ancestor between that block and their current tip. Once they find that common ancestor, they send the rest of the blockchain from that common ancestor. The important thing here is that the other nodes find the common ancestor, not your node.

If the other nodes don't know your node's current tip, your node will also send other, older block hashes in its headers request. So the other nodes should be able to find a common ancestor given those other headers too.


How to create a new genesis block using CreateGenesisBlock() function I'm trying to create a new genesis block, you know for science.
I saw a lot of write ups online but most of them seem kinda outdated.
I found the function CreateGenesisBlock() in the source code.

    genesis = CreateGenesisBlock(1317972665, 1337, 0x1e0ffff0, 1, 100 * COIN);

    std::cout<< genesis.GetHash().ToString().c_str() << std::endl;
    std::cout<< genesis.hashMerkleRoot.ToString().c_str() << std::endl;

    consensus.hashGenesisBlock = genesis.GetHash();

This is my current code.
When running my coind it fails with ERROR: ReadBlockFromDisk: Errors in block header at CBlockDiskPos(nFile=0, nPos=8)

From my current research it seem the genesis block failed the PoW criteria somehow.

I thought about putting the CreateGenesisBlock in a loop to generate blocks until I found a valid one but I'm not sure how to check if the block is valid.
Can someone gimme a tip?

The genesis block still must meet the proof of work requirements that other blocks must also meet. So you must actually mine the genesis block. To do this, you need to put CreateGenesisBlock in a while loop and just keep incrementing the nonce, and if necessary, increment an extranonce in the coinbase transaction.

To check that it has a valid proof of work, use the CheckProofOfWork() function (grep for it and you can figure out what arguments it takes).


Is the Lightning Network sufficiently secure and well tested for wumbo channels? Has the Lightning Network reached a level of security and maturity where I can open wumbo channels (channels over the previous 0.1677 BTC limit) and be reasonably confident that I won't lose funds or have my funds locked up for long periods?

Lightning is great but one can't say it is battle-tested. If script
kids would be interested, they could take down those shiny new 5 BTC
wumbo channels with negligible cost and no effort at all.
The underlying issue is that a channel cannot hold more than 483 HTLCs
at a time, regardless of the channel capacity. Sending 483
micro-payments to yourself and holding on to the HTLCs is enough to
incapacitate a channel for up to two weeks.
By utilizing the max route length to add loops, each payment can
consume up to 9 HTLC slots on the target channel. If the script kid is
lucky, they only need to send 54 payments to get it done. A single
tiny channel takes double-digit amounts of Bitcoin out of business.
Below is me locking up approximately 5,800,000 satoshis with a
refundable 18 satoshi payment looping five times through three mainnet
channels owned by Bitfinex and OpenNode. For basically as long as I
want. This happened today.

Wanting to become the world's payment system sounds good but we can't
have trivially exploitable vulnerabilities like this. Walk the talk.
Therefore I started a new project called Circuit Breaker: a
firewall for Lightning nodes. The primary goal is to encourage
thinking about this problem with the potential to grow into a
full-fledged Lightning protection system.

This question was answered by Joost Jager on Twitter.


How can the alert system be triggered? Who can do it? Since we established the alert system is included in the official client, I would like to know who can trigger the alert system, and how?

Can this system be spammed (activated 1000s times per second) thus disabling any use of the client? (Because he would get annoying popups all the time)

Just got confirmation that Satoshi passed the signing key to Gavin before he retired, so at present only Gavin (and Satoshi if he ever returns) is able to send out alerts.


How do we know that a certain hash below the target is even possible when mining? If the target hash were artificially low, i.e. 3, how do miners know if there will ever be a nonce that produces such a hash?

For a given block header where the only variable is the nonce, it is trivial to brute force all nonce values and verify if any gives a hash that meets the target.
For the vast majority of block hashes, no nonce value will meet the target in normal difficulty settings (let alone at a target of 3).
Miners get around this by altering other values in the block header, such as the timestamp, block version, merkle root (via altering of the Coinbase transaction and/or set of included transactions).
By the balance of probability, you will eventually find one block header for some combination of the above that meets the target.
The difficulty levels control how likely it is for that block header to be found in ~10 minutes for a given hash rate.
The Bitcoin Wiki elaborates on how the calculation is actually performed to determine this difficulty, along with some example code.


How to find address that holds the balance in Bitcoin Core? I am unable to find the address that holds my balance in Bitcoin Core. All receiving addresses has a balance of 0. But there is a balance in the wallet. How do I find the address that holds that balance?

The listunspent RPC command will provide a list of all unspent outputs in your wallet, along with the addresses.


What are the downsides of integrating accumulators like utreexo to bitcoind? Inspired by the discussion in this question I wonder what would be the downsides of adding accumulators like utreexo (paper at: https://eprint.iacr.org/2019/611.pdf) to bitcoind?

On the positive side it seems like a huge improvement if we don't need to store the history of all transactions but rather rely on merkle proofs.

Utreexo makes it possible to use Bitcoin securely without downloading the full blockchain. Since some prominent Bitcoin Core devs think there are not enough full nodes, I speculate that some may not like the prospect of less full nodes (less decentralization), and further more, more code complexity.

Also, Utreexo is still in development.

Also, since it requires no forks, so there is no pressure to integrate it into Bitcoin Core. With so many alternative wallets, a developer really has little incentive to work with the Core community when he could get it merged into a another wallet (his own :P) with certainty.

Take BIP 157/158 as an example. We all know code review is great, but I speculate that many developers would be discouraged from the amount of effort it takes to get something merged. If you have another wallet, as roasbeef does (btcd), I can't blame him for not wanting to bother with bikeshedding a Core PR for months, leaving it up to Jim Posen to see this through.

I speculate that Utreexo only exists because Tadge realized that the only way to get something like this is by doing it in a way that requires no changes to Core. There have been many UTXO-commitment-related proposals, for example Bram Cohen's proposal, which is arguably way simpler, but was too radical a change. Now the man is starting his own coin.

Learn to just appreciate the fact that Core is getting more and more stable!


Checking signature only vs. P2PKH It is clear to me why it's potentially unsafe to only use a check on == in scriptPubKey. For one, not verifying a signature in the redeem script means that someone could impersonate the redeemer. From the Bitcoin developer guide:

  This lets the pubkey script verify that Bob owns the private key which created the public key.

  Bob’s secp256k1 signature doesn’t just prove Bob controls his private key; it also makes the non-signature-script parts of his transaction tamper-proof so Bob can safely broadcast them over the peer-to-peer network.

Why would it be unsafe to only use a check on V(sigA, pkA, m={txprev_txid, txprev_outid, txprev_scriptPK, tx_scriptPubKey, tx_amount}_skA) == 1? It seems like this is what we're doing in multisig. I.e., have a ScriptSig that consists only of (a) signature(s) instead of sig and pk like in P2PKH.

Why don't we just check signatures instead of checking both pkhash and a signature?

In an input spending a P2PKH output, if you were to only check that the signature is a valid signature with the public key in the input, then an attacker could use their own public key and produce a valid signature and thus a valid transaction under this model. The public key is not retrieved from the output script nor is it provided by the output; rather it is provided in the input. Thus you must ensure that the provided public key is indeed the correct public key, hence the check that it's hash matches the hash provided in the output.

In multisig, the public keys are provided in the input, in addition to the signatures. They are in the redeemScript. To avoid the same issues (of the attacker providing their own public keys), the redeemScript is hashed and the hash is in the output script. There is a comparison there to ensure that the redeemScript is the correct script.

There is an output type where you do just provide a signature. This output type is a script where the public key is in the output so there is no need to provide the public key in the input. Only the signature is needed. This is known as a Pay to Pubkey (P2PK) output. These are not widely used because public keys are large and this makes it harder to give them out.


How to differentiate between mining node and non mining node in bitcoin I am trying to understand how does mining traffic looks from non mining ones?
If I try to discover mining node I believe I can look for nodes which broadcast blocks. Is there someway to know which Peer mined and broadcast the block ?

Thanks for help

Not really.  When a node sends out a block, it doesn't indicate whether it mined the block itself, or whether it's relaying a block received from another node.  The intention is that mining, like other aspects of Bitcoin, can be done anonymously, so the miner has plausible deniability.

If you have a large number of nodes on the network, then you could see which of them received the block first, and the peer who sent it is somewhat more likely to be the actual miner.  Some block explorers do this and report that peer's IP address, marked something like "relayed by".


What does difficulty indicate for litecoin mining? For bitcoin,  it's the inverse of the target that the hash must be less than.  Litecoin uses scrypt instead of SHA256, so I'm unsure what the difficulty indicates.

Litecoin's difficulty means mostly the same thing as it does for bitcoin.  It's the ratio of the maximum target to the current target.

Difficulty within (but not between, for obvious reasons) each can be compared the same way.  A difficulty of 100 means it takes, on average, 100x as many hashes to find a valid block as it does at a difficulty of 1.


No new UpdateTip. Just "Pre-allocating up to position ..." I'm IBD'ing a new testnet node 0.21.0
Why are there long periods of no UpdateTip messages?  I have 10 connected peers.
Excerpt starting at 00:13:
2021-04-05T00:13:17Z UpdateTip: new best=000000000000005b0a40663b50cf4588f8dfd9c18bbbe8696fe2b549c893fbe4 height=1382700 ...
Then there are lots of pre-alloc messages and no UpdateTip messages:
2021-04-05T00:36:32Z ping timeout: 1200.048936s
2021-04-05T00:36:55Z New outbound peer connected: version: 70015, blocks=1969990, peer=737 (full-relay)
2021-04-05T00:39:17Z Pre-allocating up to position 0x7000000 in blk00112.dat
2021-04-05T00:43:15Z Pre-allocating up to position 0x8000000 in blk00112.dat
2021-04-05T00:44:59Z Socks5() connect to 165.231.163.24:18333 failed: general failure
2021-04-05T00:46:22Z Leaving block file 112: CBlockFileInfo(blocks=167, size=133222507, heights=1382791...1383090, time=2018-08-10...2018-08-11)
2021-04-05T00:46:22Z Pre-allocating up to position 0x1000000 in blk00113.dat
2021-04-05T00:47:43Z New outbound peer connected: version: 70016, blocks=1969991, peer=738 (full-relay)
2021-04-05T00:47:46Z Synchronizing blockheaders, height: 1969991 (~100.00%)
2021-04-05T00:49:10Z Pre-allocating up to position 0x2000000 in blk00113.dat
2021-04-05T00:50:18Z Socks5() connect to 2001:19f0:6001:3bf2:5400:2ff:febc:2f63:18333 failed: general failure
2021-04-05T00:51:03Z Pre-allocating up to position 0x3000000 in blk00113.dat
2021-04-05T00:51:43Z ping timeout: 1200.026721s
2021-04-05T00:51:44Z ping timeout: 1200.029607s
2021-04-05T00:51:57Z New outbound peer connected: version: 70015, blocks=1969991, peer=740 (block-relay)
2021-04-05T00:52:50Z Pre-allocating up to position 0x100000 in rev00113.dat

After about 40 minutes (why?), there is a new UpdateTip finally:
 2021-04-05T00:52:50Z UpdateTip: new best=00000000000000c771e3ffe2108fe02768164469d366e2f48c9e8b4ef7eeae54 height=1382701 version=0x20000000 log2_work=71.161934 tx=28150831 date='2018-08-10T05:40:01Z' progress=0.470404 cache=2824.5MiB(20668057txo)
2021-04-05T00:52:50Z UpdateTip: new best=00000000000000ad0e7806e25ae3628c709cbfd1eb100e8b4aeebf326fc603d9 height=1382702 version=0x20000000 log2_work=71.161974 tx=28152664 date='2018-08-10T05:44:22Z' progress=0.470435 cache=2824.6MiB(20668080txo)
I inspected machine health: Very little io-wait, and cpu is quite idle:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0 1523548 477268 133600 5865132    0    0    18    29    4    3  6  0 93  1  0
 4  0 1523548 477836 133600 5866108    0    0     0   580 3894 7616  2  1 91  6  0
 1  2 1523548 477648 133600 5866140    0    0    32   400 3650 6994  2  1 88  9  0
 0  1 1523548 477420 133600 5866140    0    0     0   452 4403 8249  1  2 91  6  0
 1  2 1523548 477696 133600 5866140    0    0     0   700 4414 8394  1  1 92  6  0
 0  1 1523548 477004 133616 5866140    0    0     0  1512 3007 4780  1  1 80 19  0
 2  1 1523548 476420 133616 5866144    0    0     0   460 4536 8690  2  2 92  5  0
 0  1 1523548 475532 133616 5866220    0    0     0   480 4616 9066  1  2 93  4  0
 2  1 1523548 475428 133616 5866220    0    0     0   480 4568 8689  1  2 92  5  0

Quad-core, Intel i7-3740QM CPU @ 2.70GHz. I am using conventional hard disk (platters).
I'm curious what might cause the delay. Reviewed the log and IBD seemed to progress steadily until this time.
I searched here and google but could not find an answer.
Update: I thought the multiple pre-alloc messages was a symptom of an issue. But now I'm thinking that's a red herring, and the real issue might have been instability (or other network issue) in the Testnet network at that time.  A few hours later, I was seeing a steady pace of UpdateTip messages again.

If you're seeing pre-alloc messages but no UpdateTip messages, it means that you're receiving blocks from peers, but not the next block you need.
Bitcoin Core tries to spread downloading of blocks among multiple peers. However, once a block has been requested, it won't get requested again as long as that request is still outstanding with the peer it's already requested from - until that peer goes offline, or the request times out (at which point the peer is disconnected too).
However, validation requires consecutive blocks, eventually. If we've processed all blocks until number N, we need block number N+1 to continue. It's possible that the request for block N+1 was sent to a non-responsive peer, while other blocks (N+2, N+3, ...) are requested from other peers who are responding. Validation won't proceed until N+1 is received. There are some heuristics to detect such straggling peers and disconnect them (you'd see "Peer X is stalling block download" messages when this happens, I believe), but it's not perfect.


F2Pool (along with most today) don't offer share difficulties low enough for CPU mining, in this case the default is 1024. It will take on average one week to mine a single share at this point in time, and it will pay out less than 100th of a Satoshi (0.0000000001 BTC, 0.00000002608 USD) for the CPU time expended. CPU mining has been unprofitable since 2010 as the power costs for doing it are many orders of magnitude higher than the income you can make doing it.


Attach worker to CEX.IO account I have been able to set up basic mining using minerd, and it is happily mining away on GHash.IO. However, it doesn't seem to be attached to my CEX.IO account, even though I am mining with these arguments:

minerd --url stratum+tcp://uk1.ghash.io:3333 --threads 2 --userpass [myusername].worker1:

Can anyone point me in the right direction?

EDIT: The above was mining with my account after all. A refresh rate of 1/day lead me to believe otherwise. Sorry to waste everyone's time!

this work
./minerd --url=stratum+tcp://uk1.ghash.io:3333 -u username.workername -p xxx


How to request a list of blocks using bitcoin-cli? I'm trying to figure out how to use bitcoin-cli effectively to request a list of 50 blocks.

As far as I am aware, bitcoin-cli getblock list  does not work. Also how to best extract information out of the getblock output.

You cannot as there currently no way in Bitcoin Core's RPC to get multiple blocks with one command. You will have to issue multiple getblock commands. If you use a JSON-RPC client programmatically, you can use JSON-RPC's batched requests in order to have to only send one JSON-RPC request to execute multiple RPCs and get the results back in one response.

As for how to extract the information, you will need a JSON parser to extract the information. You can use verbosity level 2 in order to get the transactions decoded as well instead of just their txids.


why multibit doesn't show my BTC version is newest 0.5.12, 0 . I'v send to my multibit some BTC, then I waited for a very long time and it still shows unconfirmed, on blockchain.info shows transaction was finished, so I pressed the button "reset blockchain and transaction", then balance became zero, I waited 6 houres and it's still zero, how long will the sync take?!
in the message said"Synchronised with network." , means sync finished? but balance is still zero?!

It sounds like you are trying the right approach.
There is a support note here:
https://multibit.org/en/help/v0.5/help_support_sentBitcoinToMultibitButTheyNeverArrived.html

You can try it again safely.
Check all the details like the address is what you expect etc.

edit: And if that fails, you might want to try:

1) Exporting the private key (unencrypted)

2) Importing it into a blockchain.info wallet you create. You should then gain access your bitcoin.

If you do have to resort to exporting the private key please post that that is what you have done. (I am the lead dev for MultiBit so would want to follow up on it with you).


GDAX deposit accounts - what happens to addresses that change? I sent a LTC transfer into a GDAX deposit account. I have done this before without any issues.

The transfer appears processing from the exchange I sent it and it still hasn't appeared in the block explorer, however when I check on GDAX, the deposit address changed. I did a test sending a small amount, and after seeing it went through repeated the transfer to the same address with a larger amount.

I cannot stop or modify the transfer out and would like to know what happens to the old GDAX deposit account?

Will the deposit be recognized by GDAX? Has anybody sent litecoin or bitcoin to a deposit account that had changed before sending?

The address changed because you used the old one.

Don't worry, the transfer is valid, and they keep track of the old address. However, for future transfers they want you to use another address. This is beneficial to privacy.


Bitcoin distribution Economies of scale are powerful and Bitcoin growth has been substantial over the past few years. Unfortunately much of the world including those in the 3rd world (many unbanked) who may need it most have yet to embrace Bitcoin.

Could distribuition statistics cause hesitation among later adopters? Some early adopters mined or purchased 10,000+ (even 100,000 in a few cases) BTC when they cost pennies each. Will that be enough to discourage those in the third world who might only be able to afford a fraction of one Bitcoin now?

Even if distribution does bother some people, will the economy of scale Bitcoin already enjoys versus all other cryptocurrencies (with different distribution models) be too much to make any alternative viable?

A lot of people who accumulated thousands of coins in the early days spent them on silly things or cashed out during the 2012 bubble.  Lazlo for example, spent 10,000 bitcoins on two pizzas. Nobody knew that bitcoin would rise to the prices we briefly saw in 2013 or that we have today. The same thing will happen again, people have a price and will very likely sell on the way up thereby distributing their 'cheap' early coins to others; it should all balance out in a decade or two.


About Selling the bitcoins for normal person It's Aashish Sharma from Nepal. I have been mining bitcoins online for a few months. I want to, if I can, sell them online for cash or USD into my PayPal account. I don't know what can I do for few bitcoins. Or can I do normal online shopping with those few coins? Help me out.

In the Philippines we have "coins.ph". I can easily transfer bitcoins to my bitcoin wallet at coins.ph then convert it to my local currency that is available for withdrawal on banks and remittance center. You should look for similar website that supports your local currency


What does it mean for a transaction to be over spent? IIRC, a transaction's inputs add up to its outputs plus the transaction fee. So how would a concept like "over spending" fit in? I saw this in a Bitcoin library I'm maintaning and didn't find this term in the reference literature (Antonopoulos).

As you mentioned, the sum of the value of spent coins (inputs) should be superior or equal to the sum of the value of the created coins (outputs) ; the difference being the miner fee.

This condition is checked by every peer of the P2P network when relaying transactions and blocks containing transactions not respecting that condition will be rejected as part of the consensus rules.

It is therefore not possible to "overspend" by creating more money than what you have ; but there's been one notorious bug where this was proven wrong: the value overflow incident.


How is the hash that is signed calculated? I'm a bit confused about the signature contained in the scriptSig of a transaction. My question is: what do we really sign? Is it the hash of the previous transaction?

scriptSig contians a signature of the concantenation* of the previous transaction's script and the new transaction.  It has to be both because if it were a signature of just the previous transaction, someone could swap the output address in the new transaction and relay the transaction sending the coins to himself!

scriptSig also contains the public key to verify the signature because the previous transaction only has the hash of the public key.  The hash of a public key is an address.

Source: https://en.bitcoin.it/w/images/en/7/70/Bitcoin_OpCheckSig_InDetail.png

* Not really concatenated, it's inserted in the middle.


what is the relationship between the blockchain size and the transaction volume on the network? I'm thinking about the scalability of the system with regard to the transaction volume. Is it possible to predict future blockchain size for a certain future transaction volume? Is the relationship directly proportional?

Are there any estimates compared to traditional fiat currencies transaction volumes?

Well, there are upper per-block size limits (about 500KB per block) based on the currently implemented protocol.  So max levels might be 5x or 10X current levels.

When those levels get hit, then it will be levels of fees that determine transaction volumes, and the many microtransactions seen today will no longer be justifiable.


Where is the location of the private keys of my wallet on my PC? I have searched this forum and the internet for information on the location of the private keys of my wallet on my PC and found no answers.

I am using Microsoft Windows 7 and installed the Bitcoin software from http://bitcoin.org/en/download (At the moment it is version 0.8.2)

The default installation path is C:\Users\username\AppData\Roaming\Bitcoin

In the default installation Bitcoin folder/directory, I can only see the following:

blocks sub-directory
chainstate sub-directory
.lock
db.log
debug.log
peers.dat
wallet.dat

Where are the private keys?


Signature on Bitcoin. What am I doing wrong? I refer to this site How to redeem a basic Tx?

(signing stage) Now we double-SHA256 hash this entire structure, which
yields the hash
9302bda273a887cb40c13e02a50b4071a31fd3aae3ae04021b0b843dd61ad18e

We then create a public/private key pair out of the provided private key.
We sign the hash from step 14 with the private key, which yields the
following DER-encoded signature (this signature will be different in
your case):
30460221009e0339f72c793a89e664a8a932df073962a3f84eda0bd9e02084a6a9567f75aa022100bd9cbaca2e5ec195751efdfac164b76250b1e21302e51ca86dd7ebd7020cdc06
To this signature we append the one-byte hash code type: 01. The
public key is:
0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6

I try to verify whether the message is correct
The message is 9302bda273a887cb40c13e02a50b4071a31fd3aae3ae04021b0b843dd61ad18e,
The public key is mfcSEPR8EkJrpX91YkTJ9iscdAzppJrG9j, and The signature is 30460221009e0339f72c793a89e664a8a932df073962a3f84eda0bd9e02084a6a9567f75aa022100bd9cbaca2e5ec195751efdfac164b76250b1e21302e51ca86dd7ebd7020cdc06
However, when I verify it on http://www.coinig.com/, signature is wrong. Why is it so? Thank you

The signature is actually correct. However something may be going on with the tool, either you are introducing the parameters in an unexpected format or the tool is not properly working (I haven't been able to verify the signature using the tool either).

Here you have some simple code that uses VButerin's Bitcoin tools python library and verifies that the signature is correct:

from bitcoin import ecdsa_tx_verify

unsigned_tx = "0100000001eccf7e3034189b851985d871f91384b8ee357cd47c3024736e5676eb2debb3f2010000001976a914010966776006953d5567439e5e39f86a0d273bee88acffffffff01605af405000000001976a914097072524438d003d23a2f23edb65aae1bb3e46988ac00000000"
sig = "30460221009e0339f72c793a89e664a8a932df073962a3f84eda0bd9e02084a6a9567f75aa022100bd9cbaca2e5ec195751efdfac164b76250b1e21302e51ca86dd7ebd7020cdc0601"  # WITH SIG_FLAG
pk = "0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6"
sig_flag = 1  #SIGHASH_ALL

print ecdsa_tx_verify(unsigned_tx, sig, pk, sig_flag)

That outputs:

True

Notice that unsigned_tx has been built using all the field from Step 13 but the very last one, that corresponds to the hashtype (4 bytes, 01000000). sig corresponds to the signature adding the hashtype (1 byte, 01), and the pk (public key) corresponds to the one given in Step 15.


"bitcoinrpc.authproxy.JSONRPCException: -342: non-JSON HTTP response with '401 Unauthorized' from server" I used the following code to connect to the bitcoin core client and encountered this error:
bitcoinrpc.authproxy.JSONRPCException: -342: non-JSON HTTP response with '401 Unauthorized' from server

My configuration file: bitcoin.conf is written as follows:
Expose the RPC/JSON API
server=1
rpcbind="127.0.0.1"
rpcport=8332
rpcuser="bitcoin"
rpcpassword="J9JkYnPiXWqgRzg3vAA"

May I ask what caused my code to report an error, and how should I solve this problem?

There are many things that can be wrong.  More details are required, like the code you mentioned.
There is a more thorough discussion on this matter here:
https://bitcoin.stackexchange.com/a/106601/113203


Bitcoin automatically diverted to bech32 address I sent bitcoin to an address starting 3Cn using Electrum but the blockchain viewers seem to show that it has gone to an address beginning bc1 as shown in the link below.

Transaction Viewer

How can this happen? Is there a way I can recover the funds?

I'm sorry to be the bearer of bad news: It looks like your funds are gone and the security of your computer is compromised. A quick google suggests that is one of the electrum phishing destination addresses.

You can find more information on the attacks against electrum here: http://electrum-malware.surge.sh/


Blockchain beyond bitcoin etc. - Who is mining? People are praising the blockchain for use in all kinds of environments where a secure transaction history is required, e.g. logistics etc.

My question: Let's say someone sets up a blockchain for logistics transactions - what would be the incentive to provide the proof-of-work, i.e. to mine?

In the Bitcoin blockchain, I receive bitcoins as a reward. But wouldn't a similar kind of reward be required for this non-bitcoin blockchain to work in real life?

If this is the wrong community, please point me to one that is better suited. Also, my question is based on my current understanding of the blockchain technology, so please also let me know if the question does not compute.

These days there's a lot of new systems being shipped - or marketed even before that - that came with 'blockchain' attached somehow. We're not sure how and why someone would set up a blockchain for logistics transactions, to stay on your example. Most of the news about 'adopting blockchain technology' we see on the media fails to explain why they need a blockchan at all - or are afraid to say they will anchor data on Bitcoin or Ethereum chains.

One can design a database with hashes and digital signatures in blockchain's fashion and call that a 'blockchain', without mining. They can even have ming with no reward or token of value, and call that a 'blockchain'. There's no one to stop them.

But the meaning of 'blockchain' as it's used in Bitcoin, is something where mining is hard and needs incentives like block reward to happen. That's the design originally proposed by Satoshi Nakamoto in his solution for the Bizantine Generals Problem.


What changed about coinbase.com to make it a "regulated exchange"? It's all over the news that coinbase "will open the first regulated bitcoin exchange in the U.S.".   But what exactly is the news here?  Hasn't coinbase been serving customers from all across the U.S. for more than a year now?  What is changing?

As the Reddit post linked in your answer points out, the Coinbase that we already knew uses ACH transactions to move money in and out of your account, which makes it not very good for day trading.

Coindesk coverage of the new exchange states that Coinbase previously acted largely as a brokerage for Bitcoin users. A brokerage firm trades securities on behalf of investors. In contrast, an exchange is a market where brokers and dealers meet, with infrastructure to facilitate buying and selling. The Coindesk article goes onto state that Bitcoin will have a full order book, which is a list of interested buyers and sellers for each financial instrument. A matching engine uses the list to determine what trades can be made.

In addition, Coinbase needed money transmitter licenses to operate as an exchange.  They already obtained money transmitter licenses in order to legally operate USD wallets (which is why their USD wallets are not available in all US states), but Bitcoin couldn't hope to operate as a legal exchange in the United States without money transmitter licenses.

Regulations in the United States have required that certain types of Bitcoin businesses have money transmitter licenses, as business attorney Marco Santori explains:

  The Financial Crimes Enforcement Network (“FinCEN”) is the bureau of
  the US Department of the Treasury that enforces federal regulation of
  money services businesses in the United States.

  On March 18, 2013, FinCEN published guidance announcing that it would
  make no distinction between transmitters of government (or “fiat”)
  currency and transmitters of bitcoin, which it now famously referred
  to as a “decentralized convertible virtual currency”, rather than by
  name itself.

  Thus, businesses that transmitted, sold or exchanged bitcoin were now
  Money Services Businesses, specifically “money transmitters”, required
  to register with FinCEN and satisfy ongoing record-keeping and
  reporting requirements. From the perspective of the federal
  government, an entire industry of visionary startups that had not
  already registered, and had no intention of registering, became
  potential criminal enterprises overnight.

He goes on to state that spending Bitcoins on goods / services does not make one a money transmitter, but that transmitting money (fiat money or cryptocurrency) does. In addition, exchanging fiat currency for cryptocurrency, cryptocurrency for fiat currency, or even between different cryptocurrencies makes one a money transmitter in the eyes of the US federal government.


Transactions from Bitcoin-qt wallet not entering the mempool I bought some BTC a few years ago and they've sat in an old Bitcoin-qt wallet (0.8.5) on a USB drive ever since. I'm hoping to transfer them out into Coinbase or something similar, but none of my transactions seem to be entering the mempool. On the wallet, they appear as having left but have been stuck at 0 confirmations for over a week, but if I look the transaction ids up on blockchain.info (9def5314cd193eb375634fbbddb2ff07bb5db9710311b1afe4b0c531db949b57
 and 10239862eb947b6194920045423ac1a1e75c8a9bb7bbd0e87b4c8676a2656457), it says they don't exist, which makes me think that they've not actually gone into the mempool.

The first transaction had no fee associated with it (don't hate on me - I've not actually sent any BTC before, and this was the default on my wallet), which is what I assumed the problem was. But when I tried again it should have had plenty to get confirmation quickly. I've tried using the getrawtransaction command from the console to get the hex and broadcast it using /pushtx: for the first transaction, it says the minimum relay fee wasn't met (fair enough), but for the second it returns "Missing parents for [txid #2 (with fee)] while inserting [txid #1 (without fee)]". This means very little to me. If I check my wallet address on blockchain.info it still has the original sum associated with it.

Apologies if this has been asked before (I have been looking for over a week and haven't found it if so!), but I'm at my wits end and could use some help. I'd be very happy to make a donation to anyone who can help me unlock my BTC as a token of my gratitude.

Thanks in advance!

There should be a file called wallet.dat. It contains your private keys which allow you to send your BTC.

Warning: Before you do anything with the file create at least one backup of it. Do not send, upload or otherwise share the file with anyone. Who ever has this file can spend you UTXO (steal your bitcoin).

Since the transactions both did not propaganda you can safely send them again. There are two ways you could approach this:

Using a new version of bitcoin core

download and install bitcoin core v0.15.0.1
start Bitcoin-qt v0.15.0.1
let the blockchain sync (this might take a while)
stop Bitcoin-Qt, copy your old wallet.dat and replace the new wallet.dat in the bitcoin v0.15 directory, start Bitcoin-Qt
you should be able to send the transaction

Using Electrum to sweep the private key(s)

download and install Electrum
create a new standard wallet and from a new seed
write. down. the. 12. words!
open your Bitcoin-qt v0.8.5
navigate to help > debug window > console
type dumpprivkey [your Address] (repeat multiple times if you have more than one Address)
copy the private key
in Electrum go to Wallet > Private keys > Sweep
paste you private key and click on sweep
Electrum sends the BTC to your Electrum wallet

Both methods should work for you. However since 2. is faster (no blockchain download needed) and you already considered switching to Electrum, this method might be preferred.

Edit:
Don't delete the wallet.dat after you send your BTC. The private grants you access to the same amount of BCH (Bitcoin Cash). One BCH is at the moment worth 7-9% BTC or about $600.


Is it logical to use “Proof-of-Authority” for a “public” blockchain? According parity.io website:

  Proof-of-Authority is a replacement for Proof-of-Work, which can be
  used for private chain setups.

And also:

  The chain has to be signed off by the majority of authorities, in
  which case it becomes a part of the permanent record. This makes it
  easier to maintain a private chain and keep the block issuers
  accountable.

And also:

  PoA networks are well-suited to regulated industries where entities
  responsible for maintaining the network (authorities) need to be
  known, rather than remain anonymous as in mining-based chains like
  Bitcoin and Ethereum.

It is underlined to use Proof-of-Authority for a private chain.

What is the reason? And Is it logical to use "Proof-of-Authority" for a "public" blockchain, in sense of keeping decentralization?

What is the reason? And Is it logical to use "Proof-of-Authority" for a "public" blockchain, in sense of keeping decentralization?

Proof of Authority is, by definition, centralised. If the authority nodes go rogue, or fail to reach consensus, the network is useless.

You could use it in public networks (some of the ethereum testnets are PoA), but it would not be a decentralized network. The value of a PoA mainnet would have to come from some benefit of its centralization, and a very high level of trust in the trusted authorities.


Do I have to pay taxes on a Bitcoin investment when I'm withdrawing it to my US bank account before I actually received the money? I am new to Bitcoin investment trading, I recently invested $500 in 401trade.com and got $19,000 setting in their account, I went to withdraw $18,000 and they said I had to pay $200 in taxes and gave a different bitcoin address to send it to. I had previously asked them if there was anymore fees or charges before withdraw the money and they said no. I figured they could take it out of the amount being received or I could pay it when I got the money. I've never done this before and worried I'm being scammed.

You are definitely being scammed - you should write off the $500 as an expensive lesson and never deal with these people again.
No legitimate company operates in such a way. $200 on a $18500 profit is also not what you would pay under any real tax structure, and even if you had to pay it, it would be paid alongside your regular taxes.
Even if the company had to deduct it and file it separately, they could do so by deducting it from the "profits".
If they had a way to turn $500 into $19000, they wouldn't need $500 from you to do so - they'd already be amongst the richest people in the world.


What defines the standard Bitcoin transaction size? The Lightning Network specifications limit the number of (unsettled) HTLCs in a channel to 483 at each side (maximum 967 total). The rationale behind this is that the penalty transaction must be under certain size:

  With a maximum standard weight of 400000 bytes, the maximum number of HTLCs that can be swept in a single transaction is as follows ...

What is a "maximum standard weight"? Where does the number 400000 come from?

What is a "maximum standard weight"?

It is a property that nodes follow to prevent processing large transactions with number of rules and signatures. It is standardness not consensus. If a node receives a transaction greater than 400,000 WU, it will discard the transaction and not relay it further. I can however, definitely create a transaction greater than 400,000 WU and contact a miner to mine it in a block. The nodes then will be forced to accept that transaction in the block as it is allowed by the consensus rules. So standardness is a subset of validity that nodes use to prevent large processing and DoS attacks.

Now, if I have to close the channel unilaterally and the channel had a bunch of HTLCs, I can't be expected to go looking for a miner every time my transaction size is greater than 400,000 WU. The other alternative will be to run another software other than Bitcoin-Core that accepts such transactions, but that would have to also mean the miners also run this software. If miners run only Bitcoin-Core they will never receive the transactions and Bitcoin-Core nodes in between will not relay it. The best thing is to conform the Bitcoin-Core standardness as it is in the interest of all.

  Where does the number 400000 come from?

Before the activation of SegWit transactions were limited to 100,000 bytes (since a long time). This was merely extended to 400,000 WU.


Building from Source on MAC OSX 10.9 Error Hi i'm building Bitcoin from source and am having some problems. Curious if anyone would be able to help me.

When I try to make I get:

In file included from ./json/json_spirit_reader_template.h:9:
./json/json_spirit_value.h:20:10: fatal error: 'boost/config.hpp' file not found
#include <boost/config.hpp>
         ^
1 error generated.
make[1]: *** [rpcclient.o] Error 1
make: *** [all-recursive] Error 1

I try brew install boost and it's saying boost-1.55.0_2 already installed. Any ideas what exatly is going on?

I encountered the same problem and solved it by appending the following code to ~/.bash_profile file:

export CPATH=/usr/local/include


What does this transaction mean? First things first, I'm a newbie in everything related to bitcoins.

I'm analyzing a few tens of addresses checking which ones have received payments, and one of them is the following: https://blockchain.info/address/121orLQW2LanEtso2htwZSfZ3vV4toLKt6. I'm not sure about what I'm seeing.

I understand that the owner of the wallet 121orLQW2LanEtso2htwZSfZ3vV4toLKt6 received a payment of 0.0001 BTC from two different people, the owner of 1E9b2CvbB9pKT617zNbxoVNH65XqMjarPX and the owner of 1JXstXTaeg6eH3wCXvdC7TYSA8ntWAsPc8. But if this was the case (I think it's not), why are both payments grouped on the same transaction?

Also, if I click to enable advanced view at the bottom of the page, I see that the first paid 0.0001 and the second 0.00010782, however the overall income was 0.0001 instead of 0.0002+.

Basically, what I'm asking is if you can explain me the transaction on that link.

The owner of 1E9b2CvbB9pKT617zNbxoVNH65XqMjarPX is likely the same person as the owner of 1JXstXTaeg6eH3wCXvdC7TYSA8ntWAsPc8. A single user can have as many addresses as they want. When the sender wished to send .0001 BTC to 121orLQW2LanEtso2htwZSfZ3vV4toLKt6, two of their addresses were emptied to meet the required amount.

The inputs sum up to .00020782, but only .0001 is sent to 121orLQW2LanEtso2htwZSfZ3vV4toLKt6. The remaining .00010782 was used as a miner's fee, and went to the miner who mined the block this transaction is included in.


Do any vendors sell good mining rigs? I'd like to buy a mining rig, something like 4 5850 cards, preferably more.  I'd rather not build it myself.  Are there any vendors who sell such machines at a reasonable price?

There are two sites that I know of: bitcoin-rigs.com and bitcoinrigs.com

If you have a local computer shop near you, you could also order the parts and ask them to mount. There is a wiki entry for mining rigs that has a few standard configurations (including two setups with 5850s).

You might also want to check the Marketplace section of the bitcointalk forums. Sometimes people sell used rigs there.


Pending Transactions in Electrum I downloaded the new version of Electrum (4.0.2) and when I sent coin to my other wallet, I forgot to choose/add mining fees. Now the transaction is in Pending and has been for the last six hours. The coin is still showing in my Electrum wallet but I am not sure how -  or if - I should reverse it alt all and resend it with fees. What happens if I delete the pending transactions and try again? There are no confirmations showing for the transaction on blockchain.info but Electrum Transaction information says it has 10 confirmations.

Check confirmations on blockstream.info

If unconfirmed, open the wallet where you had sent, spend those BTC by sending to another address in same wallet with a fee rate more than what others are paying. Check mempool here: https://mempool.observer

This is called child pays for parent transaction: https://bitcoinops.org/en/topics/cpfp/

If unable to spend those unconfirmed BTC, there will be an option in Electrum settings which you need to enable


Are sequential blocks more likely to be "empty" if solved by the same entity? If not SPV mining, so-called "empty blocks" occur if there are no available transactions to include and is usually when the previous block was solved a short period of time previously.

Is there any reason for this to happen more often if the previous block was solved by the same entity?

It is actually less likely to occur by the same miner. The reason for this is the fact that the miner that found the Block will have already validated it, thus it knows which transactions from the mempool were used. If the block is mined by another person their mining software might not have validated the previously mined block yet, which causes them to be unaware of which transactions were included. Thus an empty block is more likely when it was mined by someone else.


An App for Crypto Currency Tax Declaration For my tax declaration, I would like to use an app that allows me to scan all my transaction.
Do you know one ? Or are you interested to use one ?

Thanks

This could have been a question that could be ignored easily until last year. But after the case of IRS and Coinbase, after so many people getting tax notice from Coinbase that their information could be shared after meeting certain threshold - it's a topic and question that can't be ignored.

I had faced a similar problem of calculating my tax liability on cryptocurrency trades done on various exchanges. A couple of prominent software either ran into negative balances or they were too pricey for the profits I made.

This helped me to build one and launch it to the public. We've called it BearTax - a comprehensive suite for cryptocurrency traders and accounting professionals. You can connect with unlimited exchanges and can process unlimited transactions without any payment needed. You can consolidate, review and calculate gain loss for free.

Processing power needs some fuel and we charge only those who would like to download tax forms and auditable CSV files. Give it a try and let me know your feedback. Appreciate the response from the whole community here


How can I get email notification when I get or make a Ripple payment? What's the easiest way to get an email notification whenever I receive or send a Ripple payment?

Have a look at my service, Was I Paid?. It will send you an email on payment receipt, and in the future will support other types of events.


Which mobile clients allow payments using Near Field Communications (NFC)? Which Bitcoin apps (or mobile-enabled websites) support the ability to pay using Near Field Communications (NFC)?

Andreas Schildbach's open-source Bitcoin wallet supports this feature. With the "Request bitcoins" screen open, tap another device to send it the bitcoin: URI to send to (that opens the "Send bitcoins" screen on the other device). You can also scan an NFC tag containing a bitcoin: URI to open the "Send bitcoins" screen with the fields filled in.


need to xfer from bitcoin-qt to core Last used in 2015. When I went into qt to update now, update took 5 days then crashed due to a "windows error" (Did this twice) - so I downloaded Core, and of course, it doesn't have my bitcoins in it.  There is no  .dat file that I can see in the bitcoin directory (and I can't even find the core directory) - Sorry to seem so confused. There's a daemon folder, a doc folder , the bitcoin-qt app, a copying file and a readme file. - and an uninstall. I'm on windows 7, computer states is 64-bit.

The blockchain and your wallet file are stored in the Bitcoin Core data directory. This directory is different from the install directory where all of the binaries are. When you start Bitcoin Core, go to Help > Debug Window and see what folder it is using as its datadir. Make sure that that is what you expect it to be; if you have changed the datadir (by choosing a different one when you first started the client), then make sure that that is what Bitcoin Core is using. Otherwise it will use the default datadir of C:\Users\<your username>\AppData\Roaming\Bitcoin.


I have a stuck transaction (2 days already) I have this transaction :

https://blockchain.info/tx/8fdb3e8a0a33b3d1721b6ef7c1c2608b1e1a8aacd8857e22287b120c09ee988a

I understand it's stuck because of the low value i spended but look at the fee.

Do you know how much time it will take to be confirmed ?

Can i do somthing to make it confirm faster ?

I was thinkig to merge it with this one :

https://blockchain.info/tx/25f232656860a196b3e694275cc217c6382f638230663de13946ba5e4df80a1d

Is it possible ?

Your transaction is using a extremely low fee (0.0001 BTC for 226 bytes).
It might never confirm.

What you should try to do is double-spend your own transaction with a higher fee.
You just need to try to create a transaction with the same input: 61ef08eef99e74f9dd6037c6aff3b8b0703fd86371c259a6c4b6bfd2cd7eacf3/vout:1 and maybe the same output but a higher fee (less change).


How to generate PPCoins using Proof of Stake? PPCoins uses Proof of Stake (in addition to Proof of Work) to generate coins.

Must the client be online for this generation to happen?
Do PPCoins stored in any web wallets / exchanges generate coins for you?

Yes
Yes, but it's not a great idea to do that. Coins need to sit in a wallet for at least 30 days before they start generating stake. I would never leave coins in an exchange\online wallet idle for 30 days.


Can individual private keys in Bitcoin Core compromise any part of the HD wallet? I am attempting to understand Bitcoin Core and its use of BIP32 HD hardened keys -
https://developer.bitcoin.org/devguide/wallets.html
The article explains that the HD protocol uses different index numbers to determine whether a hardened key should be used or not.
My question is does the default Bitcoin Core implementation (HD wallet) always generate hardened keys in all cases? Say I want a legacy address and run 'getnewaddress "test" "legacy"' at the console -- will it be HD generated and will it always be hardened? Is there a way to check?
If the private key of that specific generated address was later compromised, can anything be leaked about the Bitcoin Core HD wallet from which it came? Is each private key as independent as keys in a "loose keys" wallet? (as mentioned in the article)

My question is does the default Bitcoin Core implementation (HD wallet) always generate hardened keys in all cases?

HD wallets of the default wallet type, known as the legacy wallet, always uses hardened derivation. It cannot be changed to use unhardened derivation nor can it be changed to use other derivation paths. So it will always be hardened. There are no known issues with hardened derivation. Even knowing child private keys cannot result in learning a parent private key.

Say I want a legacy address and run 'getnewaddress "test" "legacy"' at the console -- will it be HD generated and will it always be hardened? Is there a way to check?

If the wallet is a legacy wallet and is set to use HD, then use, it will always use hardened derivation. You can check this by using getaddressinfo to get the derivation path used. To verify the derivation path, you can use dumpwallet to get the master private key and do the derivation yourself.

If the private key of that specific generated address was later compromised, can anything be leaked about the Bitcoin Core HD wallet from which it came? Is each private key as independent as keys in a "loose keys" wallet? (as mentioned in the article)

Hardened derivation means that it is not possible to learn anything about parent or sibling private keys given a child private key. It is, for all intents and purposes, the same as a set of randomly generated private keys.
However Bitcoin Core now supports BIPs 44, 49, and 84 which specify a set of standard derivation paths which happen to use unhardened derivation. There are used in the experimental descriptor wallets added to introduced in Bitcoin Core 0.21. Unhardened derivation has an issue where it is possible to learn the parent private key if the parent public key and a child private key is known. This can result in the compromise of an entire wallet. It is because of this that descriptor wallets do not support exporting individual private keys, and currently does not have any form of export at all.


multi wallet bitcoin client I'm looking for a bitcoin client capable of handling multiple wallets. At the moment I'm developing a shop which will allow bitcoin payments. The idea is to create a new address for each client making a transaction.

So what client should I use? I'm going to use Debian (possibly Ubuntu) server. Hopefully it will not require lots of resources (at the moment ~1GB of ram is max I can give but ~512MB is preferable).

Also I would like the solution to scale well. So perhaps working with wallets is not a correct thing in the first place? For example should I work with raw transactions ("send from temporary address X to the main addres A") instead? And only synchronize the main wallet?

You can use electrum and create a dedicated wallet for your shop's transactions using this command:

electrum -w shopwallet -f 0.0001 -G 100 create

This will create a new wallet with a gap limit of 100 i.e. it will track 100 addresses by default (more will be tracked as you start receiving payments).

Once you have the wallet setup you can get the master public key (MPK) via the wallets menu > master public key. You can install the MPK on your web server allowing you to generate receiving addresses for your customers without risking your coins.

Two example implementations of this approach are:

Bitcoin payments for Woocommerce: http://wordpress.org/plugins/bitcoin-payments-for-woocommerce/

Stick's address generation scripts: https://github.com/prusnak/addrgen


Obtaining 12 word mnemonic from Private & Public Keys After a recent upgrade to Jaxx wallet my Litecoins and my transaction history are lost.

The 12 word mnemonic opens up a wallet with zero Litecoin balance even though the public key address from the earlier Jaxx wallet shows the coins are available and unspent on blockchain.My mnemonic seed has not changed yet Jaxx wallet is not the same.So apparently there may have been a bug in the seed derivation path or ......

Jaxx support is not able to help and they say I am not using the correct mnemonic. This is not at all possible. Unfortunately I do not have the private key for the public key address where my coins are as Jaxx wallet no longer shows me the same set of earlier public/private keys and transaction.

For most of my earlier transaction I have public and private key. Can I generate the 12 word mnemonic from the set of private/public keys just to confirm?

Sorry you can't invert a private key from a detached BIP 44 path to obtain a BIP 39 seed words. That is the mathematical nature of BIP 39 when combined with BIP 44.  However, Electrum seed words used by Monero are invertible from a Monero private key.


building bitcoin-qt.exe using Visual Studio 2017 I know there is a project libbitcoin-qt.vcxproj, but I have issues with building it. Is there another solution how to build bitcoin-qt.exe (only VS)?

There is documentation about how to build with visual studio
 on this link. It works fine for me.


Do you have to download the entire bitcoin blockchain for bitcoin core pruned mode to take effect? I've read that you need to download the entire bitcoin blockchain before you can set it to bitcoin core pruned mode to reduce space. But what if I don't have 100gb+ free on my hard drive? Is there a "pruned" blockchain file I can just download so I can skip needing to downloading the entire blockchain?

Pruning saves disk space, but you still need to download the whole blockchain, prune mode works on the fly, once your node has downloaded the block data and validated the blocks/transactions in it, it throws away the old data that it no longer needs, but in order to revalidate all old blocks