Encrypted message with nLockTime I know you can delay a transaction's accepted date by using nLockTime. I'm still looking for the simplest way to generate a transaction with nLockTime, but that's another topic.

I'm wondering if there's a way to use this feature to send a message that will only decrypt after the time is due.

I know that a transaction broadcast with nLockTime already has all details visible and the amount is simply not yet spendable by the recipient. Is there a way to also make the note on that transaction encrypted until such date? Can I use bitmessage to achieve this somehow? How about another coin such as Dash or zCash which I assume also encrypt the transaction's note to anyone except the recipient [do they actually do this, especially Dash]?

The idea is to send a message that only the recipient can decrypt and only after a certain date, with no manual intervention in the future, nor anything else involved. It would be ideal if they received that message in their wallet like any transaction after it's due, but the message shouldn't be viewable by others nor by the recipient in advance searching, say, in a block explorer.

Thank you

I don't think that is possible with only nLockTime. There are however "smart" contracts, by using a 2-of-2 multisignature where each party deposits an insurance worth more than the shared secret. The economic loss is more than they gain if both parties don't follow through on their part of the deal.

On a note, this would actually be possible with the technology currently used ZCash. Using zk-SNARKS, you could generate proof that a piece of content is encrypted by key X. In that same zk-SNARK signature you could prove that hash(X) = Y and create an economic construct that will only allow a transaction after X is revealed, creating Y and allowing a party to get their money.


Miner username and password - does it need to be unique in the major pools? Every Bitcoin mining pool relies on Basic Access Authentication to identify the user and credit their account for the work performed. But does this identification in form of username and password have to be unique for each separate machine that performs the mining? How is that problem addressed by the major pools?

Usually the worker's username is appended to your account username. So if my pool username is nmat, my workers will be named nmat_rig1, nmat_rig2, nmat_FPGA, etc.

Creating multiple worker accounts is useful to control the performance of your rigs, but is not mandatory to use a different identifier for each machine. You can have all your rigs mining with the same username/password and the money will still end up in your account.


My first transaction using Bitcoin-Qt I used Bitcoin-qt (Bitcoin Core) on desktop to create a wallet a while ago and I'm a little confused how it works.

I never fully "synchronized with the network" I'm assuming that means download the entire blockchain. I'm about half way there and 30gb deep. I created an address to receive a transaction but don't have a balance in the wallet. I'm assuming it's because it's never caught up with where my transaction is on the blockchain. Is this correct?

I can see when I take the address and look it up online the transaction of receiving the funds I just can't confirm a balance.

It doesn't seem that there's any password that I ever put in either. When everything does sync can I only transfer my balance out using the same app?

Also I had to replace my hard drive on my mac recently so I took both the Bitcoin app and the Library/Application Support/Bitcoin folder and put them on my new hard drive, are there any other files I would need to get access to my balance?

I'm assuming it's because it's never caught up with where my transaction is on the blockchain. Is this correct?

Yes.

  I can see when I take the address and look it up online the transaction of receiving the funds I just can't confirm a balance.

That's normal, if your client is still synchronizing.

  When everything does sync can I only transfer my balance out using the same app?

No, it's possible to use a different Bitcoin wallet. You need to 'export' the keys in your wallet to another program. See How can I export the private key for an address from the satoshi client?

  Also I had to replace my hard drive on my mac recently so I took both the Bitcoin app and the Library/Application Support/Bitcoin folder and put them on my new hard drive, are there any other files I would need to get access to my balance?

Is there a file inside there named 'wallet.dat'? If yes, then you have what you need to spend your Bitcoins. If no, then no.


How can one find how much "room for arbitrage" is there in the Bitcoin market? I don't know what's the mathematical/economical definition, but I would define "room for arbitrage" as the amount of money that can be extracted from the market by doing arbitrage (between the different exchanges). I am sure there is a precise definition of such a concept.

So, given this definition - how much room for arbitrage do the current Bitcoin markets exhibit?

Edit - see also on Quora - How do you measure arbitrage?

I am not an expert on this, but I will answer from my personal experience from the past couple of months. Here are some things I noticed:

MtGox rules the market. The price there leads and the other exchanges follow. Sometimes TradeHill moves a few decimal points on its own above or below MtGox, but it usually goes back to where it was after a few hours.
The price difference between exchanges with APIs rarely goes above $0.3 (the most common opportunities are around $0.1/BTC). So with the current fees you will earn very little from each trade - note that on smaller exchanges, it is very easy to move prices up and down so you are doing arbitrage with very small trades.
You must be fast. There are already people doing this and the opportunities don't stay up for long. If you are not careful your orders will end up pending.
Exchanges without APIs have much more arbitrage opportunities. Bitmarket for example is some times $1 or more off the current MtGox price. Of couse it is also much more time consuming to arbitrage manually.
There are days when nothing happens and others when a lot happens. You have to be ready and keep a lot of money on each exchange if you want to catch it all. There are huge volume differences so you should split your money accordingly.

I am still testing things out, but I don't think that you can make a lot of money out of this. It may be interesting to use it as a complement to other automated trading strategies though.

Just another note:

Moving money/bitcoins around to grab opportunities in exchanges with APIs won't work because of fees (even if small) plus waiting time. You usually have a few minutes to grab opportunities. If you are lucky you can sometimes find an opportunity that lasts a couple of hours, but that happens like once a week.

All of this is from personal observations during July/August 2011. Things will of course change and the market will probably become more and more efficient.


I don't speak English well. Where can I get help with questions about Bitcoin? I'm interested in Bitcoin but don't speak English well. Where can I find more information about Bitcoin, and get help with my questions in [my mothertongue]?

This is a canonical question to serve as a lightning rod for questions in Russian, Japanese, Chinese, Spanish, Turkish, Arabic[1], or other non-English languages that we do not support here.

[1] listing languages I've already seen on Bitcoin.SE.

A good starting point is Bitcoin.org website:

https://bitcoin.org

The site content is available in several international languages and provides a good overview of Bitcoin, and links to many helpful resources.


how does solving hashes and building blockchain help the human race? I guess I am naive about what miner really does to benefit the human race.  What kind of problems does miner's computer solve?  The hash just looks like a whole string of numbers and letters to me.  How does that translate into solving problems that will benefit people?

The comparison and contrast between Banks and Bitcoin is a pretty good one.

Banking computers sit around adding and subtracting numbers to keep track of people's money:

Who made their car payment?
Who received a paycheck?
Who is spending more money than they have, and what are the consequences?

Is any of this useful to the human race?

At the end of the day, no one has any more food or lives a longer life because of a banker's math.  But we all know this is important basic element of infrastructure to keep society running smoothly.

Bitcoin miners do the same thing, they keep detailed accounting of people's money.  They don't directly feed anyone, but providing an accounting and a means to exchange money is important to the functioning of society.

Mining makes tradeoffs that are different from banks.
On one hand, they use a lot more electricity than banks, but on the other hand, they break the reliance and necessary trust that banks are acting responsibly.

This is especially important when we saw during the 2008 Financial crisis that banks were not trustworthy.  They intentionally made bad loans, took huge risks, and damaged the economy to enrich themselves.

Because of bankers actions then, bad things did happen to society.  Rates of bankruptcy increased, and that is not an abstract financial situation.  Financial stressors are closely correlated with increased rates of suicide, divorce, alcoholism, spouse and child abuse, etc.   These bankers literally ruined lives with their irresponsible decisions to enrich themselves.

Bitcoin (probably) won't ever do that.
Is that good for society?  Is it worth the increased electricity and computing costs?  Maybe or maybe not. No one is entirely sure.  But it is certainly a worthwhile experiment to investigate.


How many confirmations will Bitcoin core wait before I can send my coins out? Using Bitcoin core 0.14, how many confirmations do I have to wait before I can send the coins out?

Is there a method to wait X confirmations before sending coins out from specific addresses that have less than X confirmations?

Using Bitcoin core 0.14, how many confirmations do I have to wait before I can send the coins out?

Bitcoin Core will let you spend received money after 1 confirmation, and let you spend change (money leftover from a transaction you sent yourself) without confirmations.

If possible, it prefers using coins that have 6 confirmations.

  Is there a method to wait X confirmations before sending coins out from specific addresses that have less than X confirmations?

You'll have to do that manually, using listunspent and createrawtransaction.


Keeping a portable long-term offline wallet I'd like to keep some bitcoins as a long-term investment - store them to a pen drive which I stash in some safe place, or otherwise backup it securely, then remove all traces from my online computer never to worry about this particular wallet getting stolen except by an old-fashioned burglar.

Now my worry is that if I export my wallet with the coins from client program X, which will pack the wallet, the keys, some configuration and other stuff into its own proprietary backup format, then the author ends the project in a year, in five years the OS changes and no longer supports this kind of binaries and their API, and when I finally decide to cash my investment I find myself with a data file no bitcoin client on the market can process.

What is the most portable to survive for years (probably most "raw") bitcoin wallet format? Which software can export/import it currently?

All wallets basically just store public+private keys. If you store those keys, it's fine.

Also, there's the normal wallet file, which is stored in the Berkeley DB format, which is an extremely common format and it has been for the past 15+ years. While I can't speak with 100% certainty, I'd say that the wallet.dat file from the reference client is a pretty safe bet (perhaps even safer than storing the raw keys).

Which software can export/import it? Well, there may be a few exceptions, but almost all Bitcoin wallets, either online or offline, can handle those files.


Where can I find graphs the values of alternative crypto currencies? Hashrates and value in BTC. Is there one site that can show them all, perhaps even on the same chart?

at http://www.ltc-charts.com you can see long term charts for litecoin


How a thin node ensures the validity of blockchain? How a thin node in network verify the validity of the blockchain tree? I think the node must wait for a time period to get the same valid block from some of its peers.

Most thin clients only download, check and keep the block headers. They do not download the transactions of blocks, so they cannot fully verify blocks.

To learn about transactions they request information from full nodes which will send them a Merkle block for each transaction of interest. With the transaction and the Merkle block, the thin client can verify that the transaction was indeed part of the block. When this transaction gets additional confirmations (i.e. more blocks get found building on the block this transaction was included in), the thin client assumes that the network accepted the block and that the block is valid.

There are also some thin clients that outsource verification to remote services such as mobile wallets of online wallet services.


Theoretical minimum # of logic operations to perform double iterated SHA256? What is the theoretical minimum number of logical operations an ASIC needs to perform to compute double iterated SHA256, i.e., sha(sha(•))?

SHA256D, which is what Bitcoin uses, is 128 rounds, comprising
768 additions,
640 ORs
896 XORs
And a bunch of bit shifts but bit shifts are free on an ASIC.

(source)


Is there any Cryto exchange that supports automatic sale when profit above X % and buy again when price drop to previous price and repeat this cycle? I am new to bitcoins

I got a new idea in short selling bitcoins

That is , imagine the price of 1 BTC = $1000

I will buy 0.5 BTC for $500

Now I will wait till the price increased by 10% that is , $1100

Now my portfolio becomes $550

.....

Now I will sell the 0.5 BTC for $550 . I got 10 % , $50 profit

Now I will wait till the price again goes below 10% , that is $1000 .

Now I will buy when price again reached to $1000 for the $550 , that is for the total gain.

then the above cycle continues ...

Suppose if the buy price never reach, that is price starts to grow then I will buy for day's or week's low.. and continue the cycle

-

Is there any exchange that support this automatic job flow ?

I think it will be better to divide your deposit into two parts. Half in USD and another half in BTC. First bot tries to maximize your profit in USD. Second - in BTC. Any price moving makes you rich


Where can I get intraday orderbook BTC/USD? Where can I get intraday orderbook BTC/USD?

Hey there, I am searching for intraday orderbook BTC/USD of any exchange for at least one day. I have found that it's available only for some money. Is there possibility to get any for free?

Be it a stock exchange or a crypto one, it is kind of standard that the exchanges only show a portion of the orderbook and not the entire orderbook to the users.
You could possibly try crawling the exchange but that would still be futile since the orderbook displayed are sorted and only the top 20-30 entries. You won't get the entire data.
Bittrex has their set of API's to retrieve exchange data, however that is not the intraday data. It updates timely. So you will  have to come up with a time based service which hits these API's on a regular time interval keeping in mind the hourly API usage limit and the activeness of the market.

Similarly a lot of the other exchanges also provide with API's which you can use to consolidate into one huge intraday order book.


Bitcoin sent to invalid address In this transaction, some bitcoins are sent to bc1qp6k6tux6g3gr3sxw94g9tx4l0cjtu2pt65r6xp which appears to not be a valid bitcoin address. What is bc1qp6k6tux6g3gr3sxw94g9tx4l0cjtu2pt65r6xp  ?

That address is a bech32 encoded address, which is a new style of address used on the Bitcoin network, that starts with bc1....

It seems that the Blockchain.info explorer has simply not been updated to properly interpret and present this newer address type. The addresses you listed are perfectly valid.


What is "the gap limit" in Electrum? I don't understand this explaination.

With a deterministic wallet you create from an initial seed a sequence of bitcoin addresses. Imagine counting 1, 2, 3, 4, etc.

You can create as many addresses as you like, but not all of them will appear on the blockchain. For instance I might create one especially for you to give me 1,000,000 BTC. That is (alas!) probably not going to be used.

When you are recreating a wallet from scratch you do not know which is the last address used. So you start at the beginning and see what is on the blockchain. Then you look for the next one in the sequence. The gap limit is how many 'misses' you accept before you give up and stop looking.


No OpenCL platforms found? Is it possible to mine with Nvidia Quadro 600? Both GUIMiner and DiabloMiner report that no OpenCL platforms/devices were found. How can I check if GPU has OpenCL?

NVidia cards require that you install the CUDA drivers in addition to the standard video card drivers (ATI/AMD cards ship with OpenCL as part of their driver package). Without these drivers installed they will not be available to any miners.

Since the Quadro 600 appears on the list of CUDA compatible GPUs it should be mineable, though what kind of performance you'll get is questionable.


How do I reset my TFA token in Coinbase? I would like to move my Coinbase Two-factor authentication token from one device to another. I cannot find a location on their website to disable TFA once it has been set up, or to move the token to another device. What am I missing?

You should have the option to remove / change the 2-factor Authentication under Settings >> Personal Details, though this may have changed. My guess is you'll probably need to contact Coinbase support if nothing else has worked so far: http://support.coinbase.com/customer/portal/emails/new


What is the maximum size for SegWit transactions? Before SegWit was activated, transactions were limited to 100,000 bytes or 100 kB. Bigger transactions were non-standard.

What is the limit for transaction size after the activation of SegWit?

Is the virtual size limited to 100,000 vbytes?
Is the raw size limited to 100,000 bytes?
Is there a new limit altogether?

The standardness limit in all recent Bitcoin Core versions with SegWit support is 400000 weight.


What happens when someone dies? Who keeps the bitcoins?
If he didn't left to anyone his private key, will the bitcoins be lost forever and ever?

Yes, those coins would be lost.  It would be as if you buried a chest of gold out in the middle of nowhere and died without telling anyone about it.

Though it is possible (though mindbendingly unlikely.  Even if bitcoin keeps existing until the heat death of the universe, it will almost certainly never happen.) for someone to randomly recreate the keypair for those coins and thus take possession of them.


How can i effectively split large outputs into smaller ones? I have a wallet that pays lots of small amounts in the range of 0.x to 5 BTC.
I filled the wallet with one transaction of 50 BTC, so there is only one large input contained.
Now when i transfer 0.5 BTC anywhere, the transaction has two outputs - 0.5 for the receiver and 49.5 change.
Problem is that as long as this transaction is not confirmed the wallet is more or less blocked, as it only contains 49.5 unconfirmed balance.

So basically I end up with one transaction per block, as i need to wait for the change to be confirmed until i can create the next tx.

Edit:
Note that I am using the rawtransactions API and when constructing a transaction i only want to use confirmed outputs (from "listunspent" command) as inputs for the new tx.

What is the best way to split the big output in the wallet into something like e.g. 10*5.0 BTC?

The protocol and the standard client allow you to spend your own unconfirmed change. Multibit didn't allow this, but I believe it's a recently/soon added feature.

When constructing your transaction manually there is little advantage to choosing confirmed outputs.

If you do want to split your outputs, you can do it with a sendmany transaction. The Bitcoin-qt GUI allows you to do this ("Add Recipient"), which can scale to several outputs. For a larger number of outputs you can generate the command programmatically and issue it with the command line.

Bitcoin-qt does not allow you to pay an address multiple times in the same transaction. There seems to be little justification for that, and it may be possible with the raw transaction API. Alternatively, you can generate several addresses and split the amount between them.


What is meant by "we are approaching a step change in bitcoin mining" On a comment on this answer: https://bitcoin.stackexchange.com/a/9494/4173

The following was said: "However, what you need to consider is that we're approaching a step change in bitcoin mining with the creation of ASIC-based minders. These will increase the difficulty 10-fold pretty much immediately, and go to 100-fold if they are successful. "

Can anyone explain what this means?  What is a minder? Why is the difficulty about to increase 10 / 100 fold?

That was my answer, and "minder" was a typo and meant to be "miner".  Apologies for any confusion this might have caused.

There are ASIC-based bitcoin miners that generate north of 60GH/s.  A high-end PC might get up to 1GH/s, with a similar cost for power.  So there is going to be a massive influx of GH/s additional power in to the bitcoin mining pools.

The difficulty rating for mining self-adjusts over time to ensure that the number of blocks found remains relatively constant at around 1 block every ten minutes.  Let's assume that the influx of ASIC-based miners pushes the overall difficulty up 10x in the short term.  This means that for the same amount of work your PC is doing next week as opposed to last week you will only receive 10% of the reward.

The end result is that the idea of mining on a PC to obtain bitcoins is going to go away over the next year or less (depending on how quickly the ASIC companies can churn out production-ready mining platforms).


How to parse values in block index leveldb? So I'm trying to read the block files with Python.

From this link,
What are the keys used in the blockchain levelDB (ie what are the key:value pairs)?, it tells you how to access the files with leveldb. So I wrote a class to read in the meta data.

class ReadBytes:
    def __init__(self, bytes):
        self.posistion = 0
        self.bytes = bytes

    def get_int(self, byte_count):
        self.posistion += byte_count
        return decode(self.bytes[self.posistion - byte_count:self.posistion][::-1], 256)

    def get_var_int(self):
        self.posistion += 1
        value = byte_to_int(self.bytes[self.posistion - 1])
        if value < 253:
            return value
        return self.get_int(pow(2, value - 252))

But from this link, https://github.com/bitcoin/bitcoin/blob/master/src/chain.h#L364, It turns out there is this thing call VarIntMode::NONNEGATIVE_SIGNED that is tripping me up. I can read regular var int with my Python class, but how do I read the non-negative signed ones in Python?

A non-negative signed varint is just a normal varint but should be put into a signed integer rather than an unsigned integer as with normal varints. You just need to also check that it is a non-negative integer.

For example, instead of decoding a 32 bit varint as a uint32_t, you decode it as int32_t and check that it's value is >= 0.

Your code looks like it is decoding things as signed integers already. Instead of using Python's conversions built into the various classes, I recommend that you use the struct module so that you can specify endianness and signedness of the bytes that you are decoding.


When user 'A' creates a transaction using scriptpubkey, do they also sign a message with their private key? I understand a transaction in Bitcoin is created in two parts:

1) Sender 'A' creates a claim condition using scriptPubKey

2) Recipient 'B' proves ownership of the recipient address using scriptSig

I am wondering whether step 1 also involves the sender 'A' signing something as a part of the claim condition using their own private key?

No, the scriptPubKey doesn't require 'A' to sign anything. It only asserts what B must do to spend the output.


How is the UTXOs of each partially-spent TxIn determined? My current understanding of a transaction is as follows:

a transaction (Tx) can have multiple inputs (which are previous unspent transactions = UTXOs), let's call them the TxIn
a Tx can have multiple outputs (which thus become UTXOs before they will themselves become spent by being used as TxIn), let's call them the TxOut
the TxOut have a specific order N in the transaction: TxOut[0], TxOut[1], etc.
each TxIn references the number N which corresponds to the index of the TxOut referred to in point 3 above, so this makes the link between a specific TxIn and a specific TxOut
each TxOut specifies a specific bitcoin amount (which represents the UTXO amount that can be later spent)
each TxOut references one or multiple (in the case of MultiSig) bitcoin addresses (public keys) that can spend the amount
however, and this is what I don't understand, the TxIn does NOT specify the amount of bitcoins that are used

If the TxIn does not specify the amount that is used, how do we determine the spent amount for each TxIn, and thus the UTXO of the part of the TxIn that remains unspent?
Example, a transaction with 2 inputs and one output (assuming no fees):

TxIn[0] whose UTXO before spending is 1 BTC
TxIn[1] whose UTXO before spending is 1 BTC
TxOut[0] whose value is 1.5 BTC

How do we know which TxIn, and how much of which, was spent?

was it TxIn[0] for 0.75 and TxIn[1] for 0.75?
was it TxIn[0] for 0.5 and TxIn[1] for 1?

What am I missing? Because given the above, it is not possible to determine the spent proportion of each input.

a transaction (Tx) can have multiple inputs (which are previous unspent transactions = UTXOs), let's call them the TxIn

More accurate would be to say "unspent outputs from previous transactions".

a Tx can have multiple outputs (which thus become UTXOs before they will themselves become spent by being used as TxIn), let's call them
the TxOut
the TxOut have a specific order N in the transaction: TxOut[0], TxOut[1], etc.
each TxIn references the number N which corresponds to the index of the TxOut referred to in point 3 above, so this makes the link between
a specific TxIn and a specific TxOut

Correct, we call the compound of transaction id and output index txid:vout the "outpoint" of a UTXO. As you describe, each input spends exactly one specific UTXO.

each TxOut specifies a specific bitcoin amount (which represents the UTXO amount that can be later spent)
each TxOut references one or multiple (in the case of MultiSig) bitcoin addresses (public keys) that can spend the amount

It's a bit easier if you think of each output as being locked to a set of conditions that need to be fulfilled for spending. In single-sig the spending condition is "pay-to-(witness-)public-key-hash". This lock is satisfied by a signature of the private key corresponding to the specified address. (The address in turn is derived from the hash of a public key which forms an asymmetric key pair with said private key.) In multisig the spending condition is "pay-to-(witness-)script-hash". The funds are locked to the fullfilment of a specific script. The address in this case is derived from the hash of the script. Spending such a UTXO requires 1) revealing the script that hashed to the address, 2) fulfilling the conditions specified in the script. In the case where that script is a multisig construction, it would specify a set of public keys some subset of which is sufficient to unlock the funds. However, these scripts can take various other forms as well. I'd nit that "each TxOut references one or multiple bitcoin addresses that can spend the amount" is both an overgeneralization (because not all scripts must be multisig) and an inaccuracy (because the funds are locked to the script, not to multiple addresses).

however, and this is what I don't understand, the TxIn does NOT specify the amount of bitcoins that are used

If the TxIn does not specify the amount that is used, how do we
determine the spent amount for each TxIn, and thus the UTXO of the
part of the TxIn that remains unspent?

There is no way to partially spend a UTXO. Spending UTXO is binary, either they are unspent or they are spent. Since UTXO can only be spent in full, any remainder from a payment gets collected into one or multiple outputs in which the sender pays themselves (see e.g. How does change work in a bitcoin transaction?).

Example, a transaction with 2 inputs and one output (assuming no
fees):

TxIn[0] whose UTXO before spending is 1 BTC
TxIn[1] whose UTXO before spending is 1 BTC
TxOut[0] whose value is 1.5 BTC

How do we know which TxIn, and how much of which, was spent?

was it TxIn[0] for 0.75 and TxIn[1] for 0.75?
was it TxIn[0] for 0.5 and TxIn[1] for 1?

What am I missing? Because given the above, it is not possible to
determine the spent proportion of each input.

The answer is that both TxIn[0] and TxIn[1] get spent completely and the transaction is created with two outputs: TxOut[0]: 1.5 BTC to recipient and TxOut[1]: 0.5 BTC to sender.


How can i enable mining My goal is to understand bitcoin.
I do not want to earn money with mining.

I have a server without GPU (intel i5 with 4 cores)

Here is what i've done: I have downloaded, maked and installed bitcoin sourcecode from github. It seems to work because i can interact with bitcoind with bitcoin-cli command.

I want to enable mining, but i do not know how to do. I have read some tutorials but i do not understand if mining is really enabled.

How long does it take on an intel i5 to generate the smallest bitcoin fraction as possible. I just want to see if it works

Thanks

Bitcoin Core does not have mining code anymore, at least for mainnet. You cannot use Bitcoin Core to mine. Instead you will have to download other mining software such as cgminer or bfgminer. However, none of those software include support for CPU mining because mining with CPUs (and even GPUs) is not efficient nor worth the cost. Mining these days is done with specialized mining hardware.

  How long does it take on an intel i5 to generate the smallest bitcoin fraction as possible.

Probably a few days or weeks, possibly never. In order to "generate the smallest bitcoin fraction", you need to join a mining pool. It isn't possible to just generate a small fraction of the block reward, mining doesn't work like that. To get less than the block reward, you have to join a mining pool. To even get a chance at getting any sort of reward, you have to join a mining pool. But in order to even get any reward from the pool, you will need to be able to mine a share, which is essentially a block but at a lower difficulty than the network (the pool sets that difficulty).

With CPU mining, it is unlikely that you will even find a share. Even if you do, you will need to find a lot of shares just to reach a pool's minimum payout. So you will never get "the smallest bitcoin fraction" just by CPU mining.

Furthermore, just running some mining software isn't going to teach you anything about how Bitcoin works or how mining works.


Can I still claim the pre-fork BCC with a current balance of 0 from Bitcoin Core wallet? I had BTC in my Bitcoin Core wallet before the BCC fork, but I didn't claim the BCC before transferring my BTC to another wallet after the fork.  Is it possible to claim the pre-fork BCC even though my Bitcoin Core wallet balance is currently 0?  If yes, how do I go about claiming the BCC from my Bitcoin Core wallet?

What you did after the fork on the bitcoin blockchain has no effect on the BCC chain at all. All that matters is what you had at the time of the fork. You can follow the regular BCC claiming instructions.


Which crypto-currencies can be mined effectively with GPU We often hear both CPU and GPU mining are dead.

There is a number of new currencies designed specifically for CPU or GPU mining. Which are these? Can you mine them effectively with GPU?

You can look at litecoin. It is still feasible to mine it with CPU and GPU, because it is really hard to implement the algorithm in ASICs. And the price of litecoin is not bad.


backing up 12 seed words vs wallet.dat I installed electrum created my fist wallet and notice that instead of having to save a wallet.dat file, If I am right I just need to save/write  12 seed words.

If I understand properly the seeds used to create the wallet, will always produce the same output, but how does the recover process works in order to restore/recover the wallet balance?

Is the blockchain checked against my wallet keys to claim ownership of the transactions that where signed with my keys in order to recover the possible founds?

The seeds produce the addresses, not the balances.  Consider that you can have multiple wallets that contain the same address.  The balance doesn't exist in both addresses, because there's two copies ... it's like you said at the end.

Your wallet looks up the addresses in the blockchain that's copied on your system, and they contain the balance ... well, actually, the balance isn't actually an entity.  The transactions are.  Your wallet scans the blockchain for your addresses, and any transactions that involved it, and calculates the balance based on the inputs and outputs.


What is the waste ratio of the overall network? The answer to the question "Why do I have to wait 10 minutes before I can spend money I received?"  in the FAQ of Bitcoin contains the sentence

  "For example, if it takes miners 1 minute on average to learn about new blocks, and new blocks come every 10 minutes, then the overall network is wasting about 10% of its work."

But I couldn't get it... What I thought is that only one miner will be the creator the new block, so all the other miners who fail to be the creator have wasted their work. So the waste ratio of overall network should be huge.

Why am I wrong? Can you correct me? Thanks in advance!

The waste ratio you are talking about is different from the one mentioned there.

What you are talking about is the difficulty: if the network's total hash rate is X hashes/second, then the difficulty is set such that it requires 600*X hashes to create a block on average. This does not mean that separate miners are wasting their work, because if the difficulty increases, so does how much every block is "worth" in terms of contribution to the network. They are all simultaneously looking for the next block, and all of them have at every point the same chance. Every attempt to find the new block is independent from all others, and independent from how much time they or others have already spent on it.

What that page is talking about is loss of security. When blocks do not propagate immediately to other peers across the network, miners are effectively competing with each other rather than building on top of each other's work during that time (they are always competing for income, but here I mean competing to build the next best chain itself). Their work is wasted because the hashrate an attacker has to compete with is lower than the sum of the hash rates of the honest contributors.


Can you make profit from a miner? Someone named mr_richard665 on instagram told me he was a bitcoin broker that worked with bitcoingroup and that he could help me make 30% profit everyday from my investment if i let him manage my account by me sending my bitcoin investment to his miners wallet address,is this a scam?

Yes, this is a scam.

The scammer has probably asked for your login info, so that he can 'set you up for mining'. In reality, mining does not work like this at all, the scammer simply wants access to your account so that they can copy down your seed phrase. With that done, even if you change your password, the scammer will be able to re-create your wallet on a different device, no password needed! The scammer could then steal your coins at a later date, after convincing you to 'fund the wallet for mining', etc.

DO NOT give the scammer any login or otherwise identifying information. There is never any need to do so.


How do I get rid of an unconfirmed transaction on Bitcoin Core 0.14.1? Can somebody please help me? I have been trying to send .045 Bitcoins (approx $120 USD)

I am using Bitcoin Core.

I have tried to get rid of the unconfirmed transaction by using -zapwallettxes  However.. when I re-boot Bitcoin Core v0.14.1 (64-bit)   without the zapwallet command.. it still shows as unconfirmed and now it appears to be stuck. I am afraid it is a duplicate transaction and I'll never get my Bitcoins back before now I am at 0 after reboot.. and even worse the address keeps telling me they haven't received anything...

What do I do?

Since 0.14.0 the mempool is stored on disk when Bitcoin Core is closed. To apply -zapwallettxes to remove a transaction you also have to delete the mempool.dat as the transaction is otherwise reintroduced into the wallet when the mempool is imported.

To remove an unconfirmed transaction with 0.14.0 you have to:

Shut down Bitcoin Core.
Find your Bitcoin directory
Delete mempool.dat in the Bitcoin directory
Start Bitcoin Core with -zapwallettxes

Previous versions didn't persist the mempool to disk, so step 1. and 4. are sufficient to remove an unconfirmed transaction.
The interaction of -zapwallettxes and the persisted mempool was fixed with Bitcoin Core 0.15.0, so it is sufficient to set -zapwallettxes after that again.


Is that safe to expose public key to the mainnet Because every time when someone want to spend some money under an address, he need to provide public key and sent the content to the mainnet. (Please correct me if that is not correct)

Where can I look to see a revealed public key?

If there is some remaining money under this address, is that possible that the other will copy the public key and generate another request(with this copy) to use those money?

To claim (spend) the bitcoin from an address one needs to create a transaction and provide two things:

a public key (from which the address you are trying to access is actually derived from**) and
a signature of the transaction (with the private key that corresponds to the above public key**)

When you spent some money from an address the rest will typically go back to the originating address as change (see section Output here).

You are correct that the public key will be exposed after the first transaction. An attacker would have your public key. However, this poses no threat since the public key can be, well, public without compromising security. This is how public key cryptography works.

It is the signature that provides the real security. To create such a signature one needs the private key corresponding to the public key. And that is never revealed in the blockchain.

The above two links provide a lot of detail of how public key cryptography and bitcoin transaction work.

** Note that a bitcoin address is created from the public key with a one-way function (the reverse is not possible). Similarly, a public key is created from the private key with a one-way function. i.e. with the private key one can re-create the rest.


How Does BitCoin's Economy Work? I just heard about BitCoin for the first time today, and I'm confused.
My understanding of economics may not be the best, but I do know that money, as in the paper and coins we use in everyday life, has no value unless it's backed by something which DOES have value (such as the gold in the Federal Treasury). So I don't understand how BitCoins gain value. I understand they're created by computers doing complex mathematical equations, but...is the solution to these equations valuable? Is that what causes BitCoins to be worth something?
Hopefully the answer to my first question will answer the second as well...once BitCoins are created, how is their ongoing value determined? For instance, I heard about a BitCoin value crash today. What criteria is used to determine changes in the market, and how are exchange rates calculated?
Thanks in advance to anyone kind enough to answer my questions...I hope I don't sound like a complete idiot.

Things are worth what people are willing to trade for them. The same is true for Bitcoin. Its value is insured by nothing other then what people will trade for it.

There are some distinctions between  bitcoin and other currencies which are worth noting.

Bitcoin has no intrinsic value. While this is true of many modern currencies such as the U.S dollar, it has not always been the case, such as when the U.S. was still on the gold standard. (Gold has some intrinsic value such as its use in circuitry )
New Bitcoins get created by an algorithm which closely follows a geometric series as opposed to a central authority, such as the Federal Reserve.

This second point while having some benefit has proved to be significant shortcoming for Bitcoin. In most currencies, as the volume and rate of transactions increases, so to does the amount of currency. This is not the case for bitcoin, and it has led to severe  hyperinflation. This is a bad thing for a currency, because if you use it as your yardstick of value (which currencies are) of other goods and services, then everything else's value is constantly being depreciated.

In short, Bitcoins economy dosent work all that well. Its based on speculation, and its only (as far as I can tell) real value as a medium of exchange comes from the drug market silk road, which uses it exclusively.


Whats the technical/database entity of a crypto-currency / Bitcoin? I know that Bitcoin accounts are public private keys combination.

Is it the same with the currency? Is one Bitcoin a combination of public pvt key? Or is it a token?

A bitcoin, as defined in the whitepaper, is a chain of digital signatures. "To own 1 bitcoin" is by definition equivalent to the following: "in the history of transactions, as defined by the heaviest blockchain branch originating from the genesis block, there exist unspent transaction outputs that sum up to 1 bitcoin such that you have the private key(s) required to spend them".


How to calculate multisig address? Given the transaction below, how can I -

Identify this tx involves multisig
What tool/s can I then use to calculate the resulting multisig address

The second HEX address 9d07acef34e0ad5a54f92aae65f49e2f3a24dd39 is easy enough - Base58Check converts it to 1FKJHRVHmyvjDfVbPuBW9e1tdCgt2XWtCb. I can follow the technical background for standard addresses at https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses

To calculate the multisig address I can use bitcoind to decode the raw tx:

./bitcoind decoderawtransaction 010000000147759651f76ec0dbc7c248337d791afa7363636da4af0006fbafb77b9ac8214f070000008b483045022100b980b3bf9b20d1dc98a6cc8c76e19c67c9c24a23fc44a3f6baf1020fb7b6b9ce022029bd5fda88553f1dac92b12c404f65cd2ed97b481244d45558129698e43595ce0141040ab4a6619b82e1555f6c3ac9bd9b62c17433f3fb502d054dce9474ae6639777454b2509aae137c9048adb8491d28710c785b86aee766110d6aa0bcd3b07860a9ffffffff02a08601000000000017a914f815b036d9bbbce5e9f2a00abd1bf3dc91e9551087d0e89600000000001976a9149d07acef34e0ad5a54f92aae65f49e2f3a24dd3988ac00000000

"vout" : [

    {
        "value" : 0.00100000,
        "n" : 0,
        "scriptPubKey" : {
            "asm" : "OP_HASH160 f815b036d9bbbce5e9f2a00abd1bf3dc91e95510 OP_EQUAL",
            "hex" : "a914f815b036d9bbbce5e9f2a00abd1bf3dc91e9551087",
            "reqSigs" : 1,
            "type" : "scripthash",
            "addresses" : [
                "3QJmV3qfvL9SuYo34YihAf3sRCW3qSinyC"
            ]

But this took over 6 seconds to complete.

Is there an easier/quicker to simply calculate a multisig address?

The raw tx:

{

  "value":"0.00100000",

  "scriptPubKey":"OP_HASH160 f815b036d9bbbce5e9f2a00abd1bf3dc91e95510 OP_EQUAL"

},

{

  "value":"0.09890000",

  "scriptPubKey":"OP_DUP OP_HASH160 9d07acef34e0ad5a54f92aae65f49e2f3a24dd39

[ANSWER PART #1/2]

  To calculate the multisig address I can use bitcoind to decode the raw
  tx [...] But this took over 6 seconds to complete.

May be the daemon was too busy processing other things?

The transaction has very simple and easy-to-parse format. You can parse it without bitcoind. It is possible to do it even manually. Look here! Lets take your raw data

01000000 // version id
01       // inputs count
47759651f76ec0dbc7c248337d791afa7363636da4af0006fbafb77b9ac8214f // prev tx hash
07000000  // prev tx output index
8b        // scripSig len
48        // push signature + type
3045022100b980b3bf9b20d1dc98a6cc8c76e19c67c9c24a23fc44a3f6baf1020fb7b6b9ce022029bd5fda88553f1dac92b12c404f65cd2ed97b481244d45558129698e43595ce01
41        // push pubkey
040ab4a6619b82e1555f6c3ac9bd9b62c17433f3fb502d054dce9474ae6639777454b2509aae137c9048adb8491d28710c785b86aee766110d6aa0bcd3b07860a9
ffffffff  // sequence
02        // outputs count
a086010000000000 // value1
17        // scriptPubkey len
a914f815b036d9bbbce5e9f2a00abd1bf3dc91e9551087 // scriptPubkey
d0e8960000000000 // value2
19        // scriptpubkey len
76a9149d07acef34e0ad5a54f92aae65f49e2f3a24dd3988ac // scriptPubkey
00000000 // lock

OK, I've spent more than 6 seconds, but I parsed it with hands :)

take first output script a9 14 f815b036d9bbbce5e9f2a00abd1bf3dc91e95510 87

it is p2sh script - OP_HASH160 f815b036d9bbbce5e9f2a00abd1bf3dc91e95510 OP_EQUAL

convert these 20 bytes to p2sh address and you will get 3QJmV3qfvL9SuYo34YihAf3sRCW3qSinyC

[ANSWER PART #2/2]

  A standard address is
  Base58Check(f815b036d9bbbce5e9f2a00abd1bf3dc91e95510)

#define NET_BYTE  0x00
#define P2SH_BYTE 0x05  // https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki
//--------------------------------------------------------------
const QString MyKey20::toStringP2SH ( ) const
{
  quint8 tmp1 [21];                           // buffer
  tmp1 [0] = P2SH_BYTE;                       // first byte = 0x05 for p2sh addr
  memcpy ( tmp1 + 1, constData ( ), 20 );     // next 20 bytes
  const MyKey32 key ( tmp1, 21 );             // sha256 ( sha256 ( buffer ) )
  quint8 tmp2 [25];                           // another buffer
  memcpy ( tmp2, tmp1, sizeof ( tmp1 ) );     // copy 21 bytes
  memcpy ( tmp2 + 21, key.constData ( ), 4 ); // and concat with checksum
  char addr [40];                             // buffer for human-readable string
  memset ( addr, 0, sizeof ( addr ) );        // clear it and base58 encode data
  BASE58::encodeBase58 ( tmp2, sizeof ( tmp2 ), addr, sizeof ( addr ) - 1 );
  return QString ( addr );
}

and a method for creating "classic" addresses (to compare the diffs)

const QString MyKey20::toString ( ) const
{
  quint8 tmp1 [21];
  tmp1 [0] = NET_BYTE;
  memcpy ( tmp1 + 1, constData ( ), 20 );
  const MyKey32 key ( tmp1, 21 );
  quint8 tmp2 [25];
  memcpy ( tmp2, tmp1, sizeof ( tmp1 ) );
  memcpy ( tmp2 + 21, key.constData ( ), 4 );
  char addr [40];
  memset ( addr, 0, sizeof ( addr ) );
  BASE58::encodeBase58 ( tmp2, sizeof ( tmp2 ), addr, sizeof ( addr ) - 1 );
  return QString ( addr );
}


How does one confirm if my dbcache setting has taken effect via the gui for bitcoin core 0.17? I set dbcache=4000 in my bitcoin.conf file, but where can one confirm if this took affect or not in the gui? I'm on ubuntu 18.

When you run bitcoind you can see it popup on the loading screen. If it shows up here, it will be the same when you run the bitcoin-qt gui wallet too.


Smart Contracts on Bitcoin's blockchain Will projects build on top of Ethereum's blockchain be able to transit to Bitcoin's blockchain when the smart contract platform is up and running?

I would like to explain a bit the smart contract situation in bitcoin, as a "smart contract platform" is not a fixed wording in bitcoin world.  As such your question is not clear. Bitcoin already has smart contracts. A good summary was provided by Andrew Poelstra here.

When you mention Ethereum, then usually solidity is used, which is "turing complete". People tend to state, that only turing complete machines are "real smart contracts". This is opinion based... Bitcoin has no plans to implement turing complete language, at least not directly. There is the concept of "Bitcoin Simplicity", and it's worthwhile to read the discussion thread in bitcointalk. There is also a link to the Simplicity white paper.

Another development is going into side chains, like this.

A whitepaper for descreet log contracts is presented here.

  Will projects build on top of Ethereum's blockchain be able to transit
  to Bitcoin's blockchain when the smart contract platform is up and
  running?

At the current point in time, it is not visible, that people are working on making bitcoin compatible with ethereum smart contracts. It looks more like bitcoin devs are heading in a different direction, to avoid the problems of smart contracts with turing complete machines. When reading through the threads, you'll see how deep the politics are involved on this...


How can I verify someone controls the private key behind a segwit address? With a legacy P2PKH address, signmessage and verifymessage can be used to verify that the other party actually controls the bitcoin address in question. However, P2SH, P2WPKH and P2WSH addresses throw an error for signmessage, and we don't know when or if this will be made to work. So, another procedure is necessary if we want to accomplish the same thing with segwit.

As a work-around, I could have the owner of the segwit address send 1 satoshi to a verification address that I create in my wallet just for them. But that's a hassle and it's off-putting to them. And what if they want their satoshi back? =D; that would be a hassle.

Is there a way to accomplish the same proof of ownership without them having to send me coin?

I prefer an answer using the json rpc on my end (But failing that, I also have access to bitwasp, and failing that, I'm open to anything that runs in php), and the easiest (manual) procedure on their end. These are non-technical ordinary users. I might be able to nudge them into using a particular wallet if that wallet has a feature which will allow them to implement the idea in a better work-around.

I didn't tag this with json-rpc because I don't know what technology the answer will come from.

First of all, the operations signmessage and verifymessage allow to prove that whoever creates a signed message with this address specified can receive Bitcoins in that address. This does not prove the user owns the private key (corresponding to the public key the address is generated from) as this address' private key could be handled by a third-party wallet service (like an exchange), so the exchange would be able to create this signed message too (and the user may not have access to the private key).

With P2SH addresses you cannot create signed messages as they are Pay-to-script-hash (P2SH) addresses. This means using this addresses in outputs can only be unlocked by specifying a valid redeem script in a transaction that spends this outputs where the adress is specified. Therefore, not necessarily public keys must be present in the mentioned script (like a HTLC) and a signing scheme can't be developed as it would require to reveal the redeem script which may cause a serious security issue (like in HTLC after the timelock is over).

A fix you could try in order to get the same functionality is to create a transaction that spends this UTXO where the address is specified with a minimal amount of 1 satoshi and no outputs. This way who does this can prove they can receive Bitcoins in that address.

But notice the security issues revealing a redeem script means (for instance this would not be appropiate for a HTLC but could be for a multisig where every one agrees to create that transaction). This problem replies also to the problem with performing this operations with P2WSH addresses as they share the same main problem.

With native P2WPKH (and P2SH-P2WPKH), a new signing scheme had to be defined due to technical issues. This is already partially implemented (just implemented with P2SH-P2WPKH addresses) in Trezor's web wallet and under development in Bitcoin Core.


Can SegWit block weight be increased without a hard fork? I know segwit's block weight is 4MB. Can it be increased without a hard fork? If no, was that option even considered, and is it even possible?

The explicit block weight limit cannot be changed without a hard fork.


Repeated error synchronizing Bitcoin client I've tried unsuccessfully 2 times to download the application from this site https://www.weusecoins.com/en/getting-started. Last failure stopped at around 16,000 blocks. I am trying to get setup with a wallet and begin buying BTC's. I do not want to use an online wallet service.

The only other applications that I had open during the download was Firefox and I use AVG Free Antivirus, but do not know how to disable it. I have restarted the OS.

What to do?

Thank you very much in advance.

If your computer is overclocked, this may fail repeatedly. Even overclocks that are stable in other situations can fail during this CPU/memory intensive sync process. Go back to stock settings and try again.


Miners don't detect ASIC Devices When I try to add devices to BFGMiner and BitMinter, Only 3/4 devices will be detected, When I go to Devices and Printers (In Windows 7) it shows all of my ASIC Miners.

Here is the error:

2014.02.26 [19:09] BitMinter Client v1.4.3 started
2014.02.26 [19:09] Found 1 OpenCL-compatible GPU
2014.02.26 [19:09]  Hint: Use performance mode for best GPU results (bottom right button)
 2014.02.26 [19:09] Probing all ports for external devices
2014.02.26 [19:09]  Probe of port COM16 failed: timeout
2014.02.26 [19:09] No external devices detected.
2014.02.26 [19:09] Device detected on COM15: Icarus
2014.02.26 [19:09]  Icarus detection on COM3 failed. Expected nonce 0x00000109 but got 0x3F3F3F09.
2014.02.26 [19:09] Device detected on COM3: Icarus
2014.02.26 [19:10]  Icarus detection on COM17 failed. Expected nonce 0x00000109 but got 0xFFFFFFFF.
2014.02.26 [19:10]  Icarus detection on COM17 failed. Expected nonce 0x00000109 but got 0xFFFFFFFF.
2014.02.26 [19:10]  Probe of port COM17 failed: timeout
2014.02.26 [19:10]  Error reading from COM17: File descriptor is -1 < 0, maybe closed by previous error condition
2014.02.26 [19:10] Device detected on COM16: Icarus

How can I get the miners to detect all the devices. The devices are on COM 3, 17, 19, and 20

Thanks,
Bgordy

You are likely running into power limits. Your USB hubs must be powered properly, able to supply the full current all of these devices need to operate.


Basic point multiplication with G in libsecp256k1 I'm trying to work out a minimal example with the bitcoin core secp256k1 library but am a bit lost due to the many options available. Concretely, I simply want to use libsecp256k1 to multiply the generator point G as defined by the standard with an integer k, ie H = k*G.

So far, I found secp256k1_scalar_mul, which multiplies two scalars and secp256k1_fe_mul which multiplies two field elements, while close neither is what I'm looking for. So I was wondering if someone could point me to a suitable function in libsecp256k1?

Thanks!

Remember, as Pieter Wuille said, all exposed functions (only those that you'd need to use) are in include/secp256k1.h

You can use secp256k1_ec_pubkey_create like this:

secp256k1_context *sign = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
secp256k1_pubkey pubkey;

// Here our private key is 1, little endian
const unsigned char seckey[32] = {1};

if (!secp256k1_ec_pubkey_create(sign, &pubkey, seckey)) {
    // Private key out of range
    // abort!
    secp256k1_context_destroy(sign);
    exit(1);
}

// Use 65 and SECP256K1_EC_UNCOMPRESSED for uncompressed public key
unsigned char outpubkey[33];
size_t written_bytes = 33;
secp256k1_ec_pubkey_serialize(sign, outpubkey, &written_bytes, &pubkey, SECP256K1_EC_COMPRESSED);

printf("Public key: ");

for (int i = 0; i < 33; i++) {
    printf("%.2x", (unsigned int) outpubkey[i]);
}

printf("\n");

secp256k1_context_destroy(sign);

Whose output can be verified with ThePiachu's tool and the private key 0100000000000000000000000000000000000000000000000000000000000000


Wallet Recovery Help I’m seeking help from the Bitcoin community to recover lost funds from a wallet.dat file. Someone I know asked me to help recover their lost funds - but I’m stumped and now seeking help from the experts.
Facts

A wallet.dat file was created in approximately July 2017

Ubuntu Linux (v17.10?)
Bitcoin Core QT (v0.16.2?)
The original wallet.dat file was backed up and remains accessible

Bitcoin was purchased on Coinbase and sent offsite to an initial receiving address within this wallet
A few months pass…
Additional bitcoin is purchased on Coinbase and sent offsite to NEWLY GENERATED receiving addresses (99% sure the same wallet)
A few years pass…
The person now wants to send their funds back to Coinbase for sale
They have the original wallet.dat file, but Bitcoin Core software only displays one receiving address (the initial one)

Problems

The wallet.dat file was backed up ONLY ONCE, and PRIOR to the generation of those additional receiving addresses
The device used to create the new receiving addresses cannot be found!
Loading the wallet.dat file into current Bitcoin Core software does not display the subsequent transactions or receiving addresses! Only the initial receiving address!

Questions

Can the funds for all transactions be recovered?
What about the funds which were sent to the new receiving addresses, which were created POST BACKUP of the wallet.dat file?
BONUS: If they can be recovered, what’s the best software to accomplish this, and can it also be done for the Bitcoin Cash which presumably remain associated to this wallet.dat file? Ideally without re-syncing the whole blockchain.

I was under the impression that the wallet.dat file contained a private key which corresponds to any / all newly created receiving addresses, but I must be mistaken.
Any advice would be greatly appreciated. The person is at a dead end and I'm fresh out of ideas.
Thank you

Unfortunately, the method used to generate new keys at the time was to generate them randomly and store them in the wallet.dat file. So if you don't have a backup of the file after the address was used, it is not guaranteed that your backups will have the necessary key.
I would suggesting dumping the wallet.dat file to see all the private keys contained within it. Either it has the key for the address the funds were sent to and you are in luck or it doesn't and you are out of luck.
One easy way to do this is to use the dumpwallet command. There are also tools available to parse a wallet file and extract all the keys in it.


How does the bitcoin client make the initial connection to the bitcoin network? Once the bitcoin client is connected to a machine (or multiple machines) on the bitcoin network, they can share information (e.g. the block-chain, IP addresses of other nodes, etc). I understand how this peer-to-peer architecture is robust to nodes joining/leaving/crashing and not relying on any central authority.

My question is: when I start my client, it has no information about the IP addresses of the other nodes, so how does it know who/where to connect to initially? How does one 'boot-strap' a peer-to-peer network?

The Bitcoin client has a number of sources that it uses to locate the network on initial startup. In order of importance:

1) The primary mechanism, if the client has ever run on this machine before and its database is intact, is to look at its database. It tracks every node it has seen on the network, how long ago it last saw it, and its IP address.

2) The client can use DNS to locate a list of nodes connected to the network. One such seed is bitseed.xf2.org. The client will resolve this and get a list of Bitcoin nodes.

3) The client has a list of semi-permanent nodes compiled into it.

4) The client can connect to a well-known IRC network, irc.lfnet.org, and find other nodes that way. (This method has been removed as of version 0.8.2)

5) It takes IP addresses from the commandline (-addnode).


UTXO model vs. account/balance model I understand that Bitcoin uses unspent tx output and Ethereum account balance based. However, recently there are lots of discussions on that Bitcoin's UTXO database has become too big. Does this mean account balance based transactions are better in scaling than UTXO based?

The choice between the UTXO model and the balance model is primarily one between privacy incentives and apparent intuitiveness.

If one follows the standard advice of not reusing addresses/outputs/scripts, as to not gratuitously reveal which coins belong to the sender and which belong to the receiver, the two models are actually equivalent. In this case balances would be single use anyway, and there would be as many balances as there would otherwise be UTXOs, removing both the apparent size advantage and convenience.

However, the balance model effectively incentivizes reuse. As the cost to the system (possibly in fees, but certainly in node operation costs) for a balance update is lower than the creation of a new balance, such a system inherently incentives revelation of transaction sources.

And even though balances are more intuitive, they do complicate reasoning about the security of the system. One issue is the problem of replay attacks. Assume X paid Y, and Y pays Z. Now W pays Y again. In a naive implementation, Z can rebroadcast his earlier transaction from Y, and could take the money from W's payment to Y. One solution is by putting sequence numbers on balances, and requiring transactions to list the sequence number of the transactions they take money of. Unfortunately, this requires maintaining the sequence number even for balances that went to zero, meaning that the balance database needs to maintain some data for every balance that was ever nonzero; a result that's far less scalable than the UTXO model was in the first place (which can forget outputs as soon as they're spent).

In short, my view is that the balance model reduces the fungibility of the currency as a whole for a short term gain that disappears.


Inconsistency in pubkey hashes usage explanation I am learning about blockchain and reading a lot of stuff, but one question bothers me for last few days.
So in docs they say that P2PKH transactions use hash of the public key instead of a public key and they persistently put a following reason behind this: usage of hash of a public key obfuscates the real public key which may provide some additional security.

Ok, hash really obfuscates. So in the pubkey script of the transaction output I will use the hash of the pk and in that way will not expose to the P2P network the real pk of the transaction recipient. But at the same time, when transaction recipient wants to spend it he will need to provide matching signature script and there he needs to insert full unhashed public key, which will then be broadcasted to P2P network in his next transaction.

So why the hack they repeat saying in different lectures that using hash of the pk obfuscates and hides the real full pk, while at the same time everyone will see and have full pk when spender submits his next transaction?
Do I miss something important here?

No, you are not missing anything. Yes using P2PKH obfuscates the public key, and yes the public key will be revealed when the UTXO is spent (the public key is needed to check the signature). Hence, the obfuscation of the public key only exists until the UTXO is spent and not after. This is why it is recommended not to use the same address twice. If you partially spend a UTXO, the 'change amount' should be sent to a new address, so the public key of the new UTXO is still obfuscated.


I have waited for 2days now my transaction not confirmed yet I have made 2 transaction but not confirmed yet
Blockchain: a68891b83177797c932873e3e5ff601bcea6e28b1cdbeb5a038dc0939c8371e0,
543c5f4612398c0b783fd3959a3390850a584c79a6c4fbe80bef88ebf455878f pls i need to be fix urgently

I can see that one of the transactions has been confirmed, so your problem is half solved. For the other transaction you just need to wait. If you're experienced enough you might as well want to rebroadcast the stuck transaction with a higher fee.
The problem
The transaction fee you have included in both transactions is way too low. At the current state of the bitcoin network, there is not enough room in blocks to fit all of the transactions, so the miners pick only the transactions with higher fees.
Prevent from happening again
If you require your transactions to be confirmed in a short period of time, then you need to include a much higher miner fee. You can use the following site as a guide as to what the fee should be:
https://bitcoinfees.21.co/


transfer my bitcoins I'm trying to get my bitcoins that I bought years ago, but my Bitcoin QT never synchronized to receive! I have now downloaded bitcoin core and I was informed that once I did it should automatically simply transfer over, but it did not! So what are my options to get them back?

After the purchase, you've most likely sent the coins to some address. If an address was from BitcoinQT, only thing it needs to do is synchronize, and coins will be in there.

However, you mention that "I have now downloaded bitcoin core" . If you use new BitcoinQT client, and especially on a new device, it has no idea of your previous keys, and it generates new ones.

To conclude, what you need are private keys that correspond to the address you've sent the coins to. Maybe try to import them in another wallet, like Electrum

https://en.bitcoin.it/wiki/Transferring_coins_from_Bitcoin-Qt_to_Electrum


What factors can be looked at in order to come to a fundamental valuation of Bitcion? I'm wondering if current prices are high or low. Most people I talk try to explain to me how the price chart looks like (just like at the other bubbles, right?)...

Is there any means how we can do more of fundamental valuation (just like for a stock) for Bitcoin? I'm not too much into chart analysis, I want to get a feeling of the real fundamental value.

The only information I found on that the BofA thing that is much talked about: http://www.forbes.com/fdc/welcome_mjx.shtml

Frankly, this doesn't seem to be a very well thought-through fundamental valuation.

Also, I've seen this: http://bitcoin-valuation.org/fair-value-bitcoin-28823/

I would be interested in opinions if these sources are OK to be considered, and I'm also interested what other factors there are to consider.

Thanks in advance for your help!

Recognizing that Bitcoin has no INTRINSIC value, we look for its USE value, so to speak. The primary value of BItcoin is the reliable and indefeasible transfer of property title (money) between two users. Ever since the first use of the Nakamoto protocol in Jan 2009, there has been a proof-of-concept that has remained valid for almost five years and continues to function through extreme volume and market volatility.

This proven ability for reliable performance is the principal value of Bitcoin. Were it to be compromised, or made to fail massively, the value of a bitcoin would collapse, until it could be repaired, or perhaps to never recover.

Other subordinate values-in-use can be analyzed in like manner, but as long as this primary value is intact, the price of bitcoin will continue to rise as it will continue to be useful, and thus valued for its use.


In which Block was Len Sassaman memorialised? It has been mentioned a couple times here and there that Len Sassaman was memorialised somewhere in the Block Chain. I was able to find a dump of of the tribute to him, but I can't seem to find where in the Chain did this tribute come from.

What are the Blocks/Transactions that contain the tribute to Len Sassaman?


What is anonymous and safe api to get bitcoin Exchange Rates? What is anonymous and safe api to get bitcoin Exchange Rates like BTC/USD and BTC/EUR without trace my ip ?

i used tor service, i search and found blockchain api contain Exchange Rates Feed

http://blockchain.info/ticker

is this secure means if i use this api, can blockchain trace my ip(tor) ?

and how can i use this api in php ?

and if anyone have others api provides bitcoin Exchange Rates Feed please tell me ?

thanks

Any internet service, including an API, will be able to see the IP address the request originated from. It is reasonable to assume that at least in form of some log file, such information gets records by the API provider.

You have already indicated that you use TOR, which should, at least ideally, hide your real IP from the API service by effectively substituting the IP of the TOR exit node you happen to be using. If that achieves your goal depends on your motivation for hiding it in the first place. Note that TOR is not designed for, and likely not capable of, hiding your real IP from someone doing pervasive internet-wide wire sniffing (NSA, maybe?). Such an adversary would be able to simultaneously observe all traffic at all TOR nodes and correlate incoming and outgoing network activity of TOR nodes to potentially determine what your real IP address is.

You didn't specify why you want to hide your IP from whom exactly, and I'm having one of my unimaginative moments where I cannot come up with a likely scenario why it may be important for you to hide the fact that your computer was involved in looking up publicly accessible information where widespread interest for a whole variety of reasons exists anyways. Hence, I can't judge if for your application, this is sufficiently anonymous and safe (as you asked).

All bitcoin exchanges maintain their own public API for their exchange rate and usually lots of other data, even full order books. If you are happy with delayed third-party data, you can indeed also look at e.g. blockchain.info or bitcoincharts.com.


Is a bank account sufficient to receive money in Bitcoins? A few questions regarding bitcoin money transfer:

Can anyone transfer bitcoins into my bank account or do I need to have some bitcoin account for that?
Is it legal to receive bitcoins? Especially in India?
Why should one take payments in bitcoins? Is it a good idea or better avoid it?

Bitcoin is a form of money, asking if you can "receive it to your bank account" is like asking if you can "receive gold to your bank account".
The answer is generally going to be "no, you have to first exchange the bitcoin for your local currency, and then you can deposit that money to your bank account".
Be aware: bitcoin is a borderless digital asset, so while transferring it across the world is generally quite quick and easy compared to legacy financial instruments, if your goal is to use it as an intermediary (eg USD -> BTC -> INR), then you'll likely encounter exchange fees (ie, the service fees of the exchange service you use) and other friction (KYC, etc). It is very possible to use BTC in this way, but it is a lot clunkier than just using BTC alone to settle payments.


Having trouble with a new wallet Not sure if this is the right place to post because it is not specifically bitcoin, but it is crypto, and I need the help of someone a bit more tech-savvy than myself... I have just downloaded the wallet for a new cryptocurrency, and it was working fine, but as I was getting used to the layout, I accidentally checked “connect through socks proxy” box in the settings. Now I have tried to go back on the wallet and it won’t open, and comes up with error message “unsupported argument - socks found. Setting SOCKS version isn’t possible anymore, only SOCKS5 proxies are supported”. I have tried deleting all the files, redownloading the wallet, and restarting computer, but it still comes up with the same error message and won’t let me open the wallet to change the setting back! Is there a way to change this setting without opening the program, or bypass this error message so I can open it and change it? As this is a new currency, there is only this one wallet available so I can’t just use a different one, and I really don’t want to leave my coins sat in the exchange! Thanks in advance for any advice..

The solution for anyone else is to change the Ignition registry value for fUseProxy back to false, then relaunch the wallet. Search for it in regedit.


Why do miners go offline? As per my understanding mining process in bitcoin is fully automated. A manual intervention is needed only when:
(i)  A hardware failure occurs
(ii) You might want to cool down the hardware
(iii) You completely shut it off (can be due to various reasons)
Are there any more reasons why a miner might switch off his/her system given that the complete process is automated?

One of the most common reasons for which miners go offline is when their profitability drops below the cost of electricity - this could either be the result of the BTC price dropping, or their local operating costs (costs including air conditioning, power, networking, hardware depreciation, etc.) rising, or the total network hashrate rising faster than they are able to acquire a new set of machines to proportionally increase their hashrate.
Remember that most miners aren't usually operating a single machine - they usually operate a mining farm, where a single machine's hardware failure or thermal shut off won't actually take the miner's entire operation offline, just reduce their effective hashrate. For a noticeable removal of hashpower from the network, such as when an entire farm is shut off, the cause is usually economical.


Importing master keys on bitcoin core I want to use a mnemonic phrase and BIP 39 to store the keys, and use bitcoin-core, I understand that master private keys cannot be imported at least directly and that mnemonic phrase is not supported.

Also, I know that there is the idea of re-think the wallet format of bitcoin core to use descriptors, that support key derivation using BIP32.

My idea was to use importmulti to generate a basic usable wallet with some addresses generated from the master account key.

Using https://iancoleman.io/bip39/ , I've generated a seed and mnemonic:

rebel image use energy write boil throw okay claw
umbrella advice together clarify water actress

From there I can get the account extended private key (44'/1'/0'):

tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o

From there I can build some descriptors to build usable wallet:

External

deriveaddresses "combo(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/0h/*)#quvrmfad" 0
# => ["myeHNHuNnbk1aG4WcJNkWw6foM2G64AXGF", "myeHNHuNnbk1aG4WcJNkWw6foM2G64AXGF", "tb1qcm233e9h79ntuv4c5mhsvmfhe2umvm0hsgafsf", "2N56BvNBqmkTh1Jic4GbpXSYpbtTNHUdQFw"]

Internal

deriveaddresses "wpkh(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/1h/*)#6gdaynzv" 0
# => ["tb1q5vgxy6ntsugpdde9ryhst66cz8z4c8ztp4k7qv"]

To generate the wallet, I've created an empty wallet (as I don't want to depend on backups, just the mnemonic I generated earlier), and import some addresses with importmulti:

createwallet "mnemonic-test" false true
importmulti '[{"desc": "combo(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/0h/*)#quvrmfad", "range": 10, "timestamp": "now"}, {"desc": "wpkh(tprv8fvSBE7NPnC8FJfBwcptSmmgxhQZhsAbbzRWaLo9d9ystozdV7BFUbRHqvYgL18fnV3WfM4GZb2cLKbLq5H8qZqC9XDnq8Mep3RWXfRsZ7o/1h/*)#6gdaynzv", "range": 10, "internal": true, "timestamp": "now"}]' '{"rescan": false}'

It seems to work, all the generated addresses are generated, there is no HD seed enabled (so the addresses are always derived from the mnemonic seed).

The problems I found is that, those addresses, are never used by bitcoin-wallet, when trying to receive bitcoin it says it cannot generate an address (does not try to use one of the already generated addresses) and when spending it says it does not have any internal address available.

Do you know how to enable those coins?

You cannot import private keys to the keypool. This is currently not allowed because it is generally regarded as unsafe, at least with the way that the wallet works today. There is ongoing work to change this in the future.

You could do a split wallet setup where you have a watch only wallet with the pubkeys imported into the keypool and use that for address generation and transaction creation. Then you have a wallet with just the private keys imported and you use that for signing. But that's not what you want.

If you aren't tied to using a BIP 39 seed, you could generate a 256 bit seed and use sethdseed to set the HD seed of a wallet. That would do what you want, but BIP 39 uses 512 bit seeds and not 256, so it won't work there.

Imported addresses are never automatically used when you do getnewaddress. When you import them, you need to set keypool: "true" for each imported object for that to work.


Can I develop an API which will accept bitcoins and regular currency using existing API's such as coinbase and stripe? Can I develop an API which will accept bitcoins and normal currency using existing API's such as coinbase and stripe? This API when used by a merchant should be able to accept both bitcoins and regular currency on his website.?

tl;dr It could be done, but doesn't seem to be incredibly useful as there are already systems that already do this, combined multiple payment methods into one easy to use system/API. (e.g. WooCommerce)

I don't know much about Ruby or Stripe, but the blockchain API is pretty easy to use and has some fairly decent docs. (API Docs) It just requires you to open the web page it specifies using a simple get request which will return a JSON string. Just unencode it and all of the informations is right there. It only requires one call to create the address to give the user. It will forward the bitcoin to the bitcoin account of your choosing. It will also send a callback to your URL of choice which will tell you when they send a payment. Make sure you don't send the user anything until the payment has at least one callback to prevent double spends. Six is the recommended number for high value payments.

I guess you could make an API of sorts where you specify what kind of payment method the user chooses then having it respond with just a single callback that would alert you when the payment complete was what ever the payment method. Which would have the benefit of the merchant using your API only needing to know your API instead of every API. However WooCommerce and other ecommerce tools acomplish this by allowing you to use multiple payment methods. For example you could use WooCommerce with their default credit card payment method in conjution with my Bitcoin payment method.


Where can I get tick by tick historical BTC volume data? Related to Where can I get tick by tick historical BTC price data? but I need volume data in association with price for all the time tick by tick

Thanks!

You might want to try http://www.cryptodatasets.com/ It has free raw data and sampled data from Bitfinex and HitBtc (currently).

P.S. it's my website


Mycelium Backup Restore Is there a way I can restore my mycelium Bitcoin wallet if I have forgotten the 12-word list?

I have searched everywhere and no one describes a situation like this.

Short answer: No. Do you still have access to Mycelium and can send BTC from there to other addresses? Then you could transfer funds somewhere else. But to restore a wallet e.g. on another phone you need the mnemonic words based on the security implemented to secure wallets (or the extended private key which you probably do have as well).


Help with bitocin.conf - how to configure a testnet full node in a safe way? The general purpose here is just to have a close interaction with the bitcoin network for exploring reasons and apply some knowledge I have gained through reading here and there.

I am not expert! So, I am afraid to mess up and enable something in the bitcoin.conf, I am not fully aware of it consequences. Especially that my personal laptop (running Ubuntu) is the only resources I have right now for a full-node setup.

My initial goals are to:
 - run a testnet full node to experiment with the avaliable limited resources
   (4 RAM, 50 gigs free storage and metered internet connection)
 - secure my fullnode in the network (I setup the ufw firewall and created a
   new separate account no idea though if I must do more in terms of the
   account permissions. It is a standard one)

The only examples, I found are:
1) a very general file in github: https://github.com/bitcoin/bitcoin/blob/master/contrib/debian/examples/bitcoin.conf

2) This one I found in the bitcore.io documentation: https://bitcore.io/guides/wallet-service

I tried to edit it a little bit to serve my goal, I hope you can have a look into and I am more than happy to hear your recommendations. Maybe, I have to put it in another format, since it is meant to be a conf file for the bitcore implementation. I embedded some comments and questions in the file

Here it is:

{
      "network": "testnet",
      "port": 18333,
      "https": true,
# must I create my keys myself? Is it the pathway important here?
  "httpsOptions": {
     "key": "some-place-safe/key.nopass.pem",
     "cert": "some-place-safe/cert.pem"   },
  "servicesConfig": {
     "bitcore-wallet-service": {
 # is it ok to use this port?
       "bwsPort": 3232
     },
     "bitcoind": {
       "datadir": "/home/user/.bitcore/data"
       "exec": "/home/user/bitcoin/src/bitcoind"
     }
 },
      "services": [
         "bitcoind",
         "bitcore-wallet-service",
        "insight-api",
        "web"   ]
}

Probably, other stuff must be added, at the moment I am still lost and trying to navigate through the first conf file

Thanks a lot in advance!

You should use the one provided in the Bitcoin Core repository which you have linked above. That one has everything disabled by default (so only defaults are used and it will run fine out of the box and use the mainnet). All of the options that you are going to ever use are listed in that conf file with instructions on what they do and how to use them. They're all commented out.

  Maybe, I have to put it in another format, since it is meant to be a conf file for the bitcore implementation

You will need to do that because that format of conf file (JSON format) is not supported by Bitcoin Core.

The questions you asked regarding the bitcore conf are completely irrelevant to Bitcoin Core as it does not support those options.

Alternatively you can use this Bitcoin Core configuration file generator which lets you choose the options you want to enable and it will generate the file for you.


What is the strategy mining pool servers use (regarding difficulty)? If I understand correctly mining pool servers give miners target thresholds of lower difficulty so each miner can mine a number of 'block solutions', called shares.

For example if threshold is  0000 1000, mining pool can give each user the threshold 0100 0000, with 1000 times lower difficulty. Then every cca 1000 mined shares will give one actual mined block.

The actual target threshold in the block header stays as original as having lower difficulty in block header would invalidate original block hash and lower target threshold is communicated separately?

Is each miner given the same difficulty?

Is client's hashing power taken into account when assigning work?

It depends on the pool. Some pool use a fixed difficulty. Some use several and allow users to choose. Some automatically set the difficulty, with the aim that each miner generates a share every few seconds.

If the difficulty is too low, network traffic is too high (and some miners, such as the antminers, cannot generate more than 40-50 shares/s, regardless of the difficulty).

If the difficulty is too high, then miners generates shares too infrequently, and it may lead to a lost of efficiency, because the job changes every 10 minutes (each time a new block is mined).


Blockchain Address gap limit solution I want to use blockchain API for my store but the wallet only monitoring last 20 generated address.

Quote from https://blockchain.info/api/api_receive:

  As defined in BIP 44, wallet software will not scan past 20 unused
  addresses. Given enough requests from this API that don't have a
  matching payment, you could generate addresses past this horizon,
  which would make spending funds paid to those addresses quite
  difficult. For this reason, this API will return an error and refuse
  to generate new addresses if it detects it would create a gap of over
  20 unused addresses. If you encounter this error, you will either need
  to switch to a new xPub (within the same wallet is fine), or receive a
  payment to one of the previous 20 created addresses

I googled about this problem and found some solutions such as:

Solutions that I found

Check gap with blockchain checkgap API and don't generate new address until they have been paid.
Increase gap limit on the receive api.
Send money to the last unused address.

Problems with these Solutions

If I have 20 unpaid address and they never been paid, solution #1 can not solve the problem. it just say I have 20 unpaid address.
Solution #2 can not solve the main problem. Even I set the gap limit to the 100, How about the time that 101 curious users only want to see the checkout page and close it. I will get 100 unused address again.
Solution #3 is not a nice solution to me. It seems like a bad practice to me and this is a solution that solved by spending money.

My Solution

If I get it right, when Blockchain generating the address, It will be there until it's getting paid. Correct me if I'm wrong, Blockchain will not callback until the user pay the amount. so I do this to solve the problem:

Check the gap by API. If gap>19 goto #3 else #2.
Generate the address and store it inside unpaid_address table based on the "index number" that blockchain returns with address. set expiration time for 30 minutes and go to the #4.
Get the first expired unpaid address from unpaid_address table. If there isn't anything, show sorry server is busy, else goto #4.
show the address to the user and say you have 15 minutes to pay to this address. (15 minutes less than expire time to avoid problems).
If blockchain callback my URL and It has been paid before the expire time, I remove the address from unpaid_address else the address has been there for the next request by other user. I will give that address to the next user for paying.

Question

This solution give me the ability to never exceed gap limit. But I don't know if it's safe to give the address to a user and if he didn't pay on 30 minutes, give it to another user.

What do you think? Is it safe? or is there better solution?

About giving the address to multiple users

First user see the checkout page in 8:20AM and send the amount to the address. but there is no confirmation in 15 minutes. the confirmation come in 11:00AM.
Second user see the checkout page in 9:00AM and send the amount to the same address. there is confirmation in 9:10AM so I will return callback result as paid.

What about the first user confirmation on 11:00AM?

Blockchian.info is not really qualified to provide Bitcoin API's for business, 20 empty addresses are really cool and enough as a personal wallet but for business, it's not.

I suggest you find an alternative or use some payment gateways, or you can do the following but it's not really recommended.

Increase 20 address limit by getting more than blockchain wallet, When some user create an address check gap if it's over 18 change the xPub to the next xpub and go on.
15 min time limit, if the user didn't pay within 15 min, give it to another user. Note: You don't have to wait for confirmations. Once you receive a transaction mark those addresses so you don't give them to another user.
Before you reach address number 20, pay a small amount automatically to that address so you get another 20 address.

UPDATE:

You can't create an xpub Programmatically (using blockchain.info api), but a new wallet

https://blockchain.info/api/create_wallet

You don't really want to do that, you can create like 5 xpub's keys and store them in your database, and just sweep between them.

Settings --> Addresses --> + ADD. Click To create a new xpub key.

Manage --> Show xPub. To get your extended public key (xpub).


Can we I identify crypto-exchange (BTC) hot wallets? I am interested in understanding, how the large crypto-exchanges handle deposits and withdrawals of BTC. I am aware of some examples of ETH-related hot wallets which are rather easy to identify but it seems to me this is not the case for BTC. I tried the following:
- Deposit and Withdrawal funds from my trading wallet at different crypto-exchanges (poloniex, kraken and bitfinex)
- Trace back the initiator wallet of these transactions.

Seems like they are kind of using several in- and outputs to hide the actual flows.

So my question: If I am interested in tracking (approximate) BTC-flows between the different crypto-exchanges, what would I have to do?

it really depends. Some exchanges have their addresses labeled in services like Blockchain.com and so on. I believe they share with them the Xpub so they can map all of them back to the exchange.

Not all exchanges have that.

I've tried to do that once and gave up because the quality of the data available on which exchange controlling which addresses is really low. Additionally some exchanges (I don't know how many nor which) do these interexchange transactions using the Liquid side chain. Maybe some of the blockstream guys hanging around can illuminate my answer here

So, unless you have direct access to the exchanges' Xpub or some good data source on labels, it's really hard to do this type of analysis


Why do namecoins have any value? Many Bitcoin mining pools offer merged mining with Namecoin, and there are places where one can buy and sell BTC for NMC and the other way around.
But, why would anyone want to own NMC? As far as I understand, browsing dot-bit domains doesn't require owning NMC.

Namecoins are used to register .bit domains:

http://dot-bit.org/HowToRegisterAndConfigureBitDomains

They're also bought and sold by speculators, but DNS registration is their original purpose.


Signature: encoding a message - transaction to a point of curve y^2=x^3+7 and Bitcoin Core Where should I look at in Bitcoin Core source code to figure out how the signature process trasform a message in a curve point?

To sign a transaction (message) in Bitcoin system, you need to encode the message to a point of the curve y^2=x^3+7. I read this Koblitz's paper. There are three encoding schemes. I read this question too.

If I look at in Bitcoin Core source code I can't see any of these encoding schemes, it seems to me that message M is directly encoded in a point m=hash(M) without check; obviously that is not possible, there is roughly a 50% chance that a random 256 bit string don't correspond to a point of the curve. I can't find out how/if the ECDSA library checks if hash(M) is on the curve or not and especially what it does if the hash(M) is not on the curve.

What encoding scheme does Bitcoin-ECDSA implement and where is it in the source code?

Thanks and sorry for my English.

EDIT:

Bitcoin: Signature generation (ECDSA)

Given a message m to be signed and the private key d,

Choose a random integer k in [1,n-1].
Compute (x1,y1)=kP, convert x1 into integer and r = x1 mod n.(Return to step1 if r = 0)
Computes=(k^-1)*(SHA1(m)+ dr). (Return to step 1 if s= 0)
Signature is (r, s) pair.

Why SHA1(m) should be a curve point? There is only a 50% chance.

To sign a transaction (message) in Bitcoin system, you need to encode the message to a point of the curve y^2=x^3+7

Perhaps you're thinking of ElGamal encryption, whereby you do need to select a point on the curve which represents your plaintext.

However for signing, Bitcoin uses ECDSA, and this has no such requirement.

If you're interested, the code which implements ECDSA signing is in secp256k1_ecdsa_sig_sign(). For example, this is the code which implements step 6 from the Wikipedia link above.


Can I replace the fans in a Zeus Hurricane x3? This thing sounds like there is a jet waiting to take off in my office.

Can I replace the fans with quieter ones? If so, can you recommend which fans to buy to replace the stock ones?

Thanks!!

You're looking for a 120mm x 120mm x 38mm fan which can produce at least 120 CFM of airflow and runs on DC 12V. (Source.)

According to a random guy on the internet, the stock fans produce about 60-70dB of noise.

There are various fans you can buy, but they're all pretty similar in terms of noise.

http://www.newegg.com/Product/Product.aspx?Item=N82E16835213006

You can also buy one that has less airflow, but is much quieter.

http://www.newegg.com/Product/Product.aspx?Item=N82E16835132022

...or, if you've ever looked at your Hurricane and decided you wanted twice as much airflow, you could install this:

http://www.newegg.com/Product/Product.aspx?Item=N82E16835706015

(The product reviews even use the phrase "jet engine.")

This will void your warranty. (Assuming you have one.)


Explain how to send bitcoins from multiple addresses to one Let's assume that user has a wallet with 3 bitcoin addresses:
A, B, C.

The user received 1 BTC to address A,
1 BTC on address B,
1 BTC on address C.

Now the user wants to send 3 BTC to another user. How would he do it?
What about miner fee, will it be more than in case of sending from one address to another?
Please help me understand that question.

How would he do it?

It depends on the wallet manager you are using.

If you mean how does it do it under the hood it adds multiple inputs to the transaction and signs it with the private key of each address.

  What about miner fee

Considering that the suggested fee should be proportional to the weight in terms of data of the transaction, since a transaction from multiple addresses should be smaller (always in terms of data) of multiple separate transaction the fee can be slightly smaller too.

Yust to give you an idea writing

A -> D
B -> D
C -> D

Takes more space than writing

A, B, C -> D


Can old coins be banned by a soft fork? Satoshi Nakamoto is supposed to own 1.000.000 bitcoins on a thousands of wallets, and most of them are untouched since early blocks. This stake can potentially flood the market, so miners could probably be interested in banning them.

So, is it possible to create a soft fork (protocol update, approved by most of hashing power), that will deny any future transaction with early block coins? It is not really fair, but miners are greed and they should probably approve it. Is it a possible scenario?

Yes, since blacklisting a set of UTXOs would be done by adding more rules and thus restricting the set of allowed transactions, technically such a change could be introduced as a soft fork by the miners.

However, I would sincerely doubt that censoring Satoshi from spending her coins would find broad community support. I suspect that such an endeavour would quickly escalate the already existing tensions between community and miners.


How can I find out where I sent my coins just from an address? I have the address where I sent it to but I can't remember what the company was I send it to c2752e86c773ae6293b1b89687b0400ac5b416d90b556eb7f0e0fe7ea0704bfb

I am pretty sure that there is no way to identify who or where you sent the bitcoins. Bitcoin is designed so that anybody can view your transaction but nobody should be able to take away private information (like the name of the company) from the publicly accessible address.


Lightning bumpfee completes but doesnt create a new transaction. Instead it waits in "pending sweeps" I had a Lightning channel open transaction pending for 24 hours due to a low fee.
So I issued a bumpfee for the output index like so:
lncli wallet bumpfee --sat_per_byte <new_fee> <txid>:<output index>

This completed with a return value of 0.
However a new transaction was never created.
Instead there is an output in the command:
lncli wallet pendingsweeps

where I see the <new_fee> specified and the "outpoint" being the txid:output_index value
So what do I need to do to complete this CPFP operation?

My bitcoind didn't have the parent txn so the bumpfee never completed.
I restarted my bitcoind, lnd, rebroadcasted a raw txn that I got from another node's mempool and issued a bumpfee again.
A new txn was confirmed shortly after


Why do most exchanges still have not implemented segwit bc1 addresses to save block space? Segwit bech32 bc1 addresses has been out for a good 2 years. Why do most exchanges still refuse to implement such a feature for its users? Exchanges create a bulk of the bitcoin transactions and also can promote the use of segwit bc1 addresses. What are some technical pitfalls to why big exchanges have not implemented this feature?

The primary reason is the lack of incentives to actually migrate their entire system. Lower transaction fees is the most direct benefit that SegWit provides. I'm not discounting the other myriad benefits that SegWit brings to the table, but for exchanges this is the most rational one. Below is a chart that shows the average transaction fees used by all the pending transactions in the mempool.

As can be seen, the transaction fees isn't that high for the exchanges to get the transactions confirmed. This is because the mempool congestion isn't high enough. Below chart shows the mempool size (aggregate size of the transactions waiting to be confirmed).

The small decrease in transaction fees that can be achieved with the help of SegWit doesn’t justify the monetary or time costs required to upgrade all wallets to the new standard. Replacing legacy addresses and migrating them to Segwit is a very cumbersome process for exchanges. For centralized exchanges, the largest cost cutting come from batching (aggregating many outputs into a single transaction) which they do when sending bitcoins from individual account's address to the centralized addresses. This underscores the exchange's decision of not moving to SegWit since the fees for getting transactions are already low. In future, if we see mempool congestion like we saw in latter half of 2017, we are most likely to see migration to native SegWit addresses.