Someone said they would send me bitcoin, they sent me a exe file, called bitcoin.exe, and it is not running They said they saved bitcoin in that exe file. How do I access this bitcoin? They also created other bitcoin exe files with different names. Thank you

This sounds like a scam, or at least, an attempt to compromise your computer with malware.

Sending someone a Bitcoin transaction does NOT involve sending someone an executable file. It involves using the bitcoin network to send a bitcoin transaction that moves some amount of bitcoin to addresses owned by the transaction's participants.

You can generate receiving addresses, or send transactions of your own by utilizing bitcoin wallet software. You should download this software only after learning about how to use it, and finding a reputable place to download it from. In pretty much every case, you should not download and run a .exe file sent to you by an unknown person. If you have already done so, you should consider your computer compromised, and never use it as a bitcoin wallet otherwise, you will need to find a clean device for that purpose.

For more information on getting started with Bitcoin, see: I am new to Bitcoin, how can I get started?


What are the next forks of the Blockchain that have been announced? What are the next forks of the Blockchain that have been announced?
When will they occur?
Where can you be kept updated?

Many thanks for the replies!

David

What are the next forks of the Blockchain that have been announced?

Just to be clear, anyone can "announce a fork", but adoption and news of said fork depends on the market demand for the new coin. Most recently, Bitcoin was forked to create Bitcoin Cash (BCH).

Bitcoin SegWit2x (a bitcoin hard fork), Bitcoin gold (a bitcoin hard fork), and Bitcoin ABC (a Bitcoin Cash hard fork) are upcoming hard forks. (note: Bitcoin SegWit2x may or may not result in a currency split, depending on how miner support plays out)

  When will they occur?

Bitcoin SegWit2x at block number 494,784 (no way of knowing exact date) and Bitcoin ABC on November 13th, 2017. Expect many more in the future!

  Where can you be kept updated?

Twitter, reddit, or a google alert with keyword "Bitcoin" :)

Previous Forks:

Bitcoin Cash forked from Bitcoin on Aug 1st, 2017.
Bitcoin Gold forked from Bitcoin at block number 491,407


Is it okay to chain multiple unconfirmed transactions? Is it okay to chain and broadcast multiple unconfirmed transactions?
For example: I have two confirmed UTXOs UC1 and UC2. Using both as inputs, I then create and broadcast transaction T1, which outputs UT1. Then, using UT1 and another confirmed UTXO, UC3, I create and broadcast T2, which outputs UT2. I keep track of the last unconfirmed UTXO from the transactions I built and keep building and broadcasting new ones.
Secondly, will the chained transactions be mined at the same block?

In principle this will work, but Bitcoin Core by default limits such chains: a transaction will not enter a Bitcoin Core node's mempool if it has more than 25 ancestors, or more than 25 descendants.
There are downsides to long transaction chains in the face of swinging feerates. Firstly, if the feerates rise, you cannot simply bump a single more urgent transaction—you'd have to bump it and all of its ancestors. Secondly, transaction chaining is somewhat incompatible with RBF—bumping any of the prior transactions breaks all the later transactions because their inputs cease to exist and you have to pay enough fees to replace the fees of all the descendant transactions to get admitted to the mempool. Thirdly, if a node's mempool runs out of space, it'll drop low feerate transactions first. If one of your prior transactions gets dropped, the entire chain following it will be inadmissible to (default) mempools until we get something like package relay, or the mempool relaxes to a level where the transaction can be rebroadcast.
Ways to work around this are to always bump the parent transactions to the targeted feerate of follow-up transactions (which is not trivial to calculate and may lead to overpayment in the case of two children to the same ancestors), or to always have exactly one output from which you chain.
In the case that you have enough transaction volume to warrant transaction chaining, I would recommend that you rather use payment batching: delay withdrawals (or other payments) by a few minutes, but then do multiple in a single transaction. Payment batching has a much smaller blockweight footprint per payment (and thus lower fees per payment), makes UTXO management much easier, because you need fewer inputs per payment, have less funds in flight because you only create a single change output per batch instead of per payment, and can maybe forgo using unconfirmed inputs altogether, which allows you to use RBF and CPFP to bump transactions when they get delayed even when you start them off with much lower feerates.
Additionally, while chaining of transactions would start to break down due to the limits on ancestry sizes, payment batching just gets more efficient with higher volume.

Secondly, will the chained transactions be mined at the same block?

Yes, if the child transaction pays a higher feerate than its ancestors, they would likely be picked as a package based on the descendant feerate. If later transactions pay the same or a lower feerate, a parent may be included without children.


19 out of 24 words of BIP39 passphrase (brute-force last 5?) I have managed to lose 5 words of my 24 word Ledger Nano S recovery phrase. I have words 1-19 but I am missing words 20-24.
I have significant holdings on the wallet so would very much like to recover it if possible.
The passphrase is a BIP39 mnemonic (see https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki).
I have the bitcoin and ethereum public addresses for this mnemonic. I am wondering if it's feasible to brute force the passphrase.

Each word is 11 bits (2^11 = 2048 possible words).
The last (24th) word of the passphrase is of the following form [3 random bits][8 bit checksum].
Therefore I only have to check 2^(55 - 8) = 2^47 = 1.4x10^14 combinations.
I would have to compute SHA-512-HMAC with an iteration count of 2048.
As far as I understand, that means I'd have to compute 1.4*10^14 * 2048 = 2.87*10^17 hashes in total.

Is there any hardware out there designed for this? I am aware of ASICs that compute sha-256 hashes but not sha-512 hashes.
Perhaps I could tweak one to work with sha-512 since they are very similar.

Assuming a fairly typical ASIC hashrate of 1TH/s (10^12 hashes per second), I could exhaust the search space in 2.87*10^5 = 287000 seconds = 3.3 days. I'd probably get there sooner, of course (expected 1.65 days). Time is not something I am worried about. Even if I have to wait months, I don't mind - so if I can get 10GH/s at a reasonable price, that would be great.

I would really appreciate any help/information you could provide to help me out and make sure I haven't missed anything.
I could also use GPUs for this (I calculate I can run them at roughly $1/10TH - so it would cost me $28.7k to exhaust the search space, which I will do if there are no cheaper options).

Many thanks,
James

You have three options here:

Using a GPU implementation of the Gurnec´s Seed Recovery script
Use Hashcat / JTR, where PBKDF2-HMAC-SHA512  is already implemented.
Use brainflayer, similar to Gurnecs software, no multithread, no GPU.

Gurnec´s script runs at aproximately 40kh/s under my i7-8700k without OC. So if you only had lost the last 4 words of your seed, it will be 2^36 hashes.

2^36 h / 40.000 h/s = ~ 20 days

So it will take roughtly 3 weeks to test every combination.

But to crack the last 5 words of your seed it would take 2048 * 20 days.

On the other side according to the benchmarks PBKDF2-HMAC-SHA512 hashes at a 4.800 kh/s under a usual 8 x 1080´s rig so it should be possible to recover in several days the 5 missing words.

tldr; Implement GPU in btcrecover or brainflayer or understand how to make it work under Hashcat. Up to 3 words + checksum word doable in CPU, more need GPU.


Do wallet stealing viruses exist? After I install the bitcoin client, what are the risks of browsing the Internet? Can my wallet be stolen?

Are there any known viruses/websites etc....?

Money can now be stored in a single file inside your hard drive. This is a natural target for criminals so yes, there are virus that steal bitcoins.

If you trust a third party (like an ewallet) to hold your coins, you will not have to worry about wallet stealing virus nor about wallet security. Instead, you should protect your login credentials and/or use a two-factor authentication mechanism. Treat your e-wallet account the same way you treat your e-banking account.

I don't know of any dangerous websites, but there was a report of a bitcoin trojan by Symantec on June 2011.


Do I need to have a full node to create an online bitcoin wallet I am creating an online exchange website. I need to have a reliable bitcoin wallet on my website.

Do I need to have a full node to create an online bitcoin wallet?

If you need a reliable wallet, then you should run a full node rather than trusting a third party service or running a light node.


Do transactions with null data take longer to confirm? I was under the impression that null-data transactions were standard, but whenever I try to broadcast one it takes a while for it to appear in a block.

I tested this by broadcasting 2 transactions with same fees and same priority. The standard one got picked up in the next block, while the null-data one has yet to appear in a block (there's been 3 non-full blocks mined so far).

example tx: https://live.blockcypher.com/btc/tx/c0b0de8662054cadd461b488676a374f8f962c91612070e8e23b95d108d36217/

Am I doing anything wrong to make this transaction non-standard?

Not all miners accept transactions with null-data (OP_RETURN)
outputs
Not all nodes relay such transactions
Are you sure that your null-data transaction is standard (for clients 0.9.x+) ?

UPD: your output is 6a74686973206973206120746573740d0a and decoded to:

OP_RETURN // 6a
OP_DEPTH  // 74
OP_ENDIF  // 68 ... oups!

This is non-standard output. Because null-data output should contain only one OP_PUSH operation, not an arbitrary bytes


How do we prevent the Test network from being misrepresented as production? I'm concerned that people new to Bitcoin may not be aware that the test network exists, and the new users will end up "paying" for Bitcoins that are essentially worthless.

What protections are in place (or should be in place) to prevent a vulture capitalist from selling coins that can't cross between networks?

Should we openly reject offers (or the consumer demand) for coins on the test network?  ... the main idea is that the thought leaders of the Bitcoin initiative want to protect their investment in the network and prevent dilution though potential bad marketing this "counterfeit" network provides.

So again, the question is, what actions should we take with regard to the test network and questions/needs regarding it?  How can we ensure that it doesn't take on a monetary value of its own (or act as a negative influence on the prod network)

The main precaution against such practices should be the main client clearly stating that it is operating on testnet and perhaps with addition "for testing purposes only. Get free testing bitcoins at testnet faucet". This would protect some buyers, but not all (those that would be perhaps scammed into using a testnet eWallet or something).

As for why one shouldn't assign any value to testnet bitcoins, I would argue that the main reason is that the testnet has a tendency of being reset from the very beginning. Currently we are at testnet 3 as far as I remember, and there is nothing stopping the development team from starting a new testnet without much warning.

All in all, if people can be convinced to buy testnet bitcoins, there is little one can do.


What are the internal details of GetWork() .. the foundation of Bitcoin mining? According to this answer GetWork() sends "a chunk of data containing the block data, including the randomized bits, and the nonce (the bit which the miner changes)."

Can anyone provide details on that logic?  For example:

What transactions are included and which aren't?
What ordering of transactions occur?
Is it likely that multiple solo or pooled miners are mining a different set of transactions?
If latency (or bad network connectivity)  were to cause transactions to be delayed, and added to a fork that is discarded, will they be re-added to the next GetWork() request?

You can find some examples of the GetWork protocol here.

Generally, the pool provides a block header that is to be hashed with various nonces, as well as some additional information, such as:

hash1, which is always "0000000000000000000000000000000000000000000000000000000000000000000000800000000 0000000000000000000000000000000000000000000010000"
midstate (deprecated), a value calculated by hashing half of the block header, used to speed up the process. Midstate is deprecated, as it is redundant data that can be calculated by the miner.
target - the target that is to be used to determine if the header is hashed correctly
Various other protocol extensions

The pool has to keep a track of the various block headers sent, as well as their corresponding blocks.

Generally, the transactions that are included in the block are all the transactions that the pool knows about (with some exceptions, for example some pools exclude 0 fee transactions altogether).
The order of the transactions can be random, but the coinbase transaction is most often the first transaction in the block.
Most miners will work on different sets of transactions, but most often it will just differ by the coinbase transaction or their order.
If a transaction is included in a block that gets overwritten by a fork it will be be treated as a new transaction to be considered for inclusion in the block. Provided there was no double-spend attempt, it should be included in the future blocks.


Why does bitcoin have so many digits if I cannot move anything freely under 10000 satoshi? So I have a wallet which has a balance of BTC 0.00005493.

Even when trying to send these last bitcoin with a custom tx fee (1000 satoshi vs. the recommended 10000) Blockchain.info gives an error saying it is not possible to do so.

I know I can use a script called Dust-B-Gone to destroy these "small" amounts of bitcoin but I don't see the point. Why make bitcoins so divisible if anything under 10000 satoshi cannot even be moved around freely?

10000 satoshi is the current equivalent of a USD/EUR 5 cents coin! Are they not worth anything in cyberspace?

My assumption is that the limitation is set by BlockChain.info itself, to protect the non-educated users for doing transactions which may take days to confirm.

However raw Bitcoin protocol supports transaction with any amount and any fee. But because transactions are confirmed by miners they might not have economical incentive to care about dust-like transactions and thus the transaction confirmation time might not make sense anymore for the person who does the transaction.

More info: What's the minimum transaction with bitcoin?

Bitcoin transaction fee future:

https://bitcoinfoundation.org/2014/07/floating-fees-for-0-10/

More discussion about Bitcoin and microtransactions:

https://bitcointalk.org/index.php?topic=397403.0


Which data should be used in order to detect addresses to be used for fraud? I’d like to analyse bitcoin blockchain in order to detect addresses used for fraud, like money laundering. Since I cannot get any addresses info that was really used for fraud, I need to analyse which kind of address have tendency to be used for fraud.

Now, I’m just wondering which parameters I should use. I’ve tried to use period of transactions and average of transactions’ amount, but it seemed not to make sense. If you have any idea, could you teach that?

Fraud and money laundering are two different things.  Fraud, or accepting or spending money under false pretenses, would be very difficult to detect on the blockchain because it requires outside knowledge.  The way banks detect fraud is by using the context of what was purchased, and where.  The blockchain doesn't contain that information, so supplemental data would be required for detection.  Most fraud would appear identical to legitimate transactions on the blockchain.

Money laundering, however, can be detected...just not very well.  Mixing services are what you'd have to look for, since they would be the most obvious way to obfuscate the origin of some bitcoin. These could be detected by looking for chains of transactions with large numbers of inputs and outputs that are then spent shortly thereafter by other transactions with large numbers of inputs and outputs.  Mixing services generally tumble and mix coins together like this for several hours before they finally come to rest in a UTXO.

However, there are several problems to this approach.  First, mixing services are not exclusively used by criminals...not by a longshot.  Many people use them simply so that whomever paid them bitcoin can't later look up how they spent it.  Second, there are many other types of services that will have a very similar pattern on the blockchain.  Payment processors, exchanges, and web wallets all bundle inputs and outputs together in order to minimize transaction fees.  They all create similar-looking chains of transactions.  Trying to detect money laundering in this fashion will result in a rather hefty paradox of the false positives, meaning it will be difficult for you to derive accurate conclusions from your findings.


PHP script to create private key & public address Does anyone have an PHP code that can do what is done on this website:

https://www.bitaddress.org

Namely create private keys and associated public addresses?

I enjoy using this package :

Uniform Server Key Generator

And with it running, you can just execute : openssl_pkey_new(); to generate a private/public key set.


Why do some wallets not need syncing? I recently downloaded the Bitcoin Core wallet, and was mildly inconvenienced by the fact that I had to spend 4 days downloading 200 GB, but I just beared with it.

However, I soon discovered that some wallets like Electrum and Bitcoin Wallet don't need syncing at all, which makes me curious about why some wallets need syncing and others don't, and what are the benefits to syncing as it takes up a lot of space, time, and bandwidth?

In brief, so-called lightweight wallets have to trust the nodes they communicate with, full-node wallets don't have to trust other nodes.

Bitcoin's creator, Satoshi Nakamoto, wrote about Simplified Payment Verification (SPV):

  As such, the verification is reliable as long as honest nodes control the network, but is more
  vulnerable if the network is overpowered by an attacker. While network nodes can verify
  transactions for themselves, the simplified method can be fooled by an attacker's fabricated
  transactions for as long as the attacker can continue to overpower the network.


aftet sending btc with bitcoin core can i exit after wards? I have bitcoin core installed on windows with full node running.
If I send bitcoin do I need to wait its confirmation before exiting bitcoin core ? can I exit in seconds afterward will it be confirmed ?

Once successfully broadcast, your transaction will be entered into the mempools of other nodes on the network, and it will eventually be confirmed in a block when it's fee-rate becomes competitive. This will occur whether or not you keep your wallet/node online in the meantime. So once your transaction is broadcast to the network you can exit the program without any issue.


What will happen when the blockchain size will reach 1 Tb? Or 10 Tb? My question is more about bitcoin client (bitcoind). Will it still be working fine or maybe something will go wrong? I mean, maybe LevelDB can't handle this amount of data correctly?

The database itself does not hold the blockchain. LevelDB is really only used to index where blocks are stored on disk, to store the UTXO set, and to store the current chainstate. So if the blockchain were to be terabytes in size, it should be fine.

The problem would actually be downloading the blockchain and verifying all of that data within a reasonable amount of time.


Can old wallets redeem segwit outputs it receives? If so how? There's some conflicting information out there on whether this is true or not. I'm looking for a technical answer to this in the hopes of clearing up future potential confusion over the matter.

The main question is: Can old non-upgraded non-segwit aware wallets redeem a segwit output it receives?

Segwit output is defined as an outpoint having a P2WPKH or P2WSH structure as outline in bip141 in its scriptPub section.

As I understand it, when an old wallet receives a segwit transaction meant for it(assume tx is already mined in a block), it will see 0 <20-byte hash>(assuming P2WPKH) in the scriptPub from this segwit transaction. Interpreting this under non-segwit rules, old wallets will see this as anyone_can_spend -- the top of the script stack always evaluates to truthy regardless of what's provided in the scriptSig in the redeeming transaction.

The only way for the wallet to use/redeem this segwit output is to construct a transaction as outline in the bip. That is, it constructs the transaction specifying prev_txid and index as normal, an empty scriptSig and a witness program + witness hash. But a non-segwit aware wallet won't know how to construct the last part of this. Without that part, segwit validating nodes and miners will have to reject this transaction.

So from this, it naturally follows that old non-segwit wallets should not be able to spend segwit transactions.

Note, this question is not about:

old wallets sending non-segwit inputs -> to a segwit output.
segwit wallets sending segwit inputs -> to a non-segwit output.

So from this, it naturally follows that old non-segwit wallets should not be able to spend segwit transactions.

That is correct. A wallet that does not know anything about segwit will be unable to construct a valid transaction input that spends a segwit output.

However, the premise of the question

  when an old wallet receives a segwit transaction meant for it

doesn't make sense either. If a wallet does not know about segwit, it will never construct a segwit address to give out. So, by definition, there cannot be any segwit output meant for it.

It is always the receiver who decides what exact outputs to accept money on - and this is what gets encoded into an address.


Is it possible to configure bitcoind to allocate blocks in larger "chunks"? In the bitcoind log there are many entries similar to this:

Pre-allocating up to position 0x200000 in rev02037.dat

There are often several messages regarding pre-allocation of the same file. This is concerning because copy-on-write filesystems (such as BTRFS, in my case) have to allocate new extents when files are written in this manner. Such writes cause an increase in filesystem metadata block consumption, which of course eats away at the overall available storage. For example, here are the size and number of extents consumed by two of the files:

# ls -lh *02036.dat
-rw------- 1 bitcoin bitcoin 128M Apr 16 16:49 blk02036.dat
-rw------- 1 bitcoin bitcoin  17M Apr 16 16:49 rev02036.dat

# filefrag *02036.dat
blk02036.dat: 87 extents found
rev02036.dat: 103 extent found

Both files consume more extents than what they actually need considering their sizes. After defragging them with btrfs filesystem defrag they were rewritten and now only consume one extent each.

Since the blk and rev files each tend to be roughly the same size, I prefer to have bitcoind perform the allocations such that it's most likely to only need to perform one pre-allocation. Is there such a configuration option available?

If you referring to the blkxxx.dat file it will always have a maximum size of 128 MB which is defined in the bitcoin the source file validations.h

static const unsigned int MAX_BLOCKFILE_SIZE = 0x8000000; // 128 MiB

Also in this file you can see that the maximum pre-allocation chunk size fixed.

static const unsigned int BLOCKFILE_CHUNK_SIZE = 0x1000000; // 16 MiB


How can a sender know receiver's public key when creating "Pay To Public Key" tx? When you create a "Pay To Public Key" transaction, you need to know the receiver's public key. How can we know receiver's public key?

You can get public key hash from address like this, but I'm not sure how to get public key.

FYI: scriptPubkey in P2PK
scriptPubKey:  OP_CHECKSIG

In most cases, if you really want to use a P2PK transaction, you would have to ask the receiver to tell you their public key.

You can't determine the public key from the address alone.   The address is a hash of the public key, and hash functions are one-way.  So if all you have is an address, you can't use a P2PK transaction.

If the receiver has previously had other transactions sent to the desired address, and has spent at least one of those transactions, then the public key was included as part of the spending transaction's signature.  So in that case, the public key is in the blockchain, and you could use it to make a P2PK transaction.

I'm not sure why you would bother, though.  P2PK transactions are pretty much obsolete, and P2PKH should be used for all normal purposes.


Buy and selling Bitcoin in different currencies If I were to purchase one Bitcoin in Australian (AUD) that is in the tens of thousands of dollars as of this moment, would I be able to sell this bitcoin in American (USD), which is in the thousands? Subsequently making profit from the process as the US dollar is worth more than the Australian.

Thanks

No, the price in each currency would have the exchange rate factored into it, you would most likely make a loss due to exchange fees converting from AUD to USD and back after you buy/sell. (assuming the price of bitcoin was stable through the whole process)


ip:port node list for testnet? https://blockchain.info/ip-log

shows the ip:port for bitcoin nodes

where can I find nodes for testnet?

Google is coming up dry!

After many hours spent; I tried what seemed the logical approach: use a main-net nodes ip but change the port from 8333 to 8332 (but, no luck, not connecting to testnet!)

also tried 18332   :/

I am a new company, I want to test!

I am using this https://github.com/sebicas/bitcoin-sniffer to realize new-transactions and new-blocks real time on main-net but I am failing to do so on testnet (where do I connect? please)

This information should be instantly available and easy to find!

Then we wonder why bitcoin is not adopted!

The information is no where on the net!!

While literally the whole planet (99% of everyone) is a newbie (why is this not readily accessible info!??)

I am at a loss for words ...

I currently connect successfully to bitcoin main-net using:

{host:'109.123.116.24',port:8333}

#!/bin/bash

for i in testnet-seed.bitcoin.jonasschnelli.ch \
    seed.tbtc.petertodd.org \
    testnet-seed.bluematt.me \
    testnet-seed.bitcoin.schildbach.de
do
    nslookup $i 2>&1 | grep Address | cut -d' ' -f2
done

Testnet is port 18333 by default. Or run a testnet node and check what it connects to.


Does a blockchain become opaque if it enable's schnorr-signatures, and require trust in the code? When you sign a transaction with schnorr-signatures, it does not include the pubkey in the transaction data.

1)Does this mean the input addresses become unknown, aka creating a opaque blockchain ?

2) How can one make sure that for example bitcoin still only has 21 million bitcoins ?

3) How does the UTXO set updated and than later on verified by others, seeing only the output address is know.

When you sign a transaction with schnorr-signatures, it does not include the pubkey in the transaction data.

What? Schnorr signature validation still need public keys.

  1)Does this mean the input addresses become unknown, aka creating a opaque blockchain ?

No, there are still addresses just like before (or more technically: every input still explicitly refers to a single identifiable previous output which is being spent in its entirety)

  2) How can one make sure that for example bitcoin still only has 21 million bitcoins ?

By summing up the value of all UTXOs.

  3) How does the UTXO set updated and than later on verified by others, seeing only the output address is know.

Nothing is changed. The UTXO set still contains entries, each of which has a txid, amount, and scriptPubKey. Now you just need a Schnorr signature to spend them.


Is it possible to get the standard private key from a too long private key? We know the private key should not be longer than 256 bits.
But if I choose one longer key X, for example 300 bits key, and use it generate a pub key and address. Can I use X to generate the standard private key Y to signature the address properly?

The question doesn't make a lot of sense. If you have something which is not a valid private key, you cannot generate a public key and an address from it.

That said, given a 300-bit string, you can interpret it as a private key in any way you want. For example, you can treat it as an integer, and the corresponding private key will be the remainder of this number divided by the order of the group. You can use this private key for both creating the address and later signing. And if you want, nothing is stopping you from storing the original 300-bit string, to be converted to the private key whenever needed. Not much sense in doing any of this, though.


sent BCC to BTC wallet I have accidentally sent BCC from bittrex to my own BTC wallet on coinbase.
Both wallets are mine - how can I get (find out) my private keys to swap them that I get my money from wrong chain? And how can I use these private keys?
Transaction is seen here:

https://bitinfocharts.com/bitcoin%20cash/tx/64c577f636882bf8b0160aaed17da458f4f6c350463426eda11b63b003059ce0

If it was your wallet, you'd have no issue, a BTC address can hold and spend BCC, but you sent it to coinbase's wallet in effect which you do not have the private keys for.

By Jan 2018, they have said they will support BCC. I would hope that would be when you would see it, but no guarantees as they operate off-chain, who knows how they work internally. So I would contact their support for clarification.


What is the "zeitgeist attack"? Does it affect all blockchain technologies? What exactly is this attack? It would be nice to have a good explanation of how it works and which chains can be effected by this. Does it apply to the bitcoin main chain, or only the newer and smaller alternative chains?

This is a 51% attack where the attacker sets the block timestamps artificially to lower the difficulty, allowing him to profit more coins than his hash rate would warrant. It works because the difficulty adjustment formula is based purely on timestamps that can be chosen quite freely by the attacker. In particular, the timestamps are not required to be in increasing order. ArtForz explains the attack in detail here.

This attack was used against the new Geist Geld block chain. Geist Geld difficulty adjusts every 16 blocks making the chain particularly vulnerable against this attack. An attacker targeting Bitcoin would have to mine a full set of 2016 blocks at the current difficulty before starting to get any benefit compared to a "normal" 51% attack.


How can I verify my wallet.dat file against an older version? I recently ran into an issue with an unsafe shutdown corruption on an NTFS partition in such a way that the files all existed, but chkdsk had to be run to verify some non-essential files.

My peers.dat file was the only file chkdsk complained about, but I verified my blockchain to be sure. How can I ensure my private keys in my current wallet.dat match the ones in my backup? I don't believe it is corrupt (At least Bitcoin-QT hasn't complained yet), but I'd rather be safe.

You can use the dumpwallet command and export the private keys to a text file. Do this for both wallets and then compare the text files. You should see the same addresses and private keys. If you do not, then something has gotten corrupted.


How to scale JSON-RPC I'm trying to scale getrawtransaction calls from bitcoind, without manually parsing the .dat files.

I've tried:

rpcworkqueue=512 (no difference)
rpcthreads=128 (no difference)
par=8 (no difference)
passing the blockhash with every call to avoid searching the txindex (big difference)
using JSON rpc batching (big difference)
having two separate instances on the same pc and rotating requests (double speed, but costs 200GB)

It seems that a bitcoind will only ever devote 1 core of the cpu to JSON RPC, so when it gets to 100% the only way to scale is with another instance. Unfortunately my server has 24 cores at 2.1GHZ.

Does anyone know if it's possible to have two instances of bitcoind running in the same folder. I.E. one instance is connected to the network and the other instance is running in a read only mode.

Or is is possible to allocate multiple cores(not threads) to JSON rpc

Any help is appreciated, thank you.

Or is is possible to allocate multiple cores(not threads) to JSON rpc

No. The problem is not to do with thread or core allocation. Rather Bitcoin Core makes use of locks to keep the chain state consistent when multiple threads may access it. In this case, you will need to access the chain state to get transactions so multiple getrawtransaction calls cannot really be run in parallel (locks aren't held for the entire call, but they are held for the parts that matter). So adding more cores or threads won't help at all.

The only thing that does help is to use the blockhash parameter. Without it, getrawtransaction will wait until Bitcoin Core isn't in the middle of processing multiple blocks, and the check and wait for this takes some time. However if you specify the blockhash, it will know immediately which block to look in and quickly look it up, no blocking or waiting for blocks to be processed. So this will be faster than without.

Otherwise there's nothing else that you can do.


What do numbers on Coinmarket cap mean? On Coinmarket cap there are volumes listed on http://coinmarketcap.com/currencies/bitcoin/#markets but there are some large numbers at the bottom of the page which dont seem to be included in the daily volume total at the top of the page.

What do these numbers mean?

You're looking at the entries that are in gray and marked with an asterisk?  At the very bottom of the page you can see the meaning of the asterisk: "Volume Excluded - No Trading Fees".

It looks like these entries are for exchanges that don't charge a fee to trade.  Their volume figures could be inflated.  Someone on those exchanges could trade Bitcoin for fiat currency and then trade it right back at no cost, a transaction that has no net effect.  This "volume" doesn't really represent someone who had Bitcoin and wanted fiat or vice versa.  So Coinmarketcap has decided not to include those exchanges in their volume total, since they presumably think it could distort the total.


How easy is it to solo-mine new altcoins? It seems to be pretty clear that CPU/GPU mining is obsolete for the big fellas (Litecoin, Bitcoin, Ethereum, arguably Dogecoin). This is a bummer for beginners like myself cause I'm keen to dive in and get my PC grinding away at the digital coalface like it's 2009.

I've decided that I want to mine a bunch of altcoins and completely disregard short-term profitability (mining BTC wasn't profitable in 2009, but look at how much it's worth now!).

My actual question: Exactly how does one go about solo mining altcoins? Is the process the same as mining bitcoin, litecoin, dogecoin, ethereum etc? What program do you need to download and how easy is it to configure? I ask because I have had zero luck even getting set up with mining these more mainstream coins. I was really hoping for a "download program, punch in your wallet code and go" situation, but instead I've had to muck around with mining pools and heaps of complicated settings and I can never get it working. Some guidance would be appreciated

Exactly how does one go about solo mining altcoins? Is the process the same as mining bitcoin, litecoin, dogecoin, ethereum etc?

The process is generally the same for most Proof of Work coins. You download a mining software such as cgminer or bfgminer, and configure it to get its work information from a coin daemon that you run. Most modern coin daemons are forked from a version of Bitcoin Core that has the getblocktemplate protocol implemented. Most mining software also support the getblocktemplate protocol. Thus they can use the getblocktemplate protocol for getting their block information in order to mine a block.

  but instead I've had to muck around with mining pools and heaps of complicated settings and I can never get it working

When solo mining, you don't need to mess around with mining pools. You will need to handle complicated settings as these mining software are largely command line software. You can check their help pages (by using the --help option) and look for the options that you want. These are generally ones for setting a username, password, server url, and address. Those are the basic options necessary.


Is there a way to get the address of associated with a transaction input with bitcoinj? If I was not mistaken, with transactioninput.getConnectedOutput(), the output which is used for the input is obtained.

But what to do later? There seem to be two relevant methods: getAddressFromP2PKHScript(NetworkParameters networkParameters) and getAddressFromP2SH(NetworkParameters networkParameters). Am I correct that either one of them will give me the correct address?

Also how to obtain the addresses involved in multisignature transaction with bitcoinj?

Yes, but be aware that there is no concept of a "from address" in Bitcoin. So you should always be prepared for unknown script types. For example, the sender could also be using P2PK, the oldest standardized form of payment in Bitcoin.


If I buy an ASIC miner and run it at home, do I become a Bitcoin node? I tried to find the Bitlist visualization as mentioned in the documentary The Rise and Rise of Bitcoin, but could not

but instead found https://bitnodes.io/

It says there are 9741 nodes.  Does that mean if I buy an ASIC miner and set it up, then I become a node and that would make it become 9742?  But the usual practice is said to be joining a mining pool, so if I join one, then I won't be one extra node but will merge into one?

If I buy an ASIC miner and run it at home, do I become a Bitcoin node?

Miners and full nodes are different. If you run full node, you add to the already running nodes.
What is the difference between a miner and a full node?
Is a miner running a full node?

It says there are 9741 nodes.

This pie chart shows more than 70k nodes: https://luke.dashjr.org/programs/bitcoin/files/charts/software.html

Related Q&A: How exactly does "CoinDance" determine the current number of public Bitcoin nodes?

Does that mean if I buy an ASIC miner and set it up, then I become a node?

No


Meaning of "fungibility" in "Zerocash (Zcash)"? According to the following article, Zcash provide a high level of "fungibility". compared to other crypto-currencies.

Article link: https://www.investopedia.com/terms/z/zcash.asp

fungibility definition in Oxford dictionary:

(of goods contracted for without an individual specimen being specified) replaceable by another identical item; mutually interchangeable.

So, according to this definition, fungibility is NOT related to "privacy" (this is main concept Zcash provides). So, why other crypto-currencies such as Bitcoin and Ethereum does NOT have the same level of fungibility of Zcash?

With money, privacy implies fungibility. If all transactions that take place using a particular currency is public, then people will know whether some money that someone is sending them was part of an illegal transaction in the past. This means that they can choose to not accept the money because of its link to illegal activities. This violates fungibility as not all units of the currency are treated the same way. Thus one unit of the currency cannot be replaced by another unit and necessarily have the same value.

If everything were private, then it is impossible to know whether some money was involved in illegal currencies. In this case, the vendor would have to choose to either not accept the currency entirely, or always accept the currency. They cannot pick and choose which particular units they accept. This makes it fungible as all units of the currency must be treated identically. Thus one unit of the currency can be replaced with another unit and still have the same value.

For currencies like Bitcoin, all transaction history is public. Thus Bitcoin is less fungible than zcash or monero where some or all transactions are private. We have seen this before with Bitcoin: some people will pay a premium in order to get newly generated coins which are provably clean. In other cases, some vendors have refused to honor deposits of coins that have come from large thefts. More private currencies such as zcash or monero do not have these problems as their private transactions hide history so vendors do not know whether the coins they receive are clean or dirty.

Note that while zcash and monero may be more fungible, they still have their own issues; there's a tradeoff. Furthermore, zcash isn't really more fungible than Bitcoin as no one actually uses their stealth addresses. So most transactions are public, and the ones that are hidden using stealth addresses are very obvious and special (i.e. probably up to no good) since it is not commonly used.


Why do people mine bitcoins when they are losing 20% a month? Why do people continue to mine bitcoins independently of their hash rate if their ROI loses 20% every month at the going difficulty rate and the exchange rate BTC/USD is at best flat?

Most miners are speculating that the future value of a bitcoin will be greater than the present value. No profit-oriented miner is happy about the current rate of increase in difficulty. Also, the current rate of difficulty is not a one-way phenomenon. Many factors could cause the difficulty to decrease, such as a flaw that was perceived to be un-fixable. If confidence in bitcoin in general were to drop, mining difficulty would drop as well as mining power and money fled to other virtual currencies.

Other people genuinely want to create an alternate payment network and/or currency and see their contribution in those terms, and not in monetary terms. For those people the price of bitcoins is not their primary motivation.


How to extract maximum value from a 51% attack If an attacker were to gain 51% of the network, they can essentially forge arbitrary transactions double spend. But that would quickly lead to a completely loss of trust in bitcoin. In fact, that would probably happen as soon as someone was suspected of having a majority.

What strategies could a majority-attacker use to extract maximum value? What could they do without detection?

If an attacker were to gain 51% of the network, they can essentially forge arbitrary transactions.

With control over a majority of hash rate (either directly, or by using something like selfish mining to incentivize other miners to follow your policies), you can only forge arbitrary transactions for SPV clients.

For full nodes, you can only change your own confirmed payments, or (if you go more than 100 blocks back) eliminate any transactions from the chain which descend from recent coinbase (generation) transactions.

  In fact, that [a completely loss of trust in Bitcoin] would probably happen as soon as someone was suspected of having a majority.

This contradicts history, as Ghash.io exceeded 51% in 2014.  This was controversial, but did not seem to affect Bitcoin's exchange rate at the time nor did pool miners immediately leave the Ghash.io pool.

  What strategies could a majority-attacker use to extract maximum value? What could they do without detection?

Again, I think we can look at history for a useful example.  Before Ghash.io obtained it's 51% majority, back when it had about 35%, it used double spends to steal about $100,000 USD worth of bitcoin from gambling site Betcoin Dice.

The attack seems to have worked like this:

The attacker placed an on-chain bet.
If they won, they worked to confirm that transaction.
If the lost, they worked to confirmed an alternative version of the transaction that returned the money to themselves.

This effectively meant that the attacker won significantly more often than they should have by Betcoin Dice's probability expectations.

Back to your question, this was obviously not undetectable because I'm linking to a BitcoinTalk post about it---but it was something that didn't disrupt anyone outside of Betcoin Dice's operators, and it worried such a small part of the community that Ghash.io was later allowed to control a majority of hash rate despite this prior behavior.

(Note: Ghash.io claimed that the attackers had compromised them, and that the attack was not initiated by them even though it used their resources.  I don't think it matters either way: I think it's an import historical example of the dangers of centralized mining.)

The attack above worked on unconfirmed transactions, which Betcoin Dice foolishly accepted at the time, but with a large share of hash rate, the attack can be reasonably attempted against even confirmed transactions.

An attacker with 35% of hash rate has a high chance of being able to reverse a single-confirmed transaction; plenty high enough to tip most gambling games in their favor enough to extract a large amount of value over repeated attempts.  And reversing a single-confirmation from time to time can be somewhat hard to detect because one-block accidental forks (orphans/stale blocks) happen moderately often.

Nakamoto's Bitcoin paper says a 30% attacker can succeed at reversing 5 blocks 17.7% of the time, which is still plenty enough to give a reasonable edge in many low-margin online gambling games---although a 5-block fork would stand out in the stale block data.

The other attack a 51% miner, or even a 30% selfish miner, can perform is making stale any blocks the miner doesn't like.  This can allow them to ultimately extend their 30% or greater control to 100%, ensuring they profitably receive all block subsidies and transaction fees.

A clever miner performing this strategy would make themselves look like multiple pools all below the danger threshold and would slowly put their competition out of business by not making too many blocks stale at once.

Alternatively, I've heard it proposed that they could help advocate changing the system in ways that would allow them to put other miners out of business much faster, such as by raising mining's fixed costs in way that they could easily bear as a large miner but which their smaller competition could not.


Bitcoin's real-time Buy and Sell price API What is the API to get Bitcoin's real-time Buy price and sell price on my site? and how can get it from to implement in my website developed in PHP.

Bitcoin does not have one single buy and sell price. Bitcoins are exchanged on many different exchanges, each keeping track of their own market price.

However, BitcoinCharts.com has a useful API that summarises many of the largest exchanges according to their trading volume. You could use that to display the Bitcoin price on your website.


Sent Bitcoin Cash to Coinbase vallet I wanted to convert the Bitcoin to Bitcoin Cash. Using changelly I did that succefully but sent it back to the same Bitcoin Wallet. So, that mean did I lose my money? I am completely new to this. Is there anything I can do?

bitcoin sent from coinbase will come from a wallet they control. if you sent bitcoin or bitcoin cash back to it they now control those funds.

the proper course of action is to document the process, what addresses was used, which transaction ids was assigned and what blocks did the transactions get mined in, then contact coinbase customer support and request that they help forward those funds to an address you control.

do it as soon as you can, but be aware that you might have to wait until coinbase supports BCH to withdraw them.


How to convert PSBT transaction (base64) to raw/serialized (hex) transaction? Bitcoin Core's CLI has a converttopsbt command used to convert from raw transaction to PSBT transaction but how is it possible to convert from PSBT transaction to raw transaction using Bitcoin Core (or if not possible using another client like Electrum)?
Example of a PSBT transaction (testnet):

cHNidP8BAHECAAAAAW4TCBaK74DxafvrRdWpF32Gg5eVRs1DJX9YHz2v9jduAQAAAAD9////AugDAAAAAAAAFgAUlZYmgEZt2xztxXvON/MpazPDg7h4fAEAAAAAABYAFAos5SNG8ZD0bYuTY1T3lwWbt6XcC+8cAAABAN4CAAAAAAEBtxgls3RExZgey5D+Apcb7GIFdINeRlmY05VOQwZ7LtoBAAAAAP3///8CCgAAAAAAAAAWABSdRgMHmJrQiGsOWa+Ue5R6hDsGJlCBAQAAAAAAFgAUgIISApOAGqWF1K6dU+ANtN8F53kCRzBEAiAL3rtr0r5eB/U3HFRFKEWCJ/MuHEIetMi/5W/Pdw2tOAIgNSY0WkLk1lDHFxJIYgISnlr/0ZZu6YNExTLAGmgoca4BIQNc7DqYfFYpf3ejWJHMoMS+SGNnQh+QcpG8DXyPT1mnHgPvHAAiBgIDWK/NdMjNwkMIwK+D39jKrQQdd8QVK/Kmur/hQm0ACQy0x7YSAQAAAAEAAAAAIgICoL287OJyWbD9uT1ATxNQaD9VqKoAKdvQ6mRatmnd5zMMtMe2EgAAAAABAAAAACICAkaw3TsIUUYODFTLGB5brpjvHFDF7dG63Mg9m/KFHmMzDLTHthIBAAAAAgAAAAA=

Yes, once the PSBT is finalized you can extract a fully-signed raw transaction from it (using the finalizepsbt RPC). As your PSBT does not have signatures yet, there is no point in constructing an actual transaction from it yet.


What is to stop a malicious attacker only mining 1 transaction per block? Even without 51% of the mining power, if you have say 5% of mining power and you deliberately only mine 1 transaction in your block aren't you going to create a traffic jam of transactions and effectively DDOS the network? (And the 1 transaction could be a movement of the attackers own funds backward and forward).

Roughly 5% of blocks are going to get no useful transactions processed.

With 5% of mining power you only mine 1 every 20 blocks. "The attacker" would somewhat slow the network down, but they wouldn't stop it from working. He would need to pay for all the harware he is using and he would deliberately loose the potential 0.5 BTC per block in fees.


question on Armory bitcoin wallet scripting Has anyone built the Armory Bitcoin wallet successfully and created the wallet using python and Armory as a library instead of using the GUI?

Have you seen this page on the Armory website? It describes how to do what it is you appear to be asking to do.

First you import everything from armoryengine.ALL.

You have PyBtcWallet().readWalletFile(filename) to get a wallet object. Then you can do things with the wallet object.

You can also use TheBDM (Block Data Manager) to register callbacks for certain signals, such as new blocks.


Bitcoin-qt Not Syncing with errors My bitcoin-qt (on ubuntu installed via the PPA) just plain won't sync. It's been running for days and no/little progress past ~82256 blocks remaining...

I've also got an error displaying "Warning: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade."

I've got a good unrestricted internet connection and plenty of RAM, CPU and HDD.

I even tried loading the client with instructions on here (bootstrapping)  http://eu2.bitcoincharts.com/blockchain/ to no end.

I've also purged all files from the .bitcoin directory (excluding wallet.dat of course) and started again to no end.

Can someone help?

{
"version" : 80100,
"protocolversion" : 70001,
"walletversion" : 60000,
"balance" : 0.00000000,
"blocks" : 149874,
"connections" : 11,
"proxy" : "",
"difficulty" : 1468195.42722083,
"testnet" : false,
"keypoololdest" : 1337298958,
"keypoolsize" : 100,
"paytxfee" : 0.00000000,
"unlocked_until" : 0,
"errors" : "Warning: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade."
}

Try starting with the -reindex command-line flag. That will rebuild the database on disk (as it seems corrupted), without redownloading the blocks you already have.

It's strange that wiping your datadir didn't help though.


Is accepting Bitcoin as a gift save? I've got certain amount of mBTC from a person I don't know well (we've never met in person, although we chat online from time to time), in the form of them giving me the key for getting access to the wallet. They say, it's just a Christmas gift; and I don't see any obvious signs of scam here (they don't ask me to do anything in exchange and say that I don't owe anything).
But I'm still anxious, as in my world people don't give away money like that. I have only basic understanding of Bitcoin. Is it possible, that I'll run into trouble here? Like, if this person got these money through some illegal activities, could the trace lead now to me instead of them? What else should I look into? (besides our local laws regarding using cryptocurrency and paying taxes, I'm looking into it now)

in the form of them giving me the key for getting access to the wallet.

Something I associate with scams.
If this is an online wallet (custodial) this sort of thing is normally explicitly forbidden in the terms and conditions. And for good reasons.
If it is a more normal wallet, it is an idiotic way of donating money. That by itself is suspicious.

Is it possible, that I'll run into trouble here?

It is possible, but there's insufficient information to guess how unlikely it is.
Suppose that the wallet (key) is stolen or that money that is the proceeds of crime will be routed through it. It is possible that, having accessed or used the wallet you will be traced and held responsible for money laundering, handling stolen money or accused of complicity in crime.
Maybe they're hoping you don't know that changing the password won't lock them out of the wallet and that sometime in the future you'll add money to that wallet that they will then steal.
Maybe they're grooming you and will later ask you to perform some sort of favour for them involving the use of that wallet in a way that helps them but lands you with debt or a day in a police interview room?
Or it may be the donor is just appallingly inept. Or thinks you are?
In the end it doesn't matter, you don't have to work out the exact way they are trying to trick you. If it seems at all suspicious, keep well clear and don't get involved at all.
The only relatively safe way to accept Bitcoin as a gift is to download a popular respected wallet to a clean PC or phone, don't give anyone else any details at all about your wallet apart from a single-use bitcoin address they can transfer some amount of Bitcoin to. Never accept wallets or keys from other people.


Failed transaction, but my wallet shows 0 balance I made a mistake 10 days ago when I sent some bitcoin from my wallet to another one. The problem is, because this transaction was my first one, I set the transaction fee to the bare minimum. You can guess, that I did not see my BTC since then.
According to blockchain.com, the transaction has failed, and my address has all the BTC that I wanted to sent. So far so good, but in the wallet (Atomic Wallet), my balance is near 0. I asked the support, but I didn't get any useful information, just to wait... as I said, it happened 10 days ago.
Next, I created a new wallet in Trust Wallet, add the 12 phrase seed which I get from Atomic, hoping, that its only an Atomic bug but... Trust showed near 0 balance too.
So here is my question: how can I get back my BTC from the blockhain universe? I read something about Replace By Fee and Child Pays For Parent methods, but I'm not sure that these can help me. Or am I wrong?
The transaction.

According to the Blockchain record for address
1MhnRVvDTHGMSRdSRU5sP7vFH3aMExBAc9

Date
Transaction ID
Confirms
Description

2021-01-25 12:56
8c038b...c3fb2f
2691
Money received from bc1qq9...6cfvgq

2021-02-02 15:33
1708b5...935604
0
Failed low-fee  transaction, now invalid

2021-02-12 14:08
a77bb6...26273d
5
Money sent to 1EqnaM...WQGW6y

how can I get back my BTC from the blockhain universe?

Whoever knows the private key for address
1EqnaMiP676iSxMASjtKimz1k6GbWQGW6y now has control over that money.


confirmed but unspent transaction I have a problem that I hope that you can solve.. I have, for 6 days now, confirmed but unspent transaction.

This is link:  https://blockchain.info/address/37gsnq1RYrUQrFy5jJvwUSBJBQYqSGdWnn
screenshot from my wallet link to blockchain:

Please, can u advice me what to do.. I'm a little desperate now, it has been 6 days and stillI cant reach my funds.

Please help,thank you in advance.

RoTop

Thx Murch for your explanation..excuse my limited English language.

Thing is that I bought with Bitcoin in that transaction BCCash .. Transaction was made in my Coinomi wallet 11.11.2017 and was confirmed on 13.11. And from that point nothing else happened.
I'M stuck.. I don't have BCoin that I spent and I don't have BCoin Cash that I bought..
My situation is not good at this moment..

I contacted Shapeshift exchange and Coinomi and still I didn't get any answer from them..

One thing I don't understand.. Can this transaction be always unspent and have I lost my money ?

I hope I clarified my situation..

Thx in advance for your assistance..

Rotop.

Don't know what the question is, so...

You sent
from:154Ky1D5jKLoViPA1ep1FqaxGa8LNWzmJh
to:  37gsnq1RYrUQrFy5jJvwUSBJBQYqSGdWnn

The payment is done and confirmed.

So, the address 37gsnq1RYrUQrFy5jJvwUSBJBQYqSGdWnn has the funds and it IS spendable.  You can only spend it if it is YOUR address.  If you sent the funds to someone else, then you likely know who you sent them to.  They can spend the funds.


Mt.Gox Graph Question This is the last month's graph:

And this is the last day's graph:

So these are my questions:

If the today's price is about 800$ in daily graph, why is the today's price displayed as about 200$ in montly graph?
What does tell the mini graph tell us below the main graph?
What is meant with the Volume? If it's the traded amount, why should i bother with it, instead of directly looking at the amount price movemont?

PS: By the way, to see the graphs larger, click on the corresponding image with the right mouse button and then click on view image.

The numbers for the price are on the right of the graph (under the word Price that is turned 90 degrees clockwise) and the numbers on the left are for volume (under the word Volume that is turned 90 degrees counterclockwise.

Price is the amount that was paid on a per-bitcoin basis, the "candles" show where trading occured during the time period in question and the "wicks" show spikes in those same time periods.

Volume is the number of bitcoins bought and sold during a given period, with each period being represented by a direction change on the line graph. This is an important metric because it shows how much trading is happening, whether or not the price is changing significantly (since many people might buy/sell at some times/prices and other times there are few available bitcoins at a given price.)

Price will always remain the same at different levels of zoom, but volume will change based on the number of trades that happened, and since zooming changes the size of the periods (daily in the top, hourly in the bottom) the volume numbers on the left will shift as needed.

The mini-chart allows you to see the volume of the exchange over a very long period, and the highlighted section is what you are currently looking at in the chart above. You can adjust the scope of the main graph by pulling the handles on the mini-graph if you want to see a period of time in more or less detail, or select a specific period of time (like October)

To get more information on asset pricing charts I recommend http://stockcharts.com/school/doku.php?id=chart_school:chart_analysis and for other bitcoin specific charts and graphs be sure to check out http://bitcoinity.org, http://bitcoinwisdom.com, and http://bitcoincharts.com/charts


Bitcoin transactions I recently had two transactions transferred to an address I created within my bitcoin desktop wallet to be transferred. They were transferred from a mining company, but still, are not showing up in my desktop wallet. They were transferred today, also there's something that says "reindexing blocks on disk", in my desktop wallet. The desktop wallet I am using by the way is "Bitcoin core". If anybody knows how to help me out, please I would really appreciate that.

Thank you.

"Reindexing" means that Bitcoin Core is repeating the synchronization for part of your blockchain data. Your transactions will show up once the blocks that contain them have been processed.


Notable examples of double-spends Do you know any real-world examples of double-spends, where the second transaction was accepted to the block?
There's https://doublespend.cash/ for BCH but for BTC I would like some examples where the second transaction is accepted. (And this website shows all occurences of double-spends. I just want some successful ones.)

Yes, I did some double-spends playing on-chain games. It was years ago when a game (for example luckyb.it) accepted transaction with high-S-value, but most of pools did not include it into the block. The strategy was: send a bet with high-S-value, doublespend it if loss or wait several hours for a pool what confirm it on win.
As far as I remember, successful doublespend was performed by pool operator (I do not remember which one) when Bitcion forked in 2013 (0.7 to 0.8 version upgrade)


Why Bitcoin core creates time locked transactions by default? I've noticed recently that Bitcoin Core is producing transactions with non-zero lock-time and sequence numbers of inputs being 0xFFFFFFFE, even though I didn't instruct it to do so. The lock-time appears to be current block number.

What is the reason for this behavior?
What is the algorithm for
setting sequence number?

(I know that at least one input must have sequence number less than 0xFFFFFFFF. Does the Core set just first input or all inputs? I couldn't check this because I have no transaction with more than one input.)

Thank you for your answers!

TL;DR: The aim is to discourage reorganizations and increase privacy.

In wallet.cpp, just above where nLockTime gets set, it says:

// Discourage fee sniping.
//
// For a large miner the value of the transactions in the best block and
// the mempool can exceed the cost of deliberately attempting to mine two
// blocks to orphan the current best block. By setting nLockTime such that
// only the next block can include the transaction, we discourage this
// practice as the height restricted and limited blocksize gives miners
// considering fee sniping fewer options for pulling off this attack.
//
// A simple way to think about this is from the wallet's point of view we
// always want the blockchain to move forward. By setting nLockTime this
// way we're basically making the statement that we only want this
// transaction to appear in the next block; we don't want to potentially
// encourage reorgs by allowing transactions to appear at lower heights
// than the next block in forks of the best chain.
//
// Of course, the subsidy is high enough, and transaction volume low
// enough, that fee sniping isn't a problem yet, but by implementing a fix
// now we ensure code won't be written that makes assumptions about
// nLockTime that preclude a fix later.

txNew.nLockTime = chainActive.Height();

// Secondly occasionally randomly pick a nLockTime even further back, so
// that transactions that are delayed after signing for whatever reason,
// e.g. high-latency mix networks and some CoinJoin implementations, have
// better privacy.

if (GetRandInt(10) == 0)
  txNew.nLockTime = std::max(0, (int)txNew.nLockTime - GetRandInt(100));

As Martin Habovštiak noticed, the sequence number is set to MAX-1 for every input. It's in the code just below the previously mentioned code section.


Choosing bitcoin exchanges On a bitcoin exchange one buys, sells, and stores bitcoins.  Having sold them, one might want to withdraw dollars, euros, pounds sterling, etc.  It is suggested that the fact that MtGox is running two months behind schedule on withdrawals in other currencies may be the result of the confiscation of $5 million from MtGox's bank accounts, so they have a cash-flow problem.  If that makes the use of MtGox as opposed to other exchanges disadvantageous, what are the pros and cons of the various others?

You hit the nail on the head my friend...You get less money/fiat per btc because they are all competing together for price so market efficiency is lower - usually withtin the scope of 20 percent lower.  However for this loss in premium, you can be guaranteed to receive a deposit in two weeks or less in most cases.

However the volume on Gox is higher I believe because of the history large players probably continue to use their services because AML verification limits already occurred and those cost money.  Plus, if the money is simply there to be traded and appreciated upon then it makes sense to keep the credits available such that you buy in low and sell out high.


Is Wuala (LaCie) the largest company to accept Bitcoins? I just found out that you can pay for Wuala with Bitcoins. They are owned by LaCie, who have a revenue of €351.8 million according to Wikipedia. I think this makes them by far the largest company to accept Bitcoin for payment. Is that correct or are there other big players in the economy?

It is fantastic to see companies accept Bitcoin, even if it is just an "alpha / trial" like the method Wuala provides.

While Lacie (Wuala) is likely the largest company to accept bitcoins directly as payment, that is a specialized product of interest to a smaller subset of the bitcoin community.  Their volume of bitcoin commerce probably is a fraction of that for other bitcoin businesses which are needed by a wider customer base.  The larger dollar amounts where bitcoins are used directly for purchases might be in categories such as web hosting, dedicated servers, anonymous VPN, etc.

The largest companies to benefit from Bitcoin commerce though are the companies that offer vouchers or e-gift codes that can be used for payment.  These include NewEgg Vouchers (purchased on BTCBuy.info) and Amazon Credit and eBay Gift Codes (purchased on SpendBitcoins.com).   Those are, by far, where the largest amount of Bitcoin commerce is occurring.  Some day these companies will simply cut out the middle man and start accepting bitcoins directly (or through a payment intermediary such as Bit-Pay).


Why does witness use count instead of length? In legacy transaction (without SegWit) the scriptSig is easily parsed by knowing the length of it (a CompactInt value) and without needing to read the script in place.
However in SegWit transaction the scriptSig that is moved to witness position is now identified by a "count" of the items inside of the script and that means script needs to be read (interpreted) in place.
Was size (saving 2 bytes in multi-sig scripts) the only reason for this difference?
Also is there any restrictions on OP codes that could be used in scripts inside witnesses because of this difference?

Note that witnesses are not scripts. They do not contain opcodes. They are stack elements. Witnesses do not have explicit opcodes (witnessScripts are scripts but are single witness stack elements so their opcodes don't count).

The count is used as it clearly delineates between the end of the stack items for an input and the beginning of the stack items for the next input. The use of a count follows the standard serialization methodology used elsewhere in Bitcoin for serializing arrays of items. In this case, the witness data for an input is an array of arrays of bytes (in code, that's std::vector<std::vector<unsigned char>>).

So, following the standard serialization method of std::vectors, at the top level we get the number of items in the next level down (i.e. the number of std::vector<unsigned char> elements) which happens to be the number of stack items. Then the next level of serialization we get another length for the number of items in the level below (i.e. the number of unsigned char in each vector). So now we have the length of each stack item. Then comes the stack item itself.

The reason this method was used for segwit is likely because stacks in Bitcoin Core are implemented as std::vector<std::vector<unsigned char>>. Furthermore the serialization of vectors in this manner is used everywhere in Bitcoin so the serialization code for this basically already existed in every existing wallet software.


Will people not spending their Bitcoin cause Bitcoin to fail? Everyone I know that owns Bitcoin (including myself) seems to plan to sit on it until it becomes widely accepted/used and the price sky rockets to a ridiculously high value (100000 dollars each). It's great that the number of merchants accepting Bitcoin is increasing but if no one is paying with Bitcoin because they are waiting for the price go up, won't Bitcoin inevitably drop in value?

I beg to differ.  If you go to https://blockchain.info/, and look at the 'latest transactions', you'll see numerous transactions taking place continuously.  Also, there is a quite a bit of discussion within the bitcoin community about the need to increase the limit of 7 transactions per second, and ways that this limit can be increased.


Reindexing after initial download of bitcoin core I recently downloaded bitcoin core. Took about 1+ week to download 80%. One day I checked, it got an error message. When I closed and reopened the bitcoin core, it started reindexing. Any idea how long this will take? Turned it off after a day of "calculating indexing time". Was trying to mine low to no fee transactions as I start getting into bitcoin.

2017-10-18 05:36:19 receive version message: /Satoshi:0.15.0.1/: version 70015, blocks=490420, us=71.202.75.20:62505, peer=1908
2017-10-18 05:37:32 Pre-allocating up to position 0x6000000 in blk00622.dat
2017-10-18 05:37:45 receive version message: /Satoshi:0.13.1/: version 70014, blocks=490420, us=71.202.75.20:62519, peer=1909
2017-10-18 05:39:29 Pre-allocating up to position 0x7000000 in blk00622.dat
2017-10-18 05:40:07 socket send error An existing connection was forcibly closed by the remote host.  (10054)
2017-10-18 05:40:37 receive version message: /Satoshi:0.14.2/: version 70015, blocks=490420, us=71.202.75.20:62551, peer=1910
2017-10-18 05:41:03 Pre-allocating up to position 0x8000000 in blk00622.dat
2017-10-18 05:41:44 ProcessMessages(version, 113 bytes) FAILED peer=1911

Well, I figured this one out. Running a full node on my other computer with internal hard drive is much quicker.

Believe the original problem that I had was that I downloaded the application on my internal hard drive but saved the blockchain itself on an wireless external drive. Having the external drive disconnected even once I think would cause some issue.

Given the size of the blockchain, not sure what the plan is once it reaches 1TB?


Measuring total amount of Bitcoin in circulation Since fractional reserve banking where money is created by lending is possible with Bitcoin is there a way it can be measured to give a total amount of money in the system? Such a measurement would actually reveal the value of money multiplier which I define as a real statistical ratio between commercial banks money and monetary base rather than a theoretical maximum ratio that is legally defined (because of lack of regulation with Bitcoin).

I guess such a measurement can either be direct (by lenders reporting how much they've lent) or indirect (measuring some other impacts those loans have on economy).

The concept of a money multiplier is meaningless in an unregulated environment. The money multiplier is, by definition, a legal limit imposed on the reserves banks must have.


Do I need to wait for Bitcoin-Qt to sync with the network before using GUIMiner? I'm waiting for Bitcoin-Qt to synchronize with the network, but it takes a long time. I'd like to know if I can start using GUIMiner while it's Bitcoin-Qt is still synchronizing.

The answer depends on whether you're using a pool to mine.

If you use a pool to mine, you don't need Bitcoin-Qt to mine, so you can mine straight away.
If you don't use a pool, you need Bitcoin-Qt to be at the most recent block.


Hard fork without non-mining full nodes = weak network? This question is NOT intended to ignite diatribes. All of the discussion of a hard fork focuses on mining nodes; I have read nothing about the role of non-mining full nodes. So this is a sincere question.

The vast majority of bitcoin non-mining full nodes are running Bitcoin Core, and seem quite likely to continue doing so in case of a hard fork. That would result in a hard fork supported by (perhaps) enough mining nodes, but a dearth of non-mining full nodes. That strikes me as a weak peer-to-peer network.

The non-mining full nodes scrub/validate every transaction and every block, and these nodes are "Switzerland" inasmuch as they are not participating in the mining game. And then there are the more explicit benefits of thousands of non-mining full nodes: higher resiliency, lower latency, higher reliability, etc.

Hence my curiosity: if a hard fork resulted in a peer-to-peer network rich in mining nodes but lacking in non-mining full nodes, well, isn't that BAD? If it IS bad, why hasn't this facet of a hard fork been discussed. If it is NOT bad, by all means let me know what I'm overlooking.

It's not great, but non-mining full nodes are relatively inexpensive to operate, and if ordinary users start switching to that fork, some of them will bring their full nodes with them.  The network will get along okay with fewer.  If it really starts to be a problem, miners, exchange operators, and others who have a vested interest in the success of the fork, can fire up some full nodes.

If ordinary users don't switch to the fork, then it's doomed regardless of how many miners choose it.  It doesn't do you any good to mine lots of a currency if nobody wants it.


In the simplest way possible, describe how the 21 Million limitation is enforced to a non techie In this Bloomberg video: Gold for Nerds , they ask

  How is the limitation of 21 million Bitcoins enforced?

Though I am very familiar with the technical reasons why and how it's done I haven't seen an explanation suitable for a non-techie.

Question

In the simplest way possible

Can someone describe what is the Ecludian Constraint is?
Can someone explain the enforcement of the 21 Million limitation like I'm Tom Keene?

The simple answer is that there is a constraint on the total number of coins that will be generated.

In economy the fact that the supply of newly minted coins is either constraint by a constant rate at which they enter the market or, like in Bitcoin's case, even that the total number that will ever be in circulation be limited.

Due to how the amount of newly issued coins in the Bitcoin network is reduced over time the total number of coins ever issued will converge to 21million. Every 210'000 blocks (or 3.993 Years in expectation) the number of new bitcoins that are issued in the network is halved. The result is that we have a sum of a geometric series, with each step being multiplied by 1/2.

Hence in the first step 50 * 210'000 = 10'500'000 coins were issued, in the current step half of that will be issued: 25 * 210'000 = 5'250'000 coins and so on. The sum of a geometric series that halves at each step is exactly twice the first step, hence 2* 50 * 210'000 = 21'000'000. This was also discovered by Euclid, hence the name.

Notice that this is an infinite sum that converges to an upper limit. Due to rounding involved in the protocol the sum will eventually end and no new coins will be generated.

These numbers were chosen by Satoshi in his original proof-of-concept client and have not changed since. At some point the values would have had to be chosen anyway and his approach of choosing easy to remember numbers are just as good as any (210'000 ~= 4 years, 50 bitcoins / block initially so in total it would be 100 * 4 years => 21'000'000 bitcoins).

That is not to say that nobody ever criticized the numbers and constraints. Several early ideas were put out there and sometimes even implemented that changed key parts of what parameters are chosen, be it Litecoin that uses inter-block timings of 2.5 minutes instead of 10 minutes, or some schemes that instead of relying on a limited total number of coins ever generated preferred to constrain the rate at which coins are generated. Fact is that the Bitcoin network still is the biggest of them, and only future will show whether the choices are right.

As for the enforcement of the constraint that's a bit more complex. You see when you join the Bitcoin network you implicitly accept the underlying rules the Network works with. This includes among other things the parameters Satoshi chose. So if you misbehave, e.g., by creating a block that gives you a larger amount of coins than is agreed on, the rest of the network will not accept that and ignore your claim. In a certain way all users in the Bitcoin network reached a consensus about what is and what is not valid. Any change to the inner workings of the network would require a majority of the stakeholders to reach a new consensus about whether to accept the change. If you do not follow the decision of the majority you will create a fork and live on that. If more people agree with you they might join your network, and some alternative chains might even be able to survive for some time. So the constraint is basically enforced by the majority of the users (or their computational power share in the network).


When are Bitcoin transaction outputs generated more than two? When are Bitcoin transaction outputs generated more than two?

In my understanding, if my wallet has only UTXOs that have more values than i wanted to spend(send), then two outputs are generated which one is for sending my BTC to someone and another is for change to my wallet back. But I saw several transactions in bitcoin explorer that has more than 3 outputs. What are they?

Bitcoin inputs and outputs are only limited by transaction size. There are  scenarios when you may see a few inputs with many outputs, such as an exchange performing many user withdrawals in a single transaction.

Conversely, you often see transactions with hundreds of inputs, and very few outputs. These are also usually exchanges, or people/companies with lots of receiving addresses, combining the utxos into a handful or large utxos (usually to a cold wallet).


Every Bitcoin qt transaction I send comes up uncomfirmed? I tried so many test transactions ranging from a couple of cents to 3 dollars to send to my new online wallets. For some reason it never gets confirmed even though I put a good miners fee (I have tried .00007 and even higher). I tried some of those transactions 4 months ago and still they have not even gone through. If someone can help I would be very grateful!

With the information you provider, the most likely answer is one of two things:

Your fee may be too low. Based on current fees the fee you paid may not be enough. Keep in mind that the fees displayed here are calculated per byte so if your transaction is particularly large (in bytes not in BTC value) then you will need a larger fee.

Another possibility is that your transaction includes inputs that are themselves unconfirmed. This question will provide you with more details, with the child-pays-per-parent answer providing a possible solution if this was your problem.


Do you have to pay taxes on Bitcoin revenues? Disclaimer: this is not legal advice, and this varies from country to country.

If you accept bitcoins as payment, do you have to pay taxes on that? And would you have to write an invoice? Since they are not an official currency, such a trade would be considered a barter or what?

I.e. what's the legal status of someone accepting bitcoins as payment, and what is him required to do?

In Denmark (Europe) I have looked into this with a friend of mine, and we came to this conclusion.

Here, you will have to pay tax and do an invoice regardless of the currency. It is trade taking place within Danish borders, and therefor tax applies.

Although, these are rather old laws, and not very well updated. For example, a trade between two Danes going through a PayPal service, should technically be treated as a foreign trade, since the payment leaves Danish borders.

But modern day lawyers have no need to go after this, and as far as I can tell, no one have ever been "caught in trouble" with the legislation like this.

A interesting ruling was that the Danish tax authority once started creating accounts inside the game Second Life, and demanded tax cuts on the currency, even though it was "fictitious" and digital...

Although, they did not have much success with this.


How to calculate segwit transaction fee in bytes? I'm trying to calculate SegWit transaction fees in bytes, I have two Segwit inputs and 2 segwit outputs. can anyone calculate this transaction fees if I'm paying 100 Sat per byte?

That depends on what those inputs and outputs look like.

The formula, as specified in BIP141, is:

Call base_size the number of bytes needed to serialize the transaction in legacy format (which does not include the witnesses).
Call total_size the number of bytes needed to serialize the transaction including witnesses.
The weight of the transaction equals 3*base_size + total_size
The virtual size of the transaction (which is what feerates are usually expressed against) equals weight/4 or 0.75*base_size + 0.25*total_size.

Some reference numbers:

Outputs:

A P2PKH (1... address) output is 34 vbytes.
A P2SH (3... address) output is 32 vbytes.
A P2WPKH (bc1q... address of length 42) output is 31 vbytes.
A P2WSH (bc1q... address of length 62) output is 43 vbytes.

Inputs:

A P2PKH spend with a compressed public key is 149 vbytes.
A P2WPKH spend is 68 vbytes.
A P2SH-P2WPKH spend is 93 vbytes.


Lost mining shares when restarted GUIMiner I am new to BTC mining, even totally new to bitcoins. I closed and restarted my GUIMiner and all my bitcoin shares were gone. What am I doing wrong? Is there a way to persist these shares across GUIMiner restarts?

Your shares are towards a block, once a block is completed you start on a new block and go back to 0 shares. Depending on your pool, you get paid per block or per share. Don't worry, if you look on your pools website you should be able to find what you made off of the block and how many shares you contributed.

Restarting GUIMiner will not remove your shares, your shares are automatically recorded through your pool.


Using the Bitcoin API, how can I see the sending address? https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list

I have a transaction and I want to see what addresses the inputs came from. How can I do that?

If you use gettransaction on the transaction ID, the keys used to claim the inputs are in the scriptSig fields. They're the string starting with 04. You'll have to hash them and then convert them to base58 get account IDs.

Note that these account IDs may or may not actually mean anything. If you're being paid out of "change", then the account IDs are essentially random.


Block size limit in Bitcoin v0.01 In main.h (line 17) we have a constant MAX_SIZE

static const unsigned int MAX_SIZE = 0x02000000;

which in decimal format equals to 33554432 (32MB)

This constant is used to verify if the block passes the size limit in main.cpp (line 1154)

    bool CBlock::CheckBlock() const
    {
        // These are checks that are independent of context
        // that can be verified before saving an orphan block.

        // Size limits
        if (vtx.empty() || vtx.size() > MAX_SIZE || ::GetSerializeSize(*this, SER_DISK) > MAX_SIZE)
            return error("CheckBlock() : size limits failed");
        ...
     }

According to the git pull request history line 18 was added to main.h by Gavin Andresen:

static const unsigned int MAX_BLOCK_SIZE = 1000000;

https://github.com/bitcoin/bitcoin/blame/9d2174b6f5f3fac2463c7ebc2dbb9004b3740d23/main.h

this new constant appears to only be used on the BitcoinMiner() function on main.cpp

https://github.com/bitcoin/bitcoin/blame/9d2174b6f5f3fac2463c7ebc2dbb9004b3740d23/main.cpp#L2613

 if (nBlockSize + nTxSize >= MAX_BLOCK_SIZE - 10000)
     continue;

Apparently Satoshi believed that this would split the chain but this is only established on the mining node, not on a node that is just collecting new block and adding them to their chain.

What is the significance of this last line? How does this impact consensus? Where is the code limiting block size in the most current version of Bitcoin Core?

What is the significance of this last line?

It ensures that the built-in miner does not create blocks that are larger than MAX_BLOCK_SIZE. It checks whether the transaction selected be larger than the limit. The reason there is a - 10000 is to ensure that there is enough space for the coinbase transaction and the block header.

  How does this impact consensus?

It's effectively a soft fork. Miners won't make blocks larger than MAX_BLOCK_SIZE. Otherwise there is no effect on consensus.

  Where is the code limiting block size in the most current version of Bitcoin Core?

It's in CheckBlock(), the same function the size check was since a size check has existed. Of course the location of this function has moved. Currently it is here: https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp#L3093


Unable to send total amount of bitcoin even after deducting the transaction fee what do I do? Hi I recently imported a wallet to blockchain wallet from a backup, the wallet and everything shows up and everything but since the imported wallet is not protected by the backup phrase and not as secure as if the funds were directly imported into blockchains "My Wallet", when I try to send the total amount in my imported wallet to the blockchains "my wallet" it only allows me to transfer partial funds and not the whole amount even with the blockchain transaction fee deducted and set to regular the numbers don't add up, I have 4.56093409 in my imported wallet and with the fee of 0.0015431 it should allow me to send 4.55939099 however it only allows me to send something like 3.4889... so what do I do? also same thing happens when I try to transfer the funds to "my wallet" from under my security and addresses tab. Please help Thank you

i would go to coinb.in and manually broadcast the transaction to the network myself. this way you can have it set on the lowest fee, then go to viabtc.com and use their free transaction accelerator to give it a final push. works every time. GL


Check if an address is new or has been used already Say, I have an address. I can check if it's watch-only by calling validateaddress. Is there such an easy way to check it that address is new or has been used already?

maybe be a bit more specific, which client you use... I assume bitcoin core? In bitcoin core there is the command line interface (bitcoin-cli), that allows to send requests to the client. Specifications here:
https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

"getreceivedbyaccount" or "getreceivedbyaddress" could do the jobe here.

Also, there are many blockchain "service" companies, which provide a web interface to look at the blockchain. For example:
https://blockchain.info/

On the top right you can enter an address, and see if you have already transactions used with it.


Why can't we set fees to a fixed amount say 0.005 BTC? The current fee mechanism is confusing and difficult to implement.

The current fee system uses transaction size and the size of the block the transaction is due to appear in to calculate the fee. If you're writing a Bitcoin client such as a web wallet or android app this is not easy to implement.

Is there any reason we couldn't have a well documented fee mechanism along the following lines ?

Fixed fee, or
% of transaction amount, or
% of transaction amount capped or floored.

I was also giving the problem a bit of thought, and here are some conclusions I reached:

It is impossible to set a fixed fee once and for all, as one does not know the volume of transactions that will appear in the future, nor how big an exponent of Bitcoins will be a "common sight" (before Bitcoins became popular, someone paid 10kBTC for a pizza for example). So the fee would need to be adjusted over time, a bit like difficulty.
Percentage of transaction amount would be harming the people owning large amount of Bitcoins in one address, as in order to spend some of their Bitcoins, they need to send the rest back to themselves. This would encourage people to spread their Bitcoins over many addresses, creating an accounting mess at times.
Calculating the fee based on real-world value of 1BTC would be too hard, as it would require a lot of knowledge form outside the network.
Calculating the fee based on current difficulty can be slippery for transactions sent around the difficulty adjustment block.

So in general, the current way of calculating the fee might not be that good, but nobody smart enough has come up with anything better.


How does a SegWit node verify a block? I know that non-SegWit node could verify a block without witness.

For SegWit node, is witness necessary to verify a block? Because I know witness are committed as wtxid merkle node in coinbase. What's the purpose of the wtxid merkle node?

If witenss is necessary for SegWit node, then can I say witness is an part of blockchain in SegWit node's view?

For SegWit node, is witness necessary to verify a block? Because I know witness are committed as wtxid merkle node in coinbase. What's the purpose of the wtxid merkle node?

If a block contains transactions that have witnesses, if the block then does not have a witness, the Segwit node will still validate it, but it will find it to be invalid. Because segwit is a soft fork, Segwit nodes still know what blocks without witnesses look like and can verify them as such. This is because the block structure actually did not change, what changed was the transaction structure.

  If witenss is necessary for SegWit node, then can I say witness is an part of blockchain in SegWit node's view?

Yes.


Create wallets on website PHP I am trying to create a website that allows the deposit of cryptocurrencies (BTC / ETH / LTC) in the account, consequently I need to create a wallet at the personal registration for each of these 3 cryptocurrencies.
I would also like it to be possible to send crypto through the wallets registered on the site (p2p) and the possibility of receiving / sending crypto.
How can it be done? Is it possible to do this in PHP?
Every post I found on the forum is very old, probably a lot of things have changed.

Is it possible to do this in PHP?

So far as Bitcoin is concerned, I believe it is probably possible.
For example, by looking at https://en.bitcoin.it/wiki/PHP_developer_intro I can see

The easiest way to get started is to run Bitcoin in daemon mode with which PHP communicates via local HTTP requests. A library called JSON-RPC is used to call the various functions of bitcoind, which will respond back with a JSON object.

It is however recommended to use one of the Alternative Libraries listed below instead, since they are more sophisticated.

It goes on to briefly describe setting up PHP and the other required software and has links to other material that may be helpful.

ETH and LTC are off-topic on bitcoin.stackexchange.com so I won't attempt to address that aspect of your question.


Types of ScriptPubKey that can contain addresses I'm trying to get the addresses from the ScriptPubKeys in each transaction (where possible). So far, I know of two patterns of ScriptPubKey where an address can be found:

1. Pay-To-Pubkey

04e70a02f5af48a1989bf630d92523c9d14c45c75f7d1b998e962bff6ff9995fc5bdb44f1793b37495d80324acba7c8f537caaf8432b8d47987313060cc82d8a93 OP_CHECKSIG

In this locking script, the code before OP_CHECKSIG is a public key, so that can be converted in to an address.

2. Pay-To-Pubkey-Hash

OP_DUP OP_HASH160 3d37cde30fdfcf29b2996a7ceefd220ba32c9f4b OP_EQUALVERIFY OP_CHECKSIG

In this one, the code after OP_HASH160 (and before the next OP code) is the hash160 of a public key, so that can be converted to an address also.

Question:

Are there any other patterns of ScriptPubKey where addresses can be found?

Or in other words, will I be able to capture every address by working on all non-opcodes before OP_CHECKSIG, and all non-opcodes after OP_HASH160?

Technically, pay-to-pubkey doesn't have an address type. You can derive an address as if it were a pay-to-pubkeyhash scriptPubKey, but there is a subtle difference.

The other type you are forgetting is a pay-to-scripthash type. It's of the format

OP_HASH160 <Hash160(redeemScript)> OP_EQUAL

Then, you get a p2sh adddress by prepending the version byte and appending the checksum to <Hash160(redeemScript)>


How can you share a plaintext bitcoin address private key with a friend and ensure they won’t spend your bitcoin? How can you share a plaintext bitcoin address private key with a friend and ensure they won’t spend your bitcoin?

That's not possible. If your friend has the private key, he has everything he needs to spend all the bitcoins of that address.

What you could do: Use the private key (before he uses it) and send the coins to a new wallet and don't give him the new private key, seed...


How much would you need to remember to store bitcoins in your head? Suppose I had a gigantic sum of bitcoins and wanted to store them in my brain's memory instead of any physical form. How much data would I need to be able to remember? I understand I'd have to transfer it all to one address - would I need to remember both its private and public key, or can the public one be calculated based on the private key?

This is called a brain wallet. You need to remember only the generator for the private key, which can be anything you choose. You just have to remember something (anything) that is complicated enough that other people could not guess it, even if given trillions of guesses.

This is actually surprisingly complicated. If you write the passphrase down, it's not really a brain wallet anymore. If you don't, and you forget any bit of it and cannot precisely remember it, your funds are lost. If you make it simple enough to ensure you can remember it, the risk that someone else will find it is high. Lastly, the tools you use to convert the passphrase to a Bitcoin address can be flawed or sabotaged.


How users collectively sign a transaction in a multisig scenario? Say there're 3 people (A,B,C) involving into a 2 of 3 multisig scenario. If A & B agree to sign a transaction, what steps they should take? My guess is:

A creates a transaction with the multisig address, signs it with A's private key.
A gets the raw transaction above, somehow (via email or something else) manually sends it to B.
B signs it and broadcasts to the whole Bitcoin network.

Not exactly.

1.
First, you need to create a receiving address that holds your "2 of 3 spendable" funds.
For that, you need three pubkeys (pubA, pubB and pubC).

2.
Form a multisig script/address with those three pubkeys.
You can use Bitcoin Cores call addmultisigaddress nrequired ["key",...].
All three participants should do that with the exact same order of the pubkeys.

addmultisigaddress 2 <pubA> <pubB> <pubC>
This will spitt out a multisig address.
The 2 stands for how many signatures are required to sign the input later.

If you want the redeem-script (expert users), call validateaddress <newmultisig-addr>
(there is a string object called script)

3.
Receive coins with your new created multisig address.

4.
Spending the coins/inputs requires now 2 signatures. If you use bitcoin-core, you need to create a (raw)transaction spending that particular input.
For that, you need to know the transaction-id and the output index of the received coin you want to spend.

Do something like

 createrawtransaction
      '[{
         "txid": "8b9123963a3bbeedac1469daf6111929286e57128812dc08e83a94a3c4e76e3e",
          "vout":0
       }]'
       '{"<newaddress>": <amount>}'

You will get a raw transaction which you then can sign (on your side, first signature or two required).

signrawtransaction <hex from createrawtransaction>

You can pass the partial signed transaction to other participants and let them so the same thing:

signrawtransaction <hex from partial signed transaction>

Details:
If you use addmultisigaddress you don't need to pass around the reedem-script and signtransaction's parameters are much simpler.


Starting out with Armory - can I make it go faster? Does anyone know of a way to make Armory do an initial sync any faster?  I've downloaded the blockchain but so far it's been processing/synchronizing with the network for 17 hours, and it claims it has 11 hours more to go, but I suspect it will be even longer than that.

I have a first generation Core I5 processor, running Windows 10.

I notice that bitcoind is capping out at around ~48% CPU usage, so it only seems to be using two cores.  Any way of tweaking this to use more CPU, or go faster in general?

Unfortunately there is no solution for that.
You could try to download the blockchain externally but, it's not recommended given that you would not verify if the content is legit.
Take a look at a specific topic related to your question
https://bitcointalk.org/index.php?topic=1310261.0