Bitcoin Core - server uptime, privacy and security questions For now, bitcoin core has to run on my main computer. Once the block chain is downloaded, I see instructions that I can leave it running only 6 hours a day. OK. I can do that at night. I assume I also need to turn it on any time I want to view my wallets, make payments, and recveive payments. No problem.

What about securituy? I live in an apartment building with shared Internet access - quite amazingly fast too. I don't know how secure I am from other apartment dwellers or from the Internet. Advice here? Should I only have the core on when using TOR or proxy or both? Can a sender or receiver discover where I live if I don't use TOR and/or proxy?

Thanks,
 - J

security... TOR

It is important to note that TOR does not provide added security. In fact, it could decrease security because you are funneling your traffic through exit nodes which could try to manipulate or log that traffic.

TOR does however help with privacy because it helps hide your actual IP address and therefore location / identity.

Running a full node alone will improve your privacy a bit over other types of "light" wallets (like Multibit) and if you follow the advice of
@makevoid above, you can improve security by moving your wallet.dat file to an offline computer. There are many other options for improving security and are easier to manage - look into hardware wallets and BIP38 encrypted paper wallet created offline.

  how secure I am from other apartment dwellers

Anything running on Windows should be considered insecure.  If you are using Mac or Linux, you chances of being hacked are much lower.  Running a firewall makes sense as does using physical ethernet cable (rather than WiFi).  The three options above (offline signing, secure paper wallet and hardware wallet) will all protect your private keys if done correctly.

  I can leave it running only 6 hours a day

Running a full node will not help others on the Bitcoin network if you are only running it for 6 hours a day.  If that was not your goal, then no harm done.  The "6 hours" is arbitrary, you will just want to run it enough to keep it up-to-date (in-sync with the network) as new blocks are created every 10 minutes.  Depending on your hardware and internet connection, this might require bitcoin-core to sync for just 15 minutes per day like my Macbook Air.


Are mnemonic phrase order-sensitive? Is it important to remember just the set of the words, or also their order?
If I kept them without the correct order. Can I easily decrypt my wallet?

The order is important.
If you have 24 different words but don't know the order, you have to try up to 24 factorial permutations. That is around 620448401733239439360000 different attempts. This may take a very long time and cause you great anxiety, unhappiness and self-recrimination.

Related questions:

Unsure order of 12 word mnemonic
Bruteforcing a seed with 24 words of a unknown order
Lost my old-Electrum 12-word mnemonic seed order
Bruteforce bitcoin address - I know the words + public address but not the order


How can one reinitialize the HW.1? I've got a HW.1 a while back at a conference without any additional information. I had played around with it a little bit then, but didn't intend to use it as a wallet immediately.

Now, I've been trying to set it up as a wallet. When I start the Ledger Wallet Chrome Plugin, it tells me that I should do a Chip-Firmware-Update.

Unfortunately, it will not let me progress with the Update unless I put in the "Security Card QR-Code". I don't have it, as I just got the plain card, and didn't make note of anything when I was playing around with the HW.1 at first.

So, the Chrome plugin won't let me do anything except go to "update", but won't let me do the update without the Security Code.

How can I reset or reinitialize the HW.1?

Update:
I've found the page on Ledger's site to generate a new Security Card. By entering the code, I got to a new page requsting that I check a sample from the Security Card. Unfortunately, clicking "Continue" on that page doesn't seem to have any effect. So, I'm still stuck.

I've already written the usb-rules to my system.

I have a HW.1 too. I purchased mine, so it came with the recovery card. If you have your recovery card, you might be able to contact their support and ask how you could convert your security card's details into the 16 byte key

If you can't do this, then use the link you posted previously to generate a random key, and then generate your card. Remember to save both.

Delete the seed currently on the HW.1 by typing in the seed 3 times incorrectly.

Plug your ledger in and then try to update the firmware. Once it prompts you, put in your random key. If this doesn't work, try using their online site. It may not be as safe. IIRC you can download their special initializing software and mount it as a boot drive on a USB and do it air-gapped.

If it still doesn't work, I guess your best bet would be to contact their support.


ASIC and FPGA feasibility as GPU I've done a minor amount of research into the topic of bitcoin mining using ASICs and FPGAs, and I've started wondering:

Could these be used as GPUs (possibly specialized to a subset of what modern GPUs are capable of)?  If they're so much faster than GPUs, what is preventing them from being adopted as a GPU replacement?  Is it just that they are specialized hardware and simply can't perform all the tasks a modern GPU can?

And as a quick side-question: Do password crackers use these as well?  If not, why?

No. ASICs are Application Specific, so they can't do anything else. Not password cracking either.

You can use them as an electric heater.


How safe is a brain wallet? Edit: The answer is that they are unsafe and have been attacked. Please don't use them!

Brain wallets can be created with a (minimum 15 character) pass phrase at https://www.bitaddress.org

There are no warnings given on the site about the safety of this. How secure are brain wallets?

A recent contest provided 5 bitcoin (receiving) addresses generated with a brain wallet pass phrase, with each address holding 1BTC as a prize.

The challenger did give some hints along the way, but within 7 hours, the first prize was taken, and after around 18 days, all of them were taken.

The author of the blog summarises that brain wallets are generally safe, but is this really the case?

With a well indexed database of the existing Bitcoin addresses that hold a positive balance and a well-tuned script for trying out likely pass phrases, surely there's some quite long phrases that would still be easy to guess?

They can be made a heck-of-a-lot safer with simple key-stretching.  The WarpWallet runs Scrypt on your passphrase, and outputs a string in the full 256-bit keyspace.  It's at least 1000x more expensive to guess a WarpWallet address than a standard brainwallet address.  And if you had access to high-end scrypt-computing hardware, you're probably better off using it to mine litecoins rather than go after WarpWallets.  See https://keybase.io/warp.  There's a 20BTC challenge to solve an 8-letter WarpWallet passphrase that's been open for almost a month.


Will the proof-of-work system end when all bitcoins have been mined? This article from ArsTechnica is claiming that Bitcoin is not such an environmental disaster, and one of the reasons they mention is that mining will come to an end.

Ok, fair enough, there is an end in mining because the number of bitcoins is fixed but, is there an end to the computation algorithms taking place when generating blocks? My guess was that proof-of-work would still be needed at that time, therefore we would still need ASICs, GPUs or whatnot?

No, mining will not come to an end at that point. The article is incorrect.

Mining will continue once the block rewards are no longer available, as transaction fees will continue to be offered. As the block rewards tend towards zero, the total value of transaction fees in each block will start to exceed the block reward. This will happen long before the block reward reaches zero if Bitcoin continues to be grow at the current rate.

Mining is required to provide the confirmation that each transaction is valid. If mining was to end, it would be because nobody was submitting transactions any more. This isn't anticipated any time soon!

This chart shows the value of transaction fees per day, in BTC. Currently, about 50BTC per day is paid in fees, which works out to be about 0.34BTC per block (50 divided by 144, which is the number of blocks per day).

If Bitcoin remains at it's currently level of popularity, transaction fees will be larger than the block reward by the year 2040. By the year 2064, more than 99% of miner's rewards would come from transaction fees. After 2140, there will be no more block rewards given.

Related questions:

The End of Mining
How much will transaction fees eventually be?


Blockchain.info send may transactions API v2 I'm currently using v2 of Blockchain.info's API and am wanting to utilise "Send Many Transaction" and am having some issues.

I have 1 wallet with many addresses, I am trying to send 2 transactions within 1 payment, their API documentation is still from v1 and is missing the '&from' from their api example, and have spent more time than I'd like to admit to get this working.

this is from there website:

http://localhost:3000/merchant/$guid/sendmany?password=$main_password&second_password=$second_password&recipients=$recipients&fee=$fee

$main_password Your Main Blockchain wallet password
$second_password Your second Blockchain Wallet password if double encryption  is enabled.
$recipients Is a JSON Object using Bitcoin Addresses as keys and the amounts to send as values (See below).
$from Send from a specific Bitcoin Address (Optional)
$fee Transaction fee value in satoshi (Must be greater than default fee) (Optional)
$note A public note to include with the transaction -- can only be attached to transactions where all outputs are greater than 0.005 BTC.(Optional)

The result I get is:

failed to open stream:HTTP request failed!

Fatal error:Maximum execution time of 120 seconds exceeded

I now the url is wrong but can anyone please help advise me what it is specifically.

So far this is what I have

// Sending addresses
$Address1 = 'Address1';
$Address2 = 'Address2';

//Amount coming from
$From = 'Address3';

//Amounts being sent in satoshi
$Amount1 = 100000;  // 0.001 of a btc
$Amount2 = 100000;

$recipients = urlencode(' {
    "'.$Address1.'": '.$Amount1.',
    "'.$Address2.'": '.$Amount2.'
}');

$Guid = 'MY_GUID';
$Password = 'MY_PASSWORD';

$url = 'http://localhost:3000/merchant/'.$Guid.'/sendmany?password='.$Password.'&from='.$From.'&recipients='.$recipients.'';
// I've also tried to remove $data and put '&api_code=MY_API_CODE' after
// $recipients as this also works for other api calls for v2

$data = array('api_code' => 'MY_API_CODE');

$result = sendAmounts($url, $data);

function sendAmounts($url, $data) {
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',  // Also tried GET
        'content' => http_build_query($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

return $result;
}

Thank you in advance.

As of January 2016 Blockchain.info made changes to the wallet API service that now requires you to run a local nodeJS service to handle the calls. This will require you to have root access to your webserver so you will need to use a VPS instead of a basic shared web host.

Also I don't recommend hand-coding the JSON yourself when using sendmany. Instead create an array and then use the json_encode function.

$array = array(
    "1someAddress" => 20000,
    "1someAddress2" => 150000,
    "1someAddress3" => 314159
);
$addresses = json_encode($array);

You're not the only one that has hard time with the new version of their API. If you still need some help check out these resources.

https://www.youtube.com/watch?v=X8jsaf4sEgs
http://btcthreads.com/how-to-setup-blockchain-wallet-service/

I started a PHP library for communicating with the nodeJS service, (still needs work, some functions are missing) https://github.com/coinables/blockchain-wallet-APIv2-PHP-Library


Educational sample of minimal working mining code I would like if someone could point me to a minimal program source code that does solo minig on a CPU. (Can assume a running bitcoind/full node)
Something that in theory (obviously not in practice) would actually be able to mine a block from the live network. This is intended for educational purposes, not for profit. Good code structure is therefore more important than performance.

I think that these articles are great for educational purpose:
Bitcoin mining the hard way: the algorithms, protocols, and bytes
This article explains Bitcoin mining in details, right down to the hex data and network traffic. If you've ever wondered what really happens in Bitcoin mining, you've come to the right place.
http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html

Mining Bitcoin with pencil and paper: 0.67 hashes per day
I decided to see how practical it would be to mine Bitcoin with pencil and paper. It turns out that the SHA-256 algorithm used for mining is pretty simple and can in fact be done by hand. Not surprisingly, the process is extremely slow compared to hardware mining and is entirely impractical. But performing the algorithm manually is a good way to understand exactly how it works.
http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html

The first one include also small programs in python that mines a block and connect to a mining pool stratum server.


My Bitcoin Core wallet does not receive BTC My Bitcoin Core wallet did not receive BTCs; it is already syncronized.
The transaction was submitted from Bitstamp on the 18th of July, as withdrawal.
In Bitcoin Core I selected the receive button, then I copied the address in Bitstamp withdrawal, then I submitted the transaction.
In Bitstamp everything appears to be ok, the amount has been transferred.
Ok but transferred where? In Bitcoin Core nothing arrived ...
Can anyone help?
Thank you

According to the Blockchain, you transferred 0.01 bitcoins to the address 1NEf87g56TMDJLUs9JfXzyenz2EUUSMqj1

If you can see this Bitcoin address in Bitcoin Core wallet (Menu File > Receiving addresses) and Core is fully synchronized then something is wrong, as this shouldn't happen (see below). If you can't see this address, maybe you created/opened a different wallet and then you need to open the correct wallet, containing this address.

You could try to re-scan the blockchain for missed transactions, that is transactions that don't appear in Core. Exit Core completely (Menu File > Exit), wait for the program to exit and then start it by adding the command line option -rescan This might take a long time, depending on the speed of your computer and hard disk.


What are the implications of a decreasing trend of MtGox "ask" depth compared with "bid" depth? The "Mt Gox Order Book Depth" chart at the bottom of the page at http://bitcoinx.com/charts/ currently looks like this:

Since mid May the red line on the chart ("Ask sum") has a strong decreasing trend, whereas the blue line ("Bid sum") has stayed steady.

What the implications of this?

There has been a rally in price of 10% or more since May, and there is constant supply of new bitcoins entering the market, so some of the cash from the order book has since moved into bitcoins.

But no doubt, a thicker order book (reflecting lots of buying interest) lessens the risk of a selloff.

When Mt. Gox's BTC/USD represented 80% or more of the trading volume for all currencies at all bitcoin exchanges it was vulnerable to manipulation during times when there wasn't a thick order book.

Because it takes a length of time to move funds into the exchange (from hours for a wire transfer to several days for Dwolla, for instance) an aggressive seller can profit from manipulation.  The method is to sell heavily into a small order book, and then put in bids there at the lower level to buy back coins at from "weak hands" who fear a further selloff and sell into those bids.  By the time additional USD funds arrive at the exchange from other buyers, the manipulator might have been able to buy back the entire number of coins sold but at a lower price.

Now that the BTC/USD market at Mt. Gox has dropped to a threshold near the 50% mark (of all currencies traded on all markets), a manipulator no longer has a vice-like grip on all bitcoin markets by controlling just the BTC/USD at Mt. Gox.

Instead of the Mt. Gox BTC/USD market leading the price moves, it now sometimes lags.  Thus during a selloff, trading markets at other exchanges might have some order depth at higher levels and thus the manipulator doesn't get to buy back as many bitcoins because the sellers go elsewhere to get a better price.


Lightning Network: what about tx fragmentation? I really have no idea how to aks it right. Let me give an example:
We have a some peoples A,B,C,D.... And A makes transaction to B, then A need to pay to C, then send some coins to D, etc... After closing channel A must pay fee like in onchain transaction. So there is no reason to use lightning when A need to pay some coins to different recepients?
I hear lightning can do decentralized exchange. Can someone give an example how it will work with less fees (or zero fee if it possible)?

Another example: if A trade BTC with B,C,D,E.... And A got +0.01BTC for each trade, then B need to pay 0.01 BTC, C pay 0.01BTC..... There is a lot onchain inputs, so a lot of fees (after channel close)

Sorry for my English

A must pay fee like in onchain transaction. So there is no reason to use lightning when A need to pay some coins to different recepients?

Yes, when opening or closing a channel, on-chain transactions occur and thus fees must be paid. However, the interesting thing about the lightning network (LN) is that those two on-chain transactions can now account for a whole bunch of transactions to anyone else connected to the LN. Even further, the closing of a channel can also be the opening of a new channel, so this reduces the onchain payments to ~just one per channel. So rather than having one on-chain fee per transaction, you can pay one on-chain fee for potentially a huge number of transactions.

  I hear lightning can do decentralized exchange. Can someone give an example how it will work with less fees (or zero fee if it possible)?

An exchange service could be built on top of the LN. Such a service could allow users to atomically swap coins that exist in a payment channel, without a custodial service involved. The exchange service simply plays 'matchmaker' for buyers and sellers. A quick google search shows me this service, called SparkSwap, as an example (disclaimer: I have never used SparkSwap, and have no affiliation with them, I literally just found them in a google search and their service seems like a relevant example)

Note that a LN exchange is best suited for trading between LN network and on-chain BTC, or between different cryptocurrencies. Not BTC <-> Fiat $$.

  Another example: if A trade BTC with B,C,D,E.... And A got +0.01BTC for each trade, then B need to pay 0.01 BTC, C pay 0.01BTC..... There is a lot onchain inputs, so a lot of fees (after channel close)

I'm not sure exactly what you mean here, but in general: receiving or sending payments on the LN will not lead to more fees when closing your LN channel. You can open a channel and then send 1 transaction, or send/receive 1000 transactions (within the channel capacity), and the channel closing fee will be the same.


OP_HASH160 vs OP_SHA256 Why would I use OP_HASH160 over OP_SHA256 and vice versa? Why are there two options? In what situations should I use one over the other?

Example unlocking scripts:

From BIP199: ( where HASHOP could be either )

    OP_IF
        [HASHOP] <digest> OP_EQUALVERIFY OP_DUP OP_HASH160 <seller pubkey hash>
    OP_ELSE
        <num> [TIMEOUTOP] OP_DROP OP_DUP OP_HASH160 <buyer pubkey hash>
    OP_ENDIF
    OP_EQUALVERIFY
    OP_CHECKSIG

From miniscript's received HTLC demo:

<key_remote> OP_CHECKSIG OP_NOTIF
  <key_revocation> OP_CHECKSIG
OP_ELSE
  OP_IF
    OP_DUP OP_HASH160 <HASH160(key_local)> OP_EQUALVERIFY OP_CHECKSIGVERIFY
    OP_SIZE <20> OP_EQUALVERIFY OP_HASH160 <h> OP_EQUAL
  OP_ELSE
    <f003> OP_CHECKSEQUENCEVERIFY
  OP_ENDIF
OP_ENDIF

I think HASH160 is the standard/preferable to SHA-256 in locking/unlocking scripts just because its digest is smaller (20-byte digest instead of 32-byte of SHA-256) and, therefore, it takes less space in the blockchain. As it takes less space, you pay less in mining fees with no security cost (160 bits is well above the 128-bit threshold)

Remember that with HASH160 you are already hashing twice (HASH160 = RIPEMD160(SHA-256)) so the little security benefit compared to two rounds of SHA-256 doesn't compensate for the extra fee/blockchain space.


Does the low difficulty for my pool give my miners more guesses per block? I understand that my chances are better at winning the lottery are better than guessing a block, but humor me please.  If I have a pool with 2 miners will my miners offer more "guesses" at the block hash with a difficulty of 512 than they would with a difficulty of 1024?

The "difficulty" being given to miners by a pool is used for tracking if the miner is doing useful work that could possibly result in a block, paying out the miner accordingly. The number of attempts a second, the overall income, and the resulting probability of solving a block are unchanged.


How does the BTC protocol guarantee that a "main" blockchain emerges? I'm reading up on the bitcoin/blockchain technology.
Usually, the part about proof of work and how to create a block is well explained.
However, what is never explained is how/why the communication of blocks over the network allows for a 'blockchain' to converge.
Let me explain:
what if two miners create a new block at the same time, and broadcast it at the same time ? Roughly 50% of the nodes would have each one a new (different) block, and build on it. Now, imagine this happens again etc. Then, there is not a single blockchain that is worked on, as now miners all work on several forks. The bitcoin proposal addresses this by saying that the longest chain must be used but:

at a given time there could be two forked chains with the same size, and growing roughly at the same pace
knowing which chain is the longest requires to "backtrack" possibly to the beginning, which means that no transaction on any chain can be "validated" as we are not sure to be on the correct chain

Are these issues addressed by the bitcoin protocol? Basically, it seems that there is no proof that adding blocks in a distributed fashion over the network converges cleanly into a single chain.

Bitcoin nodes consider the chain with the most accumulated proof-of-work the best chain. Whenever one chain tip pulls ahead by adding another block, all nodes will reorganize to that chaintip as soon as they learn about it.
Another reason for the network to quickly converge on one best chain follows from how Bitcoin miners get paid. When miners construct their block templates, each includes a unique coinbase transaction which pays the block reward to themselves. This means that finding a valid block results in the block author paying themselves the block reward via the coinbase transaction they included. However, the outputs of coinbase transactions are subject to a maturation period of 100 confirmations. This means that only blocks that spawn at least 99 successors can be spent. This essentially means that a block reward only gets paid out when a block becomes part of the best chain. As mining operations incur large hardware and power expenses regardless of success, miners bleed money when they work on blocks that do not end up in the best chain. Therefore, even when occasionally two miners find blocks at the same time and produce two competing chaintips, even the "losing" miner usually reorganizes quickly to the best chaintip and works on extending that as soon as one pulls ahead, because the stale block that has fallen behind is highly disadvantaged in its bid to become part of the best chain.
While the individual mining efforts are not centrally coordinated, it is uncommon for two competing blocks to be found at the same height: it only happens about once per month. Bitcoin mining is a Poisson process which aims to produce about one block every ten minutes. The cadence is regulated by difficulty adjustments that occur every 2016 blocks, which reset the difficulty target such that the next 2016 blocks are expected to take 14 days under the assumption that the network continues to produce the same amount of hashrate as observed for the previous epoch.


What is the "certain criteria" to be a valid Bitcoin block? I'm looking for information about Bitcoin. And I read this, it's really helpful.

I already asked the question and many of you guys said it's duplicated, and link to the question "What  exactly is the  mining?" or something.

The thing is, I already read it, and I just need some more specific information about criteria.

One of the answer for "What exactly is the mining?" said

"The way Bitcoin makes sure there is only one block chain is by making blocks really hard to produce. So instead of just being able to make blocks at will, miners have to compute a cryptographic hash of the block that meets certain criteria."

In here, the cryptographic hash should meet the certain criteria. And I wonder what it is, and who decided the criteria. I mean, if computers keep mining hash block to get the bitcoin, there should be a certain criteria like it says above.

Hope anyone can answer this question.

Have a nice day.

A valid block is found when any miner authors a block candidate whose block hash interpreted as a number is lower than the target. This is equivalent to meeting or surpassing the required difficulty.

To this end, miners create templates of a block that they would like to confirm by selecting a set of transactions and creating their unique coinbase transaction to collect the block reward. Each block template can be tried a number of times by cycling through all possible values of the arbitrarily picked nonce in the block header. After that, the template can be slightly adapted e.g. by changing the block time in the header, by incrementing the extranonce in the coinbase transaction or introducing any other change into the block template.


Secure way to store BTC over a long time - and its risks? What are the most secure way to store a huge amount of BTC over a long time and its (detailed) risks? A other assumption is that the owner does not have a very technical background, thus it will not be possible to verify the code of a wallet generator.

I am looking for a detailed overview of the risks. Even unlikely thinks like a biased random number generator of java script used by: https://www.bitaddress.org/
Or that the site is hacked and wallet generation script is malicious just when I want to use it.
An other example would be, when I use MultiBit and I store the seed in safe-deposit box it might happen that the software is not longer available and it might be difficult to recover the keys from the seed.

Bitcoin Armoury is the best thing out there for this.

What you want to do is create a new wallet with armoury, create a receiving address and send your BTC there.
The best thing is you do not need to even be connected to the network, synchronized or anything. Armoury can run offline in the dungeons far underneath the earth (like your cellar :) )
You then create a paper backup and print it out 2 or three times. Go and store it in your bank, in your important documents and at your mums house.
Delete armoury. (Yes, but make sure you have your paper backups stored safely!)

Your coins will hang in limbo (on the network) without any transaction history or block chain tracking. COmpletely anonymous and unclaimed.

Now- You might feel like you just threw your coins into thin air and have this uneasy feeling of you will never get your coins back! I know I did. So this is what I did.

I followed the whole process I mentioned above. Created a test wallet. Went to another computer somewhere else and did the same, except I imported the wallet from the paper backup. SYnchronised to the bitcoin network. Viola - The coins appeared in the transaction blocks and in my wallet ready to spend

It is also good for managing many online wallets at the same time. One for savings, possibly donations from your websites or blogs, and a personal one, and even offline unsynchronized for the long term anonymous storing of coins.

As long as the bitcoin network will be running you will never lose offline transactions. Just make sure to keep your paper backup in atleast 3 secure seperate place- and no. Do not store it on picasa albums or gdrive.. keep it offline in a bank, locker and at your nans house under the bed, laminate it, put it in a box and bury it in your back yard next to the tree house.


How many bitcoins are there currently in circulation? Where do I find the total number of bitcoins currently out there?

If you are running Bitcoin Core, you can see the total amount in circulation using the RPC call gettxoutsetinfo (in the Bitcoin-Qt debug console, or using bitcoin-cli if you run bitcoind).

At the time of writing, the output is:
{
  "height": 517245,
  ...
  "total_amount": 16965398.58586455
}

which means there are currently ~17 million BTC in circulation. This number takes into account certain types of destroyed coins.

See also this answer of mine about how many there will eventually be.


Analysis on the Block Chain for Dead Bitcoins My understanding is that the blockchain is currently 6.5 GB in size and will continue growing at a fairly hefty rate. Has anyone attempted to analyze the blockchain to attempt to determine dead bitcoins? I'm interested in developing a probabilistic measure to label certain transactions as dead.

What's a good way of getting the raw data from the blockchain? I'd like to batter it with some R and Sage magic.

No Bitcoin is dead by definition - it may just be impossible to spend them, because e.g. you lost the private key. So you will never be able to distinguish between dead addresses and just untouched paper wallets.

I was also thinking about it and came up with a proposal for a protocol change: If it is well known and communicated through every news, and everybody would agree in that change of course, it would allow miners to 'take' money from transactions which are unspent more than (let's say) 2 years. This means they can transfer the coins to another address without providing the signature and the network accepts this. This sounds scary, but it wouldn't mean you steal somebody when everybody knows. You just have to move coins every two years. Unfortunately long-term paper wallets would be less convenient.

Of course details are missing, e.g. you shouldn't get all the money of a big transaction in one block just because you are lucky. Anyway, I think this "using of dead coins" idea wont make it, as everybody is interested in a rising bitcoin value, and this happens when some are lost!


Is there any way to receive Bitcoin Testnet payments? I'm currently working on the implementation of an ERC_20 Token on the Ethereum blockchain. However, I want to allow users to pay with BTC as well. I've already found several services which give me what I need (blockchain.info, bitcoin-receive-payment etc.) However, I cannot find any information on how I can test these (or any) solutions on the Testnet.

There will surely be some gotcha's during development, and I'd rather not mess around with real BTC while I'm at it. Is there any BTC payment service which supports Testnet payments, or will I just have to roll with BTC?

As an extra question (sorry for off-topic) can someone recommend such services for processing Ripple payments?

Thank you in advance. Let me know if I can give any more info that would be helpful.

please do not use blockchain.info if you're gonna test payments.

use block.io instead, it has a full documentation for devs to try it.

you can use Testnet BTCs HERE


P2WPKH - which private key is used to generate signature? I am looking at the BIP143 P2WPKH example. I am kind of following until the generation of the sigHash: c37af31116d1b27caf68aae9e3ac82f1477929014d5b917657d0eb49478cb670 but then that is used to generate the signature 304402203609e17b84f6a7d30c80bfa610b5b4542f32a8a0d5447a12fb1366d7f01cc44a0220573a954c4518331561406f90300e8f3358f51928d43c212a8caed02de67eebee. Given that this transaction comprises two inputs I would somehow expect both corresponding private keys to generate a signature. So how is that signature in the example obtained?

Only the private key for the second input is used in this signature as this signature is only for the second input. The first input is P2PK and is ignored in this example as it is non-segwit so the standard non-segwit sighash algorithm is used for it.


How does a node compare two blockchains? Let's say an attacker connects to the Bitcoin network. Let's say this attacker possesses an old ASIC HW and she used it to generate a blockchain of half a million blocks, with faked timestamps and really low difficulty, but otherwise valid. So, this chain is longer than the Bitcoin blockchain, but is shorter difficulty-wise.

How does the attacker presents this version of blockchain to the network and how much work will the network nodes spend on finding out that that blockchain is difficulty-wise shorter. Do they need to (and will they) download the whole chain from the attacker? Or is there any information on the top of the blockchain that can be used as hint on how much total work was spent in the entire chain?

Block headers include a field called bits, which can be used to calculate the difficulty and hence the amount of proof-of-work in the chain. There's probably a shortcut to being able to eliminate a 100,000 longer chain, but all core does is calculate the proof-of-work present in both chains and take the one with more.

Note that block headers are only 80 bytes each, so the 500k blocks would only be about 40 MB, not an unreasonable amount of data to calculate how much proof-of-work a chain has.


Multibit images/screenshots in educational website I would like to confirm/verify if I could use some images/screenshots of multibit on my educational website for my wallet section.

Also, if you had a high resolution image of your multibit gray bitcoin logo that is greater than 175x175 pixels that would be fantastic!

Thanks!
Derek

I'm one of the MultiBit devs.

Everything with MultBit is MIT licence so you are free to reuse anything. The website is also open source and is on github as the project multibit-website.

There are some larger icons in the github for multibit - it's in something like src/main/resources/images. I think there is a 512x512 pixel one in there


Two transactions are signed by different private keys, and the value of "R" for these two transactions is the same? Everyone knows an error in the Blockchain when the same value of "R" can be calculated and find out the private key of the transaction:

ECDSA Signature and the "z" value

But I have a question. Can I find two private keys with the same value of "R"?
Can you please tell if you can get the value "K" if you know that two transactions signed different private keys, and the value "R" on these two transactions is the same?

Assuming the two private keys are unrelated, the answer is no.

The reason for this is simple: there are 3 unknowns (the two private keys, and the single secret k value), but only two equations (the ECDSA validation equation for both signatures).

If a relation is known between the two private keys (like one is twice the other, or one is one higher than the other, ..), another equation becomes known, and the system becomes solvable.


Mining without full node In my understanding it should be possible to run stratum server over some kinda limited node (the one that doesn't carry whole blockchain) since stratum doesn't need many functions from the daemon... I'd guess getblocktemplate should be sufficient for mining.

In my humble estimate, I can see it should be enough to store just X last blocks instead of having the whole data for the mining purpose. is that correct? (yes, I do know the difference between full node and thin-client)

What's gonna be the best way to setup thin client and mining pool without waiting weeks for it to sync with the net? Is there any API for that maybe?

You can use a node in pruning mode. In Pruning mode, the node will delete the blockchain data that it no longer needs. It is still a full node as it still has to download all blocks and transactions and then verifies them. But it just doesn't store the entire blockchain.


Can I view .bit domains without having internet through my ISP provider? I think the title says it all. But I will say this, I know I can view websites hosted on my server without having internet. I just have to be viewing the site on my network.

I wanted to know that since namecoin and .bit domain names are decentralized if their is a way of connecting and viewing .bit domain names without dealing with an ISP provider?

If so can someone refer me to some good tutorials and or how to's do something like this?

Unfortunately, no, the contents of websites themselves are not distributed by namecoin. There is something that is, though: For regular internet sites, your computer would first contact a domain name server with a query of what internet protocol (IP) address this site currently has. When using namecoin's .bit domain, all the information that usually originates at domain name servers on the internet instead comes from data distributed by the namecoin network across its clients.

So, yes, there is some data that is distributed and does exist locally if you run a namecoin client. But it will only give you some minimal metadata about the sites, not any of their content.


bitcoin setup using nodejs I have to to use bitcoin api using nodejs. but I cannot understand from where I have to start.Search some node module like bitcoin-core and bitcoin.

Can anyone describe the step how can I set up bitcoin in our system and use using nodejs.
Also refer some link where use of bitcoin api request and response parameter are describe in nodejs.

I have to use bitcoin json-rpc api's with node.js but dont know from where i can start?

I m using bitcore for stand alone rpc because it has many new indexes and new methods.

See this link https://bitcore.io/guides/bitcoin


How do you broadcast a transaction programatically? What is the best way to broadcast a transaction to the network programatically? I know that blockchain.info has /pushtx but I'm pretty sure it rejects XHR requests from external sources because of CORS.

You should not use an online service for broadcasting transaction. This online-service would have full control (censor?) over your transaction. The service could analyze your data behavior and/or decide to not broadcast your transaction regarding some rules.

Wladimir van der Laan (current bitcoin-core project maintainer) has written a neat tool: https://github.com/laanwj/bitcoin-submittx

Another option would be to install bitcoin-core, sync (takes serval hours and around 40GB traffic) and use RPC sendrawtransaction.


How do bitcoin clients update after downtime? If a bitcoin client goes offline or misses a new block, what is the process of finding the current, main blockchain? And how does bitcoin ensure that updates to the blockchain will be propogated to each device connected to the network (i.e. to make sure connected nodes never have a missed block in the ledger?) Does it somehow recursively backtrack from the next broadcasted block's reference to the previous block? And then how does it ensure that the current chain broadcasted is an addition to the main chain, rather than some fork? For example, if the client connects to the network and receives a block of given height, how does it both know that it has the most work of any chain, and that the local copy contains all blocks in the chain?

Peers of the node will tell the node the height of their longest blockchain, and if this is greater than what the node currently has stored, it will request the missing blocks from that node (to validate and store them). Also, if a node is on the network and receives a new block, it will look at the hash of its parent and decide if it has the parent already or not. If it doesn't have the parent, it will ask its peers for it. That way it will eventually download all the blocks it is missing and be up to date again

The node will keep track of how long each fork of the blockchain is, and will use the longest one it finds which it considers valid. If a long fork appears which the node thinks is not valid, it will show a warning that either the node is out of date or the peers are.


Apart from the official bitcoin client what other clients are there? Apart from the official client found at the bitcoin.org site what is the list of alternative bitcoin clients? And what OS do they work on?

There is a current list of clients here
http://en.bitcoin.it/wiki/Category:Clients

There is development discussion around alternative clients here
http://bitcointalk.org/index.php?board=37.0

Currently the "Official Client" (more specifically, the Satoshi client) is the most widely used and has implementations that run on Windows, OS X, and Linux. However, multiple alternative clients have been developed, including ones that run on Android, and this is currently a high priority for the bitcoin community.

The current most popular alternative clients are BitcoinJ, written in java
http://code.google.com/p/bitcoinj/

and BitDroid, which runs on Android
https://github.com/cdecker/BitDroid-Network


Is the Bisq API finally "live" now or what? For many years now, I've been waiting for Bisq to implement its damn API so I can begin trading (between crypto currencies, since automation is impossible with fiat).
Today, I again did a "round" to check if it has happened, and... I'm not sure? There are numerous old posts about the different APIs, and recent mentions of it, and there's this cryptic "documentation": https://mrosseel.github.io/bisq-api-examples/
But is it actually "live"? Can I start automatically trading with it today? Or is this still in some kind of "test-only" mode?
I would have asked them directly if it weren't for the fact that every single channel they provide to communicate with them refuses registration or requires weird software to be installed.

More information: https://helloreverb.com

It's probably not a good sign that this shows some kind of generic "under construction" message...
I've browsed their official website for a long time without finding any mention of the API, so I assume that it's not live?

I tried asking about bisq API on twitter and its a work in progress:
https://twitter.com/bisq_network/status/1324367096524890114
https://github.com/bisq-network/bisq/issues/4257


Is there an easy way to diversify your Bitcoin holding among the other popular forks? Recently there has been a spread of Bitcoin clones, starting with Namecoin and following with other newer clones. There is a chance these coins will appreciate relative to Bitcoin.

Is there an easy way for a Bitcoin holder to automatically diversify his holding among the different crypto currencies, similar to holding an index fund or ETF instead of purchasing individual stocks?

Sidestepping the comments about whether or not Namecoin is a fork or a separate project or whether bitcoin is an investment or a currency, I'll address the direct question asked: Is there a way to easily and automatically purchase several crypto-currencies at once? Not at present time, no.

Bitcoin (and its forks) is a very young project, though, and I'm sure there was a stock exchange before DJIA or S&P existed. Give us time and it's very likely that something of the sort will be created - especially now that the demand has been made publicly known.


What is the current size of txindex folder when txindex=1 set? Due to reputation limitations, I cannot ask for an update on this question:
How much extra disk space does txindex=1 require?
What is the current size of the txindex folder when txindex=1 is set in the bitcoin.conf file on a fully synced full node?
As pointed out in the referenced post, the size should now be around 28GB?
Thanks!

27GB as of 2020-06-14

You yourself can check this via going to .bitcoin/blocks/index folder. Where .bitcoin folder is usually hidden folder on home when using linux.

It depends if you have pruned than the index folder might appear less in size. As of today my index folder is 105.4 MB since I've prune=1000 and it would remain the same in future as well.

Our question is answered here as well. Please check comment by @anonymous


Why getrawtransaction returns an HTTP STATUS CODE 500 for not found transactions? As far as I understand, if you supply a made up TxID to the getrawtransaction RPC API, it should return an error code that suggests the record is not found (i.e. 404 HTTP STATUS CODE?). However, in bitcoin-core 0.12.1 and 0.13.1 it's returning 500-Internal Server Error, as if the node had some problem processing the request.

FYI, I have txindex=1 enabled in this node, so it's not because of the lack of data. Should this be fixed upstream or is it already fixed? Or is there a better reason for why this is the case?

It should return HTTP status 500 if the transaction doesn't exist. 404 is just for method-does-not-exist errors. (See here.) Reading the code, I don't see how error 404 could be returned for a transaction not existing. (I checked the current code and 0.13.)

HTTP status codes are pretty non-specific. You should parse the JSON response if you want something more specific than 'an error happened.' (But it doesn't always return JSON. IIRC, 401 Authorization errors aren't JSON.)


Routing in Bitcoin Lightning Network Here is all we can find in the Lightning Network whitepaper about payment routing process that it is completely unclear to me (at least it is not enough to know what happens exactly at time of finding the best optimized path for a payment between two users):

  "It is theoretically possible to build a route map implicitly from
  observing 2-of-2 multisigs on the blockchain to build a routing table.
  Note, however, this is not feasible with pay-to-script-hash
  transaction outputs, which can be resolved out-of-band from the
  bitcoin protocol via a third party routing service. Building a routing
  table will become necessary for large operators (e.g. BGP, Cjdns).
  Eventually, with optimizations, the network will look a lot like the
  correspondent banking network, or Tier-1 ISPs. Similar to how packets
  still reach their destination on your home network connection, not all
  participants need to have a full routing table. The core Tier-1 routes
  can be online all the time —while nodes at the edges, such as average
  users, would be connected intermittently. Node discovery can occur
  along the edges by pre-selecting and offering partial routes to
  well-known nodes."

I am looking for a document explaining step by step the current routing process used in current Lightning Network to know the steps for finding the best optimized path when user A wants to send an off-chain payment to user B.

P.S. I know that it is possible to use any other routing algorithm as a plug-in; however, I would like to know the current routing protocol used in the current Lightning Network in details (step by step). I also appreciate it if you could propose a document explaining the current routing algorithm in Lightning Network. Thank you

There's no document explaining step-by-step, because the routing decisions are not part of the protocol (the BOLTs). It is purely client-side decision making about how to find a route through the graph, and any client can choose to implement their own mechanisms. There is no compatibility issues because only the payer makes routing decisions, and intermediate hops merely forward packets as requested.

If you wish to know the specific details of how LND, c-lightning etc implement it, you will need to dig into the code and documentation for those projects.

As far as I'm aware, the current implementations all use a variant of Dijstra's algorithm, or A*, taking the routing fees as the heuristic to minimize when calculating the weights of each path, and c-lightning uses the Bellman-Ford modification in the link above.

Once a path has been calculated by the payer, there is a standard process by which the path and the packets for it are constructed, defined in BOLT#4.


Paper backup from Armory that requires a password? I'd like to make a paper backup of my Armory wallet that will still require a password to recover. Right now it seems that the paper backup is not encrypted.

As the paper backup consists of two simple string you can use any encryption scheme you'd like to implement this.

This can be as simple as manually applying rot13-like encryption, to one-time-pads. Just make sure you keep the ciphertext short in order to still be able to print and, more importantly, type it in eventually.


Several clients confirmed transactions with the same hash We generate a personal bitcoin-address for a payment for each customer. For these purposes, we use the Blockchain.Info API. Today it was discovered that in callback sent by the Blockchain.Info we received the confirmation of two facts of payments to different addresses, the transactions of which have the same hash.

In an attempt to find out the reason, we tried to track the transaction history, but found that its total amount is 11 BTC with dozens of outputs: https://blockchain.info/tx/10665471525e014c295c68dc56d8989fb3979272b60e53430155267e73162e51

So, I have a few questions:

Can transfers of bitcoins to different generated addresses have the
same hash? Why?
Why does the transaction consist of a set of outputs, the total amount
of which is 11 BTC, which is hundreds of times the amount
that customers had to pay us?

Thanks for any help.

Today it was discovered that in callback sent by the Blockchain.Info we received the confirmation of two facts of payments to different addresses, the transactions of which have the same hash.

You mean more than one customer paid you in a single transaction. There's nothing particularly unusual about that.

  Can transfers of bitcoins to different generated addresses have the same hash? Why?

Yes, they can. A single payment can produce a number of outputs, sending bitcoins to several different addresses.

  Why does the transaction consist of a set of outputs, the total amount of which is 11 BTC, which is hundreds of times the amount that customers had to pay us?

Because several customers paid you and several other people paid for other things in a single transaction. This is a way to save on fees.


How can a Bitcoin transaction be used multiple times (If it is so)? My understanding is that a transaction is a transfer of value between Bitcoin wallets that gets later included in the block chain. So a Bitcoin transaction is used only once in my understanding.

What is spent it's not the transaction itself, but the outputs the transaction has created. A transaction can have multiple outputs with different bitcoin amount hold on each one.

Therefore, a transaction can be "used", in the sense you expressed it, as many times as outputs it has.


Who is Satoshi Nakamoto? Who is Satoshi Nakamoto? I have heard about him and read his paper.

Why is he no-longer publicly involved in Bitcoin?

Satoshi Nakamoto is the elusive and private creator of bitcoin. In October 2008 he published the paper Bitcoin: A Peer-to-Peer Electronic Cash System (pdf warning) which is the basis of the bitcoin client/protocol. He has stated his nationality as Japanese and published a PGP key, has a sourceforge page and aside from that not much is known. It sort of follows that someone interested in creating a distributed pseudonymous online currency would be a very private person.

It is also suspected that Satoshi may be a pseudonym for any of a number of people involved in the original development - a mask used for safety and protection against legal persecution for the creation of such a potentially disruptive product. To that end, Satoshi may still be involved in bitcoin, although as you stated, not publicly. As with everything else about Satoshi, the reason for his lack of current involvement is unknown.


What are the differences between the transaction and block versions? (v1, v2, v3, etc..) If I run command to fetch a block, I see version 2 is returned:

getblock 0000000000000000ae22455f90306f43e8c806585fe2dfc3b0e92ac7b7620bff

Output

{
"hash" : "0000000000000000ae22455f90306f43e8c806585fe2dfc3b0e92ac7b7620bff",
"confirmations" : 5885,
"size" : 249065,
"height" : 280557,
"version" : 2,
"merkleroot" : "5b4c401a2ad5a82ef26efb1d7ad82a0b6abea18118b50a12b555ea9e8663042b",
"tx" : [    .... snip ...

and when I run the command to fetch a transaction, I see that version 1 is returned

 getrawtransaction 260ef6a9bbb401ecbfdace19c84ae3245f0ab5b229ea716209a38e9ec0fd14c1 1

output

{
"hex" : "01000000027f4e827503d7d52617.. snip ..9763caaf4b6216343fa460b88ac00000000",
"txid" : "260ef6a9bbb401ecbfdace19c84ae3245f0ab5b229ea716209a38e9ec0fd14c1",
"version" : 1,
"locktime" : 0,
"vin" : [

Question

I read somewhere that BIP32 will cause both of them to be version 3.  Can anyone explain:

Where I can find a concise list of rules of what is expected from each version (it's not on the wiki)
When that version changed (year and/or block number)
Are old version banned, or are they still supported?

BIP0034 added Version 2 blocks.  It enforces the rule that the transaction version is 1 (this was previously not enforced and there are some weird transaction versions in the block chain).  It also requires the coinbase transaction input script to contain the block height as the first data element.

There has been discussion about a new Version 3 block and Version 3 transaction which would enforce canonical encoding.  This would be a solution to the transaction malleability problem.  Skipping transaction Version 2 would make the versions the same once more for both blocks and transactions.

You can read the Bitcoin Improvement Proposals here.


Transferring Money from USA to Japan Can you use bitcoin to transfer money from US to Japan and what would it cost for approximately $10,000 usd?

Bitcoin doesn't know countries. If you want to have 10'000 USD exchanged for Japanese yen, you can buy 17.42 BTC on a US bitcoin exchange, transfer the money to the account of a Japanese bitcoin exchange typically for free (since you can send the money in BTC from one exchange directly to another one and both typically doesn't have costs attached), and exchange the 17.42 BTC for Japanese yen on a Japanese BTC exchange.

Both exchanges will probably take about 1% of the money exchanged in fees, so it's still really expensive unless you find exchanges with low fees or constant fees regardless of the amount of money exchanged (so the costs don't scale with your rather large amount of money).

You can find bitcoin exchanges here or simply by googling.


How does tax work with crypto Debit cards? There are plenty crypto debit cards, like Crypto.com's or Binance's. I can easily use my fund to purchase goods and services without taking profit out of an exchange, and just simply use the funds on it.
If I purchase coffee with a debit card like that, is it taxable?
And if it is, how do I even know or calculate my taxes?
Is there a specific rule on this in the EU?

Is there a specific rule on this in the EU?

According to https://nomoretax.eu/bitcoin-taxation-developed-countries/

The fiscal treatment of Bitcoin for tax purposes differs depending on EU country.

how do I even know or calculate my taxes?

By consulting material published by the tax authorities in the country in which you are resident (and US as well if a US citizen resident outside the US).
By consulting a tax adviser.
By contacting the local tax authorities and asking them for advice. (In my country at least, they are friendly and helpful to people seeking advice).


How does the Lightning network work in simple terms? Could you please describe how the Lightning network is supposed to work?
How does it scale better than pure blockchain transactions?
What are the advantages and disadvantages of Lightning Network and blockchain transactions?

Say, you and I want to open a payment channel.

1) Putting funds into Lightning
We both send 0.05 BTC into a shared 2-of-2 multisig address. This requires a transaction on the Bitcoin blockchain.
As a "balance sheet", we each create a 2-of-2 multisig transaction that pays out 0.05 BTC to you and 0.05 BTC to me. I sign one payout transaction and give it to you. If you want to put it in effect, you need only add your own signature and broadcast it to the Bitcoin network. Vice versa, you give me your copy of the payout transaction that you have signed and I have not yet.

These "balance sheets" are regular 2-of-2 multisig transactions in the Bitcoin network, they're just not valid yet, because they are each missing one signature. Note that these unilateral payout transactions lock the paid out funds of the executing party for some time.

2) Payment
Now, I want to pay you 0.01 BTC. We each create a new payout transaction ("balance sheet") as before, but this one says that you get 0.06 BTC and I get 0.04 BTC. Each of us gets a transaction signed by the other to that effect as before.
To make sure that neither of us can use the old payout transaction the other signed previously, we each create an "anti-cheat" transaction: It's a transaction that spends the outputs from our first payout transaction to the other.

I.e. when I try to activate the (now obsolete) 0.05 - 0.05 BTC balance sheet, my paid-out funds are locked for a number of blocks. This gives you time to broadcast the "anti-cheat" transaction in which I signed that my 0.05 BTC output gets send to you.

Still, it's safe for me to give that transaction to you, and the whole network, because the "anti-cheat" can only be activated as a response to the fraudulent use of an old balance sheet. By the way, this anti-cheat mechanism is why Lightning needs the Transaction Malleability fix from Segregated Witness.
With the setup as described above, I'd have to be online to catch you trying to cheat, but obviously it wouldn't be safe for me to keep payment channels open if I had to remain online all the time. So, to encourage others to help with the "anti-cheat" transaction, we set a small portion of the "anti-cheat" payout as a bounty that anyone can spend. Now, we can entrust the anti-cheat transaction to all nodes on the network, so everyone can watch for old balance-sheets being broadcast. When it happens, anyone can sign the bounty to themselves and broadcast the "anti-cheat".

3) Network payment
Alright, now you and I can send money back and forth thousands of times, with almost instant effect (depending only on how fast we can communicate with each other) without adding a single transaction to the Bitcoin blockchain. Yet, on the other hand, if one of us ever tried to defraud the other, they would be instantly taken to court by having the dispute resolved on the blockchain to their own detriment. Pretty spiffy, but not terribly useful yet.
By the theory of six degrees of separation, everyone is connected to any other participant by only a few hops.
Let's say you want to send money to Bob, who is a barista and just made you some coffee. Bob is a friend of Alice, while I have a Payment channel with Alice. For illustration purposes, let's assume that each payment channel has two BTC in it, split equally. You do not have a direct connection to Bob.

Our "network" now looks like this:

   You <-- 1BTC ----- 1BTC --> Me <-- 1BTC ----- 1BTC --> Alice  <-- 1BTC ----- 1BTC --> Bob

Now, since you don't have a direct payment channel to Bob (and it would be very inefficient if you had to create a payment channel with every business partner you ever meet), you route your payment through the network. Instead of only writing an update of the balance between Bob and you as I described above, this becomes a concerted effort: Your wallet finds a route from you to Bob that has a) sufficient liquidity, b) least fees, and c) fewest hops. To make a payment, each involved payment channel updates its balances. With a payment of 0.01 BTC for the coffee, this updates our network to:

   You <-- 0.99BTC ----- 1.01BTC --> Me <-- 0.99BTC ----- 1.01BTC --> Alice  <-- 0.99BTC ----- 1.01BTC --> Bob

As you can see, the balances at the ends have shifted appropriately from you to Bob, but the other participants have the same balance (although shifted to other payment channels). It's important to realize, that the transaction can only go through completely or not at all. Either we all update the balances, or no one does.

Now, imagine that you don't have only the one payment channel with me, but you have maybe a dozen payment channels with other users! :)

4) Consensual channel closing
Other than in the above case where one side closes the channel unilaterally, one of us can request the other to consensually close a channel. When we agree, we create a final payout transaction together that doesn't lock any funds and allows immediate spending after confirmation. We could even use this transaction to spend some of our balance directly to a third party on the blockchain, or to create another different payment channel.

5) Trade-offs

You cannot receive more money through Lightning in one transaction than the sum of your payment channels' values.
Your transactions don't get stored on the blockchain for eternity, (i.e. better payment privacy), but on the other hand you keep using the same address allowing users that know who the address belongs to to monitor your balance (less personal privacy).
Instant transactions! But your money is locked up in a payment channel, which you first need to execute on the blockchain if you want to do a regular Bitcoin transaction with the money.
Less fees! Transactions on Lightning don't require a full blockchain transaction fee, but if you route through others' payment channels, they might want something for the liquidity they provide to you. However, as other Lightning nodes are competing to transfer your payment for you, this is likely to be much lower than a full transaction fee on the blockchain.

Further reading:

How is a node in the middle prohibited from keeping the money in a routed Payment in Lightning network?
What are the trade-offs between transacting on LN and Bitcoin mainchain?
How are paths found in Lightning Network?


How are mutated transactions prevented from getting relayed? Quoth Bitcoin release-notes-0.9.0.md:

  This release contains a few fixes for transaction ID (TXID)
  malleability issues:

  -nospendzeroconfchange command-line option, to avoid spending zero-confirmation change
  IsStandard() transaction rules tightened to prevent relaying and mining of mutated transactions
  Additional information in listtransactions/gettransaction output to report wallet transactions that conflict with each other because they
  spend the same outputs.
  Bug fixes to the getbalance/listaccounts RPC commands, which would report incorrect balances for double-spent (or mutated) transactions.
  New option: -zapwallettxes to rebuild the wallet's transaction information

What does "transaction rules tightened" mean and how does it prevent relaying and mining of mutated transactions?
Since mutated transactions are also valid transactions, how can the client tell original transactions apart from mutated ones?

Are powerful adversaries still able to abuse this feature after the update?

Transaction malleability is prevented by selecting one canonical representation of every transaction and making every other representation nonstandard. That is, of all possible transactions one transaction can be mutated into, exactly one is considered "original", and other representations are not relayed.

Originally, Bitcoin could accept different representations of the same data. For example, it were possible to represent the same number both with and without leading zeros, producing equivalent transactions with different binary representations. Now, a transaction would only be considered standard if those numbers are represented using a specific number of digits, so it is now impossible to write the same number in different ways.

However, this rule is not enforced on transactions that are already in a block (since otherwise it would be a fork), so a powerful adversary can still push a mutated transaction into the network by mining it himself.


do transaction merkle trees have any use outside individual blocks? as i understand it, merkle trees are useful for operations within individual blocks, but do they have any use outside of each block? for example, are the merkle-roots from each block ever used in combination for any other purposes such as blockchain validation?

The merkle tree means that you can verify the existence of a transaction in a block while only having the header, the transaction, and the merkle tree itself. It allows SPV clients to act extremely quickly and securely while only using the bare minimum of bandwidth. MultiBit is a SPV client that works in this way, and is extremely quick as a direct result.


How does a Bitcoin (Core) wallet use inputs? When creating a new transaction, how does the Bitcoin Core wallet (or any other wallet) handle/use the outputs (UTXO's)?

e.g. when 2 outputs have to be used, will Bitcoin spend the highest address (most BTC) first and then the second highest or are the UTXO's used in another way?

Which output will be used for the change (if there is any)?

Bitcoin Core uses a Branch and Bound algorithm to search for an input set that exactly matches the send request. To that end, it will deterministically search the combination space of all of its available utxos and pick the set that is the most efficient if there are multiple solutions. The Branch and Bound algorithm is briefly described in the sourcecode and more comprehensively in my master's thesis.

If no matching solution is found with the Branch and Bound algorithm, Bitcoin Core will fall back to its previous strategy. This entails sorting all unspents descendingly by their value and iteratively picking a subset by randomly including or skipping list elements.


Blockchain as a service - is this really just a replacement trusted third party? One of the key tenets of Blockchain technology is that it is a trustless, distributed ledger which removes the need for a trusted (but hackable) third party to oversee the veracity of transactions (e.g. a bank). The original concept was implemented in Bitcoin and depended upon "miners" to verify the authenticity and ordering of transactions. These miners are owned by participants in the blockchain and no one is able to control all (or even a significant number of) the miners in the network, thus rendering the system secure.

We now have the concept of "blockchain as a service" from providers like Microsoft and others, where apparently there is no need for miners: so does this mean that the technology provider just became a replacement trusted third party and if so what prevents them from being a weak (hackable) link which would undermine the whole purpose?

First lets distinguish between a blockchain and Blockchain as a Service (BaaS), because they're two different things.

Bitcoin, and other crypto-currencies, use a distributed ledger in a peer-to-peer network - a blockchain. This is the original use of a blockchain. As you state correctly, the fundamental concept is that it is decentralized, permissionless and trustless. There is no central management, anybody can use it and it does not require trusting in a third party. For Bitcoin, and other crypto-currencies, the peer-to-peer (P2P) network propagates transactions, verifies the transactions as valid, and then adds these transactions to the blockchain.
Bitcoin is the first blockchain application to create a cryptocurrency. Ethereum is a cryptocurrency which is also a platform for running distributed applications (DApps).

Software corporations like Microsoft and IBM are offering Blockchain as a Service. This is something completely different than a cryptocurrency. It's closer to what Amazon provides with it's AWS cloud platform. If you're not familiar with cloud computing platforms get up to speed on that.

Looking at Microsoft's blockchain solutions and IBM's blockchain solutions you can say that BaaS provides tools, infrastructure and/or a simulated network environment for companies to develop their own blockchain applications. These blockchains may be on an established decentralized public platform like Ethereum, or it might be a private permissioned blockchain.

A private blockchain is not anything like permissionless Bitcoin or Ethereum cryptocurrencies. Comparing a private blockchain with Bitcoin is analogous to what the public internet is to a private LAN. It may use concepts like proof-of-work mining or other features of Bitcoin, but it's entirely different thing essentially. I'm not sure exactly how companies are finding this more valuable than simply using a database. Maybe there's good reason or maybe it's largely hype and wanting to get on the blockchain bandwagon.

A private blockchain would require a P2P network, but there would be a restriction on what nodes could access and interact with the network. Also the software would be closed source and not freely available. In contrast crypto-currencies like Bitcoin and Ethereum are open-source and anybody is free to participate in the P2P network.

Going back to the specific questions you had:
Does this mean that the technology provider just became a replacement trusted third party and if so what prevents them from being a weak (hackable) link which would undermine the whole purpose?

As explained already BaaS provides tools and infrastructure for other companies to create blockchain applications. There is no "Microsoft Blockchain". It's up to individual companies to create either public or private blockchain applications however they like. In general and ideally blockchain applications are peer-to-peer and decentralized.

If it is an Ethereum DApp then ultimately it would run on the public internet on Ethereum platform in distributed way without any centralized reliance on third parties. If it is a private blockchain, then it will be a hybrid of decentralized and centralized architecture and not anything like Bitcoin or Ethereum.


my wallet will not send BTC I get this error when I try to send BTC

A FATAL ERROR OCCURRED. Bitcoin can no longer continue safely and will quit.

Exception: St13runtime_error

CDB(): can’t open database file wallet.dat, error -30974

C:\program files (x86)\Bitcoin\bitcoin-qt.exe in Runaway exception

Win 7
Bit core 0.9.0

Any help would be greatly appreciated

Thanks

This was a learning experience for me too! I wasn't sure how to extract keys on Windows, and had to work my way through it. This is what I did on Windows 7.

Before you do anything: backup your wallet!

Bitcoin-Qt does not have these as commands in it's GUI, so you need to use bitcoind.

Close Bitcoin-Qt
Open Command Prompt
Enter the command:

"C:\Program Files (x86)\Bitcoin\daemon\bitcoind" -server

or if that doesn't work, try
"C:\Program Files\Bitcoin\daemon\bitcoind" -server

(The -server switch tells bitcoind to accept commands.)

That CMD session should freeze and become unresponsive--just minimise it; that's Window's way of telling you it's working.
Open another Command Prompt and type:

"C:\Program Files (x86)\Bitcoin\daemon\bitcoind" dumpprivkey [ADDRESS]

Where address is the full public address.

So, I might enter "C:\Program Files (x86)\Bitcoin\daemon\bitcoind" dumpprivkey 18gcVuGVgJSPswQML7LbxQBFEmBgrEwtuW

Do this for every address you have bitcoin(s) in or want to keep.
Write down all of your private keys.
Close both CMD's, delete your wallet (not the backup), and redo steps 2 and 3. (This will create a new wallet for you to use.)
Enter "C:\Program Files (x86)\Bitcoin\daemon\bitcoind" importprivkey [PRIVATE KEY] [LABEL] into the 2nd CMD instance.

So for example "C:\Program Files (x86)\Bitcoin\daemon\bitcoind" importprivkey 5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ OldWallet


My multibit wallet (Ver. 0.5.15) shows nothing after being sent part of a coin? I've reset the blockchain about 5 times over a week and still nothing

I upgraded multibit wallet to version 0.5.15 and still nothing.

Any ideas or help would be greatly appreciated!!! :-)

First, check on blockchain.info and see what the status of the transaction is.  Make sure that it shows that the address you think it was sent to really received the coins.  Once you have done that, you know that the transaction has been recorded publicly.  Then it is just a matter of opening a wallet that owns that address.

You need to check the "Request" tab in MultiBit and make sure that the address you sent the coin to is listed there.  If it isn't, then you have opened the wrong wallet, and you need to find the wallet that contains the address you sent it to.


Recovering bitcoins after the owner's death My Brother died in April and we believe he had a bitcoin account. Is it possible to find out how to recover/take over his accounts?
I know this is a new form of currency but it seems odd there is no way of recovering information in these circumstances.
Any help would be welcome. I still have all his computers, so can anything be traced through them?
Thank you.

There are two main ways someone can hold Bitcoin

On an Exchange or Online Wallet

or

Privately on a computer in a wallet or offline private wallet

For (1) you will need to obtain the username and password to access the account.

For (2) you will need to login to the computer and, depending on your luck, if the wallet is not encrypted, you should have access. If the wallet is encrypted you will need the password to transfer/spend the coins.  If you do get access to the computer then look for the bitcoin application and run that to see if there are any BTC in the account.

If your brother had a paper wallet then you will need to find this information as it will have public and private keys to access the coins. These can be imported into a wallet to give access to the funds.

Unfortunately, if you cannot find the info above the coins are lost. There is no central control of this currency so there's nobody you can contact for help.


How do I mine for coins? Finally synchronized the blockchain, yet not sure if I'm mining for coins. Where do I find out if I am or do I need something else?

The bitcoin wallet is for receiving and sending bitcoins. When it is synced you are all set. You don't need anything else to receive and send coins.

Note that you can receive coins even if the wallet is not synced, you just won't see them before you are synced.


Blockchain.com transaction explanation I'm query the BTC blockchain using blockchain.com to understand my own transactions a bit better.
One thing that confuses me in the inclusion of the Pkscript (scriptPubKey) under "Inputs" in the transaction manifest. My understanding is that this script is part of the Output of a transaction.
I presume that its inclusion here is a reference to the Output of the originating transaction i.e. the Input of the current transaction includes a part of the Output of the previous transaction to provide extra information to the user.
ie it is not suggesting that the scriptPubKey is actually part of the Input of the current transaction.
e.g
https://www.blockchain.com/btc/tx/7da0823ebf7a002a15b6bd11c676c6c213c349c982a9c454539e3ad63e9d57ee

A transaction (that is not a coinbase transaction) will have specified inputs and outputs. The inputs must be comprised of valid, existing UTXOs (referenced by transaction ID and output index number, called the 'outpoint'), which will be 'consumed' to create the outputs (newly created UTXOs).
To spend any UTXO, you need to satisfy the conditions of the locking script placed on it.

I presume that its inclusion here is a reference to the Output of the originating transaction i.e. the Input of the current transaction includes a part of the Output of the previous transaction to provide extra information to the user.

If we look under the hood at how transactions work:
The transaction input will include an outpoint, as well as an unlocking script that will satisfy the scriptPubKey, and a sequence number (which is not relevant to the question at hand). The scriptPubKey for an input isn't explicitly included in the transaction data, as that would be redundant. Instead, the scriptPubKey can be looked up via the outpoint.
The outputs created by a transaction will each include a value (amount of BTC), and a scriptPubKey.
A block explorer will likely just display all of this info together for ease of use though. So if you look up a transaction ID, the scriptPubKey of the inputs may be listed, despite the fact that the actual serialized transaction data doesn't explicitly include this data (it just includes the outpoint, which is used as reference to look up the relevant data).

You can think of the outpoint as the information about which UTXO is to be spent, the scriptPubKey as the 'lock' which must be opened in order to spend it, and the scriptsig as the 'key' which will open the lock.


What is the story behind MyBitcoin? The name of MyBitcoin eWallet comes up quite often here and there. What is the story behind it and the attack on it they claimed occurred?

They had a minimal confirmation count of a single block. This meant that someone could create a bad transaction and confirm it him/herself, that would trick the MyBitcoin software into thinking the transaction was certain (as it has a confirmation). The attacker then transacted Bitcoins away from the MyBitcoin service. When one or two[1] truly legitimate blocks had been created truth would catch the lie, but the Bitcoins were already out of MyBitcoin's reach.

[1] the longest blockchain is considered the valid one. As long as most generation happens on a legitimate chain that chain will become the longest without fail. That means that someone can fake a single block when he's lucky, but a second block building upon that block would be significantly more difficult, as he's now racing with the legitimate blockchain. Assuming the attacker doesn't manage to outrace the legitimate chain his chain will still be one of the longest if the legitimate chain has only a single extra block.

The minimal confirmations used in bitvau.lt is 3. Some services are using even more. It is effectively a security vs. usability tradeoff. The difference in computing power required for generating 3 blocks in a burst is quite significant and would most likely be noticed. If it is not burst-computed it could be would be quite expensive.

Their stoy? They had this error, it got exploited and they decided to give those that claimed it their coins back. In the end a lot of coins were stolen.


Can I create a deterministic wallet and export/disclose indiviual keys without compromising the wallet? Scenario:

Create a deterministic wallet and a larger number of private keys and associated bitcoin addresses on a safe (e.g. offline) computer.
Backup the seed securely. Store the private keys securely (e.g. on a piece of paper).
Note addresses and send Bitcoins to a number of different addresses. (They are now in cold storage.)
When needed, take one of the private keys and import it from an online wallet (e-wallet, cellphone, etc.) (This includes the risk of the private key getting stolen by malware or the e-wallet operator. However, such a theft would only apply to a small amount, not your total fortune.)

If one private key of a deterministic wallet gets compromised (known to an advisory), are the other keys (and the seed) still secure?

By design, this is not the case for the electrum deterministic wallet and the developers are aware of this. How about other deterministic wallets, e.g. Armory?

The proposed standard for hierarchical deterministic wallets (see BIP 32) is designed to allow this (and more).

It is not yet implemented, but several authors of clients have agreed to adopt it, once it becomes final.


Is declining number of peers (hosts) threatening the network? I found out here that the number of total network hosts basically went down to 1/3 during the last year. Does this mean the network is less secure because fewer people run it despite the total hashing speed is still growing?

Kozuch, you linked to another post that is related to this issue.  However, your question and the linked post are two separate issues: the other question is asking why grow the amount of miners in the bitcoin network.

On the other hand, the question you asked is about the number of hosts.  Specifically, peers, also known as full nodes in the bitcoin world.  These are the people who run the full bitcoin client instead of multibit / electrum, which is the light client since they don't require hosting the blockchain.

The number of peers on the bitcoin network does not affect the security of the bitcoin network.  Whether or not there is 1,000 people running full nodes or 100,000 people, it makes no difference to the security of the bitcoin network.  What matters isn't the number of peers, but the number of miners.

I run a full node myself because I use Armory and Armory requires a full node.  But I am not surprised that the number of people who run full nodes has gone down by 1/3 in the last year.  There are two reasons for this: bandwidth and hard drive space.  I have a 25 Mb internet connection now, which is fast enough that the bitcoin network almost never slows down my internet connection.  But my old (much slower) DSL connection was immensely slowed down by the peer-to-peer bandwidth taken up by bitcoin.

A potentially bigger issue, at least for me, is hard drive space.  The bitcoin blockchain was about 9 GB when I downloaded it in April 2013.  I just checked my blockchain folder and it's now up to 20.9 GB, which is exponential growth in the size of the blockchain.  My hard drive is only about 221 GB, with 98 GB free.  I expect to get at least a couple more years out of my current computer, and if the blockchain continues its trend of exponential growth, I will eventually need to buy a bigger hard drive to continue hosting a full node.

So that's the long answer on why it's likely that the bitcoin network lost a lot of peers in the last year.  Short answer?  Running a full node is rather expensive in terms of bandwidth and hard drive space.


how can i query utxo to bitcoind(using bitcoin-cli) with public-private key not wallet i want make a transaction to send bitcoin to others.

so i need utxo by someones' adfress.

but bitcoin-cli listunspent command only allows address in wallet.

is it any idea to query listunspent with address not in wallet?
using public, private key.

You do not need the uxto of the other address to be able to send it BTC. You just need the address.

If you want to list unspents of an address you don't have the keys for, I don't think bitcoind can help you. However, you can use explorers like blockchain.info: https://blockchain.info/unspent?active=35QEobWVUKjMY2HwKATYYQXRGzXJvdXQCy&format=html (there's also JSON if you want it).


How many different destinations can a single transaction have? I am building a web-app that needs to send money to different customer's addresses. I would like to minimize transaction costs and avoid unnecesary traffic, therefore I would like to pay all of them at the same time. How many different destinations can one single transaction have?

Cheers!

There isn't a maximum number of outputs but instead a maximum size of data in a block.  So if there was just one transaction with a lot of outputs, the combined size would need to be below the block maximum of 500K.

I don't know the size of each transaction but you are talking thousands or tens of thousands of outputs before hitting these per-block limits.


crypto currency exchange and cold storage Most of the crypto currency exchanges use cold storage for depositing bitcoins.
I was wondering if they maintain a cold storage for individual user or if they have one large cold storage for all users? does it provide benefit for storing offline wallets for individual users for a crypto currency exchange?

Thanks

I sincerely doubt that any exchange uses individual cold storage wallets, the overhead would be too big: Every time an offer is matched on the exchange or somebody wants to withdraw money, the individual wallets of the involved parties would have to be imported from cold storage and then recreated.

On the other hand, if an exchange only used a single address for cold storage, if they ever had to import it, all money would be online at the same time. That would be very insecure.
It might be feasible to sign transactions offline and then safely transfer those via mobile data storages. The offline computer would have to be made aware of the current state of the Blockchain regularly though, so, on the other hand the blockchain would have to be transfered to it manually as well. The problem I see with that would be that withdrawals would be extremely slow, or you'd have to have people running USB sticks 24/7.

I would assume that every exchange uses many different cold storage addresses. If I were to create a scheme, I would reroute all deposits directly to cold storage upon receival, and change the cold storage address in use whenever a pre-determined cap is reached. I would only store an amount on each cold storage wallet, that I'd be comfortable to have in my hot wallet at one time.

I would then keep a small amount of crypto currency in my hot wallet, in order to automatically process withdrawals. Whenever the amount in my hot wallet runs low, I would import the oldest cold storage address.


How many throws of a dice are necessary to defeat a brute force attack? At bitaddress.org I have decided to use "Brain Wallet" and create my own physical randomness using dice. (I understand that dice are more effective than entering dozens of random keys on the keyboard.)

How many throws are necessary to create a passphrase which would defeat a brute force attack on my keys?

Rolling a single die has 6 possible results. A private key is a 256-bit number. But its address involves a 160-bit hash, so that's the most you need to use.  To know how many dice rolls you need to get this much entropy, you need to know when 6^n > 2^160 (because the probability of a certain sequence of n die rolls is 1/6^n). This is equal to ceil(log(2)*160/log(6)) or 62.

So if you roll a die 62 times (or a pair of dice 31 times, etc. - but be sure to count the die separately, and in a consistent way - e.g. do not always write the smaller of the two first, because you'd remove some entropy), and write down the numbers in order (e.g. "132415614..."), you can use that to seed a crypto random number generator that can give you a private key as secure as is possibly useful.

Electrum's seed is 128 bits, and is considered (by those who created and use it, at least) to be secure enough for not just one private key, but all of your private keys. To match that entropy, you need 50 die rolls.


How do i setup 2x TTbiT Usb Miners on CGminer? I'm having trouble connecting 2x TTbiT Usb Miners(sha256) through CGminer. Does anyone know how to set them up to mine BCH on Multipool?

Here is a link[https://docs.google.com/viewer?url=https%3A%2F%2Fwww.eyeboot.com%2Fdownload%2FTTBIT%2FTTBIT-SHA256-USB-Miner-Setup-Guide.pdf]
That was what i used to set mine up


Changing bitcoin core password Let's say I have 5 copies of my .dat file on individual flash drives. I download the blockchain and run a full node and have the core wallet.  I copy my .dat file into bitcoin core. I type in the old password and then change the password to a new password. Will someone who has 1 of my old .dat files and who knows the old password be able to access my bitcoins?
Follow up- So the easiest solution is delete the old. .dat files once I have btc core wallet running with the new password?
Thanks

Will someone who has 1 of my old .dat files and who knows the old password be able to access my bitcoins?

Yes. Including bitcoins added anytime afterwards!
As far as I know, the password is used to encrypt the file contents (or at least the private-keys in it). So old passwords are still valid for decrypting old files that were encrypted before you changed passwords.


Is there a way to access my BItcoins before Bitcoin qt syncs? I used QT to generate an address, and have received some coins, but they're not showing up because it hasn't synced yet. It looks like syncing will take 2 days. Can I access the coins before then? Maybe dumping the wallet and importing with another client?

You can either import the keys into an eWallet that allows for that, or try taking your wallet to someone else who has a fully synchronised Bitcoin client. If you replace their wallet with yours (remember to make a backup!), the client should synchronise your wallet with the network and you will see your transactions. You can take the updated wallet.dat file back with you and use it until your Bitcoin synchronises.

Both of those options carry risk - in the first case you entrust the safety of your Bitcoins to a third party, and in the second case - to your friend. The risk could be mitigated (for example, encrypting your wallet will still let it be synchronised, but the private keys will be safer), but should always be kept in mind.


Will the performance of calculating the balance for an address degrade over time? If balances are calculated on the fly by offsetting all the transactions flowing in and out of a public address, will this degrade the performance of calculating such balances in years to come, i.e. when large volumes of transaction history have accumulated? How many transactions would result in a noticeable drop in performance? or is the threshold so high that it's not likely ever to be reached by the vast majority?

The balance is calculated from something called UTXO, this is a list of unspent coins, it is created on blockchain rescans and updated on receiving of new blocks. It is therefore not dependent on transaction history size but only all current available coins fragmentation.

There are performance issues with this solution also, but they are been worked on...


Local Testnet3, where do the new coins get sent to? I'm trying to setup a local testnet with multiple nodes. Currently I have three nodes, and their mining powers are almost the same.

When I use listaccounts RPC call, all the wallets have 0 coins. Even when I call listunspent 0, there are no transactions listed. How do I check how many coins I have mined so far? There have been 50 blocks in the blockchain so far.

Thanks for your help.

Newly mined coins are immature and cannot be spent until 100 more blocks are mined.

bitcoind does not show immature coins as part of your balance, but you can see them using the listtransactions command, as I explain here.


Why use the master key to encrypt private key? And why just store unencrypted master key in memory? When encrypt wallet, using a master key to encrypt private key.The master key is encrypted by the key derived based the wallet's passphrase.
When unlock wallet, the unencrypted master key is stored in memory, but not private keys.

1、Why not directly use the key derived based the wallet's passphrase?
2、Why the unencrypted master key is stored in memory, why not private keys?

1、Why not directly use the key derived based the wallet's passphrase?

Encrypting a master key which is then used to encrypt the actual keys is a fairly standard practice for encrypting data. Doing this allows the master key to remain the same so that changing the password does not result in having to decrypt and then re-encrypt all of the encrypted data. It only requires decrypting and re-encrypting the encryption key.

  2、Why the unencrypted master key is stored in memory, why not private keys?

A wallet can contain thousands of keys (or tens of thousdands, or even hundreds of thousands). Keeping all of these keys in memory will use memory and possibly take up so much memory that the system is unable to keep running bitcoind. A master key is fixed size though, and fairly small, so keeping that in memory is not a burden.


How to apply my bitcoin address generated offline to online I think I can generate bitcoin addresses offline by JS. Can I use them directly or have to report them to somewhere so that the network knows my addresses?

If you want to use an address to receive funds, then there is no requirement to "report" the offline generated address anywhere. You can create the address (public and private key) offline, read the address out to somebody over the phone (or send email, or post it on a web page), and they can then send bitcoin to that address.

Later, when you want to spend the funds sent to you, you would need to load the keys into a client.


Bcoin vs Bitcoin Core: query your node to list transactions of any address I am trying to set up a Bitcoin node. It should be possible to query the node through JSON RPC to get a list of all transactions (including UTXOs) of any Bitcoin Address, which doesn't necessarily belong to my wallet. This node should power a wallet application which can be downloaded and used by anyone.

I ve already tried with Bitcoin Core. In the bitcoin.conf file I specified txindex=1. Of course the blockchain was not pruned, but I could only retrive transactions for the addresses inside my wallet.

I learnt that I could add "watch only" external addresses. However, this requires re-scanning the blockchain every time a new address is added, which is a lengthy process. Another option would be to use blockchain.info APIs, but the whole point of my efforts is to avoid relying on third parties.

Finally I found bcoin which is an alternative implementation of the bitcoin client. I read in their documentation that one can create a full-blown table of transactions inserting into the bitcoin.conf file index-tx=true and index-address=true. Anyway, bcoin documentation doesn't specify if by doing this I ll be able to query the node to get transactions for any address I want or only for addresses which are part of the wallet. I 'd rather avoid re-downloading and validating the whole blockchain only to find out.

Can anybody tell me if bcoin can solve my problem?

In case bcoin doesn t serve my purpose, can anybody please tell me what I can do to be able to query my node to find all transactions for any address I want, including those which are not part of my wallet?

bcoin can be run with —index-address or indexAddress: true in bcoin.conf. This will index all transactions by address, a feature I do not think is available in Bitcoin Core.

You can read about the API call here:
https://bcoin.io/api-docs/?shell--cli#get-tx-by-address

Normally switching indexes on or off after a full node is synced would not be allowed. However a recent update to the bcoin indexer module (on GitHub master branch, not yet released or published to npm) allows the user to enable indexing at any time. It will, of course, require a long rescan of all block data to create the indexes.

You can review the indexer update here: https://github.com/bcoin-org/bcoin/pull/758


Trying CashApp to add funds and purchase Bitcoin immediately but not working, Have done all banking requirements, IS THERE ALTERNATIVE Details: I was successful in entering in my bank information on Cash App however, keeps saying transfer failed even in the process of adding cash into the app from my bank, so I can use that to buy bitcoin immediately, And of cash app will not let me buy bitcoin using my debit card and there is always a routing number always showing that I did not enter(I assume that is Cash App routing for my new[just started it 6-12-2020]cash app account? The app doesn't say which place it is pulling from except for the 1st time..

**I am wondering what the common causes are..could 1 be you must be connected to wi-fi, if so why since I do other transactions this way without connecting to wi-fi

**If CashApp is just too much trouble, WHAT IS ANOTHER APP TO INSTANTLY UPLOAD YOUR BANK INFO AND BUY BITCOIN not a 7-10 day thing__?...Does CoinBase now do immediate purchase?

Buy bitcoin through Simplex using the Abra app. You could also make an arrangement with a Bitcoin seller on LocalBitcoin.com.

If you can connect with a miner directly you can get around these fees, verification, and BS waiting periods when purchasing Bitcoin. Reaching out on online mining communities could go a long way.


What is the Bitcoin Friday? Recently the Bitcoin Friday event was announced. What is it all about?

Bitcoin Friday is an event coordinated by some of the biggest Bitcoin sites, including MtGox, BitInstant and SatoshiDice to bring big discounts to Bitcoin users on their sites. The event will take place on Friday, 2012 11 09.


No idea what wallet site, or password(s) but has the old computer My friend was paid out in bitcoin approx 2 years ago, she has no idea what wallet site, password(s) but has the old computer still. Is there a way to find enough data to recover her Btc? She is and was clueless about btc, wallets, etc...  I practiced looking on my computer after briefly searching the net and couldn't find a wallet.dat file. Went back to work searching the net and found this site first thing.

Is there a way to find enough data to recover her BTC?

Probably not.

If she didn't make a note of her password and forgot it then she almost certainly didn't make a safe backup of her private-key or seed-phrase either. You could ask her about that though

  She is and was clueless about btc, wallets, etc

That often means people lose their BTC.

  My friend was paid out in bitcoin approx 2 years ago

Her best chance would be to find email or other correspondence relating to that event. If she can remember who "paid out" and why, maybe she can get back in touch with them and hope that they recall where the BTC were sent - they may at least have a record of the receiving address and that will help her find out whether there is still any unspent BTC associated with that address.