text:
What is the point of miner signaling in a soft fork activation mechanism? What should the threshold be on miner signaling?
What is the point of miner signaling in a soft fork activation mechanism? What should the threshold be on miner signaling?
The second part of this question was asked by devrandom on IRC.
A question on the risks of reducing the threshold to below 95 percent was asked back in 2017 here.

Similar question here but slightly broader so keeping this question open. Open to merging the two though if that's the preference https://bitcoin.stackexchange.com/questions/52326/what-are-the-risks-of-a-lower-than-95-activation-threshold-for-soft-forks-part

What is the point of miner signaling in a soft fork activation mechanism?

Miners are signaling readiness for a soft fork activation, they are not signaling to support (or vote for) a soft fork. It seems generally accepted at the time of writing (February 2021) that any opposition towards a soft fork should be raised and discussed before an activation mechanism is proposed. If arguments are raised that haven't previously been considered or that opposition is material and sustained across the wider community, activation for that soft fork shouldn't be considered.
Ideally you want as many miners enforcing the Taproot rules at the point it activates as possible. Otherwise an invalid Taproot spend could creep into a block and some miners wouldn't reject it as they would be treating it as an anyone-can-spend. It would need a small, naturally occurring re-org to get that invalid Taproot spend out of the blockchain. This wouldn't be a disaster but ideally you don't want a greater frequency or greater magnitude of re-orgs than usually occur. Ideally you want all miners enforcing the Taproot rules from the point of activation.
There is also the consideration of miners deliberately or inadvertently producing blocks with invalid Taproot spends in them and fooling SPV/non-upgraded clients that is discussed here.
As devrandom pointed out on IRC there is motivation for presumably unready miners who haven't yet signaled to get ready urgently if the soft fork is activating soon. They don't want to expend resources mining blocks (with an invalid Taproot spend in them) that will ultimately be rejected by a proportion of the network. But that doesn't guarantee they will be ready and may lead to miners rushing to get ready for activation which again is not optimal.

What should the threshold be on miner signaling?

This is harder to answer as the threshold chosen appears to be a trade-off between ensuring as many miners are ready to activate the soft fork as possible and preventing a small minority of miners from unnecessarily delaying the soft fork for political or strategic reasons. With the SegWit soft fork in 2017, a BIP 148 user activated soft fork needed to be proposed because miners were assessed to be deliberately blocking activation to attempt to force through an additional block size increase.
In this developer survey conducted by AJ Towns the question "What do you consider a reasonable threshold for activation by hashpower supermajority?" it appears 90 percent or 95 percent would be the preferred threshold. The threshold for the SegWit activation was set initially at 95 percent.


text:
Property based tests have been added to Bitcoin Core. What are they and could they replace some of the unit tests in Bitcoin Core?
Property based tests have been added to Bitcoin Core.
This Dev article describes property based tests as randomized unit tests that in some cases could replace unit tests.
"Generally speaking, property-based tests require only a few lines of code (like unit tests), but unlike unit tests they test a different set of inputs each time. Because of this, you end up covering more domain space with roughly the same amount of test code."
Is this a good summary? Could we phase out some of the unit tests in Bitcoin Core and replace them with property based tests?

I think this is a fair summary. I would hesitate to phase out unit tests, rather supplement them with property based tests. In a library I maintain called bitcoin-s we use them in tandem.
Concepts
There are two primary concepts in property based testing systems.
The first one is a Generator. The point of a generator is to generate values you want to run through your tests. Think of a generator as specify the boundaries of what random values you want to be generated for your test.
The second concept is the test itself. In english, property based tests say that
"Given a generator X, i want to generate random values from X and run them through my test case. My assertion should always hold true for the value generated from my generator".
An example
I'm going to pull an example from this PR i've had open for a long time now. If you want to see some more extensive tests I recommend taking a lookg at it.
The "property" we are going to assert is that
"If we generate two random private keys in bitcoin, they should NOT be the same"
If this property fails, we have an indicatin that something is probably wrong with our pseudo random number generator.
Here is what that test case looks like in C++ with bitcoin core:
/** Check CKey uniqueness */
RC_BOOST_PROP(key_uniqueness, (const CKey& key1, const CKey& key2))
{
    RC_ASSERT(!(key1 == key2));
}

That test case can be run N number of times (by default 10 in the rapidcheck library.
The next logical question would be "where do key1 and key2 come from"? The answer: They come from the generator! The beauty of property based testing is leverage the framework to do the generation of values for you.
Here is what the generator for CKey looks like:
/** Generator for a new CKey */
template <>
struct Arbitrary<CKey> {
    static Gen<CKey> arbitrary()
    {
        return rc::gen::map<int>([](int x) {
            CKey key;
            key.MakeNewKey(true);
            return key;
        });
    };
};

This gives rapidcheck the ability to generate arbitrary valid CKeys to pass in as a parameter to the properties that we are asserting holds true.
You can see more complex generators and assertions related to Script in that PR too if you want to see non trivial generators/assertions.
Summary
It's really useful to have multiple runs of a test case with newly generated values every time. Typically in software testing, you write a unit test asserting that your code works as expected for one or two values. This is a really limited approach to testing as you want your code to work for a range of values. With generators, you can get the computer to generate a range of valid values that your property should assert true on.
I think this is particularly useful for consensus systems like bitcoin where we need to reason about a wide range of values being fed as input into the consensus system. Property based testing is a great tool to use to offload some of that cognitive load when reasoning about corner cases.

source: Stack Exchange

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

sort: votes


text:
Will there be a testnet4? Or do we not need a testnet reset once we have Signet?
The last testnet reset was for the current testnet3 back in 2012 (not including segnet which was a testnet for SegWit before SegWit was activated on mainnet). Are we due another testnet reset? Or is there no need for testnet anymore with the introduction of Signet?

I don't think there is a clear answer to this yet. I suspect many are waiting to see whether Signet proves an effective replacement for testnet. (Signet is not yet merged into Bitcoin Core as of the time of writing in August 2020.)
There has been discussion on the Bitcoin dev mailing list and in the Bitcoin Core repo about a testnet reset at multiple points.
There are various problems with testnet of which many are addressed with the introduction of Signet. Testnet coins are supposed to be for testing and are not supposed to have any value. However, the hash rate directed towards the testnet chain fluctuates and at some points the difficulty of mining a block is much higher than you would expect for a coin that is supposed to have no value. This also means that the variance of block discovery time is wildly different to the average ten minutes on mainnet. (At one point 16,000 blocks were found in one day.) It is difficult to know what is happening during these fluctuations. It may just be that the testing of one application (e.g. a new ASIC manufacturer) is inadvertently disrupting the testing of other applications.
Signet resolves this by introducing centralized control over when and how regularly blocks are mined. Newly mined blocks need to be signed by at least one authority to be added to the blockchain. For some use cases (e.g. testing the latest Taproot scripts) it will be a relief to not have to deal with wildly fluctuating block times. However, for other use cases such as mining, IBD (initial block download), P2P etc this artificial stability may not provide the desired staging ground before moving to mainnet.
It is possible to simulate a block generation policy similar to mainnet on Signet or combine proof of work with centralized signing. However, I suspect that for a limited set of use cases a totally unrestrained, open and permissionless testnet will still be required. Hence once the dust settles, Signet is merged into Bitcoin Core and we have explored to what degree Signet meets the testing needs of all the various applications I think we will still require a new testnet reset. But I can't predict the future and others may disagree!

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


text:
Security of Bitcoin Wallet
I have a doubt on Bitcoin wallet. Suppose I have an online Bitcoin wallet. Now, someone breaks into my computer and steals my Bitcoin wallet. Fortunately I have a
backup of my wallet on another computer. Now, What determines who has the bitcoins now?

Suppose I have an online Bitcoin wallet. Now, someone breaks into my computer and steals my Bitcoin wallet.

It is generally not recommended to store Bitcoin in any online wallet or exchange. Mostly because it is unlikely that you are in full control of your private keys. In the event the website is compromised, hacked, or you become victim of some sort of man-in-the-middle attack, you are at risk of losing your funds. This is especially true if the service is poorly managed (Mt. Gox had a similar fate).

Fortunately I have a backup of my wallet on another computer. Now, What determines who has the bitcoins now?

Anyone who obtains your private key(s) have full control of your funds. The only variable in this case is time (who can spend the funds faster). If you are even slightly concerned your keys may have been stolen but have not yet been spent, you should defiantly move them out of that wallet and into a freshly generated one.


text:
Transaction Malleability, How can I change signature?
I'm kind of desperate as I can't follow some ideas that I don't understand. I hope you can help me. Thank you in advance
It's all about Segwit
Question 1) It says that when bob makes a transaction to alice, that transaction goes to bob's malicious node. then bob changes signature so that It still stays valid transaction. and After that, there's a chance that this transaction will take place quicker than the original transaction that some other nodes have in mempool. and BOb has a chance of getting double * amount that alice is intended to transfer. I'm curious what bob's malicious node change in a signature part that it still stays alice's signature and still valid? how is it possible?
QUestion 2) How does segwit work? I know scriptSig is deleted from transaction, but where is it saved?
QUestion 3) if it's saved in blockchain still, then how is it a less size and how can block have more transactions than now?
Question 4) They say signature part is saved as the merkle root hash. but how can a node check that specific signature is related to specific transaction?
THank you guys.I hope your explanation will make sense

Have you read BIP141 (segwit proposal) ? Most of your questions are answered there.

"and BOb has a chance of getting double * amount that alice is intended to transfer". Transaction malleability does not allow a user to receive double the coins. Whichever tx is confirmed in a block first would invalidate the other, it is not possible for both to confirm. Note that you will probably find stories of exchanges being defrauded by tx malleability. In those cases, the exchange built a system which checked tx ids to verify txs were sent. By malleating  the tx, an attacker could convince an exchange their withdrawal was not processed. This is simply an implementation issue.

Signatures are never deleted.

Question 1) It says that when bob makes a transaction to alice, that transaction goes to bob's malicious node. then bob changes signature so that It still stays valid transaction. and After that, there's a chance that this transaction will take place quicker than the original transaction that some other nodes have in mempool. and BOb has a chance of getting double * amount that alice is intended to transfer.

No, Bob will not get double. He will see two transactions that conflict with each other. No additional coins are created or spent. It is just annoying and wallets do not handle these conflicting transactions very well.

I'm curious what bob's malicious node change in a signature part that it still stays alice's signature and still valid? how is it possible?

The signature is malleable. An ECDSA signature is composed of two values, R and s. Due to how the signature verification algorithm works, it is possible to replace the s with it's negation (-s). -s is easily computable by a third party, so an attacker can compute -s, replace the s value with the inverse, and send the new transaction. Because the contents of the transaction are now different due to the replacement of s with -s, the transaction has a different id so is considered different. But it is still completely valid.

QUestion 2) How does segwit work? I know scriptSig is deleted from transaction, but where is it saved?

Segwit defines a new transaction format which is an extension of the original transaction format. In this format, a new field is added that is known as scriptWitness. The scriptWitness is where the signatures go. For nodes that do not have segwit, they only receive transactions in the old format. They won't see the scriptWitness.
The signatures are not deleted from the transaction. They are just moved elsewhere.

QUestion 3) if it's saved in blockchain still, then how is it a less size and how can block have more transactions than now?

Blocks are not actually physically smaller. The block size has increased without a hard fork.
What segwit also did was redefine the metric of block size from bytes to a new unit called weight. To calculate the weight of a block, you have to look at the transactions. Each byte of a transaction that is part of the original transaction format is counted as 4 weight units. Each byte that is part of the new segwit transaction format is 1 weight unit. The maximum number of weight units in a block is 4000000. The math works out such that an old node will not see a block with more than 1 MB of data (since they do not receive transaction in the new format).
So with this new definition of a weight unit, transactions without segwit have more weight units than transactions that use segwit. Thus transactions are "smaller" so more transactions can fit in a block.

Question 4) They say signature part is saved as the merkle root hash. but how can a node check that specific signature is related to specific transaction?

The signature is not saved in the merkle root hash. You cannot save any data in a hash. The signatures are committed to in the merkle root hash. What that means is that the data that went into the merkle root hash includes the signatures. This makes it so that the signatures cannot be once the transactions are in a block. The reason that this needs to be done is because the merkle root is only over the txids, which the scriptWitnesses are not part of (they are ignored in the txid calculation). So the full transaction hash (known as the wtxid) is used in a witness merkle root which is included in the coinbase transaction. This results in that hash being part of the coinbase transaction's txid which goes into the merkle root of the block.

Not s^(-1) but -s.

Oh, right. I don't know why I used s^-1. Fixed.


text:
How can someone get my private data (such as email, name, IP ...) from bitcoin transaction?
I am curious about privacy of bitcoin transactions. I heard that if you are good enough at hacking, you can get private data from bitcoin transaction, or associate someone to transaction. How is it possible? Is it possible to associate someone to transaction without IP (for example: I don't know IP, but know email or other private data), or is there some other ways to do so? Can someone explain this side of BTC transactions really well?

IP addresses are not private information. As for email and name no one can get that information based on the blockchain data alone unless you go out of your way to publicly associate your identity with a specific address. For example by mentioning your email, name and address together on some website. Another possibility is that you reveal your identity to some service like a bitcoin exchange or payment processor and then send or receive bitcoin using that service. That service will now have some idea of what addresses belong to you simply because you used their service. The world at large will not know though.
Note also that you have many addresses in your wallet not just one address. Ideally you use a different address each time you want to receive bitcoin. This is better from a privacy and security standpoint. It also makes it easy for you to track who sent you how much by giving each person a different address for every transaction.

I understand what you say, but if you use exchange, then creating many different addresses won't help at all. Now, if I use software wallet, then there's no way for someone to trace back to me unless they aren't trying to find out my ip.

So on exchange, whatever we do it will be traceable and they will know that I receive and send bitcoins. but IF I use software wallet, why do I need to have different addresses? I can have one and never reveal my address and email together :) Am I right?

@NikaKhurashvili if you use only one address then anyone can see how much money you've received and how much you've sent. It also becomes hard to keep track of who sent you how much if you give everyone the same address. Because of this software wallets are designed to hand out different addresses each time you request one to receive bitcoin. So it is best to take advantage of that. Don't fixate on addresses too much. They should be treated as disposable one-time use invoice IDs.

If I have one address and never reveal my email, even though anyone can see how much I received and spent, how do they find out who I am? THere's no way. :) how can I be wrong?

you try to insist... e.g. you use your address once to connect to an exchange. They know your details (KYC/AML, ...) Now you use the same address to order some books, and do some shopping. In all cases one can make the link between you and your identity. It is completly independent of your email address, if the book arrives at your home with a proper shipping address. However, if you use that address once to send some bitcoins to me, know one will (with highest probability) ever know, who is behind that address. Even I wouldn't know. Hence: use bitcoin addresses only once for highest privacy.

@pebwindkraft
Thank you once again. WHat I ask is let's say i don't use exchange service. I just have my own wallet( hardware maybe) and there's only one address and I use the same address to transfer and receive bitcoins. then if no one listens nodes (relay) how is anyone going to find out that I'm the one who does this transfer and receive?

"If noone listens nodes" - the catch22... Yes, you can define "your" conditions, and you will stay anonymous. Be assured, even when using TOR, there are governmental agencies trying to listen, even setting up "false" TOR systems as exit gates. The way it is done cannot be answered here, and extends scope. But you might want to look at this intro https://www.youtube.com/watch?v=HScK4pkDNds and do research on bitcointalk.org and google for something like "bitcoin de-anonymization" - tons of links :-)


text:
Transaction Malleability, if i want to change signature, what part should I change, so that it would remain valid?
I know what transaction malleability is, but I don't understand how someone can change my signature so that it would remain valid. For example, If I want to change signature what part should I change, can someone explain this to me? or is there some example of this, I tried to find it but failed.

A signature consists of two numbers r and s. You can change s with N - s (N is the elliptic curve order) and it would still be valid.
Sources of malleability are documented here https://github.com/bitcoin/bips/blob/master/bip-0062.mediawiki#motivation


text:
BCH - estimatefee return -1
When I call estimatefee 1 in testnet it returns: -1
According to docs:

If the node doesn’t have enough information to make an estimate, the
  value -1 will be returned

But on my bitcoin-cli getblockchaininfo, my verificationprogress is: 0.9999960537430175
What am I missing?

Downvoter why? I already said that I know the reason? Pathetic!

From the doc:

-1 is always returned for nblocks == 1 as it is impossible to calculate a fee that is high enough to get reliably included in the next block

https://bitcoincore.org/en/doc/0.16.0/rpc/util/estimatefee/

But my node is running quite long and my verificationprogress is: 0.9999960537430175

No, it means for "estimatefee N", N must be larger than one, or it'll return -1.

Of course I ran with N larger than one, but no matter what number I entered, I get the same returned result

Just get this error again after I restart my PC

Seem that after I restart my PC then things worked!

I just get this error again and restart my PC doesn't work!


text:
How to properly update a forked masternode coin
I have a BitcoinCore/Dash Fork I've gotten to run successfully.  I have it mining correctly in the Wallet, also have 1 Full node, and 2 master nodes setup.  All have been working perfectly fine, I ended up mining up past 1000 block.  The problem I am running into mentally is how do I properly update the core code and push out updates without disrupting the whole network?  How does the network know that my node I push code to, is the correct one it should be receiving updates from?
Also, is my first "full node" (which is just a node, not an actual masternode) ever goes down, does the network still continue forward?  When I bring my full node backonline with new updates does it just resync with the other nodes for the blockchain?
The reason why I ask this is because I just tried to do an update and I had taken down my 2 masternodes and my full node, plus my QT wallet, then when I went to update everything and get back online everything got stuck in a "out of sync" since 4 hours had past.

Not sure I understand the downvotes, this is a legitimate concern for any new blockchain developer that is just trying to understand how everything works


text:
How Do They Get BTC Wallet.dat With Balance?
Going through YouTube, I found some videos on Bitcoin  wallet.dat with balance.
Looking at these videos, you will notice that these balances found in these btc  wallet.dat are not on watch only address. The balances are in the main btc  address.
I have searched google on how these YouTubers got these btc  wallet.dat with balance but i found nothing. So i decided to post my question here.
I know bitcoin is unhackable for now.
Is this wallet.dat with balance some sort of scam or exploit?
How Do They Get BTC Wallet.dat With Balance?
Your answer will be highly appreciated
YOUTUBE VIDEOS LINK
Selling wallet.dat Bitcoin Core balance 340 btc. Sale or buy wallet.dat wallet-dat.net

It’s a scam, just ignore it

Is this wallet.dat with balance some sort of scam or exploit?

It looks like a scam.
There is never a good reason to buy a wallet.dat.

Looking at these videos, you will notice

I guess we will notice whatever the video creator tricks us into noticing. As I'm sure you know, making an app that looks like another app is trivial. As is editing video to make the unreal look real. A Bitcoin wallet that genuinely contains $100k now may contain $0 one microsecond later. Even a genuine photo of a leather wallet with genuine $100 banknotes sticking out of it is not proof that the wallet will still have those contents when a buyer receives it.

I am the one who made the video, and the video is a real wallet, but the password is lost forever, as everyone knows in Bitcoin core, passwords can be brute-force an unlimited number of times. The video is not fake, I can show any person any wallet in real time, as well as any evidence. The video contains the address of the site and you can see for yourself, there are also wallets on the site for free download with a balance, but with a forgotten password. the site also has empty wallets, these are wallets that were hacked and all bitcoins were withdrawn


text:
bitcoincore connect
I have a problem with bitcoin node is that when I want to get out of the full node bitcoin server.
I ran this method and it does not work
curl \
  --user myusername \
  --data-binary '{"jsonrpc":"1.0", "id":"curltest", "method":"getnewaddress", "params":[]]' \
  -H 'content-type : text / plain; ' \
  http://ip server for node:8332/

Answer edited to add:
Error message
curl: (7) Couldn't connect to server

Config file
erver=1
aemon=1
rpcallowip=ip exchange rpc
allowip=127.0.0.1
rpcport=8332
rpcuser=xxx
rpcpassword=xxxxxx
wallet=/home/user/.bitcoin/wallets/coininx/wallet/dat
walletdir=/home/user/.bitcoin/wallets

This question in my opinion is not clear, because your question show only the terminal command, you run the bitcoin node on your device? what is your bitcoind conf?

What do you mean by "it does not work" - were there some error messages - if so what exactly.

This is my config file for bitcoin
erver=1
aemon=1
rpcallowip=ip exchange
rpcallowip=127.0.0.1
rpcport=8332
rpcuser=xxx
rpcpassword=xxxxxx
wallet=/home/user/.bitcoin/wallets/coininx/wallet/dat
walletdir=/home/user/.bitcoin/wallets/

and error messages :
curl: (7) Couldn't connect to server

Is bitcoind running?

Does your config file really have erver not server and eamon not daemon?

The first sentence in this question is very confusing. Could you perhaps read that again and fix it?

If your bitcoin daemon isn't running because of a mistake in the configuration file then you won't be able to connect to that daemon.
If the daemon is started automatically, you should be able to check for error messages in the system log.
It should also be possible to start the daemon manually to see any error messages concerning the configuration file.


text:
Bitcoin Core v0.21 RPC credentials going bad
I have tried to upgrade to bitcoin core 0.21 but things are not going good. I need some help.
I'm using Debian Buster.
I was using bitcoin core 0.20.1 before.
The folder locations are as I have in my config file:
dbbatchsize=4294967000
dbcache=12288
par=1 -daemon
server=1
maxtxfee=0.00002000
mintxfee=0.00000002

\# Options only for mainnet
[main]
conf=/media/WdElements/blockchain-backup/bitcoin.conf
datadir=/media/WdElements/blockchain-backup
debug=net
debug=rpc
debuglogfile=/media/WdElements/blockchain-backup/debug.log
addresstype=bech32
changetype=bech32
txindex=1
listen=1

When I start bitcoin daemon I see the following output:
2021-01-24T15:24:36Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:24:36Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146
2021-01-24T15:24:41Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146
2021-01-24T15:24:41Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:24:45Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:24:45Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146
2021-01-24T15:24:49Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146
2021-01-24T15:24:49Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:24:53Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:24:53Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146
2021-01-24T15:24:58Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146
2021-01-24T15:24:58Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:25:02Z ThreadRPCServer incorrect password attempt from [::1]:34362
2021-01-24T15:25:02Z ThreadRPCServer incorrect password attempt from 127.0.0.1:36146

I already tried to generate my RPC credentials from ./share/rpcauth/ python plugin like this:
$ python3 rpcauth.py btc-user
String to be appended to bitcoin.conf:
rpcauth=btc-user:[REPLACEDHASH]
Your password:
[REPLACEDPSSWD]

and paste the first line into bitcoin.conf  like this:
dbbatchsize=4294967000
dbcache=12288
par=1 -daemon
server=1
rpcauth=btc-user:[REPLACEDHASH]
maxtxfee=0.00002000
mintxfee=0.00000002

\# Options only for mainnet
[main]
conf=/media/WdElements/blockchain-backup/bitcoin.conf
datadir=/media/WdElements/blockchain-backup
debug=net
debug=rpc
debuglogfile=/media/WdElements/blockchain-backup/debug.log
addresstype=bech32
changetype=bech32
txindex=1
listen=1

but I still get the same error messages when I start bitcoind as bitcoind:
2021-01-24T15:32:19Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:19Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690
2021-01-24T15:32:23Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690
2021-01-24T15:32:23Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:27Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:27Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690
2021-01-24T15:32:31Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:31Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690
2021-01-24T15:32:36Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690
2021-01-24T15:32:36Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:40Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:40Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690
2021-01-24T15:32:44Z ThreadRPCServer incorrect password attempt from [::1]:35906
2021-01-24T15:32:44Z ThreadRPCServer incorrect password attempt from 127.0.0.1:37690

Anyone can help me figuring out what might I be doing wrong?

By "crappy output" do you mean the group of  ThreadRPCServer incorrect password attempt messages?

@RedGrittyBrick Yes. I don't understand why it is outputting that error. I don't understand what coul possibly be wrong. I have a c-lightning node but it seems to be working just fine. I say this because I thought it could be trying to connect to bitcoin somehow using the RPC interface and it could not be authenticating correctly, but no, it seems to be working fine.

Seems similar to this unanswered question - not much help, I'm sorry.

Are you aware that the RPC cookie password will change every time bitcoind is started?

@Pseudonymous how come if I generated RPC credentials with a python plugin this last version of bitcoin core has and it tells to paste the generated credentials in bitcoin.conf?

Ok, I managed to find the culprit. It's actually an application I have running in the background that I simply completely forgot about it and it is trying to access to the RPC interface and as I have never paid too much attention to it, I think I never setup anything related to RPC in it. So, most probably that's the problem.
I used netstat -p -at and ps -ef to figure out what exactly was interacting with bitcoin core daemon.
Thanks every one. I think this one is solved.
Psy


text:
how can I insert an arbitrary sha256 hash into the blockchain?
If I want to prove that I wrote a particular document before a certain point in time, it would be sufficient to generate the sha256 hash of the document and somehow arrange for that hash to appear in the blockchain.
Is there an easy way to do that simply by sending a transaction and leaving it to the miners to arrange for it to get into the blockchain for me?
One way that occurs to me is that I can treat the hash as a private key (bitaddress.org will tell me the address and private key that corresponds to any given input), and send a Bitcoin to the corresponding address.  Then when I publish the document anyone can go through the same process and see the date of the transaction in the blockchain.
That seems a little convoluted.  Is there a simpler way?  Ideally free, not computationally intensive, and not requiring any special software to make the timestamp or to verify it.

possible duplicate of Is there a future-proof method of encoding messages in the blockchain?

You can encode any arbitrary data using the Bitcoin script's OP_PUSH and OP_DROP commands. For this, however, you would need some custom Bitcoin client, as the standard one does not allow you to send messages like this.
Alternatively, you could just use the hash as a part of the generation of a Bitcoin address and store it in the Block chain by destroying one satoshi on it.
There should be a topic covering encoding of any data into the Blockchain somewhere on this StackExchange, so you can also have a look at that.

Thanks.  Now that bitaddress.org has added a 'brain wallet' tab, I think it's easiest just to paste the document hash (or even the whole document if it's short enough) into the brain wallet tab, and deposit a coin to the resulting address.  Then if I need to prove that the document existed at that time I can point people at bitaddress.org to validate it.

While I understand the temptation to re-/abuse the blockchain for such things, why not use a service which is built on purpose for this? Have a look at guardtime.com, specifically http://www.guardtime.com/software/developer-tools/

Please check out this blockchain timestamping tool, it does exactly what you require for free (this blockchain has 0 fees for writing this data), and is technically better.

The link does not work.

There is no way to attach meta data to the block-chain without forming an alternate chain, which as ThePiachu pointed out requires a modified client. However, you could

Generate a wallet
Send 1 BTC to that wallet
Add both the public bitcoin wallet address and the block of your 1 BTC deposit
Use the private key of the Bitcoin wallet to sign the article contents

You can now prove to third parties you authored the document by sending 0.01 BTC to interested parties.

Completely misses the point.

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


text:
Order books, matching exact price or closest price?
After reading this How do buy and sell orders work?.
This says that closest price, so if someone is selling at 999, and someone offers a bid of 1000, that the 999 will get sold since its the two orders that match closest.
I trade on btce, my understanding was that orders have to match exactly in price. And I take it its considered a sell or buy depending on who goes first.

Orders do not have to match your exact price it depends on what is happening: if for example a buy order is placed by a buyer that is a higher price than your sell order, and the buy order is sufficiently large to be fulfilled by you sell order and any others below or above you - then all the orders get fulfilled, until the buyers buy order gets used up.
This is a particular strategy of BTC-e; other markets may operate differently.

I haven't really looked at BTCE, yet, but for example on Bitcoin.de also, orders and offers have to match exactly. However, Bitcoin.de is not a real exchange, but more of an auctioning platform/escrow service: Money flows directly through wire transfer from buyer to seller, bitcoins are held by the platform and released as soon as the money transfer was confirmed by the seller.
On Exchanges though, the platform holds both money deposits and bitcoin deposits of the users. The situation there is slightly different: Let me illustrate with a real-life example:
Okay, imagine you want to buy a beard trimmer, because your old one broke. Before you leave the house you decide that you can afford to pay up to 40 € for one. When you get to the electronics store you find the beard trimmer you want for 35 €.
I'll go out on a limb here, but I imagine that you would not go to other stores trying to find it for 40 € because you decided that you wanted to pay that at most.
On the other hand, let's say when you get to the store, the beard trimmer's price is 45 €. There is three options then: Either wait until the price drops to 40 €, look at other stores, or pay more.
Exchanges work the same way:
When your order is higher than the current lowest offer, lucky you, you saved money compared to what you were ready to pay. Yet, when your order is lower than the current lowest offer. You'll have to wait for it to be fulfilled or take your business somewhere else.

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


text:
Instantaneous exchange/conversion of bitcoin into cash
My question is : how can some exchanges instantaneously convert bitcoins into cash, in light of the fact that it takes 10 minutes to "validate" a bitcoin transaction?
A bitcoin transaction takes 10 minutes to "validate". Yet some exchanges like coinbase allow merchants to instantaneously convert bitcoin payments into cash. In Automatically cash out bitcoin with zero exchange rate risk it mentions that :

When you enable "instant exchanges", bitcoin you receive for merchant
orders will no longer be sent to your Coinbase wallet. Instead they
will be sent directly to Coinbase and exchanged, ensuring that you get
the the exact local currency price that you set in the merchant tools.

When a person buys a product, then even though the purchasers bitcoin is sent directly to Coinbase, will it not be the case that it takes 10 minutes to validate, since it is just another bitcoin transaction? If so then how do exchanges like Coinbase allow one to convert bitcoins to cash immediately?

Because the exchanges are in possession of confirmed bitcoins from the get go. Mtgox makes you wait about a full hour before you are accredited deposited bitcoins to get those 6 confirms. And to exchange it they just decrement the person's account's bitcoin balance and increment the fiat balance (according to whichever market order).
On coinbase they just decrement your account balance and send fiat to your bank account simultaneously.

So buyer buys TShirt from retailer. Coinbase convert retailer's bitcoins into cash and reduces retailer's bitcoins by corresponding amount, in addition to waiting for buyer's bitcoins to be verified before crediting retailer's account. But then what happens if buyer has double spent? Then we get instant conversion, but we don't have 100% safety.

It's not an instant conversion, coinbase converts when they feel it's safe from double spend or has allowable risk (they can afford to loose a few bitcoins each month).

oh tell me more about this mt gox exchange it sounds exciting!


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

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

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

This error can depend also from the library/method that you are using to talk with the RPC interface

Why do you wrap stuff on quotes needlessly?

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


text:
bitcoin's PoW, real time of creating one block
i learn that bitcoin is created every 10 minutes and if block is created faster than 10 minutes, Difficulty will increase.
and study deeper, mining process is finding nonce that start 0 to increase 1 until finding hash value same or small rather than  'Target'
now, 2019-02-14, Block #562968 's nonce is 3,534,700,356.
it mean according this answer, it calculate 3GHash to create new block.
according to newest Mining Hardware ASICs, it says ASIC miner is calculating 14~16 TH/s. that does not make sense. PoW hash value is calculated 0.001s with this ASIC.
what i missed?

Related Q: https://bitcoin.stackexchange.com/questions/7330/whats-the-process-of-creating-a-block-on-the-blockchain

https://bitcointalk.org/index.php?topic=9438.msg136344#msg136344 , same question and detail answer

It is likely that a given block template will not produce a valid block for any nonce value, and so if that happens the miner will adjust some other values in the block template (such as the extranonce, the timestamp, the transaction ordering, etc), and then run through the entire nonce range again, to see if their newly adjusted block template will produce a valid block.
So just looking at the nonce value for a particular block does not tell you how many hashes were performed, it only tells you which nonce produced a valid block for that particular template. Before mining that block, chances are the miner ran through the entire nonce range many, many times, but with slightly different block templates.


text:
how bitcoin reject invalid transaction? (with createrawtransaction)
i'm studying 'Mastering Bitcoin' and have a questions,
in this book, we can send coin to other wallet by createrawtransaction but there is no enough secure method.
we can find other's wallet addresses at https://www.blockchain.com. and unused coin value too.
for example - https://www.blockchain.com/en/btc/address/34bN2MQcqA4JpbEVRU9KBsvhXgSEHQrqBz

718ae88f0eb13d2f2d3bc74cbf18721a82739b80f1bfc0658ed699263fca76fd(Fee:
  0.00002057 BTC - 3.11 sat/WU - 8.33 sat/B - Size: 247 bytes) 2019-01-14 04:57:04 34bN2MQcqA4JpbEVRU9KBsvhXgSEHQrqBz (1.13215222 BTC
  - Output) 32T5urH6uN4jhKenhW4LWM66WouzSCERbA - (Spent) 0.03213165 BTC 3LnZGyRAeCA3LAMBU2RSQn6dAkHw8rWquw - (Unspent) 1.1 BTC

than we can make fake transaction such as

$bitcoin-cli createrawtransaction '[{"txid" :
  "718ae88f0eb13d2f2d3bc74cbf18721a82739b80f1bfc0658ed699263fca76fd","vout":0}]'
  ' {"MY WALLET ADDRESS": 1.0, "3LnZGyRAeCA3LAMBU2RSQn6dAkHw8rWquw":
  fee}'

in conclusion, it doesn't works but i want know why this code not working

in conclusion, it doesn't works but i want know why this code not working

This part {"MY WALLET ADDRESS": 1.0, "3LnZGyRAeCA3LAMBU2RSQn6dAkHw8rWquw": fee} will throw an error, but the more general answer about security is:
You can only generate a valid transaction if the wallet file you have open contains the private keys that can sign the transaction you've made. If you can't produce a valid signature, then it will not be a valid transaction, and the network will not relay or confirm it.

i think createrawtransaction working [{"txid ", "my wallet address", "another wallet address"}] so where is validation part on this command?

@user10865941: All other nodes validate the transaction - they check that you have provided proof that you posess the private key.

@user10865941 the output of createrawtransaction is an unsigned bitcoin transaction. Next you would need to call signrawtransaction to create a valid transaction, but your client will be unable to do so unless it has the relevant private keys. If you cannot produce a valid signature, then the network will not accept it as a valid transaction.

You cannot spend bitcoins of a given BTC address if you do not own the private key of such address. Only private keys allows you to sign and broadcast a valid spendable tx.
It's safe to specify also some peculiarity of creatrawtransaction RPC:
The createrawtransaction RPC command creates an unsigned transaction that will spend a previous output to a new output with a P2PKH or P2SH address.
The transaction is not stored in the wallet or transmitted to the network at this stage. It needs to be signed with a valid corresponding private key for the address we want to spend address from.
Given Parameter #1 (references to previous outputs) & Parameter #2 (P2PKH or P2SH addresses and amounts) we get a result in the forum of an unsigned raw transaction in hex.

i guess! rawtransaction needs signing. so without signrawtransaction, block will reject this transaction


text:
in transaction, what is 'hash' data?
i'm studying Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto
and this paper introduce a transaction model. (above picture)

but i don't understand what is 'Hash' means exactly
i think Hash is same  Bitcoin API JSON-RPC - signrawtransaction function
it means hash(txid + owner's public key)? then what method used hash function?
or  hash(result of signrawtransaction + RIPEMD160(sha256(pub k)) )? then what method used to hash?

The hash refers to the signature hash, to which all tx data except for the input script is committed to (unless you are signing with a sighash flag other than ALL).
The signature hash is what is signed with ECDSA to produce the signature.

This might help: https://teachbitcoin.io/presentations/transaction_build.html#/5

thanks. but i have one more question. in the picture of center(1 and 2's transaction), why Hash(Owner 2's pub K + signature hash) is Owner 1's Signature?       Assuming the signature of 1 is correct, why 1's Sign arrow not heads Hash, point out 1's Signature?

Thats because the transaction output is intended for owner 2. His pubkey is commited to the 2nd transaction. Specifically it is inthe output of tx2. He has the private key 2 that can spend it.

Its the original paper, but the illustration isn’t the most intuitive depiction.


text:
Bitcoin-qt -testnet 0.17.1 Send and Receive buttons do nothing
Fully synced on testnet blockchain after building Bitcoin with UI and wallet enabled on Ubuntu 18.10.
Pressing Send and Receive buttons results in no UI displayed.
Receiving addresses dialog doesn't have New button in this version so it can't be used.
Debug window getnewaddress worked, however, and I was able to receive some coins from coinfaucet.eu using that address.
After receiving coins Send button still doesn't result in any UI displayed.
Receiving addresses menu/resulting dialog now shows the address that coins were received at (the one obtained via getnewaddress).
I see the same behavior of buttons when synced on the main net but couldn't test sending or receiving the real Bitcoins.
What can I do to debug this issue without getting deep into the (quite unfamiliar at this point) source code? I compiled bitcoin with optimizations enabled.
Here is a link to the debug.log created in the following way: exited bitcoin-qt and renamed original log which was huge. Restarted bitcoin-qt with options -testnet -debug=1. Clicked on Send, Receive and Transactions buttons. Exited bitcoin-qt.

To get addresses, you need to go to the receive tab and click the Request Payment button. For the sending issue, can you show a screenshot/video of what you are doing?

@AndrewChow I don't see Request Payment button either. This is tabbed interface? I'll try to create animated GIF but it won't show you much beside that clicking on Send, Receive and Transaction buttons still shows the Overview page.Tabs in Debug window work, however. This may be Ubuntu 18.10 UI specific. I'll try link to data dir from older Ubuntu install to verify that.

Clicking Send, Receive, and Transactions should show different pages. Can you also post your debug.log file? Using a different datadir won't make a difference. Nothing stored in the datadir effects how the UI behaves.

@AndrewChow added link to debug.log at the bottom of the post. Regarding datadir  I meant running UI from older Ubuntu but pointing to datadir on USB SSD which has Ubuntu 18.10 and where I built bitcoin-qt, to avoid downloading the blockchain from scratch.

Is this self compiled or using the official release binary from bitcoincore.org? If self compiled, what version of Qt do you have installed? (you should be able to get this from Bitcoin Core by going to Help > About Qt.

This looks like a bug and I can't find an open issue about this. Can you open an issue here: https://github.com/bitcoin/bitcoin/issues?

@AndrewChow thanks for sticking through this 'ordeal' with me :) Qt version is 5.11.1  and I will open an issue.

@AndrewChow this is self-compiled (after apt-get update and upgrade of fresh Ubuntu 18.10 install) and I will first make clean and rebuild from scratch. Then, if problem persists, open an issue.

@AndrewChow full rebuild after make clean helped. I see Send, Receive and Transactions pages now. So, what did I do wrong? Upon the initial build I had build errors with Berkeley DB. Following that I built configuring with --disable-wallet. Later, I found out BDB build problem cause and fixed it via  link for BDB fix. Then I rebuilt configuring without --disable-wallet and running make again, without cleaning before that.
Without Berkeley DB build issue this would likely never happen. It may be deserving of documentation PR.

I believe I should answer this question for the people who may stumble here and would like to know right away what is this issue all about.
If you are building from source and configure your build like:
./configure --with-gui --disable-wallet --SOME-OTHER-OPTIONS
and then you decide you want the wallet and go back to configure and rebuild without --disable-wallet, that is:
./configure --with-gui --SOME-OTHER-OPTIONS
make sure you run make clean before rebuilding.


text:
How To Use BitPay
We have a online computer company written in PHP
www.cworld.com.au
A sister site we have uses Magento
How can we use BitPay to enable our site for BTC..Is there an API
Can we get paid for every tx etc ?
Will we have a mechant BTC address?
What are some of the reversal process's..will this be a seperate new transaction

For the time being I can tell you that you can hire me to help you with everything regarding setup and Bitcoin payments ;). Later when I have more time I will try to give you a proper answer.

I think you mean Magento - as far as I know there is no BitPay plugin for the Brotherhood of Evil Mutants or their leader ;)

BitPay I think needs a plug in for BOEM ...the BTC world certainly feels like it needs some super mutants fighting for the forces of good :D

BitPay provides a plugin for Magento, as well as a description on how to use their plugins (link requires login). One would need to setup a merchant account with the company, but it is easy and straightforward. One can specify a Bitcoin address to withdraw the money with (login as above), or possibly use standard bank transfer options.
When in doubt, you best consult someone directly about your setup. Bitcoin can be a tricky system where your money can evaporate quickly. I am available if you need some professional help.

"Where your money can evaporate quickly" we should put that on the promotional brochure...lol

Bitpay just released a new plugin for Magento which can be installed via Magento connect. The code and instructions for use are available on github.


text:
How to prevent nodes from creating only small blocks to earn fee?
I read What are the minimum sizes for transactions and blocks in Bitcoin? that there is no min limit - just a max limit of 128MB - for a block.
For example if a miner always takes a single transaction and creates a block from it, he probably will be faster as most other nodes and will gain most taxes or not?

I read on SO that there is no min limit - just a max limit of 128MB - for a block.

Bitcoin blocks have a max weight unit of 4MB, not 128 MB. Blocks that large (128MB) would lead to extreme network centralization due to a need for high-end hardware to run a validating node... but anyways.

For example if a miner always takes a single transaction and creates a block from it, he probably will be faster as most other nodes and will gain most taxes or not?

No, the number of transactions in a block has no bearing on how fast the block is mined. Putting more transactions in a block does mean that the merkle root computation will take a little bit longer, but this calculation is done in parallel by the miner's bitcoin node, not by the mining hardware itself. So a miner does not have any advantage/disadvantage in mining a large/small block.

I put the link in the question, is it wrong or do i not understand it correctly?

The question you linked is correct, but I don't see how it conflicts with what I wrote?

oh ok, then i probably have another problem. Thank you

There isn't a direct advantage in mining a larger block, but the miner will generally collect more fees if they include more transactions. So miners are generally incentivized to make larger blocks, rather than smaller.


text:
What is ccache? When should I use it when building and reviewing Bitcoin Core PRs?
What is ccache? Can you provide some guidance on when to use it for building Bitcoin Core PRs and how to use it?

The tool ccache helps store intermediate compilation results, so if you change branches often, and rebuild, it can significantly speed up doing so.
To use it, you install ccache for your platform. That's it. The Bitcoin Core configure script will detect its presence, and use it automatically.

ccache is a compiler cache.

It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.

Unlike dbcache the decision of how much ccache to allocate is not as critical. The Bitcoin Core productivity doc does recommend that you put something like this in ~/.ccache/ccache.conf:
max_size = 50.0G  # or whatever cache size you prefer; default is 5G; 0 means unlimited

base_dir = /home/yourname  # or wherever you keep your source files

Note: base_dir is required for ccache to share cached compiles of the
same file across different repositories / paths; it will only do this
for paths under base_dir. So this option is required for effective use
of ccache with git worktrees.
You must not set base_dir to "/", or anywhere that contains system
headers (according to the ccache docs).

There doesn't appear to be any obvious downsides to use ccache. But there are a couple of warnings on the ccache site.

Compilers are moving targets. Newer compiler versions may, and often
do, introduce features that ccache can't foresee.

and

The fastest mode (the "direct mode") has a corner case which can result in false positive cache hits.

Generally though it appears you can just install it (as Pieter says) and forget about it and this will save you time on compiling Bitcoin Core PRs.
For other information on speeding up C++ compilation see this excellent blog post from Martin Hořeňovský.


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

I think this is an interesting post, beyond just wumbo channels. Opening a larger value channel makes the security/reliability consideration more pertinent, but it is still a consideration in any case. Which is to say, I think editing the question to be generalized to all lightning channels might be worthwhile, but I'll leave that to OP's consideration.

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

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

This question was answered by Joost Jager on Twitter.


text:
When develop a mobile cryptocurrency wallet, is there any good practice to store private key?
As i know, some wallet like electrum store private keys in client filesystem with encrypted and other web wallet like ether metamask store it on browser storage. And in the mobile wallet, is there any good practice to store private key?


text:
Why is my phone app wallet showing true balance and my web wallet showing 0 balance
I downloaded my wallet app to my phone my online wallet shows 0 balance my phone app shows true balance why isnt my online wallet showing same balance as phone

Which wallet app are you using? It is hard to help without additional info.

My account Mgr setup the blockchain bit coin wallet online but only got me to download the blockchain app on my phone and never finished setting up the wallet online so app on my phone is showing a balance and the online wallet shows a zero balance, I can access the online wallet by entering my password and google authentication code and it takes me right through to the wallet ... I dont know how to fix this in order to move forward and get the coins out .... but first of all I need the both to be either synced or paired and I dont have the technical knowledge to get through this!

Are you talking about the blockchain.info wallet/app? Why are you unable to use the wallet app on your phone to transfer the coins? If the wallet contains funds, you should be able to spend them on the phone app, no need to log into the web-wallet. Who is your ‘account manager’, and why are they involved? Normally no such thing is needed.

I am a novice at all of this hence why I decided to go with a manager...however I have been left high and dry, your answer makes lots of sense. I have a buyer who is willing to buy the bitcoins for what I want, but thought I could only complete the transaction online..I have told the interested party what has happened...I guess what you have suggested is worth a try. So I would get an address off the buyer and send the bitcoins via their address I just dont know the steps to take Would you be able to assist in the steps to take.... .My Account Manager is James Patrick from kryptosmart247....

YES chytrik it is the blockchain app downloaded from the play store. What worries me is the online wallet is showing a zero balance he told me he would go in and put it right today....I had to send him a fee of 1300.00 in order for him to proceed...he hasnt been back in touch since...I am totally shattered as Im out of funds, and being ignorant just dont know what to do....

Unfortunately it sounds like you were scammed, there is no reason to send $1300 to an 'account manager' in normal circumstances. To send bitcoins: Get a bitcoin address from the buyer. Open your wallet app and go to the 'send' section. Paste the bitcoin address in the 'pay to' field, set fees according to the app's recommendation, and then send. Importantly: MAKE SURE you can trust the buyer will pay you! Bitcoin transactions cannot be reversed, it is advised trade using a reputable exchange, or someone you trust completely.

For general 'getting started' info for bitcoin, check out this Q: https://bitcoin.stackexchange.com/questions/22796/i-am-new-to-bitcoin-how-can-i-get-started.

Chytrik thanks for your help would like to add you on messenger if you agree You can find me on FB I will let you take the lead on this one ....FB name Flo Tupaea

I do not use messenger/facebook, beware anyone contacting you and claiming to be me outside of this website. If you'd like to contact me please do so through this website, happy to help :)

I had to send him a fee of 1300.00 in order for him to proceed...he hasnt been back in touch since.

You are the victim of a scam.

My account Mgr ... got me to download the blockchain app on my phone

I suspect he may have got you to import an address also.
Can you tell whether the app on your phone has a "watch-only" address? If so, your crooked "account manager" will probably tell you to pay him some large sum for a private-key. If so, this also is typical of a scam.

My Account Manager is James Patrick from kryptosmart247

The domain name kryptosmart247.com was only registered a month ago using NameCheap. Inc. Their webpage contains spelling mistakes like "Mointor Your Trade". Their website looks exactly like that of 24cryptostar.com. Same "Seth Trevor" etc photographs. I suspect one or both websites are just quickly set up copies of something generic.
In other words, to me this does not look trustworthy.

You can find me on FB I will let you take the lead on this one

Unfortunately, this is the kind of thinking that lost you your money. You don't need to trust random strangers who approach you on the Internet. I expect chytrik is a decent person but you just advertised to any crooks reading this that they can get money out of you by impersonating him.

I think you should report your kryptosmart247 experience to the police but should not expect to get any of your money back.

See

How can I safely store and trade Bitcoin and other crypto currencies?
I am new to Bitcoin, how can I get started?
Getting started with Bitcoin

"I expect chytrik is a decent person but you just advertised to any crooks reading this that they can get money out of you by impersonating him. " A very good point! Thanks for pointing this out.

Assuming your online wallet is working correctly, you need to make sure that both wallets display the same bitcoin address.
Many people get the concept of a crypto wallet wrong. Technically, you wallet does not "store" anything, it's not a container for your coins. You should think of it rather as a viewing tool which displays what the blockchain has recorded as "your" balance.

Block explorers are more akin to 'viewing tools'. Wallets are perhaps most analogous to keychain apps, as the store the keys which allow you to spend your coins.

Yes, kind of both, actually. I was trying to get the point across, that the wallet does not actually contain your coins, but you're right, the keychain function is possibly the more important one.


text:
Cant start bitcoind - "Block files have previously been pruned"
I installed bitcoin, following this instructions.
I mostly used it with bitcoin-qt -testnet options, even made a few transactions in testnet. I am using the pruned mode.
Now I want to run the bitcoind and then connect bitcoin-cli to it.
But when I run the following command: bitcoind -testnet, I get the following output:
punnysher@punnysher ~ $ bitcoind -testnet

2018-11-16T09:16:40Z Bitcoin Core version v0.17.0.1 (release build)

2018-11-16T09:16:40Z InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1

2018-11-16T09:16:40Z Assuming ancestors of block 0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75 have valid signatures.

2018-11-16T09:16:40Z Setting nMinimumChainWork=00000000000000000000000000000000000000000000007dbe94253893cbd463

2018-11-16T09:16:40Z Using the 'sse4(1way),sse41(4way),avx2(8way)' SHA256 implementation

2018-11-16T09:16:40Z Using RdRand as an additional entropy source

2018-11-16T09:16:40Z Default data directory /home/punnysher/.bitcoin

2018-11-16T09:16:40Z Using data directory /home/punnysher/.bitcoin/testnet3

2018-11-16T09:16:40Z Using config file /home/punnysher/.bitcoin/bitcoin.conf

2018-11-16T09:16:40Z Using at most 125 automatic connections (1024 file descriptors available)

2018-11-16T09:16:40Z Using 16 MiB out of 32/2 requested for signature cache, able to store 524288 elements

2018-11-16T09:16:40Z Using 16 MiB out of 32/2 requested for script execution cache, able to store 524288 elements

2018-11-16T09:16:40Z Using 4 threads for script verification

2018-11-16T09:16:40Z scheduler thread start

2018-11-16T09:16:40Z HTTP: creating work queue of depth 16

2018-11-16T09:16:40Z No rpcpassword set - using random cookie authentication.

2018-11-16T09:16:40Z Generated RPC authentication cookie /home/punnysher/.bitcoin/testnet3/.cookie

2018-11-16T09:16:40Z HTTP: starting 4 worker threads

2018-11-16T09:16:40Z Using wallet directory /home/punnysher/.bitcoin/testnet3/wallets

2018-11-16T09:16:40Z init message: Verifying wallet(s)...

2018-11-16T09:16:40Z Using BerkeleyDB version Berkeley DB 4.8.30: (April  9, 2010)

2018-11-16T09:16:40Z Using wallet wallet.dat

2018-11-16T09:16:40Z BerkeleyEnvironment::Open: LogDir=/home/punnysher/.bitcoin/testnet3/wallets/database ErrorFile=/home/punnysher/.bitcoin/testnet3/wallets/db.log

2018-11-16T09:16:40Z Cache configuration:

2018-11-16T09:16:40Z * Using 2.0MiB for block index database

2018-11-16T09:16:40Z * Using 8.0MiB for chain state database

2018-11-16T09:16:40Z * Using 440.0MiB for in-memory UTXO set (plus up to 286.1MiB of unused mempool space)

2018-11-16T09:16:40Z init message: Loading block index...

2018-11-16T09:16:40Z Opening LevelDB in /home/punnysher/.bitcoin/testnet3/blocks/index

2018-11-16T09:16:40Z Opened LevelDB successfully

2018-11-16T09:16:40Z Using obfuscation key for /home/punnysher/.bitcoin/testnet3/blocks/index: 0000000000000000

2018-11-16T09:16:48Z LoadBlockIndexDB: last block file = 154

2018-11-16T09:16:48Z LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=2233, size=44632870, heights=1441380...1443684, time=2018-10-31...2018-11-16)

2018-11-16T09:16:48Z Checking all blk files are present...

2018-11-16T09:16:48Z LoadBlockIndexDB(): Block files have previously been pruned

2018-11-16T09:16:48Z : You need to rebuild the database using -reindex to go back to unpruned mode.  This will redownload the entire blockchain.

Please restart with -reindex or -reindex-chainstate to recover.

: You need to rebuild the database using -reindex to go back to unpruned mode.  This will redownload the entire blockchain.

Please restart with -reindex or -reindex-chainstate to recover.

2018-11-16T09:16:48Z Aborted block database rebuild. Exiting.

2018-11-16T09:16:48Z Shutdown: In progress...

2018-11-16T09:16:48Z scheduler thread interrupt

2018-11-16T09:16:48Z Shutdown: done

punnysher@punnysher ~ $

What happened when you used the command suggested in line 37 of the error message?

It downloads the entire blockchain again, which I really wanted to avoid hence I asked this question.

The message says

2018-11-16T09:16:48Z LoadBlockIndexDB(): Block files have previously been pruned
2018-11-16T09:16:48Z : You need to rebuild the database using -reindex to go back to unpruned mode.  This will redownload the entire blockchain.
Please restart with -reindex or -reindex-chainstate to recover.

If you have been running in pruned mode, bitcoind has been pruning the blockchain. This means it has discarded data to save disk space.
To run in non-pruned mode you must recover the missing data. The method provided is to download the entire blockchain again.
The only obvious alternative is, presumably, to run in pruned mode.

Related questions:

How can I run bitcoind in pruning mode?

Related links:

https://bitcointalk.org/index.php?topic=1599458.0 (August 2016)

OK, I have a question. Say: I enabled prune mode and Bitcoin Core effectively started working in this mode. But it is one way ticket if I ever want to go back to 'full' mode I need to download and verify whole blockchain once again there is no shortcuts?

Yes, you will have to redownload the entire blockchain, there are no shortcuts


text:
What should I fix / look for if my mining rig say Accepted 0 of 0?

I have been mining using this software for over an hour now, and I would expect to see returns.

Thanks for the reply. Looks like my question was closed. Was mining ETH, and getting a value in the MHs, so therefor I expected to see an accumulation over time.

For questions about Ethereum, I would suggest that you try ethereum.stackexchange.com.


text:
Bitcoin mining reward in 2009
can someone confirm if this is true or false.  When a miner started to mine in 2009, they were automatically given five bitcoins?  That is 5 BitCoins automatically appeared in their wallet almost like a signing-on bonus.  Not much of a bonus since the value was less than a cent but you know what I mean.
Thank you

I believe all the following has applied since the beginning and is still what happens.
The mining reward is not given when starting to mine but is allocated when each block has been successfully mined.
The miner chooses what happens to the mining reward. They include as the first transaction in a block a special "coinbase" transaction that has no inputs and at least one output. The sum of the outputs cannot exceed the sum of the currect mining reward plus the total of transaction fees offerred by each transaction they include in that block.
The mining reward cannot be spent until 100 further blocks have been mined (by any miner) in a chain including the mined block.
The mining reward halves every four years roughly.

Related

What is the block maturation time?
What exactly is Mining?

Thank you.  I can recall downloading BitCoin in 2009 and mining.  Frankly, I cannot remember a great deal other than stopping after a few days (maybe a week) because the coins were worth less than cents and I could not see how I would cover the electrical cost.  What I remember though is I started off with some BitCoin before I mined, maybe I am wrong about this.

I think the asker may have mixed up the story of Gavin Andresen giving away 5 BTC a pop from his faucet with mining.

No, I am being serious so no mixup.  Remember, this was before all the buzz and hype.  I merely stumbled on BitCoin when conducting research in other areas back in 2009.  Being an Economics grad' I like the idea and thought it had potential but after mining for a short time, I thought the cost of electricity would make it a bad bet.  I am in the process of trying to recover the wallet.dat from multiple HDDs.  It is a long shot but worth a try; there was certainly BitCoin in the Wallet but I have no idea how many; why would I pay much attention to it back then?

In 2009 there were no mining pools.The first mining pool ever was Slush pool and it was started in 2010. All bitcoins were generated from block rewards. So, you might have mined a block in 2009 easily and that would be 50 BTC. Or you might have created a wallet on Coinbase or Blockchain.com, I think the former might have given $10 on sign-up for a while. But all these things were started later, there would have been no way to "sign-up" in 2009, and a  block reward would have been 50 not 5 BTC.

Since you're talking about a wallet.dat, I think you may have been running the Bitcoin client, though.

It wasn't so much signing up but downloading mining software from the internet.  When installed it took an age for it to collaborate before it could start the mining process.  I did not sign up to Coinbase and the like if they existed at the time.  This was in 2009.  I am certainly no Crypto-head, I was more of an academic Economic enthusiast with intermediate IT skills.  I was certainly mining in 2009, I still have the HDDs from that time but some have been overwritten so I am using software to see if it is possible to recover data.  I don't know which HDD was in the mining computer.

"Since you're talking about a wallet.dat, I think you may have been running the Bitcoin client, though. –"
Excuse me, I have been researching online about what I should be searching for.  Wallet.dat came up, in truth, I have no idea what I should be searching for other than the mining software which could be the BitCoin client.

Anyway, thank you all.  I will continue with the HDD file recovery work.

The mining reward used to be 50 btc in 2009, for a successfully mined block.
So not really at all like a "signup bonus", you actually had to do the work (and be the fastest to get the correct hash!) to get it.

Thank you.  I am just trying to recall all the details.  There is no point typing successfully in bold; I refer to 2009 when btc was worthless and successful mining was a trivial task.


text:
Wallet's dollar value of transaction is WILDLY off my actual dollar payment
I was using Safepal Wallet and moved my funds to Trust Wallet.
I am currently tracking those original transactions for tax purposes next year.
I was simply using hash/txid provided in the transaction overview, but have an odd problem. The amount that shows up on my wallet is correct, but when I click to see the details, the hash/tax id links to a transaction where I received 5 BTC for around $250,000, but the original and true amount was around $30.
I have no idea what to do. I have checked on different searches and this is the same information. How on earth? Will this somehow screw me for taxes--be reported?
I have the correct number reflected on my wallet balance, but the "details" of this transaction are blatantly wrong. I have other coins and transactions with similar issues and some that are exactly correct. PLEASE HELP.

tax id, or txid?

TxID....another note, all of my SEND transaction amounts are correct. ALL of my RECEIVE transaction amounts are so off it is laughable.

txids have nothing to do with taxes, it seems more likely you're looking for the wrong thing or misinterpreting how transactions work. For tax advice you're better off contacting an accountant or tax advisor, but generally I believe that you just report how much money you actually had.

I am correctly interpreting all of my other transactions. For some reason, only in one BTC coin history, the amounts are way off. I have my own records, so I'm not too worried about this (only a hassle of explaining it to IRS).

I was using Safepal Wallet and moved my funds to Trust Wallet

The outcome might be affected by the method you used to move the funds. Generally there are three methods for non-custodial wallets - using a recovery phrase, importing keys and sweeping.
I can imagine that sweeping funds might mean that the wallet records the sweep transaction as the transaction in which you acquired those funds. Any dollar value  might refer to an exchange rate at date of sweeping rather than at the date the previous wallet received the funds. This is speculation though.
It is also possible that the wallet uses todays exchange rate to show you the dollar value of the amount of Bitcoin in any transaction regardless of transaction date. This would be a problem created by the wallet's developers (and target audience) treating Bitcoin as a dollar payment system rather than a separate currency. In other words, selecting USD instead of BTC as the display units might be intended to give you an easily understood idea of current purchasing power, not of exact amounts of dollars exchanged (the dollar payment would be external to the Bitcoin network itself and not part of the Bitcoin transaction - which is only ever half of the real-world transaction)

the hash/[txid] links to a transaction where I received 5 BTC for around $250,000, but the original and true amount was around $30.

The Bitcoin blockchain and Bitcoin network carries no information about dollar exchange rates or about any other currency, goods or services being exchanged, purchased or sold in any transaction. You can't use blockchain records as receipts and not as tax-receipts. You probably shouldn't rely on your Bitcoin wallet to tell you anything about dollar values for IRS tax purposes unless the wallet was explicitly designed for that purpose and its developers warrants fitness for that specific purpose.


text:
What’s the difference between a Bitpay wallet and a regular bitcoin
Just need to know the difference between the two and what’s the difference between the BitPay wallet and regular bitcoin

This is very hard to answer without knowing what you see. 1 BTC = 1 BTC, and its current price is indeed around 33000 USD per BTC. Possibly the site is showing mBTC (millibitcoin; 1 BTC = 1000 mBTC), or you're talking about one of the scammy bitcoin clones (which typically will have different symbols than BTC).

Does this answer your question? What kinds of wallets are there? "Regular bitcoin" is "stored in" a regular wallet (non-custodial AKA self-custodial)

Bitpay is likely holding this bitcoin for you, so you legally own it, but it Is controlled by a custodian. The price of Bitcoin is simply the price you can currently sell that bitcoin for on the market.
If you want to fully own and custody your bitcoin, as you should once you're ready, you should withdraw the bitcoin to a personal wallet like Wasabi or Electrum, so that you no longer have to trust BitPay.

This is all true, but I don't think this answers the question.

honestly, the question makes no sense to me. I think they were confused after hearing "not your keys, not your coins" or something like that.


text:
I can't remember one of the words in my 24-word mnemonic phrase
I wanted to import my mnemonic phrase to my new phone but I can't remember one of the words being asked that I wrote down. Is there any way to get that one? I remember all the other words.

https://github.com/ZenGo-X/mnemonic-recovery Scroll down for instructions

Can you answer the question @MCCCS rather than answer in the comments? Or alternatively if the question is a duplicate, mark it as a duplicate. I don't think there is obvious duplicate from a brief search.

Maybe this https://bitcoin.stackexchange.com/questions/93697/have-10-of-12-of-my-mnemonic-along-with-the-btc-address-how-can-i-automate-reco


text:
Bitcoin recovery possible from some kind of private key?
back in 2012 I've acquired a small amount of bitcoins, which as far as I remember I saved in a wallet on instantwallet. I wasn't following what was happening with the bitcoin until I listened lately about its value. I also found out that instawallet does not exist anymore since it was hacked in 2014.
Apart from a URL on instawallet, I have a Bitcoin address and some kind of a private key. Could somenone please tell me for sure if there is any chance to recover my bitcoins or should I just forget it?

Recovery using a private key
If your private key looks like a proper Bitcoin private key, you can recover control over your money.
A private key is just a large number. There are several different ways of representing that number.

Representation
Example

Hexadecimal
E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262

Base58 WIF
5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF

Mini private key
SzavMBLoXU6kDrqtUVmffv

(Don't use these values they are just examples)
Note the specific lengths and the specific mixtures of characters. I think WIF normally starts with a "5". Your private key needs to match these characteristics.
Wallet Import Format (WIF) is probably the most useful.
You should be able to choose a wallet and "import" or "sweep" your private key.  Sweeping is considered safer because it works better with normal backups and recovery-phrases of the new wallet.

Instawallet
If you used Instawallet, it seems unlikely that you have a true private key.
See https://en.bitcoin.it/wiki/Instawallet

Instawallet's service learned that its security was compromised and on April 3rd, 2013 closed the service. Those with funds in their Instawallet can file a claim form to get their funds.

This sort of issue is why custodial wallets are inadvisable for long term storage.


text:
strange weird address in transaction after send bitcoin bitcoin-qt
as an example, I have the wallet with address-A (with 10 BTC)
If I send 1 BTC to someone (address-B) then in transaction I see

address-A > 1 BTC > address-B
address-A > 1 BTC > address-C

after, on address-A I have 8 BTC, but my bitcoin-qt show me 9 BTC (as it must be)
why it makes sends to strange address-C ?
=================
Found an answer here https://en.bitcoin.it/wiki/Change

When you send money to another address, the client selects one or more unspent outputs to get a sufficient amount to cover the amount you are sending.  Any excess is returned to your wallet using a change address.
In your case, it looks like you had an unspent output of 2 BTC.  Since a transaction completely consumes its inputs,  the transaction needs to send 1 BTC to your specified address and 1 BTC back to your wallet to account for the 2 BTC that were consumed.
Changes addresses are typically not displayed by the client.  If you are running Bitcoin-Qt, you can check all of the addresses in your wallet by entering the command

listaddressgroupings

in the debug console.


text:
Do checkpoints in the block chain help to avoid a 51% attack that rewrites the entire blockchain?
I have read sometimes in the web, that in the blockchain are checkpoints, so that an 51% could not the blockchain before that checkpoint even with over 51%. Is this true?
In this answer this is missing completely:
Can an attacker with 51% of hash power change old blocks?
For this question i would assume that the 51% attacker would change the client he uses any way that would help to do this attack
Cheers!

Which question do you mean by 'this question'? If you would like to suggest an edit on the other answer, you may do so.

Is it really that hard to spot? There is only one question in the post besides the hyperlink...

user54512, I just wasn't sure if you were trying to add context for what you are looking for in the answer to 'this' question (i.e. 'Do checkpoints in the block chain...'). So, by 'this' I wasn't sure if you meant the question right here, or the question you gave a link to. Sounds like the latter.

Checkpoints are features of certain clients, not inherent to the blockchain itself. So, if an attacker did re-write the chain all the way back to a popular checkpoint, he could maybe get the network to disagree. Some would go with the 'chain with most work wins' approach, and some would go with the 'chain that meets my checkpoints with the most work' rule.
Checkpoints do not inherently help prevent a 51% attack though. In fact, their usefulness is predicated on the assumption that a 51% attack all the way back to a checkpoint will never happen. For example, some clients skip ECDSA verification for anything older than a certain checkpoint, so it's useful to have these checkpoints because initial-block-download syncing will be faster.

Sorry! for beeing a bit harsh in my comment - thank you for that good answer!


text:
Has a hard fork ever occurred?
BIP 50 describes the 2013 event in which a block chain fork persisted for several hours. Its first paragraph reads:

A block that had a larger number of total transaction inputs than previously seen was mined and broadcast.  Bitcoin 0.8 nodes were able to handle this, but some pre-0.8 Bitcoin nodes rejected it, causing an unexpected hard fork of the chain [my emphasis].  The pre-0.8 incompatible chain at that point had around 60% of the hash power, ensuring that the split did not automatically resolve.

I interpret this to mean that the term "hard fork" describes a state of the network.  Some nodes have accepted a block, but others have rejected it.  The nodes accepting the questionable block keep and extend it.  The nodes rejecting the block neither keep nor extend it, but rather build their own branch.  The resulting "fork" is only visible to nodes which have accepted the questionable block.
However, the Wiki has this to say about a hard fork:

A hardfork is a change to the bitcoin protocol that makes previously invalid blocks/transactions valid, and therefore requires all users to upgrade.

In other words, a hard fork is a kind of update to Bitcoin Core (given that Bitcoin Core is the protocol).  The idea was repeated in the top answer to this SE question.
The difference is subtle, but important.  For example, consider the question: has a hard fork ever occurred?
At least one Core developer says that Bitcoin has never experienced a hard fork, apparently using the Wiki definition.  The 2013 fork was not caused by a software update (according to some new, but undocumented information), but rather was (caused by?) nondeterministic behavior that would have happened even without the update.
The answer seems to depend on how you define a hard fork. If a hard fork is a condition of the network, the answer seems to be "yes".  But if a hard fork is a kind of software update, the answer seems to be "no".
It's not hard to see how a software update could lead to a persistent block chain fork as seen by some nodes.  So clearly the two ideas are connected.  But imprecise language around hard forks can lead to confusion, and, more importantly, to incorrect conclusions.
So which is it?  Does "hard fork" describe a condition of the network, or a software update?

BIP50 since got updated to remove the term "hard fork".  Since your only source for the "network state" interpretation seems to be that text, maybe that settles it for you?

So which is it? Does "hard fork" describe a condition of the network, or a software update?

Either is acceptable. You can say that version so-and-so causes a fork, and you can say that the network is currently forked.

Was the March 2013 fork a hardfork?

It depends on your definition. The March 2013 incident initially appeared to be a hard-fork, but a later investigation showed that it was possible to trigger the issue even when all nodes were running the same version.
Quoting from BIP50:

This would be an issue even if the entire network was running version 0.7.2. It is theoretically possible for one 0.7.2 node to create a block that others are unable to validate, or for 0.7.2 nodes to create block re-orgs that peers cannot validate, because the contents of each node's blkindex.dat database is not identical, and the number of locks required depends on the exact arrangement of the blkindex.dat on disk (locks are acquired per-page).

However, it was a hardfork in the sense that newer clients would create and validate blocks that an older client would not see as valid.

A little elaboration on how context-sensitive this bug was in practice, from Greg Maxwell: "... not only did only some [0.7.2 nodes] reject [the problem blocks] but they only rejected that particular one when they saw it as part of a reorg."

In addition to the March 2013 bug, the bug introducing CVE-2018-17144 was also a hard fork, even if there was no chain split.
The fix was a soft fork, since it restored the old consensus rules.

2013 Post-mortem was an undoubtedly intentional hard fork.

Resolution
On 16 August, 2013 block 252,451 (0x0000000000000024b58eeb1134432f00497a6a860412996e7a260f47126eed07) was accepted by the main network, forking unpatched nodes off the network.

Source: Luke Dashjr

@Rich Apodaca, i believe that you may have answered your question somehow, as you pointed out that it was mostly a minor incompatibility of installed versions of bitcoind.
Maybe you will agree with me that hardfork would have to be an incompatibility of design between two versions of the same protocol. Take for instance one altcoin, like FeatherCoin, that abandoned their previous algorithm for Proof of Work to adopt another one, ASIC-resistant, and incompatible with the past one.

To directly answer your question, "Has a hard fork ever occurred?", No.
The 2013 event that you reference was a temporary fork or chain split.
A hard fork would be both the result of deliberate action (as you have quoted) and persistent. If there is no consensus at the point of a hard fork, two distinct forward chains emerge. You may appreciate more information on forks in this response: link

A hard fork doesn't need to be deliberate, why do you think that? It is a technical term. CVE-2018-17144 was a hard fork, but it wasn't deliberate.

@JanusTroelsen A change in the software is not a hard fork. A hard fork is a condition of the blockchain. As it is, unpatched nodes could accept a block outside of what consensus allows but since already it is estimated more than 50% of the Bitcoin hashrate is upgraded there is no realistic probability of a chain split. If anything the situation is more similar to a soft fork and in any case, there is no change to the consensus.

As you can see in the question formulation, there are at least two definitions of hard fork.


text:
What protection does Bitcoin have against Denial of Service (DoS) attacks?
What protection does Bitcoin have against DoS attacks? Could you bring down a node by flooding it with data?
What happens if someone starts flooding the network with legitimate, yet nonsense, transactions? For example, sending bitcoins from A -> B -> C -> A -> B -> C -> A and so on in a rapid pace.

Well, technically, transaction fee is just a hurtle rather than a road blocker. If there are enough incentives for the attacker to sink the whole bitcoin network, he/she could invest enough cash in this. Consider one day, bitcoin currency plays a significant role of one country economy. Won't the opposite country invest a small amount (even millions, which is still a small portion comparing to the whole economy) to block all the trades based on bitcoin?

That's like trying to put Burger King out of business by sending so many people to their restaurants that the lines get too long.

@davidSchwartz: not really. Bitcoin does not win anything, if the are billions of extra transactions

@ DavidSchwartz: Great anology ... but bear in mind, that each of those customers that you flood Burger King with, only wants to buy a single chip. ... not that is where it becomes a problem isn't it?

The network has a moderate amount of protection against DoS attacks. If you flooded a single node with data from a single source, it would just drop you. You could reconnect, of course. You would need a lot of resources and effort to knock out a node, but it's possible to knock out a single node by overloading it.
The owner of an attacked node could simply stop accepting incoming connections and he could still operate. He still might, by sheer bad luck, make some outgoing connections to malicious nodes. But he'd quickly close all such connections and be left only with connections to non-malicious nodes.
Transaction flooding is perhaps the DoS attack for which the network is currently best defended. Trying to flood the network with legitimate, but nonsense transactions won't work very well. To form such a transaction, you have to claim some coins. The network will only maintain one transaction that claims a given output. And to claim newer output generally requires a transaction fee.
It's hard to imagine any scenario in which an attacker could maintain a significant number of concurrently valid transactions without paying large transaction fees. And even if he could, as soon as those were accepted, he'd need to be able to claim additional transaction outputs to keep up the flood. The outputs of the transaction from earlier in the flood would be too new to spend without fees.
In any event, the harm would be minimal. If this were working to cause harm, that would mean legitimate transactions wouldn't be going through. This means their coins would be getting older and older while the attack had to consist of newer and newer transaction outputs. Soon, the legitimate transactions would win.

I would like to add that the vulnerable part of bitcoin isn't the nodes but the pools. They are fairly easily attacked, and are regularly, but it seems they are working at hardening themselves well.

Is this still a valid answer? Our did the problem change by now?

It's still correct in the basics. The fees have just risen, making such an attack even harder and more expensive.

So if you were a whale, could you perhaps expend maybe $10,000 in fees to cause an enormous DoS which will reach social media, resulting in a tiny market drop of BTC as an asset, which allows you to buy 100BTC again at far more than $1000 less, which still results in a surplus of $90,000?


text:
Bitcoin block headers download
i need all block headers hash (about 500k records), i tried to get from electrum wallet files, but when i convert the file to Ascii, it doesn't have full list. please help.

What do you mean by "convert the file to ascii"? Do you just displaying its contents as text? If so, that won't work because block headers are ascii text, they are blobs of binary data.

i took the file "blockchain_headers" from electrum wallet and converted to ASCII format and opened in text editer in windows i see the latest block hashes but initial blocks data showing as 0's.

I don't know how to resolve your problem with the  wallet files, but if you have a full node, you can get all hash block with the rpc framework

It seems that since v3.1.0, Electrum does not download any more the complete blockchain_headers, but only the pieces it needs to track transactions. And installing a previous version doesn't seem to work either.
So the more direct approach is probably to download the hashes from a web like https://blockchair.com/bitcoin/blocks.
It is limited to 1 million cells for free, but as you only need "Hash" column, just:

deselect all checkboxes but "Hash", and click on "Export" selecting then "csv". Open this file with your spreadsheet app.
If you need another column, repeat the step but just with it, and Export again to a (2) file.
Open the file from (2), copy the column, and paste it next to the first column in file from (1).
as the results are both ordered by time, rows coincide and you already have the desired data!

PS: As for Electrum, it is need to install a previous version below v3. With a version 2.6.4 it seems to work and produce a complete blockchain_headers file. There's a Python script to convert it to a .csv file.

thanks ,the code works. In the output i see only 0's till 500k lines. looks like the electrum file doesn't contain the whole list

You're rigth: It seems that since v3.1.0, Electrum does not download any more the complete blockchain_headers. I've modified the answer: you may use a previous version that downloads the complete blockchain. You need the last data? Because probably I have some from a year ago or so...

Electrum blockchain_headers file is not usable any more: I've changed the answer with another approach that fits your needs.

Thank you so much for helping me out . It was helpful. I have one more question - i have installed bitcoind and its downloading blocks. could you please tell me how to retrieve the balance, has,tx...etc ?

Sorry, I do not know bitcoind: but you can post a new question and someone else will help you! :-)

I don't see an "export" option on blockchair any more. Is someone else offering that sort of service (downloading a small subset of the fields?)

You can use later versions of Electrum, You'll need to clear the checkpoints.json file though.


text:
Is there any full node supporting multiple crypto currencies like BTC, BCH, Litecoin?
I want to use JSON-RPC protocol in my application such that it should support multiple crypto currencies.Is there any single full node supporting multiple cryptocurrencies.

Different networks are completely independent, and while it is technically possible to put together a single node software that is able to connect and process all of them, it makes little sense for someone to invest that amount of time and money in it when you can simply run each network independently (even on the same machine).