text:
What's the most efficient method to try and guess a wallet's private key?
I have a Bitcoin address that I want to guess its private key.
What's the most efficient way to do it?
I don't mean "use a trillion servers" but "use this program this way".
Note that it has to run on windows.
I know that it's pretty much impossible for a PC to guess a private key (more possibilities than atoms in the universe and all that) but still, it could be the very first key I try.

Possible duplicate of https://bitcoin.stackexchange.com/q/22/5406

There is no known way to 'efficiently' guess at the private key for a specific address. The best method is simply brute force guess-and-check, and given the massive address-space, the chance of guessing correctly is essentially zero.

@nickpapoutsis: No one has created a program or dictionary for this - mainly because it would be futile. You may as well just enumerate all the keys in sequential order then generate HD addresses (with some gap limit, say 100) and check each address. You'll need your own copy of the blockchain for efficiency of checking. Indexed by address obviously. See Large Bitcoin Collider - though I don't think that really does exactly what you are asking.


text:
51% attack inevitable
I think the assumption of a 51% attack is not worth the effort is wrong. Eventually the price of Bitcoin will stabilize. Let’s say at 1 million USD then a diminishing block reward and the transaction fee need to compete with a 51% pool that can make arbitrary amount of profits. The transaction fees will have to pay for 51% of the network to keep everything secure.

What is your question?

How would any reasonable transaction fee keep stuff secure in the end as just robbing people from their money has a better return on you investment. The 51% pool could still pretend to be running transaction just double spend once in a while a very valuable bitcoin transaction.

Apart from other reasons why this won't happen. Let's reason if it's worth the effort to do a 51% attack.
So let's say are able to acquire the hardware to form this 51% attack
This would be quite an investment at the current hashrate, which is +/- 100M TH/s
A modern miner like Antminer S19 Pro costs $10k and runs at 110.0 TH/s
So you need 900.000 of these to get that amount of hashing power, which would cost you 900k * $10k = $9 billion. Of course you 'just need' 51% of the hash power, so let's say it's $4.5 billion.
You now can only turn back transactions if I'm correct. So you can pay for something in BTC and quickly fork the network to undo a transaction.
Once you did this, everybody will see this. Probably people will immediately stop accepting BTC now. And you cannot trick other people and have free payments.
Ergo: It's hard to imagine you win back your investment in mining equipment before people realize you cannot trust a BTC payment.
And I even left electricity out of the equation (small costs compared to mining investment)

You have to compare it with the transaction fee's. The transaction fees will have to pay for all this. Would you pay 4.5 billion to secure 7 transactions per second? Now if you double spend a few very valuable transactions there will always be an incentive to join such a pool. Why wouldn't you it has a better return on your investment.

Ok, so the theory is that by the time the block reward is approaching zero tx fee will be enough incentive. Assume that BTC is a major currency by that time and the fee is still +/-  0.00024 BTC per tx, with 2000 txs in a block, you would still have 0.5 BTC reward as a miner for finding a block.
How much is 0,5 BTC worth then if there are only 21 million BTC around (less in practice). 0.5 BTC = 0.000238% of the total supply.  An estimate by CIA is there are currently 80 trillion USD. 0,00238% of that alone is $19 billion. So 0,5 BTC doesn't sound too bad.

Also, you wouldn't join a pool for a 51% attack. You would need to control all the hashpower. Because: how would you convince others in the pool to coordinate together on an attack?

One more remark: bottom line of my initial argument is still standing. If some entity has the power to do even very selective double-spend transactions, trust in BTC would still be broken.  It would be really hard to cover up a double-spend, so the selective part doesn't make a difference I think. And, the entity who has invested most in mining equipment has more to lose than the other miners.
Game theory predicts the entity with 51% of hashpower would want trust in BTC to remain, so she can keep mining in the future for a profit.

you missed a few zero's:  0.5/21 million = 0.0000000238 = 0.00000238 % * 80 trillion = 1.9 million. and that would require you to move all 21 million bitcoins each block.

Ok. Thanks for pointing this out. Guess you missed some 0s as well : ) (0,5*100)/21000000 = 0.00000238095% * 80 trillion = 190.476.190 = +/- 190 million

And could you explain what you mean be 'would require yo to move all 21 million' bitcoin each block? I'm just pointing out that you can reason that 0,5 BTC as a mining reward for a block is worth quite a lot in the case BTC becomes as 'valuable' as dollars are today.

You should not multiply the percentage but the fraction. And this would only be 1.9 million USD per block if the total transaction value in this block is 21 million bitcoins. (assuming btc replaces usd)

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

sort: votes


text:
Blocks from before the genesis block
How do we know that there are no blocks that predate the genesis block? A block that could potentially contain any number of coins. If somebody already created such a block from before the genesis but never published it could it (technically) stil be merged with the chain?

The design of the blockchain is such that such a scenario is not possible. By definition, the genesis block does not have an ancestor block. While it has a field for the previous block hash, this field is set to all 0's to indicate it is null and has no value set. This means that there are no blocks that come before the genesis block.
Additionally the genesis block is special in that it is both treated specially and hard coded into software. Nodes do not download the genesis block - they have the block in its entirety written into the software itself. This gives the genesis block special treatment, with one such special treatment being that the view of the blockchain is instantiated with the genesis block as the very first block.

While it is most certainly possible (and probable) that blocks were created before the genesis block, these blocks would have been ones that Satoshi created during testing and belong to a different blockchain. Those would not be valid on the Bitcoin blockchain because they refer to their own genesis block, or are their own genesis block. The actual time they were created does not matter, only whether they refer to blocks which eventually refer to Bitcoin's genesis block.

I thought I red somewhere that the genesis block didn't have all zero's so that it could be a backdoor if Satoshi fabricated the hash form previous blocks. I wouldn't consider hardcoding it from being downloaded as impossible because it doesn't make it computational impossible where the all zero's hash does. The difficulty would simply be to large.

@Wouter You can see the genesis block here: https://en.bitcoin.it/wiki/Genesis_block It does contain all zeroes for the previous block.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
how do i brute force my wallet.dat to get my private key
i am not really a computer programmer, but i want to get my private key from my wallet.dat, i have just the wallet.dat file and the public address where the bitcion was send. From my previous researches, i was told brute force the wallet is good to use, like i said i got just the wallet.dat file, but while trying to see on how i could proceed with the brute force process, it requires a hastcat and a master key whereas i have just the .dat file.
my question are

how do i get the hashcat? is there a site i will go and putin some particular word to be able to get the hashcat? if yes which word?

how do i get the master key as well since i have just the wallet.dat and the address in which the bitcoin was send to

i can't remember the password, but i have linked the wallet.dat file to the new bitcoin core i downloaded on my new machine, windows 10 to be precise

To bruteforce a wallet.dat file you would need to follow these steps.

Install python from python.org
Download john the ripper from github
run the script bitcoin2john.py to extract the hash
get hashcat from hashcat.net

With hashcat you can search the entire space of numbers of your choice using a mask ?d?d?d?d?d?d and increment.
Your hashcat command would look like: hashcat -m 11300 wallethash.txt -a 3 ?d?d?d?d?d?d?d --increment etc would work
Once the password is found you can use it to export the private key from core.
(From another topic, but i can help you if you have question)

You forgot to mention that it might take millennia to discover the key using brute force.

if you have no idea what the password is, it could take a lifetime. With a bit of luck, good wordlists and good settings, it can be found.
But if you know the length, some characters or the ones used, the password can be found much easier.

If you are using Bitcoin Core:
1 - Go to window > console
2 - Type listunspent
3 - You will get a list of addresses with the spendable amount
4 - Copy one of those addresses
5 - Type dumpprivkey pasteYourAddressHere


text:
How are a private key and a seed phrase related?
Is it a 1-to-1 relationship? If so, does that mean they are interchangeable? Can I then store just one of them and derive the other when needed?

It's the same relationship between the branches of a tree and the seed you put in the earth that grows into that tree.
We have a seed that can be used to derive child branches and child keys which makes the relationship is one directional (you can always derive the child key by having the seed but you can't compute the seed from the child key).
Take a look at the following picture from BIP32:

Thanks! So, all in all, to start using Bitcoin, I can pick a random seed phrase. Then I can generate several private/public key pairs. That's what these software wallets do.

Essentially. Almost all wallets are deterministic these days. They create a random seed which they use to derive all the future keys. That way they only rely on RNG once.


text:
How can I calculate the possible number of correctly formatted version one minikeys?
I'm doing a small research project collecting information on minikeys. In that research process I've come across a couple of questions that I have been unable to answer in relation to the assumed keyspace of the version one minikey. The said mini key, was used primarily by Casascius Series 1 coins, and consisted of the following parameters

Generated using Base58 encoding scheme
Consists of a total of 22 Characters, of which 21 are random, with the 1st character being a capital S prefix

Has the following requirements to be considered well formatted:

If the minikey appended by a ? at the end of the string hashed using SHA256 results in the first byte being 00, the string is a well formatted minikey

Key Question: Is there any way to calculate the potential number of keys within the massive 58^21 keyspace that would be considered properly formatted?
My current suspicion is that it's not possible to do so because the validation involves hashing and the entire input of the entire minikey input would be needed to generate a proper hash (meaning potentially in order to calculate the possible number of valid keys, every potential key, of a impossibly large keyspace would need to be generated, which is currently impossible). However I am asking this question with the hope that this suspicion is incorrect and that it is somehow possible to calculate the possible number of valid well formatted keys.
For reading on this subject I would recommend checking out:
https://en.bitcoin.it/wiki/Mini_private_key_format
Be warned, the python script needs minor modifications to run on Python2.7
Bold is for key questions
Italics if for important thoughts
Note: This post intentionally does not cover the more secure Casascius Series 2 Keys, however it is likely assuming that there exists an answer for Series 1 keys that the process can be used on Series 2 as well.

Because outputs of SHA-256 can be considered equally distributed for the whole space and this property passes for the first one byte of those outputs, you can calculate this number easily with a really good approximation. One in every 256 in the space you mentioned would be a valid minikey. This approximation would be very good, since the space is, as you noted, really large, so it follows the law of large numbers.
If you needed an exact number, however, your assumption would be correct, though, calculating this number would require to check every possible "candidate" minikey in the space, which would essentially be bruteforcing the whole space and won't be computationally feasible.

Fantastic, this appears to be the answer I was looking for

I'm happy to help, @RasikhMorani. Would you mind marking the answer as accepted and upvoting it?

Accepted! Upvoted, but I don't have enough reputation for my upvote to show

Ah, I see. Thank you kindly for the accept


text:
What if two people want to spend same input at the same time
Lets say me and my friend both have access to same private key which can sign some new transaction. What would happen if me and my friend broadcast transaction with same input at the same time to a different nodes ?
Also what would happend if i broadcast it 1 minute after him and pay much larger fee and his transaction is still unconfirmed? Would miner take my transaction than because it includes higher fee or would the stick with his transction because he broadcasted it first.
Thanks

Does this answer your question? How does a double spend get resolved when two miners find conflicting blocks at the same time?

Eventually all messages are put in a sequence. The key word is "eventually".
Let's say there are two users A and B trying to spend a transaction at the same time.
A's transaction reaches Node1 and B's transaction reaches Node2.
Both nodes include the two different transactions in a block and are able to mine the block using those transactions.
Further, when Node1 receives B's transaction it is rejected as a double spend and when Node2 received A's transaction, it is rejected as a double spend as well.
At this point Node1 and Node2 are working on different chains. This needs to be resolved, and the following explains how.
Now, when Node1 and Node2 broadcast their mined blocks to the network, there will be two competing chains. Depending on the which chain other nodes are using you will get 1 confirmation for the transaction from different nodes. That is why spending transactions with 1 confirmation is not too clever an idea.
Eventually, both nodes will reorganise as more blocks are mined top either Node1 or Node2's block. The issue will be resolved when one chain outputs 2 or more blocks more than the other. The losing chain will be discarded by all nodes (who must accept the longest chain as the most valid). At that point the double-spent transaction that did not make it into the valid chain will be invalid forever.
Hope this helps.

Thanks, that clears things up :)

What would happen if me and my friend broadcast transaction with same input at the same time to a different nodes ?

Some network nodes will have your transaction in their mempool, while other will have your friend's one.
If your transaction is really basic (no batch, not signaling RBF, not spending another unconfirmed transaction) then (unmodified [*]) nodes will accept the first transaction they are sent and reject the other one.

Also what would happened if i broadcast it 1 minute after him and pay much larger fee and his transaction is still unconfirmed?

If your friend's transaction signals for Replace By Fee then your transaction will likely [**] replace your friend's transaction in the nodes' mempools which opted in for RBF.
[*] According to their incentives, miners are likely to run modified versions of the software (and especially regarding the policy).
[**] If it respects the 5 RBF rules.


text:
In LN, how could a payer prove to 3rd party that he indeedly made a payment to the payee?
For regular on-chain payments, a txid can prove at least a transferring of value indeedly happened, at a specific time, despite that it may be totally irrelevant. For example, a malicious user can send his own money to himself, to pretend that he purchased some goods from an innocent merchant.
For LN off-chain payments, is it possible for a payer to prove to 3rd party that he had indeedly made a payment to the payee?

In lightning the receiver of the money comes up with a random secret and comits to it via the payment hash. Once all the hashed time lock contracts (htlcs) are set up along a path through the network from the sender to the receiver the recipient will release the secret preimage for the chain of htlcs to settle. The preimage can be seen as a proof of payment. However as with the onchain case there is some doubt. Every node along the route who participated in the payment will know the primage of the payment hash and could thus argue that they initiate the payment

Should the preimage be signed by the payer/payee?

the invoice which transports the payment hash is signed by the payee. The payee cannot really sign the preimage to gain something as every routing node could do that. There are currently proposals like stuckless and cancable payments as well as payment decorrelation. In that world the payer could actually proof (s)he was the the payer

I still doubt how could a signed invoice (which contains the payment hash) together with the preimage could prove anything. How could the 3rd party be convinced, or be able to spot fake proofs?

The proof consists because we assume that the inverse of the hash function is unknown. Being able to provide the preimage is proof that the recipient was paid otherwise (s)he would not have released the secret

But invoices can be generated with zero cost, right? How could the 3rd party distinguish between an actually paid invoice and an never-paid invoice which is used to pretend to be a paid one?

For the paid one the payer can show the preimage

Let us continue this discussion in chat.


text:
Storing private keys in cloud providers enviroment variables
Is it ok to store private keys in cloud provider (such as AWS, Firebase) secrets (enviroment variables) in cloud functions (such as lambdas or firebase cloud functions)?
I understand I would be trusting the safety of the funds in that address to the cloud provider, but I can't see another solution since I am building an application that has to sign bitcoin transactions from that address.

If the private keys are visible to you on your AWS account, then they'd be visible to anyone who has your session tokens (i.e. if a hacker would simply need to take your cookies to view the keys). So it's not only the cloud provider you'd need to worry about.
Always best to sign transactions on your own node which has no connection to your online accounts. You can build the transaction on your app, and send it off to be signed on your own server.
BitGo has some cool functionality that allows admin-approved transactions and multisig.

Is it ok to store private keys in cloud provider (such as AWS, Firebase) secrets (enviroment variables) in cloud functions (such as lambdas or firebase cloud functions)?

That's up to you. If you trust them sufficiently to effectively have the ability to steal your coins, or trust you could successfully get compensation from them in case that happens, this is a possibility.

but I can't see another solution since I am building an application that has to sign bitcoin transactions from that address.

The more reasonable solution would be to not run the logic that signs transactions on a cloud provider, but on your own hardware.


text:
How to calculate cryptocurrency pair to usd
I understand how to calculate pair like BTC/GBP or ETH/JPY to usd.
But i cant understand how to calculate pairs like XMR/LTC or LTC/BNB.
Help me please with calculate itThanks!

Welcome to Bitcoin.SE! I think I read somewhere earlier that conversions like this are often done across BTC (can't find the link now..). I will be interested in the answers as well!

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
What does bitcoin actually do with these problems?
I understand this might be a simple question but what do cryptocurrency companies do with these problems when you mine. I know you get reward for solving a problem but what will bitcoin do with that?

Contrary to popular belief, mining is not actually solving any problems. There are no math problems that miners are working on to solve. Rather what miners are doing are just hashing data and then seeing if the resulting hash is less than a given target which everyone can calculate independently with data from the blockchain. The work that they are doing is only for securing the Bitcoin blockchain; it is not useful for anything else. So they aren't solving puzzles or problems, they are just doing work to make the Bitcoin blockchain secure.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Where can I get a visual example of the entire bitcoin network starting from physical network to the overlay network
*Note I am not a technical person so excuse any misunderstandings on my part here.
I am looking to get a sense of how the entire system looks like as a whole starting from the physical hardware (such as miners and full nodes) to overlaying networks (node transaction relays maybe?) to mobile clients omitting and receiving transaction data.

If I recall correctly, I believe there is a diagram like that in the O'Reily book Mastering Bitcoin by Andreas Antonopoulos.  It shows the different types of nodes and how they interact on the network.

That is true. I do recall getting a visual representation of various types of nodes and SPV wallets but  I was more reffering to something more similar to this https://en.wikipedia.org/wiki/Overlay_network#/media/File:Network_Overlay.svg


text:
blockchain on RPi
I am just starting on the blockchain, bitcoin etc... I read 'Mastering BitCoin...2nd Edition' from O'reilly to start with and some articles from the internet.
I want to build my own little blockchain network using two RaspberryPi. I am planning to have two c++ programs running on each RaspberryPi, this C++ program will generate some data. This data becomes payload for the next block. One of the two RaspberryPi will mine it, add it to its blockchain and publish the new block, the other one will accept and add to the chain.
My question is
1. Is it possible to do with libbitcoin on RaspberryPi? With libbitcoin, I have the impression that I cannot put arbitrary type of data in the block.
2. Or ethereum on RaspberryPi?
Thanks in advance for any guidance.
bitCurious

I have had some experience with RasPI and live bitcoin client. Compiled it on a SuSE Linux. For a live client, the RasPI 2B+ was way too slow to run with live data stream (blockchain). Neither Bitcoin nor Ethereum would work sufficiently today. Only in "pruned" node. However it is a fantastic device for playing with testnet or regtest. Bitcoin Mining on testnet might be slow (I haven't tried), but you are not competing. Even better would be to use regtest, then you don't even need to mine a block. Full development stack ahead! I cannot say how this works out with Ethereum though. Last year I had severe problems in syncing the client with GETH... The limitation of the RasPI is the fairly slow due to the possible I/O cycles to the harddisk (SD card). Also connecting an SSD via USB doesn't help much.
So Q1: yes, you can use libbitcoin, and Q2: I leave it to other experts who have played with Ethereum. Maybe ask in the specific forum: https://forum.ethereum.org/discussion/1025/raspberry-pi


text:
Lightning Network: what if one broadcast an old transaction?
I understand that after a channel is created, A and B need to agree and sign to create a new transaction. The new transaction overrides the previous transaction. A or B could quit the channel by broadcasting the transaction onto Bitcoin network so that the transaction is final:
txn 0: A:0.5, B:0.5
txn 1: A:0.3, B:0.7
txn 2: A:0.9, B:0.1

A or B quit channel, broadcast txn 2, so A will have 0.9 and B will have 0.1
But what if B quit the channel, broadcasting txn 1 rather than txn 2 on to the Bitcoin network? Wouldn't the txn 1 becomes final and B could walk away with 0.7?

Welcome to Bitcoin.SE! I can see you have some experience on SE sites so I will leave you to it.

Apparently there is a time until which A can question the transaction because he will have proof for the later transaction that has happened. And B will lose all the money in the channel for broadcasting a previous transaction.

If B already send all money to A, wouldn't B not lost anything by trying so, camping on the possibility that A could be offline on that period of time? (btw, how long is the period? It probably is not too long, because the BTC is probably locked in the period)


text:
Lightning networks revocable commitments: unilaterally closing could cause funds lost forever?
If I understands correctly, A and B will exchange their revocation key once they are ready to move to the next state. What happens if B received the revocation key and decided to close the channel unilaterally without broadcasting the transaction. This way B can never get his funds, but A can never get his funds as well. Because A can not broadcast his transaction since B has his revocation key. Isn't it a huge risk for A?

What happens if B received the revocation key and decided to close the channel unilaterally without broadcasting the transaction

By definition, channels are only closed once a commitment transaction or the closing transaction is broadcast. So B cannot close the channel; he simply withholds data from A.

Your scenario is not possible because A will only give B the revocation key once both B has given A his new commitment transaction. So if B refuses to give A the revocation key to his commitment transaction, then A can close the channel by broadcast the previous commitment transaction which has not yet been revoked.

Thanks! Wouldn't it be unfair for B if A gets the new commitment, so he can broadcast both the old commitment and the new commitment? (especially in the case when the old commitment favors A).

The protocol is actually a bit more nuanced. A first sends B B's new commitment. When B accepts it, he has to send both the revocation key and A's new commitment before A sends B his revocation key. So if B refuses to send A the revocation key, A can close the channel unilaterally using the previous commitment which has not yet been revoked. I revised my answer slightly.

I suggest that you read this section of the lightning rfs: https://github.com/lightningnetwork/lightning-rfc/blob/master/02-peer-protocol.md#normal-operation


text:
What is the Coin Base Text of a bitcoin block?
On the site https://coin.dance/blocks#blockDetails, there is a column Coin Base Text with values like Mined by AntPoolk9 Z4,b or *3Zc/BTC.COM/mm.j΀n~OoBրn*e*@ for example. What does it mean? Is it equivalent to the nonce (because I thought, the nonce is always numeric)?
And where is this information stored? In each bitcoin block? And why?

Every block has one coinbase transaction, which is a transaction that miners use to send the block reward and fees to one or more outputs.
Since that transaction is generating new coins it has a special kind of input, that is called the coinbase, which allows up to 100 bytes of arbitrary data to be written to the blockchain. Most mining pools will put some sort of text in that field to identify themselves as the miner of that block. A solo miner can put anything* they want in that field, such as the message that Satoshi Nakamoto put in the Genesis Block coinbase:

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

*As of block 227,836, the first few bytes of the coinbase must contain the block height

thank you :) But what I still do not understand: Why is this even usefull/necessary. 100 Bytes of arbitrary data per block (more than 47 Megabytes in 500,000 blocks) sounds like a waste of storage space...

@Alpha Satoshi Nakamoto used it to include that message, to prove that the block was mined after that date. It also provides space for an extraNonce, which is used to try more hashes when mining. I'm not sure if he envisioned more uses than that, but it has been used sense then. It must contain the block height now, which is useful for guaranteeing that no two coinbase transactions are identical (which was previously an easy way for miners to make multiple transactions with the same TXID). Knowing the pool that mined a block is certainly useful as a way to measure pool centralization.

@Alpha Also, 47 Mb is hardly a dent. If that little amount of storage caused an issue for someone they'd have a problem in 8 hours anyway when the blockchain has grown by more than 47Mb.


text:
Is this a valid scenario in blockchain?
Is this a valid case in blockchain?
if yes whether the reward for t1 is shared and if not, which block will be invalidated or why not everyone will prefer to solve the block with a single transaction

You didn’t specify, so I’ll answer in terms of the btc blockchain:
When two valid blocks with the same blockheight are found, only one will be accepted into what will become the longest valid chain. The other will be discarded, it is what is called an orphan block.
Usually, the block that propagates through the network first and fastest is the one that will be accepted into the longest chain. The number or nature of the transactions will not affect which block is accepted (so long as all of the transactions are valid). The miner that found the orphaned block receives no part of the reward, since the orphaned block is dropped from the chain.

Is there any scenario where reward is shared among two or more miners?

@wadhwa94 no, only one miner/pool is rewarded per block. If multiple individual miners contributed hashrate to the winning pool, then those individuals would be paid out by the pool’s operator, according to the pool’s rules. This payout would be initiated by the pool’s operator, it would not be in the coinbase transaction itself.


text:
Sent bitcoin with no history of transactions
I sent 0.029044 bitcoins a few hours ago to this address 16CCgdxQ1qc89Yp2rZwzBx4Pfw83DtCyrP but don't see them yet. My account balance has become zero with no history of transactions. What should I do? Can I return the bitcoins? How to see a transaction if it is not in the history?

which wallet are you using?

Everything is fine, the bitcoins are back.
With some peculiarity:)


text:
BIP 84, BIP 173 Implementation in BitcoinJ
Can BitcoinJ (Java) supports complete implementations of BIP 173, BIP 84?
How can segwit address can be created using BitcoinJ for SPV wallet?

i don't think bitcoinj support BIP-173 but you can read more from
Bitcoinj repo
For Segwit
 Bitconj 0.14 branch is ~2 years old and has got no support for segwit at
all. For receiving on native Segwit addresses, you can use the master
branch. For receiving on P2WPKH-P2SH, I'm not sure. If master doesn't
work you can try the segwit branch (but that one isn't tested well).

Warning: master currently has no support for spending segwit outputs.
  So only use testnet or really small amounts for now.


text:
Need to find bitcoin wallet circa 2015
During this bitcoin boom I remember going to a bitcoin event and the host had me open a wallet and used an ATM to deposit $1 in it.
I dug through my old photos and I took a screenshot of my passphrase but no other information. I'm attaching a photo of what the screen looked like (without the phrase of course). Anyone have any idea which wallet/app/etc... this could be from?!?!?

is it 12 words? If so it looks like a SEED, you can try to import it in Electrum as Bip39 and see if there is any Bitcoin in it.

It is 12 words! What is electrum and Bip39? I'm sorry! Outside of that event and couple others I'm a complete novice.

If this is 12 words, you can download Electrum that is a Bitcoin wallet and import this SEED. Go to the website and download and install the wallet on your computer.
Then you will create a new wallet using this SEED, basically, these are the steps to do this:
1 - Go to create new wallet and give any name to this wallet.
2 - Go with the option to standard wallet.
3 - Go with I already have a SEED.
4 - Click on options and check BIP39 SEED and enter with your SEED.
If there is any Bitcoin in this SEED, you will probably see them. You can also try to just paste the SEED without check the option Bip39 in step 4 to see if the SEED will be recognized.

It worked! Found the transaction with the same date an a cool 8.4 mBTC.

That is very good!


text:
Bitswallet core
Please does anyone know how to synchronise bitswallet with network. Have been trying to synchronise mine with network. But it does not seem to be synchronising with the network.
I need help fixing it. I think am not doing it right.

Why are you using bitswallet? I wouldn't trust software downloaded from a website that was only created a few months ago. I would choose a wallet from https://bitcoin.org/en/choose-your-wallet

I have bitcoins in it already and it won't connect with the internet.

I suspect you have been cheated out of your money by criminals. How did you choose bitswallet core - did someone suggest them?

I thought it was the bitcoin core. What will happen to my coins. I thought it's possible to enable it connect to the internet.

Thanks for your help. I'll be more careful next time.

I would not use bitswallet for the following reasons

I wouldn't trust software downloaded from a website that was only created a few months ago.
I wouldn't trust a website that contains a lot of nonsense phrases
I wouldn't trust a website whose contents seem to be almost identical  copies of other untrustworthy websites - bitswallet.net, bitwallet.at, and a bunch of Russian websites concerning Bitsblock core, Bitgo core and other similar names.
I wouldn't trust a website that has no easily verifiable details of who runs it

Instead I would choose a wallet from bitcoin.org/en/choose-your-wallet

Thanks. I'll be careful next time.


text:
How to internally call another RPC command inside bitcoin core server?
I'm new to Bitcoin Core development, and I am trying to find a way to execute another RPC command from within a new RPC command I'm trying to add.  I believe the Node interface has the executeRpc() method, but I don't have access to a node object, at least I can't find it.  How can I make that rpc call?

You shouldn't be calling an RPC from another RPC. If there is something that RPC does that you want to do in your own RPC, then you should move it to somewhere else and call it from both RPCs.

I looked at that, but that's too complicated, it would require too much messy refactoring.

"but I don't have access to a node object" Have you tried using a callback? What are you trying to do exactly? As Andrew Chow stated you should be able to do these as separate calls.


text:
Where on the web can I find a Stratum protocol specification document?
I am writing my own mining pool server for Bitcoin and would like to work with a detailed and complete specification document for the Stratum protocol.  There are documents on the web that casually outline the protocol (https://braiins.com/stratum-v1/docs and https://en.bitcoin.it/wiki/Stratum_mining_protocol) but I am looking for something rigorous and complete and wasn't able to find it.  The reference documentation of BIP 41 and 40 doesn't exist (see Where is BIP 40 and 41?).  Something like this is good: https://github.com/aeternity/protocol/blob/master/STRATUM.md

The team at Braiins is working on Stratum v2 in collaboration with others. There have been a number of changes made since Stratum v1 was first specified.
There is a work in progress specification for Stratum v2 here.

I need the specs for V1 as I'm working with miners from 2019

@andrewz: I asked on Twitter and the Braiins link you included in your question is the closest thing that exists apparently https://twitter.com/michaelfolkson/status/1539217254709178368?s=20&t=QB7Sc9dmqtsd9-V7OXM-vQ


text:
Reference to Segwit raw transation format
Could anyone provide me a link to the specification of segwit raw transactions such as provided in https://developer.bitcoin.org/reference/transactions.html#raw-transaction-format ? (This url explains it perfectly, but only for legacy transactions)
I could only find documents (such as BIPs) that don't explain bit by bit how to build one.

BIP144 details the exact format.
The idea is that every transaction input has a witness stack (consisting of 0 or more byte arrays, each of variable length). For pre-segwit transactions, all witness stacks are empty.
There are two distinct serialization formats for transactions, the basic and the extended one. Whenever all witness stacks in a transaction are empty, the basic serialization format (equal to the pre-segwit transaction format) must be used. Whenever at least one witness stack is non-empty, the extended format must be used.
Common formats
I'll first introduce a few names for common serializations that are used further:

LE16: serialization of an unsigned integer in range [0,0xFFFF] as 2 bytes, with the least significant byte first.

LE32: serialization of an unsigned integer in range [0,0xFFFFFFFF] as 4 bytes, with the least significant byte first.

LE64: serialization of an unsigned integer in range [0,0xFFFFFFFFFFFFFFFF] as 8 bytes, with the least significant byte first.

CompactSize: serialization of an unsigned integer in a variable number of bytes:

0 ≤ n ≤ 0xFC: serialized as [n] directly (one byte).
0xFD ≤ n ≤ 0xFFFF: serialized as [0xFD] + LE16(n) (3 bytes).
0x10000 ≤ n ≤ 0xFFFFFFFF: serialized as [0xFE] + LE32(n) (5 bytes).
0x100000000 ≤ n ≤ 0xFFFFFFFFFFFFFFFF: serialized as [0xFF] + LE64(n) (9 bytes). This isn't actually used, as no structure this big would fit in a block.

Vector of T: serialization of a variable-length list of items of type T. The serialization consists of first CompactSize(n), where n is the number of list elements, followed by the serialization of each element itself.

Basic serialization
For transactions without witnesses.
The serialization is as follows:

LE32: version number: the transaction version number (typically 1 or 2 for now, see BIP68 for the meaning of version 2).
Vector of TxIns to specify the transaction inputs. Each TxIn is:

32-byte: prevout hash: the txid of a previous transaction whose output is being spent by this input.
LE32: prevout index: the position in the previous transaction's TxOut vector of the output being spent by this input.
Vector of bytes: scriptSig, or unlocking script. This script is supposed to push onto the stack the arguments needed to satisfy the program in the spent output's scriptPubKey.
LE32: nSequence: the sequence number, or relative locktime, of the transaction input. See BIP125 and BIP68 for details.

Vector of TxOuts to specify the transaction outputs. Each TxOut is:

LE64: amount: the value of the transaction output in sats (1/100000000th of a BTC).
Vector of bytes: scriptPubKey, or locking script. This script specifies the conditions under which the output can be spent.

LE32: nLockTime: the absolute locktime (in height, if < 500000000, or in UNIX timestamp if laster) of the transaction. The transaction cannot be included in a block until this time/height has passed.

Extended serialization
For transactions with witness.

LE32: nVersion: same as above
Fixed byte 0x00: indicates extended format
Fixed byte 0x01: indicates witness extension is present
Vector of TxIn: same as above
Vector of TxOut: same as above
For each input, a Witnessstack. There is no length indicator for the number of witness stacks; their number is implicitly equal to the number of TxIns. Each WitnessStack is:

Vector of StackItems. Each StackItem is:

Vector of bytes.

LE32: nLockTime: same as above

So each transaction input has a corresponding witness stack, consisting of zero of more byte vectors each. For pre-witness spends, the witness stack is empty. For segwit inputs, the stack items are the equivalent of the scriptSig, unlocking the spend. For example:

For P2WPKH spends (BIP141], the witness stack contains two items; first a public key, and then a signature.
For P2WSH spends (BIP141), the witness stack contains one or more items. The last item is the witness script, and all the items before that are inputs to it.
For P2TR key-path spends (BIP341), the witness stack contains exactly one item: the signature.
For P2TR script-path spends (BIP341, and BIP342), the witness stack contains 2 or more items: the last one is the control block (proving this script was permitted), the penultimate one is the script itself, and all items before that are the inputs to the script.

For native witness spends, the scriptSigs themselves will be (and must be) empty. P2WPKH and P2WSH can also be embedded in P2SH (BIP16). In that case the scriptSig will contain a dummy redeemscript, which "redirects" execution to the witness.

Btw, I'm developing something similar to a wallet actually. But really I just need to be able to build 1 kind of transaction. Should I just go straight into P2TR?

You may find that a lot of other network participants still using older wallet software or whose software doesn't support sending to bech32m addresses would be unable to send to you if you were only able to receive to P2TR outputs.


text:
Error generate new block with signet test
I have tried to test signet to generate new block but it is showed message as below:
bicoin-cli -signet -generate 1
ERROR: ProcessNewBlock: AcceptBlock FAILED (bad-signet-blksig, signet block signature validation failure)

You can't create blocks yourself for the global signet; it requires signatures by the parties running that signet.
You can create your own signet, though, where you yourself are the signer. The tooling around this is still a work in progress, as far as I know.


text:
Error sendrawtransaction BTC 0.21 Fee exceeds maximum configured by user
How to fix Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate) (code -25) in BTC 0.21?
sendrawtransaction "hexstring"

Result:

Fee exceeds maximum configured by user (e.g. -maxtxfee, maxfeerate) (code -25)

fallbackfee=0.00002
paytxfee=0.00002
maxtxfee=0.01
mintxfee=0.00000002

Maybe this can help you: https://bitcoin.stackexchange.com/a/22871/75551


text:
What command to generate BTC legacy address in electrum?
What command generates BTC legacy address in electrum?
here is a sample command:
createnewaddress()


text:
where is index value or hexa value of bitcoin in source code?
Registered coin types
These are the default registered coin types for usage in level 2 of BIP44 described in chapter "Coin type" above.
All these constants are used as hardened derivation.
index   hexa    coin
0   0x80000000  Bitcoin
1   0x80000001  Bitcoin Testnet

where we can find index, hexa of bitcoin for BIP44 ? how to calculate it ?

https://github.com/satoshilabs/slips/blob/master/slip-0044.md

Registered coin types
These are the registered coin types for usage in level 2 of BIP44 described in chapter "Coin type".
All these constants are used as hardened derivation.

index
hexa
symbol
coin

0
0x80000000
BTC
Bitcoin

1
0x80000001

Testnet (all coins)

2
0x80000002
LTC
Litecoin

3
0x80000003
DOGE
Dogecoin

4
0x80000004
RDD
Reddcoin

5
0x80000005
DASH
Dash (ex Darkcoin)

6
0x80000006
PPC
Peercoin

...
....
....
...

99999997
0x85f5e0fd
EQ
EQ

99999998
0x85f5e0fe
FLUID
Fluid Chains

99999999
0x85f5e0ff
QKC
QuarkChain

Coin types will be added only if there is a wallet implementing BIP-0044 for desired coin.

It is hard code maintenance right ?


text:
Check transaction per block in Bitcoin
what is bitcoin-cli command for checking how many transaction per block ?
Thanks you

getblockstats

  "txs" : n,                   (numeric) The number of transactions (including coinbase)

Example
C:\Program Files\Bitcoin\daemon> bitcoin-cli getblockcount
627251

C:\Program Files\Bitcoin\daemon> bitcoin-cli getblockstats 627251 | findstr /C:"\"txs\":"
  "txs": 2103,

The full output contains lots of other information
C:\Program Files\Bitcoin\daemon> bitcoin-cli getblockstats 627251
{
  "avgfee": 8359,
  "avgfeerate": 17,
  "avgtxsize": 571,
  "blockhash": "000000000000000000070ab39c953fd599b27da2c171476d2b2e8533484130bd",
  "feerate_percentiles": [
    7,
    7,
    8,
    25,
    30
  ],
  "height": 627251,
  "ins": 6108,
  "maxfee": 1598037,
  "maxfeerate": 387,
  "maxtxsize": 99011,
  "medianfee": 4007,
  "mediantime": 1587620811,
  "mediantxsize": 249,
  "minfee": 162,
  "minfeerate": 1,
  "mintxsize": 188,
  "outs": 4844,
  "subsidy": 1250000000,
  "swtotal_size": 550012,
  "swtotal_weight": 1383607,
  "swtxs": 893,
  "time": 1587623122,
  "total_out": 403374241843,
  "total_size": 1202103,
  "total_weight": 3991971,
  "totalfee": 17572435,
  "txs": 2103,
  "utxo_increase": -1264,
  "utxo_size_inc": -94315
}


text:
Bitcoin command RPC 0.21
I could not find the RPC command below in Bitcoin 0.21.
getaddressbalance
getaddressmempool
getaddressutxos
getaddresstxids

I think those might be RPC commands implemented by altcoins/forks and are not part of Bitcoin-core.

Indeed, Bitcoin Core has never had such RPCs.


text:
cannot generate bitcoin first block
I have download bitcoin source and change genesis in regtest. and i try to generate 1 block by command ./bitcoin-cli -generate 1 it does not show any mining block. i try over 10 times but it is still the same result why?
here the result:
{
  "address": "tc1qltnl9t23yshlexxxxxxxxxxxx",
  "blocks": [
  ]
}

please kindly advise what happen what bitcoin source code ?


text:
How to customize a bitcoin rpc to show only some information (filtering out the rest)?
I would like to modify a bitcoin RPC, for example getblocktemplate to show only a single information, in this case: "mintime": 1594178622
I tried to go into bitcoin/src/rpc/mining.cpp
and I commented out all the info I was seeing under : static UniValue getblocktemplate(const JSONRPCRequest& request)
leaving only "mintime" and I rebuilt bitcoin, but calling getblocktemplate gave the same result with all the info...
So I'm wondering what I am doing correctly
Any input would be greatly appreciated.

What are you actually trying to achieve? This sounds like an http://xyproblem.info

I want to learn how to modify a rpc call to output the information that I want. Should I just comment out lines in the mining.cpp and rebuild or do I have anything else to do to remove that information from the output. My goal would be to acces information a little bit faster. I hope that if I ask for  one number instead of hundreds of lines of data it will be a few milliseconds faster.


text:
How to accelerate mempool data access with bitcoind
What could I do to accelerate access to the data I get when I call for example: bitcoin-cli getblocktemplate ?
If I would like to be able to be the fisrt one who get information about all the new tx getting into the mempool in term of milliseconds is there any optimization to bitcoin.conf or hardware or node deployment or even modification to code that I could do to be the first one to get the info?
All I want to be able to do with my bitcoind would be see the mempool info coming in as fast as possible (and if possible mining). So I'm wondering if I can remove any other feature to get this faster?
Thanks in advance for any clue!

I want make some consideration. First all, the word "all" in the Bitcoin network is a lie, because your node can work on a wrong chain and make a not util work. Second, all node inside the mempool doesn't has the same transaction in the same moment, for this reason different chain of block during the verification can contain different transaction. In conclusion, I don't know the answer at your question, I think that if this procedure is possible through bitcoin.conf, all node can use this conf and it doesn't is the pawerfool config because all node can have this conf.

Sometimes the .conf help to leverage all the server's power (cpu, ram, etc) not everyone need to get the mempool faster so maybe not every bitcoind user is willing to invest money in powerful hardware and time tweaking its .conf to get the most of his hardware investment. And yes I was aware that every node has a sligthly different mempool but I want to know how I can get the information I can get in my mempool the fastest possible way.

I agree with you, I added only some consideration and I'm sure that is there is an answer to your question some people can help you.


text:
How does bitcoin core choose which node to broadcast to? Any vulnerability?
I suppose the nodes would only listen and re-broadcast new block from and to a limited subset of other nodes (assuming the block is valid).
How is this subset chosen? Does Bitcoin Core software choose them? (if one uses it)
I'm thinking if most of the nodes are listening to only the "popular" sources, then these sources would have too much power to influence what nodes will or will not hear. (Like how the media in real life affects people)
Thanks

Yes. Bitcoin core software chooses subset of outbound nodes randomly for you.
Initially, seed nodes addresses are hard coded. Using these nodes, client search for other peer nodes and form subset of outbound nodes randomly. Earlier, bitcoin core client used to join IRC channel to get more addresses of bitcoin nodes to randomization to the selection process.
You can also manually specify and configure outbound nodes for your node but is comparatively  less secure.
Refer this for more info: https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery

"Nowdays, bitcoin core client can also join IRC channel" It's the opposite. Older (0.8? 0.6?) Core clients used to join IRC channels to find other nodes, and no clients use this nowdays.

My mistake. Earlier, IRC channel were used for peer discovery.

The Bitcoin Core connected outbound nodes are chosen using a random method. The only time that they are very predictable is if nodes are manually added.

bitcoin selects 8 nodes for outgoing connections. the selection of these nodes are random in nature.
-seednode command helps you to connect to a node of your choice.
the random node selection prevents the discovery of the network and also protects against attacks like partitioning and eclipse attacks.


text:
About Nbitcoin NodeBehavior
We wrote our transaction listener and we were implement the NodeBehavior class. But when I update version of NBitcoin v3.0.0.60 to v4.1.1.46 I can't use the NodeBehavior. Because Nbitcoin cannot support to Protocol.Behaviors. What can I do? Are there another auxiliary class? Or can you suggest me another way for listen to transactions ??
Thank you for now.

I changed the .Net Framework 4.5.1 to 4.5.2 and I updated again the NBitcoin after that the problem solved.


text:
why not make DIY, upgradeable, ASIC mining rigs?
being a miner myself, I see one of the big problems in the mining field. ASIC's are very unsustainable at making profit, and quickly turn into scrap as something better comes along. (even though they can be super profitable at first)
What this does is centralize the wealth creation into the very first and wealthiest people who come and to buy, and drains the profits quickly for anyone else trying to get it. After the profits are drained, the equiptment becomes junk.
GPU mining is great because its a lot more doable for the average person (at a cost level) serves multiple uses and different coins, and allows a person to custom build their system, which they can update and upgrade as they move along.
So, why not just sell the parts for making ASIC rigs, and let mining enthusiasts build their own? I bet it would be a lot cheaper, and a lot more people could get their hands on ASIC chips.
it would expand the mining further to more people. more decentralization.
So why is this not being done? Do you think this could be a good idea? What do you project would happen?

So, why not just sell the parts for making ASIC rigs, and let mining enthusiasts build their own?

ASICs are highly specialized hardware, advancements in ASIC technology involve new hardware architecture (eg smaller, faster transistors), so a modular design would not allow a DIY-er to just add a new part on to keep up with the current tech. I think it would also be incredibly difficult to create a miner that is modular without losing efficiency when compared to a non-modular ASIC.
GPU cards are like a ‘general purpose’ miner, so if one coin is no longer profitable to mine, there may be another coin with a different algorithm that a miner can switch to. With ASIC chips, there is just one algorithm that the chip is optimized to run. For example, you could not use a bitcoin ASIC to mine ethereum, even if the ASIC was a modular design. You would need to swap out the chipboard itself to achieve this goal, and the chipboard is the most expensive part of the device.
From a manufacturer’s standpoint, if the majority of the unit cost comes from the chip itself, then the most straightforward business plan is to just sell the complete unit. Having a modular product means a lot of extra logistical considerations, which means increased prices for the end customer.


text:
How can i sync only the last month of the blockchain with bitcoin core?
Anyone have any idea how can i do with bitcoin core.
Thanks in advance.

You can do that with Bitcoin-core but it's not recommended, You may want to use electrum instead of Bitcoin-core.
You don't have to download the blockchain using electrum.org.

Not entirely true, AFAIK you still can do what was asked with Bitcoin Core, just no longer the recommended option.

Yeah, you're right. I've edited the answer!

I think you can still do that if someone running a full node (non-pruned) will make you a bootstrap.dat.
From https://bitcoin.org/bin/block-chain/README.txt:

As of Bitcoin Core version 0.10.0 and later, the block chain bootstrap
  torrent hosted here takes more time to download and import than it would
  to simply start Bitcoin Core and let it sync itself.
Forum thread on BitcoinTalk:
https://bitcointalk.org/index.php?topic=145386.0
Bitcoin-Qt/bitcoind version 0.7.1 and later supports a special import feature:  If the file "bootstrap.dat" is found in the bitcoin data directory, it will validate and import all blockchain data found in that file.  The following torrent presents a bootstrap.dat file for that feature.

From https://github.com/bitcoin-dot-org/:

As of Bitcoin Core version 0.10.0 and later, the block chain bootstrap
  torrent formerly hosted here is slower than a direct download using
  the bitcoin P2P protocol & client.  If you want the torrent for other
  reasons, please visit:
https://bitcointalk.org/index.php?topic=145386.0
To download the latest version of Bitcoin Core, please visit:
https://bitcoin.org/en/download

Further reading, the linked bitcoin.talk page:

Updated:  August 23, 2014

Also checking https://bitcoin.org/bin/block-chain/:

24-Aug-2014 01:40

I think you can still do this if someone running a full node (non-pruned) will make you a bootstrap.dat however your trust in the provider must be implicit.
If you want to keep only a limited number of blocks, enable prune={bytes} with bytes > 550 in your bitcoin.conf file.

This is not a reasonable answer. Bootstrap files are not verified by the node and are no longer the suggested way of initial sync.

@Ron There are always caveats. Yes, you must trust that the supplier of the file is honest and is on the right chain. I thought that each block was still validated albeit that the node has no knowledge of whether it is on the right chain. Somewhat different importing a bootstrap for only the last month to doing so for initial sync. Otherwise, the answer is, no - there is no way. Possibly I misinterpreted the question, thinking the OP was otherwise up to date.

There have always been caveats with using a bootstrap file but it was no longer suggested beginning with 0.10.0 due to the introduction of a faster synchronization algorithm. See https://github.com/bitcoin-dot-org/bitcoin.org/issues/846

@Ron A useful link - I was aware the answer was something like that third-hand but had not actually read it myself

I have updated my answer. Note that the official information from bitcoin.org says that the node will validate and import all blockchain data found in that file when using bootstrap.dat.


text:
Is there a way to retrieve a list of all the addresses that have had activities from a extended public key?
Another way to put it. I want to get a list of all the addresses that have been used and are derived from the same extended public key. Is this doable? Thx.

Yeah, using blockchain.info you can do that:
https://blockchain.info/xpub/Your Public Key Here


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

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


text:
How to check if a program is mining crypto in the background
I noticed a program I recently downloaded cause my CPU usage increase by 30 percent and 80% GPU usage increment in idle state. It is not a GPU intensive program at all. I am worried about it using my computer to mine crypto. Is there a way to check this or find more direct evidences? Thanks!

You can try to check suspicious network traffic. Install wireshark and inspect all network traffic.

Yes, if it performs intensive CPU operations and also if it does that regularly at peak and low intervals,
you can also disconnect the internet as mining requires downloading of tasks or hashes to brute force and also submit work to complete mining sub-task
You could also see its threads and see what is really happening
If the internet usage is lowered by throttling the cpu priority assigned or
by reducing its usable cpu capacity by some way,there are above 80% chances that its mining in background


text:
Open source data for bitcoin Blockchain analysis
I'm trying to find money laundering and other 'bad' use cases of the bitcoin. Of course, the public Blockchain is available to me and that is my main data source. But this is also quite limiting because all I can do is run 'pattern recognition' like algorithm.
I can test, supervise and improve my performance if I can have access to previous analyses on the blockchain regarding financial activities. For instance, a set of tagged Bitcoin addresses, a network of organizations within the Blockchain, etc.

I am not sure if this will help but there does seem a set of transactions tagged as silkroad seized bitcoins on the blockchain explorer. Silkroad was notorious for a while as an underground marketplace for drugs and other illegal activities:
Silkroad seized bitcoins


text:
Fake Tx. in Bitcoin
What if, a malicious attacker generate an unlimited number of fake transactions and broadcast it to the bitcoin network. How will the network handle it? In fact, it seems that verifying each fake transaction will take some time and energy.

A normal node which receives an invalid transaction will not relay it, so this attack will only affect the specific nodes that the attacker connects to.
When a node receives a transaction and finds it to be invalid, the node considers the peer which sent the transaction to be "misbehaving" and increases its ban score.  When this exceeds a certain threshold, the node will disconnect the peer and refuse any further connections from that IP address for a period of time.  Thus, the attacker will only be able to waste a small amount of time for any given node.


text:
What version of python is required to install electrum-ltc and electrum-dash in amazon linux instance?
I am trying to install different wallets on my amazon linux ec2 instance. I already have a working electrum-btc.
[ec2-user@ip-xxx-xx-xx-xxx dash-electrum]$ python --version
Python 2.7.13
[ec2-user@ip-xxx-xx-xx-xxx dash-electrum]$ python3 --version
Python 3.4.8
[ec2-user@ip-xxx-xx-xx-xxx dash-electrum]$ uname -a
Linux ip-xxx-xx-xx-xxx 4.9.85-38.58.amzn1.x86_64 #1 SMP Wed Mar 14 01:17:26 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

But when Iam installing other clones for litecoin and dashcoin pip install command fails.

sudo which pip3 install Electrum-DASH-2.9.4.tar.gz

  Running setup.py install for hidapi ... error
Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-y3d9_mm3/hidapi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ffxgn444/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
cythoning hid.pyx to hid.c
building 'hid' extension
creating build
creating build/temp.linux-x86_64-3.4
creating build/temp.linux-x86_64-3.4/hidapi
creating build/temp.linux-x86_64-3.4/hidapi/libusb
gcc -pthread -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Ihidapi/hidapi -I/usr/include/libusb-1.0 -I/usr/include/python3.4m -c hid.c -o build/temp.linux-x86_64-3.4/hid.o
gcc -pthread -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Ihidapi/hidapi -I/usr/include/libusb-1.0 -I/usr/include/python3.4m -c hidapi/libusb/hid.c -o build/temp.linux-x86_64-3.4/hidapi/libusb/hid.o
hidapi/libusb/hid.c:26:0: warning: "_GNU_SOURCE" redefined
 #define _GNU_SOURCE /* needed for wcsdup() before glibc 2.10 */

<command-line>:0:0: note: this is the location of the previous definition
hidapi/libusb/hid.c:47:10: fatal error: libusb.h: No such file or directory
 #include <libusb.h>
          ^~~~~~~~~~
compilation terminated.
error: command 'gcc' failed with exit status 1

----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-y3d9_mm3/hidapi/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ffxgn444/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-y3d9_mm3/hidapi/

What am I doing wrong? Can I install only one electrum wallet on one server?

Your likely missing the libusb dependency.  Electrum doesn't spell it out in their repo, but I always build it with trezorlib and it explicitly requests it.  Here's what I got to work.
sudo apt install python3-dev python3-pip cython3 libusb-1.0-0-dev libudev-dev python3-pyqt5
sudo -H python3 -m pip install --upgrade setuptools pip
sudo -H python3 -m pip install https://some-path-to-tarball


text:
how to know electrum wallet is synchronised?
I installed electrum wallet 3.1.1 on my amazon linux server today. electrum daemon is running.

[ec2-user@ip-xxx-xx-xx-xxx electrumwallet]$ electrum is_synchronized
  true
  [ec2-user@ip-xxx-xx-xx-xxx electrumwallet]$ electrum daemon status
  {
      "auto_connect": true,
      "blockchain_height": 514484,
      "connected": true,
      "fee_per_kb": 3858,
      "path": "/home/ec2-user/.electrum",
      "server": "electrum-server.ninja",
      "server_height": 514484,
      "spv_nodes": 10,
      "version": "3.1.1",
      "wallets": {
          "/home/ec2-user/.electrum/wallets/default_wallet": true
      }
  }

As far as I understand sending bitcoins to addresses of unsynchronized blockchain cannot be seen. How to know if the electrum wallet is fully synchronized and i can send bitcoins to electrum wallet addresses generated.?
Can someone explain fields of electrum daemon status result? Thanks in advance.


text:
Migration of wallet accounts to labels
I have multiple accounts on older bitcoin core version (0.16.3) but in order to move to newer releases I must migrate accounts to new label format with additional database which hold each account balance. Since I have many accounts what is best (and easier) way to move all accounts to label format and to keep addresses that each account has.
Best regards

OK, thanks.
For anyone else doing this type of migration, the procedure I did was :

bitcoin-cli listaccounts   //to get amounts of all balances on each account
copy old wallet to newer version node
bitcoind -upgradewallet //to upgrade wallet to newest version

This procedure preserves all keys, addresses and makes account a label so now when you enter bitcoin-cli listlabels you get all labels as were accounts before

Since label can not have any balance, in separate database enter balance of each account/label from first step.

While upgrading make note of new transactions that should be added to wallet and run

bitcoin-cli listtransactions XXX where XXX is number of last transactions you want to see

add each new incoming transaction (if any) to database balance so balance in database match balance on wallet

That is it. Seems complex but it can be done in no time even for large number of accounts.
Best regards

From what I have read, when you upgrade Bitcoin core, the accounts will become labels. If my understanding is correct. addresses previously associated with an account will now be associated with a label with the same name.
You will not be able to ask Bitcoin core to compute a balance for a label. The accounts feature had some significant problems and was being used in ways that had not been anticipated. Therefore many associated actions and APIs for accounts are not available for labels.

Useful references

https://bitcoincore.org/en/doc/0.16.0/rpc/wallet/getbalance/
https://bitcoincore.org/en/doc/0.17.0/rpc/wallet/getbalance/


text:
is there a way to write SCRIPTS that CONDITION OVER THE CURRENT TIME stamp?
I am very new to bitcoin scripts, and need to design some high level bitcoin protocols without enough time to really dive into the details of the language itself.
Is there a way to write a script that conditions on the current time?
something like this. where currentTime stands for the current time stamp.
GivenTimeLimit=8.23.2013

if currentTime<GivenTimeLimit:
 redeeming requires knowing x s.t h(x)=x (input is x)
else:
 redeeming requires knowing x s.t. h(x)=x AND z s.t. h(z)=z (inputs are x and z)

I am trying to create a situation where until time (or date) GivenTimeLimit, only one party p1 can redeem a certain amount, but after GivenTimeLimit, only the other party, p2, can redeem this amount. Is that possible?
Thank you very much!

Through the use of OP_CHECKLOCKTIMEVERIFY, the Bitcoin scripting language allows users to set a "cannot be spent before time T1" constraint on the output (exact semantics are specified in BIP-0065). However, Bitcoin scripting language does NOT support a "cannot be spent after T2".
This means that it isn't possible to implement your proposed contract because the 1st path would still be available even after the time limit, allowing your spender to circumvent the h(z)=z requirement by using the easier path.
The flipped scenario could be implemented, if you required h(x)=x AND h(z)=z before your GivenTimeLimit, and required only h(x)=x after the time limit. Note that the x&z path would still be available, but there'd be no incentive to use it since the easier, x-only, path would still be open.
If you wanted to create a public task that becomes progressively harder as time goes on, then instead of directly coding the harder task you'd need to code in some admin signature, and then when the time limit expires you'd need to remember to spend it with the key and move the funds to a harder version of the task.


text:
How to add new btc block to blockchain
Please let me known that "How I add a new BTC block to blockchain?" as a sole miner.


text:
To be blunt bought bitcoin in 2009 at 25 cents have not touched it
I am hoping you can help
I read through a few of you answers to other inquiries and as per my research you are very well versersed.
I acquired Bitcoin back when it first came out of trading at 0.0008 I cant remember the catalyst that popped it out bu was running equities trading desk at the time and was thinking it is stupid not to.
Peer pressure said no but still bought $25 at 8 cents it was in june 2009.  Our tech fellow got it done for me and asked if I wanted a wallet and my limited understanding said I wanted it to stay on the block chain.  Perhaps he did out in the Qt wallet at the time.
I have left it alone for so long but now worth a bunch so wanting to access it with prudence, if I can and it is still there.
I was smart enough to call my mom and have here put the codes in a family address book my sister happened to be there so it ain't no dream.
I will look back for a response and lets hope for a great end to the story.
Excuse the brevity and spelling errors
Regards,
Rainbow Dash

Spending Bitcoins requires the knowledge of the private key corresponding to the address holding the funds. These keys are managed by each user individually. Without the key, the coins are rendered unspendable.
Given the lack of details, I assume that you no longer hold a copy of the wallet that held the private keys. If that is the case, your funds are lost. If my understanding is incorrect, please edit your question to add more details.

Mr. Murch do in fact have the key

r. Murch do in fact have the key.  Can I ask you a question that may be naive, I guess I can.  When I bought the BTC I told my friend the computer guru to leave it in the blockchain and I did not want a wallet.  Is that possible?. If impossible. I then I assume my keys are for a wallet,,which would have been the QT wallet.  I have never opened it and sure security haxe changed but would I just got and log in?

Generally, "wallet" refers to software that manages keys and the corresponding balances. If you do in fact still have BitcoinQt on your computer, I would recommend that you first create a backup of the wallet.dat in your Bitcoin directory, and then, yes, you should indeed be able to open your software and see your funds. You would very likely need to synchronize with the network in order to spend, though. Also, the very first Bitcoin versions did not encrypt the wallet, so if you ever got hacked, your money might be gone. Do make a backup of the wallet.dat first, though.

If you actually still run a 2009 version of bitcoin-qt, you'd probably want to import the wallet to a new version to speed up the synchronization.


text:
What Bitcoin Wallet Can I Transfer BTC.com Private Keys To?
I have $43 of Bitcoin in a BTC.com wallet,: What wallet(s) can I transfer private keys too? (I can not send from BTC from wallet). What wallets are compatable?
Gary
shopansave52332gmail.com

Why can you not send from the wallet? In general transferring private keys is a very bad idea (you never know if the "sender" doesn't still have the keys).

Because I cannot. I get a message it is inefficient cannot send. And why is transferring private keys a bad idea? How else can I get my Bitcoin if I can not send it? It is the only way to recover it.


text:
Why aggregating transactions into blocks?
I'm just wondering why do we need blocks. I mean, I could have my tx (signed), with its outputs/inputs, make a hash of it and broadcast it. Basically 1 tx per block, if you want to see it like that.
Then, a miner could run a lighter version of PoW (or any alternative, e.g. PoS) over the single transaction (with low difficulty). This way, we wouldn't have to wait over 10 mins/block to be created. Couldn't this achieve more TPS on a blockchain? (not talking about Bitcoin specifically).
Probably the answer is no, but I just want to know why. I found several related questions here but no one seems to solve my question...
PS: I read about the relay times on the Bitcoin network to be about 14s. My question is ignoring this delays.
Thanks :)

The purpose of the blockchain is to allow nodes to agree on what transactions have occurred in the past. Part of this is how to resolve conflicts. When, at a particular height, multiple blocks are found at the same time, resolving this requires the next block to be found.
If the block time is very low, what ends up happening is that there is a higher probability that this race will occur. This results in the blockchain having more forks, and potentially longer forks that could become problematic.
If the block time was low enough for every transaction to be its own block, then it would be almost impossible to resolve to a single blockchain. With the number of transactions being made, you couldn't possible create a fixed transaction order because then the blockchain would essentially become synchronous.
By aggregating transactions into blocks that are spaced somewhat far apart, this problem is avoided. It becomes less likely that there will be conflicting blocks for a particular height. And if there are, the fork that they create does not last for more than 1 or 2 blocks. This allows the blockchain to eventually converge and everyone can agree on the transaction history.

I think it's more clear now. Thank you very much!

The Problem is that the nodes in the peer to peer network need to synchronize after every block. That means every new block needs to be shared with every participant in the network. This takes some time.
If someone on the other side of the world creates a block it might take a few seconds until this block reaches you. Even if this block contains only 1 tx. That's because latency does not reduce, if you reduce the block size.
Therefore you would have to give the network at least a few seconds time to synchronize after every transaction. This would reduce the overall tx per second drastically compared to aggregating multiple tx in a block and producing a block every 10 minutes on average.

Thanks for your response :)
However, time would be decreased. In fact, one counter argument of increasing Block size is the download time. I'm assuming that at 1 transaction level, the transmission time would be about milliseconds.
EDIT: Maybe lowering PoW time would cause more forking?


text:
Bitcoin cash not syncing the current block
I have installed BCH "Bitcoin Unlimited Cash Edition  bucash1.7.0.0". Problem is the current block is not synced in our wallet server, the server is stuck at block "635258". How to rectify this problem, please suggests me

BCH makes a hard fork every 6 months. Your node supports only the Nov 2019 hard fork. Update your Bitcoin Unlimited or it won't sync.
May 2020 upgrade: https://coinspice.io/ifp/bitcoin-cash-may-2020-upgrade/

@Manickam You're welcome. Please, next time, ask your Bitcoin Cash specific questions at reddit.com/r/btc. This website is only for Bitcoin related questions or questions Bitcoin users can directly benefit from.

if i upgrade BCH, then how to recover my funds in old version?

Create a backup of your wallet.dat and run the upgraded version. It should work. If it doesn't, you still have your backup so you wont have lost anything

Ok thanks for your reply

Is it possible to transfer funds from backup wallet to new wallet?

Run the dumpwallet command and do the last two steps too here https://bitcoin.stackexchange.com/a/101319 to import your wallet to Electron Cash

We are using ubuntu server, how to dump the wallet and recreate a new bitcoincash core from the old one, please share those things if anyone knows asap.


text:
What exactly is a "non-fungible token" and why would anyone care or want one?
https://en.wikipedia.org/wiki/Non-fungible_token
I've read that many times. It makes zero sense to me. (Just like 99,99% of the nonsensical word salad that's said these days.)
Okay, so it's some kind of garbagecoin where each coin is "unique", and that's somehow... worth money? What?
Isn't the truth that this is just yet another crypto currency-related scam designed purely to make people give them money so that they can buy more Bitcoin, the only crypto-currency which has actual value?


text:
Mining statistics dashboard
I am searching for a public mining statistics dashboard that lets you see per BTC address/transaction how much was mined, when, and a way of making sure that those Bitcoins indeed come from a miner. It is necessary for tax purposes.

Any block explorer should do, if the address contains coinbase inputs (not to be confused with the company) then there's your proof of mined coins.
Read more about what coinbase transactions are here:
https://en.bitcoin.it/wiki/Coinbase
https://developer.bitcoin.org/devguide/block_chain.html


text:
Create a non-changeable bitcoin address?
How to get a non-changeable bitcoin address. I tried to register on few bitcoin wallets websites but on each website btc address is changed after one payment is received and I didn't find the option to create a non-changeable one. I know that for privacy is much better to have a changeable btc address, but I need to create a non-changable btc address

With the majority of wallets, you'll be presented with a new address for each payment. As you mentioned, this is important for your financial privacy, so it is a standard practise.
That said, you can re-use an old address, and your wallet should detect the additional transactions received at that address, updating your balance accordingly.
In short: your wallet is a collection of addresses, it is not just 'the address that is currently displayed'. So you can re-use old addresses from the wallet if you so desire.

Whilst what you say is true for many online wallets, it is not the case predominantly for desktop (or server) installed wallet software.
In Bitcoin Core, you generate a new receive address, set a label if you like, and forever send BTC to that address.


text:
Unable to connect to Litecoin Testnet with Litecoin Core on Mac
I've downloaded the LiteCoin Core for the Mac (High Sierra 10.13.3) in order to use the testnet for testing an online shopping cart. I'm not looking to mine any coins, just use the wallet. The application loads up correctly when connecting to the normal wallet, but when I add testnet=1 to the litecoin.conf, it won't connect to the peers. When I look at the debug log, I see
2018-03-01 14:37:02 connect() to 104.236.211.206:19335 failed after select(): Connection refused (61)
2018-03-01 14:37:03 connect() to 173.209.44.34:19335 failed after select(): Connection refused (61)
2018-03-01 14:37:03 connect() to 173.209.44.34:19335 failed after select(): Connection refused (61)
2018-03-01 14:37:04 connect() to 66.178.182.35:19335 failed after select(): Connection refused (61)
2018-03-01 14:37:04 connect() to 66.178.182.35:19335 failed after select(): Connection refused (61)
2018-03-01 14:37:05 connect() to 173.209.44.34:19335 failed after select(): Connection refused (61)

I've tried adding an RPC user/pass, but still no go. Error 61 seems to relate to the service not running on the port on the destination machine. I'm in an office environment, so cannot make any network changes. Is there anything I'm missing?
Here is my current litecoin.conf
rpcuser=litecoinrpc
rpcpassword=mypasswordhere
testnet=1

One possibility is you are using an older version of litecoind which is trying to get testnet3 instead of testnet4.
If this is the case, updating to the latest version should solve it.
See Reset Testnet section at https://blog.litecoin.org/litecoin-core-v0-14-2-release-ab6d2217405f

It was the newest version, 0.14.2. I even deleted it and reinstalled it


text:
What Protocol is used in miner and Pool communication?
I've been reading something about this, and I read about stratum, GBT, getwork. I wanna ask if what protocol are they using (HTTP?, TCP?). I am +1 to beginner so what I am asking now might be wrong please do correct me

Most use the stratum protocol which sends JSON data over a TCP socket. Some pools also support the getblocktemplate protocol which works over the JSON-RPC (i.e. it uses HTTP requests).


text:
If miners switched to random pools every hour, would it help the network?
A Miner is using Pool A
After 1 hour the Miner closes the mining software and switches to another pool (Pool B) that is randomly selected.
Would this be beneficial for the network as the hash power is now randomly spread out?
Would this also benefit the miner as they now have an increased luck % on finding the next block with the random pool?
Assumption: List of pools contains at least 5 non-connected pools.

What is the deficiency in the network that you're trying to correct?  I see a solution without a problem.

Would this be beneficial for the network as the hash power is now randomly spread out?

The network itself would not really directly benefit, because the total hash rate remains the same, pools are just a secondary construction. Better distribution of who controls the hash rate, though, is good for the long term health of the network in terms of centralization (either in terms of more even distribution between existing pools, or more pools). If a lot of miners were part of a single large pool, the owner of that pool would be able to perform a 51% attack.
So no, randomly switching is pointless, but choosing a smaller pool to join and stick with is a good idea to help distribute the hashrate better.

Would this also benefit the miner as they now have an increased luck % on finding the next block with the random pool?

No, you have the same probability of finding the next block no matter what pool you are connected to, because the only thing involved in finding a valid block is the number of hashes you can try.


text:
Why does bitcoin uses INIT_PROTO_VERSION (209) for addrme and addryou in the Version Message
Why does Bitcoin use INIT_PROTO_VERSION (209) in the addrme and addryou message of the Version Message? Why is it not using the nodes protocolVersion which had been advertised in the same Message.
This is part why the nTime from the node in the Version Message will be ignored
Code used for Debug in protocol.h
   SERIALIZE_METHODS(CAddress, obj)
    {
        SER_READ(obj, obj.nTime = TIME_INIT);
        int nVersion = s.GetVersion();
        if (s.GetType() & SER_DISK) {
            printf("nVersion %d\n", nVersion);
            READWRITE(nVersion);
        } else {
            printf("Not evaluated nVersion %d Type %d\n", nVersion, s.GetType());
        }
        if ((s.GetType() & SER_DISK) ||
            (nVersion >= CADDR_TIME_VERSION && !(s.GetType() & SER_GETHASH))) {
            READWRITE(obj.nTime);
            printf("nTime %d\n", obj.nTime);
        } else {
            printf("Not evaluated nTime %d\n", obj.nTime);
        }
        READWRITE(Using<CustomUintFormatter<8>>(obj.nServices));
        printf("nServicesInt %d\n", obj.nServices);
        READWRITEAS(CService, obj);
    }

See below the Output
BTC's
Receive addrMe
Not evaluated nVersion 209 Type 1
Not evaluated nTime 100000000
nServicesInt 0
Receive addrFrom
Not evaluated nVersion 209 Type 1
Not evaluated nTime 100000000
nServicesInt 1033
2020-07-07T01:35:08Z New outbound peer connected: version: 70015, blocks=638069, peer=1 (full-relay)

Is this a wanted behavior?

Where did the CAddress that you deserialize in that output come from?

CAddress is serialized differently for different purposes. When serialized to disk, the node version and the time are serialized. This is because this information is relevant to the address manager.
However, when serializing to be sent to another node, both the version and the time are omitted because they aren't necessary. These aren't being sent to other nodes, just the IP address and port themselves. You can see that these are skipped for non-disk operations because it is doing if (s.GetType() & SER_DISK) before the READWRITE (which indicates de/serialization) for both nVersion and nTime.
The output you see is because addrMe and addrFrom are local variables which don't need to have the correct version and time. So the version used is the version for the stream which is the minimum protocol version (this is just a safety thing to ensure compatibility). The time is the default minimum time. Since these values don't matter, using these defaults is okay.


text:
Wallet balance reset
Maybe my question will be stupid, but still I hope for help.
Launched a wallet. Synchronized with the network, and my balance dropped to 0.
According to the history, it was written that the last transaction was July 1, but this is not my business, I didn’t even open the wallet.
I attach a screenshot.

if it not you, so it is someone who have your wallet keys, or maybe malware.

If it wasn't you, it was very likely that you were hacked. There are many possibilities, a virus, a phishing site, etc.
You could check the transactions and their destination addresses, so you can see where the funds have moved

The fact of the matter is that I can’t see the story (
When I sent the funds, I can see the delivery address and a single arrow icon. In this case, apart from the date and amount of the transfer, there is nothing more (


text:
Is history reversal a concern if the absence of attackers is assumed?
As described in the Bitcoin paper, the Bitcoin network may temporarily diverge, or "fork," as nodes may work on different blockchains.
The network reconverges, however, as a node will always continue working on the longest blockchain it learns about.
This opens up the network for history reversal, since transactions that are part of a discarded blockchain might not be part of the longer, universally accepted one.
This is typically discussed in the context of an attack scenario.
E.g., many vandors wait for a transaction to be confirmed six times until accepting it as payment.
This is presumably due to the Bitcoin paper stating that, assuming an attacker controls 10% of the network's processing power, waiting for six confirmations puts the attacker's success probability in the order of 0.1%.
However, in a scenario that assumes the absence of attackers, would there still be the need to wait for some number of confirmations?
After all, history reversal is an intrinsic part of proof of work -- facilitating network convergence -- even if it is not abused in order to double spend, right?

Yes, there is still a need to wait for confirmations.
Even in the absence of active attackers, there are many reasons the Bitcoin network could diverge, such as:

Large scale internet routing issues - we've already seen these with BGP routes being incorrectly broadcast, leaving large chunks of the internet temporarily inaccessible from other large chunks. In such a scenario, if miners are isolated into one of the two groups, each isolated group will advance the network without any visibility into the blocks being produced by the other side until the two networks are merged
Implementation bugs - although Bitcoin nodes generally just run Bitcoin Core, different implementations of the same Bitcoin Protocol can occasionally result in consensus bugs that result in everyone on one implementation rejecting blocks from the others. This has resulted in a few forks on other chains with multiple common implementations, such as ethereum.
Just normal mining - the very nature of mining means that sooner or later, two miners will produce block N simultaneously. This results in a split chain until the next block is mined, at which point only the block that is included in the prevBlock for the new block is retained.


text:
Electrum wallet address not showing

I've just installed the electrum wallet accordingly said by every other website but wasn't able to find my wallet address under the receiving tab or anywhere as mentioned over the internet.

Also what are these multiple addresses stated under addresses tab; difference between receiving and change address? Why have so many receiving addresses, have to manage the private key for each.

The missing address and qr-code are the issue here too. Observed on both Windows 7 and Windows 10, no address or QR-code showing regardless the settings or restarts. Solved by downgrading to 3.3.8. It just works.

Also what are these multiple addresses stated under addresses tab; Why have so many receiving addresses, have to manage the private key for each.

All these addresses are yours and are created from your seed phrase and can be recreated from it in the future (eg. recovering the same wallet using seed phrase), in other words seed phrase is the only thing you need to write down as backup.
You can choose any of them to use, there are multiple and each time you use one a new address will be created to encourage avoiding address reuse.

difference between receiving and change address?

Technically there is no difference, they are all bitcoin addresses and are all created from the same seed phrase. But practically the wallet categorizes them differently so that it can send your change to a different group of addresses to somewhat increase privacy.

wasn't able to find my wallet address under the receiving tab

Not sure why it doesn't show up in this tab, but this tab is a simplification of the Addresses tab where it selects the top unused address and shows it here for you to use. When that address is used, next time it shows the next unused address; all of which can be found in Addresses tab.

click on request on the receive tab to get an address. optionally you can enter a description before clicking on request. the description will be saved in your wallet and will show up on the history tab when you receive money. this helps you keep track of what the money is for.


text:
Time allowed to a node to react to verify a transaction and number of verifications?
Do the person acting as full nodes have to be active and online around for a particular decided time, like a job where you have to be around your machine because a transaction for verification can pop up anytime and if you are not around what happens then?
Also, the Bitcoin has more than 30000 nodes, how many verifications it actually need to become a part of ledger because how can you guarantee that this number of people will verify it in this fixed amount of time otherwise the wait could go indefinite?

You seem to misunderstand how transaction validation and finality works.
Nodes validate transactions as they receive them in the mempool or in new blocks - these validations check for standardness (for mempool txs), and consensus compliance  (ensuring there are no double spends, valid utxos, etc).
However, a transaction is not final simply because a number of nodes have confirmed it. A transaction is final ONLY if a miner includes it in a block AND that block is accepted as valid by the network. This finality happens regardless of whether there is 1 node on the network, or 30000.
Note that even after being mined into a block, conventional wisdom says to wait for new blocks to be mined on top of that block, to provide a reasonable guarantee against minor forks rolling back a transaction you consider final. Most exchanges and service providers wait for 2-6 confirmations before considering a transaction truly final.

The first sentence of the second paragraph seems to be missing a word or something.

technically speaking transaction finality doesn't happen when the transaction is included in a block, because that block may be rewinded by a forked branch, this is why there are confirmations: the more confirmations you have (so the more deep a transaction is in the blockchain) the higher chance you have that the transaction is part of the blockchain.
The recommendation is to wait 6  blocks before considering a transaction accepted but still it's just a probabilistic finality because that transaction may still be reverted (there isn't a concept of "max rewindable blocks" in bitcoin)

@Murch  Updated, thanks!

@NotImportant Also updated to include confirmation counts, missed it accidentally, thanks!

It took me days to figure out what you guys were trying to say and finally it makes sense, thanks for your input. Yes, earlier i had it wrong.

Do the person acting as full nodes have to be active and online around for a particular decided time, like a job where you have to be around your machine because a transaction for verification can pop up anytime and if you are not around what happens then?

There's no need. If a full node uses the same rules to decide whether a transaction is valid as you do, it will always agree with you on transaction validity, so there's no need to wait for it to make a decision. If a full node uses different rules to decide whether a transaction is valid than you do, then you don't care whether it thinks a transaction is valid or not because it isn't part of the same network you are.

Also, the Bitcoin has more than 30000 nodes, how many verifications it actually need to become a part of ledger because how can you guarantee that this number of people will verify it in this fixed amount of time otherwise the wait could go indefinite?

If you think it's a valid transaction in a valid block that is part of the chain that you've accepted, then you think it's part of the ledger. People who agree with you on what makes a transaction valid will always agree with you on that decision, so you don't need to check with them. People who don't agree with you on those rules don't matter -- it's only the set of people who agree on the rules for transaction validity and block inclusion who can participate on a network together.
The secret to the way public blockchains work is that all transaction data is public, all state data is public, there are no administrative functions, and all participants agree on the rules for what makes blocks valid, what makes transactions valid, and what each transaction does. So you don't need to ask anyone else if something is valid and don't care about nodes that disagree with you on validity questions.


text:
Can you replicate a wallet somewhere else
If I used my 12 seed words in another wallet provider that used the 12 word backup protocal, whether hard hot or mobile, would that then replicate my wallet?

Yes, using the same seed phrase on a different device/in different software will create another instance of the same wallet (assuming both wallets are following the same derivation path, etc).
This is a nice feature of BIP32 hierarchical deterministic wallets: you are not necessarily tied to the wallet software that you used to create the wallet in the first place. If that wallet software stops being developed for whatever reason, you can recreate your wallet using some other software/hardware.


text:
Coinbase transaction smaller than .001 btc? & Blockchain says my Bitcoincore wallet is invalid
I'm trying to figure out how to send tiny transactions, like 10 cents.  Coinbase says the minimum is .001btc.  That seems rather large.  Is that just a coinbase requirement?
Also, my blockchain wallet says that my bitcoincore wallet receiving qr code is an "Invalid Bitcoin address: "  Why?

Yes, it's just a Coinbase limitation. Technically, you can send transactions however large or small you like. However, it's probably not worth the while to send a 10 cent transaction, and your recipient will probably have a hard time trying to spend such a small 'dust' transaction, because the fees required to send the transaction (and spend it) will be much higher than the 10 cents the transaction is worth. If you are regularly trying to send such small transactions, it is recommended to look into solutions such as Lightning Network that make it feasible.

Good point re. using Lightning.

Also, my blockchain wallet says that my bitcoincore wallet receiving qr code is an "Invalid Bitcoin address: " Why?

It might be that your Blockchain.com wallet doesn't yet support the Bech32 address format (addresses starting bc1...) introduced four years ago.

It's hard for me to learn much about blockchain.com.  Info and support doesn't come easy.  Am considering leaving and using a hardware wallet like Bitbox2.  Any suggestions?


text:
How has the hash rate for bitcoin continued to increase despite price drops and miners dropping out?
Despite price dropping in 2018, the hash rate for bitcoin tripled from around 15 EH/s to 45 EH/s. Why is this the case? I am aware that the network difficulty adjusts meaning that if miners drop off, it will be more profitable for others to mine but what are the key factors driving the hash rate increase? Is it related to the increasing ledger, an increased amount of miners, and/or other factors?

the hash rate for bitcoin tripled from around 15 EH/s to 45 EH/s. Why is this the case?

Well, at the simplest level, that means more hashing power is being used to secure the network.
This could mean that a larger number of ASIC units are running, and/or that more efficient ASIC units are being created and used. A more efficient ASIC would perform more hashes per second, for a lower cost per hash per second.
Every miner will have their own costs, motivations, etc, so it’s hard to speak broadly about ‘what miners will do if price is x and the hashrate is y’. For example, a price drop means some miners with the highest costs may no longer be able to operate profitably, but perhaps those miners are ideologically driven, and will take a loss with the hope that the bitcoin they mine will one day be worth more than it is at that time. Etc.