text:
Unable to send raw transaction: mandatory-script-verify-flag-failed
When I send a raw transaction I get an error:
16: mandatory-script-verify-flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation)

Raw transaction that I send:
0200000001d18e181dc31f713573785c4434b70c415b407e200959f10d24a5eee72a4bae3401000000da00473044022038b7aaf811db578a0b62b1ff69f7b2a6054cd9b770275b292ff63bb6b6faa96902202ffa91a950c8976722284a0bcd3ad9c54e11e441f9f632c3dd76f9174f1d0c0a01483045022100a3c48312f94652269b6e23b3e48ead21b788a2d162205d9ba4c01c9cddfc9ea70220772828f03307eaf90cc17f12f2f97e8424ff5f5311839b4095f775813cb2dada014752210283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e2103e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a945552aeffffffff01962af4050000000017a9146fb7855fc9f0fcad63dacb27103f3ee6089b65408700000000

This raw transaction decoded:
{
  "txid": "e63230d2b56bec46ab1273f0962f0fce43248fb1acbd7214be5a319b53fc170e",
  "hash": "e63230d2b56bec46ab1273f0962f0fce43248fb1acbd7214be5a319b53fc170e",
  "version": 2,
  "size": 301,
  "vsize": 301,
  "locktime": 0,
  "vin": [
    {
      "txid": "34ae4b2ae7eea5240df15909207e405b410cb734445c787335711fc31d188ed1",
      "vout": 1,
      "scriptSig": {
        "asm": "0 3044022038b7aaf811db578a0b62b1ff69f7b2a6054cd9b770275b292ff63bb6b6faa96902202ffa91a950c8976722284a0bcd3ad9c54e11e441f9f632c3dd76f9174f1d0c0a[ALL] 3045022100a3c48312f94652269b6e23b3e48ead21b788a2d162205d9ba4c01c9cddfc9ea70220772828f03307eaf90cc17f12f2f97e8424ff5f5311839b4095f775813cb2dada[ALL] 52210283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e2103e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a945552ae",
        "hex": "00473044022038b7aaf811db578a0b62b1ff69f7b2a6054cd9b770275b292ff63bb6b6faa96902202ffa91a950c8976722284a0bcd3ad9c54e11e441f9f632c3dd76f9174f1d0c0a01483045022100a3c48312f94652269b6e23b3e48ead21b788a2d162205d9ba4c01c9cddfc9ea70220772828f03307eaf90cc17f12f2f97e8424ff5f5311839b4095f775813cb2dada014752210283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e2103e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a945552ae"
      },
      "sequence": 4294967295
    }
  ],
  "vout": [
    {
      "value": 0.99887766,
      "n": 0,
      "scriptPubKey": {
        "asm": "OP_HASH160 6fb7855fc9f0fcad63dacb27103f3ee6089b6540 OP_EQUAL",
        "hex": "a9146fb7855fc9f0fcad63dacb27103f3ee6089b654087",
        "reqSigs": 1,
        "type": "scripthash",
        "addresses": [
          "2N3RvqqdX1ou9brMRThsr9hdJpHXPkDGXt9"
        ]
      }
    }
  ]
}

UTX that raw transaction tries to spend:
34ae4b2ae7eea5240df15909207e405b410cb734445c787335711fc31d188ed1

UTX pubKey script section:
a9146fb7855fc9f0fcad63dacb27103f3ee6089b654087

ScriptSig:
00473044022038b7aaf811db578a0b62b1ff69f7b2a6054cd9b770275b292ff63bb6b6faa96902202ffa91a950c8976722284a0bcd3ad9c54e11e441f9f632c3dd76f9174f1d0c0a01483045022100a3c48312f94652269b6e23b3e48ead21b788a2d162205d9ba4c01c9cddfc9ea70220772828f03307eaf90cc17f12f2f97e8424ff5f5311839b4095f775813cb2dada014752210283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e2103e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a945552ae

When I debug a script with online debugger it executes well.
Online debugger is unhappy about last opcode 0x87 OP_EQUAL, but it may be the debugger limitation only:
a9146fb7855fc9f0fcad63dacb27103f3ee6089b654087

What is wrong with my raw transaction that I try to broadcast?
Why does OP_CHECKMULTISIG fail?
I think that OP_CHECKMULTISIG comes from redeemScript:
52210283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e2103e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a945552ae

The redeemScript decoded:
2 0283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e 03e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a9455 2 OP_CHECKMULTISIG

I played with signatures order but it didn't help.

are you manually composing tx, or using a tool? What is the raw tx? I tried to decompose to the unsigned raw tx (020000000134AE4B2AE7EEA5240DF15909207E405B410CB734445C787335711FC31D188ED1010000004752210283910b39cc9fab5ca7ad622dbe4a09e13ce53232b8695f96315c6e90c64c526e2103e88f91c7e130cc2f760d82b8135af8ec493860b0943649c65e0daf8b3b5a945552aeFFFFFFFF01962AF4050000000017A9146FB7855FC9F0FCAD63DACB27103F3EE6089B65408700000000), double sha256 it, but then the signature  verification would fail in each case. btw: why is it using version 02000000?

version 02 is a testnet, I am composing a tx with hardware wallet (ledger nano) btchip-python framework.


text:
Hard drive failure
I want to store my bitcoins into a server into a datacenter and access it via SSH/VNC.
The problem here is:
If the hard drive gets destroyed/fails/gets problems, how do I recover my bitcoins?
A friend of mine said that I must have an encrypted backup of the private key.
What private key? How do I do all of this if I'm gonna use a Centos/Debian OS for the server and the Bitcoin core client?
Thank you!

Your private key is stored in your wallet. This is the critical piece of information that will allow you to use this address in the future.
Encrypting the wallet have having a backup of wallet.dat are important steps.
But, you can even store you keys completely offline.
Even on a computer that has never been connected to the network.

Create a new address with:bitcoin-cli getnewaddress ""
List all the addresses of account "" with:
bitcoin-cli getaddressesbyaccount ""
You can now print the private key of an address
bitcoin-cli dumpprivkey <BITCOIN_ADDRESS>

If your wallet is encrypted, you have to unlock it first.
The result of this command will be your private key. You can copy it to a piece of paper and put it somewhere you can safely store it.
You can add it to a wallet in the future. Following this wiki:
https://en.bitcoin.it/wiki/How_to_import_private_keys
Using the bitcoin-cli you need to run (After unlocking your wallet):
bitcoin-cli importprivkey "<YOUR_PRIVATE_KEY>" "" false
The false at the end is to prevent a rescan of the blockchain.

If you are running bitcoin core daemon on the server, it will have a wallet.dat which you can encrypt (with the encryptwallet command), containing the private keys. So then you can just back up that wallet file, and your private keys will be safe as long as you have the backup and the decryption key for the wallet

source: Stack Exchange

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

sort: votes


text:
can the network stagnate if the difficulty grows too big?
So im mainly thinking in the very early days of bitcoin when the networks compute power was minimal.
What would happen if say a big organization with exponentially more compute power than the network, were to join for a little while, raise the difficulty, and then promptly leave?
Since the difficulty is only re-calculated every 2016 blocks, couldn't this effectively stagnate the entire network since mining 2016 might no longer be feasible?
Is there something in the protocol that prevents this? also does such an attack have a name?

In the early days of Bitcoin, sure. Today, not so much.
Back when Bitcoin was only being mined by a few individuals on their home PCs, it would have been "relatively" easy to use a supercomputer, mine for one difficulty adjustment period, and then stop mining, leaving the network in a state where mining another 2016 blocks could easily take years. (Correction: It would take more than one difficulty adjustment period to do that.) What the community could then do is to deploy a fork that would deliberately ignore the longer chain, making mining possible again.
Today, even the largest general-purpose supercomputers cannot compete with miners using ASICs built specifically for mining bitcoin. If you wanted to get orders of magnitude more computing power than the rest of the network, you would need orders of magnitude more ASICs, at a time when ASIC manufacturers barely keep up with demand from actual miners.
Of course, if you have more computing power than the rest of the network combined, you can execute a 51% attack, which might be a lot more damaging to Bitcoin than the attack you've described.

actually i am asking this because i am developing my own little hobby blockchain based cryptocurrency with some of my friends. Currently even though we are all making transactions here and there, i am the only one running a miner on the network. The miner is only a small raspberry pi b with very little compute power. Thats why i am worried someone will come along with alot more compute power and stagnate our little hobby currency. But i guess there is nothing i can do? other than to hard fork if it ever happens

As an interesting side note, the largest downward difficulty adjustment in Bitcoin was 28% in May-June 2021 when China banned mining.

@stav A cryptocurrency with a single mining Raspberry Pi is probably much worse in terms of security than a centralized currency with a single server holding everyone's balances. Of course if it's a hobby currency with no real value then security really doesn't matter.

It would be hard to increase the difficulty so far that "mining another 2016 blocks could easily take years" in one dififculty period, since each adjustment is capped to a 4× increase. It would be possible if a huge amount of mining power mined multiple consecutive difficulty periods and increased the difficulty by e.g. 64× or even 256×.

@Murch Thanks for the correction, I didn't know that.

Oh, yeah, the difficulty adjustment is limited to the range of 0.25×oldDiff <= newDiff <= 4×oldDiff

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


text:
searchrawtransactions in bitcoin-cli returning "Method not found" error
some days ago I installed bitcoin core patched with the addrindex option ( btcdrak version ), after indexing the entire blockchain for 5 days, I tried to use the searchrawtransactions parameter on bitcoin-cli in order to query some addresses, but it is returning the following error:
error code: -32601
error message:
Method not found

In github I saw the following statement:

First run will require a full reindex of the blockchain. After that, the searchrawtransactions will be available.

But it's not working for me. Anyone has experience with this or with any other bitcoin core patched version?

To me it sounds like you're not actually running the addrindex patched branch.

There is no cli API as searchrawtransaction in the core bitcoin client. I guess what you are talking about is getrawtransaction. This would be place where you would find all the API's aggregated in one page and you can search for the API you are concerned with.

No, I'm talking about searchrawtransactions available in this BTC core version: https://github.com/btcdrak/bitcoin/tree/addrindex-0.12

@Nucklear Oh, I am sorry. Did you check the issues? https://github.com/btcdrak/bitcoin/issues/12

Yes I already checked but I did not get anything usefull

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


text:
How does Market cap and daily movement affect a Crypto stock , do these numbers mean much?
Really want to understand how the daily volume and overall cap works. I read that don't buy when a market cap is over 75 million and the best time to buy is between 25 and 75 million.
I understand that certain coins have mineable limits. Do some coins have unlimited caps ? How would they be valuable and not subject to inflation ?

To clarify the definitions for you:
Market cap => The total money invested into a coin (or stock). This is the sum of peoples perceived value of the coin and the amount of coins i.e. MK = Coin Value * No. of coins in supply. To answer your question, coins do not have limits on market caps (in other words the perceived value of the coin is unlimited).
Mineable limits => This is probably referring to A. The automatic mining difficulty adjustment of a coin and B. the hard limit on supply of the coins. Both of these are to prevent inflation of the coin. Inflation occurs on coins while they are mineable but usually small and steady and usually decreasing inflation (like Bitcoins block halving).
With regards to trading/investing, it may be wiser to analyse the market cap of the coin rather than the coin value. If you believe it is a worthy idea to invest in then for you to make a good return you would require a balance of 1. Small enough market cap that has potential to multiply 2. Coin supply is regulated by mining to prevent runaway inflation (premined can be risky) 3. The hard limit on the coin is reasonable. Just remember that the coins with the biggest market caps may be considered more trusted/reliable.


text:
If a BCH is mined do those coins go against the total 21 million supply
I wanted to find out when a fork happens does that mean there are double the amount of total coins added to the max original total of 21 million

No, they are not added with respect to the original limit. Under the bitcoin accepted rules there will be a total of 21 million coins, and under BCH accepted rules there will be a total of 21 million coins.

The Bitcoin blockchain and the Bitcoin Cash blockchain are now two separate chains.  Even though they both originated from the same genesis block (and several years of common blocks), they have now forked and can never be reunited.  This means you should look at them as two separate currencies, each with their own similar but different rules.
As such, the Bitcoin blockchain can only ever support 21M BTC, and the Bitcoin Cash blockchain can only ever support 21M BCH.  So that does not mean anything has doubled; that would mean there can be 42M BTC...which isn't true.  It means there can be 21M BTC, and also 21M BCH.  Just like there may be X number of euros and X number of dollars, but that doesn't mean there are 2X euros or 2X dollars.  They are separate.

Thank you for that explanation, that was excellent. So each time there is  a Hard Fork a new Currency is formed and can use the open source code to create a max total of 21 million Coins . This explains why some are calling BTC Original and BCH the Fake or vice versa.

@Jcoin Yes, the new currency is formed in parallel with the old (original) BTC. Although community can agree that old BTC code should be deprecated (perhaps of some bug in the original code) so the new fork becomes original bitcoin. Also the new coin can have a different total number of coins if this is enforced with the fork.

Yes it is doubled. Its a copy of the original chain with a few changes.
So there are two chains with 16mil/21mil coins atm.


text:
What prevents real-life robberies in the hypothetical future where Bitcoin is widely used?
What prevents the following real-life robberies from happening in the future where Bitcoin or similar cryptocurrency is widely used?

Robber A goes to an infrequently-visited street vendor and buys a pack of gum with Bitcoin.  Robber A now knows the address of the vendor.  Robber A can sit and wait until someone (Victim A) purchases something from this address and has a very large Bitcoin balance.  Robber A can follow and rob Victim A for their entire Bitcoin wallet.
More generally, Robber B goes to random persons house with a gun and demands a Bitcoin transfer equal to Victim B's full wallet.

Am I missing something because it seems incredible easy for people to do?  Today cash, credit, and debit robberies have preventions/limitations in place to thwart very large robberies.  I'm not seeing the same preventions for Bitcoin.

You may be interested in doing some research on confidential transactions. There are some videos from the bitcoin core developers this year explaining how they improve privacy, specifically for transaction amounts, on the Bitcoin blockchain.

Robber A now knows the address of the vendor. Robber A can sit and wait until someone (Victim A) purchases something from this address and has a very large Bitcoin balance.

Most vendors would generate a new receiving address for each customer, as is recommended, which would stop this from happening. It is likely Victim A would also have generated multiple addresses rather than owning all his BTC on one address.

Robber B goes to random persons house with a gun and demands a Bitcoin transfer equal to Victim B's full wallet.
  Am I missing something because it seems incredible easy for people to do? Today cash, credit, and debit robberies have preventions/limitations in place to thwart very large robberies.

How can a cash robbery of exactly the same type be prevented? Although as above, it is unlikely the robber would know their entire amount of BTC owned, so they could not know if the victim had sent everything or not. In general you could keep large amounts of BTC stored on encrypted cold wallets off-site which any robber should not know anything about.

Scenario 1 sounds like a good prevention. For Scenario 2, cash robbery would be limited to cash on hand. For most, that would be minimal. But the prevention here seems somewhat limited. We’d have to walk around with our mobile wallets being limited to a certain amount and top up occasionally from the offsite or third party. Right?

Yes, and that is suggested anyway, just like having a savings bank account. You would not carry around your life savings in your wallet or store it on your eftpos card :)


text:
How to pass Livenet Txhash on a testnet Bitcore node
I want to pass Txhash of a livenet Bitcoin transaction to a service created in Testnet bitcoin node.
I have been using Bitcore as my client for writing services in nodejs.
This is my Bitcoin Client

I don't understand this question at all.  What do you mean by "pass", and what does it mean that your service was "created in" a Testnet node?  Can you please edit your question and explain in a lot more detail what you are trying to do and how?

I'm not sure whether this is the information you're asking for, but Testnet uses a different address format and derives from its own genesis block, therefore all content from the mainnet's blockchain is incompatible with testnet. Mainnet transactions are incompatible with testnet.


text:
Unconfirmed Transaction, what can I do?
I sent a small amount of bitcoins from my electrum wallet. I control both addresses either side.
the transaction can be viewed here
https://blockchain.info/tx/a80f1ef7e4f2fdda8ca3fe2948bbad6a316976e9d91a6deacd56d3346f76d652
It's been unconfirmed for around 16 hours now, what can I do about this and how I do get my bitcoins back?

Please wait. the estimated transaction time is 3d days. The tx will be either confirmed or will be removed from mempool. If you have opted in for RBF , you can increase the fee.


text:
Transaction Rejected, bitcoins not returned to wallet?
My transaction is still coming up unconfirmed on my electrum (ver 2.6.4) wallet after 2 days. When I open it on blockchain I get the following message:
"Transaction rejected by our node. Reason: Transaction was previously accepted but has been pruned from our database."
Have I lost my bitcoins or what can I do to recover them?
Transaction can be viewed here:
https://blockchain.info/tx/ec7e3a90d4434e29044a735f12239796d0eb51ad231417dfa61876a3cfc8cc3f

Have I lost my bitcoins

no. unless confirmed the bitcoins are still yours

or what can I do to recover them?

you can do nothing. you should wait and spend your time for learning

wait for what? my wallet is still showing them as unconfirmed?


text:
Why do we need Proof of Work in bitcoin?
I know that proof of work shows that the person has put in some time and power into the processing. I also know that bitcoin mining is adding a transaction into the blockchain and then the miner will need to solve a pow problem.
Why do we need this? What if we eliminated the proof of work step for the miners and what are the consequences of doing so?

I also know that bitcoin mining is adding a transaction into the blockchain and then the miner will need to solve a pow problem. Mining is constructing a block of transactions, and, with luck, solving the PoW problem for that block before any other miner adds a block, then adding the block to the blockchain.

closely related: https://bitcoin.stackexchange.com/q/331/5406

Imagine I have 1 bitcoin. And imagine I can form a transaction to send that bitcoin to Alice or I can form a transaction to send that bitcoin to Charlie.
Now, what stops me from forming both transactions? Nothing.
So, if I do that, how will people know which transaction is valid? Clearly, without some reliable way to tell which of those two transactions are valid, the system is doomed.
This is what PoW does. A miner cannot contribute PoW to both transactions at the same time -- he must pick one.

Ok, I see how PoW is related to double spending, thanks

@user200300 I'm not quite sure what you're unclear about. Do you understand the problem I'm describing? Someone can form two valid transactions and we need some way for everyone to eventually agree on which one to accept. (Maybe it would help to ask your own question about what specifically you don't understand?)

Hi David. How does the miner decide which transaction to commit POW to? And how does this selection help maintain the integrity of the blockchain? Also, isn't POW performed on a block, not on a transaction per se?

PoW is performed on a block, but that block cannot form a chain that includes both transactions or that chain is invalid and will be ignored. A miner wants to get paid, so he mines on top of the longest chain he can find.

I think this explanation is quite inadequate. All it says is that PoW grabs one of possibly competing transactions--fine. But what it doesn't explain is this: You send 1 bitcoin to BOTH Alice and Charlie as two separate transactions before either one is accepted. Now let's say the Alice transaction gets successfully added in a block after PoW. Now the Charlie transaction is still pending. Your explanation glosses over what the fate of the Charlie transaction will be...

@Jazimov Nothing can ever happen to it.

Why is that? PoW enters the first transaction successfully onto a block that's verified by other nodes and added to the blockchain. When the second transaction is encountered, what blockchain mechanism causes it to be ignored?

It's not valid because it tries to claim an unspent output that no longer exists. No node will allow anything to happen to an invalid transaction. A block that tries to include it will be ignored.

"So, if I do that, how will people know which transaction is valid? Clearly, without some reliable way to tell which of those two transactions are valid, the system is doomed." What about a conflict resolution consensus: if one wallet attempts to double spend, the transaction with a lower hash is considered to be the valid transaction?

@Calmarius That would be a disaster. No transaction would ever be final until and unless you could see every transaction that was ever going to happen to ensure that there didn't exist any conflicting transaction with a lower hash. How would you do business if you never when you could rely on a transaction not losing conflict resolution?

Nodes can locally timestamp the transactions and declare it final if it's old enough (let's say 1 hour old) at that point no updates accepted. The bigger problem is making sure that nodes are in consensus and all of them are building the same chain, and I don't think that's possible without artificially slowing down the network with PoW and letting the blocks probagate to all nodes before the next comes.

@Calmarius No, they can't. What if one node thinks it's 1 hour old and another node thinks it's 59.9 minutes old when a conflicting transaction is discovered? How would they ever agree? A malicious user could create a thousand conflicting transactions, send the one with the highest hash, then wait 59 minutes, then send the other 999 (in hash order, highest to lowest) over the next two minutes and the network would never agree again.

I don't understand how to double spend without PoF, I have created a new question maybe is easier to understand explaining a step by step problem: https://bitcoin.stackexchange.com/questions/76294/why-we-need-mining

@David Schwartz answer:
I can not fully understand how a PoW is related to mitigate for example double spending?!
As I understood the PoW algorithm asks that hash of an string should start with some zeros..which is hard to find the proper number, etc, etc..but if the hash of some string (let's say the transaction that is added to the blockchain) starts with zero, it does not prove that the transaction is a valid one!
It is highly appreciated if some one clarify this issue to me.. Thank you

@MF The challenge is not to know which transactions are valid. The challenge is to know which of two valid, but conflicting, transactions everyone else will eventually accept.

"Clearly, without some reliable way to tell which of those two transactions are valid, the system is doomed." Computationally, it's not required to produce PoW in order to verify that all the transactions packed in a certain block are mutually valid according to the current blockchain. If you pack both transactions into one block, the block will not be valid. If you pack one transaction into a block and it ends up in the blockchain, then any future block that my be added could not include the other transaction. No need for PoW to verify these conditions.

@rapt Can you explain how this would work? Say I have a blockchain that ends with block A, you have a blockchain that ends with block B, and block A has a transaction that conflicts with block B. How do I know which of those two conflicting transactions I can rely on without PoW?

@DavidSchwartz To you as an outside observer, what you first care about is that all the current versions of the blockchain (BC) are valid. I.e., that for each version of the BC, the transactions within that BC are valid and not contradicting each other. This is "easy" to do, without PoW, by every user independently (no mutual trust is needed). Now, to you as an outside observer, the PoW process simply randomly picks one of the valid competing BCs. You don't really care how one is chosen (by work, lottery, etc). All you care is that the network accepts this process of picking the winner.

@rapt I guess I have no idea what your point is. You're saying a bunch of things that, while technically correct, are worded confusingly. What are you trying to accomplish? Are you trying to clarify something? If so, I think you're failing. Are you trying to correct what you perceive is an error? If so, can you be precise about what you think is incorrect?

PoW is not used to protect against double spending attacks. PoW is used solely to pick which random miner out of all total miners gets to choose the content of the next block. The winning miner can still be dishonest, if so then the transactions of this new block may contain double spends, and if it did, the block would be  seen as invalid, rejected by all the other miners, and orphaned.

@dodgy_coder You are incorrect. Double spends don't involve blocks that can be seen as invalid. An example of a double spend would be if Alice has 1 bitcoin and two blocks are mined at about the same time, one containing a valid transaction sending that bitcoin to Bob and one containing a valid transaction sending that bitcoin to Charlie. Anyone who sees only one of those two blocks mined at about the same time would accept it because it's valid. (Did you read my answer? It says exactly this.)

@dodgy_coder Solving the double spend problem requires some way to have the network eventually agree on which of two individually valid but conflicting transactions to accept. Bitcoin uses PoW for this purpose.

@DavidSchwartz I get what your saying, but hear me out. So though PoW a miner X has been awarded the right to form a new block. They put in that new block the transaction from Alice to Bob. Another miner Y through PoW again has (around the same time) found a new block and added the transaction from Alice to Charlie. How did PoW prevent a double spend? It didn't have anything to do with it. The protocol rule of extending the longest valid chain took care of that, on the next block, which was awarded to miner Z. All PoW did for us was to randomly choose a miner based on their current hash rate.

@DavidSchwartz Actually I said above it was the "protocol rule" .. its really the miner's own incentive of extending the longest valid chain. Miner Z had to choose one of the valid blocks (from miner X or miner Y) and this became the consensus chain. At the point in time that the double spend occurred, its possible (depending on Bob and Charlie's wallet software) that they both saw a valid tx with 0 confirmations. So the double spend happened, but then one tx block got orphaned and one didn't.

@David Schwartz Isn't there a mechanism to check balance before transaction? If 1 bitcoin is sent to 2 people, only one of them will recieve and other will be discarded as invalid. I don't get how PoW will prevent this.

@AbhishekChaudhary How do thousands of people agree on which to receive and which to discard as invalid? That's what PoW does for bitcoin.

@DavidSchwartz You fail to explain why is the PoW needed.
(1) Node picks 1000 outstanding transactions and puts them in a block
(2) It assesses no double spending on that block.
(3) It hashes the block together with the previous hash in the blockchain.
(4) It broadcasts the block to the other nodes.
(5) Nodes check block and append it to the blockchain if valid.
Is that it? What's the value of hashing the block 10K times, only changing the nonce until the hash starts with N zeroes, as to hashing it once? It adds no correctness.
As a form of flow control it seems absurdly wasteful.

@Lobotomik What if someone else does precisely the same thing but their block includes a transaction that conflicts with one in that block? What stops the network from breaking into two disagreeing sides? The value of the proof of work is that it resolves this problem -- the chain with the most work wins. And it's very expensive to change that.

@DavidSchwartz is that really the main point of PoW? protection against double spending? can't nodes simply check that there isn't sufficient balance to accommodate both transactions and reject such "bad" blocks?

@SpaceMonkey They can, but that's not the problem. The problem is that one node accepts a block that contains one transaction and another node accepts a block that contains a conflicting transaction. From then on, the two halves disagree on which transactions are valid after that (because each side sees accounts with different balances). How do you ensure eventual consistency and keep the network from accumulating more and more disagreement? Try to work out a way and you'll quickly find it's not simple at all.

@DavidSchwartz Exact same thing happens in Bitcoin and the solution is to take the longest chain, but again why do we require PoW? I think it's to prevent attackers from spamming invalid blocks. So it seems like PoW is mainly for controlling participation in the network (you need to make an effort which is easily checked) so attackers can't build a longer chain without having more than 50% of the hashing power. Does that make sense?

@SpaceMonkey If it's helpful to you to think about it, then I guess that's fine. I find that overly complicated. It's this simple: Longest chain is useless if everyone who wants to can make a chain that's as long as they want it to be. Longest chain is only a useful rule if it's hard to make a chain longer.

@DavidSchwartz right, that's a good way to put it. So, aside from "transaction order" (which is double spending), what else does PoW give us? we don't need PoW for transaction validity since we can validate each transaction individually, so what else?

@SpaceMonkey The canonical answer is to provide transaction ordering which we need to solve the double spend problem. The secondary answer is to accomplish the initial distribution without a central party.

@DavidSchwartz I appreciate your replies, I think these are the best responses I got so far. Would you mind joining my chat room please instead of commenting here? https://chat.stackexchange.com/rooms/122747/spacemonkey-and-davidshwartz

Proof of Work (PoW) basically makes sure that miners don’t cheat.
There is no way to trust that everyone in the network is honest, so there has to be some way to prevent miners from creating new blocks that benefit themselves. The way it works is that you have a bunch of people all trying to guess the answer to the math problem and no one knows who is going to get the correct answer first. Whoever does get the right answer first gets a reward, but only if all the other miners agree to accept that transactional record (If it becomes apparent that a certain miner is creating fraudulent transactions then the other miners can collectively refuse to accept their contributions). This is why the process of creating a new block is designed to be energy intensive, so that there is a cost associated with creating each new block. This prevents miners from simply creating a whole bunch of new fraudulent blocks with the hopes that maybe they’ll get accepted, because the cost of doing so offsets the potential reward. It helps to think about proof of work as a possible solution to email spam. If there was a requirement for each computer to spend a minute on a PoW problem before every piece of mail was sent, then only people with genuine messages would agree to expend the effort. One minute of computer time is a very low cost for an individual, but the guy who is blasting 10 million spam emails couldn’t afford to wait 10 million minutes to do so. So going back to bitcoin, the chance of each individual miner being the one to solve each block is pretty small, and since it takes a lot of effort to solve the blocks they can’t just spam the network with solutions. This means that they are incentivized to only expend the effort if their contribution is going be accepted by the network.
Hope that makes sense.
This is the best breakdown I could find (http://nakamotoinstitute.org/mempool/the-proof-of-work-concept/)

"This prevents miners from simply creating a whole bunch of new fraudulent blocks with the hopes that maybe they’ll get accepted" But nothing prevents nodes spamming the network with fraudulent transactions, of course eventually all peers will block those nodes after certain amount mishaps, I don't see why wouldn't this work for blocks as well.

@Calmarius, indeed there exists two levels of consensus: Transaction level and Block level. So, spamming fraudulent transactions is quickly detected through consensus voting which handles Byzantine faults.

I'm not sure if I get it right, because in my mind, and the way I try to understand it, is that, a PoW is a delaying mechanism . So it forces every body to delay and pause. And once, this mandatory delay is there, kablam, the result is sequential ordering. I'm not sure, if this is the whole point. I just started reading Mastering Bitcoin last week. Please correct me if I'm wrong.

The way I understand how proof of work (PoW) works is this: its fundamental goal is to prevent cheating, or creating an inconsistent view of the distributed ledger.
Imagine a double spend scenario - where in participant A has only 1 BC to spend. But, he creates two independent transactions or "spends" each with 1 BC. He then presents each spend transaction to two different parties B and C as valid payments. Since there is no notion of serialization of transactions (as one would have in a centralized database with atomic commits), it is possible that some participants in the network have recorded A's payment to B first, while others have recorded A's payment to C first. At the same time, some will end up rejecting the latter payment (since A has only 1 BC to spend).
In the ideal world, if both transactions can be strictly serialized (as, for example - A's payment to B will be recorded in the distributed ledger before A's duplicate payment to C might be recorded), there will be no need for distributed consensus. In an ideal world, where in the transactions can be time-stamped using a "central" clock visible to every participant, we would have an easy solution.
The PoW process solves this problem algorithmically by forcing a non trivial finite delay for submitting and committing a block a transactions. In the bitcoin scheme, where transactions must be committed in a block level granularity, A's double spend transaction has two possibilities:

Either both transactions are grouped together in the same block,
Or, they are grouped in different blocks.

In the latter case, the inconsistency is easily detected and flagged. In the former case also, it is easy to detect the inconsistency & flag the same - but it is possible to do so only when both transactions (the good one and the bad one) are grouped in the same block.  This is not possible if either the block sizes are too small or can be committed by the nodes very quickly. This is where PoW comes handy - it forces enough time to elapse in order compose a new block and have it committed by all participants.
The question that was not clear to me is this: Bitcoin uses a certain variation of computing the pre-image of a SHA-256 hash value. Since the purpose of PoW is only to delay the creation of new blocks by a sufficient time lag, this puzzle to solve could be anything - as for example, solving a 16-queens placement problem on a chess board, or something like that. It is not clear if the puzzle really needs to have a correlation with the actual data in the block being committed.

It is important the the puzzle's solution has a deterministic relationship with the blocks contents. This is because a mechanism is required to verify which block a new block was built on top of. It is also provides a way to quickly verify that transactions were included in a block. Lastly, using a function with properties like strong hash functions ensures that once a solution has been found, the contents on the blockchain cannot be changed with out detection. The puzzle needs to provide a tamper prevention mechanism.

Without proof of work, anyone can start from the genesis block and the create a long chain of fake transactions. How can one decide which ledger is the correct one?
This is where the proof of work comes into play. The nodes accept the chain which took the most work to create and reject all others. This strongly incentivize the miners to build upon the established chain and also makes it hard to create a fake chain. To create a fake chain an adversary will need to work faster and also needs to catch up to rest of the network to get his fake chain accepted, which is practically impossible for established cryptocurrencies like Bitcoin.

short answer :
the proof of work is a protection and a solution for the Byzantine general problem without it miners will cheat easily without losing anything so they set this system POW to enforce the participants to loose money if they cheat (you loose the invested money in the POW process (electricity consumption and useless invested budget in the hardware)) instead you have an incentive if you don't cheat. Besides the POW is used to control the mining time windows (10 min) we could control the difficulty to make the mining easy or hard.

It provides a Proof of Consensus among the Bitcoin nodes that establishes the validity of any given block once it has about 6 blocks mined on top of it and it is the longest chain on the network
Since it is computationally expensive to mine blocks, it is unlikely that a single miner would be able to mine multiple blocks in a row. The rest of the mining community would mine the blocks much faster and create a longer chain.
Thus, given block A, to have 6 blocks mined above block A in the longest chain, a large percentage of the miners in the bitcoin mining community must all be working on the chain that includes block A.
The fact that so many miners have been proven to be working on a chain that includes block A implies that the community has come to the consensus that block A is a valid block.
Thus Proof of Consensus has been achieved.
Why is this Proof of Consensus needed? It protects against the block chain from being forked (intentionally or unintentionally). Other answers describe why someone may try to intentionally fork the blockchain (see the Double Spend scenario).

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


text:
Possible to get Blockchain bitcoins over to Stripe or Paypal?
I'm new to the Bitcoin world. I accepted a Blockchain transfer over the weekend as payment for something. I'm wondering if it's possible to get my Blockchain Bitcoins (well, fraction of a bit coin) over to my Stripe account or PayPal account?

Welcome!  You need to understand that bitcoin is its own currency.  You can't have bitcoins in PayPal, because PayPal doesn't use that currency.  You will first need to convert bitcoin into a fiat currency (USD, EUR, CNY, GBP, etc...) that the third party service supports, and then transfer that money into that other service.  Converting to other currencies is not a function of bitcoin, itself, just like converting to euros isn't a function of dollars, themselves.  You have to find a service that will trade you fiat for your bitcoins.

This might help get you started:  https://en.bitcoin.it/wiki/Trade

You can use a crypto currency exchange to move funds from one currency to another.
For example you can sell Bitcoins for USD or other fiat currencies and payout the amount to a credit card or a bank account.


text:
What’s the curve rank of secp256k1?
Simple question. I failed to find how compute the rank of an elliptic curve using the version of online tools like SageMath or Pari/gp since it’s the only thing I have access to…
So elliptic curves have a something that is called a rank. What’s the rank of secp256k1 or how to compute it using SageMath or Pari/gp ?

From what I can find about this concept, rank of an elliptic curve is only defined for elliptic curves over the rational numbers.
Since secp256k1 is an elliptic curve defined over a finite field, the term does not apply.
The elliptic curve y2 = x3 + 7, over the rational numbers, has rank 0.

I was indeed talking about prime fields. While of course, it doesn’t apply to Bitcoin I was reading this paper that propose a practical algorithm for solving discrete logarithms if the underlying curve has rank 1. So I was curious to know what was the rank of secp256k1.

I can't access that paper, but are you sure it's about solving ECDLP over a finite field?

Yes I am. The full pdf is here https://pdfupload.io/docs/4ef85049


text:
How to use wallet.dat file on Android?
Simple question. How to import non segwit addresses from a wallet.dat file ?
The problem is I can no longer afford a computer and Bitcoin core doesn’t really run on android.

Bitcoin core is available for Windows, MacOS and Linux but not Android or iPhone. Consequently, the authors of wallet sofware for phones might not expect people to have a wallet.dat file from Bitcoin core on their phone. Similarly, authors of tools for extracting wallet.dat contents might assume people needing to do this have a desktop computer or laptop. You may be seeking a Unicorn.

@RedGrittyBrick correct. I need something for importing wallet.dat


text:
How to get a recent version of Bitcoin core for 32 bits?
Simple question. Modern wallet.dat whith bech32 addresses that can’t be opened by the last version of Bitcoin core compiled for 32 bits windows and was handed over a 2008 laptop with the money I got.

How to get a recent version of Bitcoin core for 32 bits?

One way is by compiling it from the source code.
At https://bitcoincoredocs.com/all.html it describes how to compile Bitcoin-core and says

After the bash shell is active, you can follow the instructions below, starting with the "Cross-compilation" section. Compiling the 64-bit version is recommended, but it is possible to compile the 32-bit version.
...
Build output expected:
...
3. windows 32-bit and 64-bit unsigned installers and dist zips (bitcoin-${VERSION}-win[32|64]-setup-unsigned.exe, bitcoin-${VERSION}-win[32|64].zip)

(my emphasis)
So I would expect that to produce, for example, bitcoin-28.0-win32.zip
I haven't tried this.

Related:

How to compile and conduct functional tests of Bitcoin core for CPU (32 bit) and memory constrained system?

In practice, get something like 10000 compiler errors to be fixed 1 by 1. Espescially for compiling Qt.


text:
How does an exchange cover a "run on the bank"?
This is not a duplicate! There are several similar questions, but they concern mining or other specific questions. This is not about mining.
Lets look at a specific situation. Lets say the value of bitcoin surged to something ridiculous. Lets say several billion dollars per coin. Now in this hypothetical situation, if everyone on the exchange (or even just a few individuals) decided, "You know what, that's enough for me" and decided to cash out, how would the exchange cover this? There is no way they could handle the surge. So where does the money come from? Of course, if you just keep it and spend your new riches using bitcoin then it doesn't matter, but I fail to understand how the idea of digital currency doesn't break down in this case. Perhaps this is a conceptual flaw of understanding on how the market works. Perhaps the money would have to be there in the first place to have driven the price up so high. Can anyone help explain please?

An exchange isn't a bank, and, in theory, isn't subject to a "run".
Banks are typically "fractional reserve" institutions.  The money deposited by the customers doesn't all reside within the bank; some fraction of it is loaned out or otherwise invested, so that the bank can earn profits and pass some of it back to depositors as interest.  So if all the depositors want to withdraw their money, it isn't there, and some will be left out in the cold (unless there is deposit insurance to make them whole).
Exchanges don't work like that.  Conceptually, all funds deposited by customers, both fiat and cryptocurrency, stays within the exchange.  The exchange doesn't attempt to make profits by investing or loaning out those funds, and they don't pay interest on their customers' deposits.    Instead, they make money by charging commissions on the trades which their customers make with each other.  So in principle, if all the customers of an exchange want to withdraw simultaneously, there's no problem; the money is right there and they can all have what is theirs.
Of course, the exchange might encounter some technical issues processing such a high volume of transactions in a timely manner.  Also, in practice the exchange probably doesn't keep all the fiat money on site; they deposit it in their own bank account, where it stays (although their bank may in turn lend out some portion, as banks normally do).  So if the bank doesn't have many customers other than the exchange, then when the exchange tries to withdraw all their funds to pay out to their customers, it may effectively be a run on the exchange's bank.  But this is unlikely if the exchange chooses a large enough bank to work with, or has insurance.
It's also possible that any given exchange is cheating and not actually behaving like a theoretical exchange should; there aren't too many laws that would ensure that they are doing so.  But conceptually, there is a fundamental difference in the ways that exchanges and banks operate, and the former aren't subject to this kind of problem if they operate as they should.

You might be conflating this with a different issue.  "The price" of a coin is usually understood to be the price at which people are trading the coin right now.  It doesn't imply that an unlimited amount of coin can be bought or sold at that price, and nobody should assume that it does.  If "the price" hits one billion dollars and "everyone" tries to sell, there probably won't be buyers for all of the coin at that price.  The price will fall, probably a lot, until it reaches a level where there actually are buyers and sellers.  This is normal supply and demand stuff, same as for any other asset.


text:
what prevents from address generation to accidentally use an existing one?
How come bitcoin addresses are created in a split second on my wallet app? what promises the address doesn't override a current existing address? I guess the same question applies for a private key...

what promises the address doesn't override a current existing address?

Nothing does, the security comes in a different way.
There are 2^160 possible addresses. That number is HUGE. It is so big, that the chance of ever generating an address more than once is basically zero. No matter the power of your supercomputer, or the length of time you have, you will just keep generating new unique addresses.


text:
Selling my bitcoins with 10% extra profit. How is that possible?
I found website where I'm selling bitcoins for paypal almost around 1 month now. They are giving me +10% to all rates on the market. I'm selling to them, than depositing it to btc-e, buy bitcoins there and than selling them again.
How is that possible that they can afford +10%? I've contacted support at the beginning, the said that they have a lot of PP in stock from their business websites, and also they are selling btc with higher rates so they can cover this 10%. Is it sound reliable? Check it by yourselves - www.hiribi.com
PS. Moderator please do not delete this post because of this link, if it's against rules just delete this link and leave my question, I need answers. Thanks.

This feels more like a business question than a Bitcoin question.  You are essentially asking "how can a company buy X at a loss?"  The fact that X in this case is bitcoin doesn't seem relevant.

If something sounds or looks like a scam, it probably is one. No business will buy bulk of anything and pay 10% on top of the regular price.
Probably they can process small amounts to lure someone to send them larger ones. Then they just can say, that's not their transaction which you send BTC to.
Omitting the fact, that this is probably a fake account.


text:
Import a wallet generated by another website to my node?
so I have a wallet generated by some other website, I have the address and the privkey.
I want to get that wallet imported & all it's previous transactions into my full node, I am using Bitcoin Core.
How can I do such a thing?
Thanks


text:
Would a transaction with a $0.01 fee get confirmed? If so, how long would it take?
I was just wondering.
Would a transaction with a $0.01 fee get confirmed? If so, how long would it take?

It'd be nice to see recent statistics on transaction fees, such as the distribution of fees among confirmed transactions.  If there are more than enough transactions with higher fees to fill blocks, then it's unlikely that a low-fee transaction would ever be confirmed - unless you find a particularly altruistic miner.  But I couldn't find such statistics.

I'm assuming a standard transaction size with $0.01 fee? This question would be more clearly defined if the fee were given as a rate of [satoshi/byte].

This changes with time, a lot. About 3/4 of a year ago, I made several test transactions spaced out over several days with very low fees, today worth between 1 and 5 ¢. (Unless stated differently: ¢ = 0.01 $; $ = USD) They all got confirmed within a few blocks time.
I just checked my transaction history and the one with the lowest fee I was able to find had a fee of 0.000023 BTC and a size of 226 B.
Right now, 1 BTC is worth 1'037.71 $. This means that my lowest fee of 0.000023 BTC is worth 2.39 ¢. However, it was worth less than 1 ¢ at the time.
Concrete info about the current state of affairs would get outdated very quickly. If you visit a page like http://bitcoinexchangerate.org/fees, it tells you the recommended fees for getting a transaction confirmed within different periods of time.
Right now, a transaction having a fee equivalent to only 1 ¢ will not get confirmed within any reasonable period of time because there are many unconfirmed transactions having a better fee per size than any transaction with only a fee equivalent to 1 ¢.
To give you a rough impression: The 48'000 transaction blockchain.info currently has in its mempool (go check https://blockchain.info/unconfirmed-transactions for the current numbers when you read this) have a cumulative fee of 54 BTC.
The last few blocks were all full (very common, right now) and collected an average of 1.66 BTC in fees. Go click the block heights in the top table of https://blockchain.info and find the average of the fees the last few blocks took. The table corresponding to each block has an entry called "Transaction Fees".
This means that 1 B in a block is worth 1.66 μBTC (if we neglect the block header). Even for a very small transaction of 226 B, that means it takes 226 B * 1.66 μBTC/B = 0.37516 mBTC to buy enough space for it in the blockchain. At Bitcoin's current value, thats equivalent to 0.3893 $.
Of course, the fact that some transactions which get in a block have a higher fee per size than others mean that you don't have to beat the average. But you have to get pretty close to it. And it's not looking like the BTC equivalence of 0.01 ¢ will (for any transactions) be pretty close to that average any time soon.
There will have to be a solution to so few transactions going through, compared to how many there are, though. There are several proposals to this and if implemented, those solutions would bring the cost required to get a transaction confirmed down.

Thanks for the reply. I really appreciate the time you took to explain this in such details. Is there a chance that it'd get ditched and never confirmed (is that even possible?) or would it eventually be confirmed (even if it's pretty far from the average)?

That's rather uncertain. A transaction is confirmed by a miner adding it to a block and publishing that block. The transaction is permanently in the blockchain if such a block survives in the long run. But other than on the top layer, virtually all blocks do survive in the long run. For everything described before this to happen, the transaction needs to find its way into the mempool of a miner. After signing a transaction, everyone who gets hold of it can add it to a preliminary block and attempt to mine it block as long as the transaction stays valid.

Currently, the only way a transaction can be invalidated is by one of its inputs having been spent. As long as that doesn't happen, your transaction remains valid. It may survive in some mempools for very long periods of time, not necessarily a miner's mempool. After that time, it can find its way to a miner and still be included into a block. However, you have no guarantee that it does in fact survive. You can – of course – republish it. If you don't know whether someone still has it, the only way you can invalidate it is by spending one of its inputs.


text:
Would replace by fee increase the fee on my transaction?
I have a transaction with a $0.01 fee that has been unconfirmed for almost a day now, I got searching and found the replace-by-fee tools by Peter Todd.
I set up a full node with Bitcoin 0.12.0 and it's downloading the blocks right now.
Would the tools work to increase the fee? Is it safe?
The transaction is a deposit into some website, would I still get the deposit?

For your last question, only the website people can answer that.  It depends on whether their software is written to support RBF.

@NateEldredge Aha, another question (excuse my newbiness), is an RBF transaction sent with the same transaction ID?

No, the txid is a hash of the transaction itself.  Any change to the transaction (including a change in the fee) results in a changed txid.

Possible duplicate of Why is my transaction not getting confirmed and what can I do about it?

You can only increase the fee with BIP125 (opt in replace by fee) if your original transaction did already signal that it can be replaced.
If you made your transaction with Bitcoin Core 0.12, your transaction doesn't signal replicability.
Since Bitcoin Core 0.14 there is a global option called -walletrbf that makes sure, all your transactions do signal replaceability.
What you can do in your case is...

CPFP (child-pays-for-parent).You can try to create a follow-up transaction with your change output of your original transaction that hasn't confirmed. The follow-up transaction should have a high fee. If a miner wants to mine your follow-up transaction with high fees, he must also pick your original transaction (an unconfirmed transaction chain).
If it doesn't confirm, try abandoning the transaction (since Core 0.13) and re-spend your input
Try to use -zapwallettxns (google)

I sent it with Blockchain.info, am I still able to do RBF or CPFP?


text:
Like Banks, are there better service providers from Bitcoins banks? Can I Find a rating?
I would like to purchase Bitcoins, I am looking and honestly do not know what I am looking at.  Is there a place to see how these Bitcoin places are rated? Services they provide?

Looks like you need a honest seller with low risks involved. Go for Coinbase.com if you are in the US. You could check their gov issued licenses for buying and selling bitcoins here: https://www.coinbase.com/legal/licenses


text:
Keepkey lists no transaction
I sent a test amount of bitcoin to my Keepkey. Coinbase has recorded it and it has been confirmed over 250 times. Yet when I go to my Keepkey it lists NO transactions. What have I done wrong?

Don't know if you've resolved this or not. How did you go about checking the balance on your KeepKey? Are you doing it via Chrome extension or through app.shapeshift.com or some other method? How did you verify the address came from your KeepKey device?


text:
Where is the code which rejects transactions with insuffisent balance?
Simple question but I can’t find the answer again.
Where is the code which rejects transactions when the value of inputs is below the value of outputs (because I think to recall that check works like this) ?
And what’s the exact error message which is sent to the log in that case ?

Grepping in all files of the projects and all charsets for \".*Balance and insufficient is no help !

Below is the code that checks that the inputs consumed are greater than the output
const CAmount value_out = tx.GetValueOut();
if (nValueIn < value_out) {
    return state.DoS(100, false, REJECT_INVALID, "bad-txns-in-belowout", false,
        strprintf("value in (%s) < value out (%s)", FormatMoney(nValueIn), FormatMoney(value_out)))

You can find it here.

And is this really the error message which state the balance is not enough on a third party transaction ? I think to recall the check is also in other functions.

This is the transaction checking function which sees that the value in > value out.

This function is then called in validation and mempool files https://github.com/bitcoin/bitcoin/search?q=checktxinputs&unscoped_q=checktxinputs


text:
Transaction with unparsed input address ? What does it means?
I just see this transaction which is special : one of input address is spending a valid amount… But why is it unparsed ? Why no ScriptSig while stil being valid ?
Also what’s the purpose ?

The output being spent is a native segwit output. If you look at the transaction that created it, you get 0014644a61cf83439e53b5dd413bec63c98c9e39c107 for the lock script, which is a native segwit p2wpkh output.
Spending a purely segwit output requires no value to be set for the scriptSig (unlike for a p2sh-p2wpkh).
The address is shown as unparsed as Insight has not been updated to recognize bech32 addresses.


text:
Can an invalid Omni transaction be confirmed by bitcoin miners?
Is it possible that a well formed Omni transaction (with valid Omni layer data) be valid for Bitcoin miners while being invalid for the Omni token being used ?

Yes, Bitcoin miners don't perform any validation beyond the Bitcoin validity rules. Omni transactions rely on OP_RETURN values, which don't matter to the Bitcoin miners.
As long as a tx is a valid Bitcoin tx, miners are free to include it in their blocks.
When an omni node sees such an invalid transaction, it will simply ignore any asset movements the tx claims to perform.

Just one question : which are the source files in Omnicore for verifying transactions ?

@user2284570 I'm not familiar with the omni source, sorry


text:
Is it possible to get the full list of synced nodes ɪᴘ on the network?
There are many website like https://bitnodes.earn.com/ but I’m failing to understand if they collect nodes from compulsory submission on the web interface for statistics purposes only or they use a way to scan the whole network ?
A second part of the question regarding the type of the node is whether it’s required to run a full node to create blocks as a miner.

Of course, I’m talking with ɪᴘᴠ6 included.

Please don't ask multiple separate questions in the same question. Your second question should be it's own post.

Sites like bitnodes use a crawler to discover many nodes on the Bitcoin network. They start a node which connects to some nodes initially, and then requests for more nodes to connect to from those nodes. They connect to the nodes they received and repeat the process until they have queried every listening node that they can.
Note that this does not get every node. It can only scan listening nodes and only the nodes which have been up long enough for another node to return its IP address in a query for nodes to connect to.


text:
How to test if a transaction is standard without spending real money?
The problem with Testnet is all types of transactions are allowed, so how can I know if a transaction would be rejected on mainet ?

You can use Bitcoin Core's testmempoolaccept RPC. It will tell you whether the transaction you give it would be accepted into your node's mempool at that time but won't actually add it to the mempool or broadcast it.

But then the question is how to convert a transaction to a full raw hex transaction ?

@user2284570 In what format do you have the transaction, if not raw hex?

@PieterWuille I have it in partial hex. I mean I have only the output in hex which means I would have expected something which would take the TxOut hex and the private key for automatically selecting utxo and perform signing.

You can create a transaction with no inputs using createrawtransaction, add inputs to it using fundrawtransaction, and then sign it with signrawtransactionwithwallet or signrawtransactionwithkey.


text:
In the case of a criminal investigation, how does one knows which exchange or wallet service a bitcoin address belongs to?
How it was found that the Dao hackers used shapeshift?
In a more practical exemple, how to find that 13qCK9VzJCicXeh47W59rh7A6tfun92Sr5 belongs to https://www.blockchain.com using only block explorer data?

There is no guaranteed way to check.
In most investigations, it is a combination of tracing the money to known addresses (most exchanges and companies consolidate funds into a handful of hot and cold wallets), and exchanges volunteering/sharing information when served with warrants.

So for my example, how to find 13qCK9VzJCicXeh47W59rh7A6tfun92Sr5 belongs to blockchain.com?

You probably cannot

but if someone physically force me to send Bitcoins to such address without showing his/her phone. The police will know that the address belongs to blockchain.com before arresting the guy (of course) but how?

Again, it is unlikely that you can prove that. Blockchain.com is an explorer, you can pull up any address on that site and show someone a QR Code for it. It is also not an exchange, so no consolidation takes place. The only way to prove it is a blockchain.com address would be to force someone to hand over their account details, and login and check.


text:
Ensure Wallet consistency
I have recently migrated machine. I used the Apple Migration Wizard and when it was finished my new machine's copy of Multibit appears to have my BTC within it.
My next task is to wipe the old machine, so I want to be sure that everything is in order before I do that. I just opening Multibit enough to ensure this? Are there anymore checks I can do?

One way to be extra sure would be to send all your coins to a new address and wait for the transaction to be confirmed.  That will prove that all your private keys were readable and valid.

Agree with Nate, but beware that this would make any back-ups you took prior to the copy obsolete. Back up your new wallet soon after the coins are confirmed.


text:
Three numbers after dash in transaction id
In Bitcoin Core the transaction id is appended with a dash and three numbers. They are usually 000. What do those numbers mean?
For example: b75b91ffc4b6f22b779ce45e4b140cf1d29dc894e368e3d8389c42444f870d5d-000

It's the index of the output in the transaction that credits you.
It's a bit of an unused format; typically ':n' is used, rather than '-nnn'.
This is because an entry in the transaction ledger doesn't really corresponding to one transaction, but to one output of it. For example, a transaction could have multiple outputs that all credit you.

Oh, no! Bitcoin-Qt starting from version 0.9.0 uses this in transaction description dialog. For example: Status: 94 confirmations //
Date: 03.08.2014 03:01 //
Credit: 0.00012886 BTC //
Net amount: +0.00012886 BTC //
Transaction ID: 8c19f75d82f1d789b1f5762afc1ce9a36848af4aa9780c96ec02d99be9ca3edf-000 // This is transaction ID, nothing about its outputs

As I said, what the ledger calls "transactions" are really transaction outputs. The -nnn part identifies which output of that txid the entry is about.


text:
Why are negative fees not allowed?
Why does Bitcoin consensus require blocks to contain only non negative fee transactions? Also why does the coinbase have to be the first transaction in a block with this rule lifted?
Instead of having those rules, which need to be special cases in the software, I suppose one could just have this rule:

The sum of all outputs in a block minus the sum of all input values in the block must not exceed the block reward.

This rule is already in place to check the block reward, so the other two rules seem useless. A miner which includes a transaction with a negative fee will have to pay for it by the one rule, so nothing bad can happen.
If Bitcoin was using just this one rule I could imagine interesting things could be done with CPFP.
One possible reason I could think of was spam protection, however nothing prevents me from creating a huge amount of spam transactions with 0 or 1 satoshi/B anyway.

Wow, a great question

Very interesting brain teaser. I agree that this could be interesting in combination with CPFP. The sender could defer the transaction fees to the recipient which would probably be an interesting proposition for some services in the Bitcoin space.
There are a few problems with negative fees from an operational perspective, though:
The sender defers prioritization to the recipient. However, if the sender needs to access the funds that are assigned to the change output of the transaction, he'll either have to CPFP the transaction himself after all, or doublespend the transaction to add more outputs.
In the first case, he ends up paying the fees himself, in the second case, he creates a scenario where multiple valid conflicting transactions float about unconfirmed, and since he doesn't know which one will confirm first, he'd better also broadcast all alternative complementary transactions.
I.e.
tx1: S --> R1 + C

tx2: S --> R1 + R2 + (C-R2)
tx1b: C --> R2 + (C-R2)

This would quickly increase the amount of transaction combinations that could be accepted on the network, create unnecessary network traffic, and would create a headache for fee estimation: At the same negative feerate, it would be much cheaper for R1 to just purchase tx1, while R2 would have to come up with the fees for tx2 (which is cheaper than tx1+tx1b).
In general, if there are multiple recipients to the transaction, the first to spend from the transaction has to pay for everyone to receive their money.
Another problem is that it may further incentivize out of band payments for transactions which at a larger scale could cause unpredictability in transaction confirmation times, and may skew other incentives in the network.

A negative fee transaction is a transaction whose outputs' value is larger than its inputs. So that transaction is effectively creating money out of thin air.
The transaction creator is thus getting free money, that's why such transactions are not valid, even if the money created out of thin air would be compensated by a lower block reward for the miner.

I know, but that is not important for the consensus rules. If the miner wants to give up the block reward, it is his problem. This rule does not have to be enforced by all nodes. Also child transactions can pay more block reward to compensate the negative fee.

I see what you mean, it's possible to keep Bitcoin's supply finite and allow negative fees. But why for? It adds extra complexity since a negative fee transaction can only be validated inside a block. It would also make mining more complex, and what's the incentive for a miner to mine negative fee transactions?

It removes complexity. The script can be validated outside of a block and the check for a correct fee can just be removed. What else can you not validate? The block reward is checked already, so this is just removing a redundant check.
Mining also does not get more complex. Miners already take the transactions paying the largest fees.
A miner would like to mine a negative fee transaction, if a child transaction pays a larger fee, that compensates the loss and can be mined in the same block.

Then I can just spam negative fee transactions and actually make money if some miner mine it. That's why individual transactions must pay at least 1 sat/B to be relayed on the network.

The transactions don't have to be relayed. Or they could only be relayed together with a child transaction that compensates the fee with CPFP.


text:
What transaction was processed in the beginning?
If there were very few coins available and people had to "mine" before they earned coins in the beginning.
What were they mining if there were no transactions to process? ie. no one had any coins to spend and if you arent spending there aren't any transactions to process to earn points. Seems like a chicken and egg scenario.

Creating blocks without transactions is trivial, valid, expected under certain circumstances, and in fact happens all the time.
There is no chicken-and-egg problem. The first blocks were just empty.

Here's Block #0 on blockchain.info: https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Transactions aren’t required in order for a block to be valid, blocks are used to validate transactions and record them in a linear fashion, but transactions are not required in order for blocks to be mined.
Miners get a reward regardless when they mine a block, in addition they may get transaction fees as well.


text:
Is this considered double spend?
I had a Receive transaction worth 0.185btc
I was confident that it was ok since I saw 5 confirmation before I close the wallet.
The next day when I checked I saw a sent transaction with 0.185 btc which I didn't authorized. When I click the link it showed me this Sent transaction.
The weird part is it says that the output is 1btc which I didn't have because I only have 0.185 btc on that wallet.

This wasn't a double spend, I'm sorry to say, but it looks like your bitcoin was stolen.
The reason the transaction out says '1 BTC' is that your bitcoin was combined with bitcoin from a bunch of other addresses, and sent all together to that new address.
You'll have to carefully think about how this might have happened. If your wallet was backed up by email, it may simply be that your email account was compromised.
Again, sorry for your losses :(

Just as I suspected. I'll investigate further how my account was compromised. This has been an expensive lesson learned. Thanks for the response.


text:
Help! I've sent ltc to bcc address
I've been stupid..
I've sent ltc's from one wallet (litebit) to a bcc address from my other wallet (btc.com) by mistake.
The btc.com wallet only supports BTC and BCC
The address is 386BxgQy7samGg3L7adCDMEMW7ndEocDC7 and i can see the ltc's in this address by using blockcypher.
I have the recover pdf file from the btc.com wallet containing:
Wallet identifier (v3)
Encrypted primary seed (60 words)
Backup seed (24 words)
Encrypted recovery secret (60 words)
BTC wallet public key
Password encrypted secret (60 words)
I've tried contacting btc.com and they suggested using ltc-recovery.blocktrail.com which i did.. Result after implementing my seeds etc was:
------ Discover Wallet Funds
Scan for funds to recover from addresses in the wallet.
The first address of your wallet is: MSW5x2ggVAagygz24kWhP7PgZXCbFELP1S,
please provide this if you ever need to contact support about help using this tool.
No Funds Found
A balance of 0.00000000 LTC was found after searching 150 addresses. -----
For the rest btc.com isn't responding.
Note: I only used the wallet once and the first address (see above "outcome" from blocktrail) is different than the address now containing my ltc's?
I also tried "coinomi" wallet to restore a wallet using my btc.com seeds (i'm not sure which seeds to use, so i've tried them all) there is no error and the wallet opens every time, only with 0 ltc's.
I've found a simulair question on this site but with no solution:( It does talk about a private key, did i get a private key and didn't see it or is that something i can look up any where? A private key is not the same as my seeds or recovery secret is it? (Except for the public key, the seeds and secrets in my back up pdf are words)
Can i somehow acces the specific address containing my ltc's and a different wallet? I have the seeds from my btc.com wallet back up..
I'm a newbe at this and can sure use some help!!!?

I am not sure your money is recoverable, and I don't know too much about the specifics of Litecoin, but I believe there is hope.  First, I think I should explain what appears to have happened (for anyone else who finds this question, since you seem to have a handle on it).
The address you sent to is a pay-to-script-hash (P2SH) address, which according to comments on this answer are valid on both chains.  This does not mean that you sent LTC to a Bitcoin (or Bitcoin Cash) address.  This means that you sent LTC to an identical, yet valid, Litecoin address.  However, this address is not one that currently has a private key stored in your Litecoin wallet.  This is why you would not expect to see the money there.
This means that in theory, you could claim the coins on the Litecoin blockchain by importing the private key(s) that correspond to the address on the Bitcion blockchain...which it sounds like are private keys that you have in your Bitcoin wallet.  I know nothing about the wallet services you are using, but if you can export your keys from the Bitcoin wallet that generated the address in question, and then import that particular key into your Litecoin wallet, you should be able to claim the coins.
It all sounds like this is what you are already attempting, but you are starting by seeding a new wallet.  If this isn't working, it could be because one of the wallet providers is using a non-standard way of generating addresses from wallet seeds.  You may want to try writing some code of your own (using a utility such as https://github.com/prusnak/bip32utils) to generate your own addresses based on your recovered seeds.  This may help you to find the specific private key for the address in question, and from there you can import that key directly into the Litecoin reference client and claim the coins.  This may or may not be worth the effort, depending on how much money is at stake.
Best of luck!

Hi jestin, thanks for your reply and answer! I'm glad that there is still some hope... I've been trying to find my private keys in my wallet but there are no other options then the bare minimum, send receive import pincode change etc. Nothing about private keys or exporting them (that i can find).

I've been looking on the github site but writing my own code is way above my skill level to be honest:S I've found a site/program that lets me create keys but i'm not sure which seed to fill in where and when i try different options the addresses don't match mine (containing the ltc's). I don't even know if i need to fill in, making keys for bitcoin/bcc or ltc, and thinking about it, it doesn't feel safe to just fill in my seeds in some program online..

Maybe there are safe options/links that someone knows of, ones that work completely offline? Or something especially for P2SH addresses? I've asked btc.com if they can help me finding my private key, but still waiting for reply.. It's been quite a search i can tell you that haha. thanks again and if some one knows anything to help i would sure appreciate it! regards Koen


text:
Is it possible to track physical objects on a blockchain?
I am currently working on a project for school in which we have to come up with a product. I won't go into the mechanics of my product but essentially what my group has come up with is using tracking devices to track any object through a mobile/desktop application. When looking through tracking technologies, the idea of using blockchain technology to track physical objects came to mind.
However, I am not entirely sure if this is possible so I would like to know if it is and could it work in theory and in practicality? Has this already been done yet?

Adding to Max's answer. If you track ownership each person could have unique private key and publicly known public key (linked to his identity), so the transfer of ownership is possible only if previous owner (according to database) and next owner both sign the transfer transaction.

I forget who once said this, "If you think you need to use BlockChain technology, you almost certainly don't."
BlockChain technology is designed to show proof of ownership via a proof of work mechanism that ties an expensive-to-run algorithm to a cryptographically secure chain of transactions.
If your system seeks to track ownership of objects where ownership changes regularly, and you need to prove ownership, perhaps a BlockChain solution might be applicable.  However, if your objects don't regularly change ownership, and you're simply looking to track geographical position, I would recommend some other data storage system, such as a typical relational database.

In short, no.
Generally, this is known as the Oracle problem, and refers to the requirement of a blockchain protocol to refer to something external (the Oracle) in order to acquire some data necessary for some computation/decision/contract. The root of that problem is that the protocol has no way of knowing whether the Oracle is truthful or not, so must rely upon it as a trusted third party.
This is much like the idea of $gold ETFs - paper gold - certificates that are traded around and ostensibly redeemable for actual gold bullion, but as history has shown us numerous times, this trust is usually abused and the qty of "paper gold" dramatically exceeds the actual gold that exists.
In this example, it's the issuer of the paper gold certificates that is the trusted party. In the case of a protocol, it's looking for a data source upon which to make a decision - and ultimately that data source is controlled by humans .. who are by their nature, driven by incentives.
So the idea of tracking ownership of an object (say a land title for example) on a blockchain is pretty pointless, because ultimately the blockchain only reflects what the trusted Oracle tells it.
As Nick Szabo famously noted: Trusted third parties are security holes.


text:
Need to learn BitCoin (for Beginner)
I'm new to bit coin and can anyone provide a website, e books or anything to learn from the basic step?
Appreciate any reply.

Google?  Seriously, just google "bitcoin howto" or something like that.

This is one of the best reads for beginners: https://www.reddit.com/r/Bitcoin/comments/6jlop4/rbitcoin_faq_newcomers_please_read/

Andreas Antanopolous' Mastering Bitcoin is probably the best resource, especially from a technical standpoint.


text:
The "work" in proof of work
How does proof of work function?
Why does the "work" in proof of need to have zero utility for the economics of the cryptocurrency to be viable.

If the mathematical problems done by miners had value by themselves beyond blockchain purposes, a miner could work on two parallel blocks at the same time to try to pull a double spend, without losing much money with electricity, bandwidth and other mining costs.


text:
getblockchaininfo timeout using API only
Thanks in advance.
If I call getblockchaininfo through bitcoin-cli it just works. It might take a while but it works all the time.
If I call it from within a Python Script
from bitcoin.rpc import RawProxy
...
# create a connection to local Bitcoin Core node
p = RawProxy()
...
info = p.getblockchaininfo()
...

then 8 out of 10 times it breaks...
~$python .bitcoin/blockheigh.py
Traceback (most recent call last):
  File ".bitcoin/blockheigh.py", line 58, in <module>
    info = p.getblockchaininfo()
  File "/home/user/.local/lib/python2.7/site-packages/bitcoin/rpc.py", line 296, in <lambda>
    f = lambda *args: self._call(name, *args)
  File "/home/user/.local/lib/python2.7/site-packages/bitcoin/rpc.py", line 229, in _call
    response = self._get_response()
  File "/home/user/.local/lib/python2.7/site-packages/bitcoin/rpc.py", line 254, in _get_response
    http_response = self.__conn.getresponse()
  File "/usr/lib/python2.7/httplib.py", line 1136, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 453, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 409, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib/python2.7/socket.py", line 480, in readline
    data = self._sock.recv(self._rbufsize)
socket.timeout: timed out

How can I force it to wait for the response?
Thanks

You just need to use the socket settimeout() method before attempting the connect() so you wait for the response.

Is settimeout() part of RawProxy?
I can't find it

This is a good question. How do I set a timeout when I use a library that is doing the connect()?


text:
How can we know our "from" address in advance?
This website ask me to enter the address FROM where I would be sending BTCs.
But every time a send some BTC it seems to be sent out from a different address...
Should I use the one I always see when I say I want to "receive" some BTC? Is it my "main" address?

It sounds like the website you're interacting with doesn't understand how Bitcoin works.

There is no from address in Bitcoin.
https://en.bitcoin.it/wiki/From_address
Each transaction reference an unspent output (UTXO) that was sent to you in a previous transaction.
About the address, you need to generate a new one for each payment:
https://en.bitcoin.it/wiki/Address


text:
mtgox max bid higher than min ask
caling getDepth.php I stumbled on some data that contains bids that are higher than asks. That can be seen in orderbook data with the following unix timestamps (for getting human readable date use $date -d@[unixtime]):
1325249854
1325249914
1325249975
1325319825
1325441984
1325545019
1325595982
1325597938
1325625735
1325645568
1325660473
1326656827
1328089365
1328089676
1328089737
So does MtGox stream "orders as arrived" without any processing or is this some kind of anomaly? From 6. 2011 till 9. 2012 with about 3min resolution I counted around 300 instances of such anomalies. Any thoughts on what could be going on? Is this common for other exchanges?

I would say that the depth feed you are reading is of the orders coming in, before they are matched.
Those orders would feed into the matching engine which would make fair trades off those orders.
It is not possible to or desirable to make an optimal trade at any given instant. this can be due to network latency (etc)  and because someone might think it would be better to make a trade, that was slightly less than optimal, than to miss out on making a trade (but still not too much up or down);
For example:
What you will probably find is that if you put in an order to buy 10 btc at $100 but someone else has put in a sell order for 10 at  $99 you order will convert to a trade of $99. The buyer and the seller both get what they wanted.
Like wise if one seller was willing to sell 5 btc at $95 and someone else was willing 5 btc at $100 you would end up with 2 partial fills to complete the trade.
Back in the day on stock markets (i.e., not btc) the exchange (or broker) would just pocket the difference. However this doesn't really happen much now (in my understanding) as the markets are more efficient (fast traded data feeds & order placement + high liquidity)
At the end of the day both buyers and sellers get what they want, and because there is reasonable liquidity, speed and fast access to market information, people will not be making trades which are too different from what would be optimal.


text:
Can bitcoind/bitcoin-qt (via RPC or command-line-options) be used to discover when two competing best-blocks exist?
The standard bitcoind/bitcoin-qt client lets you ask for the highest known block, via RPC, or get notifications when a new 'best block' is locally acknowledged (via the -blocknotify option).
But, is there any way to tell when more than one equally-high blocks are circulating, and thus it's not yet clear which will win? Or does the standard client remain locked onto only the first block it receives, until it receives a definitively-longer chain?

I don't think the block height on it's own is sufficient information. You would probably need to examine the hashes, nonces and merkle, from different peers.


text:
Is there a reason SatoshiDice & BitLotto use 0.00543210 BTC, and not 1 satoshi, to customize pay-to addresses?
SatoshiDice and BitLotto allow players to customize where winnings are sent by including an extra 0.00543210 BTC payment to the desired address as part of the entry transaction.
Is there a technical reason they don't use a single satoshi (0.00000001 BTC) value instead?

That is a bad hack.  No service, including both BitLotto and SatoshiDICE, should be offering this.

Well, what that is called is a hack.  It is a hack to make the system work in a way that is wasn't meant to work.
By definition, hacks aren't thought out very well and often aren't the optimum method -- if not outright flawed.  But they do in many instances, fix the immediate need.
In most every bet to BitLotto and SatoshiDICE there is an output address for change.  These services can't know if that change was meant to be the alternate pay-to address or if it was just the change.   One Satoshi would be a bad choice for this "special indicator" as that happens naturally quite often.  An amount that doesn't occur very often would be an amount like "0.00543210".  The frequency of change being 0.00543210 is much, much lower than it being 0.00000001 BTC.
But the chance is not zero.  If I have a coin with 0.25543210 BTC on it and I sent a 0.25 wager, I'll get back 0.00543210 as change.  Since that change is for an address in my own wallet, then even though SatoshiDICE might send the winnings to that change address I'll still receive them.  But the normal mode for these services is to always pay back to a sending (input) address, so returning to the change address frequently becomes a service issue as it is harder to understand how it works.   So ideally, this special number is one that wouldn't normally get be used for change.
But if instead I had actually made both a payment of 0.00543210 to someone and a bet to SatoshiDICE in the exact same transaction, then the winnings would go to that someone and not back to me.  If I know that 0.00543210 is of special significance with SatoshiDICE I'll know to never make a transaction with that amount in it when I'm also including a SatoshiDICE bet.  If the number were something else, like 0.00814271, that also would be infrequently used naturally, but it also wouldn't be one that I would recognize and might accidentally be an amount I would pay in this hypothetical bet statement that I combine with real-world payments.
So I'm going to come to the conclusion that to eliminate even the extremely rare chance that the payout goes to the wrong party, these services chose an easily recognizable amount so that it might save a person from making that mistake.  This amount would also preferable be a low value so that it doesn't suck too much betting capacity from the bettor's wallet with each use.
What is an amount that serves both those aims?  0.00543210.

This seems to hinge on the idea that an automatic change value of 0.00543210 is much less frequent than 0.00000001. Is there any data or rigorous proof that this is the case?
I would hope that transaction-composing algorithms avoided the creation of tiny 0.00000001 outputs, because compared to larger outputs they'll bloat future transactions. That would make 0.00000001 outputs rarer in practice, and thus ideal for signaling.

The aim of the coin selection algorithm of the Bitcoin.org client is primarily to minimize the amount of change.  Thus lower amounts for change are more frequent than larger amounts.

Looking at source, that doesn't seem true down to one satoshi. See wallet.cpp#L1006, which avoids creating change less than CENT (defined util.h#L36 as 1000000 satoshis) for min TX fee reasons. Both 0.00543210 and 0.00000001 are under this, so maybe equally unlikely and subject to same TX fee concerns. Maybe SatoshiDice didn't understand this when choosing 0.00543210?

Oh, I hadn't known about that sub-CENT avoidance.  Cool.  As far as the origin, this hack was introduced by BitLotto before there was a SatoshiDICE.  But it is a hack that has flaws and thus using it is not recommended.


text:
How widespread is OP_RETURN forwarding and mining (as of February 2014)?
As of now (February 2014), how easy is it to have a transaction which makes use of OP_RETURN data confirmed into a block?
Do standard nodes forward such transactions yet? Have major mining pools committed to support?
Are there specific steps that can improve the chances of such a transaction being mined, like connecting to certain nodes with advertised support, or adding extra transaction fees?

It will take until bitcoind version 0.9 for wide spread support for relaying OP_RETURN.
Adding fees will not help. Currently, transactions with OP_RETURN are by default not relayed by the main net (last sentence):
https://en.bitcoin.it/wiki/Script#Provably_Unspendable.2FPrunable_Outputs
P2Pool seems to accept them, so that could be a solution for you: submit them to a P2Pool node.


text:
claim bitcoin cash with bitcoin qt wallet
I need to claim my bitcoin cash I held my coins in the bitcoin qt wallet from the spring on 2013 to the middle of aug. Can anyone point me in the right direction to get this done?
Thanks

Where did you store you bitcoin until November? You may be eligible for bitcoin gold too.

Possible duplicate of  https://bitcoin.stackexchange.com/questions/57351/i-have-bitcoins-in-a-local-wallet-how-do-i-get-my-bitcoin-cash-without-using-an

First of all, move your bitcoin to a new wallet. So it stays safe and secure.
Then download Electron Cash Wallet, create a new wallet and sweep the private key(s) of your old bitcoin-qt wallet.

I know that there are years after ... I've had the same problem and today I've found the way to claim it ... finally :)
I've got old BTC from before fork on Bitcoin (so before 01.08.2017). I've been struggling back then (just after fork) how to send it to some other wallet or market to get my cash back ... unfortunately back then I wasn't able to find the way.
From tomorrow I've done the same research again and I've come into this page. I was quite sad when I couldn't find the answer how to do it.
Today finally I've done it :)
What I've done:

On Bitcon Core I've exported my private key (this only can be done with old legacy wallets ... I've got backup of that one). For doing that you need to go to console and write commands:

a) unlock wallet:
walletpassphrase "<here you put your password to the wallet" 600
b) export private key:
dumpprivkey 18wX2UUqNn3W6MLq2urHNMjvEXaZr3hYoL
That (18wX2UUqNn3W6MLq2urHNMjvEXaZr3hYoL ) is my BTC/BCH address. If anyone want to thanks me - you can send some BTC or BCH there :-)
After that you've got your private key to your legacy wallet. That one we will use later on other tool

Download the Electron Cash. I've downloaded windows portable version from https://electroncash.org/

Warning: I've had warning message from Norton Antivirus that the program doesn't have correct signature. Here I was quite not sure ... but as I wasn't able to get my money back ... I still tried to use it.
There wasn't any other warning from NV so I've continued. I've done some tests before I've imported correct private key.
When you start the program, you should create new wallet and then choose 3rd option: Import BCH addresses or private keys.
If you will put here the public BCH address - you would have read-only view for transaction. If you would import your private key - you will be able to send BCH to different wallet.

Send money :)

And that's it ... worked for me :-)
Good luck :)


text:
How to determine estimated block or transaction time
I would like to know if there is any possible way to determine the estimated block time for a special cryptocurrency at the present time so I can estimate the transaction time it takes to send coins from one to another wallet.
Any help in this matter?

It is impossible to answer this question without knowing your blockchain's rules - it could literally be anything.

The target block time is usually hard coded. Block time is a function of the current difficulty and the current network hash rate. In Bitcoin, the target hash rate is ten minutes and the difficulty is regularly adjusted to maintain this block time on average.
Whether or not a particular transaction will be included in a particular block is speculative since it is up to miners to include the transaction, however, it is generally considered that transactions with relatively higher fees are more likely to be included.


text:
tracking Lost bitcoin wallet
I bought bitcoin 3yrs ago (i did not know so much about it then, i was only playing with it).
I received the bitcoin via a particular address which I still have. How can i track the BTC wallet I used via BTC address?

The best way you can do is one of the below:

Check your computer for the wallet file of the BTC address if it was a desktop wallet
Check your home for any paper/computer for the private key/seed of that BTC address if it was a desktop wallet
Check your browser history for any exchange login and try to login and check for that balance.

With just the BTC address, you cannot find the info of the BTC wallet.